<?php

class MailTemplates {

	public static function documentoAguardandoLiberacaoExcecao($documento) {
		$corpo = "<p>Existe um novo {$documento->getTipoDocumento()} no CRM Delvale aguardando liberação de exceção!</p>";
        $corpo .= "<p><b>Código do {$documento->getTipoDocumento()}:</b> {$documento->COT_IDCONTRATO}</p>";
        $corpo .= Util::createMailButton(Util::createUrl('contratos/view', array('id' => $documento->COT_IDCONTRATO)), 'ABRIR DOCUMENTO');

        Util::sendEmail('comercial@windel.com.br', $documento->getTipoDocumento() . ' Aguardando liberação de Exceção', $corpo);
	}

	public static function documentoAguardandoAnalise($documento) {
    	$corpo = "<p>Existe um novo {$documento->getTipoDocumento()} no CRM Delvale aguardando para ser analisado!</p>";
        $corpo .= "<b>Código do {$documento->getTipoDocumento()}:</b> {$documento->COT_IDCONTRATO}";
        $corpo .= Util::createMailButton(Util::createUrl('contratos/view', array('id' => $documento->COT_IDCONTRATO)), 'ABRIR DOCUMENTO');

        Util::sendEmail('comercial@windel.com.br', $documento->getTipoDocumento() . ' aguardando para ser analisado', $corpo);
	}


    public static function contratoAguardandoAceiteDoCliente($documento)
    {

        $Util = new Util;
        $urlAreaClientes = URL_AREA_CLIENTES;
        $senha = $documento->Cliente->CLI_SENHA;
        $doc = base64_encode($documento->Cliente->CLI_CNPJCPF);

        if ($senha !== 'windel')
            $button = $Util->createMailButton($urlAreaClientes . "/clientes/login?1={$doc}&2=0", 'ENTRAR');
        else
            $button = $Util->createMailButton($urlAreaClientes . "/clientes/primeiroAcesso?1={$doc}&2=1", 'ENTRAR');


        $corpo = <<<HTML
            {$button}
HTML;
        Util::sendEmail($documento->Cliente->CLI_EMAIL, $documento->getTipoDocumento() . ' está aguardando aceite na Área do Cliente', $corpo);

    }
    public static function adendoAguardandoAceiteDoCliente($documento)
    {

        $Util = new Util;
        $urlAreaClientes = URL_AREA_CLIENTES;
        $doc = base64_encode($documento->Cliente->CLI_CNPJCPF);
        $button = $Util->createMailButton($urlAreaClientes . "/clientes/login?1={$doc}&2=0", 'ENTRAR');
        $corpo = "";
        Util::sendEmail($documento->Cliente->CLI_EMAIL, $documento->getTipoDocumento() . ' está aguardando aceite na Área do Cliente', $corpo);
    }
    public static function orcamentoAguardandoAceiteDoCliente($documento)
    {

        $Util = new Util;
        $urlAreaClientes = URL_AREA_CLIENTES;
        $doc = base64_encode($documento->Cliente->CLI_CNPJCPF);
        $button = $Util->createMailButton($urlAreaClientes . "/clientes/login?1={$doc}&2=0", 'ENTRAR');
        $corpo = "";
        Util::sendEmail($documento->Cliente->CLI_EMAIL, $documento->getTipoDocumento() . ' está aguardando aceite na Área do Cliente', $corpo);
    }
    public static function implantacaoAguardandoAceiteDoCliente($documento)
    {

        $Util = new Util;
        $urlAreaClientes = URL_AREA_CLIENTES;
        $doc = base64_encode($documento->Cliente->CLI_CNPJCPF);
        $button = $Util->createMailButton($urlAreaClientes . "/clientes/login?1={$doc}&2=0", 'ENTRAR');


        $corpo = <<<HTML
            {$button}
HTML;
        Util::sendEmail($documento->Cliente->CLI_EMAIL, $documento->getTipoDocumento() . ' está aguardando aceite na Área do Cliente', $corpo);
    }
    public static function reativacaoAguardandoAceiteDoCliente($documento)
    {
        $Util = new Util;
        $urlAreaClientes = URL_AREA_CLIENTES;
        $doc = base64_encode($documento->Cliente->CLI_CNPJCPF);
        $button = $Util->createMailButton($urlAreaClientes . "/clientes/login?1={$doc}&2=0", 'ENTRAR');
        $corpo = "";
        Util::sendEmail($documento->Cliente->CLI_EMAIL, $documento->getTipoDocumento() . ' está aguardando aceite na Área do Cliente', $corpo);
    }

