<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSr53318 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
            CREATE TABLE sinistro.relatorio_importacao_indenizacao (
                id SERIAL,
                dt_base_inicial DATE,
                dt_base_final DATE,
                ds_nome_arquivo VARCHAR(120),
                CONSTRAINT pk_id_relatorio_importacao_indenizacao PRIMARY KEY (id)
            ) INHERITS (public.campos_default);

            CREATE INDEX idx_data_inicial_final ON sinistro.relatorio_importacao_indenizacao(dt_base_inicial, dt_base_final);

            CREATE TABLE sinistro.relatorio_importacao_indenizacao_liquidacao (
                id_relatorio_importacao_indenizacao INTEGER NOT NULL,
                id_liquidacao INTEGER NOT NULL,
                CONSTRAINT pk_id_relatorio_importacao_indenizacao_id_liquidacao PRIMARY KEY (id_relatorio_importacao_indenizacao, id_liquidacao),
                CONSTRAINT fk_id_relatorio_importacao_indenizacao FOREIGN KEY (id_relatorio_importacao_indenizacao)
                    REFERENCES sinistro.relatorio_importacao_indenizacao (id),
                CONSTRAINT fk_id_liquidacao FOREIGN KEY (id_liquidacao) REFERENCES sinistro.liquidacoes (id)
            ) INHERITS (public.campos_default);

            INSERT INTO sistema.acao (ds_label, ds_module, ds_controller, ds_action, id_parent, nr_ordem, ds_descricao, fl_tipo, id_usuario_criacao)
                VALUES (
                    'Importar Indenizações Agro',
                    'sinistro2',
                    'rotinas',
                    'indexindenizacoesagro',
                    1649,
                    493,
                    'Planilha de pagamentos de indenizações que segue o layout definido na importação dos pagamentos do I4PRO',
                    'M',
                    2068
                );

            INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES (12, currval('sistema.acao_id_seq'));

            INSERT INTO sistema.usuarios_acao (id_usuario, id_acao, id_usuario_criacao)
                SELECT
                    id, currval('sistema.acao_id_seq'), 2068
                FROM sistema.usuarios
                WHERE
                    ds_nome_usuario IN ('tatiana.tondim', 'tamara.ramos');

            INSERT INTO sistema.acao (ds_label, ds_module, ds_controller, ds_action, id_parent, nr_ordem, ds_descricao, fl_tipo, id_usuario_criacao)
                VALUES (
                    'Importar Indenizações Agro',
                    'sinistro',
                    'rotinas',
                    'importarindenizacoesagro',
                    1649,
                    493,
                    'Planilha de pagamentos de indenizações que segue o layout definido na importação dos pagamentos do I4PRO',
                    'A',
                    2068
                );

            INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES (12, currval('sistema.acao_id_seq'));

            INSERT INTO sistema.usuarios_acao (id_usuario, id_acao, id_usuario_criacao)
                SELECT
                    id, currval('sistema.acao_id_seq'), 2068
                FROM sistema.usuarios
                WHERE
                    ds_nome_usuario IN ('tatiana.tondim', 'tamara.ramos');
            
            INSERT INTO sistema.status (ds_status, cd_status, ds_chave, id_tipo_status, id_usuario_criacao)
                VALUES('Aguardando Pagamento', 8, 'AGUARDANDO_PAGAMENTO', 9, 2068);
SQL
        );
    }

    public function down(): void
    {
        $this->execute(<<<SQL
            DROP TABLE sinistro.historico_geracao_relatorio_importacao_indenizacao;
            DELETE FROM sistema.status WHERE ds_chave = 'AGUARDANDO_PAGAMENTO' AND id_tipo_status = 9;
            DELETE FROM sistema.roles_acao WHERE id_acao = (SELECT id FROM sistema.acao WHERE ds_action = 'indexindenizacoesagro');
            DELETE FROM sistema.usuarios_acao WHERE id_acao = (SELECT id FROM sistema.acao WHERE ds_action = 'indexindenizacoesagro');
            DELETE FROM sistema.acao WHERE ds_action = 'indexindenizacoesagro';

            DELETE FROM sistema.roles_acao WHERE id_acao = (SELECT id FROM sistema.acao WHERE ds_action = 'importarindenizacoesagro');
            DELETE FROM sistema.usuarios_acao WHERE id_acao = (SELECT id FROM sistema.acao WHERE ds_action = 'importarindenizacoesagro');
            DELETE FROM sistema.acao WHERE ds_action = 'importarindenizacoesagro';
SQL
        );
    }
}
