<?php

namespace App\Http\Controllers;

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

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

class NuevaVerificacionDocumentosLED extends Controller {
    // FUNCION GENERICA QUE RECIBE LOS DATOS DEL DOCUMENTO Y LO DEVUELVE A LA VISTA
    public static function verificarSetDocumentosNuevos() {
        $regEx = "/^[0-9,]+$/";
        // 
        if (Misc::validacionesGenerica($_POST['doc_id'], 'numero') || preg_match($regEx, $_POST['lista_doc_id'])) {
            $docid = $_POST['doc_id'];
            $set = $_POST['set'];
            $es_revisado = $_POST['es_revisado'];
            $integ_carga = !empty($_POST['integridad_carga']) ? $_POST['integridad_carga'] : '0';
            $integ_verif = !empty($_POST['integridad_verificado']) ? $_POST['integridad_verificado'] : '0';
            $integ_rech = !empty($_POST['integridad_rechazado']) ? $_POST['integridad_rechazado'] : '0';
            //-- NUEVO IF ELSE --//
            /* if( $set == 'datos-personales' || $set == 'datos-contacto' || 
                         $set == 'domicilio' || $set == 'perfil-educativo' || $set == 'experiencia-laboral' 
                     ){
                         return self::verificarDocumentosfaconLED($docid,$es_revisado,1,$set,$integ_carga,$integ_verif,$integ_rech);
                     } else if( $set == 'movilidad-propia' || $set == 'grupo-familiar' || 
                         $set == 'contacto-emergencia' || $set == 'antecedentes-penales' || 
                         $set == 'socioambientes' || $set == 'aportado-candidatos' || 
                         $set == 'curriculum-vitae' || $set == 'antecedentes-comerciales' ||
                         $set == 'certificacion-negativa' || $set == 'codem' || 
                         $set == 'autorizacion-academica' || $set == 'licencia-conducir' ||  
                         $set == 'datos-personales-confidenciales' || $set == 'referencia-laboral' ||
                         $set == 'referencia-academica' || $set == 'historial-laboral' || $set == 'carga-xls' 
                     ){
                         return self::verificarDocumentosfaconLED($docid,$es_revisado,0,$set,$integ_carga,$integ_verif,$integ_rech);
                     } else {
                         return 'error';
                     } */
            //-- 			
            switch ($set) {
                case 'datos-personales':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 1, 'datos-personales', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'movilidad-propia':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'movilidad-propia', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'datos-contacto':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 1, 'datos_contacto', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'grupo-familiar':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'grupo-familiar', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'domicilio':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 1, 'domicilio', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'perfil-educativo':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 1, 'perfil-academico', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'experiencia-laboral':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 1, 'experiencia-laboral', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'contacto-emergencia':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'contacto-emergencia', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'antecedentes-penales':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'antecedentes-penales', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'socioambientes':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'socioambientes', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'aportado-candidatos':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'aportado-candidatos', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'curriculum-vitae':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'curriculum-vitae', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'antecedentes-comerciales':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'antecedentes-comerciales', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'certificacion-negativa':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'certificacion-negativa', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'codem':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'codem', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'autorizacion-academica':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'autorizacion-academica', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'licencia-conducir':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'licencia-conducir', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'datos-personales-confidenciales':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'datos-personales-confidenciales', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'referencia-laboral':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'referencia-laboral', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'historial-laboral':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'historial-laboral', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'carga-xls':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'carga-xls', $integ_carga, $integ_verif, $integ_rech);
                    break;
                case 'referencia-academica':
                    return self::verificarDocumentosfaconLED($docid, $es_revisado, 0, 'referencia-academica', $integ_carga, $integ_verif, $integ_rech);
                    break;
                default:
                    break;
            }
        } else {
            return 'error';
        }
    }

    // FUNCION GENERICA QUE DEVUELVE LOS DOCUMETNOS DEL FACON
    public static function verificarDocumentosfaconLED($docid, $es_revisado, $doc_group = 0, $seccion = '', $integ_carga = 0, $integ_verif = 0, $integ_rech = 0) {
        $dependencias_docs = [];
        $doc = '';

        if (!is_array($docid)) {
            if ($doc_group > 0) {
                $dependencias_docs = SQLConnection::backendStoreProcedure('LN_docs_AGB', array('SELECT', $docid, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 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');
            } else {
                $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');
        //** Documento foto de Inquiro vitae
        $foto_perfil_url = NULL;
        $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $doc->contraparte), 'selectOne');
        if ($doc->tipo_doc == env('DOC_ID_FOTO_PERFIL')) {
            if (!empty($busqueda)) {
                $foto_perfil_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->foto;
                $foto_perfil_exists = file_exists(env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->foto);
                if (!$foto_perfil_exists) {
                    $foto_perfil_url = NULL;
                }
            }
        }
        //
        $secciones = [];
        //
        $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;
        }
        $formula_dep_econ = false;
        //------ DATOS DE ARCHIVO EN FORMATO JPG
        $file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.jpg';
        $file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.jpg';
        $file_exists = file_exists($file_path);
        //
        if (!$file_exists) {
            $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);
        }
        //
        $iva = '';
        if ($formula_dep_econ === true) {
            /* Si en el documento hay un campo donde debe aplicar la formula de dependencia económica, busco el campo de alícuota de iva */
            $iva = SQLConnection::backendStoreProcedure('LN_docs_valores', array($doc->contraparte, 'ALICUOTA-IVA', $doc->doc_id), 'selectOne');
        }
        //
        $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);
        //
        $paises = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
        $identificadores = SQLConnection::backendStoreProcedure('backend_obtener_identificadores_pais', array($doc->country_code), 'select');
        // Para registrar TAX ID y constitución de sociedades 
        $cargos = SQLConnection::backendStoreProcedure('obtener_Cargos', [], 'select');
        $relaciones = DB::select('select * from tipo_vinculaciones order by id_tipo_vinculacion', array());
        $campo_tabla = NULL;
        $columnas = NULL;
        $tabla = [];
        //
        $doc_siguiente = [];
        $faltantes = SQLConnection::backendStoreProcedure('LN_docs_AGB', array('documentacion_ingresada', NULL, $doc->cliente, $doc->contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $doc->gestion, NULL), 'select');
        //
        foreach ($faltantes as $siguiente) {
            if ($siguiente->estado_doc == 'I' && $doc->doc_id != $siguiente->doc_id && is_null($siguiente->tipo_doc_padre)) {
                $doc_siguiente = $siguiente;
                break;
            }
        }
        //
        if (!empty($doc_siguiente)) {
            $docAux = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc_siguiente->doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
            $doc_siguiente->revisado = $docAux->revisado;
            if ($doc_siguiente->nombre_tipo_doc == 'MOVILIDAD PROPIA') {
                $doc_siguiente->set = 'movilidad-propia';
            } elseif ($doc_siguiente->tipo_doc == env('DOC_ID_ZONA_RESIDENCIA')) {
                $doc_siguiente->set = 'domicilio';
            } elseif ($doc_siguiente->tipo_doc == env('DOC_ID_DATOS_PERSONALES')) {
                $doc_siguiente->set = 'datos-personales';
            } elseif ($doc_siguiente->tipo_doc == env('DOC_ID_GRUPO_FAMILIAR')) {
                $doc_siguiente->set = 'grupo-familiar';
            } elseif ($doc_siguiente->tipo_doc == env('DOC_ID_EXPERIENCIA_LABORAL')) {
                $doc_siguiente->set = 'experiencia-laboral';
            } elseif ($doc_siguiente->tipo_doc == env('DOC_ID_CONTACTO_EMERGENCIA')) {
                $doc_siguiente->set = 'contacto-emergencia';
            } elseif ($doc_siguiente->tipo_doc == env('DOC_ID_PERFIL_EDUCATIVO_INICIAL')) {
                $doc_siguiente->set = 'perfil-educativo';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_ANTECEDENTES_PENALES')) {
                $doc_siguiente->set = 'antecedentes-penales';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_SOCIOAMBIENTES')) {
                $doc_siguiente->set = 'socioambientes';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_APORTADO_CANDIDATO')) {
                $doc_siguiente->set = 'aportado-candidatos';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_CV')) {
                $doc_siguiente->set = 'curriculum-vitae';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_ANTECEDENTES_COMERCIALES')) {
                $doc_siguiente->set = 'antecedentes-comerciales';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_CERTIFICACION_NEGATIVA')) {
                $doc_siguiente->set = 'certificacion-negativa';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_CODEM')) {
                $doc_siguiente->set = 'codem';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_AUTORIZACION_PERFIL_ACADEMICO')) {
                $doc_siguiente->set = 'autorizacion-academica';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_LICENCIA_CONDUCIR')) {
                $doc_siguiente->set = 'licencia-conducir';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_DATOS_PERSONALES_CONFIDENCIALES')) {
                $doc_siguiente->set = 'datos-personales-confidenciales';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_HISTORIAL_LABORAL')) {
                $doc_siguiente->set = 'historial-laboral';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_REFERENCIA_LABORAL')) {
                $doc_siguiente->set = 'referencia-laboral';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_REFERENCIAS_ACADEMICAS')) {
                $doc_siguiente->set = 'referencia-academica';
            } elseif ($doc_siguiente->tipo_doc == env('TIPO_DOC_CARGA_XLS')) {
                $doc_siguiente->set = 'carga-xls';
            }

        }

        // ruta para el boton volver del navegador.
        $ruta = '/verifica-documentos-nuevo';
        // titulo del navegador dependiendo desde donde se lo llame.
        $titulo_navbar = 'Verificar Documento';
        // 
        //dd($docid, $doc, $secciones, $file_path, $file_url, $file_exists, $hay_campos, $hay_archivo, $formula_dep_econ, $iva, $search_array, $replace_array, $foto_perfil_url, $paises, $identificadores, $cargos, $relaciones, $campo_tabla, $columnas, $tabla,$es_revisado,$doc_group,$dependencias_docs,$seccion,$doc_siguiente,$integ_carga,$integ_verif,$integ_rech,$ruta,$titulo_navbar);
        return view('/verifica_doc_nuevo/documentos_nuevos/doc_facon_generico')->with(compact(['docid', 'doc', 'secciones', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'formula_dep_econ', 'iva', 'search_array', 'replace_array', 'foto_perfil_url', 'paises', 'identificadores', 'cargos', 'relaciones', 'campo_tabla', 'columnas', 'tabla', 'es_revisado', 'doc_group', 'dependencias_docs', 'seccion', 'doc_siguiente', 'integ_carga', 'integ_verif', 'integ_rech', 'ruta', 'titulo_navbar']));
    }

    // FUNCION QUE VA A VERIFICAR EL GRUPO DE DOCUMENTOS
    public static function verificarGrupoDocumentos() {
        // SE FILTRA EL ARRAY Y SE OBTIENEN LOS VALORES DE LOS DOC_IDS
        $docs = array_filter($_POST, function ($doc) {
            if (strpos($doc, 'docs_') !== false) {
                return $doc;
            }
        }, ARRAY_FILTER_USE_KEY);
        //
        foreach ($docs as $doc_name => $docid) {
            $doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
            $temp = SQLConnection::backendStoreProcedure('LN_docs_', array('VERIFICA_BACKEND', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, Session::get('usuario')->user_id), 'selectOne');
            if ($doc->tipo_doc == env('DOC_ID_EXPERIENCIA_LABORAL')) {
                // self::cargarDocReferencia($doc->doc_id,$doc->doc_id_refe);  // LN_docs_ DEBERIA TRAER EL DOC DE REFE
            }
            if ($docs->tipo_doc == env('DOC_ID_PERFIL_ACADEMICO_UNIVERSITARIO')) {
                // self::cargarDocReferencia($doc->doc_id,$doc->doc_id_refe);  // LN_docs_ DEBERIA TRAER EL DOC DE REFE
            }
            $temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $doc->contraparte), 'selectOne');
            /* Chequeo de finalización de carga en caso de existir un report activo en gestión en producción */
            $temp = SQLConnection::backendStoreProcedure('LN_informes', array('check_docs_ok', $doc->contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');
        }
        //--- REDIRECCION SEGUN CLIENTE
        if (Session::get('es_bbva') == '1') {
            return redirect('/verifica-documentos-bbva-nuevo');
        } else {
            return redirect('/verifica-documentos-nuevo');
        }
    }

}