    public static function documentoAguardandoAceiteDoCliente($documento) {

        $Util = new Util;
        $urlAreaClientes = URL_AREA_CLIENTES;
        $urlImagens = "http://windel.com.br/emailAguardandoAceite/";
        $senha = $documento->Cliente->CLI_SENHA;
        $doc = base64_encode($documento->Cliente->CLI_CNPJCPF);
        $cnpj_formatado = Util::formataCNPJCPF($documento->Cliente->CLI_CNPJCPF);
        $email = $documento->Cliente->CLI_EMAIL_AREA_CLIENTES;
        $assunto = "WINDEL - {$documento->getTipoDocumento()} número {$documento->COT_IDCONTRATO} está aguardando aceite na Área do Cliente";

        if ($senha !== 'windel'){
            $msg = "<strong>Se você já possui a senha exclusiva Delvale</strong>, acesse a área de clientes e siga as instruções:";
            $button = $Util->createMailButton($urlAreaClientes . "/clientes/login?1={$doc}&2=0", 'ENTRAR');
        } else {

            $linkToken = $documento->generateToken($documento->Cliente->CLI_IDCLIENTE);

            $msg = "<strong>Se você ainda não cadastrou a sua senha exclusiva Delvale</strong>, clique no link abaixo e siga as instruções:";
            $button = $Util->createMailButton($linkToken, 'ENTRAR');
        }

        $corpo = <<<HTML
            <p>
                {$documento->Cliente->CLI_NOME}  CNPJ {$cnpj_formatado}
            </p>
            <p>
                O {$documento->getTipoDocumento()} Nº {$documento->COT_IDCONTRATO} foi gerado e aguarda sua análise na <strong>Área do Cliente</strong> Delvale Informática. Segue o passo a passo de como efetuar a análise:
            </p>

            <h2>Acesso a Área do Cliente</h2>
            <p> Para acessar a Área de Clientes é preciso usar a sua senha exclusiva. </p>
            <p> - {$msg} </p>
                {$button}

            <!-- NOVO -->
            <h2 style="text-align: left;">Análise dos documentos</h2>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    Ao acessar a Área de Clientes, o sistema irá informar que você tem 1 documento para aceitar.
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="box-sizing: border-box;
                            color: rgb(0, 0, 0);
                            font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;
                            font-style: normal;
                            font-variant-ligatures: normal;
                            font-variant-caps: normal;
                            font-weight: 400;
                            letter-spacing: normal;
                            orphans: 2;
                            text-align: left;
                            text-indent: 0px;
                            text-transform: none;
                            white-space: normal;
                            widows: 2;
                            word-spacing: 0px;
                            -webkit-text-stroke-width: 0px;
                            text-decoration-style: initial;
                            text-decoration-color: initial;
                            font-size: 18px;">
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">Para prosseguir, clique em INICIAR.</span>
            </p>
        <!-- IMAGEM DOS CONTRATOS -->
            <img src="http://windel.com.br/emailAguardandoAceite300/01.png" style="max-width: 100%; width: 100%;">
            <p style="text-align: center; ">
                <br>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    A próxima tela permite que você habilite a sua geolocalização (GPS) do navegador. Isso faz com que o sistema identifique o seu local de acesso.
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    Clique em GPS para habilitar a sua localização.
                </span>
            </p>
            <p style="text-align: center; ">
                <img src="http://windel.com.br/emailAguardandoAceite300/02.png" style="max-width: 100%; width: 100%;">
                    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
                <br>
            </p>
            <p style="text-align: center; line-height: 1;">
                Neste momento você deve clicar em Permitir, na janela no topo da página á esquerda.
                <span style="font-size: 18px;"></span>
                <br>
            </p>
            <!-- IMAGEM DO PERMITIR -->
            <img src="http://windel.com.br/emailAguardandoAceite300/03.png" style="max-width: 100%;">
            <p style="text-align: center; ">
            </p>
            <p style="text-align: center; ">
                <span style="font-size: 18px;">
                    <br>
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    O sistema irá exibir uma mensagem informando que o seu ambiente está preparado para realizar o aceite do documento.
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">Para prosseguir, clique em AVANÇAR.</span>
            </p>
            <!-- IMAGEM DA CONFIRMAÇÃO -->
            <img src="http://windel.com.br/emailAguardandoAceite300/04.png" style="max-width: 100%;">
            <p>
                <br>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    Agora é exibido o seu documento para que você possa ler.
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    Clique em "Li e concordo com os termos e condições do contrato." e então digite a sua senha, a mesma utilizada para entrar no sistema e então clique em Avançar.
                </span>
            </p>
            <!-- IMAGEM DA documento -->
            <p>
                <br>
            </p>
            <!-- IMAGEM DA documento checbox -->
            <img src="http://windel.com.br/emailAguardandoAceite300/06.png" style="max-width: 100%;">
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    <br>
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    No final será exibido algumas informações sobre o produto contratado e a opção de baixar cópia do seu documento.
                </span>
            </p>
            <p style="text-align: center; line-height: 1;">
                <span style="font-size: 18px;">
                    Clique em Ir para a sua área para finalizar.
                </span>
            </p>
            <!-- IMAGEM DA documento resumo -->
            <img src="http://windel.com.br/emailAguardandoAceite300/07.png" style="max-width: 100%;">
            <p><br></p>

HTML;
        $extra = array();
        Util::sendEmail($email, $assunto, $corpo, $extra, true);
    }

