SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_PAINEL_B03I FOR TBCASO_PAINEL
ACTIVE BEFORE INSERT POSITION 2
AS
BEGIN

    IF (NEW.ID > 0) THEN
        BEGIN
            UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO) 
                VALUES (99000 + NEW.ID, 'CHA', 'CHA', NEW.STATUS, '11150/'||NEW.ID, 'REGISTRO DE CASOS ('||NEW.TITULO||')')
                MATCHING (CONTROLE);    -- INCLUSÃO DO PAINEL NA LISTA DOS MENUS
        END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_PAINEL_B01U FOR TBCASO_PAINEL
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESC:'|| OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF ( OLD.TITULO <> NEW.TITULO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TITULO:'|| OLD.TITULO||'->'||NEW.TITULO;
    END

    IF ( OLD.MENU_GRUPO <> NEW.MENU_GRUPO) THEN
    BEGIN
        HISTORICO = HISTORICO||' GRUPO:'|| OLD.MENU_GRUPO||'->'||NEW.MENU_GRUPO;
    END

    IF ( OLD.TEMPLATE <> NEW.TEMPLATE) THEN
    BEGIN
        HISTORICO = HISTORICO||' TEMPLATE:'|| OLD.TEMPLATE||'->'||NEW.TEMPLATE;
    END

     IF ( OLD.FRASE <> NEW.FRASE) THEN
    BEGIN
        HISTORICO = HISTORICO||' FRASE:'|| OLD.FRASE||'->'||NEW.FRASE;
    END

     IF ( OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
        HISTORICO = HISTORICO||' STATUS:'|| OLD.STATUS||'->'||NEW.STATUS;
        UPDATE TBMENU SET TIPO = NEW.STATUS WHERE CONTROLE = 99000 + NEW.ID;    -- MODIFICA O TIPO DA TBMENU DE ACORDO COM O STATUS DO PAINEL
    END

     IF ( OLD.CONTATO_CADASTRO <> NEW.CONTATO_CADASTRO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CONTATO CADASTRO:'|| OLD.CONTATO_CADASTRO||'->'||NEW.CONTATO_CADASTRO;
    END

     IF ( OLD.EMAIL <> NEW.EMAIL) THEN
    BEGIN
        HISTORICO = HISTORICO||' EMAIL:'|| OLD.EMAIL||'->'||NEW.EMAIL;
    END

     IF ( OLD.EMAIL_PASS <> NEW.EMAIL_PASS) THEN
    BEGIN
        HISTORICO = HISTORICO||' EMAIL SENHA:'||'SENHA ALTERADA';
    END

     IF ( OLD.EMAIL_SMTP <> NEW.EMAIL_SMTP) THEN
    BEGIN
        HISTORICO = HISTORICO||' EMAIL SMTP:'|| OLD.EMAIL_SMTP||'->'||NEW.EMAIL_SMTP;
    END

     IF ( OLD.PORTA_SMTP <> NEW.PORTA_SMTP) THEN
    BEGIN
        HISTORICO = HISTORICO||' PORTA SMTP:'|| OLD.PORTA_SMTP||'->'||NEW.PORTA_SMTP;
    END

     IF ( OLD.AUTENTICACAO <> NEW.AUTENTICACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' AUTENTICACAO:'|| OLD.AUTENTICACAO||'->'||NEW.AUTENTICACAO;
    END

     IF ( OLD.SSL_TLS <> NEW.SSL_TLS) THEN
    BEGIN
        HISTORICO = HISTORICO||' SSL_TLS:'|| OLD.SSL_TLS||'->'||NEW.SSL_TLS;
    END

      IF ( OLD.EMAIL_MONITOR <> NEW.EMAIL_MONITOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' EMAIL MONITOR:'|| OLD.EMAIL_MONITOR||'->'||NEW.EMAIL_MONITOR;
    END

     IF ( OLD.SQL_EMAIL_CONTATO <> NEW.SQL_EMAIL_CONTATO) THEN
    BEGIN
        HISTORICO = HISTORICO||' SQL EMAIL CONTATO:'|| OLD.SQL_EMAIL_CONTATO||'->'||NEW.SQL_EMAIL_CONTATO;
    END

    IF ( OLD.CAMPO_NOME_CONTATO <> NEW.CAMPO_NOME_CONTATO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAMPO NOME CONTATO:'|| OLD.CAMPO_NOME_CONTATO||'->'||NEW.CAMPO_NOME_CONTATO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCASO_PAINEL',NEW.ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCASO_PAINEL_B02D FOR TBCASO_PAINEL
ACTIVE BEFORE DELETE POSITION 1
AS
BEGIN
   IF(OLD.ID > 0) THEN
   BEGIN
      DELETE FROM TBCASO_VISUALIZACAO_CONF V WHERE V.PAINEL_ID = OLD.ID;    -- VISUALIZAÇÃO ESTÁ VINCULADA COM PAINEL DURANTE INCLUSÃO.
      DELETE FROM TBCASO_SQL S WHERE S.ID = OLD.SQL_EMAIL_CONTATO;          -- SQL DO CAMPO DOS EMAILS DOS CONATATOS

      DELETE FROM TBCASO_PAINEL_CONF A WHERE A.PAINEL_ID = OLD.ID;          -- CAMPOS (ALT+2)
      DELETE FROM TBCASO_USUARIOS B WHERE B.PAINEL_ID = OLD.ID;             -- USUÁRIOS (ALT+3)
      DELETE FROM TBCASO_PARAMETROS_USUARIO C WHERE C.PAINEL_ID = OLD.ID;   -- PARÂMETROS (ALT+4)
      DELETE FROM TBCASO_STATUS D WHERE D.PAINEL_ID = OLD.ID;               -- STATUS (ALT+5)
      DELETE FROM TBCASO_MOTIVO E WHERE E.PAINEL_ID = OLD.ID;               -- MOTIVO (ALT+6)
      DELETE FROM TBCASO_VISUALIZACAO_CAMPO F WHERE F.PAINEL_ID = OLD.ID;   -- VISUALIZAÇÃO (ALT+8)
      DELETE FROM TBCASO_VALIDACAO G WHERE G.PAINEL_ID = OLD.ID;            -- VALIDAÇÃO (ALT+9)
      DELETE FROM TBCASO_CONTATO_CONF H WHERE H.PAINEL_ID = OLD.ID;         -- CONTATO (ALT+0)
      DELETE FROM TBCASO_CAMPOS_AGRUPAMENTO I WHERE I.PAINEL_ID = OLD.ID;   -- AGRUPAMENTOS (ALT+7)
      
      DELETE FROM TBMENU M WHERE M.CONTROLE = 99000 + OLD.ID;               -- EXCLUSÃO DO PAINEL DA LISTA DE MENUS
   END
END
^

SET TERM ; ^