<?php

class CorreoElectronico
{
    /**
     * Devuelve la direrencia que existe entre 2 fecha.
     *
     * Recibe una fecha Timestamp de Unix  y el formato que desea
     * la variable opcion es un array que devolvera los parametros solicitado
     *
     * @param array $opcion
     * @param date  $opcion['email'] email del destinatario
     * @param date  $opcion['nombre'] nombre del destinatario
     * @param date  $opcion['asunto'] rozon del envio del email
     * @param date  $opcion['mensaje'] mensaje o cuerpo del correo
     */
    public static function enviarCorreo($opcion = [])
    {
        $correo = array_key_exists('correo', $opcion) ? $opcion['correo'] : '';
        $nombre = array_key_exists('nombre', $opcion) ? $opcion['nombre'] : '';
        $asunto = array_key_exists('asunto', $opcion) ? $opcion['asunto'] : '';
        $mensaje = array_key_exists('mensaje', $opcion) ? $opcion['mensaje'] : '';
        $adjunto = array_key_exists('adjunto', $opcion) ? $opcion['adjunto'] : '';

        $configuracion = self::parametrosCorreo('roraima');
        $empresa = Empresa::model()->find();

        if (!is_array($adjunto)) {
            $adjuntos[] = $adjunto;
        } else {
            $adjuntos = $adjunto;
        }

        if (defined('YII_DEBUG') && YII_DEBUG) {
            //Esta version es para desarrollo con mayor o igual php5.6
            Yii::import('mailer.PHPMailer');
            $mail = new PHPMailer();
        } else {
            //Esta version es para produccion con menor o igual php5.6
            Yii::import('mailer.phpmailer');
            $mail = new phpmailer();
        }

        $mail->IsSMTP();
        // $mail->SMTPDebug = 2; // debugging: 1 = errors and messages, 2 = messages only
        $mail->Timeout = 120;
        $mail->SMTPAuth = true;
        $mail->SMTPSecure = $configuracion['SMTPSecure'];
        $mail->IsHTML();
        $mail->Host = $configuracion['host'];
        $mail->Port = $configuracion['port'];
        $mail->Username = $empresa->email_emp;
        $mail->Password = $empresa->email_clave;
        $mail->SetFrom($empresa->email_emp, $empresa->razon_social);
        $mail->AddReplyTo($empresa->email_emp, $empresa->razon_social);
        $mail->Subject = $asunto;
        $mail->AltBody = $empresa->razon_social;
        $mail->MsgHTML($mensaje);
        $mail->AddAddress($correo, $nombre);
        $mail->CharSet = 'UTF-8';
        $ok = $mail->send();

        if (! $ok) {
            echo "<font style='font-size: 14px;color: #990000'> No se pudo enviar el correo al Asociado: <strong>${nombre}</strong> / correo: <strong>${correo}</strong> </font><br/>";
        } else {
            echo "<font style='font-size: 14px;color: #2e8b57'> El correo se ha enviado satisfactoriamente a: <strong>${correo}</strong></font><br/><br/>";
        }
    }

    public static function enviarCorreoAjax($opcion = [])
    {
        $correo = array_key_exists('correo', $opcion) ? $opcion['correo'] : '';
        $nombre = array_key_exists('nombre', $opcion) ? $opcion['nombre'] : '';
        $asunto = array_key_exists('asunto', $opcion) ? $opcion['asunto'] : '';
        $mensaje = array_key_exists('mensaje', $opcion) ? $opcion['mensaje'] : '';
        $adjunto = array_key_exists('adjunto', $opcion) ? $opcion['adjunto'] : '';

        $configuracion = CorreoElectronico::parametrosCorreo('roraima');
        $empresa = Empresa::model()->find();

        if (!is_array($adjunto)) {
            $adjuntos[] = $adjunto;
        } else {
            $adjuntos = $adjunto;
        }

        if (defined('YII_DEBUG') && YII_DEBUG) {
            //Esta version es para desarrollo con mayor o igual php5.6
            Yii::import('mailer.PHPMailer');
            $mail = new PHPMailer();
        } else {
            //Esta version es para produccion con menor o igual php5.6
            Yii::import('mailer.phpmailer');
            $mail = new phpmailer();
        }

        $mail->IsSMTP();
        $mail->SMTPAuth = true;
        $mail->SMTPSecure = $configuracion['SMTPSecure'];
        $mail->Host = $configuracion['host'];
        $mail->Port = $configuracion['port'];
        $mail->Username = $empresa->email_emp;
        $mail->Password = $empresa->email_clave;
        $mail->SetFrom($empresa->email_emp, $empresa->razon_social);
        $mail->AddReplyTo($empresa->email_emp, $empresa->razon_social);
        $mail->Subject = $asunto;
        $mail->AltBody = $empresa->razon_social;
        $mail->MsgHTML($mensaje);
        $mail->AddAddress($correo, $nombre);
        $mail->CharSet = 'UTF-8';
        if (!$mail->Send()) {
            return 0;
        }

        return 1;
    }

    public static function parametrosCorreo($correo)
    {
        $empresa = Empresa::model()->find();
        if ($empresa->host == '') {
            $empresa->host == 'correonoexiste@ejemplo.com';
        }
        if ($empresa->puerto == '') {
            $empresa->puerto == '587';
        }

        if ($empresa->secure == '') {
            $empresa->secure == 'tls';
        }
        $correos = [
            'gmail' => [
                'host' => 'smtp.gmail.com',
                'port' => 465,
                'SMTPSecure' => 'ssl',
            ],
            'roraima' => [
                'host' => $empresa->host,
                'port' => $empresa->puerto,
                'SMTPSecure' => $empresa->secure,
            ],
        ];

        return array_key_exists($correo, $correos) ? $correos[$correo] : [];
    }
}
