<?php

namespace App\Http\Controllers\Api;

use App\Models\GenericBackoffice\Footer;
use App\Models\GenericBackoffice\Menu;
use App\Http\Controllers\Controller;

use App\Http\Resources\MenusCollection;
use App\Models\GenericBackoffice\Entry;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Http\Resources\Footer as FooterResource;
use App\Http\Resources\MenuResource;

class MenuController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return JsonResource
     */
    public function index()
    {
        $menus = Menu::with([
            'menuItems' => function ($query) {
                $query->select('menu_items.*')
                    ->with(['children' => function ($query) {
                        $query->orderBy('menu_items.position')
                            ->with(['children' => function ($query) {
                                $query->orderBy('menu_items.position');
                            }]);
                    }, 'menuContent']);
                $query->leftJoin('website_objects', function ($join) {
                    $join->on('menu_items.entry_id', '=', 'website_objects.object_id')
                        ->where('website_objects.object_type', Entry::class);
                })
                    ->where(function ($query) {
                        $query->whereNull('website_objects.status')->orWhere('website_objects.status', 'published');
                    });
                $query->whereNull('menu_items.parent_id')
                    ->orderBy('menu_items.position');
            },
        ])->get();

        // $footer = Footer::with([
        //     'socialMedias',
        // ])->orderBy('id')->first();

        // dd($menus[0]->menuItems[0]->children);

        // $footerData = new FooterResource($footer);

        return [
            'data' => MenuResource::collection($menus),
            // 'footer' => $footerData,
        ];

        // return new MenusCollection($menus, $footerData);
    }
}
