<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSr59635 extends AbstractMigration
{
    private function getIdCadastrarEnderecoBeneficiario()
    {
        $queryParent = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'seguro' AND ds_controller = 'propostaajax' AND ds_action = 'cadastrarenderecobeneficiario'");
        $rows = $queryParent->fetchAll();

        return $rows[0]['id'];
    }  

    private function getIdEnderecoBeneficiario(){
        $queryParent = $this->query("SELECT id FROM sistema.acao WHERE ds_module = 'seguro' AND ds_controller = 'beneficiario' AND ds_action = 'enderecobeneficiario'");
        $rows = $queryParent->fetchAll();

        return $rows[0]['id'];
    }
    public function up(): void
    {
        $this->execute(<<<SQL
            create domain logradouro as varchar(111)
        SQL);
        $this->execute(<<<SQL
            alter table seguro.beneficiarios add column ds_endereco_cep cep, add column id_municipio integer, add column ds_endereco_bairro endereco_bairro, add column ds_endereco_logradouro logradouro, add column ds_endereco_nro endereco_nro, add column ds_endereco_complem endereco_comp, add column ds_tel telefone, add column ds_email email, add column id_estado integer
        SQL);
        $this->execute(<<<SQL
            insert into sistema.acao (fl_ativo, fl_del, ds_label, ds_module,ds_controller, ds_action, id_parent, ds_descricao,fl_tipo) values ('t','f','cadastro endereco beneficiario','seguro','propostaajax', 'cadastrarenderecobeneficiario', 1009, 'cadastro de endereco do beneficiario','A');
        SQL);
        $this->execute(<<<SQL
            insert into sistema.acao (ds_label, ds_module, ds_controller, ds_action, id_parent, ds_descricao,fl_tipo) values ('enderecobeneficiario', 'seguro', 'beneficiario', 'enderecobeneficiario', 1009, 'popup de config de endereço do beneficiário', 'A');
        SQL);
        $idCadastrarEnderecoBeneficiario = $this->getIdCadastrarEnderecoBeneficiario();
        $idEnderecoBeneficiario = $this->getIdEnderecoBeneficiario();
        $this->execute(<<<SQL
            insert into sistema.roles_acao (fl_ativo, fl_del, id_role, id_acao) values ('t', 'f', 16, $idCadastrarEnderecoBeneficiario);
        SQL);
        $this->execute(<<<SQL
            insert into sistema.roles_acao (fl_ativo, fl_del, id_role, id_acao) values ('t', 'f', 6, $idCadastrarEnderecoBeneficiario);
        SQL);
        $this->execute(<<<SQL
            insert into sistema.roles_acao (fl_ativo, fl_del, id_role, id_acao) values ('t', 'f', 16, $idEnderecoBeneficiario);
        SQL);
        $this->execute(<<<SQL
            insert into sistema.roles_acao (fl_ativo, fl_del, id_role, id_acao) values ('t', 'f', 6, $idEnderecoBeneficiario);
        SQL);
        $this->execute(<<<SQL
            insert into sistema.roles_acao (fl_ativo, fl_del, id_role, id_acao) values ('t', 'f', 12, $idEnderecoBeneficiario);
        SQL);
        $this->execute(<<<SQL
            insert into sistema.roles_acao (fl_ativo, fl_del, id_role, id_acao) values ('t', 'f', 12, $idCadastrarEnderecoBeneficiario);
        SQL);


    }

    public function down(): void
    {
        $this->execute(<<<SQL
            ALTER TABLE seguro.beneficiarios
            DROP COLUMN ds_endereco_cep,
            DROP COLUMN id_municipio,
            DROP COLUMN ds_endereco_bairro,
            DROP COLUMN ds_endereco_logradouro,
            DROP COLUMN ds_endereco_nro,
            DROP COLUMN ds_endereco_complem,
            DROP COLUMN ds_tel;
        SQL);
        $this->execute(<<<SQL
            DELETE FROM sistema.acao
            WHERE ds_module = 'seguro'
            AND ds_controller = 'propostaajax'
            AND ds_action = 'cadastrarenderecobeneficiario';
        SQL);
        $this->execute(<<<SQL
            DELETE FROM sistema.acao
            WHERE ds_module = 'seguro'
            AND ds_controller = 'beneficiario'
            AND ds_action = 'enderecobeneficiario'
            AND id_parent = 125;
        SQL);
    }
}
