<?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', 'تم الحذف بنجاح');
}
}