<?php

use App\Http\Controllers\ApiController;
use App\Http\Controllers\ApiControllerIC;
use App\Http\Controllers\ApiControllerV1;
use App\Http\Controllers\RenaperController;
use App\Http\Controllers\MainController;
use App\Http\Controllers\AFIPController;
use App\Http\Controllers\DataMatrixApiController;
use App\Http\Controllers\DataCleaningController;
use App\Http\Controllers\TruliooController;
use App\Http\Controllers\CameController;
use App\Http\Controllers\PrensaController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ApiControllerV4;

Route::group(['domain' => env('API_ROUTE')], function () {
    Route::group(['middleware' => ['cors', 'api_auth'], 'prefix' => 'v1'], function () {

        Route::controller(ApiControllerV1::class)-> group(function () {
            Route::post('/prueba-compara-domicilios/json', 'prueba_compara_domicilios');

            Route::post('/batch-info/json', 'monsantoInfo');
            Route::post('/validacion-gbg/json', 'validacionGBG_v2');        	
            Route::post('/validacion-gbg_v2/json', 'validacionGBG_v2');             //--> NUEVA RUTA DE GBG		
            Route::post('/validacion-gbg_v2_2/json', 'validacionGBG_v2_marita');    //--> NUEVA RUTA DE GBG		

            Route::post('/idauthentication', 'idauthentication');                   // ---> NUEVA RUTA VALIDACION ADELGAZADA 21-12-2023
            Route::post('/addressvalidation', 'addressvalidation');                 // ---> NUEVA RUTA VALIDACION DOMICILIO  05-01-2024
            //
            Route::post('/id-validation/json', 'validacionGBG_v2');
            Route::post('/id-validation-prueba/json', 'validacionGBG_v2_prueba');
            Route::post('/informe-comercial-completo/json', 'ObtenerInformeComercialCompleto');
            Route::post('/icreport', 'InformeComercialTrad');
            Route::post('/encriptar-usuario/json', 'encriptarUsuario');
            Route::post('/control-acceso/json', 'obtenerControlacceso');
            Route::post('/enriquecimiento-cuit/json', 'cuitEnrichment');
            Route::post('/ic/json', 'obtenerIC');
            Route::post('/ic/xml', 'obtenerICXML2');
            Route::post('/bcra/json', 'obtenerChequesBancos');
            Route::post('/buscar-persona/json', 'buscarPersona');
            Route::post('/actualizar-afip/json', 'actualizarAFIP');
            Route::post('/buscar-domicilios/json', 'buscarDomicilios'); // esto no funciona en el servidor
            Route::post('/buscar-vinculaciones/json', 'buscarVinculaciones');
            Route::post('/buscar-empleadores/json', 'buscarEmpleadores');
            Route::post('/info-cuit/json', 'obtenerInfoCuitAmpliada');
            Route::post('/info-cuit-dni/json', 'obtenerInfoCuitDni');
            Route::post('/validacion-cuit/json', 'obtenerValidacionCUIT');
            Route::post('/id-verification/json', 'obtenerIDVerification');
            Route::post('/imperium-read-cuit/json', 'imperiumextraercuit');
            Route::post('/empleadores-cuit', 'empleadoresCUIT');

            Route::post('/busqueda-padron', 'busquedaPadron');
        });
    });

    Route::group(['middleware' => ['api_auth'], 'prefix' => 'v1'], function() {
        Route::controller(ApiControllerV1::class)->group(function () {
            Route::post('/smart-alert/xml', 'obtenerSmartAlert');
            Route::post('/info-cuit-ampliada/json', 'obtenerInfoDniCuitAmpliada'); // no funciona por AFIPController
            Route::post('/ic/socios-directores/json', 'obtenerSociosDirectores');
            
            //creditsafe
            Route::post('/search/json', 'obtenerBuscador');
        });

        Route::controller(RenaperController::class)->group(function () {
            Route::post('/nacionalidad/consulta', 'obtenerUltimoEjemplarUno');
        });
    }); 

    // -- creditsafe
    Route::group(['middleware' => ['api_auth'], 'prefix' => 'creditsafe'], function() {
        Route::controller(DataMatrixApiController::class)->group(function () {
            Route::post('/ic/json', 'obtenerDatos');
        });
    });

    // -- trulioo
    Route::group(['middleware' => ['api_auth'], 'prefix' => 'trulioo'], function() {
        Route::controller(TruliooController::class)->group(function () {
            Route::post('/json', 'generarRespuesta');
        });
    });
});

