<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskSR58817 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
ALTER TABLE seguro.itens_segurados ADD COLUMN fl_importado_previa BOOLEAN DEFAULT false;

DROP VIEW seguro.v_unidades_seguradas;
CREATE OR REPLACE VIEW seguro.v_unidades_seguradas AS
SELECT i.id,
       to_char(ic.dt_final_colheita::timestamp with time zone, 'DD/MM/YYYY'::text)  AS is_dt_final_colheita,
       to_char(ic.dt_inicio_colheita::timestamp with time zone, 'DD/MM/YYYY'::text) AS is_dt_inicio_colheita,
       i.id_proposta,
       i.vl_area                                                                    AS is_area,
       i.nr_item_segurado                                                           AS is_item,
       i.ds_item_segurado                                                           AS is_descricao_item,
       i.vl_idade                                                                   AS is_idade,
       i.ds_espacamento                                                             AS is_espacamento_simples,
       i.nr_plantas                                                                 AS is_nro_plantas,
       i.vl_producao_planta                                                         AS is_producao_planta,
       i.vl_valor_tonelada                                                          AS is_valor_tonelada,
       i.vl_valor_custeio                                                           AS is_valor_custeio,
       i.vl_rendimento_tonelada                                                     AS is_produtividade,
       i.vl_lmga                                                                    AS is_lmga_parcial,
       v.ds_nome_variedade                                                          AS is_nome_variedades,
       v.id                                                                         AS is_variedades,
       pe.ds_nome_portaenxerto                                                      AS is_nome_portaenxerto,
       pe.id                                                                        AS is_portaenxerto,
       ic.id_ciclo                                                                  AS is_ciclo_variedade,
       ic.ds_tipo_conducao                                                          AS is_tipo_conducao,
       to_char(ic.dt_plantio::timestamp with time zone, 'dd/mm/yyyy'::text)         AS is_data_plantio_transplante,
       to_char(ic.dt_semeadura::timestamp with time zone, 'dd/mm/yyyy'::text)       AS is_data_semeadura,
       to_char(ic.dt_poda::timestamp with time zone, 'dd/mm/yyyy'::text)            AS is_data_poda,
       ic.nr_plantas_metro_linear                                                   AS is_nro_plantas_m_linear,
       ic.vl_producao_minima                                                        AS is_producao_minima,
       ic.vl_lmi_pos_granizo                                                        AS is_lmi_pos_granizo,
       ic.vl_producao_garantida                                                     AS is_producao_garantida,
       ic.vl_idade_tela                                                             AS is_idade_tela,
       ic.ds_local                                                                  AS is_local,
       ic.ds_coordenadas_geograficas                                                AS is_coordenadas_geograficas,
       ic.ds_primeiro_ano_plantio                                                   AS is_primeiro_ano_plantio,
       ic.vl_altitude                                                               AS is_altitude,
       ic.id_tipo_solo                                                              AS is_tipo_solo,
       CASE
           WHEN ic.id_sistema_plantio = 1 THEN 'Direto'::text
           WHEN ic.id_sistema_plantio = 2 THEN 'Convencional'::text
           WHEN ic.id_sistema_plantio = 3 THEN 'A Lanço'::text
           ELSE NULL::text
           END                                                                      AS is_sistema_plantio,
       ic.id_sistema_plantio                                                        AS is_id_sistema_plantio,
       cic.ds_nome_ciclo                                                            AS is_ciclo,
       v.cd_variedade_seguradora,
       cic.cd_ciclo_seguradora,
       ic.ds_paf                                                                    AS is_pequena_area_forrageira
       , i.fl_importado_previa
FROM seguro.itens_segurados i
         JOIN produto.variedades v ON i.id_variedade = v.id
         JOIN seguro.itens_segurados_complemento ic ON i.id = ic.id_item_segurado
         JOIN produto.ciclos cic ON ic.id_ciclo = cic.id
         LEFT JOIN produto.portaenxertos pe ON ic.id_portaenxerto = pe.id
