<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2309011406 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 ('Relatório de Seguros Ativos', 'relatorio', 'corretor', 'segurosativos', 'formsafra', 784, '', 'Relatório de Seguros Ativos', 'R', '2023-09-12 10:06:53', 3379, nextval('sistema.acao_id_seq'::regclass));
SQL
        );

        $id = $this->getId();

        $this->execute(<<<SQL
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES (28, 330);
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES (19, 784);
INSERT INTO sistema.roles_acao (id_role, id_acao)
                        VALUES (24, {$id})
                              ,(25, {$id})
                              ,(6, {$id})
                              ,(28, {$id})
                              ,(20, {$id})
                              ,(19, {$id});
SQL
        );
    }

    public function down(): void
    {
        $id = $this->getId();

        $this->execute(<<<SQL
DELETE FROM sistema.roles_acao WHERE id_acao = {$id};
DELETE FROM sistema.acao WHERE id = {$id};
SQL
        );
    }

    private function getId(): int
    {
        $query = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'relatorio' AND ds_controller = 'corretor' AND ds_action = 'segurosativos'");
        $rows = $query->fetchAll();
        return (int)$rows[0]['id'];
    }
}
