SET TERM ^ ;

CREATE OR ALTER procedure SPC_EMAIL_CASO (
    CASO_ID integer,
    PAINEL_ID integer,
    MSG varchar(7000))
returns (
    C1 varchar(8000),
    C2 varchar(8000),
    C3 varchar(8000))
as
declare variable CORPO1 varchar(8000);
declare variable CORPO2 varchar(8000);
declare variable CORPO3 varchar(8000);
declare variable HTML1 varchar(4000);
declare variable HTML2 varchar(4000);
declare variable TIPO integer;
declare variable DESCRICAO varchar(100);
declare variable VALOR varchar(7000);
begin

   html1 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 3);
   html2 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 2);

   corpo1 = '';
   corpo2 = '';
   corpo3 = '';

   corpo1 = '<html><body>';
   corpo1 = corpo1 || :msg;
   corpo1 = corpo1 || '<p></p>';
--   corpo1 = corpo1 || '<p><a href="https://gc.delfa.com.br/_11150/'||:PAINEL_ID||'/'||:caso_id||'" target="_blank">[ABRIR NA WEB]</a></p>';
   corpo1 = corpo1 || '<p><a href="https://gc.delfa.com.br/_11160/'||:PAINEL_ID||'?CASO_ID='||:caso_id||'" target="_blank">[ABRIR NA WEB]</a></p>';
   corpo1 = corpo1 || '<p></p>';
   corpo1 = corpo1 || html1;
   --corpo1 = corpo1 || '<p><u>Data</u>: '||formatdatetime(current_timestamp) || '</p>';

    for
       select
            TIPO,
            DESCRICAO,
            TRIM(SUBSTRING(coalesce(VALOR,'&nbsp;') FROM 1 FOR 3000)) || iif(char_length(VALOR) > 300,'...','') as VALOR
       from CASO_DETALHE(:painel_id, :caso_id)
    into
        :tipo,
        :descricao,
        :valor
    do
    begin
        corpo2 = corpo2||'<p><u>'||descricao||'</u>: '||:valor||'</p>';
    end

   corpo3 = corpo3 || html2 || '</body></html>';


  c1 = corpo1;
  c2 = corpo2;
  c3 = corpo3;

  suspend;
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbcaso_registro_b02i for tbcaso_registro
active after insert position 0
AS
    declare variable tipo integer;
    declare variable descricao varchar(50);
    declare variable USUARIO_CAD varchar(100);
    declare variable monitor varchar(100);
    declare variable motivo varchar(100);
    declare variable valor varchar(5000);
    declare variable corpo varchar(8000);
    declare variable html1 varchar(4000);
    declare variable html2 varchar(4000);
begin
    
    USUARIO_CAD = coalesce((select first 1 u.nome from tbcaso_historico h, tbusuario u where h.caso_id = new.id and h.painel_id = new.painel_id and u.codigo = h.usuario_id),'');

    monitor = (SELECT first 1 p.email_monitor FROM tbcaso_painel p where p.id = new.painel_id);

    html1 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 1);
    html2 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 2);

--    corpo = '<html><body><p><a href="https://gc.delfa.com.br/_11150/'||new.painel_id||'/'||new.id||'" target="_blank">Abrir '||new.id||' na web</a></p>';
    corpo = '<html><body><p><a href="https://gc.delfa.com.br/_11160/'||new.painel_id||'?CASO_ID='||new.id||'" target="_blank">Abrir '||new.id||' na web</a></p>';
    corpo = corpo || html1;
    corpo = corpo || '<p><u>Data</u>: '||formatdatetime(current_timestamp)||'</p>';
    corpo = corpo || '<p><u>Aberto por:</u>: '||:USUARIO_CAD||'</p>';

    for
       select
            TIPO,
            DESCRICAO,
            coalesce(VALOR,'&nbsp;') as VALOR
       from CASO_DETALHE(new.painel_id, new.id)
    into
        :tipo,
        :descricao,
        :valor
    do
    begin
        corpo = corpo||'<p><u>'||descricao||'</u>: '||:valor||'</p>';

        if(descricao = 'Motivo')then
        begin
            motivo = valor;
        end
    end

    corpo = corpo || html2;

    insert into tbemail (status, email, assunto, corpo, usuario_id, cc, cco, painel_id)
    values (
        0,
        :monitor,
        'NOVO - [CASO:'||lpad(new.id,8,0)||'] Aberto : '|| :motivo,
        :corpo,
        0,
        coalesce((select c.email_monitor  from TBCASO_PAINEL c where c.id = new.painel_id),''), --(select u.email from tbusuario u where u.codigo = new.usuario_id),
        '',
        new.painel_id
    );

end
^

SET TERM ; ^


