<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2312151328 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
            INSERT INTO sistema.acao (id_usuario_criacao, ds_label, ds_module, ds_controller, ds_action, id_parent, nr_ordem, ds_descricao, fl_tipo, fl_somente_responsavel)
                VALUES (2068, 'Fotos Item/Amostra Laudo Final', 'sinistro2', 'processo', 'fotositemamostrafinal', 1597, 1124, 'Fotos Item/Amostra Laudo final', 'A', false);

            INSERT INTO sistema.roles_acao (id_usuario_criacao, id_role, id_acao, fl_permitido)
                SELECT 
                    2068,
                    sra.id_role,
                    (SELECT last_value FROM sistema.acao_id_seq),
                    sra.fl_permitido
                FROM 
                    sistema.acao sa
                INNER JOIN sistema.roles_acao sra
                    ON sra.id_acao = sa.id
                WHERE
                    sra.fl_ativo IS TRUE
                    AND sa.ds_module = 'sinistro2'
                    AND sa.ds_controller = 'processo'
                    AND sa.ds_action = 'fotosfinal';

            INSERT INTO sistema.usuarios_acao (id_usuario_criacao, id_usuario, id_acao, fl_permitido)
                SELECT 
                    2068,
                    sua.id_usuario,
                    (SELECT last_value FROM sistema.acao_id_seq),
                    sua.fl_permitido
                FROM 
                    sistema.acao sa
                INNER JOIN sistema.usuarios_acao sua
                    ON sua.id_acao = sa.id
                WHERE
                    sua.fl_ativo IS TRUE
                    AND sa.ds_module = 'sinistro2'
                    AND sa.ds_controller = 'processo'
                    AND sa.ds_action = 'fotosfinal';

            INSERT INTO sinistro.tipos_arquivos_laudos_finais (id_usuario_criacao, dt_criacao, id, ds_tipo_arquivo, ds_chave_tipo_arquivo) 
                VALUES (2068, now(), 19, 'Foto da dispensa', 'FOTO_DISPENSA');
            
            SELECT setval('sinistro.tipos_arquivos_laudos_finais_id_seq', 19, true);
SQL
);
    }

    public function down(): void
    {
        $this->execute(<<<SQL
            DELETE FROM sistema.usuarios_acao WHERE id_acao IN (SELECT id FROM sistema.acao WHERE ds_module = 'sinistro2' AND ds_controller = 'processo' AND ds_action = 'fotositemamostrafinal');
            DELETE FROM sistema.roles_acao WHERE id_acao IN (SELECT id FROM sistema.acao WHERE ds_module = 'sinistro2' AND ds_controller = 'processo' AND ds_action = 'fotositemamostrafinal');
            DELETE FROM sistema.acao WHERE ds_module = 'sinistro2' AND ds_controller= 'processo' AND ds_action = 'fotositemamostrafinal';

            DELETE FROM sinistro.tipos_arquivos_laudos_finais WHERE id = 19;
SQL
);
    }
}
