From 76b0584667952cd43de0fc15c96b142110d7169c Mon Sep 17 00:00:00 2001 From: nickpons666 Date: Fri, 30 Jan 2026 22:30:55 -0600 Subject: [PATCH] =?UTF-8?q?fix:=20Corregir=20funcionalidad=20de=20reordena?= =?UTF-8?q?miento=20y=20generaci=C3=B3n=20autom=C3=A1tica=20de=20turnos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Añadir jQuery para resolver error 'jQuery is not defined' - Corregir variable $db indefinida en reordenamiento de rotación - Añadir método getDb() a clase Asignacion para acceso a base de datos - Implementar procesamiento correcto de acción 'rotacion_automatica' - Actualizar inputs ocultos al reordenar elementos visuales - Añadir redirección para recargar datos actualizados después de guardar orden - Mejorar manejo de mensajes de éxito/errores en generación automática --- public/admin/asignaciones.php | 45 ++++++++++++++++++++++------------- src/Asignacion.php | 4 ++++ 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/public/admin/asignaciones.php b/public/admin/asignaciones.php index 673190c..97d4b60 100755 --- a/public/admin/asignaciones.php +++ b/public/admin/asignaciones.php @@ -19,6 +19,11 @@ $asignacionModel = new Asignacion(); $message = ''; $messageType = ''; +if (isset($_GET['success']) && $_GET['success'] === 'orden_actualizado') { + $message = 'Orden actualizado correctamente. Se recalcularon las asignaciones futuras.'; + $messageType = 'success'; +} + if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!CSRF::isValidRequest()) { $message = 'Error de validación del formulario'; @@ -47,6 +52,21 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $messageType = 'success'; } } + } elseif ($action === 'rotacion_automatica') { + $resultado = $asignacionModel->asignarSemanasFuturasAutomaticas(12); + + if ($resultado['success'] > 0) { + $message = "Se generaron {$resultado['success']} semanas futuras correctamente"; + if (!empty($resultado['errors'])) { + $message .= ". Errores: " . implode(', ', $resultado['errors']); + $messageType = 'warning'; + } else { + $messageType = 'success'; + } + } else { + $message = 'No se pudieron generar asignaciones: ' . implode(', ', $resultado['errors']); + $messageType = 'danger'; + } } elseif ($action === 'asignar_masivo') { $userIds = $_POST['user_ids'] ?? []; $semanaInicio = $_POST['semana_inicio'] ?? ''; @@ -370,17 +390,7 @@ No hay asignación para la semana de 4 ( - - asignarSemanasFuturasAutomaticas(12); - ?> -
- Resultado: Se asignaron semanas futuras - -
Errores: - -
- +
@@ -451,7 +461,7 @@ No hay asignación para la semana de 4 ( $userId) { - $stmt = $db->prepare(" + $stmt = $asignacionModel->getDb()->prepare(" UPDATE rotacion_orden SET orden = ? WHERE user_id = ? AND activo = 1 @@ -463,10 +473,9 @@ No hay asignación para la semana de 4 (recalcularAsignaciones(20); if ($resultado['success'] > 0) { - echo '
'; - echo 'Orden actualizado correctamente. '; - echo "Se recalcularon {$resultado['success']} semanas futuras."; - echo '
'; + // Redireccionar para recargar los datos actualizados + header("Location: " . $_SERVER['PHP_SELF'] . "?success=orden_actualizado"); + exit; } } ?> @@ -475,6 +484,7 @@ No hay asignación para la semana de 4 (
+