// Sin domain => env('API_ROUTE')
Route::group(['middleware' => ['cors', 'api_auth'], 'prefix' => 'v1'], function () {
    
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::post('/prueba-compara-domicilios/json', 'prueba_compara_domicilios');
        Route::post('/validacion-gbg/json', 'validacionGBG_v2'); 
        Route::post('/validacion-gbg_v2/json', 'validacionGBG_v2');
        Route::post('/idauthentication', 'idauthentication');                   // ---> NUEVA RUTA VALIDACION ADELGAZADA 21-12-2023
        Route::post('/addressvalidation', 'addressvalidation'); 
        Route::post('/id-validation/json', 'validacionGBG_v2');
        Route::post('/id-validation-notaxid/json', 'validacionnotaxid');
        Route::post('/id-validation-notaxid_cla/json', 'validacionnotaxid_cla');
        Route::post('/la-padron/json', 'valida_la_padrones');
        Route::post('/control-acceso', 'obtenerControlacceso');
        Route::post('/informe-comercial-completo/json', 'ObtenerInformeComercialCompleto');
        Route::post('/icreport', 'InformeComercialTrad');
        Route::post('/mati/validacion-datos/json', 'validacionMati');
        Route::post('/bcra/json', 'obtenerChequesBancos');
        Route::post('/buscar-persona/json', 'buscarPersona');
        Route::post('/actualizar-afip/json', 'actualizarAFIP');
        Route::post('/buscar-domicilios/json', 'buscarDomicilios');
        Route::post('/buscar-vinculaciones/json', 'buscarVinculaciones');
        Route::post('/buscar-empleadores/json', 'buscarEmpleadores');
        Route::post('/info-cuit/json', 'obtenerInfoCuitAmpliada');
        Route::post('/validacion-cuit/json', 'obtenerValidacionCUIT');
        Route::post('/id-verification/json', 'obtenerIDVerification');
        Route::post('/smart-alert/xml', 'obtenerSmartAlert');

        Route::post('/info-cuit-ampliada/json', 'obtenerInfoDniCuitAmpliada'); // no funciona por AFIPController
        Route::post('/ic/socios-directores/json', 'obtenerSociosDirectores');
        Route::post('/info-cuit-dni/json', 'obtenerInfoCuitDni');
        //creditsafe
        Route::post('/search/json', 'obtenerBuscador');

        Route::post('/imperium-read-cuit/json', 'imperiumextraercuit'); // TODO: PREGUNTAR
        Route::post('/alta-edictos-ai/json', 'alta_edictos_txt_AI'); //TODO: PREGUNTAR
        Route::post('/api-bcra/json', 'apiBcra');
        Route::post('/id-validation2/json', 'validacionGBG_v2');
        Route::post('/id-validation-prueba/json', 'validacionGBG_v2_prueba');
        Route::post('/mati_cla/validacion-datos/json', 'validacionMati_cla'); // TODO:llama a una funcion que no existe
        //Diego
        Route::post('/fidecheck/json', 'obtenerApiPEP'); // no funciona por AFIPController
        //--  TEST NUEVO WS  --//
        Route::post('/fidecheck/json2', 'obtenerApiPEP_full');
        Route::post('/imperium-acceso-data', 'imperiumControlAccesoData');
        //-- MONSANTO BAYER IC XML USANDO /API/V1/IC/XML 
        Route::post('/ic/xml', 'obtenerICXML3');

        // DIEGO - RUTA PARA API PADRON
        Route::post('/busqueda-padron', 'busquedaPadron');
        // API Empleados
        Route::post('/empleadores-cuit', 'empleadoresCUIT');
    });
    
    Route::controller(ApiControllerIC::class)->group(function () {
        Route::post('/icformales', 'ICFormales');
        Route::post('/icbalances', 'ICBalances');
        Route::post('/icmaparelaciones', 'ICMapaRelaciones');
        Route::post('/icrelaciones', 'ICRelaciones');
        Route::post('/icedictos', 'ICEdictos');
        Route::post('/icedictoshomonimos', 'ICEdictosHomonimos');
        Route::post('/icedictosmencionado', 'ICEdictosMencionado');
        Route::post('/icconsultas', 'ICConsultaspPorRamo');
        Route::post('/icseguros', 'ICSeguros');
        Route::post('/icmarcas', 'ICMarcas');
        Route::post('/icfiscales', 'ICFiscales');
        Route::post('/icmisaportes', 'ICMisAportes');
        Route::post('/icapocrifas', 'ICApocrifas');
        Route::post('/icarba', 'ICArba');
        Route::post('/icbancos', 'ICBancos');
        Route::post('/icbancoscard', 'ICBancosCard');
        Route::post('/icbancosgarantias', 'ICBancosGarantias');
        Route::post('/iccheques', 'ICCheques');
        Route::post('/iccomex', 'ICComex');
        Route::post('/iclegales', 'ICLegales');
        Route::post('/iclegaleshomonimos', 'ICLegalesHomonimos');
    });

    Route::controller(RenaperController::class)->group(function() {
        Route::post('/nacionalidad/consulta', 'obtenerUltimoEjemplarUno');
        Route::post('/face-match/json', 'obtenerFaceMatch');
        Route::post('/passp', 'obtenerRenaperPasaporte');
    });
});

