Reservasi-Cafe/app/Http/Controllers/Admin/MenuController.php

86 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\MenuItem;
use App\Models\MenuCategory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class MenuController extends Controller
{
public function index()
{
$categories = MenuCategory::all();
$menuItems = MenuItem::with('category')->get();
return view('admin.menu', compact('categories', 'menuItems'));
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'description' => 'nullable|string',
'price' => 'required|numeric|min:0',
'category_id' => 'required|exists:menu_categories,id',
'image' => 'required|image|mimes:jpeg,png,jpg|max:2048'
]);
$imagePath = $request->file('image')->store('menu-items', 'public');
MenuItem::create([
'name' => $request->name,
'description' => $request->description,
'price' => $request->price,
'category_id' => $request->category_id,
'image' => $imagePath,
'is_available' => $request->has('is_available')
]);
return redirect()->back()->with('success', 'Menu berhasil ditambahkan');
}
public function update(Request $request, MenuItem $menuItem)
{
$request->validate([
'name' => 'required|string|max:255',
'description' => 'nullable|string',
'price' => 'required|numeric|min:0',
'category_id' => 'required|exists:menu_categories,id',
'image' => 'nullable|image|mimes:jpeg,png,jpg|max:2048'
]);
$data = [
'name' => $request->name,
'description' => $request->description,
'price' => $request->price,
'category_id' => $request->category_id,
'is_available' => $request->has('is_available')
];
if ($request->hasFile('image')) {
// Hapus gambar lama
if ($menuItem->image) {
Storage::disk('public')->delete($menuItem->image);
}
// Upload gambar baru
$data['image'] = $request->file('image')->store('menu-items', 'public');
}
$menuItem->update($data);
return redirect()->back()->with('success', 'Menu berhasil diperbarui');
}
public function destroy(MenuItem $menuItem)
{
if ($menuItem->image) {
Storage::disk('public')->delete($menuItem->image);
}
$menuItem->delete();
return redirect()->back()->with('success', 'Menu berhasil dihapus');
}
}