@php
// Agrupar permisos por módulos del sidebar con estructura jerárquica
$modulosPermisos = [
'Extranet' => [
'parent' => 'sidebar_extranet',
'children' => [
'Dashboard' => ['ver-dashboard-extranet'],
'Comunicados' => ['ver-comunicados', 'crear-comunicado', 'editar-comunicado', 'eliminar-comunicado', 'fijar-comunicado', 'archivar-comunicado'],
'Proyectos' => ['ver-proyectos', 'crear-proyecto', 'editar-proyecto', 'eliminar-proyecto', 'gestionar-tareas', 'asignar-tareas'],
'Eventos' => ['ver-eventos', 'crear-evento', 'editar-evento', 'eliminar-evento', 'gestionar-asistentes'],
'Reconocimientos' => ['ver-reconocimientos', 'crear-reconocimiento', 'editar-reconocimiento', 'eliminar-reconocimiento'],
'Encuestas' => ['ver-encuestas', 'crear-encuesta', 'editar-encuesta', 'eliminar-encuesta', 'ver-resultados-encuesta', 'responder-encuesta'],
'Documentos' => ['ver-documentos', 'subir-documento', 'editar-documento', 'eliminar-documento', 'gestionar-versiones'],
'Galería' => ['ver-galeria', 'crear-album', 'editar-album', 'eliminar-album', 'subir-fotos', 'eliminar-fotos'],
'Muro Social' => ['ver-muro', 'publicar-muro', 'comentar', 'reaccionar', 'eliminar-comentarios'],
'Directorio' => ['ver-directorio'],
'Notificaciones' => ['gestionar-notificaciones'],
]
],
'Administración' => [
'parent' => 'sidebar_administrador',
'children' => [
'Roles' => ['ver-roles'],
'Usuarios' => ['ver-usuarios', 'crear-usuario', 'opciones-usuario'],
'Firma de Certificados' => ['ver-firma-de-certificados'],
]
],
'Recursos Humanos' => [
'parent' => 'sidebar_recursos_humanos',
'children' => [
'Cargos' => ['ver-cargo', 'crear-cargo', 'opciones-cargo'],
'Empleados' => ['ver-empleado', 'crear-empleado', 'importar-empleado', 'opciones-empleado'],
'Novedades' => ['ver-novedades', 'ver-tipos_novedades'],
]
],
'Contabilidad' => [
'parent' => 'sidebar_contabilidad',
'children' => [
'Unidades de Negocio' => ['ver-uni_negocio', 'crear-uni_negocio', 'opciones-uni_negocio'],
'Clientes' => ['ver-cli', 'crear-cli', 'opciones-cli'],
'Relación Uni-Cli' => ['ver-uni_cli', 'crear-uni_cli', 'opciones-uni_cli'],
]
],
'Operaciones' => [
'parent' => 'sidebar_operaciones',
'children' => [
'Jornadas' => ['ver-jornada', 'crear-jornada', 'opciones-jornada'],
'Campañas' => ['ver-camp', 'crear-camp', 'opciones-camp'],
]
],
'Mi Horario' => [
'parent' => 'sidebar_agente',
'children' => []
],
'Horarios (Supervisor)' => [
'parent' => 'sidebar_supervisor',
'children' => []
],
'Mi Inventario' => [
'parent' => 'sidebar_mi_inventario',
'children' => []
],
'Mi Visita' => [
'parent' => 'sidebar_mi_visita',
'children' => []
],
'Mis Reportes' => [
'parent' => 'sidebar_mi_reportes',
'children' => []
],
'Análisis y Reportes' => [
'parent' => 'sidebar_reportes',
'children' => [
'Reportes Operacionales' => ['report_operaciones'],
'Reportes Financieros' => ['report_finanzas'],
]
],
];
$permisosNoAgrupados = [];
$todosLosPermisosAgrupados = [];
foreach ($modulosPermisos as $modulo => $config) {
$todosLosPermisosAgrupados[] = $config['parent'];
foreach ($config['children'] as $submodulo => $permisos) {
$todosLosPermisosAgrupados = array_merge($todosLosPermisosAgrupados, $permisos);
}
}
foreach ($Permissions as $permission) {
if (!in_array($permission->name, $todosLosPermisosAgrupados)) {
$permisosNoAgrupados[] = $permission;
}
}
@endphp
@foreach ($modulosPermisos as $modulo => $config)
@php
$parentPermission = $Permissions->firstWhere('name', $config['parent']);
$hasChildren = count($config['children']) > 0;
@endphp
@if($parentPermission)
{{-- Permiso padre --}}
{!! Form::checkbox('permission[]', $parentPermission->id, in_array($parentPermission->id, $rolePermissions) ? true : false, array('class' => 'custom-control-input', 'id' => 'permission-edit-parent-'.$parentPermission->id.'-'.$Roles->id)) !!}
{{-- Permisos hijos --}}
@if($hasChildren)
@foreach ($config['children'] as $submodulo => $permisosHijos)
{{ $submodulo }}
@foreach ($permisosHijos as $permisoNombre)
@php
$childPermission = $Permissions->firstWhere('name', $permisoNombre);
@endphp
@if($childPermission)
{!! Form::checkbox('permission[]', $childPermission->id, in_array($childPermission->id, $rolePermissions) ? true : false, array('class' => 'custom-control-input', 'id' => 'permission-edit-'.$childPermission->id.'-'.$Roles->id)) !!}
@endif
@endforeach
@endforeach
@endif
@endif
@endforeach
@if(count($permisosNoAgrupados) > 0)
@foreach ($permisosNoAgrupados as $permission)
{!! Form::checkbox('permission[]', $permission->id, in_array($permission->id, $rolePermissions) ? true : false, array('class' => 'custom-control-input', 'id' => 'permission-edit-'.$permission->id.'-'.$Roles->id)) !!}
@endforeach
@endif