	public static function documentoComDocumentacaoPendente($documento, $atendimento) {
		$corpo = "<p>O <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> no CRM Delvale está com <b>documentação pendente</b>!</p>";
        $corpo .= self::documentoExtractBasics($documento, $atendimento);

        $subject = $documento->getTipoDocumento() . " nº " . $documento->COT_IDCONTRATO . ' está com documentação pendente';

        $extra = (isset($documento->Vendedor) && !empty($documento->Vendedor) ? array('CC' => array($documento->Vendedor->FUN_EMAIL)) : array());
        
        Util::sendEmail('comercial@windel.com.br', $subject, $corpo, $extra);
	}

	public static function solicitadaReprovacaoDocumento($documento, $atendimento) {
		$corpo = "
            <p>O vendedor <b>{$atendimento->Atendente}</b> está solicitando a reprovação do <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> no CRM Delvale.<br />";
        $corpo .= self::documentoExtractBasics($documento, $atendimento);

        Util::sendEmail('comercial@windel.com.br', 'Solicitação de reprovação de documento', $corpo);
	}

	public static function documentoReprovado($documento, $atendimento) {
		$corpo = "
            <p>O <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> foi reprovado no CRM Delvale.<br />
            <b>Verifique se é necessário cadastrar o documento novamente.</b><br /><br />";
        $corpo .= self::documentoExtractBasics($documento, $atendimento);

        Util::sendEmail($documento->Vendedor->FUN_EMAIL, "{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO} reprovado", $corpo);
	}

	public static function documentoSemVendedorReprovado($documento, $atendimento) {
		$corpo = "
            <p>O <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> foi reprovado no CRM Delvale, <b>porém não foi possível identificar o vendedor do mesmo para notificá-lo por e-mail.</b><br />";
        $corpo .= self::documentoExtractBasics($documento, $atendimento);

        Util::sendEmail($documento->Vendedor->FUN_EMAIL, "Notificação de reprovação do {$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO} não enviada", $corpo);
	}

    public static function documentoAssinadoDigitalmenteAguardandoValidacao($documento, $atendimento) {
        // ASSINATURA DIGITAL INATIVADA
        return false;

        /*$corpo = "
        <p>O <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> foi assinado digitalmente e está aguardando validação da assinatura.</b><br />";
        $corpo .= self::documentoExtractBasics($documento, $atendimento);

        Util::sendEmail($documento->Vendedor->FUN_EMAIL, "{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO} assinado digitalmente aguardando validação", $corpo);*/
    }

