<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSr46660 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
            INSERT INTO sistema.acao (id_usuario_criacao, ds_label, ds_module, ds_controller, ds_action, ds_descricao, fl_tipo, id_parent)
                VALUES (
                    2068,
                    'Liberar Aba Taxa Comercialização',
                    'atendimento',
                    'proposta',
                    'liberarabataxacomercializacao',
                    'Ação criada para verificar se habilita ou não abaTaxa Comercializalção em: Atendimento > Propostas - Editar.',
                    'A',
                    (SELECT id FROM sistema.acao WHERE ds_module = 'atendimento' AND ds_controller = 'proposta' AND ds_action = 'view')
                );
            
            INSERT INTO sistema.usuarios_acao(id_usuario_criacao, id_usuario, id_acao) 
                VALUES
                    (2068, (SELECT id FROM sistema.usuarios WHERE ds_nome_usuario = 'karina.silva'), currval('sistema.acao_id_seq')),
                    (2068, (SELECT id FROM sistema.usuarios WHERE ds_nome_usuario = 'henrique.alves'), currval('sistema.acao_id_seq')),
                    (2068, (SELECT id FROM sistema.usuarios WHERE ds_nome_usuario = 'luana.beck'), currval('sistema.acao_id_seq')),
                    (2068, (SELECT id FROM sistema.usuarios WHERE ds_nome_usuario = 'gabriel.vasconcelos'), currval('sistema.acao_id_seq')),
                    (2068, (SELECT id FROM sistema.usuarios WHERE ds_nome_usuario = 'luciana.dellay'), currval('sistema.acao_id_seq')),
                    (2068, (SELECT id FROM sistema.usuarios WHERE ds_nome_usuario = 'ti.agronet'), currval('sistema.acao_id_seq'));

            CREATE TABLE comercializacao.taxa_agrupamento_orcamento_item (
                id_taxa_agrupamento INTEGER,
                id_item_segurado INTEGER,
                vl_produtividade_estimada NUMERIC(7, 3),
                CONSTRAINT pk_taxa_agrupamento_orcamento_item PRIMARY KEY (id_taxa_agrupamento, id_item_segurado),
                CONSTRAINT fk_id_taxa_agrupamento FOREIGN KEY (id_taxa_agrupamento) REFERENCES comercializacao.taxas_agrupamento (id) 
                    ON DELETE CASCADE,
                CONSTRAINT fk_id_item_segurado FOREIGN KEY (id_item_segurado) REFERENCES seguro.itens_segurados (id)
            ) INHERITS (public.campos_default);

            ALTER TABLE seguro.propostas ADD COLUMN fl_taxa_pe_por_item BOOLEAN DEFAULT FALSE;
SQL
        );
    }

    public function down(): void
    {
        $this->execute(<<<SQL
            ALTER TABLE seguro.propostas DROP COLUMN fl_taxa_pe_por_item;
            DROP TABLE comercializacao.taxa_agrupamento_orcamento_item;
            DELETE FROM sistema.usuarios_acao WHERE id_acao = (SELECT id FROM sistema.acao WHERE ds_module = 'atendimento' AND ds_controller = 'proposta' AND ds_action = 'liberarabataxacomercializacao');
            DELETE FROM sistema.acao WHERE ds_module = 'atendimento' AND ds_controller = 'proposta' AND ds_action = 'liberarabataxacomercializacao';
SQL
    );
    }
}
