<?php namespace App\Http\Controllers;  

use App\Custom\SQLConnection; 
use App\Custom\Misc; 
use App\Custom\Mailer;
use Request; 
use Session;
use Illuminate\Support\Facades\Input;
use DB;
use DateTime;
use stdClass;


class EmailControllerBackend extends Controller  {

	public static function encryptString() {
		return (encrypt(Request::input('s')));
	} 
	public static function decryptString() {
		return (decrypt(Request::input('s')));
	} 
    
    //public static function enviarMailAlta($contraparte=null, $link_expira='', $email_alt='', $link_forced = false) 
    public static function enviarMail($app_key='EMAIL-LED',$tipo='ALTA', $tipo2='', $contraparte='', $link_expira='', $email_alt='', $link_forced = false, $doc_id=NULL, $transact_id=NULL, $to_array=[])
    {      
        if ($contraparte == null)
        	{ return false; }

        //$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
        $bcc = 'soporteled@fidelitas.com.ar';
        $replyto = 'soporteled@fidelitas.com.ar';
    
        if ($app_key == 'IV')
        {
            $qcontrap = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $contraparte), 'selectOne');
        }
        else 
        {
            if ($app_key == 'EMAIL-IMPE')
            {
                $qcontrap = SQLConnection::backendStoreProcedure('Imperium_cliente_contraparte_led', array('buscar_contratista_imperium', $contraparte), 'selectOne');
                $bcc = 'soporte@imperium.com.ar';
                $replyto = 'soporte@imperium.com.ar';
        
            }
            else
            {
                $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, null), 'selectOne');
            }
        }

        $tipo = strtoupper($tipo);
        if ($tipo == '')  { $tipo = NULL;}
        $tipo2 = strtoupper($tipo2); 
        if ($tipo2 == '')  { $tipo2 = NULL;}

        if ($app_key == 'IV')
        {
            $app_id = 6;
            $servicio = 10; 
            $cliente = $qcontrap->cliente; 
            $web = SQLConnection::backendStoreProcedure('multi_web_', array('mail_cliente', NULL, $app_id, $cliente, null, $servicio), 'selectOne');
            $idioma = $qcontrap->idioma ?? 'spa'; 
                if ($idioma == 'eng')
                {
                    $web->mensaje = str_replace(Chr(13).Chr(10), '<br />', $web->body_eng);
                    $web->asunto  =  $web->subj_eng;
                } 
                elseif ($idioma == 'por')
                {
                    $web->mensaje = str_replace(Chr(13).Chr(10), '<br />', $web->body_por);
                    $web->asunto =  $web->subj_por;
                }
                else 
                {
                    $web->mensaje = str_replace(Chr(13).Chr(10), '<br />', $web->body_spa);
                    $web->asunto =  $web->subj_spa;
                }

        }
        else
        {

            $web = SQLConnection::backendStoreProcedure('multi_web_', array('mail_contraparte',null,null,null,null,null,$contraparte,$app_key,$tipo,$tipo2),'selectOne');
        }


        $body = self::generateMailBody($app_key,$qcontrap, $web);
        $content = self::generateMailContent($app_key,$qcontrap, $web, $link_expira,$doc_id, $transact_id);
        $mail_subject = self::generateMailSubject($app_key,$qcontrap, $web);



        // Reemplazo el contenido del mail
        $mail_content = str_replace(['%%EMAIL_CONTENT%%'], [$content], $body);

        $from = $web->sender ?? 'servicio@fidelitas.com.ar';

        if ($email_alt !== '' and $email_alt !== null) 
        {
            $to = trim($email_alt); 
        }
        else
        {
            if (!empty($to_array))
            {
            $to = $to_array; 
            }
        }

        if (empty($to)) 
        {
            $to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($qcontrap->email_contacto) : trim($email_alt) );
        }

