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