Route::group(['middleware' => ['cors', 'api_auth'], 'prefix' => 'v2'], function () {
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::post('/prueba-compara-domicilios/json', 'prueba_compara_domicilios');
        Route::post('/id-validation/json', 'validacionGBG_v2');
        //--  TEST PARA NUEVA API MATI (BASICA Y EXTENDIDA)  --//
        Route::post('/govcheck-validation-validation/json', 'govcheck');
        Route::post('/extended-validation', 'extended');
        //-- API WORLDSYS NDE  --//
        Route::post('/ic-nse', 'icNse');
        Route::post('/ic/xml', 'obtenerICXML3');
        //--
        Route::post('/balance', 'calcularScoreBalance_v2');
        Route::post('/wsv2', 'consultaWs');
        Route::post('/compliancechk', 'consultaWs');
        Route::post('/govcheck-validation-v2', 'govcheck_v2');
        Route::post('/govcheck-validation', 'govcheck_v2');
        Route::post('/extended-validation-v2', 'extended_v2');
        Route::post('/personal-data', 'soloRenaper');
        Route::post('/govcheckplus', 'soloRenaperGovcheckPlus');
        Route::post('/idphone', 'idphone');
        Route::post('/icreport', 'InformeComercialTradV2');
    });
});

Route::group(['middleware' => ['cors', 'api_auth'], 'prefix' => 'v3'], function () {
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::post('/govcheck-validation', 'govcheck_v3');

        Route::post('/personal-data', 'personalCred');
        Route::post('/extended-validation', 'extended_v3');
        Route::post('/compliancechk', 'consultaWs_v3');
        Route::post('/icreport', 'InformeComercialTrad_v3');
        Route::post('/informe-comercial-completo/json', 'ObtenerInformeComercialCompleto_v3');
        Route::post('/addressvalidation', 'addressvalidation');
        Route::post('/personal-cred-val', 'personalCred');
        Route::post('/govcheckplus', 'personalCred');
        Route::post('/govcheckaddress', 'apiDomiciliosGovCheck');
        Route::post('/telephone', 'telefonosOriginal');
        Route::post('/telephone/alter', 'telefonosMongo');
    });

    Route::controller(RenaperController::class)->group(function () {
        Route::post('/face-match/json', 'obtenerFaceMatch_v3');
        Route::post('/face-match-stresstest/json', 'obtenerFaceMatch_v3_stresstest'); 
        Route::post('/face-match-test/json', 'obtenerFaceMatch_v3');
    });
});

