<?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 DB;
use DateTime;
use stdClass;

//use Illuminate\Support\Facades\Input;
//use Illuminate\Support\Facades\Storage;


class ReportsController extends Controller {


    public static function ledContraparteReports() {
        $id = Request::input('contraparte');

        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $reports = SQLConnection::backendStoreProcedure('LN_demo_', array('reports', $id, $qcontrap->cliente), 'select');

        return view('/led/led_contraparte_reports')->with(compact(['qcontrap', 'reports']));
    }


    public static function ledContraparteReportsSelect() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');
        $prd = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $producto, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'selectOne');
        // dd($prd);
        if ($prd->producto_id == 'dossierdemo' || $prd->producto_id == 'legajo' || $prd->producto_id == 'limiteCredito') {
            return self::ledContraparteDossierData($id, $producto, false, false);
        } elseif ($prd->producto_id == 'businessreport') {
            return self::ledContraparteBRData($id, $producto, false, false);
        } elseif ($prd->producto_id == 'inquiroVitae') {
            return self::ledContraparteIVData($id, $producto, false, false);
        }

    }





    /** Devuelve vista con datos de DOSSIER **/
    public static function ledContraparteDossierData($id, $producto, $preview = false, $header = true) {
        self::validateDossierPath($id);

        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $logo_name = null;
        $file_exists = false;
        if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
            $logo_name = $id . '.png';
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                $logo_name = $id . '.jpg';
            }
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                $logo_name = $id . '.gif';
            }
        }

        $dossier_file = '';
        $dossier_url = '';
        if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf')) {
            $dossier_file = $id . '.pdf';
            $dossier_url = env('RUTA_DOCUMENTOS') . '/dossier/' . $id . '.pdf';
        }
        //var_dump($id);die();

        $dossierdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_dossier_contraparte', $id), 'selectOne');
        $dossierdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $id, NULL, $producto), 'selectOne');

        /* Busco informe en producción asociado al producto Dossier para la contraparte */
        $informe = SQLConnection::backendStoreProcedure('LN_demo_', array('datos_informe', $id, NULL, $producto), 'selectOne');
        //var_dump($informe->estado_informe); die();


        $tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe', $id, NULL, $producto), 'select');
        $prioridades = SQLConnection::backendStoreProcedure('LN_demo_', array('prioridades'), 'select');
        if (isset($informe->informe) && $informe->informe != null) {
            $gestion = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', $id, $informe->informe), 'selectOne');
        }

        $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'SCORE_DOSSIER'), 'selectOne');
        $nivelr = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'NIVEL_RIESGO'), 'selectOne');
        $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'DEP_ECON'), 'selectOne');

        if (!$preview) {
            $gestion = (empty($gestion)) ? '' : $gestion;
            $vista = \View::make('/led/led_dossierdemo')->with(compact(['contrap', 'header', 'producto', 'logo_name', 'dossierdemo', 'dossierdata',
                'informe', 'gestion', 'tipos_informe', 'prioridades', 'score', 'nivelr', 'depecon', 'dossier_file', 'dossier_url']));

        } else {
            $vista = \View::make('/led/led_contraparte_dossier_preview')->with(compact(['contrap', 'producto', 'logo_name', 'dossierdemo', 'dossierdata', 'score', 'nivelr', 'depecon', 'dossier_file', 'dossier_url']));
        }

        return $vista;
    }


    /*** Devuelve vista con datos de BUSINESS REPORT ***/
    public static function ledContraparteBRData($id, $producto, $preview = false, $header = true) {
        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $logo_name = null;
        $file_exists = false;
        if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
            $logo_name = $id . '.png';
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                $logo_name = $id . '.jpg';
            }
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                $logo_name = $id . '.gif';
            }
        }


        $businessrpt_file = '';
        $businessrpt_url = '';
        if (file_exists(env('PATH_DOCUMENTOS') . '/businessreport/' . $id . '.pdf')) {
            $businessrpt_file = $id . '.pdf';
            $businessrpt_url = env('RUTA_DOCUMENTOS') . '/businessreport/' . $id . '.pdf';
        }


        $businessreport = SQLConnection::backendStoreProcedure('LN_demo_', array('check_business_report_contraparte', $id), 'selectOne');
        $brdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $id, NULL, $producto), 'selectOne');




        // https?://[^/\s]+/\S+\.(jpg|png|gif)
        // ~(http.*\.)(jpe?g|png|[tg]iff?|svg)~i

        if (!empty($brdata)) {
            $imgs = preg_match_all('~(https?://[^/\s]+/\S+\.)(jpe?g|png|[tg]iff?|svg)~', $brdata->analisis, $matches);

            if ($imgs > 0) {

                /** bajada de imágenes **/
                $source_array = [];
                $replace_array = [];

                foreach ($matches[0] as $k => $img_url) {
                    $file_name = basename($img_url);
                    $img_content = Misc::CURLCall($img_url, NULL, 'GET');
                    if (!empty($img_content)) {

                        if (!(preg_match('(https?://)', $img_content, $m) > 0)) {
                            file_put_contents(env('PATH_DOCUMENTOS') . '/businessreport/' . $file_name, $img_content);
                            $source_array[] = $img_url;
                            $replace_array[] = env('RUTA_DOCUMENTOS') . '/businessreport/' . $file_name;
                        }

                    }
                }

                if (sizeof($source_array) == sizeof($replace_array) && sizeof($source_array) > 0) {
                    /* Actuailzación del campo análisis con referencia a imágenes locales */
                    $update_text = str_replace($source_array, $replace_array, $brdata->analisis);

                    $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('actualizar_analisis', $id, $contrap->cliente, $producto
                        , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
                        , NULL, NULL, NULL, NULL, NULL, $update_text), 'selectOne');

                    /** Releo con referencia local **/
                    $brdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $id, NULL, $producto), 'selectOne');
                }

            }
        }

        /* Busco informe en producción asociado al producto Dossier para la contraparte */
        $informe = SQLConnection::backendStoreProcedure('LN_demo_', array('datos_informe', $id, NULL, $producto), 'selectOne');
        $tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe', $id, NULL, $producto), 'select');
        $prioridades = SQLConnection::backendStoreProcedure('LN_demo_', array('prioridades'), 'select');


        $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'SCORE_BR'), 'selectOne');

        if (!$preview) {
            $vista = \View::make('/led/led_business_report')->with(compact(['contrap', 'header', 'producto', 'logo_name', 'businessreport', 'brdata',
                'informe', 'tipos_informe', 'prioridades', 'score', 'businessrpt_file', 'businessrpt_url']));
        } else {
            $vista = \View::make('/led/led_business_report_preview')->with(compact(['contrap', 'producto', 'logo_name', 'businessreport', 'brdata', 'score', 'businessrpt_file', 'businessrpt_url']));
        }

        return $vista;
    }


    /*** Devuelve vista con datos para carga de INQUIRO VITAE ***/
    public static function ledContraparteIVData($id, $producto, $preview = false, $header = true) {

        /* La persona */
        $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $id), 'selectOne');

        if (!empty($busqueda)) {

            $inquirovitae_exists = FALSE;
            $inquirovitae_path = '';
            $inquirovitae_url = '';
            if (file_exists(env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->contraparte . '_' . $busqueda->gestion . '.pdf')) {
                $inquirovitae_exists = TRUE;
                $inquirovitae_path = env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->contraparte . '_' . $busqueda->gestion . '.pdf';
                $inquirovitae_url = env('RUTA_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->contraparte . '_' . $busqueda->gestion . '.pdf';
            }


            $foto_path = '';
            $foto_url = '';
            if (file_exists(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->foto)) {
                $foto_path = $id . '.pdf';
                $foto_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->foto;
            }

            // busqueda del cv y la foto de perfil
            $rootpath = env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion;
            $pattern = str_pad($busqueda->iv_busqueda, 8, '0', STR_PAD_LEFT) . '_*.*';
            $cv_exists = FALSE;
            $cv_full_url = NULL;
            $cv_url = NULL;
            $foto_exists = FALSE;
            $foto_full_url = NULL;

            if (is_dir($rootpath)) {

                $files = glob($rootpath . '/' . $pattern);
                foreach ($files as $f => $file) {
                    $extn = strtolower(substr($file, strrpos($file, '.') + 1));

                    if ($cv_full_url == NULL) {
                        if ($extn == 'pdf' || $extn == 'doc' || $extn == 'docx') {
                            $cv_file = basename($file);

                            $cv_full_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion . '/' . $cv_file . '?r=' . time();
                            $cv_url = env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion . '/' . $cv_file;

                            $cv_exists = TRUE;
                        }
                    }

                    if ($foto_full_url == NULL) {
                        if ($extn == 'jpg' || $extn == 'png') {
                            $foto_file = basename($file);
                            if ($foto_file == str_pad($busqueda->iv_busqueda, 8, '0', STR_PAD_LEFT) . '_foto_sq.' . $extn) {
                                $foto_full_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion . '/' . $foto_file . '?r=' . time();
                                $foto_exists = TRUE;
                            }
                        }
                    }

                }
            }



            $ivdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $id, NULL, $producto), 'selectOne');

            /* Busco informe en producción asociado al producto Inquiro para la contraparte */
            $informe = SQLConnection::backendStoreProcedure('LN_demo_', array('datos_informe', $id, NULL, $producto), 'selectOne');
            $tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe', $id, NULL, $producto), 'select');
            $prioridades = SQLConnection::backendStoreProcedure('LN_demo_', array('prioridades'), 'select');
            if (isset($informe->informe) && $informe->informe != null) {
                $gestion = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', $id, $informe->informe), 'selectOne');
            }

            //$valoracion = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'VALORACION_IV'), 'selectOne');
            $indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('obtener_indicadores', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $id), 'select');
            foreach ($indicadores as $key => $value) {
                if ($value->valoracion != 'F') {
                    unset($indicadores[$key]);
                }
            }

            // GUARDAMOS EL RESULTADO DE LA CONSULTA, CLIENTE PARA PRUEBA: '66994', PRODUCTO: '2002'
            $resultado = SQLConnection::backendStoreProcedure('LN_demo_', array('datos_informe', $id, NULL, $producto));

            // EXTRAEMOS EL VALOR DEL INDICE 'estado_informe' QUE DEBE RETORNAR UN CARACTER, 'nombre_estado' RETORNA UN STRING.
            $info = Misc::filtro_claudio($resultado, 'nombre_estado');

            // LA SIGUIENTE LINEA COMENTADA ES PARA VER CONTENIDO DEL STORE
            //$info = Misc::contenido_store($resultado);
            if (!$preview) {
                $vista = \View::make('/led/inquirovitae')->with(compact(['busqueda', 'inquirovitae_exists', 'inquirovitae_path', 'inquirovitae_url', 'foto_exists', 'foto_full_url', 'cv_exists', 'cv_full_url', 'cv_url', 'ivdata', 'informe', 'tipos_informe', 'prioridades', 'gestion', 'indicadores', 'info']));
            } else {
                $vista = \View::make('/led/inquirovitae_preview')->with(compact([]));
            }

            return $vista;
        }

    }


    /* subir archivo informe inquiro vitae */
    public static function uploadInquiroVitae() {
        $contraparte = Request::input('contraparte');
        $iv_busqueda = Request::input('iv_busqueda');
        $producto = Request::input('producto');

        if (!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {
            $userfile_name = $_FILES['archivo']['name'];
            $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.') + 1);

            $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', $iv_busqueda), 'selectOne');

            $ftype = strtolower($userfile_extn);
            if ($ftype == 'pdf') {
                if (basename($_FILES['archivo']['name']) != '') {

                    if (!is_dir(env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente)) {
                        mkdir(env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente);
                    }
                    if (!is_dir(env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte)) {
                        mkdir(env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte);
                    }

                    $path = env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->contraparte . '_' . $busqueda->gestion . '.' . $ftype;
                    move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

                    // Actualizar marca de archivo del informe Inquiro Disponible
                    $temp = SQLConnection::backendStoreProcedure('LN_gestiones_', array('upload_inquiro_vitae', $busqueda->gestion, NULL, $busqueda->contraparte, NULL, NULL, NULL, Session::get('usuario')->user_id), 'selectOne');

                    $datav = self::ledContraparteIVData($contraparte, $producto, FALSE, FALSE);

                    return json_encode(array('vista' => $datav->render()));
                }
            }
        }
    }


    /** borrar informe de archivo vitae **/
    public static function deleteInquiroVitae() {
        $contraparte = Request::input('contraparte');
        $iv_busqueda = Request::input('iv_busqueda');
        $producto = Request::input('producto');

        $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $contraparte), 'selectOne');

        if (!empty($busqueda)) {

            $files = glob(env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->contraparte . '_' . $busqueda->gestion . '.pdf');
            if (!empty($files)) {
                foreach ($files as $key => $fpath) {
                    unlink($fpath);
                }

            }

            // Actualizar marca de archivo del informe Inquiro NO Disponible
            $temp = SQLConnection::backendStoreProcedure('LN_gestiones_', array('delete_inquiro_vitae', $busqueda->gestion, NULL, $busqueda->contraparte, NULL, NULL, NULL, Session::get('usuario')->user_id), 'selectOne');

            $datav = self::ledContraparteIVData($contraparte, $producto, FALSE, FALSE);

            return json_encode(array('vista' => $datav->render()));
        }
    }


    // actualiza datos del inquiro vitae (valoración y publicación)
    public static function updateInquiroVitae() {
        $contraparte = Request::input('contraparte');
        $nombre_persona = Request::input('nombre_persona');
        $cliente = Request::input('cliente');
        $emails = Request::input('emails');
        $iv_busqueda = Request::input('iv_busqueda');
        $producto = Request::input('producto');
        $informe = Request::input('informe');
        $estado_informe = Request::input('estado_informe');
        $app_id = 6;
        $servicio = 10;
        //$valoracion_iv = !empty(Request::input('valoracion_iv')) ? Request::input('valoracion_iv') : NULL;

        $visible = !empty(Request::input('visible')) ? Request::input('visible') : 0;

        $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $contraparte), 'selectOne');
        $publicado_anterior = $busqueda->visible;

        $msg = ($visible > 0) ? (($estado_informe != 'K') ? 'No se puede publicar el informe ya que el mismo no se encuentra aprobado en producción.' : '') : '';

        if (!empty($busqueda)) {
            //Volver a ponerlo, lo saque el 02/03/2021 para probar el mail 
            $indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('obtener_indicadores', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $contraparte), 'select');

            foreach ($indicadores as $key => $value) {
                if ($value->valoracion != 'F') {
                    unset($indicadores[$key]);
                }
            }
            foreach ($indicadores as $ind) {

                $valor = !empty(Request::input($ind->clave_indicador)) ? Request::input($ind->clave_indicador) : NULL;
                if (NULL != $valor) {
                    $temp = SQLConnection::backendStoreProcedure('IV_panel_control', array('actualizar_indicador', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $contraparte, $ind->clave_indicador, $valor), 'selectOne');
                }
            }

            // controlo si se puede publicar o no
            $visible = ($visible > 0) ? (($msg == '') ? 1 : 0) : 0;

            if ($visible == 1 && $publicado_anterior == 0) {
                $temp = SQLConnection::backendStoreProcedure('IV_busquedas_', array('publicar_inquiro', NULL, $contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');
            } else {
                if ($visible == 0 && $publicado_anterior == 1) {
                    $temp = SQLConnection::backendStoreProcedure('IV_busquedas_', array('despublicar_inquiro', NULL, $contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');
                }
            }

            // Envio de e-mail de informe finalizado

            $enviar = !empty(Request::input('enviar_mail')) ? true : false;
            if ($enviar) {
                $emails = Request::input('emails');

                //$emails = 'maria.soria@fidelitas.com.ar;marita.soria@gmail.com,maria.sorifidelitas.com.ar';
                $emails = str_replace(';', ',', $emails);
                $email = explode(',', $emails);
                $emailok = [];

                $total = 0;
                $error = 0;
                $correctos = [];
                $errores = [];

                foreach ($email as $key => $to) {
                    $to = trim($to);
                    if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
                        $emailok[$key] = $to;
                        $correctos[$total] = new stdClass();
                        $correctos[$total]->contraparte = null;
                        $correctos[$total]->mail = $to;
                        $total++;
                    } else {
                        $errores[$error] = new stdClass();
                        $errores[$error]->contraparte = null;
                        $errores[$error]->mail = $to;
                        $error++;
                    }
                }

                $to = $emailok;

                /* 02/03/2021: Lo cambiamos, llamando a EmailController

                                $data = SQLConnection::backendStoreProcedure('multi_web_', array('mail_cliente', NULL, $app_id, $cliente, null, $servicio), 'selectOne');

                                $idioma = $busqueda->idioma ?? 'spa'; 
                                if ($idioma == 'eng')
                                {
                                    $content = str_replace(Chr(13).Chr(10), '<br />', $data->body_eng);
                                    $subject =  $data->subj_eng;
                                } 
                                elseif ($idioma == 'por')
                                {
                                    $content = str_replace(Chr(13).Chr(10), '<br />', $data->body_por);
                                    $subject =  $data->subj_por;

                                }
                                else 
                                {
                                    $content = str_replace(Chr(13).Chr(10), '<br />', $data->body_spa);
                                    $subject =  $data->subj_spa;
                                }

                                $content = str_replace('%%CLIENTE%%', $data->nombre_cliente, $content);
                                $content = str_replace('%%nombre_persona%%', $nombre_persona, $content);
                                $content = str_replace('%%uri_host%%', $data->http_host, $content);

                                $subject = str_replace('%%nombre_persona%%', $nombre_persona, $subject);

                                $from = $data->sender ?? 'servicio@fidelitas.com.ar';

                                //$to[] = 'soporteled@fidelitas.com.ar';
                                $bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';

                                $url =  $data->http_host; 
                                $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 = (!empty($data->uri_email_logo)) ? ((strpos($data->uri_email_logo, 'http', 0)===0) ? $data->uri_email_logo : ($url . $data->uri_email_logo)) : 'https://www.fidelitas.com.ar/img/mail_logo.png';
                                //$logo = $data->uri_email_logo ?? 'https://www.fidelitas.com.ar/img/mail_logo.png';
                                $asunto = $subject ?? 'Informe finalizado';
                                $replyto = 'soporteled@fidelitas.com.ar';
                                //if (filter_var($to, FILTER_VALIDATE_EMAIL)) {     
                                $result = EmailController::enviarMail('EMAIL-LED','ALTA','',$id, $expira,($enviar==0) ? '' : trim($email) , true);

                                   $title = $data->nombre_cliente ?? ''; 
                                   $to = 'marita.soria@gmail.com'; 
                                   //Misc::enviarMailLED('/led/led_email_custom', $from, $to, $bcc, $replyto, $content, $asunto, '','','', ''); 

                                    Misc::enviarMailLED('/led/led_email_generico', $from, $to, $bcc, $replyto, $content, $asunto, '','','',$logo,$title); 
                                   //Misc::enviarMailLED('/led/led_email_generico', $from, $to, $bcc, $replyto, $content, $asunto, '','','', $logo); 
                                //}
                 */

                $false = false;
                $null = null;
                //EmailController::enviarMail('IV','', '', $contraparte, '', 'maria.soria@fidelitas.com.ar', $false, $null, $null, $to); 
                EmailController::enviarMail('IV', '', '', $contraparte, '', '', $false, $null, $null, $to);

                $vista = \View::make('/led/led_emails_enviados')->with(compact(['total', 'correctos', 'error', 'errores']));
                return json_encode(array('vista' => $vista->render(), 'message' => $msg));
            } else {
                $datav = self::ledContraparteIVData($contraparte, $producto, FALSE, FALSE);
                return json_encode(array('vista' => $datav->render(), 'message' => $msg));
            }

        }

    }

    // subida de la foto de  inquiro vitae y resize
    public static function uploadInquiroVitaeFoto() {
        $contraparte = !empty(Request::input('contraparte')) ? Request::input('contraparte') : NULL;
        $iv_busqueda = !empty(Request::input('iv_busqueda')) ? Request::input('iv_busqueda') : NULL;
        $producto = !empty(Request::input('iv_busqueda')) ? Request::input('producto') : NULL;

        if ($contraparte != NULL && $iv_busqueda != NULL && $producto != NULL) {
            // var_dump($_FILES['foto']);
            if (!empty($_FILES['foto']) && $_FILES['foto']['name'] !== '') {
                $userfile_name = $_FILES['foto']['name'];
                $tmp_name = $_FILES["foto"]["tmp_name"];
                $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.') + 1);

                $ftype = strtolower($userfile_extn);

                if ($ftype == 'jpg' || $ftype == 'gif') {

                    $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', $iv_busqueda), 'selectOne');

                    if (basename($_FILES['foto']['name']) != '') {

                        if (!is_dir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente)) {
                            mkdir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente);
                        }
                        if (!is_dir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte)) {
                            mkdir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte);
                        }
                        if (!is_dir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion)) {
                            mkdir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion);
                        }

                        $rootpath = env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion;
                        $target_filename = str_pad($iv_busqueda, 8, '0', STR_PAD_LEFT) . '_foto.' . $ftype;

                        $fullpath = $rootpath . '/' . $target_filename;

                        //move_uploaded_file($_FILES['foto']['tmp_name'], $fullpath);

                        // Lectura de contenido de la imagen
                        $foto = \imagecreatefromstring(file_get_contents($tmp_name));

                        // leo dimensiones
                        $width = imagesx($foto);
                        $height = imagesy($foto);
                        //te modifiqué el tamaño a 0 para que pasen las más chicas..  LT
                        if ($width >= 0 && $height >= 0) {

                            if (move_uploaded_file($tmp_name, $fullpath)) {

                                // Proceso imagen después de guardar el original

                                if ($width > $height) {
                                    // Hacer imagen cuadrada centrada cortando los mismos pixeles de izquierda y derecha
                                    $sq_width = $height;

                                    $dst_x = 0;
                                    $dst_y = 0;
                                    $src_x = intdiv(($width - $height), 2);
                                    $src_y = 0;
                                } else {
                                    // Hacer imagen cuadrada centrada cortando los mismos pixeles de arriba y abajo
                                    $sq_width = $width;

                                    $dst_x = 0;
                                    $dst_y = 0;
                                    $src_x = 0;
                                    $src_y = intdiv(($height - $width), 2);
                                }
                                $sq_height = $sq_width;


                                // objeto contenedor
                                $image_sq = imagecreatetruecolor($sq_width, $sq_height);

                                //$squared = imagecopyresampled($image_sq, $foto, $dst_x, $dst_y, $src_x, $src_y, $width, $height, $sq_width, $sq_height);
                                $squared = imagecopy($image_sq, $foto, $dst_x, $dst_y, $src_x, $src_y, $width, $height);

                                if ($squared) {

                                    $target_filename = str_pad($iv_busqueda, 8, '0', STR_PAD_LEFT) . '_foto_sq.' . $ftype;
                                    $filename_sq = $target_filename;
                                    $fullpath = $rootpath . '/' . $target_filename;

                                    if ($ftype == 'jpg') {
                                        $saved = imagejpeg($image_sq, $fullpath, 80);
                                    } else {
                                        // no se usa
                                        $saved = image($image_sq, $fullpath, 80);
                                    }


                                    $image_sq_120 = imagecreatetruecolor(120, 120);
                                    $target_filename = str_pad($iv_busqueda, 8, '0', STR_PAD_LEFT) . '_foto_120.' . $ftype;
                                    $fullpath = $rootpath . '/' . $target_filename;
                                    $squared120 = imagecopyresized($image_sq_120, $image_sq, 0, 0, 0, 0, 120, 120, $sq_width, $sq_height);

                                    if ($ftype == 'jpg') {
                                        $saved_120 = imagejpeg($image_sq_120, $fullpath, 80);
                                    } else {
                                        // no se usa
                                        $saved_120 = imagepng($image_sq_120, $fullpath, 80);
                                    }


                                    $image_sq_60 = imagecreatetruecolor(60, 60);
                                    $target_filename = str_pad($iv_busqueda, 8, '0', STR_PAD_LEFT) . '_foto_60.' . $ftype;
                                    $fullpath = $rootpath . '/' . $target_filename;
                                    $squared60 = imagecopyresized($image_sq_60, $image_sq, 0, 0, 0, 0, 60, 60, $sq_width, $sq_height);

                                    if ($ftype == 'jpg') {
                                        $saved_60 = imagejpeg($image_sq_60, $fullpath, 80);
                                    } else {
                                        // no se usa
                                        $saved_60 = imagepng($image_sq_60, $fullpath, 80);
                                    }
                                }
                            }
                        }

                        $datav = self::ledContraparteIVData($contraparte, $producto, FALSE, FALSE);

                        return json_encode(array('vista' => $datav->render()));
                    }
                }
            }

        }
    }


    public static function uploadInquiroVitaeCV() {
        $contraparte = !empty(Request::input('contraparte')) ? Request::input('contraparte') : NULL;
        $iv_busqueda = !empty(Request::input('iv_busqueda')) ? Request::input('iv_busqueda') : NULL;
        $producto = !empty(Request::input('iv_busqueda')) ? Request::input('producto') : NULL;
        $cv_url = !empty(Request::input('cv_url')) ? Request::input('cv_url') : NULL;
        if (!empty($_FILES['archivo_cv']) && $_FILES['archivo_cv']['name'] !== '') {
            $userfile_name = $_FILES['archivo_cv']['name'];
            $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.') + 1);
            $extn = strtolower($userfile_extn);
            if ($extn == 'pdf' || $extn == 'doc' || $extn == 'docx') {
                if ($cv_url !== null) {
                    $cv_url_ant = $cv_url . '.' . date("Y-m-d");
                    rename($cv_url, $cv_url_ant);
                }
                $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', $iv_busqueda), 'selectOne');
                if (basename($_FILES['archivo_cv']['name']) != '') {
                    if (!is_dir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente)) {
                        mkdir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente);
                    }
                    if (!is_dir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte)) {
                        mkdir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte);
                    }
                    if (!is_dir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion)) {
                        mkdir(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion);
                    }
                    $rootpath = env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion;
                    $target_filename = str_pad($iv_busqueda, 8, '0', STR_PAD_LEFT) . '_CV.' . $extn;
                    $cv_url = $rootpath . '/' . $target_filename;
                    move_uploaded_file($_FILES['archivo_cv']['tmp_name'], $cv_url);
                    $subir_cv = SQLConnection::backendStoreProcedure('IV_busquedas_', array('subir_cv', $iv_busqueda), 'selectOne');
                    /* Ese SP lo manda al queue */
                }
                $datav = self::ledContraparteIVData($contraparte, $producto, FALSE, FALSE);
                return json_encode(array('vista' => $datav->render()));
            }
        }
    }

    /*** Realiza upload de archivos de Dossier y al finalizar llama a la vista de datos del Dossier
               (cuando se llama a esta funcion desde el preview, vienen definidos los parámetros id y producto)
        ***/
    public static function ledContraparteDossier($preview = false, $id = NULL, $producto = NULL) {
        if ($id == NULL) {
            $id = Request::input('contraparte');
        }
        if ($producto == NULL) {
            $producto = Request::input('producto');
        }

        if (!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {
            $userfile_name = $_FILES['archivo']['name'];
            $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.') + 1);

            $ftype = strtolower($userfile_extn);
            if ($ftype == 'png' || $ftype == 'jpg' || $ftype == 'gif') {

                if (basename($_FILES['archivo']['name']) != '') {
                    $path = env('PATH_DOCUMENTOS') . '/logos/' . $id . '.' . $ftype;
                    $ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                    if ($ftype == 'png' || $ftype == 'jpg' || $ftype == 'gif') {
                        move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

                        if ($ftype == 'png') {
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg');
                            }
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif');
                            }
                        }

                        if ($ftype == 'jpg') {
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . 'png')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png');
                            }
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif');
                            }
                        }

                        if ($ftype == 'gif') {
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png');
                            }
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg');
                            }
                        }

                    }
                }

            }


        }

        if (!empty($_FILES['archivo_dossier']) && $_FILES['archivo_dossier']['name'] !== '') {
            $userfile_name = $_FILES['archivo_dossier']['name'];
            $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.') + 1);

            $ftype = strtolower($userfile_extn);
            if ($ftype == 'pdf') {
                if (basename($_FILES['archivo_dossier']['name']) != '') {
                    $path = env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.' . $ftype;
                    $ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                    if ($ftype == 'pdf') {
                        move_uploaded_file($_FILES['archivo_dossier']['tmp_name'], $path);
                    }
                }
            }
        }

        return self::ledContraparteDossierData($id, $producto, $preview, false);
    }


    /* Realiza upload de archivo de Business Report y al finalizar llama a la vista de datos del Business Report
           (cuando se llama a esta funcion desde el preview, vienen definidos los parámetros id y producto)
        */
    public static function ledBusinessReport($preview = false, $id = NULL, $producto = NULL) {
        if ($id == NULL) {
            $id = Request::input('contraparte');
        }
        if ($producto == NULL) {
            $producto = Request::input('producto');
        }

        if (!empty($_FILES['archivo_br']) && $_FILES['archivo_br']['name'] !== '') {
            $userfile_name = $_FILES['archivo_br']['name'];
            $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.') + 1);

            $ftype = strtolower($userfile_extn);
            if ($ftype == 'pdf') {
                if (basename($_FILES['archivo_br']['name']) != '') {
                    $path = env('PATH_DOCUMENTOS') . '/businessreport/' . $id . '.' . $ftype;
                    $ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                    if ($ftype == 'pdf') {
                        move_uploaded_file($_FILES['archivo_br']['tmp_name'], $path);
                    }
                }
            }
        }

        return self::ledContraparteBRData($id, $producto, $preview, false);
    }


    /*** Actuailza datos del Dossier y al finalizar llama a la vista de datos del Dossier ***/
    public static function ledContraparteDossierUpdate() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');

        /* Si se encuentra generado el informe, viene el id > 0 */
        $informe = Request::input('informe');

        /** Parámetros para generar un nuevo informe en producción **/
        $generate = Request::input('generate');
        $id_tipo_informe = Request::input('id_tipo_informe');
        $solicitado_por = Request::input('solicitado_por');
        $prioridad = Request::input('prioridad');
        $datamanager = Request::input('datamanager');
        $estado_informe = Request::input('estado_informe');
        $asignado = (Request::input('asignado') != '') ? Request::input('asignado') : NULL;

        if ($generate == 1 && $id_tipo_informe > 0 && $solicitado_por > 0 && $datamanager > 0 && $estado_informe != '') {
            $informe = self::ReportsIngresarInforme($id, $producto, $id_tipo_informe, $solicitado_por, $prioridad, $datamanager, $estado_informe, $asignado);
        }

        $inicio_actividades = ('' != Request::input('inicio_actividades')) ? date_create_from_format('!d/m/Y', Request::input('inicio_actividades')) : NULL;
        $empleados = ('' != Request::input('empleados')) ? Request::input('empleados') : NULL;
        $resenia = ('' != Request::input('resenia')) ? Request::input('resenia') : NULL;
        $status_formales = ('' != Request::input('status_formales')) ? Request::input('status_formales') : NULL;
        $status_relaciones = ('' != Request::input('status_relaciones')) ? Request::input('status_relaciones') : NULL;
        $status_comerciales = ('' != Request::input('status_comerciales')) ? Request::input('status_comerciales') : NULL;
        $status_fiscales = ('' != Request::input('status_fiscales')) ? Request::input('status_fiscales') : NULL;
        $status_legales = ('' != Request::input('status_legales')) ? Request::input('status_legales') : NULL;
        $status_bancos = ('' != Request::input('status_bancos')) ? Request::input('status_bancos') : NULL;
        $status_comex = ('' != Request::input('status_comex')) ? Request::input('status_comex') : NULL;
        $status_contables = ('' != Request::input('status_contables')) ? Request::input('status_contables') : NULL;
        $status_prensa = ('' != Request::input('status_prensa')) ? Request::input('status_prensa') : NULL;
        $status_peps = ('' != Request::input('status_peps')) ? Request::input('status_peps') : NULL;
        $analisis = ('' != Request::input('analisis')) ? Request::input('analisis') : NULL;
        $score_dossier = ('' != Request::input('score_dossier')) ? Request::input('score_dossier') : NULL;
        $nivel_riesgo = ('' != Request::input('nivel_riesgo')) ? Request::input('nivel_riesgo') : NULL;
        $dep_econ = ('' != Request::input('dep_econ')) ? Request::input('dep_econ') : NULL;


        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('UPDATE', $id, NULL, $producto, $inicio_actividades,
            $empleados, $resenia, $status_formales,
            $status_relaciones, $status_comerciales, $status_fiscales,
            $status_legales, $status_bancos, $status_comex,
            $status_contables, $status_prensa, $status_peps,
            $analisis, NULL, $informe), 'selectOne');



        $accion = (NULL !== Request::input('visible')) ? 'activar' : 'desactivar';
        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array($accion, $id, NULL, $producto), 'selectOne');

        if (NULL != $score_dossier) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_dossier', null, null, null, $id, 'score_dossier', $score_dossier), 'selectOne');
        } else {
            $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('BORRAR_SCORE_DOSSIER', $id), 'selectOne');
        }

        if (NULL != $nivel_riesgo) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('nivel_riesgo', null, null, null, $id, 'nivel_riesgo', null, null, $nivel_riesgo), 'selectOne');
        } else {
            $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('BORRAR_NIVEL_RIESGO', $id), 'selectOne');
        }

        if (NULL != $dep_econ) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('dependencia_economica', null, null, null, $id, 'dep_econ', null, $dep_econ), 'selectOne');
        } else {
            $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('BORRAR_DEP_ECON', $id), 'selectOne');
        }

        return self::ledContraparteDossierData($id, $producto, false, false);
    }


    /*** Actuailza datos del Business Report y al finalizar llama a la vista de datos del Business Report ***/
    public static function ledBusinessReportUpdate() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');

        /* Si se encuentra generado el informe, viene el id > 0 */
        $informe = Request::input('informe');

        /** Parámetros para generar un nuevo informe en producción **/
        $generate = Request::input('generate');
        $id_tipo_informe = Request::input('id_tipo_informe');
        $solicitado_por = Request::input('solicitado_por');
        $prioridad = Request::input('prioridad');
        $datamanager = Request::input('datamanager');
        $estado_informe = Request::input('estado_informe');
        $asignado = (Request::input('asignado') != '') ? Request::input('asignado') : NULL;

        if ($generate == 1 && $id_tipo_informe > 0 && $solicitado_por > 0 && $datamanager > 0 && $estado_informe != '') {
            $informe = self::ReportsIngresarInforme($id, $producto, $id_tipo_informe, $solicitado_por, $prioridad, $datamanager, $estado_informe, $asignado);
        }

        $status_formales = ('' != Request::input('status_formales')) ? Request::input('status_formales') : NULL;
        $status_relaciones = ('' != Request::input('status_relaciones')) ? Request::input('status_relaciones') : NULL;
        $status_comerciales = ('' != Request::input('status_comerciales')) ? Request::input('status_comerciales') : NULL;
        $status_fiscales = ('' != Request::input('status_fiscales')) ? Request::input('status_fiscales') : NULL;
        $status_legales = ('' != Request::input('status_legales')) ? Request::input('status_legales') : NULL;
        $status_bancos = ('' != Request::input('status_bancos')) ? Request::input('status_bancos') : NULL;
        $status_comex = ('' != Request::input('status_comex')) ? Request::input('status_comex') : NULL;
        $status_contables = ('' != Request::input('status_contables')) ? Request::input('status_contables') : NULL;
        $status_prensa = ('' != Request::input('status_prensa')) ? Request::input('status_prensa') : NULL;
        $status_peps = ('' != Request::input('status_peps')) ? Request::input('status_peps') : NULL;
        $analisis = ('' != Request::input('analisis')) ? Request::input('analisis') : NULL;
        $score_br = ('' != Request::input('score_br')) ? Request::input('score_br') : NULL;


        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('UPDATE', $id, NULL, $producto, NULL,
            NULL, NULL, $status_formales,
            $status_relaciones, $status_comerciales, $status_fiscales,
            $status_legales, $status_bancos, $status_comex,
            $status_contables, $status_prensa, $status_peps,
            $analisis, NULL, $informe), 'selectOne');

        $accion = (NULL !== Request::input('visible')) ? 'activar' : 'desactivar';
        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array($accion, $id, NULL, $producto), 'selectOne');

        if (NULL != $score_br) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_br', null, null, null, $id, 'score_br', $score_br), 'selectOne');
        } else {
            $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('BORRAR_SCORE_BR', $id), 'selectOne');
        }

        return self::ledContraparteBRData($id, $producto, false, false);
    }




    /*** Para hacer preview del Dossier llamando con el parametro preview=true ***/
    public static function ledContraparteDossierPreview() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');

        return self::ledContraparteDossier(true, $id, $producto);
    }


    /*** Para hacer preview del Business Report llamando con el parametro preview=true ***/
    public static function ledBusinessReportPreview() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');

        return self::ledBusinessReport(true, $id, $producto);
    }


    /* Elimina el archivo pdf del Dossier y llama a la vista de datos del Dossier */
    public static function ledContraparteDeleteFile() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');
        if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf')) {
            unlink(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf');
        }
        return self::ledContraparteDossierData($id, $producto, false, false);
    }

    /* Eliminaarchivo del Business Report y llama a la vista de datos del Business Report */
    public static function ledBusinessReportDeleteFile() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');
        if (file_exists(env('PATH_DOCUMENTOS') . '/businessreport/' . $id . '.pdf')) {
            unlink(env('PATH_DOCUMENTOS') . '/businessreport/' . $id . '.pdf');
        }
        return self::ledContraparteBRData($id, $producto, false, false);
    }


    /*** Elimina datos del Dossier y luego llama a la vista del Dossier para mostrar el form vacío ***/
    public static function ledContraparteDossierDelete() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');

        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

        $data = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $id, NULL, $producto), 'selectOne');
        if ($data->informe > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_informes', array('cancelar_informe', $id, $data->informe, Session::get('usuario')->user_id), 'selectOne');
        }


        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('DELETE', $id, NULL, $producto), 'selectOne');

        $cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select', $qcontrap->cliente, NULL, NULL, NULL), 'selectOne');
        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('search', null, null, $qcontrap->cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');

        /* chequeo de producto Dossier Demo */
        $dossierdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_dossier_cliente', NULL, $qcontrap->cliente), 'selectOne');

        return self::ledContraparteDossierData($id, $producto, false, false);
    }


    /*** Elimina datos del Business Report y luego llama a la vista del Business Report para mostrar el form vacío ***/
    public static function ledBusinessReportDelete() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');

        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

        $data = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $id, NULL, $producto), 'selectOne');
        if ($data->informe > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_informes', array('cancelar_informe', $id, $data->informe, Session::get('usuario')->user_id), 'selectOne');
        }


        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('DELETE', $id, NULL, $producto), 'selectOne');

        $cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select', $qcontrap->cliente, NULL, NULL, NULL), 'selectOne');
        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('search', null, null, $qcontrap->cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');

        /* chequeo de producto Business Report */
        $businessreport = SQLConnection::backendStoreProcedure('LN_demo_', array('check_business_report_cliente', NULL, $qcontrap->cliente), 'selectOne');

        return self::ledContraparteBRData($id, $producto, false, false);
    }



    public static function ReportsPrioridadesInforme() {
        $prioridades = SQLConnection::backendStoreProcedure('LN_demo_', array('prioridades'), 'select');
        return json_encode($prioridades);
    }

    public static function ReportsSolicitantesInforme() {
        $contrap = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $solicitantes = SQLConnection::backendStoreProcedure('LN_demo_', array('usuarios_solicitantes', $contrap, $cliente), 'select');
        return json_encode($solicitantes);
    }

    public static function ReportsResponsablesInforme() {
        $id_tipo = Request::input('id_tipo_informe');
        $dm = SQLConnection::backendStoreProcedure('LN_informes', array('responsables_informe', null, null, null, null, null, $id_tipo), 'select');
        return json_encode($dm);
    }
    public static function ReportsAsignadosInforme() {
        $id_tipo = Request::input('id_tipo_informe');
        $asig = SQLConnection::backendStoreProcedure('LN_informes', array('usuarios_asignacion', null, null, null, null, null, $id_tipo), 'select');
        return json_encode($asig);
    }


    public static function ReportsAsignablesGestion() {
        $id_tipo = Request::input('id_tipo_informe');
        $asig = SQLConnection::backendStoreProcedure('LN_informes', array('asignables_gestion', null, null, null, null, null, $id_tipo), 'select');
        return json_encode($asig);
    }

    public static function ReportsIngresarInforme($contraparte, $producto, $id_tipo_informe, $solicitado_por, $prioridad, $datamanager, $estado_informe, $asignado, $fecha_limite_doc = null, $fecha_comprometida = null, $objeto_informe = null) {

        if ($contraparte > 0 && $id_tipo_informe > 0 && $solicitado_por > 0 && $datamanager > 0 && $estado_informe != '') {
            $datos_contrato = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe', $contraparte, null, null, null, null, $id_tipo_informe), 'selectOne');

            if (!empty($datos_contrato)) {

                $fecha_lim = null;
                $fecha_ent = null;

                if ($fecha_limite_doc != null) {
                    $fecha_lim = date_create_from_format('!d/m/Y', $fecha_limite_doc);
                }
                if ($fecha_comprometida != null) {
                    $fecha_ent = date_create_from_format('!d/m/Y', $fecha_comprometida);
                }


                $nuevo_informe = SQLConnection::backendStoreProcedure('LN_informes', array('ingresar_informe', $contraparte, NULL,
                    Session::get('usuario')->user_id,
                    $datos_contrato->item_contrato,
                    $datos_contrato->producto,
                    $id_tipo_informe,
                    $prioridad,
                    $estado_informe,
                    $solicitado_por,
                    $datamanager,
                    $asignado,
                    NULL,
                    $fecha_lim,
                    $producto,
                    $fecha_ent,
                    $objeto_informe), 'selectOne');

                $informe = $nuevo_informe->informe;

                return $informe;
            }
        }

        return NULL;
    }


    /** Dado un id de informe, busca la tareas de gestión de documentación, la asigna y la deja en proceso **/
    public static function ReportsInformeEnGestion($informe, $fecha_limite_doc, $asignado_tarea, $fecha_entrega_doc = null) {
        if ($informe > 0 && NULL != $fecha_limite_doc && $asignado_tarea > 0) {
            $fecha_lim = null;
            $fecha_ent = null;

            if ($fecha_limite_doc != null) {
                $fecha_lim = date_create_from_format('!d/m/Y', $fecha_limite_doc);
            }
            if ($fecha_entrega_doc != null) {
                $fecha_ent = date_create_from_format('!d/m/Y', $fecha_entrega_doc);
            }

            $nueva_tarea = SQLConnection::backendStoreProcedure('LN_informes', array('activar_gestion_documentacion', NULL, $informe,
                Session::get('usuario')->user_id,
                NULL,
                NULL,
                NULL,
                1,
                'E',
                NULL,
                NULL,
                $asignado_tarea,
                NULL,
                $fecha_lim,
                null,
                $fecha_ent), 'selectOne');

            $tarea = $nueva_tarea->informe;

            return $tarea;

        }
        return NULL;
    }

    /* Cancela el informe relacionado al producto y coloca en null el campo informe en la tabla. Devuelve la vista del producto correspondiente actualizada */
    public static function ReportsCancelarInforme() {
        $id = Request::input('contraparte');
        $producto = Request::input('producto');
        $informe = Request::input('informe');

        if ($id > 0 && $producto > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_informes', array('cancelar_informe', $id, $informe, Session::get('usuario')->user_id), 'selectOne');

            $prod = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $producto, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');

            if ($prod->producto_id == 'dossierdemo') {
                return self::ledContraparteDossierData($id, $producto, false, false);
            } elseif ($prod->producto_id == 'businessreport') {
                return self::ledContraparteBRData($id, $producto, false, false);
            }

        }
    }


    public static function validateDossierPath($contraparte = null) {
        $pathinfo = new stdClass;

        if (null != $contraparte) {

            /*PATH_DOCUMENTOS='/var/www/html/compartido/LED'
                     RUTA_DOCUMENTOS='/compartido/LED'*/

            // Datos de la gestión activa.
            $data = SQLConnection::backendStoreProcedure('LN_gestiones_', array('search', null, null, $contraparte, null, null, 1, null), 'selectOne');

            if (!empty($data)) {

                if (!is_dir(env('PATH_DOCUMENTOS') . '/dossier')) {
                    mkdir(env('PATH_DOCUMENTOS') . '/dossier');
                }
                if (!is_dir(env('PATH_DOCUMENTOS') . '/dossier' . '/' . $data->cliente)) {
                    mkdir(env('PATH_DOCUMENTOS') . '/dossier' . '/' . $data->cliente);
                }
                if (!is_dir(env('PATH_DOCUMENTOS') . '/dossier' . '/' . $data->cliente . '/' . $contraparte)) {
                    mkdir(env('PATH_DOCUMENTOS') . '/dossier' . '/' . $data->cliente . '/' . $contraparte);
                }
                if (!is_dir(env('PATH_DOCUMENTOS') . '/dossier' . '/' . $data->cliente . '/' . $contraparte . '/' . $data->gestion)) {
                    mkdir(env('PATH_DOCUMENTOS') . '/dossier' . '/' . $data->cliente . '/' . $contraparte . '/' . $data->gestion);
                }

                $pathinfo->path = env('PATH_DOCUMENTOS') . '/dossier' . '/' . $data->cliente . '/' . $contraparte . '/' . $data->gestion;
                $pathinfo->ruta = env('RUTA_DOCUMENTOS') . '/dossier' . '/' . $data->cliente . '/' . $contraparte . '/' . $data->gestion;

            }

        }
        return $pathinfo;
    }

}
