<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\MenuItem;
use Illuminate\Http\Request;
class MenuController extends Controller
{
public function index()
{
$header = MenuItem::where('location', 'header')->orderBy('sort_order')->get();
$footerQ = MenuItem::where('location', 'footer_quick')->orderBy('sort_order')->get();
$footerC = MenuItem::where('location', 'footer_customer')->orderBy('sort_order')->get();
return view('admin.menu.index', compact('header', 'footerQ', 'footerC'));
}
public function store(Request $request)
{
$data = $request->validate([
'label' => 'required|string|max:60',
'url' => 'required|string|max:255',
'route_name' => 'nullable|string|max:100',
'location' => 'required|in:header,footer_quick,footer_customer',
'icon' => 'nullable|string|max:60',
'target' => 'required|in:_self,_blank',
]);
$data['sort_order'] = MenuItem::where('location', $data['location'])->max('sort_order') + 1;
$data['is_enabled'] = true;
MenuItem::create($data);
return back()->with('success', 'Menu item added.');
}
public function update(Request $request)
{
$items = $request->input('items', []);
foreach ($items as $id => $data) {
MenuItem::where('id', $id)->update([
'label' => $data['label'] ?? '',
'url' => $data['url'] ?? '#',
'route_name' => $data['route_name'] ?? null,
'icon' => $data['icon'] ?? null,
'target' => $data['target'] ?? '_self',
'sort_order' => $data['sort_order'] ?? 0,
'is_enabled' => isset($data['is_enabled']) ? 1 : 0,
]);
}
return back()->with('success', 'Menu saved successfully.');
}
public function destroy(MenuItem $menuItem)
{
$menuItem->delete();
return back()->with('success', 'Menu item deleted.');
}
}