<?php namespace App\Http\Controllers;  

use App\Custom\SQLConnection;
use App\Custom\Misc;

use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Request;

use App\Models\Mailer;
use Illuminate\Support\Facades\Input;
use DB;
use DateTime;
use stdClass;


class LEDEmailController extends Controller  {

	public static function encryptString() {
		return (encrypt(Request::input('s')));
	} 
	public static function decryptString() {
		return (decrypt(Request::input('s')));
	} 
    
    public static function enviarMailLED($blade='', $subject='', $contraparte='', $link_expira='', $email_alt='', $link_forced = false, $doc_id=NULL, $transact_id=NULL) {        
        
        if ($blade != '' AND $subject != '' AND $contraparte > 0) {

            // parámetros fijos
            $app_id = 3;

            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, null));
            $cliente = $qcontrap->cliente;

            // modo de login de la contraparte, a menos que sea un link forzado (envío del link a una contraparte cuya modalidad es por Tax ID)
            if ($link_forced == false) {
				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
				$modalidad_login = $modo_login->modalidad_login;
			}
			else {
				$modalidad_login = 'L';
            }

            $body = self::generateMailBody($contraparte);
            $content = self::generateMailContent($blade, $contraparte, $link_expira, $doc_id, $transact_id);
            $mail_subject = self::generateMailContent($subject, $contraparte, $link_expira);

            // Reemplazo el contenido del mail
            $mail_content = str_replace(['%%EMAIL_CONTENT%%'], [$content], $body);

            // personalización web para el cliente si existe
            $web = SQLConnection::backendStoreProcedure('multi_web_', array('cliente', NULL, $app_id, $cliente), 'selectOne');

            $from = !empty($web->sender) ? $web->sender : 'servicio@fidelitas.com.ar';
            //$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($qcontrap->email_contacto) : trim($email_alt) );
            /* 09/01/2025: Ahora puede venir mas de una direccion de mail, separada por coma */
            $to = [];
            if ((env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR'))
            {
                $to[] = env('LED_TEST_EMAIL_ADDR');
            }
            else 
            {
                if ($email_alt !== '' and $email_alt !== null) {
                    $email_alt = str_replace(' ','',$email_alt);
                    $email_alt = str_replace(';',',',$email_alt);
                    $to = explode(",", trim($email_alt));
                } else {
                    if (!empty($to_array)) {
                        $to = $to_array;
                    } else {
                        if (!is_null($qcontrap->email_contacto) && !empty($qcontrap->email_contacto)) {
                            $qcontrap->email_contacto = str_replace(' ','',$qcontrap->email_contacto);
                            $qcontrap->email_contacto = str_replace(';',',',$qcontrap->email_contacto);
                            $to = explode(",", trim($qcontrap->email_contacto));
                        }
                        /*
                        if (!is_null($qcontrap->email_ejecutivo_cuenta) && !empty($qcontrap->email_ejecutivo_cuenta)) {
                            $qcontrap->email_ejecutivo_cuenta = str_replace(' ','',$qcontrap->email_ejecutivo_cuenta);
                            $qcontrap->email_ejecutivo_cuenta = str_replace(';',',',$qcontrap->email_ejecutivo_cuenta);
                            $to_mails = explode(",", trim($qcontrap->email_ejecutivo_cuenta));
                            $to = array_merge($to_mails, $to);
                        }
                        */
                    }

                }
            }            

            $bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
            $replyto = 'soporteled@fidelitas.com.ar';

            $temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío mail a la contraparte', $qcontrap->cliente, $blade, 'BACK', $contraparte, 15342812, $doc_id), 'selectOne');

            /* 09/01/2025: No funciona el filter_var_array($to, FILTER_VALIDATE_EMAIL)) cuando los emails son un array */
            $error = 0;
            if (is_array($to))
            {
                foreach ($to as $key => $to1) {
                    if (!filter_var($to1, FILTER_VALIDATE_EMAIL))
                        { $error = 1; break;}
                }  
            }
            else 
            {
                if (!filter_var($to, FILTER_VALIDATE_EMAIL))
                    { $error = 1; }
            }
            
            //if ((is_array($to) && filter_var_array($to, FILTER_VALIDATE_EMAIL)) || (filter_var($to, FILTER_VALIDATE_EMAIL))) {
            if ($error == 0) {
            /**/
                Mailer::from($from);
                Mailer::to($to);
                echo("LED EMAIL CONTROLLER 63");
                // dd($to);
    
                Mailer::bcc($bcc);
                if ($cliente == 5546348)
                {
                Mailer::cc('evaluaciondeproveedores@claro.com.ar');
                }
                Mailer::replyto($replyto);
                Mailer::text($mail_content, $mail_subject);
                return Mailer::send();                          

            }
        }  
        return false;  
    }