ORDER BY i.nr_item_segurado;
SQL
        );
    }

    public function down(): void
    {
        $this->execute(<<<SQL
DROP VIEW seguro.v_unidades_seguradas;

CREATE OR REPLACE VIEW seguro.v_unidades_seguradas AS
SELECT i.id,
       to_char(ic.dt_final_colheita::timestamp with time zone, 'DD/MM/YYYY'::text)  AS is_dt_final_colheita,
       to_char(ic.dt_inicio_colheita::timestamp with time zone, 'DD/MM/YYYY'::text) AS is_dt_inicio_colheita,
       i.id_proposta,
       i.vl_area                                                                    AS is_area,
       i.nr_item_segurado                                                           AS is_item,
       i.ds_item_segurado                                                           AS is_descricao_item,
       i.vl_idade                                                                   AS is_idade,
       i.ds_espacamento                                                             AS is_espacamento_simples,
       i.nr_plantas                                                                 AS is_nro_plantas,
       i.vl_producao_planta                                                         AS is_producao_planta,
       i.vl_valor_tonelada                                                          AS is_valor_tonelada,
       i.vl_valor_custeio                                                           AS is_valor_custeio,
       i.vl_rendimento_tonelada                                                     AS is_produtividade,
       i.vl_lmga                                                                    AS is_lmga_parcial,
       v.ds_nome_variedade                                                          AS is_nome_variedades,
       v.id                                                                         AS is_variedades,
       pe.ds_nome_portaenxerto                                                      AS is_nome_portaenxerto,
       pe.id                                                                        AS is_portaenxerto,
       ic.id_ciclo                                                                  AS is_ciclo_variedade,
       ic.ds_tipo_conducao                                                          AS is_tipo_conducao,
       to_char(ic.dt_plantio::timestamp with time zone, 'dd/mm/yyyy'::text)         AS is_data_plantio_transplante,
       to_char(ic.dt_semeadura::timestamp with time zone, 'dd/mm/yyyy'::text)       AS is_data_semeadura,
       to_char(ic.dt_poda::timestamp with time zone, 'dd/mm/yyyy'::text)            AS is_data_poda,
       ic.nr_plantas_metro_linear                                                   AS is_nro_plantas_m_linear,
       ic.vl_producao_minima                                                        AS is_producao_minima,
       ic.vl_lmi_pos_granizo                                                        AS is_lmi_pos_granizo,
       ic.vl_producao_garantida                                                     AS is_producao_garantida,
       ic.vl_idade_tela                                                             AS is_idade_tela,
       ic.ds_local                                                                  AS is_local,
       ic.ds_coordenadas_geograficas                                                AS is_coordenadas_geograficas,
       ic.ds_primeiro_ano_plantio                                                   AS is_primeiro_ano_plantio,
       ic.vl_altitude                                                               AS is_altitude,
       ic.id_tipo_solo                                                              AS is_tipo_solo,
       CASE
           WHEN ic.id_sistema_plantio = 1 THEN 'Direto'::text
           WHEN ic.id_sistema_plantio = 2 THEN 'Convencional'::text
           WHEN ic.id_sistema_plantio = 3 THEN 'A Lanço'::text
           ELSE NULL::text
           END                                                                      AS is_sistema_plantio,
       ic.id_sistema_plantio                                                        AS is_id_sistema_plantio,
       cic.ds_nome_ciclo                                                            AS is_ciclo,
       v.cd_variedade_seguradora,
       cic.cd_ciclo_seguradora,
       ic.ds_paf                                                                    AS is_pequena_area_forrageira
FROM seguro.itens_segurados i
         JOIN produto.variedades v ON i.id_variedade = v.id
         JOIN seguro.itens_segurados_complemento ic ON i.id = ic.id_item_segurado
         JOIN produto.ciclos cic ON ic.id_ciclo = cic.id
         LEFT JOIN produto.portaenxertos pe ON ic.id_portaenxerto = pe.id
ORDER BY i.nr_item_segurado;

ALTER TABLE seguro.itens_segurados drop COLUMN fl_importado_previa;
SQL
        );
    }
}
