86 lines
2.6 KiB
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');
|
|
}
|
|
}
|