    public static function documentoAssinadoDigitalmenteAguardandoAssinatura($documento, $atendimento) {
        // ASSINATURA DIGITAL INATIVADA
        return false;

        /*$corpo = "
        <p>O <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> está aguardando assinatura digital da Delvale.</b><br />";
        $corpo .= self::documentoExtractBasics($documento, $atendimento, 'anexar');

        Util::sendEmail($documento->Vendedor->FUN_EMAIL, "{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO} assinado digitalmente aguardando assinatura da windel", $corpo);*/
    }

    public static function documentoAssinadoDigitalmenteCancelarAssinatura($documento, $atendimento) {
        // ASSINATURA DIGITAL INATIVADA
        return false;

        /*$corpo = "
        <p>O <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> que estava aguardando assinatura digital da Delvale, teve seu status alterado e não necessita mais ser assinado digitalmente pela Delvale até que seja aprovado novamente.</b><br />";
        $corpo .= self::documentoExtractBasics($documento, $atendimento);

        Util::sendEmail($documento->Vendedor->FUN_EMAIL, "{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO} assinado digitalmente não necessita mais ser assinado pela windel", $corpo);*/
    }

    public static function documentoDigitalReprovado($documento, $atendimento) {
        // ASSINATURA DIGITAL INATIVADA
        return false;

        /*$corpo = "<p>O <b>{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO}</b> que foi assinado digitalmente foi reprovado.</b><br />";
        $corpo .= self::documentoExtractBasics($documento, $atendimento);

        Util::sendEmail($documento->Vendedor->FUN_EMAIL, "{$documento->getTipoDocumento()} nº {$documento->COT_IDCONTRATO} assinado digitalmente foi reprovado", $corpo);*/
    }

    private static function documentoExtractBasics($documento, $atendimento, $action = 'view') {
        return "<p><strong>Local:</strong> {$atendimento->Motivo}<br />
        <strong>Cliente:</strong> {$documento->Cliente}<br />
        <strong>Cidade:</strong> {$documento->Cliente->Cidade} - {$documento->Cliente->Cidade->CID_UF}<br />
        <strong>Observações:</strong><br />" . nl2br($atendimento->ATD_OBS) . "</p>".(Util::createMailButton(Util::createUrl("contratos/{$action}", array('id' => $documento->COT_IDCONTRATO)), 'ABRIR DOCUMENTO'));
    }

    private static function getAlteracoesSolicitacaoByAtividade($atividade, $solicitacaoOriginal, $detalhes = false)
    {
        $solicitacaoAtualizada = $atividade->Solicitacao;

        $alteracoes = "";
        if ($atividade->SAT_IDLOCAL != $solicitacaoOriginal->SOL_IDLOCAL) {
            if ($atividade->SAT_IDLOCAL != 21) {
                $localOriginal = $solicitacaoOriginal->printLocalAnterior();
                $novoLocal = (($atividade->SAT_IDLOCAL ==  -1) ? "Voltado para local anterior ($localOriginal)" : (isset($atividade->Local->LOC_DESCRICAO) ? $atividade->Local->LOC_DESCRICAO : 'Não informado'));

                $alteracoes .= "<b>Local:</b> {$solicitacaoOriginal->Local} -> <strong>{$novoLocal}</strong><br />";
            } else {
                $alteracoes .= "<b>Local:</b> Observação<br>";
            }
        }

        if ($solicitacaoAtualizada->SOL_IDMOTIVO != $solicitacaoOriginal->SOL_IDMOTIVO) {
            $alteracoes .= "<b>Motivo:</b> {$solicitacaoOriginal->Motivo} -> <strong>{$solicitacaoAtualizada->Motivo}</strong><br />";
        }

        if ($solicitacaoAtualizada->SOL_IDPRIORIDADE != $solicitacaoOriginal->SOL_IDPRIORIDADE) {
            $alteracoes .= "<b>Prioridade:</b> {$solicitacaoOriginal->Prioridade} -> <strong>{$solicitacaoAtualizada->Prioridade}</strong><br />";
        }
        if ($detalhes && $solicitacaoAtualizada->SOL_IDDESENVOLVEDOR != $solicitacaoOriginal->SOL_IDDESENVOLVEDOR) {
            $alteracoes .= "<b>Desenvolvedor:</b> {$solicitacaoOriginal->Desenvolvedor} -> <strong>{$solicitacaoAtualizada->Desenvolvedor}</strong><br />";
        }

        $dtPrevisao = (isset($solicitacaoAtualizada->SOL_DATAPREVISAO)) ? $solicitacaoAtualizada->SOL_DATAPREVISAO : "Não informada";
        $alteracoes .= "<b>Previsão de Entrega:</b> {$dtPrevisao}<br />";

        $previsaoVersao = (isset($solicitacaoAtualizada->SOL_IDPREVISAOVERSAO)) ? $solicitacaoAtualizada->PrevisaoVersao : "Não informada";
        $alteracoes .= "<b>Previsão de Versão:</b> {$previsaoVersao}<br />";

        if ($detalhes) {
            $alteracoes .= "<b>Descrição da atividade:</b><br />" . nl2br($atividade->SAT_DESCRICAO) . "</p>";
        }

        return $alteracoes;
    }

