<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2012181700 extends AbstractMigration
{
    public function up(): void
    {
        $this->upMenu();
        $this->upNovaTabela();
    }

    public function down(): void
    {
        $this->downMenu();
        $this->downNovaTabela();
    }

    private function upMenu()
    {
        $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 ('Cadastro Anual de Corretores', 'sistema', 'corretorperiodocadastro', 'index', '', 1269, '', 'Cadastro Anual de Corretores', 'M', '2021-01-14 15:50:47', 3379, nextval('sistema.acao_id_seq'::regclass));
SQL
        );
    }

    private function downMenu()
    {
        $this->execute(<<<SQL
delete from sistema.acao where ds_label = 'Cadastro Anual de Corretores' and ds_module = 'sistema' and ds_controller = 'corretorperiodocadastro';
SQL
        );
    }

    private function upNovaTabela()
    {
        $this->execute(<<<SQL
        create table sistema.corretores_periodo_cadastro_anual(
          id SERIAL,
          id_corretor int not null,
          dt_inicio date,
          dt_fim date,
          fl_cadastro_inalterado boolean default false,
          CONSTRAINT pk_corretores_periodo_cadastro_anual PRIMARY KEY(id),
          CONSTRAINT fk_corretores FOREIGN KEY(id_corretor) REFERENCES sistema.corretores(id)
        ) INHERITS (public.campos_default);
SQL
        );
    }

    private function downNovaTabela()
    {
        $this->execute(<<<SQL
        drop table sistema.corretores_periodo_cadastro_anual;
SQL
        );
    }
}
