<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\Carousel; use Illuminate\Support\Facades\Storage; class CarouselController extends Controller { /** * Display a listing of the resource. */ public function index() { $slides = Carousel::all(); return view('carousel.index', compact('slides')); } public function create() { return view('carousel.create'); } public function store(Request $request) { $request->validate([ 'image' => 'required|image|mimes:jpeg,png,jpg,gif', 'title' => 'nullable|string|max:255', 'description' => 'nullable|string', // 'active' => 'boolean', ]); // تحديد المسار الفعلي داخل public $path = 'images/ads'; // إنشاء المجلد إذا لم يكن موجودًا if (!file_exists($path)) { mkdir($path, 0777, true); } // تخزين الصورة $imageName = time() . '-' . uniqid() . '.' . $request->file('image')->getClientOriginalExtension(); $request->file('image')->move($path, $imageName); // حفظ اسم الصورة فقط في قاعدة البيانات Carousel::create([ 'image' => 'images/ads/' . $imageName, 'title' => $request->title, 'description' => $request->description, 'active' => $request->has('active'), ]); return redirect()->route('carousel.index')->with('success', 'تمت الإضافة بنجاح'); } public function edit($id) { $slide = Carousel::findOrFail($id); return view('carousel.edit', compact('slide')); } public function update(Request $request, $id) { $slide = Carousel::findOrFail($id); // التحقق من البيانات $data = $request->validate([ 'title' => 'nullable|string|max:255', 'description' => 'nullable|string', 'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp', // 'active' => 'sometimes|boolean', // مهم: يسمح بتحديث الحقل كقيمة true/false ]); // معالجة الصورة إذا تم رفع واحدة جديدة if ($request->hasFile('image')) { // حذف الصورة القديمة إن وجدت if ($slide->image && file_exists($slide->image)) { unlink($slide->image); } $path = 'images/ads'; if (!file_exists($path)) { mkdir($path, 0777, true); } $imageName = time() . '-' . uniqid() . '.' . $request->file('image')->getClientOriginalExtension(); $request->file('image')->move($path, $imageName); $data['image'] = 'images/ads/' . $imageName; } // تحديث قيمة active بناءً على checkbox $data['active'] = $request->has('active'); // تحديث السجل $slide->update($data); return redirect()->route('carousel.index')->with('success', 'تم التحديث بنجاح'); } public function destroy($id) { $slide = Carousel::findOrFail($id); // حذف الصورة من المجلد $imagePath = $slide->image; if ($slide->image && file_exists($imagePath)) { unlink($imagePath); } $slide->delete(); return redirect()->route('carousel.index')->with('success', 'تم الحذف بنجاح'); } }