﻿/*

select count(*)  from "Zalamero_actividad" where proyecto_id = 2

select count(*)   from "Zalamero_actividad" where proyecto_id = 2 and estatus = True

select * from "Zalamero_actividadesusuario"



select * -- delete
from "PASO";
*/

DROP FUNCTION TerminaActividad() cascade;

CREATE FUNCTION TerminaActividad() RETURNS trigger AS $TerminaActividad$
    BEGIN
    -- contamos las actividades por usuario y las comparamos con las actividades completadas
    if (select count(*)  from "Zalamero_actividadesusuario" where actividad_id = NEW.actividad_id) > 0 then 
        if (
		(select count(*)  from "Zalamero_actividadesusuario" where actividad_id = NEW.actividad_id) = 
		(select count(*)   from "Zalamero_actividadesusuario" where actividad_id = NEW.actividad_id and terminado = True )
        ) 
	then 
		update "Zalamero_actividad" set estatus = True where id = NEW.actividad_id;
	else
		update "Zalamero_actividad" set estatus = False where id = NEW.actividad_id;
        end if;
    end if;
        return NEW;

    END;
$TerminaActividad$ LANGUAGE plpgsql;



CREATE TRIGGER TerminaActividad after INSERT OR UPDATE ON "Zalamero_actividadesusuario"
    FOR EACH ROW EXECUTE PROCEDURE TerminaActividad();


ALTER FUNCTION TerminaActividad()
  OWNER TO "Produccion";