<?php

namespace App\Http\Controllers;

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

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

use DB;
use Exception;


class RedaccionController extends Controller {

    /**
     * @access private
     * @var string id del cliente
     * @var string id de la contraparte
     * @var string id de la gestion
     * @var string el tipo de documento vinculado con el componente
     */
    private $cliente;
    private $contraparte;
    private $gestion;
    private $componente;
    private $tipo_doc;

    /**
     * @access public
     */
    public function __construct() {
        $this->contraparte = $this->validarParametroPedido('contraparte');
        if (is_null($this->contraparte)) {
            throw new Exception('la contraparte no fue recibida');
        }
        $this->gestion = $this->validarParametroPedido('gestion');
        $this->cliente = $this->validarParametroPedido('cliente');
        $this->componente = $this->validarParametroPedido('componente');
        $this->tipo_doc = $this->validarParametroPedido('tipo_doc');
    }

    /**
     * @access public
     * @param string
     * @param string
     * @return void
     */
    public function __set($name, $value) {
        $this->$name = $value;
    }

    /**
     * FUNCION QUE DEVUELVE EL COMPONENTE DE INDICADORES
     * 
     * @access public
     * @static
     */
    public function IndicadoresInquiro($dato_json = false) {
        $contraparte = $this->contraparte;
        //
        $indicadores = $this->obtenerIndicadoresInquiro($contraparte);
        //
        /* dd($indicadores); */
        //
        if ($dato_json != 0) {
            //
            $ind_json = [];
            //
            foreach ($indicadores as $elemento) {
                if ($elemento->valor_texto === "P") {
                    $elemento->valor_texto = "Aprobado";
                } elseif ($elemento->valor_texto === "X") {
                    $elemento->valor_texto = "N/S";
                } elseif ($elemento->valor_texto == "N") {
                    $elemento->valor_texto = "Alerta";
                } elseif ($elemento->valor_texto == "O") {
                    $elemento->valor_texto = "En Observacion";
                }
                //
                $ind_json[$elemento->etiqueta] = $elemento->valor_texto;
            }
            return $ind_json;
            //
        } else {
            //
            Traducciones::$blade = 'indicadores_inquiro';
            SQLConnection::obtenerTraducciones(Traducciones::$blade);
            foreach ($indicadores as $elemento) {
                $elemento->etiqueta = Traducciones::get($elemento->etiqueta);
            }
            //
            return view('/redaccion/indicadores_inquiro')->with(compact('contraparte', 'indicadores'));
        }
        // return view('/redaccion/indicadores_inquiro')->with(compact('contraparte','indicadores'));
    }

    ///////////////////// PRENSA ///////////////////////

    /**
     * FUNCION QUE DEVUELVE EL COMPONENTE DE PRENSA
     * 
     * @access public
     * @static 
     * */
    public function seccionPrensa($dato_json = false) {
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', array('SELECCIONAR_INFORME', $this->contraparte, $this->cliente, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $this->gestion), 'selectOne');
        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        //
        $prensa = SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_prensa', $this->contraparte, Session::get('usuario')->user_id), 'selectOne');
        $busqueda_google_nombre = explode(' ', $qcontrap->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[1] . ' ' . $busqueda_google_nombre[2] . ' ' . $busqueda_google_nombre[0]
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . $busqueda_google_nombre[1] . ' ' . $busqueda_google_nombre[2]
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . $busqueda_google_nombre[1] . ' ' . substr($busqueda_google_nombre[2], 0, 1) . '.'
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . substr($busqueda_google_nombre[1], 0, 1) . '. ' . substr($busqueda_google_nombre[2], 0, 1) . '.'
                . '"+OR+"' . $busqueda_google_nombre[1] . ' ' . $busqueda_google_nombre[0]
                . '"+OR+"' . $busqueda_google_nombre[0] . ', ' . $busqueda_google_nombre[1]
                . '"+OR+"' . $busqueda_google_nombre[0] . ' ' . substr($busqueda_google_nombre[1], 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] . '"';
        }
        $valoracion = SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_valoracion_todas', $this->contraparte, Session::get('usuario')->user_id, null, null, $qcontrap->cliente), 'select');
        $valor_valoracion = SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_valoracion', $this->contraparte, Session::get('usuario')->user_id, null, null, $qcontrap->cliente), 'selectOne');
        //
        if ($dato_json) {
            return (['prensa' => $prensa->texto_prensa ?? '']);
        } else {
            Traducciones::$blade = 'prensa';
            SQLConnection::obtenerTraducciones(Traducciones::$blade);
            return view('/redaccion/secciones/prensa')->with(compact('busqueda_google', 'report_data', 'qcontrap', 'valoracion', 'prensa', 'valor_valoracion'));
        }
        // return view('/redaccion/secciones/prensa')->with(compact('iv_busqueda','busqueda_google','qcontrap','valoracion','prensa'));
    }

    //////////////////// FIDECHECK ///////////////////

