SET TERM ^ ;

UPDATE OR INSERT INTO TBPARAMETRO (TABELA, CODIGO, DESCRICAO, VALOR, OBSERVACAO, GRUPO, DATAHORA, USUARIO_ID)
       VALUES ('SISTEMA', 'NOTIFICAR_OPERADOR_CHAMADO', 'NOTIFICAR OPERADOR VINCULADO AO CHAMADO', '0', ' 1 - SIM
       0 - NAO', 'WEB32050', '2024-06-19 13:37:17', 666)
     MATCHING (TABELA, CODIGO)^

CREATE OR ALTER TRIGGER TBPCM_REGISTRO_CHAMADO_MSG_B03I FOR TBPCM_REGISTRO_CHAMADO_MSG
ACTIVE BEFORE INSERT POSITION 3
AS
DECLARE VARIABLE SOLICITANTE        INTEGER;
DECLARE VARIABLE ATENDENTE          INTEGER;
DECLARE VARIABLE ASSUNTO            VARCHAR(500);
DECLARE VARIABLE CATEGORIA          VARCHAR(200);
DECLARE VARIABLE SUB_CATEGORIA      VARCHAR(200);
DECLARE VARIABLE STATUS_DESCRICAO   VARCHAR(200);
DECLARE VARIABLE URGENCIA           VARCHAR(1);
DECLARE VARIABLE CORPO              BLOB SUB_TYPE 1 SEGMENT SIZE 80;
DECLARE VARIABLE MENSAGENS          INTEGER;
DECLARE VARIABLE NOTIFICAR_OPERADOR_CHAMADO VARCHAR(1)
BEGIN
	/*SE O SISTEMA ESTIVER CONFIGURADO PARA NOTIFICAR O SOLICITANTE/OPERADOR DO CHAMADO*/
	:NOTIFICAR_OPERADOR_CHAMADO = COALESCE(FN_PARAMETRO('SISTEMA.NOTIFICAR_OPERADOR_CHAMADO'),'0');
	
    IF(:NOTIFICAR_OPERADOR_CHAMADO = '1')THEN
	BEGIN
		FOR
		   SELECT
				CH.USUARIO_SOLICITANTE_ID AS SOLICITANTE,
				COALESCE((SELECT FIRST 1 US.CODIGO FROM TBUSUARIO US, TBPCM_SETOR_OPERADOR OP
					WHERE OP.USUARIO_ID = US.CODIGO AND OP.ID = CH.OPERADOR_ATENDIMENTO AND CH.SETOR_ID = OP.SETOR_ID),0) AS ATENDENTE,
				COALESCE((SELECT FIRST 1 CAT.DESCRICAO FROM TBPCM_CHAMADO_CATEGORIA CAT WHERE CAT.ID = CH.CHAMADO_CATEGORIA_ID),'') AS CATEGORIA,
				COALESCE((SELECT FIRST 1 CAT2.DESCRICAO FROM TBPCM_CHAMADO_CATEGORIA CAT2 WHERE CAT2.ID = CH.CHAMADO_SUBCATEGORIA_ID),'') AS SUB_CATEGORIA,
				COALESCE(CH.URGENCIA,'0') AS URGENCIA,
				COALESCE((SELECT COUNT(MSG.ID) FROM TBPCM_REGISTRO_CHAMADO_MSG MSG WHERE MSG.ID <> NEW.ID AND MSG.REGISTRO_CHAMADO_ID = NEW.REGISTRO_CHAMADO_ID),0) AS MENSAGENS,
				COALESCE((SELECT FIRST 1 STS.DESCRICAO FROM TBPCM_SETOR_STATUS STS WHERE STS.SETOR_ID = CH.SETOR_ID AND STS.ID = CH.STATUS),'') AS STATUS_DESCRICAO
			   FROM TBPCM_REGISTRO_CHAMADO CH
			   WHERE CH.ID = NEW.REGISTRO_CHAMADO_ID
		 INTO :SOLICITANTE, :ATENDENTE, :CATEGORIA, :SUB_CATEGORIA, :URGENCIA, :MENSAGENS, :STATUS_DESCRICAO DO
		 BEGIN
			:ASSUNTO = 'CHAMADO: '||FN_LPAD(NEW.REGISTRO_CHAMADO_ID,4,0)||' '||UPPER(:STATUS_DESCRICAO)||'';
			:CORPO   = NEW.MENSAGEM;
			IF(NEW.USUARIO_ID = :SOLICITANTE)THEN
			BEGIN
			   EXECUTE PROCEDURE SPI_NOTIFICAR_V2(CURRENT_TIMESTAMP,:ATENDENTE,:ASSUNTO,:CORPO,0,1);
			END

			IF(NEW.USUARIO_ID = :ATENDENTE)THEN
			BEGIN                                                                                     
			   EXECUTE PROCEDURE SPI_NOTIFICAR_V2(CURRENT_TIMESTAMP,:SOLICITANTE,:ASSUNTO,:CORPO,0,1);
			END

		 END
	END
END
^

SET TERM ; ^