    public static function emailPendenciaVinculada($vinculo)
    {
        $pendenciaOriginal = $vinculo->PendenciaPrincipal;
        $pendenciaDuplicada = $vinculo->Solicitacao;

        $corpo = "<p>Sua pendência Nº {$pendenciaDuplicada->SOL_IDPENDENCIA} foi vinculada ";
        $corpo .= "na pendência Nº {$pendenciaOriginal->SOL_IDPENDENCIA}, abaixo algumas informações: </p>";
        $corpo .= "<p><b>Cliente: </b>{$pendenciaOriginal->Cliente}</p>";
        $corpo .= "<p><b>Local: </b>{$pendenciaOriginal->Local}</p>";
        $corpo .= "<p><b>Motivo: </b>{$pendenciaOriginal->Motivo}</p>";
        $corpo .= "<p><b>Prioridade: </b>{$pendenciaOriginal->Prioridade}</p>";
        $corpo .= Util::createMailButton(
            Util::createUrl('solicitacoes/view', array('id' => $pendenciaOriginal->SOL_IDPENDENCIA)),
            'ABRIR PENDÊNCIA'
        );

        $mainEmail = false;

        $destinatarios = self::getCCPendencias($pendenciaDuplicada);
        $extra = array('CC' => $destinatarios);
        if (
            isset($pendenciaDuplicada->Autor) &&
            $pendenciaDuplicada->Autor->FUN_SITUACAO == "A"
        ) {
            $email = $pendenciaDuplicada->Autor->FUN_EMAIL;
            $mainEmail = $email;
        }

        $envioEmail = Util::sendEmail(
            $mainEmail,
            "Aviso de vinculação da pendência Nº {$pendenciaDuplicada->SOL_IDPENDENCIA}",
            $corpo,
            $extra
        );
        if (!$envioEmail) {
            return Util::sendEmail(
                'marcio@delvale.com.br',
                'Aviso de movimentação de pendência não enviado corretamente para o técnico',
                $corpo,
                $extra
            );
        }
        return true;
    }

    public static function emailMovimentacaoSolicitacao($atividade, $solicitacaoOriginal)
    {
        $solicitacaoAtualizada = $atividade->Solicitacao;
        $cliente = isset($solicitacaoAtualizada->Cliente) ? $solicitacaoAtualizada->Cliente->CLI_NOME : 'Não informado';

        $corpo  = "<p>Sua pendência foi alterada, segue atualização da situação:<br /><br />";
        $corpo .= "<b>Pendência:</b> {$solicitacaoAtualizada->SOL_IDPENDENCIA}<br />";
        $corpo .= "<b>Cliente:</b> {$cliente}<br />";
        $corpo .= self::getAlteracoesSolicitacaoByAtividade($atividade, $solicitacaoOriginal, true);
        $corpo .= Util::createMailButton(
            Util::createUrl('solicitacoes/view', array('id' => $solicitacaoAtualizada->SOL_IDPENDENCIA)),
            'ABRIR PENDÊNCIA'
        );

        $mainEmail = false;

        $destinatarios = self::getCCPendencias($solicitacaoAtualizada);
        $extra = array('CC' => $destinatarios);
        if (
            isset($solicitacaoAtualizada->Autor) &&
            $solicitacaoAtualizada->Autor->FUN_SITUACAO == "A"
        ) {
            $email = $solicitacaoAtualizada->Autor->FUN_EMAIL;
            $mainEmail = $email;
        }

        $envioEmail = Util::sendEmail(
            $mainEmail,
            "Aviso de movimentação da pendência Nº {$solicitacaoAtualizada->SOL_IDPENDENCIA}",
            $corpo,
            $extra
        );
        if (!$envioEmail) {
            return Util::sendEmail(
                'marcio@delvale.com.br',
                'Aviso de movimentação de pendência não enviado corretamente para o técnico',
                $corpo,
                $extra
            );
        }
        return true;
    }

