SET TERM ^ ;

CREATE OR ALTER procedure SPI_NOTIFICA_CAMPANHA
as
declare variable CAMPANHA_ID integer;
declare variable CAMPANHA_DESC varchar(200);
declare variable CAMPANHA_INICIO date;
declare variable CAMPANHA_FINAL date;
declare variable CAMPANHA_QTD_CLIENTES integer;
declare variable USUARIO_ID integer;
declare variable QTD_PENDENTES integer;
declare variable CORPO blob sub_type 1 segment size 80;
BEGIN

    FOR
        SELECT
            T.ID,
            T.DESCRICAO,

            T.DATA_INICIO,
            T.DATA_FINAL,

            COALESCE((SELECT
                COUNT(X.CLIENTE_ID)
            FROM TBCAMPANHA_CLIENTES X
            WHERE X.CAMPANHA_ID = T.ID), 0) AS QTD_CLIENTES
        
        FROM TBCAMPANHA T
        WHERE CURRENT_DATE BETWEEN T.DATA_INICIO AND T.DATA_FINAL

    INTO
        :CAMPANHA_ID,
        :CAMPANHA_DESC,
        :CAMPANHA_INICIO,
        :CAMPANHA_FINAL,
        :CAMPANHA_QTD_CLIENTES

    DO
    BEGIN

        FOR
            SELECT
                A.USUARIO_ID,

                COALESCE((SELECT
                    COUNT(X.CLIENTE_ID)
                FROM TBCAMPANHA_CLIENTES X
                WHERE X.CAMPANHA_ID = A.CAMPANHA_ID
                AND COALESCE((SELECT FIRST 1 X2.ID FROM TBCAMPANHA_CLIENTES_CONTATO X2 WHERE X2.CAMPANHA_CLIENTE_ID = X.ID), 0) = 0), 0) AS QTD_PENDENTES    -- AND X2.USUARIO_ID = A.USUARIO_ID
    
            FROM TBCAMPANHA_NOTIFICACAO A
            WHERE A.CAMPANHA_ID = :CAMPANHA_ID

        INTO
            :USUARIO_ID,
            :QTD_PENDENTES

        DO
        BEGIN
            
            :CORPO = '';
            
			:CORPO = :CORPO||'<p>  </p><br><br>';
			:CORPO = :CORPO||'<p> <span style="font-weight: bold;">Periodo: </span> '||FORMATDATE(:CAMPANHA_INICIO)||' a '||FORMATDATE(:CAMPANHA_FINAL)||' </p>';
			:CORPO = :CORPO||'<p> '||:CAMPANHA_QTD_CLIENTES||' Clientes estão registrados nessa campanha </p><br>';
            :CORPO = :CORPO||'<p> <strong>'||:QTD_PENDENTES||' PENDENTES DE CONTATO!</strong> </p><br>';
            :CORPO = :CORPO||'<p> <a href="'||FN_PARAMETRO_V2('SISTEMA.URL_SERVER')||'/_12550/Campanha?ID='||:CAMPANHA_ID||'" target="_blank" style="font-weight: bold;">CLIQUE AQUI PARA ABRIR ESSA CAMPANHA!</a> </p><br>';

            /******************************************************************/

            INSERT INTO TBNOTIFICACAO (TIPO, USUARIO_ID, TODOS, MENU_ID, TITULO, LEITURA, ENVIO, DATA_HORA, EMITENTE, AGENDAMENTO, EXECUTADO, TABELA, TABELA_ID, MENSAGEM)
                VALUES (1, :USUARIO_ID, 0, 12550, FN_ELIPSE(COALESCE(:CAMPANHA_DESC, ''), 100), 0, 0, CURRENT_TIMESTAMP, :USUARIO_ID, CURRENT_TIMESTAMP, 0, 'TBCAMPANHA', :CAMPANHA_ID, COALESCE(:CORPO, ''));

        END
    END
END
^

SET TERM ; ^

/******************************************************************************************************************************/
/******************************************************************************************************************************/

INSERT INTO TBSQL (ID, DESCRICAO, SQL, USUARIO, DATAHORA)
    VALUES (GEN_ID(GTBSQL, 1), 'NOTIFICACAO DE CAMPANHAS ATIVAS', 'EXECUTE PROCEDURE SPI_NOTIFICA_CAMPANHA;', 'GCWEB', CURRENT_TIMESTAMP);

INSERT INTO TBAGENDAMENTO_SQL (DESCRICAO, TIPO, HORAINICIO, HORAFIM, INTERVALO, SQL_ID, STATUS, SEG, TER, QUA, QUI, SEX, SAB, DOM, DIA, DATAHORAULTIMOEXEC, REPETIVEL)
    VALUES ('NOTIFICACAO DE CAMPANHAS ATIVAS', 'S', '07:00:00', '07:30:00', 0, COALESCE((SELECT MAX(X.ID) FROM TBSQL X), 0), 1, 1, 1, 1, 1, 1, 0, 0, 0, CURRENT_TIMESTAMP, 0);

