<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2206301251 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
INSERT INTO sistema.acao (ds_label, ds_module, ds_controller, ds_action, ds_param, id_parent, ds_image, ds_descricao, fl_tipo, dt_criacao, id_usuario_criacao, id) VALUES ('Alterar Comissão em Lote', 'comercializacao', 'taxa', 'alterarcomissaolote', '', 1997, '', 'Alterar Comissão em Lote', 'M', '2022-07-04 16:56:44', 3379, nextval('sistema.acao_id_seq'::regclass));

CREATE TABLE log.log_alteracoes_comissao_lote (
    id SERIAL,
    id_taxa_agrupamento INTEGER NOT NULL,
    vl_comissao_anterior NUMERIC(12, 2) NOT NULL,
    vl_comissao_novo NUMERIC(12, 2) NULL,
    CONSTRAINT pk_log_alteracoes_comissao_lote PRIMARY KEY (id),
    CONSTRAINT fk_log_alteracoes_comissao_lote_taxas_agrupamento FOREIGN KEY (id_taxa_agrupamento) REFERENCES comercializacao.taxas_agrupamento (id)
) INHERITS (public.campos_default);
SQL
);

        $queryParent = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'comercializacao' AND ds_controller = 'taxa' AND ds_action='alterarcomissaolote'");
        $rows = $queryParent->fetchAll();
        $idParent = $rows[0]['id'];

        $this->execute(<<<SQL
INSERT INTO sistema.usuarios_acao (id_usuario, id_acao) VALUES(2881, $idParent);
INSERT INTO sistema.usuarios_acao (id_usuario, id_acao) VALUES(1032, $idParent);
INSERT INTO sistema.usuarios_acao (id_usuario, id_acao) VALUES(1033, $idParent);
INSERT INTO sistema.usuarios_acao (id_usuario, id_acao) VALUES(3645, $idParent);
SQL
        );
    }

    public function down(): void
    {
        $queryParent = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'comercializacao' AND ds_controller = 'taxa' AND ds_action='alterarcomissaolote'");
        $rows = $queryParent->fetchAll();
        $idParent = $rows[0]['id'];

        $this->execute(<<<SQL
DELETE FROM sistema.usuarios_acao WHERE id_acao = $idParent;
DELETE FROM sistema.acao WHERE ds_module = 'comercializacao' AND ds_controller = 'taxa' AND ds_action = 'alterarcomissaolote';
DROP TABLE log.log_alteracoes_comissao_lote;
SQL
);
    }
}
