<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class TaskINC68058 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
CREATE TABLE sistema.termos_contratacao (
	id SERIAL NOT NULL,
	ds_titulo VARCHAR(120) NOT NULL,
	ds_chave VARCHAR(120) NOT NULL,
	dt_inicio_validade DATE,
	ds_texto TEXT NOT NULL,
	CONSTRAINT pk_termos_contratacao PRIMARY KEY (id)
) INHERITS (public.campos_default);
SQL
        );

        $this->insertInformacoesOrcamento();
        $this->insertLinkCondicoesGerais();
        $this->insertAutorizacaoLgpd();
        $this->insertAutorizacaoLgpdPosNovaLeiSeguro();
        $this->insertDeclaracaoProponente();
        $this->insertDeclaracaoAcordo();
    }

    private function insertInformacoesOrcamento()
    {
        $texto = "Informamos que, nas hipóteses de <b>(I) RECUSA DA PROPOSTA DE SEGURO</b> e <b>(II) ENDOSSOS COM ";
        $texto .= "RESTITUIÇÃO DE PRÊMIO</b>, a <b>ESSOR</b> efetuará a devolução do prêmio mediante crédito na conta ";
        $texto .= "corrente de titularidade do <b>SEGURADO</b>, conforme dados bancários informados no momento da ";
        $texto .= "contratação do seguro. Na falta destes, as informações bancárias serão solicitadas no momento do ";
        $texto .= "pagamento.";
        $texto .= "<br><br>";
        $texto .= "Informamos ainda que <b>(III) PAGAMENTOS DE INDENIZAÇÕES DE SINISTRO</b> somente serão efetuados ";
        $texto .= "mediante crédito na conta corrente de titularidade do <b>SEGURADO</b>, cujos dados serão solicitados ";
        $texto .= "no momento da regulação do respectivo sinistro.";
        $texto .= "<br><br>";
        $texto .= "O <b>SEGURADO</b> deverá informar, por escrito, os dados da conta corrente, ou, se for o caso, que ";
        $texto .= "não é titular de conta corrente, sob pena de ficar constituído em mora se não o fizer. Na falta desta ";
        $texto .= "informação, o processo de regulação/liquidação de sinistro não estará concluído e não se iniciará o ";
        $texto .= "prazo de 30 dias para pagamento da indenização a partir a entrega da documentação solicitada, conforme ";
        $texto .= "previsto nas Condições Gerais do Seguro Agrícola.";
        $texto .= "<br><br>";
        $texto .= "Caso o <b>SEGURADO</b> informe que não é titular de conta corrente, a <b>SEGURADORA</b> efetuará o ";
        $texto .= "pagamento através de ordem de pagamento.";
        $texto .= "<br><br>";
        $texto .= "A ordem de pagamento é uma transferência de valor que fica disponível para o beneficiário retirar em ";
        $texto .= "Banco a ser informado.";
        $texto .= "<br><br>";
        $texto .= "<b>Somente as pessoas que <u>não são</u> titulares de conta corrente podem receber uma ordem de ";
        $texto .= "pagamento.</b>";

        $this->execute(<<<SQL
INSERT INTO sistema.termos_contratacao (ds_titulo, ds_chave, dt_inicio_validade, ds_texto)
                                VALUES ('Informações' , 'INFORMACOES_ORCAMENTO' , '1900-01-01', '{$texto}');
SQL
        );
    }

    private function insertLinkCondicoesGerais()
    {
        $texto = "<b>As Condições Gerais, Especiais, Complementares e Adicionais deste Seguro estão disponíveis no site da Seguradora:";
        $texto .= " <a href=\"https://essor.com.br/condicoes-gerais\" style=\"color:blue;\" target=\"_blank\">";
        $texto .= "https://essor.com.br/condicoes-gerais</a></b>.";

        $this->execute(<<<SQL
INSERT INTO sistema.termos_contratacao (ds_titulo, ds_chave, dt_inicio_validade, ds_texto)
                                VALUES ('Condições Gerais' , 'CONDICOES_GERAIS' , '1900-01-01', '{$texto}');
SQL
        );
    }

    private function insertAutorizacaoLgpd()
    {
        $texto = "Eu me responsabilizo e declaro estar formalmente autorizado e/ou ser o responsável legal, pelo ";
        $texto .= " titular destes dados pessoais a fornecê-los a AgroBrasil e Essor para usarem estes dados, para fins";
        $texto .= " comerciais, jurídicos, financeiros e administrativos, inclusive enviar para empresas terceiras que";
        $texto .= " fazem parte do processo. Esta autorização terá prazo de validade de 15 anos, para garantir que";
        $texto .= " todos os benefícios ofertados possam ser usufruídos.";

        $this->execute(<<<SQL
INSERT INTO sistema.termos_contratacao (ds_titulo, ds_chave, dt_inicio_validade, ds_texto)
                                VALUES ('Autorização LGPD' , 'AUTORIZACAO_LGPD' , '1900-01-01', '{$texto}');
SQL
        );
    }

    private function insertAutorizacaoLgpdPosNovaLeiSeguro()
    {
        $texto = "Eu me responsabilizo e declaro estar formalmente autorizado e/ou ser o responsável legal, pelo";
        $texto .= " titular destes dados pessoais a fornecê-los a Essor.";

        $this->execute(<<<SQL
INSERT INTO sistema.termos_contratacao (ds_titulo, ds_chave, dt_inicio_validade, ds_texto)
                                VALUES ('Autorização LGPD' , 'AUTORIZACAO_LGPD' , '2025-12-10', '{$texto}');
SQL
        );
    }

    private function insertDeclaracaoProponente()
    {
        $texto = "Eu, na qualidade de proponente, declaro para todos os fins legais que:
                        
                <b>A) Veracidade das informações e natureza do risco </b>
                <b>Declaro</b>, sob minha responsabilidade, que <b>não tenho conhecimento</b> de que o risco desta proposta <b>já tenha ocorrido</b> ou seja impossível de ocorrer e que todas <b>as informações prestadas</b> são <b>verdadeiras, completas e atualizadas.</b>
                
                <b>B) Interesse legítimo e vínculo com o objeto </b>
                <b>Reconheço</b> que o <b>interesse segurado</b> decorre de <b>vínculo jurídico ou econômico direto</b> com o objeto do seguro (por exemplo: <b>propriedade, posse, uso, responsabilidade legal ou obrigação contratual</b>), sendo esse vínculo <b>essencial à validade do contrato.</b>
                
                <b>C) Dever de comunicar alterações relevantes</b>
                <b>Comprometo-me a informar imediatamente</b> à seguradora <b>qualquer alteração relevante</b> que afete o <b>interesse legítimo</b>, a <b>qualificação do(s) beneficiário(s)</b> ou a <b>estrutura contratual</b>, ciente de minha <b>responsabilidade civil e penal</b>. 
                
                <b>D) Ciência das consequências por omissão ou má-fé</b>
                Estou ciente de que:
                
                •	se houver <b>omissão dolosa</b> (intencional), <b>perco o direito à indenização</b> e posso ter de <b>ressarcir despesas</b> à seguradora;
                
                •	se houver <b>omissão culposa</b> (sem intenção), a <b>cobertura poderá ser reduzida proporcionalmente</b>;
                
                •	se os fatos omitidos <b>tornarem a cobertura inviável</b> ou <b>incompatível</b> com o contrato, este <b>poderá ser cancelado</b>.
                
                <b>E) Compromisso com Direitos Humanos e Idoneidade</b>
                Declaro, sob minha responsabilidade, que nem eu, nem o(s) beneficiário(s), nem quaisquer terceiros envolvidos na presente proposta de seguro: (i) estamos incluídos em listas oficiais de trabalho escravo, infantil ou em condições análogas à escravidão; (ii) constamos em listas de sanções nacionais ou internacionais, incluindo, mas não se limitando a, ONU, OFAC, União Europeia ou Reino Unido; (iii) fomos condenados por crimes relacionados à lavagem de dinheiro, financiamento ao terrorismo ou infrações correlatas. 
                Estou ciente de que a falsidade ou omissão de qualquer dessas informações implicará a recusa da proposta pela Seguradora. Caso tais situações sejam identificadas durante a vigência da apólice, esta será cancelada de pleno direito.
                
                <b>F) Formação e Informação Prévia</b>
                Confirmo que esta proposta foi feita de forma voluntária, por mim ou por um representante autorizado. Os meus dados de contato (endereço, telefone e e-mail) são corretos e usados para comunicações da seguradora. Comprometo-me a mantê-los atualizados, pois, se não fizer isso, qualquer aviso enviado para esses contatos será considerado recebido. 
                
                Também confirmo que recebi todas as informações importantes para entender o contrato e as consequências de não informar corretamente os dados. Sou responsável por garantir que tudo o que informei é verdadeiro e completo. Respondi ao questionário de risco, quando necessário, com base no que sei, de forma clara e atualizada. 
                
                Tenho ciência dos anexos a esta Proposta, <b>CUJAS CÓPIAS RECEBI NO ATO DA SUA ASSINATURA, ACEITANDO-OS NA ÍNTEGRA</b>. 
                
                Se o seguro exigir informações contínuas (como averbações), sei que deixar de informar dados importantes pode fazer com que eu perca a cobertura, mesmo depois de um sinistro. Se a omissão não for intencional, vou pagar a diferença do prêmio e provar que agi de boa-fé. 
                Reconheço ainda que o corretor de seguros pode me representar, na forma da lei.
                
                <b>G) Conhecimento do Contrato e dos Riscos Excluídos</b>
                Declaro que li e compreendi as Condições Contratuais, conforme indicado no item “Avisos Importantes ao Proponente”, incluindo os riscos excluídos. Reconheço que a ausência de cobertura para tais riscos não configura falha contratual por parte da Seguradora. 
                Tenho ciência de que não terei direito a indenização se estiver em atraso no pagamento do prêmio, se o sinistro ocorrer antes da quitação das parcelas vencidas e não pagas (Art. 763 do Código Civil). 
                
                <b>H) Declaração sobre Interesse Legítimo, Conhecimento do Risco e Veracidade das Informações</b>
                Estou contratando este seguro para proteger algo que me interessa ou que interessa a outra pessoa. Tenho ligação com o que está sendo segurado (como dono, responsável ou usuário). 
                
                <b>Confirmo que: (i) o risco ainda não aconteceu; e (ii) as informações que dei são verdadeiras. </b>
                
                <b>Se eu omitir/esconder algo: (i) <u>de propósito</u>: posso perder o direito ao seguro e ter que devolver o que recebi; (ii) <u>sem querer</u>: o seguro pode cobrir menos ou ser cancelado</b>. 
                <b>Prometo avisar a seguradora se algo mudar que afete o seguro.</b>

                <b>I) Declaração sobre Beneficiários do Seguro</b>
                Os beneficiários que indiquei estão de acordo com a lei e têm um motivo legítimo para serem incluídos no seguro. 
                
                <b>Declaro que: (i) a escolha foi feita corretamente, sem problemas legais; (ii) existe uma relação que justifica essa indicação; (iii) não há fraude ou má intenção.</b>
                
                <b>Me comprometo a avisar a seguradora se algo mudar que afete os beneficiários ou o motivo pelo qual foram indicados.</b>

                <b>J) Cobertura Provisória</b>
                Solicito a cobertura provisória e autorizo o pagamento antecipado do prêmio. Em caso de recusa da proposta, a seguradora deverá comunicar expressamente sua decisão e reembolsar integralmente o valor pago, exceto se houver cobertura efetiva, hipótese em que poderá haver retenção proporcional ao período de vigência. 
                
                <b>K) Declarações sobre os Programas de Subvenção</b>
                <b>DECLARO</b> que tomei ciência das Condições dos Programas de Subvenção ao Prêmio do Seguro dos Governos Federal e Estadual e <b>ESTOU DE ACORDO COM SUAS CONDIÇÕES</b>.
                
                Se, por qualquer motivo, o Governo Federal e/ou Estadual não conceda subsídio ao prêmio para esta proposta, <b>ME RESPONSABILIZO PELO CUSTO INTEGRAL DO SEGURO</b>.
                
                <b>AUTORIZO</b> o uso de meio eletrônico pela Seguradora para o contato e envio de informações referentes ao seguro, inclusive envio de apólices e boletos.
            ";

        $this->execute(<<<SQL
INSERT INTO sistema.termos_contratacao (ds_titulo, ds_chave, dt_inicio_validade, ds_texto)
                                VALUES (
                                        'Declarações e Compromissos do Proponente Relacionadas à Execução e Conformidade Contratual'
                                        , 'DECLARACAO_PROPONENTE_CONFORMIDADE_CONTRATUAL_NOVA_LEI'
                                        , '2025-12-10'
                                        , '{$texto}'
                                        );
SQL
        );
    }

    private function insertDeclaracaoAcordo()
    {
        $texto = "Estou de acordo com todos os dados declarados neste Orçamento de Seguro.";

        $this->execute(<<<SQL
INSERT INTO sistema.termos_contratacao (ds_titulo, ds_chave, dt_inicio_validade, ds_texto)
                                VALUES ('Declaração de Acordo' , 'DECLARACAO_ACORDO' , '1900-01-01', '{$texto}');
SQL
        );
    }

    public function down(): void
    {
        $this->execute(<<<SQL
DROP TABLE sistema.termos_contratacao;
SQL
        );
    }
}