    /* Dado un ID de contraparte, levanta el template de mail y lo personaliza con logo en caso que aplique, excepto el cuerpo del mail.
            Devuelve el html al que luego deberá reemplazarse el contenido
    */
    public static function generateMailBody($contraparte = NULL) {
        if ($contraparte != NULL) {

            // parámetros fijos
            $app_id = 3;

            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, null));
            $cliente = $qcontrap->cliente;
            $ncliente = $qcontrap->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);
            }
    

            // personalización web para el cliente si existe
            $web = SQLConnection::backendStoreProcedure('multi_web_', array('cliente', NULL, $app_id, $cliente), 'selectOne');

            $template = \View::make('/led/led_email_template')->render(); 
            $protocol = (strpos(env('URL_LEGAJOS'), 'https://', 0)===0) ? ('https' . chr(58) . chr(47) . chr(47)) : ('http' . chr(58) . chr(47) . chr(47));

            $logo_url = (!empty($web->http_host) and !empty($web->uri_email_logo)) ? ($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;
        }
    }

    /*
        Dado un id de contraparte y un blade sirve para generar el texto de un mail (personalizado si existiera) en el idioma de la contraparte.
        Reemplaza los textos variables y aplica para contenido del mail o el subject.

        Ejemplos de blade:
        ALTA-LINK
        ALTA-LINK-SUBJECT
        ALTA-TAXID
        CAMBIO-CLAVE
        RECUPERAR-CLAVE
        DOCUMENTACION-RECHAZADA
        DOCUMENTACION-RECHAZADA-SUBJECT

        Parámetro link_expira formato fecha dd/mm/yyyy es opcional

    */
    public static function generateMailContent($blade = NULL, $contraparte = NULL, $link_expira = '', $doc_id = NULL, $transact_id = NULL) {
        if ($blade != NULL AND $contraparte != NULL) {

            // parámetros fijos
            $app_id = 3;
            $app_key = 'EMAIL-LED';


            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, null));
            $cliente = $qcontrap->cliente;
            $ncliente = $qcontrap->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);
            }

            // personalización web para el cliente si existe
            $legajos_url = env('LED_WEB_PROVEEDOR_URL');
            $protocol = (strpos($legajos_url, 'https://', 0)===0) ? ('https' . chr(58) . chr(47) . chr(47)) : ('http' . chr(58) . chr(47) . chr(47));

            /* 23/02/2021 */ 
            $servicio = $qcontrap->servicio_contratado;
            if ($servicio == 10)
            {
                $app_id = 4;
            }
            /* */ 
            $web = SQLConnection::backendStoreProcedure('multi_web_', array('cliente', NULL, $app_id, $cliente), 'selectOne');

            if (!empty($web)) {
                // existe personalización, busco el host de la web de legajos personalizada en el app_id = 4
                $web_legajos = SQLConnection::backendStoreProcedure('multi_web_', array('cliente', NULL, 4, $cliente), 'selectOne');
                $legajos_url = (!empty($web_legajos->http_host)) ? ($protocol . $web_legajos->http_host) : $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 = '';

            // el link de redirección a pantalla de pago, en caso que sea necesario el mail para requerir PREPAGO antes de cargar información
            $link_pago = '';

            if ($expira != NULL) {
                   $hoy = date('d/m/Y');
                if ($link_expira==null) { $restan_dias = 15;}
                else 
                {
                $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 . '|' . $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 . '|' . $contraparte . '|' . $expira . '|pago' . $trans);
                $link_pago = '<a href="' . $legajos_url . '/autologin?q=' . $autologin_pago . '">';

            }

            $hoy = date('d/m/Y');
            if ($link_expira==null) { $restan_dias = 15;}
            else 
            {
            $days_interval = date_diff( date_create_from_format('!d/m/Y', $hoy) , date_create_from_format('!d/m/Y', $link_expira) );
            $restan_dias = $days_interval->format('%d');
            }

            // 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 />';
                }
            }

            // Busco texto personalizado del mail para el cliente con el sufijo del ID cliente. Si no existe busco el genérico
            $personalized_blade = $blade . '_' . $cliente;

            $textos = SQLConnection::backendStoreProcedure('traducciones_web', array('select', $app_id, $personalized_blade, $app_key), 'selectOne');
            if (empty($textos)) {
                $textos = SQLConnection::backendStoreProcedure('traducciones_web', array('select', $app_id, $blade, $app_key), 'selectOne');
            }

            $content = $textos->{$qcontrap->codigo_idioma};                  

            //$template = \View::make('/led/led_email_template')->render();               
            //$content = str_replace(['%%EMAIL_TITLE%%', '%%EMAIL_CONTENT%%'], [$ncliente, $body], $template);      

            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%%', 
                                            '%%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%%', 
                                             '%%DIAS%%');

                $replace = array($ncliente, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_persona,
                                            $link, 
                                            $link_pago, 
                                            $link_expira, 
                                            $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,
                                             $restan_dias);

            }
            else {

                $source = array('%%CLIENTE%%',
                                            '%%NOMBRE_CONTACTO%%',
                                            '%%CONTACTO%%',
                                            '%%CONTRAPARTE%%', 
                                            '%%LINK%%', 
                                            '%%LINK_PAGO%%', 
                                            '%%LINK_EXPIRA%%', 
                                            '%%RESTAN_DIAS%%', 
                                            '%%FECHA_LIMITE%%', 
                                            '%%ID%%', 
                                            '%%IDENTIFICADOR%%', 
                                            '%%NUMERO%%', 
                                            '%%CLAVE%%', 
                                            '%%CLAVE_EXPIRA%%', 
                                            '%%COUNTRY_CODE%%', 
                                            '%%COUNTRY_NAME%%', 
                                            '%%PAIS%%', 
                                            '%%CODIGO_PAIS%%', 
                                            '%%EMAIL_CONTACTO%%',
                                            '%%LEGAJOS_URL%%',
                                            '%%DOCUMENTACION_RECHAZADA%%',
                                            '%%TEXTO_ADICIONAL%%', 
                                             '%%DIAS%%');

                $replace = array($ncliente, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_persona,
                                            $link, 
                                            $link_pago, 
                                            $link_expira, 
                                            $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,
                                            '',
                                         $restan_dias);


            }

            return str_replace($source, $replace, $content);;

        }
    }
























































    /*****************************************************************************************************************/
    // FUERA DE USO A PARTIR DE ACA ///////////////////////////////////////////////////////////////////////////////////


    public static function ledEnviarEmailContraparte($contraparte='', $fecha_expira='', $email_alt='', $link_forced = false) {        
        
    	if ($contraparte > 0) {
            
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));
            $cliente = $qcontrap->cliente;
            $ncliente = $qcontrap->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 ($link_forced == false) {
				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

				$modalidad_login = $modo_login->modalidad_login;
			}
			else {
				$modalidad_login = 'L';
            }
            

            // Parámetros hard code para buscar textos de mail en la tabla de traducciones
            $app_id = 3;
            $blade = 'EMAIL-LED';


			if ($modalidad_login == 'T') {

				$clave = Misc::generateRandomString(6);

				$hoy = new DateTime('today');
				$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("15 days")), 'Y-m-d');

				DB::selectOne("update LN_contrapartes set
										clave = '" . $clave . "', clave_temporal = 1, 
										clave_cambio = NULL,
										clave_expira = '" . $fecha_exp . "' where contraparte = " . $contraparte);

				$texto_adicional = NULL;

				if ($cliente == 5546348) {
					$texto_adicional = 'Usted tendrá tiempo para la carga de información hasta el día ' . $qcontrap->limite_carga_inicial;

					/** 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 );
				}

				$content = array('nombre_cliente' => $ncliente,
											'nombre_persona' => $qcontrap->nombre_persona,
											'abreviatura' => $qcontrap->abreviatura,
											'numero' => $qcontrap->numero,
											'identificacion' => $qcontrap->identificacion,
											'nombre_contacto' => $qcontrap->nombre_contacto,
											'email_contacto' => $qcontrap->email_contacto,
											'country_code' => $qcontrap->country_code,
											'country_name' => $qcontrap->country_name,
											'clave' => $clave,
											'clave_expira' => $qcontrap->clave_expira,
											'url' => env('LED_WEB_PROVEEDOR_URL'),
											'texto_adicional' => $texto_adicional );

				$from = 'servicio@fidelitas.com.ar';
				$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($qcontrap->email_contacto) : $email_alt );
				$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
				$replyto = 'soporteled@fidelitas.com.ar';
				$attach = ($qcontrap->cliente == 5546348 OR $qcontrap->cliente == 3920694 OR $qcontrap->cliente == 2254875) ? env('PATH_COMPARTIDO') . '/legajos/descargas/5546348/Instructivo LED - Contratistas AMX Claro.pdf' : '';

				if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
					Misc::enviarMailLED('/led/led_email_taxid' , $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes", $attach);
					return true;
				}

			}

			else {

				// envío de mail modo link

				$email = ($email_alt == '') ? $qcontrap->email_contacto : $email_alt;
                
				$expira = date_format(date_create_from_format('d/m/Y', $fecha_expira), 'Y-m-d');
				$ident = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->identificacion . '|' . $contraparte . '|' . $expira );
                $link = env('URL_LEGAJOS_AUTOLOGIN') . "?q=" . $ident;
                $link = '<a href="' . $link . '">aquí</a>';
                $hoy = date('d/m/Y');
                $days_interval = date_diff( date_create_from_format('!d/m/Y', $hoy) , date_create_from_format('!d/m/Y', $fecha_expira) );
                $restan_dias = $days_interval->format('%d') + 1;
                      
                // para buscar textos en la tabla de traducciones
                $app_key = 'ALTA-LINK';

                // Busco texto personalizado del mail para el cliente con el sufijo del ID cliente. Si no existe busco el genérico
                $key_search = $app_key . '_' . $cliente;

                $textos = SQLConnection::backendStoreProcedure('traducciones_web', array('select', $app_id, $blade, $key_search), 'selectOne');
                if (empty($textos)) {
                    $textos = SQLConnection::backendStoreProcedure('traducciones_web', array('select', $app_id, $blade, $app_key), 'selectOne');
                }

                $app_key = 'ALTA-LINK-SUBJECT';

                // Busco asunto del mail personalizado para el cliente con el sufijo del ID cliente. Si no existe busco el genérico
                $key_search = $app_key . '_' . $cliente;
        
                $subject = SQLConnection::backendStoreProcedure('traducciones_web', array('select', $app_id, $blade, $key_search), 'selectOne');
                if (empty($subject)) {
                    $subject = SQLConnection::backendStoreProcedure('traducciones_web', array('select', $app_id, $blade, $app_key), 'selectOne');
                }
        
        

                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

				/*if (!empty($report->texto_email_solicitud)) {
					// el texto del mail surge del report que se encuentra activo para la contraparte

					//$fecha_limite_doc = $report->fecha_limite_doc;
					$fecha_limite_doc = $fecha_expira;
					$click = 'click <a href="' . $link . '">aquí</a>';
					$tarea_gestion_doc = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', NULL, $report->informe), 'selectOne');
									
					$hoy = date('d/m/Y');
					$days_interval = date_diff( date_create_from_format('!d/m/Y', $hoy) , date_create_from_format('!d/m/Y', $fecha_expira) );
					$restan_dias = $days_interval->format('%d') + 1;

					$content = str_replace(Chr(13).Chr(10), '<br />', $report->texto_email_solicitud);
					$content = str_replace('%%NOMBRE_DESTINATARIO%%', $qcontrap->nombre_contacto, $content);
					$content = str_replace('%%SUJETO_INFORMADO%%', $report->nombre_persona, $content);
					$content = str_replace('%%CLIENTE%%', $ncliente, $content);
					$content = str_replace('%%EMPRESA_SOLICITANTE%%', '', $content);
					$content = str_replace('%%LINK%%', $click, $content);
					$content = str_replace('%%RESTAN_DIAS%%', $restan_dias, $content);
					if($fecha_limite_doc){
						$content = str_replace('%%FECHA_LIMITE%%', $fecha_limite_doc, $content);
					}
					else{
						$content = str_replace('%%FECHA_LIMITE%%', $qcontrap->limite_carga_inicial, $content);
					}
					$content = str_replace('%%NOMBRE_USUARIO%%', $tarea_gestion_doc->first_name . ' ' . $tarea_gestion_doc->last_name, $content);
					$content = str_replace('%%EMAIL_USUARIO%%', $tarea_gestion_doc->email, $content);

					$from = 'servicio@fidelitas.com.ar';
					$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';

					$asunto = ($report->asunto_email_solicitud != NULL) ? $report->asunto_email_solicitud . ' ' . $ncliente : 'Fidelitas - Solicitud de documentación '. $ncliente;

					$replyto = 'soporteled@fidelitas.com.ar';

					if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
						Misc::enviarMailLED('/led/led_email_custom' , $from, $to, $bcc, $replyto, $content, $asunto);

						// Actualizar tarea de gestión de documentación, en caso de encontrarse activa 
						$temp = SQLConnection::backendStoreProcedure('LN_informes', array('actualizar_tarea_gestion', $contraparte, NULL, Session::get('usuario')->user_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, date_create_from_format('d/m/Y', $fecha_expira)), 'selectOne');

						return true;
					}

				}

				else {
					// texto estándard con el link

					$texto = "<br /><br />Haga click <a href='" . $link . "' target='_blank'>aquí</a> para acceder a la web de carga para contrapartes de " . $ncliente . ".<br /><br />";

					$content = array('nombre_cliente' => $ncliente,
													'nombre_persona' => $qcontrap->nombre_persona,
													'abreviatura' => $qcontrap->abreviatura,
													'numero' => $qcontrap->numero,
													'nombre_contacto' => $qcontrap->nombre_contacto,
													'email_contacto' => $qcontrap->email_contacto,
													'country_code' => $qcontrap->country_code,
													'country_name' => $qcontrap->country_name,
													'link' => $link,
													'fecha_expiracion' => $fecha_expira,
													'texto' => $texto );
						
					$from = 'servicio@fidelitas.com.ar';
					$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
					$asunto = 'Fidelitas - Solicitud de documentación '. $ncliente;				
					$replyto = 'soporteled@fidelitas.com.ar';

					if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
						Misc::enviarMailLED('/led/led_email_link' , $from, $to, $bcc, $replyto, $content, $asunto);

						// Actualizar tarea de gestión de documentación, en caso de encontrarse activa 
						$temp = SQLConnection::backendStoreProcedure('LN_informes', array('actualizar_tarea_gestion', $contraparte, NULL, Session::get('usuario')->user_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, date_create_from_format('d/m/Y', $fecha_expira)), 'selectOne');

						return true;
					}

				}*/

            }
            
            if (!empty($textos) AND !empty($subject)) {
            
                $subj = $subject->{$qcontrap->codigo_idioma};
                $body = $textos->{$qcontrap->codigo_idioma};                  
                
                $source = array('%%CLIENTE%%',
                                            '%%NOMBRE_CONTACTO%%',
                                            '%%CONTACTO%%',
                                            '%%CONTRAPARTE%%', 
                                            '%%LINK%%', 
                                            '%%LINK_EXPIRA%%', 
                                            '%%RESTAN_DIAS%%', 
                                            '%%FECHA_LIMITE%%', 
                                            '%%ID%%', 
                                            '%%IDENTIFICADOR%%', 
                                            '%%NUMERO%%', 
                                            '%%CLAVE%%', 
                                            '%%CLAVE_EXPIRA%%', 
                                            '%%COUNTRY_CODE%%', 
                                            '%%COUNTRY_NAME%%', 
                                            '%%PAIS%%', 
                                            '%%CODIGO_PAIS%%', 
                                            '%%EMAIL_CONTACTO%%',
                                            '%%TEXTO_ADICIONAL%%');
                
                $replace = array($ncliente, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_contacto, 
                                            $qcontrap->nombre_persona,
                                            $link, 
                                            $fecha_expira, 
                                            $restan_dias, 
                                            $fecha_expira, 
                                            $qcontrap->abreviatura, 
                                            $qcontrap->abreviatura, 
                                            $qcontrap->identificacion, 
                                            $qcontrap->clave, 
                                            $qcontrap->clave_expira, 
                                            $qcontrap->country_code, 
                                            $qcontrap->country_name, 
                                            $qcontrap->country_code, 
                                            $qcontrap->country_name, 
                                            $qcontrap->email_contacto);
                              
                $subj = str_replace($source, $replace, $subj);
                $body = str_replace($source, $replace, $body);

                $template = \View::make('/led/led_email_template')->render();               
                $content = str_replace(['%%EMAIL_TITLE%%', '%%EMAIL_CONTENT%%'], [$ncliente, $body], $template);
                
                $web = SQLConnection::backendStoreProcedure('multi_web_', array('cliente', NULL, $app_id, $cliente), 'selectOne');
                $from = !empty($web->sender) ? $web->sender : 'servicio@fidelitas.com.ar';
                $to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($qcontrap->email_contacto) : $email_alt );
                $bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
                $replyto = 'soporteled@fidelitas.com.ar';

                if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
                    $protocol = (strpos(env('URL_LEGAJOS'), 'https://', 0)===0) ? 'https://' : 'http://';
                    $logo_url = (!empty($web->http_host) and !empty($web->uri_logo)) ? ($protocol . $web->http_host . $web->uri_logo) : 'https://www.fidelitas.com.ar/img/mail_logo.png';

                    $content = str_replace(['%%EMAIL_TITLE%%', '%%LOGO_URL%%', '%%EMAIL_CONTENT%%'], [$ncliente, $logo_url, $body], $template);

                    Mailer::from($from);
                    Mailer::to($to);
                    Mailer::bcc($bcc);
                    Mailer::replyto($replyto);
                    Mailer::text($content, $subj);
                    return Mailer::send();                          
                }
                      
            }            

		}
		return false;

    }




}
