<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSR56714 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 ('Excluir Taxas Estado - Checkbox', 'comercializacao', 'taxaestado', 'excluirtaxascheckbox', '', 59, '', 'Habilita o checkbox para cada registro e o botão para exclusão de várias taxas de uma vez.', 'A', '2025-06-30 08:58:34', 3379, nextval('sistema.acao_id_seq'::regclass));
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 ('Excluir Taxas Município - Checkbox', 'comercializacao', 'taxamunicipio', 'excluirtaxascheckbox', '', 60, '', 'Habilita o checkbox para cada registro e o botão para exclusão de várias taxas de uma vez.', 'A', '2025-06-30 09:00:21', 3379, nextval('sistema.acao_id_seq'::regclass));
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 ('Excluir Taxas Orçamento - Checkbox', 'comercializacao', 'taxaorcamento', 'excluirtaxascheckbox', '', 1961, '', 'Habilita o checkbox para cada registro e o botão para exclusão de várias taxas de uma vez.', 'A', '2025-06-30 09:02:18', 3379, nextval('sistema.acao_id_seq'::regclass));
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 ('Excluir Taxas Proponente - Checkbox', 'comercializacao', 'taxaproponente', 'excluirtaxascheckbox', '', 309, '', 'Habilita o checkbox para cada registro e o botão para exclusão de várias taxas de uma vez.', 'A', '2025-06-30 09:10:15', 3379, nextval('sistema.acao_id_seq'::regclass));
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 ('Excluir Taxas Propriedades - Checkbox', 'comercializacao', 'taxacar', 'excluirtaxascheckbox', '', 2068, '', 'Habilita o checkbox para cada registro e o botão para exclusão de várias taxas de uma vez.', 'A', '2025-06-30 09:13:43', 3379, nextval('sistema.acao_id_seq'::regclass));
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 ('Excluir Taxas Usuário - Checkbox', 'comercializacao', 'taxausuario', 'excluirtaxascheckbox', '', 61, '', 'Habilita o checkbox para cada registro e o botão para exclusão de várias taxas de uma vez.', 'A', '2025-06-30 09:17:09', 3379, nextval('sistema.acao_id_seq'::regclass));
SQL
        );

        $rows = $this->getIdsAcoesExcluir();

        foreach ($rows as $row) {
            $this->execute(<<<SQL
INSERT INTO sistema.usuarios_acao (id_usuario, id_acao)
                           VALUES (1033, {$row['id']}),
                                  (3645, {$row['id']}),
                                  (2881, {$row['id']}),
                                  (1032, {$row['id']}),
                                  (3674, {$row['id']}),
                                  (3660, {$row['id']});
SQL
            );
        }
    }

    public function down(): void
    {
        $rows = $this->getIdsAcoesExcluir();

        foreach ($rows as $row) {
            $this->execute(<<<SQL
DELETE FROM sistema.usuarios_acao WHERE id_acao = {$row['id']};
DELETE FROM sistema.acao WHERE id = {$row['id']};
SQL
            );
        }
    }

    private function getIdsAcoesExcluir()
    {
        $query = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'comercializacao' AND ds_action = 'excluirtaxascheckbox'");

        return $query->fetchAll();
    }
}
