<?php

class Sinistro2_Service_AvisoEmailSegurado
{
    public function buscarInformacoesEmailSegurado(int $idAviso): ?Zend_Db_Table_Row_Abstract
    {
        return (new Sinistro2_Model_AvisoEmailSegurado())->getInformacoesEmailSegurado(
            [
                'saes.ds_email_segurado as email_segurado_aviso',
                'spp.ds_email_proponente as email_segurado_proposta',
                'su.ds_nome_usuario',
                "to_char(saes.dt_criacao, 'DD/MM/YYYY HH24:MI:SS'::text) as data_hora",
            ],
            ["saes.id_aviso = {$idAviso}"]
        );
    }

    /**
     * @param array $dados
     * @return void
     * @throws Zend_Exception
     */
    public function concluirEnvioAviso(array $dados): void
    {
        $this->salvar($dados);
        $this->enviarEmailConfirmacaoRecebimentoAviso($dados);
    }

    public function enviarEmailConfirmacaoRecebimentoAviso(array $dados)
    {
        $informacoes = (new Sinistro2_Model_AvisosSinistro())->getDadosAvisoProposta(
            [
                'sp.id as id_proposta',
                'spp.ds_nome_proponente as nome_proponente',
                'sp.nr_apolice as numero_apolice',
                'pp.ds_nome_produto as nome_produto',
                "to_char(sa.dt_criacao, 'DD/MM/YYYY'::text) as data_aviso",
                'pe.ds_nome_evento as nome_evento',
                "to_char(sa.dt_sinistro, 'DD/MM/YYYY'::text) as data_evento",
                "to_char(sa.dt_sinistro, 'HH24:MI:SS'::text) as hora_evento",
                'saes.ds_email_segurado as email_segurado',
                'sc.ds_email as email_corretor',
            ],
            ["sa.id = {$dados['id_aviso']}"]
        )->toArray();

        $assunto = "Confirmação comunicação de sinistros nº {$dados['id_aviso']}";

        $nomeProponente = explode(" ", $informacoes['nome_proponente']);
        $nomeProponente = trim($nomeProponente[0]);

        $corpo = "Prezado(a) {$nomeProponente}.";
        $corpo .= "<br><br><b>Referências</b>: proposta nº {$informacoes['id_proposta']};";
        $corpo .= " Apólice nº {$informacoes['numero_apolice']}; Produto/Ramo: {$informacoes['nome_produto']} ";
        $corpo .= "<br><br>Acusamos o recebimento do comunicado de sinistro nº {$dados['id_aviso']} realizado em";
        $corpo .= " {$informacoes['data_aviso']}, referente ao evento {$informacoes['nome_evento']} ocorrido em";
        $corpo .= " {$informacoes['data_evento']} às {$informacoes['hora_evento']}.";
        $corpo .= " <b><u>Informamos que a recepção deste comunicado não implica em aceitação tácita do sinistro pela";
        $corpo .= " seguradora, tampouco configura reconhecimento de cobertura pela mesma.</u></b> ";
        $corpo .= "<br><br><b>Notas importantes:</b>";
        $corpo .= "<ul> ";
        $corpo .= "<li>Nos termos da Lei nº 15.040/2024 (arts. 66 e 86), o prazo da seguradora para manifestação e";
        $corpo .= " pagamento passa a contar após o recebimento de todos os documentos pertinentes, os quais se";
        $corpo .= " encontram listados nas Condições Gerais do produto, disponíveis em nosso website www.essor.com.br. ";
        $corpo .= "<li>LGPD: os dados pessoais serão tratados para execução do contrato e exercício regular de direitos,";
        $corpo .= " com compartilhamento limitado a reguladores, peritos, prestadores e autoridades estritamente";
        $corpo .= " necessárias à apuração do sinistro. Em caso de dúvidas, contate nossa área responsável através do";
        $corpo .= " e-mail: privacidade@essor.com.br. ";
        $corpo .= "</ul>";
        $corpo .= "<br><br>Permanecemos à disposição para quaisquer esclarecimentos. ";
        $corpo .= "<br><br>Atenciosamente, ";
        $corpo .= "<br><br>ESSOR SEGUROS";

        $mail = new Agro_Mail();
        $mail->inicioTextoPadrao(false);
        $mail->setBodyHtml($corpo);
        $mail->addTo($informacoes['email_segurado']);
        $mail->addCc($informacoes['email_corretor']);
        $mail->setSubject($assunto);
        $mail->send();
    }

    /**
     * @param array $dados
     * @return array|mixed
     * @throws Zend_Exception
     */
    public function salvar(array $dados)
    {
        return (new Sinistro2_Model_AvisoEmailSegurado())->save($dados);
    }
}