<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2301261947 extends AbstractMigration
{
    public function up() : void {
        $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, 
id_usuario_criacao, 
id
) VALUES (
'Importar Proponentes do Programa ABC', 
'seguro', 
'rotinas', 
'programaabc', 
'', 
717, 
'', 
'Importar Proponentes do Programa ABC', 
'M', 
2068, 
nextval('sistema.acao_id_seq'::regclass));

INSERT INTO sistema.acao (
ds_label, 
ds_module, 
ds_controller, 
ds_action, 
ds_param, 
id_parent, 
ds_image, 
ds_descricao, 
fl_tipo, 
id_usuario_criacao, 
id
) VALUES (
'Importar Proponentes do Programa ABC', 
'seguro', 
'rotinas', 
'importarabc', 
'', 
2011, 
'', 
'', 
'A', 
1008, 
nextval('sistema.acao_id_seq'::regclass));

CREATE TABLE IF NOT EXISTS seguro.proponentes_abc (
id serial,
cpf_cnpj cpf NOT NULL,
CONSTRAINT pk_proponente_abc PRIMARY KEY (id),
CONSTRAINT uk_proponente_abc UNIQUE (cpf_cnpj)
)
INHERITS (public.campos_default);

INSERT INTO produto.atributos_rn (
id_usuario_criacao,
id_atributo_modulo,
ds_chave_rn,
ds_descricao_atributo,
id_tipo_atributo,
id_parent,
fl_required,
fl_atendimento
) VALUES (
2068,
1,
'PROD_PERCENT_SUBVENCAO_FEDERAL_NORTE_NORDESTE',
'Percentual da SubvenþÒo Federal Norte e Nordeste',
6,
0,
true,
false
);

INSERT INTO produto.atributos_rn (
id_usuario_criacao,
id_atributo_modulo,
ds_chave_rn,
ds_descricao_atributo,
id_tipo_atributo,
id_parent,
fl_required,
fl_atendimento
) VALUES (
2068,
1,
'PROD_PERCENT_SUBVENCAO_FEDERAL_ABC',
'Percentual da SubvenþÒo Federal ABC',
6,
0,
true,
false
);

INSERT INTO produto.produtos_atributos_rn (
id_usuario_criacao,
id_atributo_rn,
ds_valor,
id_grupo_atributo_rn
) SELECT 2068
,( SELECT id FROM produto.atributos_rn WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_NORTE_NORDESTE') AS id_atributo_rn
,30 as valor
,produtos_grupos_atributos_rn.id
FROM produto.produtos_grupos_atributos_rn
JOIN produto.produtos 
ON produto.produtos_grupos_atributos_rn.id_produto = produtos.id 
JOIN produto.produtos_geral 
ON produtos.id_produto_geral = produtos_geral.id 
WHERE produtos_geral.id_cultura = 72
AND produtos.id_safra = (SELECT id FROM produto.safras WHERE fl_vigente = true);

INSERT INTO produto.produtos_atributos_rn (
id_usuario_criacao,
id_atributo_rn,
ds_valor,
id_grupo_atributo_rn
) SELECT 2068
,( SELECT id FROM produto.atributos_rn WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_NORTE_NORDESTE') AS id_atributo_rn
,45 as valor
,produtos_grupos_atributos_rn.id
FROM produto.produtos_grupos_atributos_rn
JOIN produto.produtos 
ON produto.produtos_grupos_atributos_rn.id_produto = produtos.id 
JOIN produto.produtos_geral 
ON produtos.id_produto_geral = produtos_geral.id 
WHERE produtos_geral.id_cultura <> 72
AND produtos.id_safra = (SELECT id FROM produto.safras WHERE fl_vigente = true);

INSERT INTO produto.produtos_atributos_rn (
id_usuario_criacao,
id_atributo_rn,
ds_valor,
id_grupo_atributo_rn
) SELECT 2068
,( SELECT id FROM produto.atributos_rn WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_ABC') AS id_atributo_rn
,25 as valor
,produtos_grupos_atributos_rn.id
FROM produto.produtos_grupos_atributos_rn
JOIN produto.produtos 
ON produto.produtos_grupos_atributos_rn.id_produto = produtos.id 
JOIN produto.produtos_geral 
ON produtos.id_produto_geral = produtos_geral.id 
WHERE produtos_geral.id_cultura = 72
AND produtos.id_safra = (SELECT id FROM produto.safras WHERE fl_vigente = true);

INSERT INTO produto.produtos_atributos_rn (
id_usuario_criacao,
id_atributo_rn,
ds_valor,
id_grupo_atributo_rn
) SELECT 2068
,( SELECT id FROM produto.atributos_rn WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_ABC') AS id_atributo_rn
,45 as valor
,produtos_grupos_atributos_rn.id
FROM produto.produtos_grupos_atributos_rn
JOIN produto.produtos 
ON produto.produtos_grupos_atributos_rn.id_produto = produtos.id 
JOIN produto.produtos_geral 
ON produtos.id_produto_geral = produtos_geral.id 
WHERE produtos_geral.id_cultura <> 72
AND produtos.id_safra = (SELECT id FROM produto.safras WHERE fl_vigente = true);
SQL
);
    }

    public function down() : void {
        $this->execute(<<<SQL
DELETE FROM sistema.acao 
WHERE ds_action = 'programaabc' 
AND ds_controller = 'rotinas' 
AND ds_module = 'seguro';

DELETE FROM sistema.acao 
WHERE ds_action = 'importarabc' 
AND ds_controller = 'rotinas' 
AND ds_module = 'seguro';

DROP TABLE seguro.proponentes_abc;

DELETE FROM produto.produtos_atributos_rn WHERE 
id_atributo_rn = ( 
SELECT id FROM produto.atributos_rn 
WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_ABC')::INTEGER
);

DELETE FROM produto.produtos_atributos_rn WHERE 
id_atributo_rn = ( 
SELECT id FROM produto.atributos_rn 
WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_ABC')::INTEGER
);            

DELETE FROM produto.atributos_rn 
WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_NORTE_NORDESTE';

DELETE FROM produto.atributos_rn 
WHERE ds_chave_rn = 'PROD_PERCENT_SUBVENCAO_FEDERAL_ABC';
SQL
);
    }
}