    public static function emailMovimentacaoSolicitacaoAcompanhada($atividade, $solicitacaoOriginal)
    {
        $solicitacaoAtualizada = $atividade->Solicitacao;
        $destinatarios = MailTemplates::getCCPendenciasVinculadas($solicitacaoAtualizada);
        if (!empty($destinatarios)) {
            $mainEmail = false;

            $extra = array('BCC' => $destinatarios);
            $corpo = "<p>A pendência Nº {$solicitacaoAtualizada->SOL_IDPENDENCIA} foi alterada, ";
            $corpo .= "segue atualização da situação:<br /><br />";
            $corpo .= MailTemplates::getAlteracoesSolicitacaoByAtividade($atividade, $solicitacaoOriginal);

            $corpo .= "<p>Você está recebendo este e-mail por estar acompanhando as movimentações da pendência ou ";
            $corpo .= "por ter uma de suas pendências vinculada a ela!</p>";

            $corpo .= Util::createMailButton(
                Util::createUrl('solicitacoes/view', array('id' => $solicitacaoAtualizada->SOL_IDPENDENCIA)),
                'ABRIR PENDÊNCIA'
            );

            $envioEmail = Util::sendEmail(
                $mainEmail,
                "Aviso de movimentação da pendência Nº {$solicitacaoAtualizada->SOL_IDPENDENCIA}",
                $corpo,
                $extra
            );
            if (!$envioEmail) {
                return Util::sendEmail(
                    'marcio@delvale.com.br',
                    'Aviso de movimentação de pendência acompanhada não foi enviado corretamente',
                    $corpo
                );
            }
            return true;
        }
        return true;
    }

    public static function motivoIncorretoPendencia($pendencia) {
        $corpo = "
        <p>A pendência {$pendencia->SOL_IDPENDENCIA} foi cadastrada com motivo incorreto e necessita de correção, seguem dados da pendência:<br /><br />
        <b>Local</b>: {$pendencia->Local}<br>
        <b>Cliente:</b> " . (isset($pendencia->Cliente) ? $pendencia->Cliente->CLI_NOME : 'não informado') . "</p>";
        $corpo .= Util::createMailButton(Util::createUrl('solicitacoes/view', array('id' => $pendencia->SOL_IDPENDENCIA)), 'ABRIR PENDÊNCIA');


        $extra = array('CC' => self::getCCPendencias($pendencia));
        if(isset($pendencia->Autor->FUN_EMAIL)) {
            Util::sendEmail($pendencia->Autor->FUN_EMAIL, "Pendência {$pendencia->SOL_IDPENDENCIA} aguardando correção", $corpo, $extra);
        } else {
            Util::sendEmail('marcio@delvale.com.br', 'Aviso de movimentação de pendência aguardando correção não enviado corretamente para o autor', $corpo, $extra);

        }
    }

    public static function pendenciaCriteriosReprovados($yii, $atividade)
    {
        $pendencia = $atividade->Solicitacao;
        $cliente = (isset($pendencia->Cliente) ? $pendencia->Cliente->CLI_NOME : 'Não informado');
        $corpo = "
            <p>
                A pendência {$pendencia->SOL_IDPENDENCIA} foi revisada, teve critérios reprovados e necessita de correção,
                seguem dados da pendência:<br>
                <b>Local</b>: {$pendencia->Local}<br>
                <b>Cliente:</b> {$cliente} <br>
            </p>
        ";
        $corpo .= $yii->renderPartial('/criteriosSolicitacoes/list', array(
            'data' => $atividade,
            'email' => true
        ), true);
        $corpo .= Util::createMailButton(
            Util::createUrl('solicitacoes/view', array('id' => $pendencia->SOL_IDPENDENCIA)),
            'ABRIR PENDÊNCIA'
        );

        $ccPendencia = self::getCCPendencias($pendencia);
        $ccVinculadas = self::getCCPendenciasVinculadas($pendencia, false);
        $cc = array_merge($ccPendencia, $ccVinculadas);
        $extra = array('CC' => array_unique($cc));
        if(isset($pendencia->Autor->FUN_EMAIL)) {
            Util::sendEmail(
                $pendencia->Autor->FUN_EMAIL,
                "Pendência {$pendencia->SOL_IDPENDENCIA} aguardando correção",
                $corpo,
                $extra
            );
        } else {
            Util::sendEmail(
                'marcio@delvale.com.br',
                'Aviso de movimentação de pendência aguardando correção não enviado corretamente para o técnico',
                $corpo
            );
        }
    }

