diff --git a/public/admin/asignaciones.php b/public/admin/asignaciones.php
index 34240b2..9506e5e 100755
--- a/public/admin/asignaciones.php
+++ b/public/admin/asignaciones.php
@@ -7,6 +7,7 @@ require_once BASE_PATH . '/src/Auth.php';
require_once BASE_PATH . '/src/User.php';
require_once BASE_PATH . '/src/DiasHorarios.php';
require_once BASE_PATH . '/src/Asignacion.php';
+require_once BASE_PATH . '/src/CSRF.php';
$auth = new Auth();
$auth->requireAdmin();
@@ -19,52 +20,57 @@ $message = '';
$messageType = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $action = $_POST['action'] ?? '';
+ if (!CSRF::isValidRequest()) {
+ $message = 'Error de validación del formulario';
+ $messageType = 'danger';
+ } else {
+ $action = $_POST['action'] ?? '';
- if ($action === 'asignar') {
- $userId = $_POST['user_id'] ?? 0;
- $semana = $_POST['semana'] ?? '';
+ 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 === '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);
+ } elseif ($action === 'rotar') {
+ $semana = $_POST['semana'] ?? '';
+ $asignacionActual = $asignacionModel->getAsignacionPorSemana($semana);
- if ($resultado['success'] > 0) {
- $message = "Se asignaron {$resultado['success']} turnos correctamente";
- if ($rotacionAutomatica) {
- $message .= " con rotación automática para la siguiente 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';
}
- $messageType = 'success';
}
-
- if (!empty($resultado['errors'])) {
- $message .= "
Errores: " . implode('
', $resultado['errors']);
- $messageType = 'warning';
+ } 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';
}
- } else {
- $message = 'Debes seleccionar al menos un ayudante y una semana';
- $messageType = 'danger';
}
}
}
@@ -167,6 +173,7 @@ $pageTitle = 'Asignación de Turnos';