<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSR57441 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 Laudo Manual', 'seguro', 'vistoriapreviaempresa', 'alterarlaudomanual', '', 571, '', 'Liberação da ação de Alterar Laudo na gerência de vistorias previas.', 'A', '2025-07-17 13:52:15', 3379, nextval('sistema.acao_id_seq'::regclass));
SQL
        );

        $id = $this->idAcaoAlterarLaudoManual();

        $this->execute(<<<SQL
INSERT INTO sistema.usuarios_acao (id_usuario, id_acao)
                           VALUES (1032, {$id})
                                 ,(1968, {$id})
                                 ,(1039, {$id})
                                 ,(1033, {$id})
                                 ,(4908, {$id})
                                 ,(1968, 1891)
                                 ,(1039, 1891)
                                 ,(1033, 1891)
                                 ,(4908, 1891)
                                 ,(1968, 1134)
                                 ,(1039, 1134)
                                 ,(1033, 1134)
                                 ,(4908, 1134);
SQL
        );
    }

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

        $this->execute(<<<SQL
DELETE FROM sistema.usuarios_acao WHERE id_acao = {$id};
DELETE FROM sistema.usuarios_acao WHERE id_acao = 1891 AND id_usuario in(1032, 1968, 1039, 1033, 4908);
DELETE FROM sistema.usuarios_acao WHERE id_acao = 1134 AND id_usuario in(1032, 1968, 1039, 1033, 4908);
DELETE FROM sistema.acao WHERE id = {$id};
SQL
        );
    }

    private function idAcaoAlterarLaudoManual()
    {
        $queryParent = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'seguro' AND ds_controller = 'vistoriapreviaempresa' AND ds_action = 'alterarlaudomanual'");
        $rows = $queryParent->fetchAll();
        return $rows[0]['id'];
    }
}