    public static function getCCPendenciasVinculadas($pendencia, $includeWatchers = true) {
        $emails = array();
        if ($includeWatchers) {
            $watchers = $pendencia->getWatchers();
            if(!empty($watchers) && is_array($watchers)) {
                foreach($watchers as $watcher) {
                    $emails[] = $watcher->Funcionario->FUN_EMAIL;
                }
            }
        }
        if ($pendencia->hasVinculadas()) {
            $vinculadas = $pendencia->getVinculadas();
            if (!empty($vinculadas) && is_array($vinculadas)) {
                foreach ($vinculadas as $vinculada) {
                    if (!empty($vinculada->Solicitacao) && $vinculada->Solicitacao->enableMovimentarVinculada($pendencia->SOL_IDLOCAL)) {
                        if (isset($vinculada->Solicitacao->TecnicoResponsavel->FUN_EMAIL) && !empty($vinculada->Solicitacao->TecnicoResponsavel->FUN_EMAIL)) {
                            $emails[] = $vinculada->Solicitacao->TecnicoResponsavel->FUN_EMAIL;
                        }
                        if (isset($vinculada->Solicitacao->Autor->FUN_EMAIL) && !empty($vinculada->Solicitacao->Autor->FUN_EMAIL)) {
                            $emails[] = $vinculada->Solicitacao->Autor->FUN_EMAIL;
                        }
                        if (isset($vinculada->Solicitacao->Supervisor->FUN_EMAIL) && !empty($vinculada->Solicitacao->Supervisor->FUN_EMAIL)) {
                            $emails[] = $vinculada->Solicitacao->Supervisor->FUN_EMAIL;
                        }
                    }
                }
            }
        }

        return array_unique($emails);
    }

    public static function getCCPendencias($pendencia) {
        $emails = array();
        if(isset($pendencia->Supervisor->FUN_EMAIL) && $pendencia->Supervisor->FUN_SITUACAO == "A") {
            if (!in_array($pendencia->SOL_IDSUPERVISOR, [$pendencia->SOL_IDFUNCIONARIO, $pendencia->SOL_IDTECNICORESPONSAVEL])) {
                $emails[] = $pendencia->Supervisor->FUN_EMAIL;
            }
        }

        // Envio para o técnico responsável quando este estiver preenchido (pendências antigas)
        if(isset($pendencia->TecnicoResponsavel->FUN_EMAIL) && $pendencia->TecnicoResponsavel->FUN_SITUACAO == "A") {
            if (!in_array($pendencia->SOL_IDTECNICORESPONSAVEL, [$pendencia->SOL_IDFUNCIONARIO, $pendencia->SOL_IDSUPERVISOR])) {
                $emails[] = $pendencia->TecnicoResponsavel->FUN_EMAIL;
            }
        }
        return $emails;
    }

    public static function solicitacaoSenhaCliente($cliente, $token) {
        $corpo = "<div style=\"text-align: center;\">";
            $corpo .= "<p>Uma requisição de redefinição de senha foi feita para o seu usuário de acesso a Área do Cliente - Delvale Informática.</p>";
            $corpo .= "<p>Se não foi você quem a fez, por favor ignore o conteúdo deste e-mail.</p>";
            $corpo .= "<p>Caso foi você quem requisitou esta ação, abra o link abaixo e siga as instruções para redefinir sua senha.</p>";
            $corpo .= Util::createMailButton($token->getLinkRecuperacao(), 'CRIAR NOVA SENHA');
        $corpo .= "</div>";

        return Util::sendEmail($cliente->CLI_EMAIL, "Delvale: Área dos clientes - Recuperação de senha", $corpo);
    }
}