// -- creditsafe
Route::group(['middleware' => ['api_auth'], 'prefix' => 'creditsafe'], function () {
    Route::controller(DataMatrixApiController::class)->group(function () {
        Route::post('/ic/json', 'obtenerDatos');
    });
});

// -- trulioo
Route::group(['middleware' => ['api_auth'], 'prefix' => 'trulioo'], function () {
    Route::controller(TruliooController::class)->group(function () {
        Route::post('/json', 'generarRespuesta');
    });
});

// -- Without middleware
Route::group(['middleware' => [], 'prefix' => 'v1'], function () {   
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::post('/facturacionEnc', 'pedidosFacturacionEnc');
        Route::post('/facturacionDet', 'pedidosFacturacionDet');

    });

    Route::controller(MainController::class)->group(function() {
        //mongo
        Route::post('/verificar-mongo', 'verificarMongo');
    });
});

// -- LLamados sólo INTERNOS
Route::group(['middleware' => [/*'IPAcess'*/],'prefix'=>'local/v1'],function(){
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::post('/informe-comercial-completo/json', 'ObtenerInformeComercialCompleto');
        Route::post('/icreport', 'InformeComercialTrad');
        Route::post('/informe-comercial/score/json', 'obtenerServicioScore');
        Route::post('/informe-comercial/score/balance/json', 'calcularScoreBalance');
        Route::post('/informe-comercial/score/sin-balance/json', 'calcularScoreSinBalance');
        Route::post('/imperium-read-cuit/json', 'imperiumextraercuit');
    });

    Route::controller(MainController::class)->group(function() {
        Route::get('informe-comercial/mongo', 'verificarMonitoreosEnMongo');
    });

    Route::controller(AFIPController::class)->group(function() {
        Route::get('/afip/obtener-padron/{cuit}', 'obtenerPadron');
    });
});

// -- Servicio Especial de informe comercial sábana
Route::group(['middleware' => ['cors','api_auth']], function () {
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::post('/ic/xml', 'obtenerICXML2');
        Route::post('/ic2', 'ICSinGraficos');
    });
    
    Route::controller(ApiController::class)->group(function () {
        //HTML Base
        Route::post('/ic', 'obtenerIC');
        
        //Secciones
        Route::post('/brief', 'obtenerBrief');
        Route::post('/sociedades', 'obtenerSociedades');
        Route::post('/formales', 'obtenerFormales');
        Route::post('/comerciales', 'obtenerComerciales');
        Route::post('/fiscales', 'obtenerFiscales');
        Route::post('/contables', 'obtenerContables');
        Route::post('/legales', 'obtenerLegales');
        Route::post('/comex', 'obtenerComex');
        Route::post('/bancos', 'obtenerBancos');
        Route::post('/prensa', 'obtenerPrensa');
        Route::post('/generar-contenido-exportable', 'generarContenidoExportableHTML');
        
        //multiidioma
        Route::post('/contables-multi', 'obtenerContablesMulti');


    });
});