    /**
     * FUNCION QUE DEVUELVE EL COMPONENTE DE FIDECHECK
     * 
     * @access public
     */
    public function componenteFidecheck($dato_json = false) {
        if (isset($_POST['cuit']) && Misc::validacionesGenerica($_POST['cuit'], 'razon_social')) {
            $cuit = Request::input('cuit');
            $contraparte = $this->contraparte;
            $cliente = $this->cliente;
            $datos_fidecheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $contraparte, null, 'P'), 'selectOne');
            //
            if ($dato_json) {
                return ([$datos_fidecheck]);
            } else {
                Traducciones::$blade = 'fidecheck';
                SQLConnection::obtenerTraducciones(Traducciones::$blade);
                return view('/redaccion/secciones/fidecheck')->with(compact('datos_fidecheck', 'cuit', 'contraparte', 'cliente'));
            }
            //return view('/redaccion/secciones/fidecheck')->with(compact('datos_fidecheck','cuit','contraparte','cliente'));   
            // }
        } else {
            return 0;
        }
    }

    /**
     * FUNCION QUE DEVUELVE EL COMPONENTE DE FIDECHECK
     * COMPLETO
     * 
     * @access public
     */
    public function componenteFidecheckCompleto($dato_json = false) {
        if (isset($_POST['cuit']) && Misc::validacionesGenerica($_POST['cuit'], 'razon_social')) {
            $cuit = Request::input('cuit');
            $contraparte = $this->contraparte;
            $cliente = $this->cliente;
            //
            $datos_fidecheck = array();
            $propio = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $contraparte, null, 'P'), 'selectOne');
            array_push($datos_fidecheck, array("Propio" => $propio));
            $socios = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $contraparte, null, 'S'), 'select');
            array_push($datos_fidecheck, array("Socios" => $socios));
            $relac = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $contraparte, null, 'R'), 'select');
            array_push($datos_fidecheck, array("Vinculaciones" => $relac));
            $direct = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $contraparte, null, 'D'), 'select');
            foreach ($direct as $k => $dir) {
                if ($dir->cargo == 'AUTORIDAD IGJ') {
                    unset($direct[$k]);
                }
            }
            $direct = array_values($direct);
            array_push($datos_fidecheck, array("Directivos" => $direct));
            //
            if ($dato_json) {
                return ([$datos_fidecheck]);
            } else {
                Traducciones::$blade = 'fidecheck';
                SQLConnection::obtenerTraducciones(Traducciones::$blade);
                return view('/redaccion/secciones/fidecheck_completo')->with(compact('datos_fidecheck', 'cuit', 'contraparte', 'cliente'));
            }
            //return view('/redaccion/secciones/fidecheck')->with(compact('datos_fidecheck','cuit','contraparte','cliente'));   
            // }
        } else {
            return 0;
        }
    }

    ////////////////// CONCLUSION ////////////////////

    /** 
     * FUNCION QUE DEVUELVE EL COMPONENTE DE CONCLUSION
     * 
     * @access public
     * @static
     */
    public function seccionConclusion($dato_json = false) {
        $report_data = SQLConnection::backendStoreProcedure('LN_demo_', array('SELECCIONAR_INFORME', $this->contraparte, $this->cliente, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $this->gestion), 'selectOne');
        $dossier = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $this->contraparte, NULL, $report_data->producto), 'selectOne');
        //
        if ($dato_json) {
            return (['conclusion' => $dossier->analisis ?? '']);
        } else {
            Traducciones::$blade = 'conclusion';
            SQLConnection::obtenerTraducciones(Traducciones::$blade);
            return view('/redaccion/secciones/conclusion')->with(['dossier' => $dossier, 'report_data' => $report_data, 'contraparte' => $this->contraparte, 'cliente' => $this->cliente, 'gestion' => $this->gestion]);
        }
    }

    //////////////// MOVILIDAD PROPIA ////////////////

    /**
     * Funcion que devuelve el componente de movilidad propia
     * @access public
     */
    public function componenteMovilidadPropia() {
        $doc = $this->docData(); // doc
    }

    //////////////// DATOS PERSONALES ////////////////

    /**
     * Funcion que devuelve el componente de datos personales
     * @access public
     */
    public function componenteDatosPersonalesOrg() {
        $doc = $this->docData();
        $datos = $this->generarCamposDocumento($doc->doc_id);
        exit;
    }

    /**
     * Funcíon que devuelve el componente datos personales confidenciales
     */
    public function datosPersonales() {
        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $datos_persona = SQLConnection::obtenerPersona($qcontrap->identificacion);
        //
        if ($datos_persona->tipo_persona == 'F') {
            return view('/redaccion/secciones/datos_personales')->with(compact('qcontrap', 'datos_persona'));
        }
    }

    //////////////// GRUPO FAMILIAR ////////////////

    /**
     * Funcion que devuelve el componente de movilidad propia
     * @access public
     */
    public function componenteGrupoFamiliar() {
        $doc = $this->docData(); // doc
        $datos = $this->generarCamposDocumento($doc->doc_id);
    }

    ////////// INFORME COMERCIAL EXTERIOR ////////////

    /**
     * Función que devuelve el componente de informe comercial del exterior
     * @access public
     */
    public function informeComercialExterior() {
        // obtenemos los archivos de antecedentes comerciales
        $doc = $this->docData(); // doc
        $campos_doc = $this->generarCamposDocumento($doc->doc_id);
        // obtenemos los datos del informe comercial del exterior
        $ic_exterior = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $this->contraparte, 'SCORE_IC'), 'selectOne');
        //
        $data = [];
        if (isset($ic_exterior)) {
            $data['score'] = $ic_exterior->valor;
            $data['motivo'] = $ic_exterior->valor_memo;
        }
        //
        Traducciones::$blade = 'informe_comercial_exterior';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        return view('/redaccion/informe_comercial_exterior', compact('campos_doc', 'data'));
    }

    /////////// HISTORIAL LABORAL ////////////

    /**
     * FUNCION QUE DEVUELVE LA SECCION DE HISTORIAL LABORAL RESUMIDO (DEFAULT)
     * @access public
     */
    public function historialLaboral() {
        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, $this->cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $empleadores = SQLConnection::backendStoreProcedure('backend_empleados', array($qcontrap->numero, null, 'empleadores'));
        //--
        $datos_empleadores = [];
        //
        $es_extendido = FALSE;
        foreach ($empleadores as $indice_empleador => $empleador) {
            $fecha = date_create_from_format('Y-m', $empleador->periodo);
            //
            if (!isset($datos_empleadores[$empleador->cuit])) {
                $datos_empleadores[$empleador->cuit] = (object) ['cuit' => $empleador->cuit, 'empleador' => $empleador->empleador, 'periodo' => $empleador->periodo];
            }
            //
            if (isset($datos_empleadores[$empleador->cuit]->periodo)) {
                if ($fecha < date_create_from_format('Y-m', $datos_empleadores[$empleador->cuit]->periodo)) {
                    $datos_empleadores[$empleador->cuit]->periodo = $empleador->periodo;
                }
            } else {
                $datos_empleadores[$empleador->cuit]->periodo = $empleador->periodo;
            }
        }
        //
        Traducciones::$blade = 'historial_laboral_empleadores';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        //
        return view('/blue/servicios_cliente/reportes/seccion-documentos-facon-inquiro/historial_laboral_empleadores')->with(compact('datos_empleadores', 'es_extendido'));
    }

    /**
     * FUNCION QUE DEVUELVE LA SECCION DE HISTORIAL LABORAL EXTENDIDO
     * @access public
     */
    public function historialLaboralExtendido() {
        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, $this->cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $datos_empleadores = SQLConnection::backendStoreProcedure('backend_empleados', array($qcontrap->numero, null, 'empleadores'));
        //
        $es_extendido = TRUE;
        //
        Traducciones::$blade = 'historial_laboral_empleadores';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        //
        return view('/blue/servicios_cliente/reportes/seccion-documentos-facon-inquiro/historial_laboral_empleadores')->with(compact('datos_empleadores', 'es_extendido'));
    }

    public function historialLaboralAnses() {
        $doc = $this->docData(); // doc
        $datos = $this->generarCamposDocumento($doc->doc_id);
        var_dump($datos);
        die();
    }

    /////////////// UBICACION ///////////////////////

    public function ubicacion() {
        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        // SECCION DOMICILIOS
        $domicilios = SQLConnection::obtenerDomicilios($contrap->identificacion); // STORE PARA DOMICILIOS
        $direccion_elegida = [];
        $direccion = '';
        foreach ($domicilios as $domi) {
            //
            if (empty($direccion)) {
                if ($domi->tipo_domicilio_nombre == 'MAPAS' && !is_null($domi->domicilio)) {
                    $direccion_elegida = $domi;
                }
            } else {
                break;
            }
        }
        //
        if (isset($direccion_elegida->domicilio)) {
            $direccion = $direccion_elegida->domicilio;
            $direccion .= (!is_null($direccion_elegida->loc_nombre) && !empty($direccion_elegida->loc_nombre)) ? ',' . $direccion_elegida->loc_nombre : '';
            $direccion .= (!is_null($direccion_elegida->prv_nombre) && !empty($direccion_elegida->prv_nombre)) ? ',' . $direccion_elegida->prv_nombre : '';
            $direccion .= (!is_null($direccion_elegida->pai_nombre) && !empty($direccion_elegida->pai_nombre)) ? ',' . $direccion_elegida->pai_nombre : '';
        }
        //
        if (!empty($direccion)) {
            $url = env('URL_GOOGLE_LOCATION');
            $google_key = env('GOOGLE_MAPS_KEY');
            $query = $url . "?query=" . str_replace(' ', '%20', $direccion) . "%20main%20street&key=" . $google_key;
            $llamada = Misc::CURLCall($query, '', 'GET');
            $llamada = json_decode($llamada);
            if (json_last_error() === JSON_ERROR_NONE) {
                $coordinacion = (isset($llamada->results[0]->geometry)) ? $llamada->results[0]->geometry : '';
            }
        }
        // SE BUSCAN LOS FOTOS DE MAPAS
        $mapas = $this->BuscarImagenesMapa();
        $taxid = $contrap->identificacion;
        //
        Traducciones::$blade = 'ubicacion';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        //
        return view('/redaccion/secciones/ubicacion', ['contraparte' => $this->contraparte, 'cliente' => $this->cliente, 'gestion' => $this->gestion, 'componente' => $this->componente, 'mapas' => $mapas, 'direccion' => $direccion, 'domicilios' => $domicilios, 'taxid' => $taxid]);
    }

    /**
     * FUNCION QUE BUSCA LAS IMAGENES DE MAPA PARA EL REPORTE
     * DEVUELVE UN OBJETO DE VALORES QUE TIENEN LAS RUTAS DE LOS ARCHIVOS SI EXISTEN , O CON VALORES NULL
     *  
     * 
     * */
    private function BuscarImagenesMapa() {
        // OBTENER IMAGEN ESTATICA DEL MAPA (MICRO)
        $static_micro_map_exists = FALSE;
        $archivo_static_micro_map = NULL;
        $filepath_static_micro_map = env('PATH_MAP_MICRO_INFORME') . '/' . $this->cliente . '/' . $this->contraparte . '/' . $this->gestion . '.*';
        $busqueda_archivo_static_micro_map = glob($filepath_static_micro_map);
        if (!empty($busqueda_archivo_static_micro_map)) {
            $static_micro_map_exists = TRUE;
            $ext = pathinfo($busqueda_archivo_static_micro_map[0], PATHINFO_EXTENSION);
            $archivo_static_micro_map = env('RUTA_MAP_MICRO_INFORME') . '/' . $this->cliente . '/' . $this->contraparte . '/' . $this->gestion . '.' . $ext;
        }
        // OBTENER IMAGEN ESTATICA DEL MAPA (MACRO)
        $static_macro_map_exists = FALSE;
        $archivo_static_macro_map = NULL;
        $filepath_static_macro_map = env('PATH_MAP_MACRO_INFORME') . '/' . $this->cliente . '/' . $this->contraparte . '/' . $this->gestion . '.*';
        $busqueda_archivo_static_macro_map = glob($filepath_static_macro_map);
        if (!empty($busqueda_archivo_static_macro_map)) {
            $static_macro_map_exists = TRUE;
            $ext = pathinfo($busqueda_archivo_static_macro_map[0], PATHINFO_EXTENSION);
            $archivo_static_macro_map = env('RUTA_MAP_MACRO_INFORME') . '/' . $this->cliente . '/' . $this->contraparte . '/' . $this->gestion . '.' . $ext;
        }
        // OBTENER IMAGEN STREETVIEW DEL MAPA
        $streetview_exists = FALSE;
        $archivo_streetview = NULL;
        $filepath_streetview = env('PATH_STREETVIEW_INFORME') . '/' . $this->cliente . '/' . $this->contraparte . '/' . $this->gestion . '.*';
        $busqueda_archivo_streetview = glob($filepath_streetview);
        if (!empty($busqueda_archivo_streetview)) {
            $streetview_exists = TRUE;
            $ext = pathinfo($busqueda_archivo_streetview[0], PATHINFO_EXTENSION);
            $archivo_streetview = env('RUTA_STREETVIEW_INFORME') . '/' . $this->cliente . '/' . $this->contraparte . '/' . $this->gestion . '.' . $ext;
        }
        //
        return (object) ['micro_map' => $archivo_static_micro_map, 'macro_map' => $archivo_static_macro_map, 'streetview' => $archivo_streetview];
    }

    /////// REGISTRO DE GRADUADOS UNIVERSITARIOS //////

    /**
     * Funcion que devuelve el componente del 
     * registro publico de graduados universitarios
     * @access public
     * @param bool
     */
    public function registroGraduadosUniversitarios($dato_json = false) {
        $iv_busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $this->contraparte), 'selectOne');
        //
        $registro_graduados = $this->certificacionAcademica(false);
        //
        if ($dato_json) {
            return [$registro_graduados->url];
        }
        //
        return view('/redaccion/secciones/registro_graduados_universitarios', ['pais' => $iv_busqueda, 'ruta_certificacion' => $registro_graduados->url, 'certificacion_existe' => $registro_graduados->existe, 'cliente' => $this->cliente, 'contraparte' => $this->contraparte, 'gestion' => $this->gestion, 'componente' => $this->componente]);

    }

    /**
     * Funcion que devuelve el archivo
     * registro de graduados universitarios
     * @access private
     * @param bool path del archivo
     * @param bool ruta del archivo
     * @param string|null id del cliente
     * @param string|null id de la contraparte
     * @param string|null id de la gestion
     * @return object
     */
    private function certificacionAcademica($path_archivo = true, $ruta_archivo = true, $cliente = null, $contraparte = null, $gestion = null) {
        $cliente = $cliente ?? $this->cliente;
        if (is_null($cliente)) {
            throw new Exception('No se pudo obtener el cliente.');
        }
        //
        $contraparte = $contraparte ?? $this->contraparte;
        if (is_null($contraparte)) {
            throw new Exception('No se pudo obtener la contraparte.');
        }
        //
        $gestion = $gestion ?? $this->gestion;
        if (is_null($gestion)) {
            throw new Exception('No se pudo obtener el gestion.');
        }
        // se obtiene el certificado
        $resultado = (object) [];
        $path_certificacion = env('PATH_CERTIFICACION_ACADEMICA') . DIRECTORY_SEPARATOR . $cliente . DIRECTORY_SEPARATOR . $contraparte . DIRECTORY_SEPARATOR . $gestion . '.png';
        $resultado->existe = false;
        $resultado->path = NULL;
        $resultado->url = NULL;
        //
        if (file_exists($path_certificacion)) {
            $resultado->existe = true;
            if ($path_archivo) {
                $resultado->path = $path_certificacion;
            }
            if ($ruta_archivo) {
                $resultado->url = env('RUTA_CERTIFICACION_ACADEMICA') . DIRECTORY_SEPARATOR . $cliente . DIRECTORY_SEPARATOR . $contraparte . DIRECTORY_SEPARATOR . $gestion . '.png';
            }
        }
        //
        return $resultado;
    }

    //////////// FIDECHECK GRUPO FAMILIAR ////////////

    // FUNCION QUE DEVUELVE LA SECCION DE FIDECHECK DEL GRUPO FAMILIAR
    public function fidecheckGrupoFamiliar($dato_json = false) {
        $path_fidecheck_familiar = env('PATH_FIDECHECK_GRUPO_FAMILIAR') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . '.png';
        $ruta_fidecheck_familiar = env('RUTA_FIDECHECK_GRUPO_FAMILIAR') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . '.png';
        $fidecheck_familiar_existe = false;
        //
        if (file_exists($path_fidecheck_familiar)) {
            $fidecheck_familiar_existe = true;
        }
        //
        if ($dato_json) {
            return [$ruta_fidecheck_familiar, $fidecheck_familiar_existe];
        }
        //
        Traducciones::$blade = 'fidecheck_grupo_familiar';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        //
        return view('/redaccion/secciones/fidecheck_grupo_familiar', ['ruta_fidecheck_familiar' => $ruta_fidecheck_familiar, 'fidecheck_familiar_existe' => $fidecheck_familiar_existe, 'cliente' => $this->cliente, 'contraparte' => $this->contraparte, 'gestion' => $this->gestion, 'componente' => $this->componente]);
    }

    ////////////// FUNCIONES INTERNAS ///////////////

    /**
     * Funcion que valida los datos recibidos por POST
     * @access private
     * @param string el dato recibido como POST
     * @param string el metodo recibido por request
     * @return null|string devuelve el valor o NULL
     */
    private function validarParametroPedido($clave, $method = 'P') {
        if ($method == 'P') {
            // POST
            return ((isset($_POST[$clave]) && $_POST[$clave]) ? $_POST[$clave] : NULL);
        } else {
            // GET
            return ((isset($_GET[$clave]) && $_GET[$clave]) ? $_GET[$clave] : NULL);
        }
    }

    /**
     * FUNCION QUE DEVUELVE LOS INDICADORES DE INQUIRO
     * 
     * @access private
     * @static
     * @param string contraparte
     * @return array indicadores de inquiro
     * 
     */
    private static function obtenerIndicadoresInquiro($contraparte) {
        $indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('obtener_indicadores', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $contraparte), 'select');
        foreach ($indicadores as $key => $value) {
            if ($value->valoracion != 'F') {
                unset($indicadores[$key]);
            }

        }
        return $indicadores;
    }

    ///////////// FUNCIONES DE DOCUMENTOS ///////////

    /**
     * Funcion que devuelve los datos del documento
     * @param string tipo de documento ( sino esta toma el de la propiedad de la clase ) 
     */
    private function docData($tipo_doc = NULL) {
        $tipo_doc = $tipo_doc ?? $this->tipo_doc;
        if (!is_null($tipo_doc)) {
            return SQLConnection::backendStoreProcedure('LN_docs_', array('sin_accion', null, $this->cliente, $this->contraparte, $this->tipo_doc, null, null, null, null, null, null, null, null, null, null, $this->gestion, Session::get('usuario')->user_id, null, null), 'selectOne');
        } else {
            throw new Exception('El tipo del documento no esta disponible');
        }
    }

    /**
     * FUNCION ENCARGADA DE GENERAR LOS CAMPOS DEL DOCUMENTO DE INQUIRO
     * DEVUELVE LOS CAMPOS QUE TIENE EL DOCUMENTO PEDIDO
     * 
     * @access private
     * @param string el doc id
     * */
    private function generarCamposDocumento($docid) {
        $flds = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('search', $docid, null, null, null, null, null, null, null, null), 'select');
        //** 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 = [];
        //
        $response = [];
        $data = [];
        foreach ($flds as $k => $fld) {
            if ($fld->tipo_campo == 'G') {
                // columnas 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) {
                                $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');
                //
                $response[$fld->seccion][$fld->etiqueta] = (object) ['id' => $fld->campo, 'tipo' => $fld->tipo_campo, 'fila' => $fld->filas, 'col' => $fld->columnas, 'valor' => []];
                foreach ($c2 as $k1 => $valor) {
                    /* $valores[$valor->fila][$valor->col]['valor_texto'] = $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]['es_vacio'] = (empty($valor->valor_texto) && empty($valor->valor_fecha) && empty($valor->valor_numerico)) ? 1 : 0;
                    // campos de la tabla
                    if ($valor->tipo_campo == 'S' || $valor->tipo_campo == 'R' || $valor->tipo_campo == 'C') {
                        // selector | radio | checkbox ( mismo mecanismo para determinar el caso )
                        $valores = $this->opcionSelect($valor->opciones); // se obtienen las opciones
                        //
                        if (!empty($valores)) {
                            $clave_txt = array_search($valor->valor_texto, $valores['val']);
                            if ($clave_txt >= 0) {
                                $valor->valor_texto = $valores['txt'][$clave_txt];
                            } else {
                                $valor->valor_texto = NULL;
                            }
                        } else {
                            $valor->valor_texto = NULL;
                        }
                        /* if (strlen($valor->opciones) > 0) {
                                              $r = explode("^", $valor->opciones);
                                              $txt = [];
                                              $val = [];
                                              if (sizeof($r) >= 2) {
                                                  $txt = explode("|", $r[0]);
                                                  $val = explode("|", $r[1]);
                                              }
                                              $valores[$valor->fila][$valor->col]['opciones']['txt'] = $txt;
                                              $valores[$valor->fila][$valor->col]['opciones']['val'] = $val;
                                          } */
                        $response[$fld->seccion][$fld->etiqueta]->valor[$valor->fila . '_' . $valor->col] = (object) ['tipo' => $valor->tipo_campo, 'valor' => $valor->valor_texto, 'header' => $valor->etiqueta, 'opciones' => $valores];
                    } elseif ($valor->tipo_campo == 'T' || $valor->tipo_campo == 'M') {
                        // texto | texto largo
                        $response[$fld->seccion][$fld->etiqueta]->valor[$valor->fila . '_' . $valor->col] = (object) ['tipo' => $valor->tipo_campo, 'valor' => $valor->valor_texto, 'header' => $valor->etiqueta];
                    } elseif ($valor->tipo_campo == 'N') {
                        // numerico
                        $response[$fld->seccion][$fld->etiqueta]->valor[$valor->fila . '_' . $valor->col] = (object) ['tipo' => $valor->tipo_campo, 'valor' => $valor->valor_numerico, 'header' => $valor->etiqueta];
                    } elseif ($valor->tipo_campo == 'D') {
                        // fecha
                        $response[$fld->seccion][$fld->etiqueta]->valor[$valor->fila . '_' . $valor->col] = (object) ['tipo' => $valor->tipo_campo, 'valor' => $valor->valor_fecha_str, 'valor_fecha' => new \DateTime($valor->valor_fecha), 'header' => $valor->etiqueta];
                    } elseif ($valor->tipo_campo == 'B') {
                        $response[$fld->seccion][$fld->etiqueta]->valor[$valor->fila . '_' . $valor->col] = (object) ['tipo' => $valor->tipo_campo, 'valor' => (($valor->valor_numerico > 0) ? true : false), 'header' => $valor->etiqueta];
                    }
                }
                //
            } elseif (($fld->tipo_campo == 'S' || $fld->tipo_campo == 'R' || $fld->tipo_campo == 'C')) {
                // selector | radio | checkbox ( mismo mecanismo para determinar el caso )
                $valores = $this->opcionSelect($fld->opciones); // se obtienen las opciones
                if (!empty($valores)) {
                    $clave_txt = array_search($fld->valor_texto, $valores['val']);
                    if ($clave_txt) {
                        $fld->valor_texto = $valores['txt'][$clave_txt];
                    } else {
                        $fld->valor_texto = NULL;
                    }
                }
                //
                $response[$fld->seccion][$fld->etiqueta] = (object) ['tipo' => $fld->tipo_campo, 'valor' => $fld->valor_texto];
            } elseif ($fld->tipo_campo == 'T' || $fld->tipo_campo == 'M') {
                // texto | texto largo
                $response[$fld->seccion][$fld->etiqueta] = (object) ['tipo' => $fld->tipo_campo, 'valor' => $fld->valor_texto];
            } elseif ($fld->tipo_campo == 'N') {
                // numerico
                $response[$fld->seccion][$fld->etiqueta] = (object) ['tipo' => $fld->tipo_campo, 'valor' => $fld->valor_numerico];
            } elseif ($fld->tipo_campo == 'D') {
                // fecha
                $response[$fld->seccion][$fld->etiqueta] = (object) ['tipo' => $fld->tipo_campo, 'valor' => $fld->valor_fecha_str];
            } elseif ($fld->tipo_campo == 'F') {
                // archivo
                $response[$fld->seccion][$fld->etiqueta] = (object) ['tipo' => $fld->tipo_campo, 'valor' => $this->archivosTipoDoc($docid)];
            }
            //
            $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;
            }
        }
        //
        //$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 $response;
    }

    /**
     * Funcion que procesa las opciones de los campos de select
     * @access private
     * @param string las opciones de los campos select del sistema de documentos
     * @return array el array de las claves y las opciones del sistemas de documentos
     */
    private function opcionSelect($opciones) {
        $valores = [];
        //
        if (strlen($opciones) > 0) {
            $r = explode("^", $opciones);
            $txt = [];
            $val = [];
            if (sizeof($r) >= 2) {
                $txt = explode("|", $r[0]);
                $val = explode("|", $r[1]);
            }
        }
        //
        $valores['txt'] = $txt;
        $valores['val'] = $val;
        //
        return $valores;
    }

    /**
     * Función que devuelve los imagenes de un tipo doc
     * se usan la contraparte , gestion y cliente de las propiedades de la clase
     * @access private
     * @param string doc id 
     * @param string archivos a buscar : ('I','P') ('Imagenes','PDF')
     * @return array la lista de archivos disponibles del doc_id
     */
    private function archivosTipoDoc($doc_id, $tipo_archivo = 'I') {
        $archivos = array();
        //
        if ($tipo_archivo == 'I') {
            // Imagenes
            $path = env('PATH_DOCUMENTOS') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . $doc_id . '.png';
            if (file_exists($path)) {
                array_push($archivos, env('RUTA_DOCUMENTOS_CLOUD') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . $doc_id . '.png');
            }
            //
            for ($i = 0; $i < 100; $i++) {
                $path = env('PATH_DOCUMENTOS') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . $doc_id . '-' . $i . '.png';
                if (file_exists($path)) {
                    array_push($archivos, env('RUTA_DOCUMENTOS_CLOUD') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . $doc_id . '-' . $i . '.png');
                } else {
                    break;
                }
            }
        }
        //
        return $archivos;
    }

    /**
     * Función que devuelve las imagenes del tax id
     * que se usan en la contraparte y la gestion
     * @access private
     * @return object
     */
    private function obtenerTaxIDFotos() {
        $path_dni_frente = env('PATH_DOCUMENTOS') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . '1_dni_' . $this->contraparte . '_' . $this->gestion . '.png';
        $path_dni_dorso = env('PATH_DOCUMENTOS') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . '2_dni_' . $this->contraparte . '_' . $this->gestion . '.png';
        $response = new \stdClass;
        $response->frente_existe = false;
        $response->dorso_existe = false;
        //
        if (file_exists($path_dni_frente)) {
            $response->frente_existe = true;
            $response->frente_path = env('RUTA_DOCUMENTOS') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . '1_dni_' . $this->contraparte . '_' . $this->gestion . '.png';
        }
        //
        if (file_exists($path_dni_dorso)) {
            $response->dorso_existe = true;
            $response->dorso_path = env('RUTA_DOCUMENTOS') . DIRECTORY_SEPARATOR . $this->cliente . DIRECTORY_SEPARATOR . $this->contraparte . DIRECTORY_SEPARATOR . $this->gestion . DIRECTORY_SEPARATOR . '2_dni_' . $this->contraparte . '_' . $this->gestion . '.png';
        }
        //
        return $response;
    }


    //////////////// COMPONENTES HR /////////////////
    public function resultado_hit_nohit() {
        $iv_busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $this->contraparte), 'selectOne');
        //
        $hit = false;
        $archivos = null;
        //
        $docs = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('DOCUMENTOS_GESTION_ACTIVA', $this->contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
        foreach ($docs as $doc) {
            if ($doc->valoracion) {
                $hit = true;
            }
        }
        //
        if (!$hit) {
            $archivos = $this->obtenerTaxIDFotos();
        }
        //
        return view('/redaccion/secciones/resultado_no_hit', compact('iv_busqueda', 'hit', 'archivos'));
        //
        /* if ( $this->contraparte == '205383' ){
                  // NO HIT
                  
              } else {
                  return view('/redaccion/secciones/resultado_hit',compact('iv_busqueda'));
              } */

    }

    public function hitSummary() {
        // return view('/redaccion/secciones/no_hit_summary');
        $docs = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('DOCUMENTOS_GESTION_ACTIVA', $this->contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
        return view('/redaccion/secciones/hit_summary')->with(compact('docs'));
    }

    public function judicialResults() {
        $doc = $this->docData(); // doc
        $campos_doc = $this->generarCamposDocumento($doc->doc_id);
        //
        $doc_es = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc->doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
        $valoracion = $doc_es->valoracion;
        //
        Traducciones::$blade = 'judicial_data';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        //
        if ($valoracion > 0) {
            return view('/redaccion/secciones/judicial_data')->with(compact('campos_doc'));
        }
    }

    public function Inpec() {
        $doc = $this->docData(); // doc
        $campos_doc = $this->generarCamposDocumento($doc->doc_id);
        //
        $doc_es = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc->doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
        $valoracion = $doc_es->valoracion;
        //
        $sin_datos = true;
        //
        foreach ($campos_doc as $seccion) {
            foreach ($seccion as $nombre_seccion => $campo) {
                if ($campo->tipo == 'G') {
                    if (isset($campo->valor['1_1']) && $campo->valor['1_1']->valor) {
                        $sin_datos = false;
                        break;
                    }
                }
            }
            //
            break;
        }
        //
        Traducciones::$blade = 'inpec';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        //
        if (!$sin_datos && ($valoracion > 0)) {
            return view('/redaccion/secciones/inpec')->with(compact('campos_doc'));
        }
    }

    public function procuraduria() {
        $doc = $this->docData(); // doc
        $campos_doc = $this->generarCamposDocumento($doc->doc_id);
        //
        $doc_es = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc->doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
        $valoracion = $doc_es->valoracion;
        //
        $sin_datos = true;
        //
        $siris = [];
        $inhabilidades = [];
        $this->datosProcuraduria($campos_doc, $siris, $inhabilidades);
        //
        if (!empty($siris) && $valoracion > 0) {
            return view('/redaccion/secciones/procuraduria')->with(compact('siris', 'inhabilidades'));
        }
    }

    private function datosProcuraduria($datos, &$siris, &$inhabilidades) {
        $siris = [];
        //
        foreach ($datos as $seccion) {
            foreach ($seccion as $nombre_campo => $campo) {
                if ($campo->id == '1330') {
                    for ($i = 1; $i <= $campo->fila; $i++) {
                        // SIRIS
                        if ($campo->valor[$i . '_1']->valor) {
                            if ($campo->valor[$i . '_2']->valor != '1') {
                                $siris[$campo->valor[$i . '_1']->valor] = NULL;
                            }
                        }
                    }
                    //
                }
            }
        }
        //
        foreach ($datos as $seccion_nombre => $seccion) {
            foreach ($seccion as $nombre_campo => $campo) {
                if ($campo->id == '1331') {
                    for ($i = 1; $i <= $campo->fila; $i++) {
                        $siri = $campo->valor[$i . '_1']->valor ?? NULL;
                        // Sanciones
                        if ($siri) {
                            $siris[$siri]['sanciones'][$campo->valor[$i . '_2']->header][] = $campo->valor[$i . '_2']->valor;
                            $siris[$siri]['sanciones'][$campo->valor[$i . '_3']->header][] = $campo->valor[$i . '_3']->valor;
                            $siris[$siri]['sanciones'][$campo->valor[$i . '_4']->header][] = $campo->valor[$i . '_4']->valor;
                            $siris[$siri]['sanciones'][$campo->valor[$i . '_5']->header][] = $campo->valor[$i . '_5']->valor;
                        }
                    }
                } elseif ($campo->id == '1332') {
                    for ($i = 1; $i <= $campo->fila; $i++) {
                        $siri = $campo->valor[$i . '_1']->valor ?? NULL;
                        // Delitos
                        if ($siri) {
                            $siris[$siri]['delitos'][$campo->valor[$i . '_2']->header][] = $campo->valor[$i . '_2']->valor;
                        }
                    }
                } elseif ($campo->id == '1333') {
                    for ($i = 1; $i <= $campo->fila; $i++) {
                        $siri = $campo->valor[$i . '_1']->valor ?? NULL;
                        // Instancias
                        if ($siri) {
                            $siris[$siri]['instancias'][$campo->valor[$i . '_2']->header][] = $campo->valor[$i . '_2']->valor;
                            $siris[$siri]['instancias'][$campo->valor[$i . '_3']->header][] = $campo->valor[$i . '_3']->valor;
                            $siris[$siri]['instancias'][$campo->valor[$i . '_4']->header][] = $campo->valor[$i . '_4']->valor_fecha;
                            $siris[$siri]['instancias'][$campo->valor[$i . '_5']->header][] = $campo->valor[$i . '_5']->valor_fecha;
                        }
                    }
                } elseif ($campo->id == '1334') {
                    for ($i = 1; $i <= $campo->fila; $i++) {
                        $siri = $campo->valor[$i . '_1']->valor ?? NULL;
                        // Eventos
                        if ($siri) {
                            $siris[$siri]['eventos'][$campo->valor[$i . '_2']->header][] = $campo->valor[$i . '_2']->valor;
                            $siris[$siri]['eventos'][$campo->valor[$i . '_3']->header][] = $campo->valor[$i . '_3']->valor;
                            $siris[$siri]['eventos'][$campo->valor[$i . '_4']->header][] = $campo->valor[$i . '_4']->valor;
                            $siris[$siri]['eventos'][$campo->valor[$i . '_5']->header][] = $campo->valor[$i . '_5']->valor_fecha;
                        }
                    }
                } elseif ($campo->id == '1335') {
                    for ($i = 1; $i <= $campo->fila; $i++) {
                        $siri = $campo->valor[$i . '_1']->valor ?? NULL;
                        //
                        if ($siri) {
                            $inhabilidades[$siri][$campo->valor[$i . '_2']->header] = $campo->valor[$i . '_2']->valor;
                            $inhabilidades[$siri][$campo->valor[$i . '_3']->header] = $campo->valor[$i . '_3']->valor;
                            $inhabilidades[$siri][$campo->valor[$i . '_4']->header] = $campo->valor[$i . '_4']->valor_fecha;
                            $inhabilidades[$siri][$campo->valor[$i . '_5']->header] = $campo->valor[$i . '_5']->valor_fecha;
                        }
                    }
                    // inhabilidades
                }
            }
        }
    }

    // ---- COSTA RICA

    public function judicialDataCR() {
        $doc = $this->docData(); // doc
        $campos_doc = $this->generarCamposDocumento($doc->doc_id);
        //
        $doc_es = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc->doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
        $valoracion = $doc_es->valoracion;
        //
        Traducciones::$blade = 'judicial_data_cr';
        SQLConnection::obtenerTraducciones(Traducciones::$blade);
        //
        if ($valoracion > 0) {
            return view('/redaccion/secciones/judicial_data_cr')->with(compact('campos_doc'));
        }
    }

    public function reseniaEmpresa() {
        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

        $dossierdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $this->contraparte, NULL, '2002'), 'selectOne');
        // dd($dossierdata);
        return view('/redaccion/secciones/resenia_empresa')->with(compact('qcontrap', 'dossierdata'));
    }

    public function misionValoresEmpresa() {
        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        $dossierdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $this->contraparte, NULL, '2002'), 'selectOne');
        return view(view: '/redaccion/secciones/mision_empresa')->with(compact('qcontrap', 'dossierdata'));
    }

    public function dossierResume() {
        $id = $this->contraparte;
        $producto = 2002;
        // self::validateDossierPath($id);
        //
        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        //
        $familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $id, null, null, null, 1, null), 'selectOne');
        $logo_name = null;
        $file_exists = false;
        if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
            $logo_name = $id . '.png';
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                $logo_name = $id . '.jpg';
            }
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                $logo_name = $id . '.gif';
            }
        }
        //
        $dossier_file = '';
        $dossier_url = '';
        $dossierdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_dossier_contraparte', $id), 'selectOne');
        $dossierdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $id, NULL, $producto), 'selectOne');
        /* Busco informe en producción asociado al producto Dossier para la contraparte */
        $informe = SQLConnection::backendStoreProcedure('LN_demo_', array('datos_informe', $id, NULL, $producto), 'selectOne');
        $tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe', $id, NULL, $producto), 'select');
        $prioridades = SQLConnection::backendStoreProcedure('LN_demo_', array('prioridades'), 'select');
        //
        // 
        $gestion = '';
        if (isset($informe->informe) && $informe->informe != null) {
            $gestion = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', $id, $informe->informe), 'selectOne');
        }
        // 05/04/2024 - Agregué un path con nomeclaura CLIENTE/CONTRAPARTE/GESTION/ARCHIVO
        if (isset($dossierdata->gestion) && file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $contrap->cliente . '/' . $id . '/' . $dossierdata->gestion . '/' . $dossierdata->gestion . '.pdf')) {
            $dossier_file = $dossierdata->gestion . '.pdf';
            $dossier_url = env('RUTA_DOCUMENTOS') . '/dossier/' . $contrap->cliente . '/' . $id . '/' . $dossierdata->gestion . '/' . $dossierdata->gestion . '.pdf';
        } elseif (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf')) {
            $dossier_file = $id . '.pdf';
            $dossier_url = env('RUTA_DOCUMENTOS') . '/dossier/' . $id . '.pdf';
        }
        // FIN MOD - DIEGO VILLARROEL
        $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'SCORE_DOSSIER'), 'selectOne');
        $nivelr = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'NIVEL_RIESGO'), 'selectOne');
        $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'DEP_ECON'), 'selectOne');
        return view('/redaccion/secciones/dossier_resumen')->with(compact(['contrap', 'producto', 'logo_name', 'dossierdemo', 'dossierdata', 'score', 'nivelr', 'depecon', 'dossier_file', 'dossier_url']));
    }

    public function briefDirectivos() {
        $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $this->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

        $socios_directores = DB::select('EXEC dbo.obtener_socios_directores_test ?,?', array($qcontrap->numero, $qcontrap->numero[0] == '3' ? 'J' : 'F'));

        return view('/redaccion/secciones/brief_directivos');

    }
}