Skip to content

feat: avisar procesos abiertos antes de dar de baja a un estudiante (RF06)

belen.varsi requested to merge feature/aviso-baja-estudiante into dev

Qué se hizo

Al dar de baja a un estudiante desde el listado, la confirmación ahora avisa si tiene procesos abiertos (instancias agendadas o recordatorios pendientes) antes de continuar, como pide

Cómo funciona

  1. Al tocar "Desactivar", se consultan los procesos abiertos del estudiante (GET /estudiantes/{id}/procesos-abiertos). Mientras tanto el botón queda deshabilitado.
  2. Se abre la confirmación de siempre. Si tiene procesos abiertos, aparece además una alerta: "Tiene 2 instancias agendadas y 1 recordatorio pendiente. No se cancelan con la baja: quedan en su historial. Revisalos si hace falta antes de continuar."
  3. Al confirmar, se manda confirmar=true solo si se mostraron procesos. Si aparecieron otros entre la consulta y la confirmación, el backend responde 409 y su mensaje se muestra como error.
  4. Si el estudiante no tiene procesos abiertos, la confirmación es exactamente la de antes.

Cambios

  • components/students/StudentsListView.tsx: consulta de procesos antes de abrir la confirmación, y confirmar en la baja.
  • components/students/ConfirmDialog.tsx: prop opcional aviso, una alerta debajo del mensaje. Los otros usos del diálogo no cambian.
  • lib/students.ts: getProcesosAbiertos, describirProcesosAbiertos y el parámetro confirmar en deactivateStudent.

Dependencia

Necesita el MR de backend "Feature: verificar procesos abiertos antes de la baja de un estudiante (RF06)". Si este se mergea antes, no se rompe nada: la consulta de procesos falla, el diálogo se abre sin aviso (igual que hoy) y la baja funciona como siempre.

Cómo probar (con el backend mergeado)

  1. En Estudiantes, "Desactivar" a un estudiante con una instancia agendada a futuro → la confirmación muestra la alerta con la cantidad. Confirmar → queda inactivo.
  2. "Desactivar" a uno sin procesos abiertos → la confirmación de siempre, sin alerta.
  3. "Cancelar" en la confirmación → no pasa nada.

Verificación

Typecheck y lint pasan.

🗄️ Cambios en la base de datos

Ninguno.

Merge request reports

Loading