<?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\Http\Controllers\EmailController;
use App\Http\Controllers\EdictosController;

use Oriceon\PdfMerger\Facades\PdfMerger;

use DB;
use stdClass;

class ActividadesTaskController extends Controller {

    /**
     * Funcion que tiene la actividad
     * de verificar la cedula de costa
     * rica
     * 
     * 1. Mostrar la cedula o pasaporte cargado por el cliente
     * 2. Si es cedula extranjera o nativa se valida a traves del link
     * 3. Se debe recortar y reingresar correctamente en la entrada de evidencia
     * 4. Se validan si son cedulas ya que los pasaportes no se pueden validar
     * 5. Despues de subir las imagenes se van a poeder editar los datos del padron
     * 
     * @access public
     * @return string|null
     */
    public function verificarCedulaCostaRica() {
        if (isset($_POST['cliente']) && isset($_POST['contraparte']) && isset($_POST['gestion'])) {
            $cliente = Request::input('cliente');
            $contraparte = Request::input('contraparte');
            $gestion = Request::input('gestion');
            $tipo_doc = Request::input('tipo_doc');
            //
            $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
            $ident = SQLConnection::backendStoreProcedure('backend_obtener_identificadores_pais', array($contrap->country_code, 'F'));
            //
            $doc = SQLConnection::backendStoreProcedure('LN_docs_', array('sin_accion', null, $cliente, $contraparte, $tipo_doc, null, null, null, null, null, null, null, null, null, null, $gestion, Session::get('usuario')->user_id, null, null), 'selectOne');
            $this->buscarArchivoDoc($doc);
            //
            $docs = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('DOCUMENTOS_GESTION_ACTIVA', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            $doc_evidencia_dni = NULL;
            //
            foreach ($docs as $doci) {
                if ($doci->es_evidencia && $doci->es_dni) {
                    $this->buscarArchivoDoc($doci);
                    $doc_evidencia_dni = $doci;
                }
            }
            //
            return view('/informes-blue/actividades-tarea/verificar-cedula-costa-rica')->with(compact('contrap', 'ident', 'doc', 'doc_evidencia_dni'));
        }
    }


    /**
     * Funcion que devuelve los archivos
     * en base al tipo de documento
     * @access private
     * @param stdClass el objeto que tiene los datos del documento
     * @return void
     */
    private function buscarArchivoDoc(stdClass $doc) {
        if ($doc->es_dni) {
            if ($doc->es_evidencia) {
                // en caso de ser evidencia
                $file_path_dni1 = env('PATH_DOCUMENTOS_IV') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/evidencias/1_dni.png';
                $file_url_dni1 = env('RUTA_DOCUMENTOS_IV') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/evidencias/1_dni.png' . '?rnd=' . time();
                //
                $file_path_dni2 = env('PATH_DOCUMENTOS_IV') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/evidencias/2_dni.png';
                $file_url_dni2 = env('RUTA_DOCUMENTOS_IV') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/evidencias/2_dni.png' . '?rnd=' . time();
                //
                $file_exists_dni1 = file_exists($file_path_dni1);
                $file_exists_dni2 = file_exists($file_path_dni2);
                //
                if ($file_exists_dni1) {
                    $doc->file_dni1 = $file_url_dni1;
                }
                //
                if ($file_exists_dni2) {
                    $doc->file_dni2 = $file_url_dni2;
                }
            } else {
                // en caso de ser archivo de ID normal
                $files_array = ['.png', '.pdf', '.jpeg', '.jpg'];
                //
                foreach ($files_array as $e) {
                    $path_dni1 = env('PATH_DOCUMENTOS') . DIRECTORY_SEPARATOR . $doc->cliente . DIRECTORY_SEPARATOR . $doc->contraparte . DIRECTORY_SEPARATOR . $doc->gestion . '/1_dni_' . $doc->contraparte . '_' . $doc->gestion . $e;
                    $path_dni2 = env('PATH_DOCUMENTOS') . DIRECTORY_SEPARATOR . $doc->cliente . DIRECTORY_SEPARATOR . $doc->contraparte . DIRECTORY_SEPARATOR . $doc->gestion . '/2_dni_' . $doc->contraparte . '_' . $doc->gestion . $e;
                    if (!isset($doc->file_dni1) && file_exists($path_dni1)) {
                        $doc->file_dni1 = env('RUTA_DOCUMENTOS') . DIRECTORY_SEPARATOR . $doc->cliente . DIRECTORY_SEPARATOR . $doc->contraparte . DIRECTORY_SEPARATOR . $doc->gestion . '/1_dni_' . $doc->contraparte . '_' . $doc->gestion . $e;
                    }
                    if (!isset($doc->file_dni2) && file_exists($path_dni2)) {
                        $doc->file_dni2 = env('RUTA_DOCUMENTOS') . DIRECTORY_SEPARATOR . $doc->cliente . DIRECTORY_SEPARATOR . $doc->contraparte . DIRECTORY_SEPARATOR . $doc->gestion . '/2_dni_' . $doc->contraparte . '_' . $doc->gestion . $e;
                    }
                }
            }
        } else {
            // Demas Archivos.
            if ($doc->es_evidencia) {
                $file_path = env('PATH_DOCUMENTOS_IV') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/evidencias/' . $doc->doc_id . '.pdf';
                $file_url = env('RUTA_DOCUMENTOS_IV') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/evidencias/' . $doc->doc_id . '.pdf' . '?rnd=' . time();
            } else {
                $file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
                $file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf' . '?rnd=' . time();
            }
            //
            $file_exists = file_exists($file_path);
            //
            if ($file_exists) {
                $doc->file_url = $file_url;
            }
        }
    }

    public static function asignarCuitOrg() {
        $cuit = Request::Input('identificacion');
        // $cuit = '20288239011';
        $nombre_persona = Request::Input('nombre_contraparte');
        $contrap = Request::Input('contraparte');
        // $nombre_persona = 'BURGOL ALEJANDRO GABRIEL';
        $razon_social_f = Request::input('nombre_contraparte');
        // $razon_social_f = 'ELIAS JUAN IGNACIO';
        // 
        $razon_social_explode = explode(" ", $razon_social_f);
        $razon_social_explode = array_values($razon_social_explode);
        $resultado_razon_social = Misc::resultadoCombinaciones($razon_social_explode);
        //Limita a 10 resultados las combinaciones en PF
        $resultado_razon_social = array_slice($resultado_razon_social, -10);
        $cant_resultado_razon_social = count($resultado_razon_social);
        $razon_social_completa = '';
        if ($cant_resultado_razon_social < 10) {
            foreach ($resultado_razon_social as $key => $rs) {
                if (!(end($resultado_razon_social) == $rs)) {
                    $razon_social_completa .= 'NEAR((' . str_replace(" ", ",", $rs) . '),0,true) OR ';
                } else {
                    $razon_social_completa .= 'NEAR((' . str_replace(" ", ",", $rs) . '),0,true)';
                }
            }
        } else {
            $razon_social_completa = "\"" . $razon_social_f . "\"";
        }
        // $razon_social_completa = 'NEAR((BURGOL,ALEJANDRO,GABRIEL),0,true) OR NEAR((BURGOL,GABRIEL,ALEJANDRO),0,true) OR NEAR((ALEJANDRO,BURGOL,GABRIEL),0,true) OR NEAR((ALEJANDRO,GABRIEL,BURGOL),0,true) OR NEAR((GABRIEL,BURGOL,ALEJANDRO),0,true) OR NEAR((GABRIEL,ALEJANDRO,BURGOL),0,true)';
        // BUSCA EDICTOS HOMÓNIMOS POR NOMBRE Y CUIT Y LOS JUNTA EN UN SOLO ARRAY
        // dd($razon_social_completa);
        $edictos = SQLConnection::obtenerEdictosHomonimos($razon_social_completa);
        // dd($razon_social_completa);
        /* $edictos2 = SQLConnection::obtenerEdictosHomonimos($cuit);
        if (!empty($edictos2)) {
            foreach ($edictos2 as $ed) {
                array_push($edictos,$ed);
            }
        } */
        if ($edictos) {
            $edictos = Misc::ResaltarResultadosEdictosHomonimosNombresAnt($edictos, $resultado_razon_social);
        }
        // BUSCA SI LA CONTRAPARTE TIENE REGISTRO COMO SOCIO O ACCIONISTA DE ALGUNA RAZON SOCIAL
        $reg_socio = SQLConnection::backendStoreProcedure('backend_obtener_socios', array(NULL, $cuit, '1', 'F'));
        //
        $aux = new stdClass;
        usort($reg_socio, function ($a, $b) {
            return strcmp($a->cuit_persona, $b->cuit_persona); });
        $aux2 = [];
        $empresas = [];
        //
        if (!empty($reg_socio)) {
            $tax_id = $reg_socio[0]->cuit_persona;
            foreach ($reg_socio as $key => $reg) {
                // edictos de la empresa
                $ed_aux = SQLConnection::backendStoreProcedure('obtener_edictos_backend', array($reg->cuit_persona));
                // directorios de la empresa
                $directorio = SQLConnection::backendStoreProcedure('backend_obtener_socios', array(NULL, $reg->cuit_persona, '1', 'J'));
                //
                if ($reg->cuit_persona == $tax_id) {
                    $aux->nombre_persona = $reg->nombre_persona;
                    $aux->cuit_persona = $reg->cuit_persona;
                    $aux->edictos = $ed_aux;
                    $aux->directorio = $directorio;
                    array_push($aux2, $reg);
                } else {
                    $aux->data = $aux2;
                    array_push($empresas, $aux);
                    $aux = new stdClass;
                    $aux2 = [];
                    $tax_id = $reg->cuit_persona;
                    $aux->nombre_persona = $reg->nombre_persona;
                    $aux->cuit_persona = $reg->cuit_persona;
                    $aux->edictos = $ed_aux;
                    $aux->directorio = $directorio;
                    array_push($aux2, $reg);
                }
                if (count($reg_socio) == $key + 1) {
                    $aux->data = $aux2;
                    array_push($empresas, $aux);
                    $in = 0;
                }
            }
        }
        //
        foreach ($edictos as $k => $ed) {
            $ed_empresa = 0;
            foreach ($empresas as $empresa) {
                if (isset($ed->razon_social) && $empresa->nombre_persona == $ed->razon_social || str_contains($ed->contenido_archivo, $empresa->nombre_persona)) {
                    $ed_empresa++;
                    $ed->homonimo = (!empty($ed->cuit_soc) && !is_null($ed->cuit_soc)) ? 0 : 1;
                    array_push($empresa->edictos, $ed);
                    unset($edictos[$k]);
                    break;
                }
            }
            if (!$ed_empresa) {
                $ed_new_empresa = 1;
                foreach ($empresas as $empresa) {
                    if (isset($ed->razon_social) && isset($ed->cuit_soc) && !is_null($ed->razon_social) && !is_null($ed->cuit_soc) && $empresa->cuit_persona == $ed->cuit_soc) {
                        $ed_new_empresa = 0;
                        array_push($empresa->edictos, $ed);
                        unset($edictos[$k]);
                        break;
                    }
                }
                if ($ed_new_empresa && !empty($ed->cuit_soc)) {
                    $aux = new stdClass;
                    $ed->homonimo = 0;
                    $ed_aux = SQLConnection::backendStoreProcedure('obtener_edictos_backend', array($ed->cuit_soc));
                    $directorio = SQLConnection::backendStoreProcedure('backend_obtener_socios', array(NULL, $ed->cuit_soc, '1', 'J'));
                    $aux->nombre_persona = $ed->razon_social;
                    $aux->cuit_persona = $ed->cuit_soc;
                    $aux->edictos = $ed_aux;
                    array_push($aux->edictos, $ed);
                    $aux->directorio = $directorio;
                    $aux->data = [];
                    array_push($empresas, $aux);
                    unset($edictos[$k]);
                    continue;
                }
            }
        }
        $edictos = array_values($edictos);
        // AGREGA REGISTRO DE ACCIONISTA
        $aux = SQLConnection::backendStoreProcedure('backend_obtener_accionistas_de', array($cuit, '1'));

        if ($aux) {
            foreach ($aux as $emp) {
                array_push($empresas, $emp);
            }
        }
        // BUSCA EDICTOS POR CUIT
        // $aux = SQLConnection::backendStoreProcedure('obtener_edictos_backend',array($cuit));
        // // dd($aux);
        // if ($aux) {
        //     foreach ($aux as $ed) {
        //         array_push($edictos,$ed);
        //     }
        // }
        // dd($edictos);
        $visible = 1;
        $cargos = SQLConnection::backendStoreProcedure("obtener_Cargos", array());
        // LISTA DE RESIDENCIAS ALMACENADAS
        $domicilios = SQLConnection::obtenerDomicilios($cuit);
        $dom_nacimiento = NULL;
        $dom_id = NULL;
        $dom_vivienda = NULL;
        foreach ($domicilios as $domicilio) {
            if ($domicilio->tipo_domicilio == 'N') {
                $dom_nacimiento = $domicilio;
            } elseif ($domicilio->tipo_domicilio == 'I') {
                $dom_id = $domicilio;
            } elseif ($domicilio->tipo_domicilio == 'V') {
                $dom_vivienda = $domicilio;
            }
        }
        // CARGA DE BOLETINES
        $regiones = SQLConnection::backendStoreProcedure('obtener_regiones_edictos', array('1'));
        $vista_carga_boletines = view('extractor/carga-por-fecha')->with(compact(['regiones']));

        return view('/informes-blue/actividades-tarea/asignacion-cuit-edictos')->with(compact('cuit', 'nombre_persona', 'edictos', 'empresas', 'visible', 'cargos', 'domicilios', 'dom_vivienda', 'dom_id', 'vista_carga_boletines', 'regiones'));
    }

    public static function asignarCuit_backup() {

        $cuit = Request::Input('identificacion');
        //$cuit="20177260909";
        //$nombre_persona = Request::Input('nombre_contraparte');
        //$nombre_persona = 'BURGOL ALEJANDRO GABRIEL';
        $contrap = Request::Input('contraparte');
        //$razon_social_f = Request::input('nombre_contraparte');
        $razon_social_f = 'ALEJANDRO GABRIEL BURGOL';
        $edictos_por_nombre = EdictosController::obtenerEdictosPorNombre($razon_social_f);
        dd($edictos_por_nombre);
        $contraparte = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contrap, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        //$id_padron = $contrap->id_padron ?? NULL;  
        unset($contrap);
        $edictos_homonimos = []; // edictos donde la contraparte esta mencionada y el edicto no esta asignado
        $vinculo_sociedades_edictos = []; // cuit de las razones sociales con edictos donde la contraparte esta mencionada
        $sociedades = [];

        // se arman los vectores con los edictos obtenidos
        if (!empty($edictos_por_nombre)) {
            foreach ($edictos_por_nombre as $edicto) {
                if (is_null($edicto->cuit_soc) || empty($edicto->cuit_soc)) {
                    $edictos_homonimos[] = $edicto;
                } else {
                    // $edictos[] = $edicto;
                    $vinculo_sociedades_edictos[$edicto->cuit_soc] = $edicto->razon_social;
                }
            }
        }

        //
        unset($edictos_por_nombre);
        $datos_persona = NULL;
        $edicto_sociedades = NULL;
        $directorio = NULL;
        $ya_encontro_mismo = false;
        if (!empty($vinculo_sociedades_edictos)) {
            foreach ($vinculo_sociedades_edictos as $cuit_soc => $razon_social_soc) {
                if ($cuit_soc == $cuit) {
                    $ya_encontro_mismo = true;
                }
                // datos de la sociedad
                $datos_persona = SQLConnection::obtenerPersona($cuit_soc);
                if (is_null($datos_persona)) {
                    continue;
                }
                // edictos de la sociedad
                $edicto_sociedades = SQLConnection::backendStoreProcedure('obtener_edictos_backend', array($cuit_soc));
                // directorios de la sociedad
                $directorio = SQLConnection::backendStoreProcedure('backend_obtener_socios', array(NULL, $cuit_soc, '1', 'J'));
                //
                $sociedades[] = (object) ['cuit' => $cuit_soc, 'razon_social' => $datos_persona->nombre_persona, 'edictos' => $edicto_sociedades, 'directorios' => $directorio];
            }
        }
        $tipo_persona = Misc::tipoPersona($cuit, $id_padron);
        //
        $cargos = SQLConnection::backendStoreProcedure("obtener_Cargos", array());
        $accionistas = [];
        $accionistas_inactivos = [];
        if ($tipo_persona == 'J') {
            $accionistas = SQLConnection::backendStoreProcedure("backend_obtener_accionistas", array($cuit, 1));
            $accionistas_inactivos = SQLConnection::backendStoreProcedure("backend_obtener_accionistas", array($cuit, 0));
        }
        //
        $accionistas_de = SQLConnection::backendStoreProcedure("backend_obtener_accionistas_de", array($cuit, 1));
        $accionistas_de_inactivos = SQLConnection::backendStoreProcedure("backend_obtener_accionistas_de", array($cuit, 0));
        //

        return view('/informes-blue/actividades-tarea/asignacion-cuit-edictos')->with(compact('edictos_homonimos', 'vinculo_sociedades_edictos', 'sociedades', 'cuit', 'nombre_persona', 'cargos', 'accionistas', 'tipo_persona', 'accionistas_inactivos', 'accionistas_de', 'accionistas_de_inactivos', 'id_padron'));


    }

    /**
     * Funcion que devuelve la actividad
     * de la tarea de verificar la
     * integridad del informe de data cleaning
     * Completo
     * @access public
     * @return \View
     */
    public function verifDataCleaningCompleto() {
        $cliente = Request::input('cliente');
        $informe = Request::input('informe');
        $tarea = Request::input('tarea');
        $contraparte = Request::input('contraparte');
        $gestion = Request::input('gestion');
        $identificacion = Request::input('identificacion');
        //
        $params = ['apikey' => env('APIKEY_BRIEF'), 'idioma' => 'spa', 'cuit' => $identificacion];
        $datos_socios_directores = Misc::CURLCall(env('API_IC_SOCIEDADES_JSON'), http_build_query($params), 'POST');
        $datos_edictos = Misc::CURLCall(env('API_IC_EDICTOS_JSON'), http_build_query($params), 'POST');
        $datos_juicios = Misc::CURLCall(env('API_IC_LEGALES_JSON'), http_build_query($params), 'POST');
        //
        $datos_juicios = json_decode($datos_juicios);
        $datos_socios_directores = json_decode($datos_socios_directores);
        $datos_edictos = json_decode($datos_edictos);
        //
        $accionistas = $datos_socios_directores->relaciones->accionista_de;
        $socios_directores = $datos_socios_directores->relaciones->socio_director_de;
        $edictos = $datos_edictos->edictos;
        //
        $concursos_quiebras = $datos_juicios->como_demandado->concursos_quiebras;
        $remates = $datos_juicios->como_demandado->remates;
        $pedidos_quiebra_y_juicios_ejecutivos = $datos_juicios->como_demandado->pedidos_quiebra_y_juicios_ejecutivos;
        $otros_juicios = $datos_juicios->como_demandado->otros_juicios;
        //
        $como_actor = $datos_juicios->como_actor;
        //
        return view('/informes-blue/actividades-tarea/verif-dcl-completo')->with(compact('informe', 'contraparte', 'gestion', 'tarea', 'cliente', 'identificacion', 'accionistas', 'socios_directores', 'edictos', 'concursos_quiebras', 'remates', 'pedidos_quiebra_y_juicios_ejecutivos', 'otros_juicios', 'como_actor'));
    }


    /**
     * Funcion que cierra el informe
     * de data cleaning
     * @access public
     * @return string|null
     */
    public function cerrarInformeOrg() {
        if (isset($_POST['informe']) && isset($_POST['tarea']) && isset($_POST['cliente'])) {
            $cliente = Request::input('cliente');
            $informe = Request::input('informe');
            $tarea = Request::input('tarea');
            // se comunica con el cliente para avisarle la finalización del informe
            $idTer = SQLConnection::backendStoreProcedure('LN_informe_terceros', array('GET_REFTERCERO', $informe), 'selectOne');
            if (is_null($idTer->informeid_terceros)) {
                return Response::JSON(['error' => 1.1, 'mensaje' => 'El informe no tiene referencia de terceros']);
            }
            $params = ['task' => $idTer->informeid_terceros, 'third_report' => $informe]; // manda el id de la tarea de inquiro
            $webhook = Misc::CURLCall(env('FIN_INF_TERCERO'), http_build_query($params), 'POST');
            // se decifra la respuesta del cliente
            $webhook = json_decode($webhook);
            if (is_null($webhook)) {
                return Response::JSON(['error' => 2.1, 'mensaje' => 'La respuesta automática recibida por el cliente es inválida.']);
            }
            // se evalua la respuesta del cliente
            if (isset($webhook->error) && !$webhook->error) {
                SQLConnection::backendStoreProcedure('LN_Tareas_Informes_DCL', array('CERRAR_INFORME', $informe, NULL, Session::get('usuario')->user_id));
                //
                return Response::JSON(['error' => 0, 'mensaje' => 'OK']);
            } else {
                return Response::JSON(['error' => 3.1, 'mensaje' => 'Ocurrió un error en la comunicación con el cliente.']);
            }
            /*
            //-- SE CAMBIA EL ESTADO DE TODAS LAS TAREAS DEL INFORME A APROBADO Y LO PUBLICA --//        
            $cierre_total = SQLConnection::backendStoreProcedure('LN_Blue_UPDAGB',array('CIERRE_TOTAL',$contraparte,$tarea,Session::get('usuario')->user_id,NULL,NULL,NULL,NULL,'K',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL));
            SQLConnection::logTrazabilidad('Se cerró y publicó el informe','CLOSE_PUB_IV_REPORT',Session::get('webdata')['id_menu_plataforma'],Session::get('usuario')->user_id,Session::get('webdata')['servicio_contratado'],$cliente,$contraparte,null,null,null,$informe,null,$tarea,'F');
            Misc::calcularTATTarea($contraparte,$tarea);
            */
            //
        }
    }

    /**
     * Funcion que cierra el informe
     * de data cleaning
     * @access public
     * @return string|null
     */
    public function cerrarInforme() {
        if (isset($_POST['informe']) && isset($_POST['tarea']) && isset($_POST['cliente'])) {
            $cliente = Request::input('cliente');
            $informe = Request::input('informe');
            $tarea = Request::input('tarea');
            // se comunica con el cliente para avisarle la finalización del informe
            $idTer = SQLConnection::backendStoreProcedure('LN_informe_terceros', array('GET_REFTERCERO', $informe), 'selectOne');
            if (is_null($idTer->informeid_terceros)) {
                //return Response::JSON(['error' => 1.1, 'mensaje' => 'El informe no tiene referencia de terceros']);
                SQLConnection::backendStoreProcedure('LN_Tareas_Informes_DCL', array('CERRAR_INFORME', $informe, NULL, Session::get('usuario')->user_id));
                //
                return Response::JSON(['error' => 0, 'mensaje' => 'OK']);
            }
            //
            // $webhook = self::finDCLInquiro($idTer->informeid_terceros,$informe);
            $webhook = self::finDCLInquiro($idTer->informeid_terceros, $informe);
            // se decifra la respuesta del cliente
            if (is_null($webhook)) {
                return Response::JSON(['error' => 2.1, 'mensaje' => 'La respuesta automática recibida por el cliente es inválida.']);
            }
            // se evalua la respuesta del cliente
            if (isset($webhook->error) && !$webhook->error) {
                SQLConnection::backendStoreProcedure('LN_Tareas_Informes_DCL', array('CERRAR_INFORME', $informe, NULL, Session::get('usuario')->user_id));
                //
                return Response::JSON(['error' => 0, 'mensaje' => 'OK']);
            } else {
                return Response::JSON(['error' => 3.1, 'mensaje' => 'Ocurrió un error en la comunicación con el cliente.']);
            }
            /*
            //-- SE CAMBIA EL ESTADO DE TODAS LAS TAREAS DEL INFORME A APROBADO Y LO PUBLICA --//        
            $cierre_total = SQLConnection::backendStoreProcedure('LN_Blue_UPDAGB',array('CIERRE_TOTAL',$contraparte,$tarea,Session::get('usuario')->user_id,NULL,NULL,NULL,NULL,'K',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL));
            SQLConnection::logTrazabilidad('Se cerró y publicó el informe','CLOSE_PUB_IV_REPORT',Session::get('webdata')['id_menu_plataforma'],Session::get('usuario')->user_id,Session::get('webdata')['servicio_contratado'],$cliente,$contraparte,null,null,null,$informe,null,$tarea,'F');
            Misc::calcularTATTarea($contraparte,$tarea);
            */
            //
        }
    }

    /**
     * Funcion que realizar la
     * llamada de webhook a inquiro
     * @access public
     * @param string|int el id informe vinculado a la tarea
     * @return string|null
     */
    public function finDCLInquiro($informe_vinculado, $informe) {
      $params = ['task' => $informe_vinculado, 'third_report' => $informe]; // manda el id de la tarea de inquiro
//	$params = ['task' => $informe, 'third_report' => $informe_vinculado]; // manda el id de la tarea de inquiro
       $webhook = Misc::CURLCall(env('FIN_INF_TERCERO'), http_build_query($params), 'POST',30,env('APIKEY_IV_DCL'));
        $webhook = json_decode($webhook);
        return $webhook;
    }

    /**
     * Funcion que devuelve la actividad
     * de la tarea de verificar la
     * integridad del informe de data cleaning
     * de Directorios
     * @access public
     * @return \View
     */
    public function verifDataCleaningDirectorios() {
        $cliente = Request::input('cliente');
        $informe = Request::input('informe');
        $tarea = Request::input('tarea');
        $contraparte = Request::input('contraparte');
        $gestion = Request::input('gestion');
        $identificacion = Request::input('identificacion');
        //
        $params = ['apikey' => env('APIKEY_BRIEF'), 'idioma' => 'spa', 'cuit' => $identificacion];
        $datos_socios_directores = Misc::CURLCall(env('API_IC_SOCIEDADES_JSON'), http_build_query($params), 'POST');
        $datos_edictos = Misc::CURLCall(env('API_IC_EDICTOS_JSON'), http_build_query($params), 'POST');
        //
        $datos_socios_directores = json_decode($datos_socios_directores);
        $datos_edictos = json_decode($datos_edictos);
        //
        $accionistas = NULL;
        $socios_directores = NULL;
        $edictos = NULL;
        if (!is_null($datos_edictos)) {
            $edictos = $datos_edictos->edictos;
        }
        //
        if (!is_null($datos_socios_directores)) {
            $accionistas = $datos_socios_directores->relaciones->accionista_de;
            $socios_directores = $datos_socios_directores->relaciones->socio_director_de;
        }
        //
        return view('/informes-blue/actividades-tarea/verif-dcl-directorios')->with(compact('informe', 'contraparte', 'gestion', 'tarea', 'cliente', 'identificacion', 'accionistas', 'socios_directores', 'edictos'));
    }

    /**
     * Funcion que devuelve la actividad
     * de la tarea de verificar la
     * integridad del informe de data cleaning
     * de Directorios
     * @access public
     * @return \View
     */
    public function verifDataCleaningJuicios() {
        $cliente = Request::input('cliente');
        $informe = Request::input('informe');
        $tarea = Request::input('tarea');
        $contraparte = Request::input('contraparte');
        $gestion = Request::input('gestion');
        $identificacion = Request::input('identificacion');
        // se hace la llamada de juicios
        $params = ['apikey' => env('APIKEY_BRIEF'), 'idioma' => 'spa', 'cuit' => $identificacion];
        $datos_juicios = Misc::CURLCall(env('API_IC_LEGALES_JSON'), http_build_query($params), 'POST');
        //
        $datos_juicios = json_decode($datos_juicios);
        $concursos_quiebras = $datos_juicios->como_demandado->concursos_quiebras;
        $remates = $datos_juicios->como_demandado->remates;
        $pedidos_quiebra_y_juicios_ejecutivos = $datos_juicios->como_demandado->pedidos_quiebra_y_juicios_ejecutivos;
        $otros_juicios = $datos_juicios->como_demandado->otros_juicios;
        //
        $como_actor = $datos_juicios->como_actor;
        //
        return view('/informes-blue/actividades-tarea/verif-dcl-juicios')->with(compact('informe', 'contraparte', 'gestion', 'tarea', 'cliente', 'identificacion', 'concursos_quiebras', 'remates', 'pedidos_quiebra_y_juicios_ejecutivos', 'otros_juicios', 'como_actor'));
    }

    private static function generarCamposDocumento($docid, $blade = null) {
        //
        $temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('GENERATE', $docid, null, null, null, null, null, null, null, null), 'select');
        $doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
        $flds = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('search', $docid, null, null, null, null, null, null, null, null), 'select');
        //
        // Traducciones::$blade = 'doc_etiquetas';
        if ($blade != null) {
            SQLConnection::obtenerTraducciones(Traducciones::$blade);
        }
        //** Documento foto de Inquiro vitae
        $foto_perfil_url = NULL;
        if ($doc->es_foto_perfil > 0) {
            $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $doc->contraparte), 'selectOne');
            if (!empty($busqueda)) {
                $foto_perfil_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->foto;
            }
        }
        //
        $hay_campos = false;
        $hay_archivo = false;
        foreach ($flds as $fld) {
            $hay_campos = !$hay_campos ? ($fld->tipo_campo != 'F' ? true : $hay_campos) : $hay_campos;
            $hay_archivo = !$hay_archivo ? ($fld->tipo_campo == 'F' ? true : $hay_archivo) : $hay_archivo;
        }
        //
        $secciones = [];
        //
        $data = [];
        foreach ($flds as $k => $fld) {
            /*if ($doc->tipo_doc == '1147' && $fld->campo == '87'){
                         unset($flds[$k]);
                     }*/
            if ($fld->tipo_campo == 'G') {
                /* encabezados de la tabla */
                $c1 = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', $fld->campo, null, null, null, null, null, null), 'select');
                $cols = [];
                foreach ($c1 as $clm) {
                    // $clm->etiqueta = Traducciones::get($clm->etiqueta);
                    $cols[] = $clm->etiqueta;
                }
                /* configuración de los campos y valores de la tabla */
                $c2 = SQLConnection::backendStoreProcedure('LN_doc_campos_col_', array($fld->doc_id, $fld->seccion, $fld->campo), 'select');

                // $c2 = SQLConnection::backendStoreProcedure('LN_doc_campos_col_', array(310812, 0, 638), 'select');
                // var_dump($c2);
                $valores = [];
                foreach ($c2 as $k1 => $valor) {
                    $valores[$valor->fila][$valor->col]['valor_texto'] = $valor->valor_texto;
                    if (!empty($valor->valor_texto)) {
                        $valores[$valor->fila][$valor->col]['valor_texto'] = Traducciones::get($valor->valor_texto);
                    }
                    $valores[$valor->fila][$valor->col]['valor_fecha'] = $valor->valor_fecha;
                    $valores[$valor->fila][$valor->col]['valor_fecha_str'] = $valor->valor_fecha_str;
                    $valores[$valor->fila][$valor->col]['valor_numerico'] = $valor->valor_numerico;
                    $valores[$valor->fila][$valor->col]['tipo_campo'] = $valor->tipo_campo;
                    $valores[$valor->fila][$valor->col]['longitud'] = $valor->longitud;
                    $valores[$valor->fila][$valor->col]['decimales'] = $valor->decimales;
                    $valores[$valor->fila][$valor->col]['etiqueta'] = $valor->etiqueta;
                    //
                    $valores[$valor->fila][$valor->col]['file_exists'] = false;
                    $valores[$valor->fila][$valor->col]['file_path'] = NULL;
                    $path_row = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '/' . $fld->campo . '/' . $valor->fila . '.pdf';
                    if (file_exists($path_row)) {
                        $valores[$valor->fila][$valor->col]['file_exists'] = true;
                        $valores[$valor->fila][$valor->col]['file'] = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '/' . $fld->campo . '/' . $valor->fila . '.pdf';
                    }
                    //-------
                    //$valores[$valor->fila]['es_vacio'] = (empty($valor->valor_texto) and empty($valor->valor_fecha) and empty($valor->valor_numerico)) ? 1 : 0;
                    //
                    if ($valor->tipo_campo == 'S' or $valor->tipo_campo == 'R' or $valor->tipo_campo == 'C') {
                        if (strlen($valor->opciones) > 0) {
                            $r = explode("^", $valor->opciones);
                            $txt = [];
                            $val = [];
                            if (sizeof($r) >= 2) {
                                $txt = explode("|", $r[0]);
                                $val = explode("|", $r[1]);
                            }
                            //
                            $text_len = count($txt);
                            for ($i = 0; $i < $text_len; $i++) {
                                $txt[$i] = Traducciones::get($txt[$i]);
                            }
                            //
                            $valores[$valor->fila][$valor->col]['opciones']['txt'] = $txt;
                            $valores[$valor->fila][$valor->col]['opciones']['val'] = $val;
                        }
                    }
                    // elseif ( $valor->tipo_campo == 'D' ){
                    // 	// fecha
                    //     //var_dump("entra");   
                    // }
                }
                //
                $fld->headers = $cols;
                $fld->values = $valores;
            } else {
                // $fld->etiqueta = Traducciones::get($fld->etiqueta);
                /* campo no tabla */
                if (($fld->tipo_campo == 'S' or $fld->tipo_campo == 'R' or $fld->tipo_campo == 'C')) {
                    $valores = [];
                    //
                    if (strlen($fld->opciones) > 0) {
                        $r = explode("^", $fld->opciones);
                        $txt = [];
                        $val = [];
                        if (sizeof($r) >= 2) {
                            $txt = explode("|", $r[0]);
                            $val = explode("|", $r[1]);
                        }
                        //
                        $text_len = count($txt);
                        for ($i = 0; $i < $text_len; $i++) {
                            $txt[$i] = Traducciones::get($txt[$i]);
                        }
                        //
                        $valores[] = $txt;
                        $valores[] = $val;
                    }
                    $fld->opciones = $valores;
                }
            }
            //
            $data[$fld->titulo_seccion][] = $fld;
            //
            if ($fld->titulo_seccion != '') {
                $secciones[$fld->titulo_seccion]['texto_bajada'] = $fld->texto_bajada;
                $secciones[$fld->titulo_seccion]['texto_pie'] = $fld->texto_pie;
            }
        }
        //
        if ($doc->es_balance > 0) {
            $file_path = env('PATH_COMPARTIDO') . '/' . $doc->ruta_archivo;
            $file_url = env('RUTA_COMPARTIDO') . '/' . $doc->ruta_archivo;
        } else {
            $file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
            $file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
        }
        //
        $file_exists = file_exists($file_path);
        //
        $search_array = array('%inicio_vigencia_fecha%', '%fin_vigencia_fecha%', '%inicio_vigencia_periodo%', '%fin_vigencia_periodo%');
        $replace_array = array($doc->inicio_vigencia, $doc->fecha_vigencia, (null !== $doc->inicio_vigencia) ? substr($doc->inicio_vigencia, 3, 7) : null, (null !== $doc->fecha_vigencia) ? substr($doc->fecha_vigencia, 3, 7) : null);
        //
        return ['docid' => $docid, 'doc_data' => $doc, 'data' => $data, 'secciones' => $secciones, 'file_path' => $file_path, 'file_url' => $file_url, 'file_exists' => $file_exists, 'hay_campos' => $hay_campos, 'hay_archivo' => $hay_archivo, 'search_array' => $search_array, 'replace_array' => $replace_array, 'foto_perfi_url' => $foto_perfil_url];
        //return [$docid, $doc, $data, $secciones,$file_path,$file_url, $file_exists, $hay_campos, $hay_archivo, $search_array, $replace_array, $foto_perfil_url];
    }

    public static function procesarSocio() {
        $cuit = Request::input('cuit');
        $cuit_persona = Request::input('cuit_persona');
        $desde = Request::input('desde');
        $hasta = Request::input('hasta');
        $cargo = Request::input('id_cargo');
        $id_socio = Request::input('id_socio');
        $tipo_persona = 'f';
        $ultimo = Request::input('ultimo');
        $edicto = Request::input('incluir_edicto');
        $archivo_edicto = Request::input('archivo_edicto') == 'undefined' ? '' : Request::input('archivo_edicto');
        $contenido_archivo = Request::input('texto_edicto') == 'undefined' ? NULL : Request::input('texto_edicto');
        $provincia_boletin = Request::input('provincia_boletin') == 'undefined' ? NULL : Request::input('provincia_boletin');
        $fecha_publicacion = Request::input('fecha_boletin') == 'undefined' ? NULL : Request::input('fecha_boletin');
        $user_id = Session::get("usuario")->user_id;
        if (Request::input('cuit_persona') !== null && Request::input('cuit_persona') != '') {
            if (isset($edicto)) {
                if ($edicto == 1) {
                    $file_edicto = isset($_FILES['archivo_edicto']['name']) ? $_FILES['archivo_edicto']['name'] : '';
                    if ($file_edicto != '') {
                        if ($_FILES['archivo_edicto']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['archivo_edicto']['tmp_name'])) {
                            $file_content = file_get_contents($_FILES['archivo_edicto']['tmp_name']);
                            $edicto = 1;
                            $archivo_edicto = $file_edicto;
                            $contenido_archivo = $file_content;
                        } else {
                            $edicto = 0;
                            $archivo_edicto = '';
                            $contenido_archivo = '';
                        }
                    } else {
                        $edicto = 0;
                        $archivo_edicto = '';
                        $contenido_archivo = '';
                    }
                } else {
                    $edicto = $edicto;
                    $archivo_edicto = '';
                    $contenido_archivo = Request::input('texto_edicto') == 'undefined' ? '' : Request::input('texto_edicto');
                }
            } else {
                $edicto = 0;
                $archivo_edicto = '';
            }

            if (!empty($desde) && strlen($desde) == 7) {
                $desde .= '-01';
            }
            if (!empty($hasta) && strlen($hasta) == 7) {
                $hasta .= '-01';
            }
            $socio = [];
            $socio['cuit'] = $cuit_persona;
            $socio['cuit_persona'] = $cuit;
            $socio['desde'] = $desde;
            $socio['hasta'] = $hasta;
            $socio['cargo'] = $cargo;
            $socio['id_socio'] = $id_socio;
            $socio['tipo_persona'] = $tipo_persona;
            $socio['ultimo'] = $ultimo;
            $socio['edicto'] = $edicto;
            $socio['archivo_edicto'] = $archivo_edicto;
            $socio['contenido_archivo'] = $contenido_archivo;
            $socio['provincia_boletin'] = $provincia_boletin;
            $socio['fecha_publicacion'] = $fecha_publicacion;
            $socio['user_id'] = $user_id;
            $socio = Misc::convertirStringsVaciosEnNull($socio);

            $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, NULL, $socio["cuit"]), 'selectOne');
            $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, NULL, $socio["cuit_persona"]), 'selectOne');

            $socio = SQLConnection::backendStoreProcedure('backend_procesar_socio', array_values($socio), true);
        }
        return response()->json([
            'procesado' => (isset($socio) && isset($socio->id_socio)) ? true : false,
            'view' => isset($view) ? $view : ''
        ]);

        // @p_cuit varchar(20),
        // @p_cuit_socio varchar(20),
        // @p_desde varchar(20),
        // @p_hasta varchar(20),
        // @p_cargo varchar(20),
        // @p_id_socio int,
        // @p_tipo_persona varchar(1),
        // @p_ultimo varchar(1),

        // @p_edicto                    tinyint,
        // @p_archivo_edicto            varchar(200),
        // @p_contenido_archivo        text,
        // @provincia_boletin            varchar(50) = null,
        // @fecha_publicacion            varchar(20) = null,

        // @user_id int = null
    }

    public static function cargar_boletin() {
        //
        $seguimiento = array();
        $mensaje = "";
        $region = $_POST['region'];
        $fecha = $_POST['fecha'];
        $boletin = $_FILES['boletin']['name'];
        $p = self::provincias($region);
        $boletin = self::getNombreBoletin2($fecha, $p);
        $boletin_csv = self::getNombreBoletinCsv($boletin);
        $temporal = $_FILES['boletin']['tmp_name'];
        $destino = "/var/www/html/compartido/edictos-ai/";
        $todo = array($boletin, $boletin_csv, $temporal, $region, $fecha, $destino . $boletin, $destino . $boletin_csv);

        //---------------------------------------------------------------------------------------------------------
        if (move_uploaded_file($temporal, $destino . $boletin)) {
            try {
                array_push($seguimiento, '---> Creando CSV...');
                //--> debe crear primero el csv
                $arch = fopen($destino . $boletin_csv, 'a');
                $fwrite = fwrite($arch, 'Se produjo un error.. ExtractorController linea->185');
                fclose($arch);
                array_push($seguimiento, '---> CSV creado');
                //--> se deberia llamar al script correspondiente para parsear y guardar el contenido dentro del nuevo 
                array_push($seguimiento, '---> Llamando script de su correspondiente pais...');
                switch ($region) {
                    case '1':
                        // BORA
                        // $auc = system(escapeshellcmd("python3 /var/www/html/edictos-ai/./bora_prueba.py ".$destino.$boletin." ".$fecha." ".$destino.$boletin_csv));
                        array_push($seguimiento, '---> Se llamo al script de BORA');
                        array_push($seguimiento, '---> Ejecutando script de BORA...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./bora_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de BORA');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '2':
                        // BUENOS AIRES
                        array_push($seguimiento, '---> Se llamo al script de BUENOS AIRES');
                        array_push($seguimiento, '---> Ejecutando script de BUENOS AIRES...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/ba_prueba.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de BUENOS AIRES');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '3':
                        // CORDOBA
                        array_push($seguimiento, '---> Se llamo al script de CORDOBA');
                        array_push($seguimiento, '---> Ejecutando script de CORDOBA...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./cordoba_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de CORDOBA');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '4':
                        // SANTA FE
                        array_push($seguimiento, '---> Se llamo al script de SANTA FE');
                        array_push($seguimiento, '---> Ejecutando script de SANTA FE...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./santafe_comerciales_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de SANTA FE');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;

                    case '5':
                        // MENDOZA
                        array_push($seguimiento, '---> Se llamo al script de MENDOZA');
                        array_push($seguimiento, '---> Ejecutando script de MENDOZA...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./mendoza_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de MENDOZA');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '6':
                        // CATAMARCA
                        array_push($seguimiento, '---> Se llamo al script de CATAMARCA');
                        array_push($seguimiento, '---> Ejecutando script de CATAMARCA...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./catamarca_v1.2_avisos-y-quiebras.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de CATAMARCA');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '7':
                        // CHACO
                        array_push($seguimiento, '---> Se llamo al script de CHACO');
                        array_push($seguimiento, '---> Ejecutando script de CHACO...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./chaco_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de CHACO');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '8':
                        // SALTA
                        array_push($seguimiento, '---> Se llamo al script de SALTA');
                        array_push($seguimiento, '---> Ejecutando script de SALTA...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./salta_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de SALTA');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '9':
                        // MISIONES
                        array_push($seguimiento, '---> Se llamo al script de MISIONES');
                        array_push($seguimiento, '---> Ejecutando script de MISIONES...');
                        $auc = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./misiones_v1.3_judiciales.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de MISIONES');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '10':
                        // JUJUY
                        array_push($seguimiento, '---> Se llamo al script de JUJUY');
                        array_push($seguimiento, '---> Ejecutando script de JUJUY...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./jujuy_v2.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de JUJUY');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '11':
                        // LA PAMPA
                        array_push($seguimiento, '---> Se llamo al script de LA PAMPA');
                        array_push($seguimiento, '---> Ejecutando script de LA PAMPA...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./la_pampa.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de LA PAMPA');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '12':
                        // NEUQUEN
                        array_push($seguimiento, '---> Se llamo al script de NEUQUEN');
                        array_push($seguimiento, '---> Ejecutando script de NEUQUEN...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./neuquen_judiciales.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de NEUQUEN');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '13':
                        // TUCUMAN
                        array_push($seguimiento, '---> Se llamo al script de TUCUMAN');
                        array_push($seguimiento, '---> Ejecutando script de TUCUMAN...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./tucuman.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de TUCUMAN');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '14':
                        // ENTRE RIOS
                        array_push($seguimiento, '---> Se llamo al script de ENTRE RIOS');
                        array_push($seguimiento, '---> Ejecutando script de ENTRE RIOS...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./entrerios_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de ENTRE RIOS');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '15':
                        // LA RIOJA
                        array_push($seguimiento, '---> Se llamo al script de LA RIOJA');
                        array_push($seguimiento, '---> Ejecutando script de LA RIOJA...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./la_rioja.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de LA RIOJA');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '16':
                        // SAN LUIS
                        array_push($seguimiento, '---> Se llamo al script de SAN LUIS');
                        array_push($seguimiento, '---> Ejecutando script de SAN LUIS...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./san_luis.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de SAN LUIS');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '17':
                        // RIO NEGRO
                        array_push($seguimiento, '---> Se llamo al script de RIO NEGRO');
                        array_push($seguimiento, '---> Ejecutando script de RIO NEGRO...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./rionegro_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de RIO NEGRO');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '18':
                        // BS AS JUDICIALES
                        array_push($seguimiento, '---> Se llamo al script de BS AS JUDICIALES');
                        array_push($seguimiento, '---> Ejecutando script de BS AS JUDICIALES...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./pba_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de BS AS JUDICIALES');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '19':
                        // SANTA FE JUDICIALES
                        array_push($seguimiento, '---> Se llamo al script de SANTA FE JUDICIALES');
                        array_push($seguimiento, '---> Ejecutando script de SANTA FE JUDICIALES...');
                        shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./santafe_judiciales_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de SANTA FE JUDICIALES');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '20':
                        // CORDOBA JUDICIALES
                        array_push($seguimiento, '---> Se llamo al script de CORDOBA JUDICIALES');
                        array_push($seguimiento, '---> Ejecutando script de CORDOBA JUDICIALES...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./cordoba_judiciales_n.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de CORDOBA JUDICIALES');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '21':
                        // CHUBUT
                        array_push($seguimiento, '---> Se llamo al script de CHUBUT');
                        array_push($seguimiento, '---> Ejecutando script de CHUBUT...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./chubut.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de CHUBUT');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '22':
                        // SANTA CRUZ
                        array_push($seguimiento, '---> Se llamo al script de SANTA CRUZ');
                        array_push($seguimiento, '---> Ejecutando script de SANTA CRUZ...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./santaCruz.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de SANTA CRUZ');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                    case '23':
                        // CORRIENTE
                        array_push($seguimiento, '---> Se llamo al script de CORRIENTE');
                        array_push($seguimiento, '---> Ejecutando script de CORRIENTE...');
                        $aux = shell_exec(escapeshellcmd("python3 /var/www/html/edictos-ai/./corrientes.py " . $destino . $boletin . " " . $fecha . " " . $destino . $boletin_csv));
                        array_push($seguimiento, '---> Se ejecuto script de CORRIENTE');
                        $mensaje = file($destino . $boletin_csv);
                        $archivo_csv = $destino . $boletin_csv;
                        break;
                }

            } catch (\Exception $e) {
                $seccion = "ExtractorController";
                $nombre_funcion = "carga_boletin";
                $error = "Error en la funcion generica linea->335";
                SQLConnection::control_erores($seccion, $nombre_funcion, $error);
                $mensaje = $e->getMessage();
            }

        } else {
            array_push($seguimiento, '---> ERROR! al subir el archivo. ExtractorController linea -> 181');
            $seccion = "ExtractorController";
            $nombre_funcion = "carga_boletin";
            $mensaje = "No se puede cargar el archivo o el archivo ingresado es invalido. linea -> 343";
            SQLConnection::control_erores($seccion, $nombre_funcion, $mensaje);
        }

        $vista = view("extractor/notificacion-carga-boletin-tarea")->with(compact(['mensaje', 'archivo_csv', 'seguimiento']))->render();

        return json_encode($vista);
    }

    public static function provincias($n) {
        $prov = ['', 'BORA', 'BUENOS_AIRES', 'CORDOBA', 'SANTA_FE', 'MENDOZA', 'CATAMARCA', 'CHACO', 'SALTA', 'MISIONES', 'JUJUY', 'LA_PAMPA', 'NEUQUEN', 'TUCUMAN', 'ENTRE_RIOS', 'LA_RIOJA', 'SAN_LUIS', 'RIO_NEGRO', 'BUENOS_AIRES_JUDICIALES', 'SANTA_FE_JUDICIALES', 'CORDOBA_JUDICIALES', 'CHUBUT', 'SANTA_CRUZ', 'CORRIENTES', 'SANTIAGO_DEL_ESTERO'];
        return $prov[$n];
    }

    public static function getNombreBoletin2($fecha, $p) {
        return $p . '_' . $fecha . '.txt';
    }

    public static function getNombreBoletinCsv($boletin) {
        $boletin = explode('.', $boletin);
        return $boletin[0] . '.csv';
    }


    public static function regiones() {
        // LISTA DE RESIDENCIAS ALMACENADAS
        $cuit = Request::input("cuit");
        $domicilios = SQLConnection::obtenerDomicilios($cuit);
        $dom_nacimiento = NULL;
        $dom_id = NULL;
        $dom_vivienda = NULL;
        foreach ($domicilios as $domicilio) {
            if ($domicilio->tipo_domicilio == 'N') {
                $dom_nacimiento = $domicilio;
            } elseif ($domicilio->tipo_domicilio == 'I') {
                $dom_id = $domicilio;
            } elseif ($domicilio->tipo_domicilio == 'V') {
                $dom_vivienda = $domicilio;
            }
        }
        // CARGA DE BOLETINES
        $regiones = SqlConnection::backendStoreProcedure('obtener_regiones_edictos', array('1'));
        $respuesta = array("dom_nacimiento" => $dom_nacimiento, "dom_id" => $dom_id, "dom_vivienda" => $dom_vivienda, "domicilios" => $domicilios, "regiones" => $regiones);
        echo json_encode($respuesta);
    }

    public static function aportesSeguridadSocial() {
        $cuit = Request::input('identificacion');
        $nombre_cliente = Request::input('nombre_cliente');
        // $cuit = '27344195099'; // --bruno
        // $cuit = '30641368977'; // --fidelitas
        // $cuit = '20336165009'; // --diego
        // Define si el último periodo es 1 o 2 meses antes
        $hoy = date("d-m-Y");
        if (explode('-', $hoy)[0] > 20) {
            $periodo = date("m-Y", strtotime("-1 month", strtotime($hoy)));
        } else {
            $periodo = date("m-Y", strtotime("-2 month", strtotime($hoy)));
        }
        // 
        $tipo_persona = Misc::tipoPersona($cuit);
        $registros = [];
        $empleados = [];

        if ($tipo_persona == 'F') {
            // Busca resultados de los todos los aportes de la persona
            $registros = SQLConnection::backendStoreProcedure('backend_mis_aportes', array($cuit, NULL, 12, 1), false);
            $cuit_persona = '';
            // Recorre el resultado de la consulta y separa por empresa
            foreach ($registros as $k => $reg) {
                if ($reg->cuit_empleador == $cuit_persona) {
                    if ($reg->periodo_str == $periodo) {
                        $empleados[$cuit_persona]['ultimo_registro'] = 1;  // Define si tiene el último registro de aportes
                    }
                } else {
                    $cuit_persona = $reg->cuit_empleador;
                    $empleados[$cuit_persona]['ultimo_registro'] = 0;  // En el array de empleados define la variable de último registro como 0 default.
                    // 
                    $empleados[$cuit_persona]['empleados'] = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('selectCuit', null, $cuit_persona));
                }
            }
            //
        } elseif ($tipo_persona == 'J') {
            $registros = SQLConnection::backendStoreProcedure('mis_aportes_empresa', array($cuit), false);
            if (!empty($registros)) {
                if ($periodo < $registros[count($registros) - 1]->periodo_str) {
                    $empleados[$cuit]['ultimo_registro'] = 1;
                } else {
                    $empleados[$cuit]['ultimo_registro'] = 0;
                    $empleados[$cuit]['empleados'] = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('selectCuit', null, $cuit));
                }
            }
            $empleados[$cuit]['empleados'] = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('selectCuit', null, $cuit));
        }

        return view('/informes-blue/actividades-tarea/aportes')->with(compact('registros', 'cuit', 'empleados', 'nombre_cliente', 'tipo_persona'));
    }

    /**
     * Función que tiene
     * la actividad de carga de
     * balances
     * @return \View
     */
    public function cargaBalances() {
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $task_id = Request::Input('task_id');
        $user_id = Session::get("usuario")->user_id;
        $token_por_secciones = Misc::obtenerTokenSeccion('contables');

        $cuit = Request::Input('identificacion');
        //$nombre_persona = Request::Input('nombre_persona');
        $nombre_persona = Request::Input('nombre_contraparte');
        $anios = 50;
        $visible = 1;
        $monedas = SQLConnection::obtenerMonedas();
        $ruta_archivo = ENV('RUTA_ARCHIVO_PDF') . '/balances/' . $cuit;
        //$balances = SQLConnection::backendBalancesContables($cuit,$anios,$visible,$task_id);
        $balances = SQLConnection::backendStoreProcedure('backend_balances_contables', array(null, $cuit, $anios, $visible, $task_id, $user_id), "select");
        //		
        return view('/informes-blue/actividades-tarea/balances_estados_contables')->with(compact('balances', 'cuit', 'nombre_persona', 'user_id', 'visible', 'task_id', 'monedas', 'ruta_archivo', 'token_por_secciones'));
    }

    public function cerrarInformeLED() {
        $contraparte = Request::input('contraparte');
        $tarea = Request::input('tarea');
        $desde_mis_tareas = !is_null(Request::input('desde_mis_tareas')) ? Request::input('desde_mis_tareas') : null;
        $user_id = Session::get('usuario')->user_id;
        //
        $cliente = Request::input('cliente');
        $nombre_tarea = Request::input('nombre_tarea');
        $prod = env('LED_PRODUCTO');
        //
        SQLConnection::logTrazabilidad('Se aprobo la tarea '. $nombre_tarea , 'FIN_TAREA', Session::get('webdata')['id_menu_plataforma'], $user_id, $prod,$cliente, $contraparte, null, null, null, null, null, NULL, NULL, $tarea);
        SQLConnection::backendStoreProcedure('LN_Blue_UPDAGB', array('CIERRE_TOTAL', $contraparte, $tarea, $user_id, NULL, NULL, NULL, NULL, 'K', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
        // Ejecutar despues de publicar un informe
        SQLConnection::backendStoreProcedure('UPD_datos_dossier_en_contraparte', array($contraparte));
        if (!is_null($desde_mis_tareas)) {
            return 1;
        }
        return redirect('/informes-blue');
    }

    /**
     * Función que tiene
     * la actividad de carga
     * de informe comercial  
     * exterior colegas 
     */
    public function vistaInformeComercialExtC() {
        $id = Request::input('contraparte');
        $cdata = DB::selectOne('select cliente, contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
        $cliente = Request::input('cliente');
        $informe = Request::input('informe');
        $gestion = Request::input('gestion');

        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', array('SELECCIONAR_INFORME', $id, $cliente, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $informe, $gestion), 'selectOne');
        $prod = $report_data->producto;

        $hay_archivo = false;

        $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');
        $infexterior_file = '';
        $infexterior_url = '';
        if (file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf')) {
            $infexterior_file = $id . '.pdf';
            $infexterior_url = env('RUTA_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
            $hay_archivo = true;
        }

        $infexteriordemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_infexterior_contraparte', $id), 'selectOne');
        $score_res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'SCORE_IC'), 'selectOne');

        $score = '';
        $motivo = '';

        if (isset($score_res)) {
            $score = $score_res->valor;
            $motivo = $score_res->valor_memo;
        }

        return view('/informes-blue/actividades-tarea/informe-comercial-exterior-colegas')->with(compact('contrap', 'score', 'motivo', 'prod', 'infexteriordemo', 'infexterior_file', 'infexterior_url', 'hay_archivo'));
    }

    public static function borrarInformeComercialExtC() {
        $id = Request::input('contraparte');
        $prod = Request::input('producto');
        $cdata = DB::selectOne('select cliente, contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');

        if (file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf')) {
            unlink(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf');
        }

        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('BORRAR_SCORE_IC', $id), 'selectOne');

        return 0;
    }

    /**
     * Función que tiene
     * la actividad del traslado
     * de informacion del facon 
     */
    public static function vistaTrasladoInformacionFacon() {
        $nombre_cliente = Request::input('nombre_cliente');
        $nombre_contraparte = Request::input('nombre_contraparte');
        $contraparte = Request::input('contraparte');
        $gestion = Request::input('gestion');
        return view('/informes-blue/actividades-tarea/traslado-informacion-facon')->with(compact('nombre_cliente', 'nombre_contraparte', 'contraparte', 'gestion'));
    }

    ///////////////////////////////////////////////
    ///////// TRASLADO DE BALANCE A EXCEL /////////
    ///////////////////////////////////////////////

    public static function trasladoBalance() {
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $task_id = Request::Input('task_id');
        $user_id = Session::get("usuario")->user_id;
        $cuit = Request::Input('identificacion');
        $nombre_persona = Request::Input('nombre_persona');
        $anios = 50;
        $visible = 1;
        $monedas = SQLConnection::obtenerMonedas();
        //$balances = SQLConnection::backendBalancesContables($cuit,$anios,$visible,$task_id);
        $balances = SQLConnection::backendStoreProcedure('backend_balances_contables', array(null, $cuit, $anios, $visible, $task_id, $user_id), "select");
        //		
        return view('/informes-blue/actividades-tarea/tarea_traslado_excel')->with(compact('balances', 'cuit', 'nombre_persona', 'user_id', 'visible', 'task_id', 'monedas'));
    }

    public function VerTablaBalanceTraslado() {
        $nombre_persona = Request::Input('nombre_persona');
        $cuit = Request::Input('cuit');
        $id_balance = Request::input('id_balance');
        //$balances = SQLConnection::backendBalancesContablesid($id_balance);
        $user_id = Session::get("usuario")->user_id;
        $balances = SQLConnection::backendStoreProcedure('backend_balances_contables', array($id_balance, null, null, null, null, $user_id), "selectOne");
        $pp = $balances->patrimonio + $balances->pas_total;
        $mb = $balances->res_vtanet - $balances->res_cosmer;
        $balances->anc_otrcre = $balances->anc_otrcre + $balances->anc_crevta;
        $balances->pc_ctapag = $balances->pc_ctapag + $balances->pc_antcli;
        if ($balances->res_resfin < 0) {
            $balances->res_otrosegr = $balances->res_otrosegr + ($balances->res_resfin * (-1));
        } else {
            $balances->res_otrosing = $balances->res_otrosing + $balances->res_resfin;
        }

        return view('/informes-blue/actividades-tarea/balances_excel')->with(compact('balances', 'cuit', 'nombre_persona', 'pp', 'mb'));
    }

    /**
     * Función que tiene
     * la actividad del Analisis Contable
     */
    public static function vistaAnalisisContable() {
        $nombre_contraparte = Request::input('nombre_contraparte');
        $identificacion = Request::input('identificacion');
        $columnas = 3;

        $balances = SQLConnection::backendStoreProcedure('LN_balances_data', [$identificacion, null, null, $columnas]);
		$columnas = count($balances);
        // Obtener prompts
        $datos = array('seleccionar', null, null, null, null, null, null, null, null);
        $datos_prompt = SQLConnection::backendStoreProcedure('gestor_prompts', $datos);
        //dd($datos_prompt);

        // Obtener la ultima fecha de balance
		$fechasBalances = array_map(function($balance){ return $balance->fecha_balance; }, $balances);
		$ultimaFechaBalance = !empty($fechasBalances) ? max($fechasBalances) : null;
		
		$idUltimoBalance = ''; 
		foreach($balances as $balance){
			if ($balance->fecha_balance == $ultimaFechaBalance ) {
				$idUltimoBalance = $balance->id_balance;
			}
		}
        
        return view('/informes-blue/actividades-tarea/analisis-balances')->with(compact('nombre_contraparte', 'identificacion', 'datos_prompt','idUltimoBalance','ultimaFechaBalance'));
    }


    /**
     * Función que tiene
     * la actividad de Concluciones
     */
    public static function vistaConcluciones() {
        $nombre_contraparte = Request::input('nombre_contraparte');
        $identificacion = Request::input('identificacion');
        $informe = Request::input('informe');

        $datos_informe = SQLConnection::backendStoreProcedure('IV_panel_reports', array('informe_by_id', Session::get('usuario')->user_id, null, null, null, $informe), 'selectOne');

        return view('/informes-blue/actividades-tarea/concluciones')->with(compact('nombre_contraparte', 'identificacion', 'datos_informe'));
    }

    //FUNCIONES DE LA TAREA APROBACION Y PUBLICACION
    public static function publicarInforme() {
        $contraparte = Request::input('contraparte');
        $informe = Request::input('informe');
        $gestion = Request::input('gestion');
        $cliente = Request::input('cliente');
        $tarea = Request::input('tarea');
        $nombre_tarea = Request::input('nombre_tarea');

        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', array('SELECCIONAR_INFORME', $contraparte, $cliente, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $informe, $gestion), 'selectOne');
        $dossierdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $contraparte, NULL, $report_data->producto), 'selectOne');
        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $validacion_ic = false;
        // 
        $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $contraparte, 'SCORE_DOSSIER'), 'selectOne');
        $nivelr = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $contraparte, 'NIVEL_RIESGO'), 'selectOne');
        $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $contraparte, 'DEP_ECON'), 'selectOne');
        $validacion_ind = false;
        //
        if (!is_null($dossierdata->status_formales) || !is_null($dossierdata->status_relaciones) || !is_null($dossierdata->status_comerciales) || !is_null($dossierdata->status_fiscales) || !is_null($dossierdata->status_legales) || !is_null($dossierdata->status_bancos) || !is_null($dossierdata->status_comex) || !is_null($dossierdata->status_contables) || !is_null($dossierdata->status_prensa) || !is_null($dossierdata->status_peps) || !is_null($dossierdata->analisis)) {
            $validacion_ic = true;
        }
        if (!is_null($score) || !is_null($nivelr) || !is_null($depecon) || !is_null($dossierdata->resenia) || !is_null($dossierdata->analisis)) {
            $validacion_ind = true;
        }
        //arreglo fecha
        $date = str_replace('/', '-', $dossierdata->inicio_actividades_dmy);
        $date = date('Y-m-d', strtotime($date));

        // ARCHIVO DOSSIER
        $dossier_file = '';
        $dossier_url = '';
        if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte . '/' . $gestion . '/' . $gestion . '.pdf')) {
            // $dossier_file = $contraparte . '.pdf';
            // $dossier_url = env('RUTA_DOCUMENTOS') . '/dossier/' . $contraparte . '.pdf';
            $dossier_file = $gestion . '.pdf';
            $dossier_url = env('RUTA_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte . '/' . $gestion . '/' . $dossier_file;
        }
        // FIN ARCHIVO DOSSIER
        $logo_name = null;
        $file_exists = false;
        if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.png')) {
            $logo_name = $contraparte . '.png';
        }
        //
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.jpg')) {
                $logo_name = $contraparte . '.jpg';
            }
        }
        //
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.gif')) {
                $logo_name = $contraparte . '.gif';
            }
        }
        // dd($dossierdata);
        return view('/informes-blue/actividades-tarea/aprobacion-publicacion')->with(compact('date', 'contraparte', 'gestion', 'cliente', 'dossierdata', 'dossier_file', 'dossier_url', 'report_data', 'informe', 'score', 'nivelr', 'depecon', 'tarea', 'contrap', 'logo_name', 'validacion_ic', 'validacion_ind','nombre_tarea'));
    }


    public function guardarDatosControlCalidad() {
        $contraparte = Request::input('contraparte');
        $producto = Request::input('producto');
        $informe = Request::input('informe');

        $inicio_actividades = ('' != Request::input('inicio_actividades')) ? 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;
        if ( !is_null($analisis) && !empty($analisis) ) {
            $analisis = str_replace(" \r\n",'',$analisis);
        }
        $temp = SQLConnection::backendStoreProcedure('LN_demo_', array('UPDATE', $contraparte, 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');

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

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

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

        return 0;
    }

    public function cargaArchivoControlCalidad() {
        $contraparte = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $gestion = Request::input('gestion');
        $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/' . $contraparte . '.' . $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/' . $contraparte . '.jpg')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.jpg');
                            }
                            //
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.gif')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.gif');
                            }
                        }
                        //
                        if ($ftype == 'jpg') {
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . 'png')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.png');
                            }
                            //
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.gif')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.gif');
                            }
                        }
                        //
                        if ($ftype == 'gif') {
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.png')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.png');
                            }
                            //
                            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.jpg')) {
                                unlink(env('PATH_DOCUMENTOS') . '/logos/' . $contraparte . '.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/' . $contraparte . '.' . $ftype;

                    $path = env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte . '/' . $gestion . '/' . $gestion . '.' . $ftype;
                    $ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                    if ($ftype == 'pdf') {
                        if (!is_dir(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente)) {
                            mkdir(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente);
                        }
                        if (!is_dir(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte)) {
                            mkdir(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte);
                        }
                        if (!is_dir(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte . '/' . $gestion)) {
                            mkdir(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte . '/' . $gestion);
                        }
                        move_uploaded_file($_FILES['archivo_dossier']['tmp_name'], $path);
                    }
                }
            }
        }

        return 0;
    }

    public function borrarArchivoControlCalidad() {
        $contraparte = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $gestion = Request::input('gestion');

        if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte . '/' . $gestion . '/' . $gestion . '.pdf')) {
            unlink(env('PATH_DOCUMENTOS') . '/dossier/' . $cliente . '/' . $contraparte . '/' . $gestion . '/' . $gestion . '.pdf');
        }

        return 1;
    }

    //////////////////////////
    ////PRENSA MULTIPLE //////
    //////////////////////////

    public static function cargarPrensaMultiple() {
        $cliente = Request::input('cliente');
        $contraparte = Request::input('contraparte');
        $gestion = Request::input('gestion');
        $tipo_doc = Request::input('tipo_doc');

        $doc = SQLConnection::backendStoreProcedure('LN_docs_', array('sin_accion', null, $cliente, $contraparte, $tipo_doc, null, null, null, null, null, null, null, null, null, null, $gestion, Session::get('usuario')->user_id, null, null), 'selectOne');

        $fields = null;
        $doc = null;
        $data = [];
        $busqueda_google_nombre = [];
        if (isset($doc->doc_id)) {
            $fields = self::generarCamposDocumento($doc->doc_id);
            $doc = $fields['doc_data'];
            $data = $fields['data'];
            $busqueda_google_nombre = explode(' ', $doc->nombre_persona);
        }

        $busqueda_google = '';

        if (count($busqueda_google_nombre) == 2) {
            $busqueda_google =
                '"' . $busqueda_google_nombre[0] . ' ' . $busqueda_google_nombre[1]
                . '"+OR+"' . $busqueda_google_nombre[1] . ', ' . $busqueda_google_nombre[0]
                . '"+OR+"' . $busqueda_google_nombre[0] . ' ' . substr($busqueda_google_nombre[1], 0, 1) . '."'
                . '"+OR+"' . $busqueda_google_nombre[1] . ' ' . substr($busqueda_google_nombre[0], 0, 1) . '."';
        } else if (count($busqueda_google_nombre) == 3) {
            $busqueda_google =
                '"' . $busqueda_google_nombre[2] . ' ' . $busqueda_google_nombre[1] . ' ' . $busqueda_google_nombre[0]
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . $busqueda_google_nombre[2] . ' ' . $busqueda_google_nombre[1]
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . $busqueda_google_nombre[2] . ' ' . substr($busqueda_google_nombre[1], 0, 1) . '.'
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . substr($busqueda_google_nombre[2], 0, 1) . '. ' . substr($busqueda_google_nombre[1], 0, 1) . '.'
                . '"+OR+"' . $busqueda_google_nombre[2] . ' ' . $busqueda_google_nombre[0]
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . $busqueda_google_nombre[2]
                . '"+OR+"' . $busqueda_google_nombre[2] . ' ' . substr($busqueda_google_nombre[0], 0, 1) . '."'
                . '"+OR+"' . $busqueda_google_nombre[0] . ' ' . substr($busqueda_google_nombre[2], 0, 1) . '."';
        } else if (count($busqueda_google_nombre) == 4) {
            $busqueda_google =
                '"' . $busqueda_google_nombre[2] . ' ' . $busqueda_google_nombre[3] . ' ' . $busqueda_google_nombre[0] . ' ' . $busqueda_google_nombre[1]
                . '"+OR+"' . $busqueda_google_nombre[0] . ' ' . $busqueda_google_nombre[1] . ', ' . $busqueda_google_nombre[2] . ' ' . $busqueda_google_nombre[3] . '"';
        }

        return view('/informes-blue/actividades-tarea/cargar-prensa-new')->with(compact('doc', 'data', 'busqueda_google'));
    }

    ////////////////////////////////
    //// ACTIVIDAD FIDECHECK //////
    ///////////////////////////////

    public function fidecheckEditNuevo() {
        $id = Request::input('id_fidecheck');
        $seccion = Request::input('seccion');
        $contraparte = Request::input('contraparte');
        $fidecheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('select', $id, $contraparte, '', $seccion), 'selectOne');

        return view('/informes-blue/fidecheck/fidecheck_edit_nuevo')->with(compact(['fidecheck']));
    }

    // FUNCION ENCARGADA DE BORRAR UN REGISTRO DE FIDECHECK
    public function fidecheckDeleteNuevo() {
        $id = Request::input('id_fidecheck');
        $fcheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('select', $id), 'selectOne');
        //
        if (!empty($fcheck)) {
            $contraparte = $fcheck->contraparte;
            $cliente = $fcheck->cliente;
            $temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('DELETE', $id), 'selectOne');
            //
            //return view('/led/led_fidecheck_back')->with(compact(['cliente', 'contraparte']));
            return 1;
        }
    }

    public function fidecheckAddnuevo() {
        $id = Request::input('contraparte');
        $seccion = Request::input('seccion');
        $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');
        return view('/informes-blue/fidecheck/fidecheckaddnuevo')->with(compact(['seccion', 'qcontrap']));
    }

    public function fidecheckInsertNuevo() {
        $contraparte = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $seccion = Request::input('seccion');
        //
        $gestion = null;
        if ($seccion == 'R') {
            $gestion = Request::input('gestion_add_vinculo');
        }
        $nombre = ('' != Request::input('nombre')) ? Request::input('nombre') : NULL;
        $tax_id = ('' != Request::input('tax_id')) ? Request::input('tax_id') : NULL;
        $nacionalidad = ('' != Request::input('nacionalidad')) ? Request::input('nacionalidad') : NULL;
        $fidecheck = ('' != Request::input('fidecheck')) ? Request::input('fidecheck') : NULL;
        //
        $porcentaje = (NULL !== Request::input('porcentaje')) ? ('' != Request::input('porcentaje') ? Request::input('porcentaje') : NULL) : NULL;
        $cargo = (NULL !== Request::input('cargo')) ? ('' != Request::input('cargo') ? Request::input('cargo') : NULL) : NULL;
        $tipo_relacion = (NULL !== Request::input('tipo_relacion')) ? ('' != Request::input('tipo_relacion') ? Request::input('tipo_relacion') : NULL) : NULL;
        //
        $detalle = ('' != Request::input('detalle')) ? Request::input('detalle') : NULL;
        //
        if ($seccion == 'R') {
            $temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('insert', NULL, $contraparte, $nombre, $seccion, $tax_id, $nacionalidad, $porcentaje, $tipo_relacion, $cargo, $fidecheck, $detalle, $gestion), 'selectOne');
        } else {
            $temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('insert', NULL, $contraparte, $nombre, $seccion, $tax_id, $nacionalidad, $porcentaje, $tipo_relacion, $cargo, $fidecheck, $detalle), 'selectOne');
        }
        $temp = SQLConnection::backendStoreProcedure('LN_DASHBOARD_CLIENTE', array('FIDECHECK', NULL, null, null, $contraparte), 'selectOne');
        //
        return 'Exito';
    }

    //sección para la tarea de worldcheck en tareas
    public static function worldCheck() {
        $cliente = Request::input('cliente');
        $id = Request::input('contraparte');

        $inicio = (null !== Request::input('inicio')) ? Request::input('inicio') : 'inicio';
        //
        $cliente_datos = SQLConnection::backendStoreProcedure('LED_Clientes', array('select', $cliente, NULL, NULL, NULL), 'selectOne');
        $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');
        $servicio = $contrap->servicio_contratado;
        //
        if ($inicio == 'inicio') {
            $registros = SQLConnection::backendStoreProcedure('ln_completa_fidecheck_check', array($id, 'LN_check'), 'select');
        }
        //
        $socios = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'S'), 'select');
        $relac = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'R'), 'select');
        $direct = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'D'), 'select');
        $propio = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'P'), 'selectOne');
        //------- NUEVAS MODIFICACIONES
        $indicador = '383';
        $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'INDICADOR', $indicador), 'select');
        $campo = [];
        $nombre_producto_ant = '';
        //--
        foreach ($editables as $key => $editar) {
            $campo[$key] = new stdClass;
            $campo[$key]->nombre = $editar->nombre_indicador;
            $campo[$key]->clave_indicador = $editar->clave_indicador;
            $campo[$key]->tipo_dato = $editar->tipo_dato;
            $campo[$key]->nombre_producto = $editar->nombre_producto;
            $campo[$key]->producto = $editar->producto;
            //---
            if ($campo[$key]->nombre_producto == $nombre_producto_ant) {
                $campo[$key]->nombre_producto = '';
            } else {
                $nombre_producto_ant = $campo[$key]->nombre_producto;
            }
            //
            if ($editar->valor_texto !== null) {
                $campo[$key]->valor_indicador = $editar->valor_texto;
            } elseif ($editar->valor_numerico !== null) {
                $campo[$key]->valor_indicador = number_format($editar->valor_numerico, 2, '.', '.');
            } elseif ($editar->valor_fecha !== null) {
                $campo[$key]->valor_indicador = $editar->valor_fecha;
            } elseif ($editar->valor_memo !== null) {
                $campo[$key]->valor_indicador = $editar->valor_memo;
            }
            //
            $campo[$key]->tiene_opciones = 'NO';
            //
            if (!empty($editar->opciones)) {
                $campo[$key]->tiene_opciones = 'SI';
                $valores = [];
                $valores = explode('^', $editar->opciones);
                //
                foreach ($valores as $key2 => $valore) {
                    $valores2 = explode('|', $valore);
                    foreach ($valores2 as $keyk => $valore2) {
                        if ($key2 == 0) {
                            $campo[$key]->valor[$keyk] = $valore2;
                        }
                        //
                        if ($key2 == 1) {
                            $campo[$key]->opcion[$keyk] = $valore2;
                            $campo[$key]->color[$keyk] = null;
                        }
                    }
                }
            }
            //
            if ($editar->rango_inferior !== null && $editar->rango_inferior !== '' && $editar->rango_superior !== null && $editar->rango_superior !== '' && $editar->intervalo !== null && $editar->intervalo !== '') {
                $campo[$key]->tiene_opciones = 'SI';
                for ($i = $editar->rango_inferior; $i <= $editar->rango_superior; $i += $editar->intervalo) {
                    $campo[$key]->valor[] = $i;
                    $campo[$key]->opcion[] = $i;
                    $campo[$key]->color[] = null;
                }
            }
        }
        //
        $desde_contrapartes_genericos = 0;
        if (Request::input('desde_contrapartes_genericos') == '1') {
            $nombre_servicio = Request::input('nombre_servicio');
            $tiene_api = Request::input('tieneApi');
            //
            $desde_contrapartes_genericos = Request::input('desde_contrapartes_genericos');
            $datos_redireccion = (object) ['nombre_servicio' => $nombre_servicio, 'tieneApi' => $tiene_api];
        } else {
            // DATOS PARA REDIRECCION
            $tipo_paquete = Request::input('tipo_paquete_cliente');
            $nombre_producto = Request::input('prod_nombre_cliente');
            $limite_consumo = Request::input('limite_consumo_cliente');
            $fecha_desde = Request::input('fecha_desde');
            $fecha_hasta = Request::input('fecha_hasta');
            $bloquea = Request::input('estado_bloquea_cliente');
            $estado_producto = Request::input('estado_producto_cliente');
            $modalidad_de_pago = Request::input('modalidad_de_pago');
            $impe_doc = Request::input('impe_doc');
            $impe_acceso = Request::input('impe_acceso');
            $desde_panel_clientes = Request::input('desde_panel_clientes') ?? 0;
            $servicio = $contrap->servicio_contratado;
            // DATOS PARA EL FORMULARIO DE REDIRECCIONAMIENTO
            $datos_redireccion = (object) ['tipo_paquete' => $tipo_paquete, 'nombre_producto' => $nombre_producto, 'limite' => $limite_consumo, 'desde' => $fecha_desde, 'hasta' => $fecha_hasta, 'bloquea' => $bloquea, 'estado_producto' => $estado_producto, 'modalidad_de_pago' => $modalidad_de_pago, 'impe_acceso' => $impe_acceso, 'impe_doc' => $impe_doc, 'desde_panel_clientes' => $desde_panel_clientes];
        }
        //------ NUEVAS MODIFICACIONES
        return view('informes-blue/tarea-worldcheck/worldcheck')->with(compact(['cliente', 'cliente_datos', 'contrap', 'socios', 'relac', 'direct', 'propio', 'campo', 'datos_redireccion', 'desde_contrapartes_genericos', 'servicio']));
    }

    public function WordcheckEditTarea() {
        $id = Request::input('id_check');
        $sec = Request::input('sec');
        $seccion = Request::input('seccion');
        $contraparte = Request::input('contraparte');
        //
        $wordcheck = SQLConnection::backendStoreProcedure('LN_check_', array('select', $id, $contraparte, '', $sec), 'selectOne');
        //
        $wordcheck_file = '';
        $wordcheck_url = '';
        $hay_archivo = "false";
        //
        if (!is_null($wordcheck->ruta)) {
            if (file_exists($path = env('PATH_DOCUMENTOS') . '/' . $wordcheck->ruta)) {
                $wordcheck_file = $id . '.pdf';
                $wordcheck_url = env('RUTA_DOCUMENTOS') . '/' . $wordcheck->ruta;
            }
            //
            if (file_exists($path = env('PATH_DOCUMENTOS') . '/' . $wordcheck->ruta)) {
                $hay_archivo = "true";
            }
        }
        //
        return view('/informes-blue/tarea-worldcheck/edit')->with(compact(['wordcheck', 'seccion', 'wordcheck_file', 'wordcheck_url', 'hay_archivo']));
    }

    public function WordcheckUpdateTarea() {
        $id = Request::input('id_check');
        $detalle = Request::input('detalle') ?? NULL;
        $lncheck = Request::input('lncheck') ?? NULL;
        $cliente = Request::input('cliente');
        $contraparte = Request::input('contraparte');
        $modo = Request::input('modoupload') ?? 'R';
        $cdata = SQLConnection::backendStoreProcedure('LN_check_', array('select', $id, null, null, null), 'selectOne');
        //
        if (!empty($_FILES['archivo_wordcheck']) && $_FILES['archivo_wordcheck']['name'] !== '') {
            $userfile_name = $_FILES['archivo_wordcheck']['name'];
            $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.') + 1);
            $ftype = strtolower($userfile_extn);
            //
            if ($ftype == 'pdf') {
                if (basename($_FILES['archivo_wordcheck']['name']) != '') {
                    if ($modo == "R") {
                        $path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id . '.pdf';
                        $ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                        //
                        if (!is_dir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck')) {
                            mkdir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck', 0777, true);
                        }
                        move_uploaded_file($_FILES['archivo_wordcheck']['tmp_name'], $path);
                        chmod($path, 0777);
                    } else {
                        // Archivo preexistente - Modo append 
                        $path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id . '.pdf';
                        $path2 = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id . '_merge.pdf';
                        if (move_uploaded_file($_FILES['archivo_wordcheck']['tmp_name'], $path2)) {
                            chmod($path2, 0777);
                            $joinedpdf = PdfMerger::init();
                            $joinedpdf->addPDF($path, 'all');
                            $joinedpdf->addPDF($path2, 'all');
                            $joinedpdf->merge('file');
                            $joinedpdf->save($path);
                        }
                    }
                }
            }
        }
        //
        $url = $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id . '.pdf';
        //
        $temp = SQLConnection::backendStoreProcedure('LN_check_', array('UPDATE', $id, null, null, null, null, null, null, null, null, $lncheck, $detalle, $url), 'selectOne');
        //
        return 'Exito';
    }

    public function wordcheckAmlScoreUpdateTarea() {
        $id = Request::input('contraparte');
        $indice = Request::input('indicador') ?? null;
        // //-----
        if ($indice == null) {
            $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id), 'select');
        } else {
            $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'INDICADOR', $indice), 'select');
        }
        //---
        foreach ($editables as $key => $valor) {
            $indicador = $valor->indicador;
            $valor_indicador = $_POST[$valor->clave_indicador];
            //-----
            if ($indicador == 396 && $valor_indicador !== '') {
                $datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $id, NULL, NULL, NULL, NULL), 'selectOne');
                $solicitar_ddr_ant = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id, 'VRM_DDR', NULL, null, null, null, null, 1, null, 0, $datosgestion->desde), 'selectOne');
                //----
                if (empty($solicitar_ddr_ant->valor) || $solicitar_ddr_ant->valor !== $valor_indicador) {
                    if ($valor_indicador == 'SI') {
                        $solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('ALTA', $id, Session::get('usuario')->user_id), 'selectOne');
                    }
                    //
                    if ($valor_indicador == 'NO') {
                        $solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('BAJA', $id, Session::get('usuario')->user_id), 'selectOne');
                    }
                }
            }
            //
            $update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'UPDATE', $indicador, $valor_indicador), 'selectOne');
            $ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null, $id, null), 'selectOne');
            $cliente = Request::input('cliente');
            $trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($valor->nombre_indicador . ': ' . $valor_indicador, $cliente, 'CAMBIO_INDICADOR_' . $indicador, 'WWW', $id, Session::get('usuario')->user_id), 'selectOne');
        }
    }

    //////////////////////////
    //////// REP RISk  ///////
    //////////////////////////

    // FUNCIONES PARA LA TAREA DE REP. RISK 
    public function vistaRepRisk() {
        $id = Request::input('contraparte');
        $informe = Request::input('informe');
        $gestion = Request::input('gestion');
        $cliente = Request::input('cliente');

        $cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('GESTION', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $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');

        $infexteriordemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_contraparte', $id), 'selectOne');
        $prod = !empty($infexteriordemo) ? $infexteriordemo->producto : null;

        $infexterior_file = '';
        $infexterior_url = '';

        if (file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf')) {
            $infexterior_file = $id . '.pdf';
            $infexterior_url = env('RUTA_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf';
        }

        $score_res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_valor_numerico', NULl, NULL, NULL, $id, 'SCORE_RR'), 'selectOne');
        $score = '';
        if (isset($score_res)) {
            $score = $score_res->valor;
        }

        $hay_archivo = false;
        if (file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf')) {
            $hay_archivo = true;
        }

        $reprisk = [];
        // EXEC LN_RepRisk_clasificacion, 213004 
        $valores = SQLConnection::backendStoreProcedure('LN_RepRisk_clasificacion', array($id), 'select');
        foreach ($valores as $key => $value) {
            $key1 = $value->score;
            $reprisk[$key1] = new stdClass();
            $reprisk[$key1]->score = $value->score;
            $reprisk[$key1]->texto = $value->texto;
            $reprisk[$key1]->memo = $value->texto_largo;
            $reprisk[$key1]->color = $value->color_fondo;
        }

        return view('/informes-blue/actividades-tarea/rep_risk_task')->with(compact(['contrap', 'score', 'reprisk', 'prod', 'infexteriordemo', 'infexterior_file', 'infexterior_url', 'hay_archivo']));
    }

    ///////////////////////////
    ////SOLICITAR VRM-DDR /////
    ///////////////////////////


    public function dictamenVRMSolicitarDDR() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $informe = Request::input('informe');
        $gestion = Request::input('gestion');

        $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'INDICADOR', 384), 'select');

        $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');

        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', array('SELECCIONAR_INFORME', $id, $cliente, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $informe, $gestion), 'selectOne');
        $score_res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'SCORE_VRM'), 'selectOne');
        $score = '';

        if (isset($score_res)) {
            $score = $score_res->valor;
        }

        $campo[0] = new stdClass();
        if (empty($editables)) {
            for ($i = 0; $i <= 100; $i++) {
                $campo[0]->valor[$i] = $i;
                $campo[0]->opcion[$i] = $i;
            }
        } else {
            foreach ($editables as $key => $editar) {
                if (!empty($editar->opciones)) {
                    $valores = [];
                    $valores = explode('^', $editar->opciones);
                    foreach ($valores as $key2 => $valore) {
                        $valores2 = explode('|', $valore);
                        foreach ($valores2 as $keyk => $valore2) {
                            if ($key2 == 0) {
                                $campo[0]->valor[$keyk] = $valore2;
                            }
                            if ($key2 == 1) {
                                $campo[0]->opcion[$keyk] = $valore2;
                            }
                        }
                    }
                }
            }
        }

        $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'INDICADOR', 396), 'select');
        $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');

        $ddr1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'VRM_DDR'), 'selectOne');
        $ddr = '';


        if (isset($ddr1)) {
            $ddr = $ddr1->valor;
        }

        $campo[1] = new stdClass();
        if (empty($editables)) {
            for ($i = 0; $i <= 100; $i++) {
                $campo[1]->valor[$i] = $i;
                $campo[1]->opcion[$i] = $i;
            }
        } else {
            foreach ($editables as $key => $editar) {
                if (!empty($editar->opciones)) {
                    $valores = [];
                    $valores = explode('^', $editar->opciones);
                    foreach ($valores as $key2 => $valore) {
                        $valores2 = explode('|', $valore);
                        foreach ($valores2 as $keyk => $valore2) {
                            if ($key2 == 0) {
                                $campo[1]->valor[$keyk] = $valore2;
                            }
                            if ($key2 == 1) {
                                $campo[1]->opcion[$keyk] = $valore2;
                            }
                        }
                    }
                }
            }
        }

        return view('/informes-blue/actividades-tarea/dictamen-vrm')->with(compact(['contrap', 'score', 'campo', 'ddr', 'report_data']));
    }

    public static function scoreVRMUpdateNew() {
        $id = Request::input('contraparte');
        $score = ('' != Request::input('score')) ? Request::input('score') : NULL;
        $ddr = ('' != Request::input('ddr')) ? Request::input('ddr') : NULL;
        $prod = Request::input('producto');
        $cliente = Request::input('cliente');

        $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');

        //UPDATE DICTAMEN VRM
        SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'UPDATE', '384', $score), 'selectOne');
        //UPDATE SOLICITAR DDR
        SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'UPDATE', '396', $ddr), 'selectOne');

        $ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null, $id, null), 'selectOne');

        $trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Solicitar DDR: SI', $cliente, 'CAMBIO_INDICADOR_396', 'BACK', $id, Session::get('usuario')->user_id), 'selectOne');

        return "true";
    }

    // FUNCION QUE DEVUELVE LA TABLA DE DEPENDENCIA ECONOMICA
    public function dependenciaEconomica() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        //
        $depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
        $productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
        // dd($depecon);
        //
        $id_producto = isset($productos->producto) ? $productos->producto : null;
        $nombre_producto = isset($productos->producto) ? $productos->nombre_producto : null;

        $monedas = DB::select('EXEC obtener_Monedas', array());

        return view('/informes-blue/actividades-tarea/dependencia-economica')->with(compact('cliente', 'depecon', 'id_producto', 'nombre_producto', 'monedas', 'id'));
        //
        // return json_encode(array('id_producto' => $id_producto, 'tabla' => view('/blue/servicios_cliente/cifras/de_tabla')->with(compact('cliente','depecon','id_producto','nombre_producto'))->render()));
    }

    public function insertDependenciaEconomica() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $producto = Request::input('producto_de');
        //
        $desde = Request::input('periodo_desde_de');
        $desde = (!is_null($desde) && !empty($desde)) ? $desde . '-01' : NULL;
        //
        $hasta = Request::input('periodo_hasta_de');
        $hasta = (!is_null($hasta)) ? $hasta . '-01' : NULL;
        //
        $monto = Request::input('monto');
        $moneda = Request::input('moneda');
        $visible = 1;
        //
        $insert = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'insert', $id, $cliente, $producto, $desde, $hasta, $visible, $monto, $moneda), 'selectOne');
        // $depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
        // $productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
        // //
        // $id_producto     = isset($productos->producto) ? $productos->producto : null;
        // $nombre_producto = isset($productos->producto) ? $productos->nombre_producto : null; 
    }

    public function cambiarEstadoDependenciaEconomica() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $producto = Request::input('producto');
        $iden = Request::input('id');
        //
        // dd($id,$cliente,$producto,$iden);
        $del = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'delete', $id, null, null, null, null, null, null, null, $iden), 'selectOne');
    }

    public function limiteCreditoNuevo() {
        $id = Request::input('contraparte');
        $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');
        $lc = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $id), 'selectOne');
        /* estos 2 indicadores van al panel de control */
        $ventas_lc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS'), 'selectOne');
        $fecha_ventas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS_FECHA'), 'selectOne');
        /* ventas promedio post balance */
        $ventas_ppb_lc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS_PPB'), 'selectOne');
        /* Consulta de los indicadores del producto que se muestran en la solapa del Recomendador de Crédito */
        $ind1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_RECOMENDADO'), 'selectOne');
        $ind2 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_RECOMENDADO_FECHA'), 'selectOne');
        $ind5 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_SCORE_BALANCE'), 'selectOne');
        $ind6 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_TEND_BALANCE'), 'selectOne');
        $ind7 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_ESCENARIOS_FUTUROS'), 'selectOne');
        $ind8 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_ESCENARIOS_TENDENCIA'), 'selectOne');
        $ind9 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_SITUACION_SOCIOS'), 'selectOne');
        $ind0 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_SITUACION_TENDENCIA'), 'selectOne');
        //
        $dbalances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $id), 'select');
        //
        $balances = [];
        $datos_balances = [];
        //
        foreach ($dbalances as $k => $balance) {
            $j = (sizeof($dbalances) - $k - 1);
            //
            $datos_balances[$j] = SQLConnection::backendStoreProcedure('LN_balances', array('datos_contables', NULL, $balance->id_balance), 'selectOne');
            //
            $balances[$j] = $balance->cierre_ejercicio;
        }
        //
        ksort($balances);
        ksort($datos_balances);
        //
        $file_lc = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('doc_lc', $id), 'selectOne');
        $file_exists = (!empty($file_lc)) ? (file_exists(env('PATH_DOCUMENTOS') . $file_lc->ruta_archivo) ? true : false) : false;
        $file_url = (!empty($file_lc)) ? (file_exists(env('PATH_DOCUMENTOS') . $file_lc->ruta_archivo) ? env('PATH_DOCUMENTOS') . $file_lc->ruta_archivo : NULL) : NULL;
        //
        return view('/informes-blue/credito-recomendado/limite_credito')->with(compact(['contrap', 'lc', 'ventas_lc', 'fecha_ventas', 'ventas_ppb_lc', 'ind1', 'ind2', 'ind5', 'ind6', 'ind7', 'ind8', 'ind9', 'ind0', 'balances', 'datos_balances', 'file_lc', 'file_exists', 'file_url']));
    }

    public function limiteCreditoUpdateNuevo() {
        $id = Request::input('contraparte');
        $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');
        $lc = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $id), 'selectOne');
        $ln_gestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', null, null, $id, null, null, null, null), 'selectOne');
        $cliente = $contrap->cliente;
        //
        $maximo_recomendado = ('' != Request::input('maximo_recomendado')) ? Request::input('maximo_recomendado') : NULL;
        //
        $recomendacion = Request::input('recomendacion');
        //		
        $monto_ventas_lc = ('' != Request::input('monto_ventas_lc')) ? Request::input('monto_ventas_lc') : NULL;
        $fecha_ventas = ('' != Request::input('fecha_ventas')) ? Request::input('fecha_ventas') : NULL;
        //
        $monto_ventas_ppb_lc = ('' != Request::input('monto_ventas_ppb_lc')) ? Request::input('monto_ventas_ppb_lc') : NULL;
        //
        $score_balance = ('' != Request::input('score_balance')) ? Request::input('score_balance') : NULL;
        $tendencia_balance = ('' != Request::input('tendencia_balance')) ? Request::input('tendencia_balance') : NULL;
        $escenarios_futuros = ('' != Request::input('escenarios_futuros')) ? Request::input('escenarios_futuros') : NULL;
        $tendencia_escenarios = ('' != Request::input('tendencia_escenarios')) ? Request::input('tendencia_escenarios') : NULL;
        $situacion_socios = ('' != Request::input('situacion_socios')) ? Request::input('situacion_socios') : NULL;
        $tendencia_socios = ('' != Request::input('tendencia_socios')) ? Request::input('tendencia_socios') : NULL;
        //
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_recomendado', NULL, NULL, NULL, $id, NULL, NULL, $maximo_recomendado), 'selectOne');
        //
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ventas_limite_credito', NULL, NULL, NULL, $id, NULL, NULL, $monto_ventas_lc), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ventas_limite_credito_fecha', NULL, NULL, NULL, $id, NULL, NULL, NULL, $fecha_ventas), 'selectOne');
        //
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ventas_ppb_limite_credito', NULL, NULL, NULL, $id, NULL, NULL, $monto_ventas_ppb_lc), 'selectOne');
        //
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_balance_lc', NULL, NULL, NULL, $id, NULL, NULL, $score_balance), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('tendencia_balance_lc', NULL, NULL, NULL, $id, NULL, NULL, NULL, $tendencia_balance), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('escenarios_futuros', NULL, NULL, NULL, $id, NULL, NULL, $escenarios_futuros), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('tendencia_escenarios', NULL, NULL, NULL, $id, NULL, NULL, NULL, $tendencia_escenarios), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('situacion_socios', NULL, NULL, NULL, $id, NULL, NULL, NULL, $situacion_socios), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('tendencia_situacion', NULL, NULL, NULL, $id, NULL, NULL, NULL, $tendencia_socios), 'selectOne');
        //
        $post_activo_caja_bancos = ('' != Request::input('post_activo_caja_bancos')) ? Request::input('post_activo_caja_bancos') : NULL;
        $post_activo_inversiones = ('' != Request::input('post_activo_inversiones')) ? Request::input('post_activo_inversiones') : NULL;
        $post_activo_corriente = ('' != Request::input('post_activo_corriente')) ? Request::input('post_activo_corriente') : NULL;
        $post_activo_total = ('' != Request::input('post_activo_total')) ? Request::input('post_activo_total') : NULL;
        //
        $post_pasivo_corriente = ('' != Request::input('post_pasivo_corriente')) ? Request::input('post_pasivo_corriente') : NULL;
        $post_prestamos_corrientes = ('' != Request::input('post_prestamos_corrientes')) ? Request::input('post_prestamos_corrientes') : NULL;
        $post_prestamos_no_corrientes = ('' != Request::input('post_prestamos_no_corrientes')) ? Request::input('post_prestamos_no_corrientes') : NULL;
        $post_pasivo_total = ('' != Request::input('post_pasivo_total')) ? Request::input('post_pasivo_total') : NULL;
        //
        $post_patrimonio = ('' != Request::input('post_patrimonio')) ? Request::input('post_patrimonio') : NULL;
        //
        $post_patrimonio_integrado = ('' != Request::input('post_patrimonio_integrado')) ? Request::input('post_patrimonio_integrado') : NULL;
        //
        $post_resultados_acumulados = ('' != Request::input('post_resultados_acumulados')) ? Request::input('post_resultados_acumulados') : NULL;
        //
        $post_capital_trabajo = ('' != Request::input('post_capital_trabajo')) ? Request::input('post_capital_trabajo') : NULL;
        $post_rel_capital_trabajo_pasivo = ('' != Request::input('post_rel_capital_trabajo_pasivo')) ? Request::input('post_rel_capital_trabajo_pasivo') : NULL;
        $post_rel_capital_trabajo_ventas = ('' != Request::input('post_rel_capital_trabajo_ventas')) ? Request::input('post_rel_capital_trabajo_ventas') : NULL;
        //
        $post_rel_compras_ventas = ('' != Request::input('post_rel_compras_ventas')) ? Request::input('post_rel_compras_ventas') : NULL;
        //
        $post_ventas = ('' != Request::input('post_ventas')) ? Request::input('post_ventas') : NULL;
        $post_compras = ('' != Request::input('post_compras')) ? Request::input('post_compras') : NULL;
        $post_ganancia = ('' != Request::input('post_ganancia')) ? Request::input('post_ganancia') : NULL;
        //
        $post_rentabilidad_final = ('' != Request::input('post_rentabilidad_final')) ? Request::input('post_rentabilidad_final') : NULL;
        $post_resultado_operativo = ('' != Request::input('post_resultado_operativo')) ? Request::input('post_resultado_operativo') : NULL;
        $post_rentabilidad_operativa = ('' != Request::input('post_rentabilidad_operativa')) ? Request::input('post_rentabilidad_operativa') : NULL;
        //
        $post_ebitda = ('' != Request::input('post_ebitda')) ? Request::input('post_ebitda') : NULL;
        $post_otros_ingresos = ('' != Request::input('post_otros_ingresos')) ? Request::input('post_otros_ingresos') : NULL;
        $post_otros_egresos = ('' != Request::input('post_otros_egresos')) ? Request::input('post_otros_egresos') : NULL;
        //
        $post_rel_ebitda_ventas = ('' != Request::input('post_rel_ebitda_ventas')) ? Request::input('post_rel_ebitda_ventas') : NULL;
        //
        $post_fondos = ('' != Request::input('post_fondos')) ? Request::input('post_fondos') : NULL;
        //
        $temp = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_recomendacion', $id, NULL, $recomendacion, Session::get('usuario')->user_id), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_post_balance', $id, NULL, NULL, Session::get('usuario')->user_id, $post_activo_caja_bancos, $post_activo_inversiones, $post_activo_corriente, $post_activo_total, $post_pasivo_corriente, $post_prestamos_corrientes, $post_prestamos_no_corrientes, $post_pasivo_total, $post_patrimonio, $post_patrimonio_integrado, $post_resultados_acumulados, $post_capital_trabajo, $post_rel_capital_trabajo_pasivo, $post_rel_capital_trabajo_ventas, $post_rel_compras_ventas, $post_ventas, $post_compras, $post_ganancia, $post_rentabilidad_final, $post_resultado_operativo, $post_rentabilidad_operativa, $post_ebitda, $post_otros_ingresos, $post_otros_egresos, $post_rel_ebitda_ventas, $post_fondos), 'selectOne');
        //
        $ruta_archivo = '';
        //
        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' || $ftype == 'pdf') {
                //
                if (basename($_FILES['archivo']['name']) != '') {
                    //
                    if ($_FILES['archivo']['error'] == 0) {
                        //
                        if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente)) {
                            mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente, 0777, true);
                        }
                        //
                        if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente . '/' . $id)) {
                            mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente . '/' . $id, 0777, true);
                        }
                        //
                        $ruta_archivo = '/limite-credito/' . $contrap->cliente . '/' . $id . '/' . $ln_gestion->gestion . '-' . $userfile_name;
                        //
                        $path = env('PATH_DOCUMENTOS') . $ruta_archivo;
                        $ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                        move_uploaded_file($_FILES['archivo']['tmp_name'], $path);
                        //
                        $temp = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('delete_file_lc', $id), 'select');
                        $nuevo = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('insert', $id, 'Recomendador de Crédito', $ruta_archivo, Session::get('usuario')->user_id, NULL, 1), 'select');
                    }
                }
            }
        }
        //
        $accion = (NULL !== Request::input('visible')) ? 'activar' : 'desactivar';
        $temp = SQLConnection::backendStoreProcedure('LN_limite_credito_', array($accion, $id), 'selectOne');
        //
        $temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $id), 'selectOne');
        //
        return 'True';
    }

    public static function ledLimiteCreditoPreviewNuevo() {
        $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');
        $limite_credito = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $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';
            }
        }

        /* Información de cendeu ultimo trimestre */
        $cendeu_trimestral = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('cendeu_trimestral', $qcontrap->contraparte), 'select');
        $totalcendeu = 0;
        foreach ($cendeu_trimestral as $k => $banco) {
            $totalcendeu = $totalcendeu + $banco->total;
        }



        /* Información de últimos balances */

        $dbalances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $qcontrap->contraparte), 'select');

        $balances = [];
        $datos_balances = [];

        foreach ($dbalances as $k => $balance) {
            $j = (sizeof($dbalances) - $k - 1);

            $datos_balances[$j] = SQLConnection::backendStoreProcedure('LN_balances', array('datos_contables', NULL, $balance->id_balance), 'selectOne');

            $balances[$j] = $balance->cierre_ejercicio;
        }

        ksort($balances);
        ksort($datos_balances);

        /* Consulta de los indicadores del producto que se muestran en la solapa del Recomendador de Crédito */
        $ind1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_RECOMENDADO'), 'selectOne');
        $ind2 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_RECOMENDADO_FECHA'), 'selectOne');
        $ind3 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_APROBADO'), 'selectOne');
        $ind4 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_APROBADO_FECHA'), 'selectOne');
        $ind5 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_SCORE_BALANCE'), 'selectOne');
        $ind6 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_TEND_BALANCE'), 'selectOne');
        $ind7 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_ESCENARIOS_FUTUROS'), 'selectOne');
        $ind8 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_ESCENARIOS_TENDENCIA'), 'selectOne');
        $ind9 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_SITUACION_SOCIOS'), 'selectOne');
        $ind0 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_SITUACION_TENDENCIA'), 'selectOne');
        $inda = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_APROBADO_USD'), 'selectOne');
        $indb = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_APROBADO_USD_FECHA'), 'selectOne');
        $indc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS'), 'selectOne');
        $indd = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS_FECHA'), 'selectOne');
        $inde = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_DIAS_VENTAS'), 'selectOne');


        $archivos = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('search', $id), 'select');

        $notas = SQLConnection::backendStoreProcedure('LN_limite_credito_notas_', array('search', $id), 'select');

        return view('/informes-blue/credito-recomendado/limite_credito_preview')->with(compact(['id', 'qcontrap', 'file_exists', 'logo_name', 'limite_credito', 'cendeu_trimestral', 'totalcendeu', 'balances', 'datos_balances',
            'ind1', 'ind2', 'ind3', 'ind4', 'ind5', 'ind6', 'ind7', 'ind8', 'ind9', 'ind0', 'inda', 'indb', 'indc', 'indd', 'inde', 'archivos', 'notas']));
    }

    public static function limitecreditosugerido() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        // $id = 199240;
        // $cliente = 528397;
        $tipo_paquete = Request::input('tipo_paquete_cliente');
        $nombre_producto = Request::input('prod_nombre_cliente');
        $limite_consumo = Request::input('limite_consumo_cliente');
        $fecha_desde = Request::input('fecha_desde');
        $fecha_hasta = Request::input('fecha_hasta');
        $bloquea = Request::input('estado_bloquea_cliente');
        $estado_producto = Request::input('estado_producto_cliente');
        $modalidad_de_pago = Request::input('modalidad_de_pago');
        $impe_doc = Request::input('impe_doc');
        $impe_acceso = Request::input('impe_acceso');
        $desde_panel_clientes = Request::input('desde_panel_clientes') ?? 0;
        // DATOS PARA EL FORMULARIO DE REDIRECCIONAMIENTO
        $datos_redireccion = (object) ['tipo_paquete' => $tipo_paquete, 'nombre_producto' => $nombre_producto, 'limite' => $limite_consumo, 'desde' => $fecha_desde, 'hasta' => $fecha_hasta, 'bloquea' => $bloquea, 'estado_producto' => $estado_producto, 'modalidad_de_pago' => $modalidad_de_pago, 'impe_acceso' => $impe_acceso, 'impe_doc' => $impe_doc, 'desde_panel_clientes' => $desde_panel_clientes];
        //
        //
        //$prod = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('LCS', 'select', $id, $cliente), 'selectOne');
        $prod = !empty(Request::input('producto_fidelitas')) 
            ? Request::input('producto_fidelitas') 
            : (Request::input('id_producto') ?: 47);
        //
        $servicios = [];
        $servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios', $cliente), 'select');
        $key = sizeof($servicios);
        $servicios[$key] = new stdClass();
        $servicios[$key]->producto = "00";
        $servicios[$key]->nombre_producto = "TODOS";
        //-- VARIABLE QUE VA A TENER EL PRODUCTO SELECCIONADO
        $servicio_elegido = (object) [];
        //
        $contrap = [];
        foreach ($servicios as $key => $ser) {
            if ($ser->producto == $prod) {
                $servicio_elegido->producto = $ser->producto;
                $servicio_elegido->nombre_producto = $ser->nombre_producto;
            }
            //
            $contrap[$ser->producto] = [];
        }
        // SE DEVUELVE A LA VISTA ANTERIOR SI EL PRODUCTO NO ESTA VISIBLE O SI EL SERVICIO NO ESTA DENTRO LAS OPCIONES DE TENER FAMILIAS
        $clave = sizeof($servicios);
        if (empty($servicio_elegido)) {
            return back()
                ->withInput()
                ->withErrors(['msg' => 'El producto no tiene ningun usuario seleccionado']);
        }
        //
        $cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select', $cliente, NULL, NULL, NULL, $prod), 'selectOne');
        $nombre_cliente = $cli->nombre_cliente;
        $cli_codigo = $cli->cli_codigo;
        $cli_cuit = $cli->cuit;
        $contrap1 = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'select');
        // Si hay contrapartes de un servicio que tiene inactivo no se van a ver, solo toma la de los servicios activos.
        $cantidad_contrapartes = 0;
        // CIFRAS
        // TIENE DEPENEDENCIA ECONOMICA
        $tiene_de = 0;
        // TIENE LIMITE CONSU
        $tiene_lcs = 0;
        $tiene_mlcs = 0;
        // TIENE PLAN DE PAGO
        $tiene_pp = 0;
        //
        foreach ($contrap1 as $key => $cont) {
            if ($servicio_elegido->producto == $cont->servicio_contratado) {
                $contrap[$cont->servicio_contratado][$key] = $contrap1[$key];
                $contrap["00"][$key] = $contrap1[$key];
                $cantidad_contrapartes += 1;
                $tiene_de = ($cont->tiene_de == 1) ? 1 : $tiene_de;
                $tiene_lcs = ($cont->tiene_lcs == 1) ? 1 : $tiene_lcs;
                $tiene_mlcs = ($cont->tiene_mlcs == 1) ? 1 : $tiene_mlcs;
                $tiene_pp = ($cont->tiene_pp == 1) ? 1 : $tiene_pp;
            }
        }
        //
        $tiene_exterior = SQLConnection::backendStoreProcedure('LN_demo_', array('TIENE_SCORE_IC', NULL, $cli->cliente), 'select');
        // chequeo de producto Dossier / Business Report 
        $dossierdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_dossier_cliente', NULL, $cli->cliente), 'selectOne');
        $businessreport = SQLConnection::backendStoreProcedure('LN_demo_', array('check_business_report_cliente', NULL, $cli->cliente), 'selectOne');
        $businessreport = (is_null($businessreport)) ? '' : $businessreport;
        //
        $inquirovitae = SQLConnection::backendStoreProcedure('LN_demo_', array('check_inquirovitae_cliente', NULL, $cli->cliente), 'selectOne');
        // chequeo de producto Fidecheck demo 
        $fidecheckdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_fidecheck_cliente', NULL, $cli->cliente), 'selectOne');
        // chequeo de producto wordcheck demo 
        $wordcheck = SQLConnection::backendStoreProcedure('LN_demo_', array('check_wordcheck_cliente', NULL, $cli->cliente), 'selectOne');
        $familias_wordcheck = SQLConnection::backendStoreProcedure('LN_demo_', array('check_wordcheck_familias', NULL, $cli->cliente), 'select');
        // chequeo de producto Score VRM demo 
        $scorevrm = SQLConnection::backendStoreProcedure('LN_demo_', array('check_scorevrm_cliente', NULL, $cli->cliente), 'selectOne');
        $familias_scorevrm = SQLConnection::backendStoreProcedure('LN_demo_', array('check_scorevrm_familias', NULL, $cli->cliente), 'select');
        // chequeo de producto Informe del Exterior demo 
        $infexterior = SQLConnection::backendStoreProcedure('LN_demo_', array('check_infexterior_cliente', NULL, $cli->cliente), 'selectOne');
        // chequeo de producto Rep.Risk 
        $reprisk = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_cliente', NULL, $cli->cliente), 'selectOne');
        $familias_reprisk = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_familias', NULL, $cli->cliente), 'select');
        // chequeo de producto Prensa 
        $prensa = SQLConnection::backendStoreProcedure('LN_demo_', array('check_prensa_cliente', NULL, $cli->cliente), 'selectOne');
        // check recomendador credito 
        $recomend = SQLConnection::backendStoreProcedure('recomendadorCredito_', array($cli->cliente), 'selectOne');
        $recomend = (is_null($recomend)) ? '' : $recomend;
        $wordcheck = (is_null($wordcheck)) ? '' : $wordcheck;
        $scorevrm = (is_null($scorevrm)) ? '' : $scorevrm;
        //
        $monedas = DB::select('EXEC obtener_Monedas', array());
        //
        $es_inquiro = ($prod == env('IV_PRODUCTO')) ? '1' : '0';
        //
        $titulo_navbar = 'Contrapartes';

        $lcs_mlcs = 'LCS';
        //
        $lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('LCS', 'select', $id, $cliente), 'select');
        return view('/informes-blue/limitecreditoSimple/limite_credito_simple')->with(compact('cli', 'contrap', 'dossierdemo', 'businessreport', 'inquirovitae', 'fidecheckdemo', 'infexterior', 'recomend', 'tiene_exterior', 'prensa', 'prod', 'servicios', 'cantidad_contrapartes', 'tiene_de', 'tiene_lcs', 'tiene_mlcs', 'tiene_pp', 'monedas', 'cliente', 'reprisk', 'wordcheck', 'familias_wordcheck', 'scorevrm', 'familias_scorevrm', 'familias_reprisk', 'servicio_elegido', 'datos_redireccion', 'es_inquiro', 'nombre_cliente', 'cli_codigo', 'cli_cuit', 'titulo_navbar', 'cliente', 'lcs', 'lcs_mlcs', 'id'));
    }

    public function contrapartesDeleteLCSNuevo() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $producto = Request::input('producto');
        $iden = Request::input('id');
        $lcs_mlcs = Request::input('lcs_mlcs');
        //
        $del = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array($lcs_mlcs, 'delete', $id, null, null, null, null, null, null, null, $iden), 'selectOne');
        $lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array($lcs_mlcs, 'select', $id, $cliente), 'select');
        //
        return json_encode(array("error" => 0));
    }

    // FUNCION QUE INSERTA UN REGISTRO DE LIMITE CREDITO SUGERIDO
    public function contrapartesInsertLCSNuevo() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $producto = Request::input('producto');
        $desde = Request::input('periodo_desde_lcs');
        $hasta = null;
        $monto = Request::input('monto');
        $moneda = Request::input('moneda');
        $texto = Request::input('texto');
        $lcs_mlcs = Request::input('lcs_mlcs');
        if ($texto == '') {
            $texto = null;
        }
        $visible = 1;
        //
        $insert = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array($lcs_mlcs, 'insert', $id, $cliente, $producto, $desde, $hasta, $visible, $monto, $moneda, null, $texto), 'selectOne');
        $lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array($lcs_mlcs, 'select', $id, $cliente), 'select');
        //
        return json_encode(array("error" => 0));
    }

    public static function limitemultiplecreditoSugerido() {
        $id = Request::input('contraparte');
        $cliente = Request::input('cliente');
        $tipo_paquete = Request::input('tipo_paquete_cliente');
        $nombre_producto = Request::input('prod_nombre_cliente');
        $limite_consumo = Request::input('limite_consumo_cliente');
        $fecha_desde = Request::input('fecha_desde');
        $fecha_hasta = Request::input('fecha_hasta');
        $bloquea = Request::input('estado_bloquea_cliente');
        $estado_producto = Request::input('estado_producto_cliente');
        $modalidad_de_pago = Request::input('modalidad_de_pago');
        $impe_doc = Request::input('impe_doc');
        $impe_acceso = Request::input('impe_acceso');
        $desde_panel_clientes = Request::input('desde_panel_clientes') ?? 0;
        // DATOS PARA EL FORMULARIO DE REDIRECCIONAMIENTO
        $datos_redireccion = (object) ['tipo_paquete' => $tipo_paquete, 'nombre_producto' => $nombre_producto, 'limite' => $limite_consumo, 'desde' => $fecha_desde, 'hasta' => $fecha_hasta, 'bloquea' => $bloquea, 'estado_producto' => $estado_producto, 'modalidad_de_pago' => $modalidad_de_pago, 'impe_acceso' => $impe_acceso, 'impe_doc' => $impe_doc, 'desde_panel_clientes' => $desde_panel_clientes];
        //
        //
        $prod = !empty(Request::input('producto_fidelitas'))
            ? Request::input('producto_fidelitas')
            : (Request::input('id_producto') ?: 47);
        //
        $servicios = [];
        $servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios', $cliente), 'select');
        $key = sizeof($servicios);
        $servicios[$key] = new stdClass();
        $servicios[$key]->producto = "00";
        $servicios[$key]->nombre_producto = "TODOS";
        //-- VARIABLE QUE VA A TENER EL PRODUCTO SELECCIONADO
        $servicio_elegido = (object) [];
        //
        $contrap = [];
        foreach ($servicios as $key => $ser) {
            if ($ser->producto == $prod) {
                $servicio_elegido->producto = $ser->producto;
                $servicio_elegido->nombre_producto = $ser->nombre_producto;
            }
            //
            $contrap[$ser->producto] = [];
        }
        // SE DEVUELVE A LA VISTA ANTERIOR SI EL PRODUCTO NO ESTA VISIBLE O SI EL SERVICIO NO ESTA DENTRO LAS OPCIONES DE TENER FAMILIAS
        $clave = sizeof($servicios);
        if (empty($servicio_elegido)) {
            return back()
                ->withInput()
                ->withErrors(['msg' => 'El producto no tiene ningun usuario seleccionado']);
        }
        //
        $cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select', $cliente, NULL, NULL, NULL, $prod), 'selectOne');
        $nombre_cliente = $cli->nombre_cliente;
        $cli_codigo = $cli->cli_codigo;
        $cli_cuit = $cli->cuit;
        $contrap1 = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'select');
        // Si hay contrapartes de un servicio que tiene inactivo no se van a ver, solo toma la de los servicios activos.
        $cantidad_contrapartes = 0;
        // CIFRAS
        // TIENE DEPENEDENCIA ECONOMICA
        $tiene_de = 0;
        // TIENE LIMITE CONSU
        $tiene_lcs = 0;
        $tiene_mlcs = 0;
        // TIENE PLAN DE PAGO
        $tiene_pp = 0;
        //
        foreach ($contrap1 as $key => $cont) {
            if ($servicio_elegido->producto == $cont->servicio_contratado) {
                $contrap[$cont->servicio_contratado][$key] = $contrap1[$key];
                $contrap["00"][$key] = $contrap1[$key];
                $cantidad_contrapartes += 1;
                $tiene_de = ($cont->tiene_de == 1) ? 1 : $tiene_de;
                $tiene_lcs = ($cont->tiene_lcs == 1) ? 1 : $tiene_lcs;
                $tiene_mlcs = ($cont->tiene_mlcs == 1) ? 1 : $tiene_mlcs;
                $tiene_pp = ($cont->tiene_pp == 1) ? 1 : $tiene_pp;
            }
        }
        //
        $tiene_exterior = SQLConnection::backendStoreProcedure('LN_demo_', array('TIENE_SCORE_IC', NULL, $cli->cliente), 'select');
        // chequeo de producto Dossier / Business Report 
        $dossierdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_dossier_cliente', NULL, $cli->cliente), 'selectOne');
        $businessreport = SQLConnection::backendStoreProcedure('LN_demo_', array('check_business_report_cliente', NULL, $cli->cliente), 'selectOne');
        $businessreport = (is_null($businessreport)) ? '' : $businessreport;
        //
        $inquirovitae = SQLConnection::backendStoreProcedure('LN_demo_', array('check_inquirovitae_cliente', NULL, $cli->cliente), 'selectOne');
        // chequeo de producto Fidecheck demo 
        $fidecheckdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_fidecheck_cliente', NULL, $cli->cliente), 'selectOne');
        // chequeo de producto wordcheck demo 
        $wordcheck = SQLConnection::backendStoreProcedure('LN_demo_', array('check_wordcheck_cliente', NULL, $cli->cliente), 'selectOne');
        $familias_wordcheck = SQLConnection::backendStoreProcedure('LN_demo_', array('check_wordcheck_familias', NULL, $cli->cliente), 'select');
        // chequeo de producto Score VRM demo 
        $scorevrm = SQLConnection::backendStoreProcedure('LN_demo_', array('check_scorevrm_cliente', NULL, $cli->cliente), 'selectOne');
        $familias_scorevrm = SQLConnection::backendStoreProcedure('LN_demo_', array('check_scorevrm_familias', NULL, $cli->cliente), 'select');
        // chequeo de producto Informe del Exterior demo 
        $infexterior = SQLConnection::backendStoreProcedure('LN_demo_', array('check_infexterior_cliente', NULL, $cli->cliente), 'selectOne');
        // chequeo de producto Rep.Risk 
        $reprisk = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_cliente', NULL, $cli->cliente), 'selectOne');
        $familias_reprisk = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_familias', NULL, $cli->cliente), 'select');
        // chequeo de producto Prensa 
        $prensa = SQLConnection::backendStoreProcedure('LN_demo_', array('check_prensa_cliente', NULL, $cli->cliente), 'selectOne');
        // check recomendador credito 
        $recomend = SQLConnection::backendStoreProcedure('recomendadorCredito_', array($cli->cliente), 'selectOne');
        $recomend = (is_null($recomend)) ? '' : $recomend;
        $wordcheck = (is_null($wordcheck)) ? '' : $wordcheck;
        $scorevrm = (is_null($scorevrm)) ? '' : $scorevrm;
        //
        $monedas = DB::select('EXEC obtener_Monedas', array());
        //
        $es_inquiro = ($prod == env('IV_PRODUCTO')) ? '1' : '0';
        //
        $titulo_navbar = 'Contrapartes';

        $lcs_mlcs = 'LCS';
        //
        $lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('MLCS', 'select', $id, $cliente), 'select');
        return view('/informes-blue/limitecreditomultiple/limite_credito_multiple')->with(compact('cli', 'contrap', 'dossierdemo', 'businessreport', 'inquirovitae', 'fidecheckdemo', 'infexterior', 'recomend', 'tiene_exterior', 'prensa', 'prod', 'servicios', 'cantidad_contrapartes', 'tiene_de', 'tiene_lcs', 'tiene_mlcs', 'tiene_pp', 'monedas', 'cliente', 'reprisk', 'wordcheck', 'familias_wordcheck', 'scorevrm', 'familias_scorevrm', 'familias_reprisk', 'servicio_elegido', 'datos_redireccion', 'es_inquiro', 'nombre_cliente', 'cli_codigo', 'cli_cuit', 'titulo_navbar', 'cliente', 'lcs', 'lcs_mlcs', 'id'));
    }

    ////////////////////////////
    /////// GENERACIÓN IC //////
    ////////////////////////////


    public function generarICInforme() {
        $informe = Request::input('informe');
        $tarea = Request::input('tarea');
        $contraparte = Request::input('contraparte');
        $gestion = Request::input('gestion');
        $cliente = Request::input('cliente');
        $identificacion = Request::input('identificacion');
        //
        return view('/informes-blue/actividades-tarea/generar-informe-ic', compact('cliente', 'contraparte', 'gestion', 'informe', 'tarea', 'identificacion'));
    }

    // ============================================================== //
    // ============= CARGA EXTERNA DE INFORME COMERCIAL ============= //
    // ============================================================== //

    public function envioCargaInformeComercial() {
        $tarea = Request::input('tarea');
        $cliente = Request::input('cliente');
        $gestion = Request::input('gestion');
        $contraparte = Request::input('contraparte');
        $datos_tarea = SQLConnection::backendStoreProcedure("LN_datos_tarea", array($tarea))[0];
        // 
        $ruta = Request::input('ruta');
        if ($ruta == '/carga-externa-informe-comercial') {
            return view('/informes-blue/actividades-tarea/carga-externa-informe-comercial', compact('datos_tarea', 'contraparte'));

        }
        return view('/informes-blue/actividades-tarea/envio-informe-comercial', compact('datos_tarea', 'contraparte'));
    }

    public static function enviarMailContraparte(){

        Request::validate([
            'archivo_ic_send' => 'nullable|array',
            'archivo_ic_send.*' => 'file|mimes:pdf,doc,xlsx,txt|max:900000'
        ],[
            'archivo_ic_send.*.mimes' => 'Por favor devolver tipo de dato en formato pdf,doc,xlsx,txt',
            'archivo_ic_send.*.max' => 'El tamaño del archivo cargado execede al maximo (900 MB).'
        ]);

		if ( isset($_POST['contraparte']) && isset($_POST['email']) ){
            // Capturando los datos
			$cliente = Request::input('cliente');
			$id = Request::input('contraparte');
			$gestion = Request::input('gestion');
            $informe = Request::input('informe');
            $tarea = Request::input('tarea');
            $orden_tarea = Request::input('orden_tarea');
			$enviar = Request::input('enviar'); // boolean
			$email  = Request::input('email'); 
            $nombre_tipo_tarea = Request::input('nombre_tarea');
            $nombre_informe = Request::input('nombre_informe');
            $ultima_tarea = SQLConnection::backendStoreProcedure('LN_Blue_Tareas_Informe',array('tareas_informe',NULL,$informe));            
            $ultima_tarea = end($ultima_tarea)->ordTarea;
            // Array capturado de todos los archivos
            $archivos = Request::file('archivo_ic_send');

            $paths_guardar = []; // ruta a guardar
            $nombres_archivos = []; // nombres de archivos

            if ($archivos && is_array($archivos)) {
                foreach ($archivos as $archivo) {
                    //$nombre_archivo = $archivo->getClientOriginalName();

                    $extension = $archivo->getClientOriginalExtension();
                    if (empty($extension)) {
                        $extension = $archivo->extension();
                    }
                    $nombre_archivo = $nombre_informe . '_' . uniqid() . '.' . $extension;

                    //$nombre_archivo = $archivo->getClientOriginalName();
                    $path_guardar = env('PATH_ARCHIVOS_INFORMES') . '/' . $informe . '/' . $nombre_archivo;

                    if (!is_dir(env('PATH_ARCHIVOS_INFORMES') . '/' . $informe)) {
                        mkdir(env('PATH_ARCHIVOS_INFORMES') . '/' . $informe);
                    }

                    if (move_uploaded_file($archivo->getRealPath(), $path_guardar)) {
                        // Guardamos en BD
                        SQLConnection::backendStoreProcedure('LN_Blue_UPDAGB', array(
                            'archivo_informe', $id, $informe,
                            Session::get('usuario')->user_id,
                            NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                            NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                            NULL, $nombre_archivo, $extension/*$mime*/
                        ));

                        $paths_guardar[] = $path_guardar;
                        $nombres_archivos[] = $nombre_archivo;
                    }
                }
            }

            $result = EmailController::enviarMailAnalisis(
                $nombre_informe,
                'EMAIL-LED',
                'ENVÍO DE INFORME COMERCIAL',
                '',
                $id,
                '',
                ($enviar == 0) ? '' : trim($email),
                false,
                $paths_guardar,     // array de paths
                $nombres_archivos,  // array de nombres
                Session::get('usuario')->email
            );
            
            // se envía el email
			$msg = $result ? 'El mensaje fue enviado correctamente.' : 'La dirección de e-mail es inválida.';
            $error = $result ? 0 : 1;
            
            if (!$error && $orden_tarea == $ultima_tarea) {
                SQLConnection::backendStoreProcedure('LN_Tareas_Informes_DCL',array('CERRAR_INFORME',$informe,NULL,Session::get('usuario')->user_id));                
                SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se aprobó y publicó el informe.', $cliente, 'CIERRE_INFORME',Session::get('webdata')['id_plataforma'], $id,Session::get('usuario')->user_id,NULL,47,NULL,NULL,NULL,NULL,$informe), 'selectOne');
            }
			
			return json_encode(array('error' => $error,'mensaje' => $msg));
            
		} else {
            return json_encode(array('error' => 1, 'mensaje' => 'La dirección de e-mail es inválida.'));
		}
	}

    public static function enviarMailContraparteOrg(){
		if ( isset($_POST['contraparte']) && isset($_POST['email']) ){
			$cliente = Request::input('cliente');
			$id = Request::input('contraparte');
			$gestion = Request::input('gestion');
            $informe = Request::input('informe');
            $tarea = Request::input('tarea');
            $orden_tarea = Request::input('orden_tarea');
			$enviar = Request::input('enviar');
			$email  = Request::input('email');
            $nombre_tipo_tarea = Request::input('nombre_tarea');
            $nombre_informe = Request::input('nombre_informe');
            $ultima_tarea = SQLConnection::backendStoreProcedure('LN_Blue_Tareas_Informe',array('tareas_informe',NULL,$informe));            
            $ultima_tarea = end($ultima_tarea)->ordTarea;
            			
            $archivo_informe = $_FILES['archivo_ic_send']['tmp_name'];
            $nombre_archivo_informe = $_FILES['archivo_ic_send']['name'];
            
            $extension = pathinfo($nombre_archivo_informe,PATHINFO_EXTENSION);
            $nombre_archivo = $nombre_informe.'.'.$extension;
            
            // $path_guardar = env('PATH_COMPARTIDO').'/'.$cliente.'/'.$id.'/'.$gestion.'/'.$nombre_archivo;
            // $ruta_guardar = env('URL_FIDE_CLI').env('RUTA_COMPARTIDO').'/'.$cliente.'/'.$id.'/'.$gestion.'/'.$nombre_archivo;
            // //
            // if ( !is_dir(env('PATH_COMPARTIDO').'/'.$cliente) ){
            //     mkdir(env('PATH_COMPARTIDO').'/'.$cliente);
            // }
            // if ( !is_dir(env('PATH_COMPARTIDO').'/'.$cliente.'/'.$id) ){
            //     mkdir(env('PATH_COMPARTIDO').'/'.$cliente.'/'.$id);
            // }
            // if ( !is_dir(env('PATH_COMPARTIDO').'/'.$cliente.'/'.$id.'/'.$gestion) ){
            //     mkdir(env('PATH_COMPARTIDO').'/'.$cliente.'/'.$id.'/'.$gestion);
            // }

            $path_guardar = env('PATH_ARCHIVOS_INFORMES').'/'.$informe.'/'.$nombre_archivo;
            $ruta_guardar = env('RUTA_ARCHIVOS_INFORMES').'/'.$informe.'/'.$nombre_archivo;
            
            if ( !is_dir(env('PATH_ARCHIVOS_INFORMES').'/'.$informe) ){
                mkdir(env('PATH_ARCHIVOS_INFORMES').'/'.$informe);
            }

            if ( !move_uploaded_file($archivo_informe,$path_guardar) ){
                $path_guardar = null;
                $nombre_archivo = null;
                $ruta_guardar = NULL;
            } else {
                SQLConnection::backendStoreProcedure('LN_Blue_UPDAGB',array('archivo_informe',$id,$informe,Session::get('usuario')->user_id,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,$nombre_archivo,$extension));
            }
            
            $result = EmailController::enviarMailAnalisis($nombre_informe, 'EMAIL-LED','ENVÍO DE INFORME COMERCIAL','',$id, '',($enviar==0) ? '' : trim($email) , false,$path_guardar,$nombre_archivo,Session::get('usuario')->email);
			$msg = $result ? 'El mensaje fue enviado correctamente.' : 'La dirección de e-mail es inválida.';
            $error = $result ? 0 : 1;
            
            if (!$error && $orden_tarea == $ultima_tarea) {
                SQLConnection::backendStoreProcedure('LN_Tareas_Informes_DCL',array('CERRAR_INFORME',$informe,NULL,Session::get('usuario')->user_id));                
                SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se aprobó y publicó el informe.', $cliente, 'CIERRE_INFORME',Session::get('webdata')['id_plataforma'], $id,Session::get('usuario')->user_id,NULL,47,NULL,NULL,NULL,NULL,$informe), 'selectOne');
            }
			
			return json_encode(array('error' => $error,'mensaje' => $msg));
		} else {
			return json_encode(array('error' => 1, 'mensaje' => 'La dirección de e-mail es inválida.'));
		}
	}

    public static function asignarCuit(){
        
        $cuit = Request::Input('identificacion');
        $nombre_persona = Request::Input('nombre_contraparte');
        $contrap = Request::Input('contraparte');
        $razon_social_completa = '';
        // $razon_social_f = Request::input('nombre_contraparte');
        
        #$id_padron = SQLConnection::busquedaPadronAutocomplete($cuit,1);
        #$id_padron = !is_null($id_padron) && !empty($id_padron) ? $id_padron[0]->id_padron : null;        
        // Busca los edictos por nombre
        // $edictos_por_nombre = EdictosController::obtenerEdictosPorNombre($razon_social_f);
        // dd($nombre_persona);
        
        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contrap, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');        
        $id_padron = $contrap->id_padron ?? NULL;   
        $tipo_persona = Misc::tipoPersona($cuit, $id_padron);
        $edictos_por_nombre = NULL;
        if ($tipo_persona == 'J') {
			$sinonimos = Misc::diccionarioSinonimosTEST([$nombre_persona]);
			$count_sinonimo = count($sinonimos) - 1;
            
			foreach ($sinonimos as $key => $rs) {
				if(!($key == $count_sinonimo)){
					$razon_social_completa .= $rs.'OR';
				} else {
					$razon_social_completa .= $rs;
				}
			}
			//
			if (!$razon_social_completa) {
				$razon_social_completa = "\"".$razon_social."\"";
			}
            //
            $edictos_por_nombre = SQLConnection::backendStoreProcedure('obtener_edictos_homonimos_conid',array($razon_social_completa),"select");
		} else {
			//Edictos para PF
            $edictos_por_nombre = SQLConnection::backendStoreProcedure('obtener_edictos_homonimos_conid',array('"'.$nombre_persona.'"'),"select");
        }
        //
        // $edictos = []; // edictos donde la contraparte esta mencionada y el edicto esta asignado a una razon social
        $edictos_homonimos = []; // edictos donde la contraparte esta mencionada y el edicto no esta asignado
        $vinculo_sociedades_edictos = []; // cuit de las razones sociales con edictos donde la contraparte esta mencionada
        $sociedades = [];
        // se arman los vectores con los edictos obtenidos
        if ( !empty($edictos_por_nombre) ){
            foreach( $edictos_por_nombre as $edicto ){
                if ( !isset($edicto->cuit_soc) || is_null($edicto->cuit_soc) || empty($edicto->cuit_soc) ){
                    $edictos_homonimos[] = $edicto;
                } else {
                    // $edictos[] = $edicto;
                    $vinculo_sociedades_edictos[$edicto->cuit_soc] = $edicto->razon_social;
                }
            }
        }
        //
        unset($edictos_por_nombre);
        // se llenan los datos de la empresa (directorios y edictos)
        $datos_persona = NULL;
        $edicto_sociedades = NULL;
        $directorio = NULL;
        $ya_encontro_mismo = false;
        if ( !empty($vinculo_sociedades_edictos) ){
            foreach( $vinculo_sociedades_edictos as $cuit_soc => $razon_social_soc ){
                if ( $cuit_soc == $cuit ){
                    $ya_encontro_mismo = true;
                }
                // datos de la sociedad
                $datos_persona = SQLConnection::obtenerPersona($cuit_soc);
                if ( is_null($datos_persona) ){
                    continue;
                }
                // edictos de la sociedad
                $edicto_sociedades = SQLConnection::backendStoreProcedure('obtener_edictos_backend',array($cuit_soc));
                // directorios de la sociedad
                $directorio = SQLConnection::backendStoreProcedure('backend_obtener_socios',array(NULL,$cuit_soc,'1','J'));
                //
                $sociedades[] = (object)['cuit' => $cuit_soc,'razon_social' => $datos_persona->nombre_persona,'edictos' => $edicto_sociedades,'directorios' => $directorio];
            }
        }
        //
        if ( $tipo_persona == 'J' && !$ya_encontro_mismo ){
            $edicto_sociedades = SQLConnection::backendStoreProcedure('obtener_edictos_backend',array($cuit));
            $directorio = SQLConnection::backendStoreProcedure('backend_obtener_socios',array(NULL,$cuit,'1','J'));
            $sociedades[] = (object)['cuit' => $cuit,'razon_social' => $nombre_persona,'edictos' => $edicto_sociedades,'directorios' => $directorio];
        }
        //
        $cargos = SQLConnection::backendStoreProcedure("obtener_Cargos", array());
        $accionistas = [];
        $accionistas_inactivos = [];
        if ( $tipo_persona == 'J' ){
            $accionistas = SQLConnection::backendStoreProcedure("backend_obtener_accionistas", array($cuit, 1));
            $accionistas_inactivos = SQLConnection::backendStoreProcedure("backend_obtener_accionistas", array($cuit, 0));
        }
        //
        $accionistas_de = SQLConnection::backendStoreProcedure("backend_obtener_accionistas_de", array($cuit, 1));
        $accionistas_de_inactivos = SQLConnection::backendStoreProcedure("backend_obtener_accionistas_de", array($cuit, 0));      
        //
        return view('/informes-blue/actividades-tarea/asignacion-cuit-edictos')->with(compact('edictos_homonimos','sociedades', 'cuit','cargos','nombre_persona','accionistas','accionistas_de','tipo_persona','accionistas_de_inactivos','accionistas_inactivos','id_padron'));
    }

    public static function generarPlantillaIC(){

        $identificacion = Request::input('cuit');
        $seccion_ic = Request::input('seccion_ic');  // Sección que se quiere procesar
        $razon_social = Request::input('razon_social');
        // Definir los datos para la solicitud
        $data = [
            'apikey' => env('APIKEY_BRIEF'),  // Usamos env para acceder al valor de la APIKEY
            'cuit' => $identificacion,  
            'cliente_login' => 1,             // O el valor real si es dinámico
            'idioma' => 'spa'                 // O el valor real si es dinámico
        ];
        $serialized_data = http_build_query($data);
    
        // Definir las URLs de las APIs
        $api_urls = [
            'brief' => env('URL_FRONTEND') . '/api/brief',
            'formales' => env('URL_FRONTEND') . '/api/formales',
            'comerciales' => env('URL_FRONTEND') . '/api/comerciales',
            'fiscales' => env('URL_FRONTEND') . '/api/fiscales',
            'contables' => env('URL_FRONTEND') . '/api/contables',
            'sociedades' => env('URL_FRONTEND') . '/api/sociedades',
            'bancos' => env('URL_FRONTEND') . '/api/bancos',
            'legales' => env('URL_FRONTEND') . '/api/legales',
            'comex' => env('URL_FRONTEND') . '/api/comex',
        ];
      
        // Inicializar el array que contendrá los datos
        $array_data = [];
        $seccion_ic = json_decode($seccion_ic, true);  
       // dd($seccion_ic);
        // Llamada a la API por cada sección
        foreach ($api_urls as $seccion => $url) {
           
            // Comprobar si la sección está en el array de secciones
            if (in_array($seccion, $seccion_ic)) {
               // echo($seccion);
                $webhook = Misc::CURLCall($url, $serialized_data, 'POST');
                //return $webhook;
                $webhook = json_decode($webhook);
                
                $array_data[$seccion] = $webhook;  // Guardar la respuesta de la API
                if( isset($array_data[$seccion]->info )){
                    $array_data[$seccion]->info = json_encode($array_data[$seccion]->info);
                }
            }
        }
        
        // Devolver la vista con los datos
        return view('informe-fidelita-secciones/pdf/generar-seccion-ic')->with(compact('identificacion', 'array_data', 'seccion_ic'));
    }

    public static function generarPDFinforme(){
        try {
            $doc_id = 'Informe.pdf';
            //
            $contenido = Request::input('contenido');
            
            $grafico_cheques = Request::input('graficoCheques');
            $grafico_financiero = Request::input('graficoFinanciero');
            $grafico_situaciones = Request::input('graficoSituaciones');
            $grafico_garantias = Request::input('graficoGarantias');
            // 
            $grafico_financiero_brief = Request::input('graficoFinancieroBrief');
            $grafico_cheques_brief = Request::input('graficoChequesBrief');
            $grafico_empleados_brief = Request::input('graficoEmpleadosBrief');
            $grafico_comex_brief = Request::input('graficoComexBrief');
            $grafico_sociedades = Request::input('graficoSociedades');
            //dd($grafico_sociedades);
            $grafico_capital = Request::input('graficoCapitalTrabajo');  
            $grafico_patrimonial = Request::input('graficoPatrimonial');  
            $grafico_solvencia = Request::input('graficoSolvencia');  
            $grafico_liquidez = Request::input('graficoLiquidezCorriente');  
            $grafico_endeudamiento = Request::input('graficoEndeudamientoCorriente');
            $grafico_performance = Request::input('graficoPerformance');  
            $grafico_palanca = Request::input('graficoEfectoPalance');  
            $grafico_ventas = Request::input('graficoVentas'); 
            $grafico_gastos = Request::input('graficoGastosTotales');  
            $grafico_impo_comex = Request::input('graficoImpoComex'); 
            $grafico_expo_comex = Request::input('graficoExpoComex');  
            $grafico_expo_pais = Request::input('graficoPaisExpo');  
            $grafico_impo_pais = Request::input('graficoPaisImpo'); 
            $grafico_rubro_impo = Request::input('graficoRubrosImpo');  
            $grafico_rubro_expo = Request::input('graficoRubrosExpo');  
            //  dd($grafico_endeudamiento);
            // Guardar el HTML en un archivo temporal
            $archivo_html = ENV('PATH_GENERATE_INFORME') . '/informe.html';
            $file_download = ENV('PATH_GENERATE_INFORME') . '/informe.pdf' ;
            //$tempFile = tempnam(sys_get_temp_dir(), 'html_');
          
            $html = view('/blue/reports/export_pdf/plantilla_ic')->with(compact('contenido',
                 'grafico_cheques', 
                 'grafico_financiero', 
                 'grafico_situaciones', 
                 'grafico_garantias',
                 'grafico_financiero_brief',
                 'grafico_cheques_brief',
                 'grafico_empleados_brief',
                 'grafico_comex_brief',
                 'grafico_sociedades'
                ,'grafico_capital'
                ,'grafico_patrimonial'
                ,'grafico_solvencia'
                ,'grafico_liquidez'
                ,'grafico_endeudamiento'
                ,'grafico_performance'
                ,'grafico_palanca'
                ,'grafico_ventas'
                ,'grafico_gastos'
                ,'grafico_impo_comex'
                ,'grafico_expo_comex'
                ,'grafico_expo_pais'
                ,'grafico_impo_pais'
                ,'grafico_rubro_impo'
                ,'grafico_rubro_expo'
            ))->render();
            file_put_contents($archivo_html,$html);
            // Llamar a wkhtmltopdf para generar el PDF a partir del archivo temporal
            //$outputFile =  ENV('PATH_GENERATE_INFORME') . '/' .  $doc_id ;
            $command = "wkhtmltopdf -d 300 -L 10 -R 10 -T 10 -B 10 -s Letter --enable-local-file-access --margin-bottom 10mm --header-left '[page]/[topage]' $archivo_html $file_download";
            //$command = "wkhtmltopdf -d 300 -L 5 -R 5 -T 5 -B 5 -s Letter --enable-local-file-access --margin-bottom 5mm --header-left '[page]/[topage]' --viewport-size 1920x1080 $archivo_html $file_download";
            //$command = "wkhtmltopdf -d 300 -L 5 -R 5 -T 5 -B 5 -s Letter --enable-local-file-access --margin-bottom 5mm --header-left '[page]/[topage]' --viewport-size 1920x1080 $archivo_html $file_download";
           // $command = "wkhtmltopdf -d 300 -L 5 -R 5 -T 5 -B 5 -s Letter --enable-local-file-access --margin-bottom 5mm --header-left '[page]/[topage]' --viewport-size 1920x1080 $archivo_html $file_download";
           // $command = "wkhtmltopdf -d 300 -L 5 -R 5 -T 5 -B 5 -s Letter --enable-local-file-access --margin-bottom 5mm --header-left '[page]/[topage]' --viewport-size 1920x1080 $archivo_html $file_download";

            exec($command, $output, $return_var);
            exec('exiftool -all= '.$file_download);
            
            
            return response()->download($file_download);
        } catch (\Exception $e) {
            // Manejo de la excepción
            return response()->json(['error' => 1, 'mensaje' => $e->getMessage()]);
        }
    }
}
