with(compact('news')); } /** * Show the form for creating a new resource. */ public function create() { // return view('admin.News.create'); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $this->validate($request, [ 'title_en' => 'required', 'title_ar' => 'nullable', 'description_en' => 'required', 'description_ar' => 'nullable', 'image.*' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:5048', 'status' => 'nullable', ]); $news = new News; $news->title_en = $request->title_en; $news->title_ar = $request->title_ar; $news->description_en = $request->description_en; $news->description_ar = $request->description_ar; $news->status = $request->status == true ? '1' : '0'; if ($request->hasFile('image')) { $newsImageUploadPath = 'uploads/news/image/'; $images = []; foreach ($request->file('image') as $file) { $ext = $file->getClientOriginalExtension(); $filename = time() . '_' . uniqid() . '.' . $ext; $file->move($newsImageUploadPath, $filename); $images[] = $newsImageUploadPath . $filename; } // Save as JSON string $news->image = json_encode($images); } if ($news->save()) { return redirect()->route('news.index')->with('status-success', 'News Created Successfully'); } return redirect()->route('news.index')->with('status-error', 'News Create Failed'); } /** * Display the specified resource. */ public function show(string $id) { // } /** * Show the form for editing the specified resource. */ public function edit(string $id) { // $news = News::findOrFail($id); return view('admin.News.edit')->with(compact('news')); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { $this->validate($request, [ 'title_en' => 'required', 'title_ar' => 'nullable', 'description_en' => 'required', 'description_ar' => 'nullable', 'image.*' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:5048', 'status' => 'nullable' ]); $news = News::findOrFail($id); $news->title_en = $request->title_en; $news->title_ar = $request->title_ar; $news->description_en = $request->description_en; $news->description_ar = $request->description_ar; $news->status = $request->status ? '1' : '0'; // Start with existing images $existingImages = json_decode($news->image, true) ?: []; // Remove selected images if ($request->has('delete_images')) { foreach ($request->delete_images as $imgToDelete) { if (file_exists(public_path($imgToDelete))) { unlink(public_path($imgToDelete)); } // Remove from existing image array $existingImages = array_filter($existingImages, function ($img) use ($imgToDelete) { return $img !== $imgToDelete; }); } } // Handle new uploads if ($request->hasFile('image')) { foreach ($request->file('image') as $file) { if ($file) { $uploadPath = 'uploads/news/image/'; $ext = $file->getClientOriginalExtension(); $filename = time() . '_' . uniqid() . '.' . $ext; $file->move(public_path($uploadPath), $filename); $existingImages[] = $uploadPath . $filename; } } } // Update the image field with the new image list $news->image = json_encode(array_values($existingImages)); // Reset keys if ($news->save()) { return redirect()->route('news.index')->with('status-success', 'News Updated Successfully'); } return redirect()->route('news.index')->with('status-error', 'News Update Failed'); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { // $news = News::findOrFail($id); if ($news->delete()) { return redirect()->back()->with('status-success', 'News Deleted Successfully'); } return redirect()->back()->with('status-error', 'News Delete Failed'); } }