<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSr53650 extends AbstractMigration
{
    public function up()
    {
        $this->execute(<<<SQL
            CREATE TABLE sinistro.liquidacao_pagamento_adicional (
                id SERIAL,
                id_liquidacao INTEGER NOT NULL,
                vl_indenizacao_paga NUMERIC(12,2) NOT NULL,
                vl_total_corrigido NUMERIC(12,2) NOT NULL,
                ds_observacao VARCHAR,
                id_status INTEGER NOT NULL,
                ds_nome_arquivo VARCHAR,
                CONSTRAINT pk_id_liquidacao_pagamento_adicional PRIMARY KEY (id),
                CONSTRAINT fk_id_liquidacao FOREIGN KEY (id_liquidacao) REFERENCES sinistro.liquidacoes (id),
                CONSTRAINT fk_id_status FOREIGN KEY (id_status) REFERENCES sistema.status (id)
            ) INHERITS (public.campos_default);

            INSERT INTO sistema.tipo_status (ds_tipo_status, ds_chave, id_usuario_criacao)
            VALUES ('Liquidação Pagamento Adicional', 'LIQUIDACAO_PAGAMENTO_ADICIONAL', 2068);

            SELECT setval('sistema.status_id_seq', 325);

            INSERT INTO sistema.status (id_tipo_status, ds_status, ds_chave, cd_status, id_usuario_criacao)
            VALUES
                (currval('sistema.tipo_status_id_seq'), 'Aguardando Revisão', 'AGUARDANDO_REVISAO', 1, 2068),
                (currval('sistema.tipo_status_id_seq'), 'Pendente de Pagamento', 'PENDENTE_PAGAMENTO', 2, 2068),
                (currval('sistema.tipo_status_id_seq'), 'Aguardando Pagamento', 'AGUARDANDO_PAGAMENTO', 3, 2068),
                (currval('sistema.tipo_status_id_seq'), 'Indenização Paga', 'INDENIZACAO_PAGA', 4, 2068);

            INSERT INTO sistema.tipo_arquivo_processo (ds_tipo_arquivo, ds_chave_tipo_arquivo, id_usuario_criacao, id_tipo_documento_seguradora) VALUES ('DIFERENCA INDENIZACAO', 'DIFERENCA_INDENIZACAO', 2068, 4);

            ALTER TABLE sinistro.liquidacoes_previsao_pagamento ADD COLUMN fl_pagamento_adicional BOOLEAN DEFAULT FALSE;

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

    public function down()
    {
        $this->execute(<<<SQL
            DROP TABLE sinistro.liquidacao_pagamento_adicional;
            DELETE FROM sistema.status WHERE id_tipo_status IN (SELECT id from sistema.tipo_status WHERE ds_chave = 'LIQUIDACAO_PAGAMENTO_ADICIONAL');
            DELETE FROM sistema.tipo_status WHERE ds_chave = 'LIQUIDACAO_PAGAMENTO_ADICIONAL';
            DELETE FROM sistema.tipo_arquivo_processo WHERE ds_chave_tipo_arquivo = 'DIFERENCA_INDENIZACAO';
            ALTER TABLE sinistro.liquidacoes_previsao_pagamento DROP COLUMN fl_pagamento_adicional;
SQL
        );
    }
}
