<?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.');
    }
}
