@php $sidebarGroups = [ [ 'id' => 'icat-menu-oferta', 'label' => 'Oferta formativa', 'icon' => 'ri-book-open-line', 'items' => [ ['label' => 'Campos de formación profesional', 'route' => 'cfp', 'permission' => ['Campos de formacion profesional', 'entrar_modulo_cfp']], ['label' => 'Especialidades', 'route' => 'especialidades', 'permission' => ['Especialidades', 'entrar_modulo_especialidades']], ['label' => 'Cursos para el trabajo', 'route' => 'cursosParaElTrabajo', 'permission' => ['Cursos para el trabajo', 'entrar_modulo_cursos_para']], ['label' => 'Cursos en el trabajo', 'route' => 'cursosEnElTrabajo', 'permission' => ['Cursos en el trabajo', 'entrar_modulo_cursos_en_el']], ['label' => 'Certificaciones', 'route' => 'certificaciones', 'permission' => ['Certificaciones', 'entrar_modulo_certificaciones']], ['label' => 'Modelos de negocio', 'route' => 'modelos', 'permission' => ['Modelos de Negocios', 'entrar_modulo_cursos_en_el_operativo']], ['label' => 'Modelos de certificación', 'route' => 'certificacionesModelos', 'permission' => ['MN de Certificaciones', 'entrar_modulo_certificaciones_rocos']], ], ], [ 'id' => 'icat-menu-comunidad', 'label' => 'Comunidad', 'icon' => 'ri-team-line', 'items' => [ ['label' => 'Instructores', 'route' => 'instructores', 'permission' => ['Instructores', 'entrar_modulo_instructores']], ['label' => 'Capacitandos', 'route' => 'capacitandos', 'permission' => ['Capacitandos', 'entrar_modulo_capacitandos']], ], ], [ 'id' => 'icat-menu-operacion', 'label' => 'Operación académica', 'icon' => 'ri-calendar-check-line', 'items' => [ ['label' => 'Aulas', 'route' => 'aulas', 'permission' => ['Aulas', 'entrar_modulo_aulas']], ['label' => 'Asignación de convenios', 'route' => 'asignacionConvenios', 'permission' => ['Asignacion de Convenios', 'entrar_asignacion_convenios']], ['label' => 'Agenda', 'route' => 'agenda', 'permission' => ['Agenda', 'entrar_agenda']], ['label' => 'Histórico de aulas', 'route' => 'aulasHistorico', 'permission' => ['Aulas', 'entrar_modulo_aulas']], ['label' => 'Impresiones y constancias', 'route' => 'impresiones.index', 'permission' => ['Impresiones', 'entrar_modulo_impresiones']], ], ], [ 'id' => 'icat-menu-finanzas', 'label' => 'Finanzas', 'icon' => 'ri-wallet-3-line', 'items' => [ ['label' => 'Presupuestos', 'route' => 'presupuestos', 'permission' => ['Asignar presupuesto', 'entrar_modulo_asignar_presupuesto']], ['label' => 'Validar pagos de capacitandos', 'route' => 'pagosCapacitandos', 'permission' => ['Aulas', 'modulo_pago_capacitandos']], ['label' => 'Consultar pagos', 'route' => 'indexPagosFacturas', 'permission' => ['Pagos', 'entrar_modulo_pagos']], ['label' => 'Aprobar facturas', 'route' => 'indexVerificarFacturas', 'permission' => ['Aprobar facturas', 'entrar_modulo_aprobar_facturas']], ['label' => 'Facturas sin validar', 'route' => 'noValidarFactura', 'permission' => ['No validar facturas', 'entrar_modulo_no_validar_facturas']], ['label' => 'Reporte de horas y facturas', 'route' => 'facturas.reporte.horas', 'permission' => ['Reporte de horas y facturas', 'entrar_modulo_reporte_horas_facturas']], ['label' => 'Registrar oficios de pago', 'route' => 'indexOficioPago', 'permission' => ['Oficios de pago registro', 'entrar_modulo_oficios_pagos_registro']], ['label' => 'Consultar oficios de pago', 'route' => 'consultaOficioPago', 'permission' => ['Oficios de pago consulta', 'entrar_modulo_oficios_pagos_consulta']], ['label' => 'Corregir requisición', 'route' => 'cambiarRequisicion', 'visible' => auth()->user() && auth()->user()->isAdministrator()], ], ], [ 'id' => 'icat-menu-administracion', 'label' => 'Análisis y administración', 'icon' => 'ri-settings-3-line', 'items' => [ ['label' => 'Reportes', 'url' => url('/reportes'), 'permission' => ['Reportes', 'entrar_modulo_reportes']], ['label' => 'Usuarios', 'route' => 'usuarios', 'permission' => ['Usuarios', 'entrar_modulo_usuarios']], ['label' => 'Perfiles y permisos', 'route' => 'perfiles', 'permission' => ['Perfiles', 'entrar_modulo_perfiles']], ['label' => 'Bitácora del sistema', 'route' => 'bitacora', 'permission' => ['Bitacora', 'entrar_modulo_bitacora']], ], ], ]; // El grupo y sus enlaces comparten el mismo filtro de acceso. $sidebarGroups = array_filter(array_map(function ($group) { $group['items'] = array_filter($group['items'], function ($item) { return isset($item['permission']) ? \App\Services\PermisoService::tienePermisoCache(...$item['permission']) : $item['visible']; }); return $group; }, $sidebarGroups), fn ($group) => count($group['items']) > 0); @endphp