<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskReservasV3 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
CREATE MATERIALIZED VIEW sumario.relatorio_sinistralidade_itens_segurados AS (
 SELECT lf.id,
    lfis.id AS id_laudo_final_item_segurado,
    lfis.vl_percent_perdas,
    lfis.dt_vistoria,
    lfis.dt_criacao,
    lfis.vl_percent_colhido,
    lfis.vl_area_sinistrada,
    lfis.vl_percent_area_afetada,
    lfis.vl_rendimento_final_lavoura,
    lfis.vl_percent_perdas_chocho,
    lfis.vl_percent_colhido_chocho,
    lfis.id_motivo_quadra_nao_vistoriada,
    co.ds_nome_cobertura,
        CASE
            WHEN lf003.vl_graos_podres IS NOT NULL THEN lf003.vl_graos_podres
            ELSE lf034.vl_graos_podres
        END AS vl_graos_podres,
        CASE
            WHEN lf003.vl_graos_brotados IS NOT NULL THEN lf003.vl_graos_brotados
            ELSE lf034.vl_graos_brotados
        END AS vl_graos_brotados,
        CASE
            WHEN lf003.vl_pragas_doencas_outros IS NOT NULL THEN lf003.vl_pragas_doencas_outros
            ELSE lf034.vl_pragas_doencas_outros
        END AS vl_pragas_doencas_outros,
    its.nr_item_segurado,
    pr.id_endosso,
    pd.id_safra
   FROM sinistro.laudos_finais lf
     JOIN sinistro.laudos_finais_itens_segurados lfis ON lfis.id_laudo_final = lf.id
     JOIN seguro.itens_segurados its ON its.id = lfis.id_item_segurado
     JOIN produto.coberturas co ON co.id = lf.id_cobertura
     JOIN seguro.propostas pr ON pr.id = its.id_proposta
     JOIN produto.produtos pd ON pd.id = pr.id_produto
     LEFT JOIN regulacao.lf003_itens_segurados lf003 ON lf003.id_laudo_final_item_segurado = lfis.id
     LEFT JOIN regulacao.lf034_itens_segurados lf034 ON lf034.id_laudo_final_item_segurado = lfis.id
);
SQL
        );
    }

    public function down(): void {
        $this->execute('DROP MATERIALIZED VIEW sumario.relatorio_sinistralidade_itens_segurados');
    }
}
