• File: CategoryController.php
  • Full Path: /home/awtadalkhimacom/public_html/app/Http/Controllers/CategoryController.php
  • Date Modified: 10/30/2025 4:27 AM
  • File size: 4.31 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Category;
use Illuminate\Support\Facades\Storage;

class CategoryController extends Controller
{


    public function index()
    {
        $categories = Category::all();
        return view('categories.index', compact('categories'));
    }

    // عرض نموذج إضافة فئة جديدة
    public function create()
    {
        return view('categories.create');
    }

    // تخزين فئة جديدة
    public function store(Request $request)
    {
        // التحقق من صحة البيانات
        $validated = $request->validate([
            'category_name' => 'required|string|max:255',
            'img' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp', // صورة اختيارية
        ]);
    
        if ($request->hasFile('img')) {
            // تحديد المسار الذي سيتم حفظ الصورة فيه
            $path = public_path('images/categories'); // مجلد categories داخل public
    
            // إنشاء اسم ملف جديد للصورة
            $filename = time() . '_' . $request->file('img')->getClientOriginalName();
    
            // نقل الصورة إلى المسار المحدد
            $request->file('img')->move($path, $filename);
    
            // تخزين الاسم النهائي للصورة في الحقل img
            $validated['img'] = 'images/categories/' . $filename; // مسار النسبي بالنسبة إلى public
        }
    
        // إنشاء الفئة الجديدة باستخدام create
        Category::create($validated);
    
        return redirect()->route('categories.index')->with('success', 'تم إضافة الفئة بنجاح!');
    }

    // عرض تفاصيل فئة معينة
    public function show(Category $category)
    {
        return view('categories.show', compact('category'));
    }

    // عرض نموذج تعديل فئة
    public function edit(Category $category)
    {
        return view('categories.edit', compact('category'));
    }

    // تحديث فئة
    public function update(Request $request, Category $category)
    {
    // التحقق من صحة البيانات
    $validated = $request->validate([
    'category_name' => 'required|string|max:255',
    'img' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp', // صورة اختيارية
    ]);
    
    if ($request->hasFile('img')) {
    // إذا كانت هناك صورة قديمة، قم بحذفها يدويًا
    if ($category->img) {
    $oldImagePath = public_path($category->img); // الحصول على المسار الكامل للصورة القديمة
    if (file_exists($oldImagePath)) { // التحقق مما إذا كانت الصورة موجودة
    unlink($oldImagePath); // حذف الصورة القديمة
    }
    }
    
    // تحديد المسار الذي سيتم حفظ الصورة فيه
    $path = public_path('images/categories'); // مجلد categories داخل public
    
    // إنشاء اسم ملف جديد للصورة
    $filename = time() . '_' . $request->file('img')->getClientOriginalName();
    
    // نقل الصورة إلى المسار المحدد
    $request->file('img')->move($path, $filename);
    
    // تحديث الحقل img في الفئة
    $validated['img'] = 'images/categories/' . $filename; // مسار النسبي بالنسبة إلى public
    }
    
    // تحديث السجل الحالي باستخدام update
    $category->update($validated);
    
    return redirect()->route('categories.index')->with('success', 'تم تحديث الفئة بنجاح!');
    }

    // حذف فئة
    public function destroy(Category $category)
    {
        // تحديد المسار الذي تم حفظ الصور فيه
        $path = public_path('images/categories'); // مجلد categories داخل public
    
        // حذف الصورة القديمة (img) إن وجدت
        if ($category->img && file_exists(public_path($category->img))) {
            unlink(public_path($category->img)); // حذف الصورة من النظام
        }
    
        // حذف الفئة من قاعدة البيانات
        $category->delete();
    
        return redirect()->route('categories.index')->with('success', 'تم حذف الفئة بنجاح!');
    }


}