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';
+ - - - - - -
- + +
+ + + + +
+ @@ -160,6 +168,7 @@ $pageTitle = 'Gestión de Usuarios';
+