Merge pull request 'Que se valide que al cambiar de ciclo un prerrequisito no quede inválida #79' (#85) from issue/79-que-se-valide-que-al-cambiar-de-ciclo-un-prerrequi into main
Reviewed-on: AlexRG/genesis-2#85
This commit was merged in pull request #85.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
set check_function_bodies = off;
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.fn_ajustar_seriacion_por_cambio_ciclo()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $function$
|
||||
BEGIN
|
||||
-- 1. Validar materias que DEPENDEN de esta (Hijas)
|
||||
-- Si muevo 'Mate 1' al ciclo 3, y 'Cálculo' está en el ciclo 3,
|
||||
-- la relación se rompe porque el prerrequisito debe ser de un ciclo menor.
|
||||
UPDATE public.asignaturas
|
||||
SET prerrequisito_asignatura_id = NULL
|
||||
WHERE prerrequisito_asignatura_id = NEW.id
|
||||
AND numero_ciclo <= NEW.numero_ciclo;
|
||||
|
||||
-- 2. Validar si la materia que estoy moviendo (la actual)
|
||||
-- ahora rompe la regla con SU PROPIO prerrequisito (Padre)
|
||||
IF NEW.prerrequisito_asignatura_id IS NOT NULL THEN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM public.asignaturas
|
||||
WHERE id = NEW.prerrequisito_asignatura_id
|
||||
AND numero_ciclo >= NEW.numero_ciclo
|
||||
) THEN
|
||||
NEW.prerrequisito_asignatura_id := NULL;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$function$
|
||||
;
|
||||
|
||||
CREATE TRIGGER trg_limpiar_seriacion_conflictiva BEFORE UPDATE OF numero_ciclo ON public.asignaturas FOR EACH ROW EXECUTE FUNCTION public.fn_ajustar_seriacion_por_cambio_ciclo();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user