// -- Came Inicio
Route::group(['middleware' => ['came','api_auth'], 'prefix'=> 'informe-comercial/v1'], function () {
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::get('/ObtenerTipoCredito', 'obtenerTipoCredito');
        Route::post('/ObtenerTipoCredito', 'obtenerTipoCredito');
        Route::get('/ObtenerCaracter', 'obtenerCaracter');
        Route::post('/ObtenerCaracter', 'obtenerCaracter');
        Route::get('/ObtenerMotivosRechazo', 'obtenerMotivosRechazo');
        Route::post('/ObtenerMotivosRechazo', 'obtenerMotivosRechazo');
        Route::get('/ObtenerMotivosAtraso', 'obtenerMotivosRechazo');
        Route::post('/ObtenerMotivosAtraso', 'obtenerMotivosRechazo');
        
        Route::post('/RechazarInforme', 'rechazarInforme');
        Route::post('/AcordarInforme', 'acordarInforme');
        Route::post('/DesafectarInforme', 'desafectarInforme');
        Route::post('/AfectarInforme', 'afectarInforme');
        Route::get('/VisualizarSemaforo', 'visualizarSemaforo');
        Route::post('/VisualizarSemaforo', 'visualizarSemaforo');
        Route::post('/RegistrarCliente', 'registrarCliente');
        Route::post('/AnularRegistro', 'anularRegistro');
        Route::get('/ListaPersonas2', 'listaPersonas');
        Route::post('/ListaPersonas2', 'listaPersonas');
        Route::post('/RegistrarUsuario', 'registrarUsuario');
    });

    Route::controller(CameController::class)->group(function () {
        Route::post('/PedirInforme', 'pedirInforme');
    });
});

Route::group(['middleware' => ['came', 'api_auth'], 'prefix' => 'circuito-cerrado/v1'], function() {
    Route::controller(CameController::class)->group(function () {
        Route::post('/Listar', 'listarCircuitoCerrado');
        Route::post('/Agregar', 'agregarCircuitoCerrado');
        Route::post('/Eliminar', 'eliminarCircuitoCerrado');
        Route::post('/Morosidad', 'modificarCircuitoCerrado');
    });
});
// -- Came Fin

Route::group(['middleware' => ['cors', 'api_auth']], function() {
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::get('/obtener-constancia-de-inscripcion', 'obtenerConstanciaPDF');
    });
});

//Route::group(['middleware' => [], 'prefix' => 'saas'], function() {
Route::group(['prefix'=>'saas'],function(){
    Route::controller(ApiControllerV1::class)->group(function () {
        // Hay que tomar el user_id y client_id de la sesión -- Modificar el ApiControllerV1
        Route::post('/insert-cliente', 'insertClienteSaas');
        Route::post('/update-cliente', 'updateClienteSaas');
        Route::post('/delete-cliente', 'deleteClienteSaas');
        Route::post('/select-cliente', 'selectClienteSaas');
        // Todos los clientes
        Route::post('/select-all-cliente', 'selectAllClienteSaas');
        
        Route::post('/insert-usuario', 'insertUsuarioSaas');
        Route::post('/update-usuario', 'updateUsuarioSaas');
        Route::post('/delete-usuario', 'deleteUsuarioSaas');
        Route::post('/select-usuario', 'selectUsuarioSaas');
        // Todos los usuarios de un cliente
        Route::post('/select-all-usuario', 'selectAllUsuarioSaas');
        
        Route::post('/insert-contrato', 'insertContratoSaas');
        Route::post('/update-contrato', 'updateContratoSaas');
        Route::post('/delete-contrato', 'deleteContratoSaas');
        Route::post('/select-contrato', 'selectContratoSaas');
        // Todos los contratos de un cliente
        Route::post('/select-all-contrato', 'selectAllContratoSaas');
        
        Route::post('/insert-usuario-contrato', 'insertUsuarioContratoSaas');
        Route::post('/update-usuario-contrato', 'updateUsuarioContratoSaas');
        Route::post('/delete-usuario-contrato', 'deleteUsuarioContratoSaas');
        Route::post('/select-usuario-contrato', 'selectUsuarioContratoSaas');
        // Todos los usuarios-contratos de un cliente
        Route::post('/select-all-usuario-contrato', 'selectAllUsuarioContratoSaas');
        // Todos los usuarios de un contrato
        Route::post('/select-all-usuario-contrato-x-contrato', 'selectAllUsuarioContratoXContratoSaas');
        // Todos los contratos de un usuario
        Route::post('/select-all-usuario-contrato-x-usuario', 'selectAllUsuarioContratoXUsuarioSaas');
        
        // Consulta de un CUIT
        Route::post('/consulta-cuit', 'consultaCuitSaas');
        Route::post('/verifica-cuit', 'verificaCuitSaas');
    });
});