/*
        $bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
        $replyto = 'soporteled@fidelitas.com.ar';
*/
        /*
var_dump('to');
var_dump($to);
var_dump('mail_content');
var_dump($mail_content); 
var_dump('mail_subject'); 
var_dump($mail_subject); 
die();

        
        $to = []; 
        $to[] = 'marita.soria@gmail.com'; 
        $to[] = 'alejandro.burgol@vdo3.com'; 

var_dump($from); 
var_dump($to); 
var_dump($bcc); 
var_dump($mail_subject); 
var_dump($mail_content); 
die();
*/  
        if ($app_key !== 'IV')
        {
        $temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío mail a la contraparte', $web->cliente, $web->blade, 'BACK', $contraparte, 15342812, null), 'selectOne');
        }

        if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
            //var_dump($to); 
            Mailer::from($from);
            Mailer::to($to);
            Mailer::bcc($bcc);
            Mailer::replyto($replyto);
            Mailer::text($mail_content, $mail_subject);
            return Mailer::send();                          

        }
       
        return false;  
    }

    public static function generateMailBody($app_key, $qcontrap, $web) {

            $cliente = $web->cliente;
            $ncliente = $web->nombre_cliente;            
            if ($cliente == 5546348) {
                /** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
                $ncliente = ($qcontrap->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($qcontrap->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $ncliente );
            }
            if ($cliente == 7855254) {
                /** Chanchada para cambiar el nombre del cliente en caso de ser VALID **/
                $ncliente = ($qcontrap->country_code == 'BR') ? 'VALID SOLUÇOES S A' : (($qcontrap->country_code != 'AR') ? 'VALID S.A.' : $ncliente);
            }

            $template = \View::make('/led/led_email_template')->render(); 
            if ($app_key == 'EMAIL-IMPE')
            {
                $url =  $web->http_host ?? env('URL_CONTRATISTA'); 
            }
            else 
            {
                $url =  $web->http_host ?? env('URL_LEGAJOS'); 
            }
            $protocol = (strpos($url, 'https://', 0)===0) ? ('https' . chr(58) . chr(47) . chr(47)) : ('https' . chr(58) . chr(47) . chr(47));
			$url = (strpos($url, 'http', 0)===0) ? $url : $protocol . $url ;
            $logo_url = (!empty($url) and !empty($web->uri_email_logo)) ? ((strpos($web->uri_email_logo, 'http', 0)===0) ? $web->uri_email_logo : ($url . $web->uri_email_logo)) : 'https://www.fidelitas.com.ar/img/mail_logo.png';


            $body = str_replace(['%%EMAIL_TITLE%%', '%%LOGO_URL%%'], [$ncliente, $logo_url], $template);

            return $body;
    }

    public static function generateMailContent($app_key, $qcontrap, $web, $link_expira = '', $doc_id = NULL, $transact_id = NULL) {
        
        	$cliente = $web->cliente;
            $ncliente = $web->nombre_cliente;   

            if ($cliente == 5546348) {
                /** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
                $ncliente = ($qcontrap->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($qcontrap->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $ncliente );
            }

            if ($cliente == 7855254) {
                /** Chanchada para cambiar el nombre del cliente en caso de ser VALID **/
                $ncliente = ($qcontrap->country_code == 'BR') ? 'VALID SOLUÇOES S A' : (($qcontrap->country_code != 'AR') ? 'VALID S.A.' : $ncliente);
            }

            if ($app_key == 'EMAIL-IMPE')
            {
                $legajos_url =  $web->http_host ?? env('URL_CONTRATISTA'); 
            }
            else 
            {
                $legajos_url = $web->http_host ?? env('LED_WEB_PROVEEDOR_URL');
            }
            $protocol = (strpos($legajos_url, 'https://', 0)===0) ? ('https' . chr(58) . chr(47) . chr(47)) : ('https' . chr(58) . chr(47) . chr(47));
			$legajos_url = (strpos($legajos_url, 'http', 0)===0) ? $legajos_url : $protocol . $legajos_url ;

            $link_expira = !empty($link_expira) ? str_replace('-', '/', $link_expira) : NULL;
            $expira = !empty($link_expira) ? date_format(date_create_from_format('!d/m/Y', $link_expira), 'Y-m-d') : NULL;
            
            $restan_dias = '';
            $autologin = '';
            $link = '';
            
            // datos de documentacion rechazada
            $doc_rechazada = '';
            if ($doc_id != NULL) {
                $doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
                if ($doc->estado_doc == 'R') {
                    $doc_rechazada = $doc_rechazada . '<strong>Documento: </strong>' . $doc->nombre_tipo_doc . ( ($doc->es_balance > 0 OR $doc->es_manif_bienes > 0) ? ' al ' . $doc->fin_ejercicio : '' ) . '<br />';
                    $doc_rechazada = $doc_rechazada . '<strong>Plazo de carga: </strong>' . $doc->vencimiento_carga . '<br />';
                    $doc_rechazada = $doc_rechazada . '<strong>Rechazado el: </strong>' . $doc->rechazado . '<br />';
                    $doc_rechazada = $doc_rechazada . '<strong>Rechazado por: </strong>' . $doc->rechazado_por_alias . '<br />';
                    $doc_rechazada = $doc_rechazada . '<strong>Motivo del rechazo: </strong>' . $doc->texto_rechazo . '<br />';
                }
            }

            $link_pago = '';

            if ($expira != NULL) {
                $hoy = new DateTime('today');

                $days_interval = date_diff( $hoy , date_create_from_format('!d/m/Y', $link_expira) );
                $restan_dias = $days_interval->format('%d') + 1;

                // Este es el string que viene luego del '/autologin?q='
                $autologin = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->identificacion . '|' . $qcontrap->contraparte . '|' . $expira );
                $link = '<a href="' . $legajos_url . '/autologin?q=' . $autologin . '">';

                // Link para prepago
                $trans = (NULL != $transact_id) ? '|' . $transact_id : '';
                $autologin_pago = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->identificacion . '|' . $qcontrap->contraparte . '|' . $expira . '|pago' . $trans);
                $link_pago = '<a href="' . $legajos_url . '/autologin?q=' . $autologin_pago . '">';

            }

            $content = $web->mensaje; 


            if ($app_key == 'IV')
            {
                $content = str_replace('%%CLIENTE%%', $web->nombre_cliente, $content);
                $content = str_replace('%%nombre_persona%%', $qcontrap->nombre_persona, $content);
                $content = str_replace('%%uri_host%%', $web->http_host, $content);
                return $content; 
            }

            if ($app_key == 'EMAIL-IMPE')
            {
             $source = array('%%CLIENTE%%',
                            '%%NOMBRE_CLIENTE%%',
                            '%%NOMBRE_CONTACTO%%',
                            '%%CONTACTO%%',
                            '%%CONTRAPARTE%%', 
                            '%%CONTRATISTA%%', 
                            '%%ID%%', 
                            '%%IDENTIFICADOR%%', 
                            '%%ABREVIATURA%%', 
                            '%%IDENTIFICACION%%', 
                            '%%NUMERO%%', 
                            '%%CLAVE%%', 
                            '%%PASSWORD%%', 
                            '%%COUNTRY_CODE%%', 
                            '%%CODIGO_PAIS%%', 
                            '%%COUNTRY_NAME%%', 
                            '%%COUNTRY%%', 
                            '%%PAIS%%', 
                            '%%PAIS_SERVICIO%%', 
                            '%%EMAIL%%',
                            '%%EMAIL_CONTACTO%%',
                            '%%USUARIO%%',
                            '%%NOMBRE_USUARIO%%',
                            '%%NOMBRE-USUARIO%%',
                            '%%USERNAME%%',
                            '%%CONTRATISTA_URL%%',
                            '%%URL-CONTRATISTA-IMPERIUM%%');

            $replace = array($ncliente,
                            $ncliente, 
                            $qcontrap->first_name . ' ' . $qcontrap->last_name, 
                            $qcontrap->first_name . ' ' . $qcontrap->last_name, 
                            $qcontrap->nombre_persona,
                            $qcontrap->nombre_persona,
                            $qcontrap->abreviatura, 
                            $qcontrap->abreviatura, 
                            $qcontrap->abreviatura, 
                            $qcontrap->identificacion, 
                            $qcontrap->identificacion, 
                            $qcontrap->password, 
                            $qcontrap->password,
                            $qcontrap->country_code, 
                            $qcontrap->country_code, 
                            $qcontrap->country_name, 
                            $qcontrap->country_name, 
                            $qcontrap->country_name,
                            $qcontrap->pais_servicio,
                            $qcontrap->email,
                            $qcontrap->email,
                            $qcontrap->username,
                            $qcontrap->username,
                            $qcontrap->username,
                            $qcontrap->username,
                            env('URL_CONTRATISTA'),
                            env('URL_CONTRATISTA'));
             return str_replace($source, $replace, $content);

        }
        if (!empty($doc)) {
                // Busco la traducción del tipo de documento
                $trad = Traducciones::traduccionesGet(4, 'home legajos', $doc->nombre_tipo_doc);
                $nombre = !empty($trad) ? $trad->{$qcontrap->codigo_idioma} : $doc->nombre_tipo_doc;

                $source = array('%%CLIENTE%%',
                                            '%%NOMBRE_CONTACTO%%',
                                            '%%CONTACTO%%',
                                            '%%CONTRAPARTE%%', 
                                            '%%LINK%%', 
                                            '%%LINK_PAGO%%', 
                                            '%%LINK_EXPIRA%%', 
                                            '%%RESTAN_DIAS%%', 
                                            '%%DIAS%%', 
                                            '%%FECHA_LIMITE%%', 
                                            '%%ID%%', 
                                            '%%IDENTIFICADOR%%', 
                                            '%%NUMERO%%', 
                                            '%%CLAVE%%', 
                                            '%%CLAVE_EXPIRA%%', 
                                            '%%COUNTRY_CODE%%', 
                                            '%%COUNTRY_NAME%%', 
                                            '%%PAIS%%', 
                                            '%%CODIGO_PAIS%%', 
                                            '%%EMAIL_CONTACTO%%',
                                            '%%LEGAJOS_URL%%',
                                            '%%DOCUMENTACION_RECHAZADA%%',
                                            '%%TEXTO_ADICIONAL%%',
                                            '%%DOCUMENTO%%',
                                            '%%PLAZO_CARGA%%',
                                            '%%RECHAZADO%%',
                                            '%%RECHAZADO_FECHA_HORA%%',
                                            '%%RECHAZADO_POR%%',
                                            '%%MOTIVO_RECHAZO%%');

                $replace = array($ncliente, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_persona,
                                            $link, 
                                            $link_pago, 
                                            $link_expira, 
                                            $restan_dias, 
                                            $restan_dias, 
                                            $link_expira, 
                                            $qcontrap->abreviatura, 
                                            $qcontrap->abreviatura, 
                                            $qcontrap->identificacion, 
                                            $qcontrap->clave, 
                                            $qcontrap->clave_expira, 
                                            $qcontrap->country_code, 
                                            $qcontrap->country_name, 
                                            $qcontrap->country_name, 
                                            $qcontrap->country_code, 
                                            $qcontrap->email_contacto,
                                            $legajos_url,
                                            $doc_rechazada,
                                            '',
                                            $nombre,
                                            $doc->vencimiento_carga,
                                            $doc->rechazado,
                                            $doc->rechazado,
                                            $doc->rechazado_por_alias,
                                            $doc->texto_rechazo);

            }
            else {                 

            $source = array('%%CLIENTE%%',
                                        '%%NOMBRE_CONTACTO%%',
                                        '%%CONTACTO%%',
                                        '%%CONTRAPARTE%%', 
                                        '%%LINK%%', 
                                        '%%LINK_PAGO%%', 
                                        '%%LINK_EXPIRA%%', 
                                        '%%RESTAN_DIAS%%', 
                                        '%%DIAS%%', 
                                        '%%FECHA_LIMITE%%', 
                                        '%%ID%%', 
                                        '%%IDENTIFICADOR%%', 
                                        '%%NUMERO%%', 
                                        '%%CLAVE%%', 
                                        '%%CLAVE_EXPIRA%%', 
                                        '%%COUNTRY_CODE%%', 
                                        '%%COUNTRY_NAME%%', 
                                        '%%PAIS%%', 
                                        '%%CODIGO_PAIS%%', 
                                        '%%EMAIL_CONTACTO%%',
                                        '%%LEGAJOS_URL%%',
                                        '%%DOCUMENTACION_RECHAZADA%%',
                                        '%%TEXTO_ADICIONAL%%');

            $replace = array($ncliente, 
                                        $qcontrap->nombre_contacto, 
                                        $qcontrap->nombre_contacto, 
                                        $qcontrap->nombre_persona,
                                        $link, 
                                        $link_pago, 
                                        $link_expira, 
                                        $restan_dias, 
                                        $restan_dias, 
                                        $link_expira, 
                                        $qcontrap->abreviatura, 
                                        $qcontrap->abreviatura, 
                                        $qcontrap->identificacion, 
                                        $qcontrap->clave, 
                                        $qcontrap->clave_expira, 
                                        $qcontrap->country_code, 
                                        $qcontrap->country_name, 
                                        $qcontrap->country_name, 
                                        $qcontrap->country_code, 
                                        $qcontrap->email_contacto,
                                        $legajos_url,
                                        $doc_rechazada,
                                        '');
            }

            return str_replace($source, $replace, $content);

    }

     public static function generateMailSubject($app_key,$qcontrap, $web) {
        	$cliente = $web->cliente;
            $ncliente = $web->nombre_cliente;   
            if ($cliente == 5546348) {
                /** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
                $ncliente = ($qcontrap->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($qcontrap->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $ncliente );
            }

            if ($cliente == 7855254) {
                /** Chanchada para cambiar el nombre del cliente en caso de ser VALID **/
                $ncliente = ($qcontrap->country_code == 'BR') ? 'VALID SOLUÇOES S A' : (($qcontrap->country_code != 'AR') ? 'VALID S.A.' : $ncliente);
            }
 			$restan_dias = '';
            $autologin = '';
            $link = '';
            $doc_rechazada = '';
            $link_pago = '';
            $link_expira = NULL;
            $legajos_url = '';
            $content = $web->asunto;

             if ($app_key == 'IV')
            {
                $content = str_replace('%%nombre_persona%%', $qcontrap->nombre_persona, $content);
                return $content; 
            }


            $source = array('%%CLIENTE%%',
                                        '%%NOMBRE_CONTACTO%%',
                                        '%%CONTACTO%%',
                                        '%%CONTRAPARTE%%', 
                                        '%%LINK%%', 
                                        '%%LINK_PAGO%%', 
                                        '%%LINK_EXPIRA%%', 
                                        '%%RESTAN_DIAS%%', 
                                        '%%DIAS%%', 
                                        '%%FECHA_LIMITE%%', 
                                        '%%ID%%', 
                                        '%%IDENTIFICADOR%%', 
                                        '%%NUMERO%%', 
                                        '%%CLAVE%%', 
                                        '%%CLAVE_EXPIRA%%', 
                                        '%%COUNTRY_CODE%%', 
                                        '%%COUNTRY_NAME%%', 
                                        '%%PAIS%%', 
                                        '%%CODIGO_PAIS%%', 
                                        '%%EMAIL_CONTACTO%%',
                                        '%%LEGAJOS_URL%%',
                                        '%%DOCUMENTACION_RECHAZADA%%',
                                        '%%TEXTO_ADICIONAL%%');

            $replace = array($ncliente, 
                                        $qcontrap->nombre_contacto, 
                                        $qcontrap->nombre_contacto, 
                                        $qcontrap->nombre_persona,
                                        $link, 
                                        $link_pago, 
                                        $link_expira, 
                                        $restan_dias, 
                                        $restan_dias, 
                                        $link_expira, 
                                        $qcontrap->abreviatura, 
                                        $qcontrap->abreviatura, 
                                        $qcontrap->identificacion, 
                                        $qcontrap->clave, 
                                        $qcontrap->clave_expira, 
                                        $qcontrap->country_code, 
                                        $qcontrap->country_name, 
                                        $qcontrap->country_name, 
                                        $qcontrap->country_code, 
                                        $qcontrap->email_contacto,
                                        $legajos_url,
                                        $doc_rechazada,
                                        '');

            return str_replace($source, $replace, $content);

        
    }
}


