
CREATE GENERATOR GTBAGENDAMENTO_REPORT;

CREATE TABLE TBAGENDAMENTO_REPORT (
    ID                  INTEGER NOT NULL,
    DESCRICAO           VARCHAR(300),
    TIPO                CHAR(1),
    HORAINICIO          TIME,
    HORAFIM             TIME,
    INTERVALO           INTEGER,
    SQL_COND            BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    STATUS              INTEGER DEFAULT 1,
    SEG                 INTEGER DEFAULT 0,
    TER                 INTEGER DEFAULT 0,
    QUA                 INTEGER DEFAULT 0,
    QUI                 INTEGER DEFAULT 0,
    SEX                 INTEGER DEFAULT 0,
    SAB                 INTEGER DEFAULT 0,
    DOM                 INTEGER DEFAULT 0,
    DIA                 INTEGER DEFAULT 0,
    DATAHORAULTIMOEXEC  TIMESTAMP DEFAULT 'NOW',
    REPETIVEL           INTEGER
);

ALTER TABLE TBAGENDAMENTO_REPORT ADD CONSTRAINT PK_TBAGENDAMENTO_REPORT PRIMARY KEY (ID);

CREATE OR ALTER TRIGGER TTBAGENDAMENTO_REPORT_B01D FOR TBAGENDAMENTO_REPORT
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBAGENDAMENTO_REPORT',old.ID, HISTORICO);
    END
end;

CREATE OR ALTER TRIGGER TTBAGENDAMENTO_REPORT_B01I FOR TBAGENDAMENTO_REPORT
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gTBAGENDAMENTO_REPORT,1);
end;

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

    HISTORICO = '';

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

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

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

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

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

    IF ( OLD.SQL_COND <> NEW.SQL_COND) THEN
    BEGIN
        HISTORICO = HISTORICO||' SQL';
    END

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

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

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

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

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

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

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

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

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

    IF ( OLD.DATAHORAULTIMOEXEC <> NEW.DATAHORAULTIMOEXEC) THEN
    BEGIN
        HISTORICO = HISTORICO||'Data Hora Ultima Execucao:'|| OLD.DATAHORAULTIMOEXEC||'->'||NEW.DATAHORAULTIMOEXEC;
    END

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

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

CREATE OR ALTER TRIGGER TTBAGENDAMENTO_REPORT_B02I FOR TBAGENDAMENTO_REPORT
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Incluido';
    END

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

CREATE OR ALTER TRIGGER TTBAGENDAMENTO_REPORT_B0I FOR TBAGENDAMENTO_REPORT
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gTBAGENDAMENTO_REPORT,1);
end;

COMMENT ON COLUMN TBAGENDAMENTO_REPORT.DESCRICAO IS 'Descricao do procedimento que é executado';

COMMENT ON COLUMN TBAGENDAMENTO_REPORT.TIPO IS
'D: Diario, considera dias da semana e o intervalo para execução,
M: Mensal, executa em um dia expecifico do mes,
A: Agendamento, considera apenas o intervalo para execucao (em minutos),
S: Semanal, considera apenas os dia da semana para execução, sendo executado apenas uma vez ao dia';

ALTER TABLE TBAGENDAMENTO_REPORT
    ADD EMAIL BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    ADD CORPO BLOB SUB_TYPE 1 SEGMENT SIZE 80;

ALTER TABLE TBAGENDAMENTO_REPORT
    ADD LINK BLOB SUB_TYPE 1 SEGMENT SIZE 80;

CREATE INDEX TTBAGENDAMENTO_REPORT_02
ON TBAGENDAMENTO_REPORT (TIPO);

CREATE INDEX ITBAGENDAMENTO_REPORT_01
ON TBAGENDAMENTO_REPORT (STATUS);

