ALTER TABLE tbcalendario_evento
ADD EMPRESA_ID INTEGER,
ADD TABELA_ID INTEGER;

ALTER TABLE TBMEDICO
ADD USUARIO_ID INTEGER;

ALTER TABLE tbcalendario_evento
ADD PROFISSIONAL_ID INTEGER,
ADD CONSULTORIO_ID INTEGER;

CREATE OR ALTER trigger ttbcalendario_evento_b03i for tbcalendario_evento
active before insert position 0
AS
DECLARE VARIABLE USUARIO_ID INTEGER;
BEGIN
  IF(NEW.PROFISSIONAL_ID > 0) THEN
  BEGIN
    :USUARIO_ID = COALESCE((SELECT T.USUARIO_ID FROM TBMEDICO T WHERE T.ID = NEW.PROFISSIONAL_ID), 0);
    IF(:USUARIO_ID > 0) THEN
    BEGIN
        INSERT INTO TBCALENDARIO_EVENTO_PART (USUARIO_ID, STATUS, CALENDARIO_EVENTO_ID)
        VALUES (:USUARIO_ID, 1, NEW.ID);
    END
  END
END;


CREATE OR ALTER trigger ttbcalendario_evento_b03u for tbcalendario_evento
active before update position 0
AS
DECLARE VARIABLE USUARIO_ID INTEGER;
DECLARE VARIABLE USUARIO_ID_OLD INTEGER;
BEGIN
  IF(NEW.PROFISSIONAL_ID IS DISTINCT FROM OLD.PROFISSIONAL_ID) THEN
  BEGIN
    IF(NEW.PROFISSIONAL_ID > 0) THEN
      BEGIN
        :USUARIO_ID = COALESCE((SELECT T.USUARIO_ID FROM TBMEDICO T WHERE T.ID = NEW.PROFISSIONAL_ID), 0);
        IF(:USUARIO_ID > 0) THEN
        BEGIN
            UPDATE OR INSERT INTO TBCALENDARIO_EVENTO_PART (USUARIO_ID, STATUS, CALENDARIO_EVENTO_ID)
            VALUES (:USUARIO_ID, 1, NEW.ID)
            MATCHING(USUARIO_ID, CALENDARIO_EVENTO_ID);
        END
      END
      IF(OLD.PROFISSIONAL_ID > 0) THEN
      BEGIN
         :USUARIO_ID_OLD = COALESCE((SELECT T.USUARIO_ID FROM TBMEDICO T WHERE T.ID = OLD.PROFISSIONAL_ID), 0);
        IF(:USUARIO_ID_OLD > 0) THEN
        BEGIN
           DELETE FROM TBCALENDARIO_EVENTO_PART WHERE USUARIO_ID = :USUARIO_ID_OLD AND CALENDARIO_EVENTO_ID = OLD.ID;
        END
      END
  END
END;