SET TERM ^ ;

CREATE OR ALTER TRIGGER DISPOSITIVOS_INFOCONTROL_BI FOR DISPOSITIVOS
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
  -- SOMENTE TIPO AVLS
  IF ((SELECT FIRST 1
              TD.RASTREADOR
         FROM TIPOS_DISPOSITIVOS TD
         WHERE TD.CODIGO = NEW.CODIGOTIPODISPOSITIVO) = 'T') THEN
  BEGIN
    -- ALARMES (AVLS/ CAN)
    INSERT INTO DISPOSITIVOS_INFO_ALARMES
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_ALARME, DATAHORA_ULTIMO_PACOTE_ALARME)
    VALUES
      (NEW.CODIGO, 0, CURRENT_TIMESTAMP);

    INSERT INTO DISPOSITIVOS_INFO_ALARMESCAN
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_ALARME, DATAHORA_ULTIMO_PACOTE_ALARME)
    VALUES
      (NEW.CODIGO, 0, CURRENT_TIMESTAMP);
  
    -- ESTATISTICOS
    INSERT INTO DISPOSITIVOS_INFO_ESTATISTICOS
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_ESTATISTICO, DATAHORA_ULTPACOTE_ESTATISTICO)
    VALUES
      (NEW.CODIGO, 99999, CURRENT_TIMESTAMP);
  
    -- HISTÓRICOS
    INSERT INTO DISPOSITIVOS_INFO_HISTORICOS
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_PERIODICO, DATAHORA_ULTIMOPACOTE, DATAHORA_ULTIMO_HISTORICO)
    VALUES
      (NEW.CODIGO, 99999, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
  
    -- MACROS
    INSERT INTO DISPOSITIVOS_INFO_MACROS
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_TR, DATAHORA_ULTIMO_PACOTE_TR)
    VALUES
      (NEW.CODIGO, 99999, CURRENT_TIMESTAMP);
  
    -- MIFARE
    INSERT INTO DISPOSITIVOS_INFO_MIFARE
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_MIFARE, DATAHORA_ULTIMO_PACOTE_MIFARE)
    VALUES
      (NEW.CODIGO, 99999, CURRENT_TIMESTAMP);
  
    -- RFID
    INSERT INTO DISPOSITIVOS_INFO_RFID
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_RFID, DATAHORA_ULTIMO_PACOTE_RFID)
    VALUES
      (NEW.CODIGO, 99999, CURRENT_TIMESTAMP);
  
    -- APC
    INSERT INTO DISPOSITIVOS_INFO_APC
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_APC, DATAHORA_ULTIMO_PACOTE_APC)
    VALUES
      (NEW.CODIGO, 99999, CURRENT_TIMESTAMP);
  END
  -- Dispositivos Macros também irão inserir informações na Dispositivo
  IF (EXISTS(SELECT FIRST 1  1
         FROM TIPOS_DISPOSITIVOS TD
         WHERE TD.CODIGO = NEW.CODIGOTIPODISPOSITIVO
           AND TD.IDENTIFICADOR = '11'
           AND TD.APAGADO = 'F')) THEN
  BEGIN
    -- MACROS
    INSERT INTO DISPOSITIVOS_INFO_MACROS
      (CODIGODISPOSITIVO, ULTIMO_PACOTE_TR, DATAHORA_ULTIMO_PACOTE_TR)
    VALUES
      (NEW.CODIGO, 99999, CURRENT_TIMESTAMP - 1);
  END
END^

SET TERM ; ^


COMMENT ON TRIGGER DISPOSITIVOS_INFOCONTROL_BI IS '
29/01/2016 - Fabiano Lino Galdino: Ajuste para que sejam inseridos somente dispositivos do tipo AVLS e incluidas informações de id de pacote inicial.
13.10.20 - Vitorino: Controle de macros passa a ser feita também por mobiles;';