Route::group(['middleware' => ['api_auth'], 'prefix'=> 'dcl'], function () {
    Route::controller(DataCleaningController::class)->group(function () {
        Route::post('/mixto', 'dclCompleto');
        Route::post('/juicios', 'dclJuicios');
        Route::post('/boletines', 'dclEdictos');
        Route::post('/ic', 'dclIC');
    });
});

Route::controller(ApiControllerV1::class)->group(function () {
    Route::post('/tyc-trazabilidad', 'insertarTyCTrazabilidad');
    
    //Servicios de Monitoreo AFIP + 2 comentados
    //Route::get('/servicios/monitoreo/mail', 'obtenerMonitoreoServicios');
    //Route::get('/prueba-ebanx', 'obtenerInfoDniCuitAmpliada');

    //nivel socieconomico
    Route::post('/nivel-socioeconomico/json', 'obtenerNivelSocioEconomico');

    Route::post('/html-to-pdf', 'htmlToPdf');
});

Route::controller(RenaperController::class)->group(function () {
    Route::post('/v1/face-match-demo/json', 'obtenerFaceMatchDemo');
});

Route::controller(AFIPController::class)->group(function () {
    Route::get('/afip', 'obtenerPadron');
});

Route::controller(ApiController::class)->group(function () {
    Route::get('/hash', 'obtenerHash');
});

Route::group(['middleware' => ['api_auth'], 'prefix' => 'ai'], function () {
    Route::controller(AIController::class)->group(function () {
        Route::post('/generar-json/edicto', 'generarJsonEdicto');
        Route::post('/generar-analisis/imagen', 'analisisImagen'); 
        Route::post('/generar-analisis/interno', 'aiInterno');  
        Route::post('/prensa', 'perplexityAi');  
    });
});

Route::group(['middleware' => ['api_auth'], 'prefix' => 'prensa'], function () {
    Route::controller(PrensaController::class)->group(function () {
        Route::post('/get_token', 'tokenPrensaExterno');
        Route::post('/get_prensa', 'prensaPorIdCanal');
        Route::post('/analisis', 'analisisPrensa');
    });
});

Route::group(['cors'], function () {
    Route::controller(ApiControllerV1::class)->group(function () {
        Route::post('/health', 'health');
    });
});

Route::controller(CreditsafeController::class)->group(function () {
    Route::post('/creditsafe/company/search-criteria', 'companySearchCriteria');
    Route::post('/creditsafe/company/search-report', 'companySearchReport');
    Route::post('/creditsafe/company/search-company', 'companySearch');        
});

Route::group(['prefix' => 'v4', 'middleware' => ['api_auth:strict', 'normalizar_inputs', 'cors']], function () {
Route::controller(ApiControllerV4::class)->group(function () {
    Route::post('govcheck-validation', 'govcheck');
    Route::post('personal-cred-val', 'personalCred');
    Route::post('face-match/json', 'facematch');
    Route::post('extended-validation', 'extended');
    Route::post('govcheckaddress', 'domiciliosGovcheck');
    Route::post('icreport', 'ObtenerInformeComercialCompleto_v4');
    Route::post('idvalidation', 'idValidation'); // api "gbg"
    Route::post('info-cuit-ampliada/json', 'obtenerInfoDniCuitAmpliada');
Route::post('govcheck-work', 'govcheckWork');
    });
});
