<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class GenerateMenus
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
        \Menu::make('AdminMenu', function ($menu) {
            $menu->add('Dashboard', ['route'  => 'dashboard', 'icon' => 'home-circle']);
            
            $menu->add('Fnodd', ['category' => true])->data('permission', ['forums.show', 'communes.show']);
            $menu->add('Forums', ['route'  => 'forums.index', 'icon' => 'layout'])->data('forums', 'articles.show');
            $commune = $menu->add('Communes', ['route'  => 'communes.index', 'icon' => 'map-alt'])->data('communes', 'articles.show');
                $commune->add('Liste', ['route'  => 'communes.index']);
                $commune->add('Participations', ['route'  => 'participations.index']);
                $commune->add('Publications', ['route'  => 'publications.index']);
            
            $menu->add('Pages', ['category' => true])->data('permission', ['articles.show', 'events.show', 'documents.show']);
            $menu->add('Articles', ['route'  => 'articles.index', 'icon' => 'receipt'])->data('permission', 'articles.show');
            $menu->add('Evenements', ['route'  => 'events.index', 'icon' => 'calendar'])->data('permission', 'events.show');
            $menu->add('Documents', ['route'  => 'documents.index', 'icon' => 'file'])->data('permission', 'documents.show');

            $menu->add('Paramètres', ['category' => true])->data('permission', ['users.show', 'roles.show']);
            $goal = $menu->add('ODD', ['route'  => 'goals.index', 'icon' => 'collection'])->data('permission', 'goals.show');            
                $goal->add('Liste des ODD', ['route'  => 'goals.index'])->data('permission', 'goals.show');            
                $goal->add('Liste des Cibles', ['route'  => 'targets.index'])->data('permission', 'targets.show');            
            $menu->add('Equipes', ['route'  => 'teams.index', 'icon' => 'copy'])->data('permission', 'teams.show');
            $menu->add('Pages statiques', ['route'  => 'pages.index', 'icon' => 'dock-top'])->data('permission', 'pages.show');
            $menu->add('Utilisateurs', ['route'  => 'users.index', 'icon' => 'user'])->data('permission', 'users.show');
            $menu->add('Roles', ['route'  => 'roles.index', 'icon' => 'check-shield'])->data('permission', 'roles.show');
        });
    
        \Menu::make('PortalMenu', function ($menu) {
            $menu->add('Accueil', ['route'  => 'portal.home']);
            $fnodd = $menu->add('FNODD', ['route'  => 'portal.forums']);
                $fnodd->add('Forums', ['route'  => 'portal.forums']);
                $fnodd->add('Communes', ['route'  => 'portal.communes']);
                $fnodd->add('Publications', ['route'  => 'portal.publications']);
            $infos = $menu->add('Infos', 'infos');
                $infos->add('Les ODD', ['route'  => 'portal.goals']);
                $infos->add('Evenements', ['route'  => 'portal.events']);
                $infos->add('Actualités', ['route'  => 'portal.articles']);
            $docs = $menu->add('Documentations', 'documentations');
                $docs->add('Documents de coordination', ['route'  => ['portal.documents', 'type' => 'coordination']]);
                $docs->add('Documents de suivi', ['route'  => ['portal.documents', 'type' => 'suivi']]);
                $docs->add('Autres Documents', ['route'  => ['portal.documents', 'type' => 'autres']]);
            $about = $menu->add('A Propos', 'about');
                $about->add('La DGCS-ODD', ['route'  => ['portal.pages', 'page' => 'direction']]);
                $about->add('L\'Equipe', ['route'  => 'portal.teams']);
                $about->add('Contact', ['route'  => ['portal.pages', 'page' => 'contact']]);

        });
    
        return $next($request);
    }
}
