<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2210191352 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
INSERT INTO sistema.aviso_tela_inicial (fl_ativo, ds_descricao, vl_largura, vl_altura, ds_arquivo, ds_posicao, dt_inicio, dt_termino) VALUES (false, 'Atualização Cadastral Vistoriador', 600, 214, 'temp', 'C', current_date, current_date + 30);
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 ('Redirecionamento Cadastro', 'sistema', 'vistoriadoresauxiliares', 'redirecionamentocadastro', '', 2010, '', 'Redirecionamento Cadastro', 'A', '2023-03-30 10:48:48', 3379, nextval('sistema.acao_id_seq'::regclass));
INSERT INTO sistema.roles (ds_nome_role, id_parent, ds_chave) VALUES ('Auxiliar de Campo', 12, 'AUXILIAR_CAMPO');
SQL
);
        $queryRole = $this->query("SELECT id FROM sistema.roles WHERE ds_chave = 'AUXILIAR_CAMPO'");
        $rows = $queryRole->fetchAll();
        $idRole = $rows[0]['id'];

        $this->execute(<<<SQL
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES ({$idRole}, 3);
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES ({$idRole}, 4);
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES ({$idRole}, 2012);
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES ({$idRole}, 2015);
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES ({$idRole}, 2016);
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES ({$idRole}, 2014);

UPDATE sistema.usuarios SET id_role = {$idRole} WHERE tp_usuario = 'H' AND id_role = 34;
SQL
        );

        $queryAcao = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'sistema' AND ds_controller = 'vistoriadoresauxiliares' AND ds_action = 'redirecionamentocadastro'");
        $rows = $queryAcao->fetchAll();
        $idAcao = $rows[0]['id'];

        $this->execute(<<<SQL
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES (18, {$idAcao});
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES (30, {$idAcao});
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES (34, {$idAcao});
INSERT INTO sistema.roles_acao (id_role, id_acao) VALUES ({$idRole}, {$idAcao});
SQL
        );
    }

    public function down(): void
    {
        $queryAcao = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'sistema' AND ds_controller = 'vistoriadoresauxiliares' AND ds_action = 'redirecionamentocadastro'");
        $rows = $queryAcao->fetchAll();
        $idAcao = $rows[0]['id'];

        $queryRole = $this->query("SELECT id FROM sistema.roles WHERE ds_chave = 'AUXILIAR_CAMPO'");
        $rows = $queryRole->fetchAll();
        $idRole = $rows[0]['id'];

        $this->execute(<<<SQL
UPDATE sistema.usuarios SET id_role = 34 WHERE tp_usuario = 'H' AND id_role = {$idRole};
DELETE FROM sistema.roles_acao WHERE id_acao = {$idAcao};
DELETE FROM sistema.acao WHERE id = {$idAcao};
DELETE FROM sistema.aviso_tela_inicial WHERE ds_descricao = 'Atualização Cadastral Vistoriador';
DELETE FROM sistema.roles_acao WHERE id_role = {$idRole};
DELETE FROM sistema.roles WHERE id = {$idRole};
SQL
);
    }
}
