<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2212021414 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL

            INSERT INTO atendimento.tipo_chamado (ds_tipo_chamado, ds_chave, id_departamento, fl_destinatario_corretor, fl_destinatario_empresa_vistoria, fl_destinatario_seguradora)
                 VALUES ('Pendência de vistoria', 'PENDENCIA_VISTORIA', 23, 'f', 't', 'f');

            INSERT INTO sistema.tipo_status (ds_tipo_status, ds_chave) 
                 VALUES ('Arquivos pendentes regulação e laudos.', 'ARQUIVOS_PENDENTES_REGULACAO_LAUDOS');

            INSERT INTO sistema.status (ds_status, cd_status, ds_chave, id_tipo_status)
                 VALUES ('Não analisado', 1, 'NAO_ANALISADO', (SELECT id FROM sistema.tipo_status WHERE ds_chave = 'ARQUIVOS_PENDENTES_REGULACAO_LAUDOS')),
                        ('Pendente', 2, 'PENDENTE', (SELECT id FROM sistema.tipo_status WHERE ds_chave = 'ARQUIVOS_PENDENTES_REGULACAO_LAUDOS')),
                        ('Análise concluída', 3, 'ANALISE_CONCLUIDA', (SELECT id FROM sistema.tipo_status WHERE ds_chave = 'ARQUIVOS_PENDENTES_REGULACAO_LAUDOS'));

            CREATE TABLE sinistro.processos_arquivos_pendencias (
                id SERIAL NOT NULL,
                id_processo INTEGER NOT NULL,
                id_status INTEGER NOT NULL,
                id_empresa INTEGER NOT NULL,
                ds_nome_arquivo VARCHAR NOT NULL,
                nr_tipo INTEGER NOT NULL,
                nr_item_segurado INTEGER,
                CONSTRAINT pk_processos_arquivos_pendencias PRIMARY KEY (id),
                CONSTRAINT fk_processos_arquivos_pendencias_processo FOREIGN KEY (id_processo) REFERENCES sinistro.processos (id),
                CONSTRAINT fk_processos_arquivos_pendencias_status FOREIGN KEY (id_status) REFERENCES sistema.status (id),
                CONSTRAINT fk_processos_arquivos_pendencias_empresa FOREIGN KEY (id_empresa) REFERENCES sistema.empresas (id)
            ) INHERITS (public.campos_default);

            ALTER TABLE sinistro.processos_observacoes_arquivos ADD COLUMN ds_nome_arquivo VARCHAR;

            INSERT INTO sistema.acao (id_usuario_criacao, dt_criacao, ds_label, ds_module, ds_controller, ds_action, ds_param, id_parent, ds_descricao, fl_tipo)
                VALUES(3491, now(), 'Relatório para Conferência de Documentos da Liquidação', 'relatorio', 'sinistro', 'conferenciadocumentos', 'formsafra', 332, 'Relatório para Conferência de Documentos da Liquidação', 'R');

            INSERT INTO sistema.roles_acao (id_usuario_criacao, dt_criacao, id_role, id_acao)
                VALUES (3491, now(), 16, (SELECT id FROM sistema.acao WHERE ds_label = 'Relatório para Conferência de Documentos da Liquidação' AND ds_module = 'relatorio' AND ds_controller = 'sinistro' AND ds_action = 'conferenciadocumentos'));
            
            ALTER TABLE sinistro.processos ADD COLUMN fl_arquivos_regulacao_conferidos boolean DEFAULT false;
SQL
        );
    }

    public function down(): void
    {
        $this->execute(<<<SQL

            ALTER TABLE sinistro.processos DROP COLUMN fl_arquivos_regulacao_conferidos;
            DELETE FROM sistema.roles_acao WHERE id_role = 16 AND id_usuario_criacao = 3491 AND id_acao = (SELECT id FROM sistema.acao WHERE ds_label = 'Relatório para Conferência de Documentos da Liquidação' AND ds_module = 'relatorio' AND ds_controller = 'sinistro' AND ds_action = 'conferenciadocumentos');
            DELETE FROM sistema.acao WHERE ds_label = 'Relatório para Conferência de Documentos da Liquidação' AND ds_module = 'relatorio' AND ds_controller = 'sinistro' AND ds_action = 'conferenciadocumentos';
            ALTER TABLE sinistro.processos_observacoes_arquivos DROP COLUMN ds_nome_arquivo;
            DROP TABLE sinistro.processos_arquivos_pendencias;
            DELETE FROM sistema.status WHERE id_tipo_status = (SELECT id FROM sistema.tipo_status WHERE ds_chave = 'ARQUIVOS_PENDENTES_REGULACAO_LAUDOS');
            DELETE FROM sistema.tipo_status WHERE ds_chave = 'ARQUIVOS_PENDENTES_REGULACAO_LAUDOS';
            DELETE FROM atendimento.tipo_chamado WHERE ds_chave = 'PENDENCIA_VISTORIA';

SQL
        );
    }
}
