• File: CarouselController.php
  • Full Path: /home/awtadalkhimacom/public_html/app/Http/Controllers/CarouselController.php
  • Date Modified: 10/30/2025 4:27 AM
  • File size: 3.31 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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', 'تم الحذف بنجاح');
}


}