<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2401041627 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 Subscrição', 'relatorio', 'tecnica', 'subscricao', 'formsubscricao', 709, '', 'Relatório de Subscrição', 'R', '2024-01-08 13:55:06', 3379, nextval('sistema.acao_id_seq'::regclass));
SQL
);
        $idRelatorio = $this->getIdRelatorio();

        $this->execute(<<<SQL
INSERT INTO sistema.roles_acao (id_role, id_acao)
                        VALUES (20, {$idRelatorio})
                              ,(12, {$idRelatorio})
                              ,(16, {$idRelatorio})
                              ,(19, {$idRelatorio})
                              ,(4, {$idRelatorio});
SQL
        );
    }

    public function down(): void
    {
        $idRelatorio = $this->getIdRelatorio();

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

    private function getIdRelatorio()
    {
        $row = $this->fetchRow("SELECT id FROM sistema.acao WHERE ds_module = 'relatorio' AND ds_controller = 'tecnica' AND ds_action = 'subscricao'");

        return $row['id'];
    }
}
