<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2207011543 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL

            INSERT INTO sistema.tipo_arquivo_processo (id, ds_tipo_arquivo, ds_chave_tipo_arquivo) VALUES (21, 'CADESP', 'CADESP');
            INSERT INTO atendimento.pendencias (ds_nome_pendencia, ds_chave, id_tipo_pendencia) VALUES ('Inserir CADESP', 'PEND_DOC_INSERIR_CADESP', 2);
            SELECT setval('sistema.tipo_arquivo_processo_id_seq', (select max(id) from sistema.tipo_arquivo_processo), true);

            CREATE TABLE seguro.beneficiarios_pendencias_arquivos (
                id SERIAL,
                id_beneficiario INT NOT NULL,
                id_tipo_arquivo INT NOT NULL,
                CONSTRAINT pk_beneficiarios_pendencias_arquivos PRIMARY KEY(id),
                CONSTRAINT fk_beneficiario FOREIGN KEY(id_beneficiario) REFERENCES seguro.beneficiarios(id),
                CONSTRAINT fk_tipo_arquivo FOREIGN KEY(id_tipo_arquivo) REFERENCES sistema.tipo_arquivo_processo(id)
            ) INHERITS (public.campos_default);
SQL
        );
    }

    public function down(): void
    {
        $this->execute(<<<SQL
            DROP TABLE seguro.beneficiarios_pendencias_arquivos;
            DELETE FROM atendimento.pendencias WHERE ds_nome_pendencia = 'Inserir CADESP' AND ds_chave = 'PEND_DOC_INSERIR_CADESP' AND id_tipo_pendencia = 2;
            DELETE FROM sistema.tipo_arquivo_processo where ds_tipo_arquivo = 'CADESP' AND ds_chave_tipo_arquivo = 'CADESP';
            SELECT setval('sistema.tipo_arquivo_processo_id_seq', (select max(id) from sistema.tipo_arquivo_processo), true);
SQL
        );
    }
}
