<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSR48843 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 ('Aceitar Propostas', 'seguro', 'rotinas', 'aceitarpropostas', '', 717, '', 'Rotina para receber propostas em lote que devem ser alteradas para o status 6 - Aguardando Emissão.', 'M', '2024-10-24 10:44:22', 3379, nextval('sistema.acao_id_seq'::regclass));
SQL
        );

        $idAcaoAceitarPropostas = $this->getIdAcaoAceitarPropostas();

        $this->execute(<<<SQL
INSERT INTO sistema.roles_acao (id_role, id_acao)
                        VALUES (20, $idAcaoAceitarPropostas),
                               (4, $idAcaoAceitarPropostas);
SQL
        );
    }

    public function down(): void
    {
        $idAcaoAceitarPropostas = $this->getIdAcaoAceitarPropostas();

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

    private function getIdAcaoAceitarPropostas(): int
    {
        $row = $this->fetchRow("SELECT id FROM sistema.acao WHERE ds_module = 'seguro' AND ds_controller = 'rotinas' AND ds_action = 'aceitarpropostas'");

        return (int)$row['id'];
    }
}
