diff --git a/000-default.conf b/000-default.conf old mode 100644 new mode 100755 diff --git a/Dockerfile b/Dockerfile old mode 100644 new mode 100755 diff --git a/apache2.conf b/apache2.conf old mode 100644 new mode 100755 diff --git a/config.yaml b/config.yaml old mode 100644 new mode 100755 diff --git a/docker-compose.yml b/docker-compose.yml old mode 100644 new mode 100755 diff --git a/docker/contenedor-ibiza.conf b/docker/contenedor-ibiza.conf old mode 100644 new mode 100755 diff --git a/public/admin/asignaciones_completo.php b/public/admin/asignaciones_completo.php index 91a9bcc..af8a47d 100755 --- a/public/admin/asignaciones_completo.php +++ b/public/admin/asignaciones_completo.php @@ -31,28 +31,57 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } else { $action = $_POST['action'] ?? ''; - if ($action === 'asignar') { - $userId = $_POST['user_id'] ?? 0; - $semana = $_POST['semana'] ?? ''; + if ($auth->isAdmin()) { + if ($action === 'asignar') { + $userId = $_POST['user_id'] ?? 0; + $semana = $_POST['semana'] ?? ''; - if ($userId && $semana) { - $asignacionModel->asignar($userId, $semana); - $message = 'Turno asignado correctamente'; - $messageType = 'success'; - } - } elseif ($action === 'rotar') { - $semana = $_POST['semana'] ?? ''; - $asignacionActual = $asignacionModel->getAsignacionPorSemana($semana); - - if ($asignacionActual) { - $proximaPersona = $asignacionModel->getProximaPersona($asignacionActual['user_id']); - if ($proximaPersona) { - $asignacionModel->asignar($proximaPersona['id'], $semana); - $message = 'Turno rotado a: ' . htmlspecialchars($proximaPersona['nombre']); + if ($userId && $semana) { + $asignacionModel->asignar($userId, $semana); + $message = 'Turno asignado correctamente'; $messageType = 'success'; } + } elseif ($action === 'rotar') { + $semana = $_POST['semana'] ?? ''; + $asignacionActual = $asignacionModel->getAsignacionPorSemana($semana); + + if ($asignacionActual) { + $proximaPersona = $asignacionModel->getProximaPersona($asignacionActual['user_id']); + if ($proximaPersona) { + $asignacionModel->asignar($proximaPersona['id'], $semana); + $message = 'Turno rotado a: ' . htmlspecialchars($proximaPersona['nombre']); + $messageType = 'success'; + } + } + } elseif ($action === 'asignar_masivo') { + $userIds = $_POST['user_ids'] ?? []; + $semanaInicio = $_POST['semana_inicio'] ?? ''; + $rotacionAutomatica = isset($_POST['rotacion_automatica']) ? true : false; + + if (!empty($userIds) && $semanaInicio) { + $resultado = $asignacionModel->asignarMasivo($userIds, $semanaInicio, $rotacionAutomatica); + + if ($resultado['success'] > 0) { + $message = "Se asignaron {$resultado['success']} turnos correctamente"; + if ($rotacionAutomatica) { + $message .= " con rotación automática para la siguiente semana"; + } + $messageType = 'success'; + } + + if (!empty($resultado['errors'])) { + $message .= "
Errores: " . implode('
', $resultado['errors']); + $messageType = 'warning'; + } + } else { + $message = 'Debes seleccionar al menos un ayudante y una semana'; + $messageType = 'danger'; + } } - } elseif ($action === 'rotacion_automatica') { + } + + // Acciones permitidas tanto para Admin como para Coordinador + if ($action === 'rotacion_automatica') { $resultado = $asignacionModel->asignarSemanasFuturasAutomaticas(12); if ($resultado['success'] > 0) { @@ -67,30 +96,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $message = 'No se pudieron generar asignaciones: ' . implode(', ', $resultado['errors']); $messageType = 'danger'; } - } elseif ($action === 'asignar_masivo') { - $userIds = $_POST['user_ids'] ?? []; - $semanaInicio = $_POST['semana_inicio'] ?? ''; - $rotacionAutomatica = isset($_POST['rotacion_automatica']) ? true : false; - - if (!empty($userIds) && $semanaInicio) { - $resultado = $asignacionModel->asignarMasivo($userIds, $semanaInicio, $rotacionAutomatica); - - if ($resultado['success'] > 0) { - $message = "Se asignaron {$resultado['success']} turnos correctamente"; - if ($rotacionAutomatica) { - $message .= " con rotación automática para la siguiente semana"; - } - $messageType = 'success'; - } - - if (!empty($resultado['errors'])) { - $message .= "
Errores: " . implode('
', $resultado['errors']); - $messageType = 'warning'; - } - } else { - $message = 'Debes seleccionar al menos un ayudante y una semana'; - $messageType = 'danger'; - } } } } @@ -177,6 +182,7 @@ $pageTitle = 'Asignación de Turnos';
+ isAdmin()): ?>
@@ -297,8 +303,11 @@ No hay asignación para la semana de 4 (
+
+ + isAdmin()): ?>
Asignación Masiva
@@ -370,6 +379,7 @@ No hay asignación para la semana de 4 (
+
diff --git a/public/partials/navbar.php b/public/partials/navbar.php index d7339e8..b05bd3d 100755 --- a/public/partials/navbar.php +++ b/public/partials/navbar.php @@ -52,9 +52,11 @@ $dbName = getenv('DB_NAME') ?: 'No configurado';