<?php
namespace App\Http\Controllers;

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

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

use DB;
use DateTime;
use stdClass;


class PEPController extends Controller {

	public static $id_resultados;

	private static function limpiarCaracteresEspeciales($string) {
		$string = htmlentities($string);
		$string = preg_replace('/\&(.)[^;]*;/', '\\1', $string);
		$textoLimpio = preg_replace('([^A-Za-z0-9 .,\(\)áéíóúÁÉÍÓÚñÑ\-\:])', '', $string);
		return $textoLimpio;
	}

	public static function obtenerPEP() {
		//print_r('obtenerPEP'); 

		// Para Pruebas
		/*
		$cuit='11111111111';
		$nombre_persona='Guzman';
		$id_padron=0;  
		$cuit='20131204699';
		$nombre_persona='MACRI MAURICIO';
		$id_padron=0;
		*/
		//

		$cuit = Request::input('cuit');
		$nombre_persona = Request::input('nombre_persona');
		$id_padron = Request::input('id_padron');
		$contraparte = (null !== Request::input('contraparte')) ? Request::input('contraparte') : '0';

		$resp = "OK";
		$datos_finales = self::procesar_pep($cuit, $nombre_persona, $id_padron);

		if (isset($datos_finales['error'])) {
			$resp = $datos_finales['error'];
		}
		//var_dump($datos_finales); die(); 
		return json_encode(array('error' => $resp,
			'tabla' => view('/led/led_tabla_fidecheck')->with(compact('cuit', 'nombre_persona', 'datos_finales', 'contraparte'))->render()
		));
	}

	private static function procesar_pep($cuit, $nombre_persona, $id_padron, $pais = 'AR') {
		//print_r('procesar_pep'); 
		/* NO ANDA WORLDSYS  
		  $datos_finales = []; 
		  $datos_finales[0] = new stdClass();
		  $datos_finales[0]->fidecheck = null; 
		  return $datos_finales; 
		SACAR CUANDO VUELVA A ANDAR */

		self::$id_resultados = [];
		$datos_finales = [];
		// Chequeo si lo consulte en los ultimos 30 dias
		//$ids =  SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_control', array($cuit,'30'),'select');
		$ids = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_control', array($cuit, '0'), 'select');
		foreach ($ids as $id) {
			self::$id_resultados[] = $id->id_resultado;
			$resp = 'OK';
		}
		//
		if (empty(self::$id_resultados)) {
			$id_llamadas = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_llamados_', array('insert', '0', $cuit, $nombre_persona, $id_padron, 'worldsys', null, null, null), 'selectOne');
			//$forzar_login = 'S'; 
			$forzar_login = 'N';

			$resp = '401'; // No hay token valido

			while ($resp == '401') {
				$resp = '0';
				$datos = self::obtenerDatosLogin(env('PEP_SERVICIO'), $forzar_login);
				$final_response = '';
				if (isset($datos->error)) {
					$error_llamada = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_llamados_', array('update', $id_llamadas->id, $cuit, $nombre_persona, $id_padron, 'worldsys', '500', 'Error Login', $datos->error), 'selectOne');
					$final_response = new stdClass();
					$final_response->error = $datos->error;
					$resp = $final_response->error;
					break;
					//return $final_response; 
				}
				if (isset($datos->token)) {
					$resp = self::obtenerDatosPEP($cuit, $nombre_persona, $id_padron, $datos->token, $id_llamadas->id, $pais);
					$forzar_login = 'S';
				}
			}
		}
		$datos_finales = [];
		if (!empty(self::$id_resultados)) {
			$ids = '';
			foreach (self::$id_resultados as $key => $id) {
				$ids .= ',' . $id;
			}
			//var_dump($ids); 
			$datos_finales = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_select', array($ids), 'select');
		} else {
			$datos_finales['error'] = $resp;
		}
		//var_dump($datos_finales); die(); 
		return $datos_finales;
	}


	/* -- Login -- */
	private static function obtenerDatosLogin($metodo, $forzar_login) {
		//print_r('obtenerDatosLogin'); 

		if ($forzar_login == "N") {
			$datos = SQLConnection::backendStoreProcedure('PEP_obtener_datos_login', array($metodo), 'selectOne');
		}

		if (!empty($datos) && $forzar_login == "N") {
			session::put($metodo, $datos);
			return $datos;
		} else {
			$login = self::obtenerLoginPEP($metodo);
			if ($login == true) {
				$datos = SQLConnection::backendStoreProcedure('PEP_obtener_datos_login', array($metodo), 'selectOne');
				session::put($metodo, $datos);
			} else {
				$datos = new stdClass();
				$datos->error = "No ha podido establecer la conexion con Worldsys";
			}
			return $datos;
		}
	}

	private static function obtenerLoginPEP($metodo) {
		//print_r('obtenerLoginPEP'); 
		$respuesta = self::PEPCall();
		$resp = json_decode($respuesta);
		if (isset($resp->token) && isset($resp->expiracion)) {
			$token = $resp->token;
			$expiracion = $resp->expiracion;
			$expiracion = new DateTime($expiracion);
			$expiracion = $expiracion->format('Y-m-d H:i:s');
			SQLConnection::backendStoreProcedure('PEP_guardar_autenticacion', array($token, '', $expiracion, $metodo));
			return true;
		}
		return false;
	}

	private static function PEPCall() {
		//print_r('PEPCall'); 

		$element = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:aut="http://authws.worldsys.com.ar/">
    <soap:Header/>
    <soap:Body>
    <aut:AuthenticateUser>
    <aut:username>' . env('PEP_USERNAME') . '</aut:username>
    <aut:password>' . env('PEP_PASSWORD') . '</aut:password>
    </aut:AuthenticateUser>
    </soap:Body>
    </soap:Envelope>';

		$url = env('PEP_LOGIN_WSDL');
		$resp = self::CurlPEPlogin($element, $url);
		//print_r('172'); var_dump($resp); die();
		return $resp;
	}

	public static function CurlPEPlogin($element, $url) {
		//print_r('CurlPEPlogin'); 
		$curl = curl_init();
		curl_setopt_array($curl, array(
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_ENCODING => "UTF-8",
			CURLOPT_MAXREDIRS => 10,
			CURLOPT_TIMEOUT => 120,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => "POST",
			CURLOPT_POSTFIELDS => $element,
			CURLOPT_SSL_VERIFYHOST => false,
			CURLOPT_SSL_VERIFYPEER => false,
			CURLOPT_HTTPHEADER => array(
				"cache-control: no-cache",
				"content-type: application/soap+xml; charset=UTF-8",
			),
		));

		$response = curl_exec($curl);
		$err = curl_error($curl);
		curl_close($curl);
		/*
		var_dump("---response: "); 
		var_dump($response); 
		var_dump("---err: "); 
		var_dump($err); die(); */
		if (env('BACKEND') !== 'BACKEND') {
			$mensajeCurl = 'CurlPEPlogin Error:' . $err . ' - Response:' . $response;
			//print_r($mensajeCurl); 
		}

		if ($err) {
			return json_encode("cURL Error #:" . $err);
		} else {
			$response = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response);
			$response = str_replace('', '\'', $response);
			$xml = new \SimpleXMLElement($response);
			//file_put_contents("documentos/afipws/".$cuit.'_'.$datos->servicio.'.txt',(json_encode((array)$xml)));
			$array = json_decode(json_encode((array) $xml), TRUE);
			if (!isset($array['soapBody']['AuthenticateUserResponse']['AuthenticateUserResult']['AuthenticationToken'])) {
				return json_encode(['error' => "No ha podido establecer la conexion con Worldsys"]);
			}
			$token = $array['soapBody']['AuthenticateUserResponse']['AuthenticateUserResult']['AuthenticationToken'] ?? '';
			$expiracion = $array['soapBody']['AuthenticateUserResponse']['AuthenticateUserResult']['TokenExpirationUtc'] ?? '';
			return json_encode(['token' => $token, 'expiracion' => $expiracion]);
		}
	}

	/* -- Fin Login -- */

	/* -- Consulta PEP -- */
	private static function obtenerDatosPEP($cuit, $nombre_persona, $id_padron, $token, $id_llamada, $pais = 'AR') {
		/* 08/09/2021 */
		$token = 'EC3036D95C2C4E3EBD5CAA557C9E16E6'; // EL TOKEN DE GONZALO QUINTANA!!!
		/**/
		/*
			$element =  "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"
			xmlns:lis=\"http://listas.worldsys.com.ar/\">
			   <soap:Header>
				  <lis:SecureWebMethodSoapHeader>
					 <lis:AuthenticationToken>".$token."</lis:AuthenticationToken>
				  </lis:SecureWebMethodSoapHeader>
			   </soap:Header>
			   <soap:Body>
				  <lis:Evaluar>
					 <lis:request>
						<lis:Nombre></lis:Nombre>
						<lis:Documento>".$cuit."</lis:Documento>
						<lis:TipoBusqueda>Recomendada</lis:TipoBusqueda>
						<lis:TipoFuente>Todas</lis:TipoFuente>
						<lis:Control></lis:Control>
						<lis:FactorSimilitud>100</lis:FactorSimilitud>
					 </lis:request>
				  </lis:Evaluar>
			   </soap:Body>
			</soap:Envelope>";

			// 500InternalServerErrorEXCEPTION


			$element =  '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:aut="http://listas.worldsys.com.ar/">
			   <soap:Header>
				  <lis:SecureWebMethodSoapHeader>
					 <lis:AuthenticationToken>'.$token.'</lis:AuthenticationToken>
				  </lis:SecureWebMethodSoapHeader>
			   </soap:Header>
			   <soap:Body>
				  <lis:Evaluar>
					 <lis:request>
						<lis:Nombre></lis:Nombre>
						<lis:Documento>'.$cuit.'</lis:Documento>
						<lis:TipoBusqueda>Recomendada</lis:TipoBusqueda>
						<lis:TipoFuente>Todas</lis:TipoFuente>
						<lis:Control></lis:Control>
						<lis:FactorSimilitud>100</lis:FactorSimilitud>
					 </lis:request>
				  </lis:Evaluar>
			   </soap:Body>
			</soap:Envelope>';
			// 500InternalServerErrorEXCEPTION  

		*/
		// 07/09/2021: 

		if ($pais == 'AR') {
			$element = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lis="http://listas.worldsys.com.ar/">
           <soapenv:Header>
              <lis:SecureWebMethodSoapHeader>
                 <!--Optional:-->
                 <lis:AuthenticationToken>' . $token . '</lis:AuthenticationToken>
              </lis:SecureWebMethodSoapHeader>
           </soapenv:Header>
           <soapenv:Body>
              <lis:Evaluar>
                 <lis:request>
                    <lis:Nombre></lis:Nombre>
                    <lis:Documento>' . $cuit . '</lis:Documento>
                    <lis:TipoBusqueda>Recomendada</lis:TipoBusqueda>
                    <lis:TipoFuente>Todas</lis:TipoFuente>
                    <lis:Control>EVALUACIONESWEB</lis:Control>
                    <lis:FactorSimilitud>100</lis:FactorSimilitud>
                    <lis:FactorSimilitudInverso>30</lis:FactorSimilitudInverso>
                 </lis:request>
              </lis:Evaluar>
           </soapenv:Body>
        </soapenv:Envelope>';
		} else {
			$element = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lis="http://listas.worldsys.com.ar/">
           <soapenv:Header>
              <lis:SecureWebMethodSoapHeader>
                 <!--Optional:-->
                 <lis:AuthenticationToken>' . $token . '</lis:AuthenticationToken>
              </lis:SecureWebMethodSoapHeader>
           </soapenv:Header>
           <soapenv:Body>
              <lis:Evaluar>
                 <lis:request>
                    <lis:Nombre>' . $nombre_persona . '</lis:Nombre>
                    <lis:Documento></lis:Documento>
                    <lis:TipoBusqueda>Recomendada</lis:TipoBusqueda>
                    <lis:TipoFuente>Todas</lis:TipoFuente>
                    <lis:Control>EVALUACIONESWEB</lis:Control>
                    <lis:FactorSimilitud>90</lis:FactorSimilitud>
                    <lis:FactorSimilitudInverso>70</lis:FactorSimilitudInverso>
                 </lis:request>
              </lis:Evaluar>
           </soapenv:Body>
        </soapenv:Envelope>';
		}
		// The server cannot service the request because the media type is unsupported
// Con content-type: text/xml: 500InternalServerErrorEXCEPTION  
/*
// 03/09/2021: 

 //$element =  '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:lis="http://listas.worldsys.com.ar/">
  $element =  '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:lis="http://listas.worldsys.com.ar/">
   <soap:Header>
      <lis:SecureWebMethodSoapHeader>
         <lis:AuthenticationToken>0337E593C6484BDBA009EA8730DD9F1A</lis:AuthenticationToken>
      </lis:SecureWebMethodSoapHeader>
   </soap:Header> 
   <soap:Body>
      <lis:Evaluar>
         <lis:request>
            <lis:Nombre>Mauricio Macri</lis:Nombre>
            <lis:Documento></lis:Documento>
            <lis:TipoBusqueda>Recomendada</lis:TipoBusqueda>
            <lis:TipoFuente>Todas</lis:TipoFuente>
            <lis:Control>EVALUACIONESWEB</lis:Control>
            <lis:FactorSimilitud>95</lis:FactorSimilitud>
            <lis:FactorSimilitudInverso>30</lis:FactorSimilitudInverso>
         </lis:request>
      </lis:Evaluar>
   </soap:Body>
</soap:Envelope>';
//500InternalServerErrorEXCEPTION 
*/

		$url = env('PEP_LISTAS_WSDL');
		$resp = self::CurlPEPListas($cuit, $nombre_persona, $id_padron, $element, $url, $token, $id_llamada);
		return $resp;
	}

	public static function CurlPEPListas($cuit, $nombre_persona, $id_padron, $element, $url, $token, $id_llamada) {
		//print_r('CurlPEPListas');
		//self::$id_resultados = []; 
		$curl = curl_init();
		curl_setopt_array($curl, array(
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_ENCODING => "UTF-8",
			CURLOPT_MAXREDIRS => 10,
			CURLOPT_TIMEOUT => 120,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => "POST",
			CURLOPT_POSTFIELDS => $element,
			CURLOPT_SSL_VERIFYHOST => false,
			CURLOPT_SSL_VERIFYPEER => false,
			CURLOPT_HTTPHEADER => array(
				"cache-control: no-cache",
				//"content-type: application/soap+xml; charset=UTF-8",
				"content-type: text/xml; charset=utf-8",
			),
		));

		$response = curl_exec($curl);
		$err = curl_error($curl);
		curl_close($curl);
		/*print_r('271'); 
		print_r(" -------url = ".$url); 
		print_r(" -------response= ".$response); 
		print_r(" -------err= ".$err); die();
	*/
		//print_r($response); die(); 

		if (env('BACKEND') !== 'BACKEND') {
			$mensajeCurl = 'CurlPEPListas Error:' . $err . ' - Response:' . $response;
			//print_r($mensajeCurl); 
		}
		if ($err) {
			$error = "cURL Error #:" . $err . ' ' . $response;
			if ($err == '' || !is_numeric($err)) {
				$err = -100;
			}
			$error_llamada = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_llamados_', array('update', $id_llamada, $cuit, $nombre_persona, $id_padron, 'worldsys', $err, 'CURL Error', $error), 'selectOne');
			return $error;
		}
		$error = 'OK';

		$response = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response);
		$response = str_replace('', '\'', $response);
		//var_dump($response); die(); 
		$xml = new \SimpleXMLElement($response);
		//file_put_contents("documentos/afipws/".$cuit.'_'.$datos->servicio.'.txt',(json_encode((array)$xml)));
		$array = json_decode(json_encode((array) $xml), TRUE);
		//print_r($array);die();
		$estado = $array['soapBody']['EvaluarResponse']['EvaluarResult'];

		$StatusCode = $estado['StatusCode'] ?? '';
		$Status = $estado['Status'] ?? '';
		$Reason = $estado['Reason'] ?? '';
		if ($StatusCode != '200') {
			$error = $StatusCode;
			return $error;
		}

		if ($StatusCode == '' || !is_numeric($StatusCode)) {
			$StatusCode = -100;
		}

		$error_llamada = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_llamados_', array('update', $id_llamada, $cuit, $nombre_persona, $id_padron, 'worldsys', $StatusCode, $Status, $Reason), 'selectOne');
		/*var_dump('Status : ');
		var_dump($Status);
		var_dump('array : ');
		var_dump($array); */
		if ($Status == 'OK' &&
			(empty($array['soapBody']['EvaluarResponse']['EvaluarResult']['Resultados']) ||
				!isset($array['soapBody']['EvaluarResponse']['EvaluarResult']['Resultados']))
		) {
			//var_dump('Esta todo vacio y status = OK');
			$id_resultado = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_',
				array($cuit, $nombre_persona, $id_padron, 'worldsys',
					$StatusCode,
					$Status,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					'N'),
				'selectOne');
			$error = 'OK';
			self::$id_resultados[] = $id_resultado->id_resultado;
			return $error;

		}
		$resultados = [];
		if ($Status == 'OK' && isset($array['soapBody']['EvaluarResponse']['EvaluarResult']['Resultados'])) {
			if (isset($array['soapBody']['EvaluarResponse']['EvaluarResult']['Resultados']['EvalResult'][0])) {
				$resultados = $array['soapBody']['EvaluarResponse']['EvaluarResult']['Resultados']['EvalResult'];
			} else {
				$resultados = $array['soapBody']['EvaluarResponse']['EvaluarResult']['Resultados'];
			}


			$i = 0;
			foreach ($resultados as $data) {
				$error = 'OK';
				/*
				$Id                  = (!is_array($data['Id']                 )) ? $data['Id'] : '';
				$Fuente              = (!is_array($data['Fuente']             )) ? $data['Fuente']              : '';
				$NombreModificado    = (!is_array($data['NombreModificado']   )) ? $data['NombreModificado']    : '';
				$DocumentoBuscado    = (!is_array($data['DocumentoBuscado']   )) ? $data['DocumentoBuscado']    : '';
				$NombreBuscado       = (!is_array($data['NombreBuscado']      )) ? $data['NombreBuscado']       : '';
				$Documento           = (!is_array($data['Documento']          )) ? $data['Documento']           : '';
				$TipoFuente          = (!is_array($data['TipoFuente']         )) ? $data['TipoFuente']          : '';
				$Residencia          = (!is_array($data['Residencia']         )) ? $data['Residencia']          : '';
				$DescripcionPais     = (!is_array($data['DescripcionPais']    )) ? $data['DescripcionPais']     : '';
				$PaisNoColaborativo  = (!is_array($data['PaisNoColaborativo'] )) ? $data['PaisNoColaborativo']  : '';
				$Hallazgos           = (!is_array($data['Hallazgos']          )) ? $data['Hallazgos']           : '';
				$ExisteDocumentacion = (!is_array($data['ExisteDocumentacion'])) ? $data['ExisteDocumentacion'] : '';
				$PorcentajeSimilitud = (!is_array($data['PorcentajeSimilitud'])) ? $data['PorcentajeSimilitud'] : '';
				*/
				$Id = (isset($data['SDN_ID']) && !is_array($data['SDN_ID'])) ? $data['SDN_ID'] : '';
				$Fuente = (isset($data['Fuente']) && !is_array($data['Fuente'])) ? $data['Fuente'] : '';
				$NombreModificado = (isset($data['NombreModificado']) && !is_array($data['NombreModificado'])) ? $data['NombreModificado'] : '';
				$DocumentoBuscado = (isset($data['DocumentoBuscado']) && !is_array($data['DocumentoBuscado'])) ? $data['DocumentoBuscado'] : '';
				$NombreBuscado = '';
				//$NombreBuscado       = (isset($data['NombreBuscado']) && !is_array($data['NombreBuscado'])) ? $data['NombreBuscado'] : '';
				$Documento = (isset($data['Documento']) && !is_array($data['Documento'])) ? $data['Documento'] : '';
				$TipoFuente = (isset($data['TipoFuente']) && !is_array($data['TipoFuente'])) ? $data['TipoFuente'] : '';
				$Residencia = (isset($data['Residencia']) && !is_array($data['Residencia'])) ? $data['Residencia'] : '';
				$DescripcionPais = (isset($data['DescripcionPais']) && !is_array($data['DescripcionPais'])) ? $data['DescripcionPais'] : '';
				$PaisNoColaborativo = (isset($data['PaisNoColaborativo']) && !is_array($data['PaisNoColaborativo'])) ? $data['PaisNoColaborativo'] : '';
				$Hallazgos = (isset($data['Hallazgos']) && !is_array($data['Hallazgos'])) ? $data['Hallazgos'] : '';
				$ExisteDocumentacion = (isset($data['ExisteDocumentacion']) && !is_array($data['ExisteDocumentacion'])) ? $data['ExisteDocumentacion'] : '';
				$PorcentajeSimilitud = (isset($data['PorcentajeSimilitud']) && !is_array($data['PorcentajeSimilitud'])) ? $data['PorcentajeSimilitud'] : '';

				if (isset($NombreModificado) && !is_array($NombreModificado)) {
					$NombreModificado1 = $NombreModificado;
					$NombreModificado1 = mb_convert_encoding($NombreModificado1, 'ISO-8859-1', 'UTF-8');
					$NombreModificado1 = self::limpiarCaracteresEspeciales($NombreModificado1);
					if ($NombreModificado1 !== '') {
						$NombreModificado = $NombreModificado1;
					}
				}
				if (isset($NombreBuscado) && !is_array($NombreBuscado)) {
					$NombreBuscado1 = $NombreBuscado;
					$NombreBuscado1 = mb_convert_encoding($NombreBuscado1, 'ISO-8859-1', 'UTF-8');
					$NombreBuscado1 = self::limpiarCaracteresEspeciales($NombreBuscado1);
					if ($NombreBuscado1 !== '') {
						$NombreBuscado = $NombreBuscado1;
					}
				}
				$id_resultado = SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_',
					array($cuit, $nombre_persona, $id_padron, 'worldsys',
						$StatusCode,
						$Status,
						$Reason,
						$Id,
						$Fuente,
						$NombreModificado,
						$DocumentoBuscado,
						$NombreBuscado,
						$Documento,
						$TipoFuente,
						$Residencia,
						$DescripcionPais,
						$PaisNoColaborativo,
						$Hallazgos,
						$ExisteDocumentacion,
						$PorcentajeSimilitud,
						'S'),
					'selectOne');
				self::$id_resultados[] = $id_resultado->id_resultado;
				/* 08/09/2021: No anda el mas datos, asi que por ahora lo sacamos, mientras usamos el token de Gonzalo Quintana */
				//$estado_mas = self::obtenerMasDatosPEP($id_resultado->id_resultado,$Id,$token);
				$estado_mas = 'OK';
				/* volver a ponerlo cuando ande */

			}
		}

		return $error;
	}
	/* -- Fin Consulta PEP -- */

	/* -- Consulta Mas Datos PEP -- */
	private static function obtenerMasDatosPEP($id_resultado, $id, $token) {
		//print_r('obtenerMasDatosPEP');

		$element = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" 
    xmlns:lis=\"http://listas.worldsys.com.ar/\">
     <soap:Header>
        <lis:SecureWebMethodSoapHeader>
           <lis:AuthenticationToken>" . $token . "</lis:AuthenticationToken>
        </lis:SecureWebMethodSoapHeader>
     </soap:Header>
     <soap:Body>
        <lis:MasInfo>
           <lis:request>
              <lis:Id>" . $id . "</lis:Id>
           </lis:request>
        </lis:MasInfo>
     </soap:Body>
    </soap:Envelope>";

		$url = env('PEP_MASINFO_WSDL');
		$resp = self::CurlPEPMas($id_resultado, $id, $element, $url);

		return $resp;
	}

	public static function CurlPEPMas($id_resultado, $id, $element, $url) {
		//print_r('CurlPEPMas');

		$curl = curl_init();
		curl_setopt_array($curl, array(
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_ENCODING => "UTF-8",
			CURLOPT_MAXREDIRS => 10,
			CURLOPT_TIMEOUT => 120,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => "POST",
			CURLOPT_POSTFIELDS => $element,
			CURLOPT_SSL_VERIFYHOST => false,
			CURLOPT_SSL_VERIFYPEER => false,
			CURLOPT_HTTPHEADER => array(
				"cache-control: no-cache",
				"content-type: application/soap+xml; charset=UTF-8",
			),
		));

		$response = curl_exec($curl);
		$err = curl_error($curl);

		print_r('72');
		print_r("response= " . $response);
		print_r(" - err= " . $err);
		die();



		curl_close($curl);
		if (env('BACKEND') !== 'BACKEND') {
			$mensajeCurl = 'CurlPEPMas Error:' . $err . ' - Response:' . $response;
			//print_r($mensajeCurl); 
		}

		if ($err) {
			$Status = new stdClass();
			$Status = "cURL Error #:" . $err;
		} else {
			$response = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response);
			$response = str_replace('', '\'', $response);

			$xml = new \SimpleXMLElement($response);
			//file_put_contents("documentos/afipws/".$cuit.'_'.$datos->servicio.'.txt',(json_encode((array)$xml)));
			$array = json_decode(json_encode((array) $xml), TRUE);
			print_r('470');
			print_r($array);
			die();
			$estado = $array['soapBody']['MasInfoResponse']['MasInfoResult'];
			$StatusCode = $estado['StatusCode'] ?? '';
			$Status = $estado['Status'] ?? '';
			if ($Status == 'OK') {
				$principal = $array['soapBody']['MasInfoResponse']['MasInfoResult']['Data']['principal'];
				$fuente = $array['soapBody']['MasInfoResponse']['MasInfoResult']['Data']['fuente'];
				/*
					array:4 [
						"principal" => array:22 [
							"CargoFuncion" => "SOCIO"
							"Codigo" => "14321634"
							"Denominacion" => "WALTER ARIEL ACTIS"
							"DenominacionEstandarizada" => "WALTER ARIEL ACTIS"
							"Domicilio" => "LA HERAS 2584 - ACASSUSO - BUENOS AIRES"
							"FechaNovedad" => "2020-03-06 11:48:39.823"
							"Institucion" => "ASOCIACION ESCUELAS LINCOLN (LINCOLN SCHOOL) ASOCIACION CIVIL"
							"Lista" => "B_PEPS_CI_AR"
							"ListaDescripcion" => "B_PEPS_CI_AR - PEPS de Argentina con identificación"
							"NroDocumento" => "23534321"
							"NroIdTributaria" => "20235343216"
							"PaisSwift" => "AR"
							"Relacion" => "MORA Y ARAUJO JUAN MANUEL (DNI 23831262)"
							"TipoNovedad" => "N"
							"Url" => "http://info.pld.global/Base/Index?referencia=Ql9QRVBTX0NJX0FSfDE0MzIxNjM0"
							"IdOrigRel" => "23831262"
							"Fuente" => "RELACIONES_IGJ"
							"Observaciones" => "Vinculo por sociedad con:  MORA Y ARAUJO JUAN MANUEL (DNI 23831262) por ASOCIACION ESCUELAS LINCOLN (LINCOLN SCHOOL) ASOCIACION CIVIL (CUIT 30527335236)"
							"Pais" => "ARGENTINA"
							"UrlNew" => "https://www2.jus.gov.ar/igj-vistas/Busqueda.aspx"
							"NormaUif" => "5D"
							"NormaUifDescripcion" => "Personas con las cuales se hayan establecido relaciones jurídicas de negocios del tipo asociativa, aún de carácter informal, cualquiera fuese su naturaleza.\t"
						]
						"fuente" => array:7 [
							"Lista" => "B_PEPS_CI_AR"
							"Activa" => "S"
							"Descripcion" => "PEPS de Argentina con identificación"
							"DescripcionLarga" => "Esta lista contiene la identidad de los individuos de ARGENTINA que desempeñan o han desempeñado funciones públicas destacadas, por ejemplo, jefes de Estado, políticos de alta jerarquía, funcionarios gubernamentales, judiciales o militares de alta jerarquía, altos ejecutivos de empresas estatales, funcionarios importantes de partidos políticos"
							"Tipo" => "PEP"
							"Imagen" => "http://info.pld.global/images/iconos-listas/logo_peps_ar.png"
							"Actualizaxml" => "N"
						]
						"noticias" => "Posee noticias"
						"archivos" => "Sin archivos"
						]
					*/
				$Codigo = $principal['Codigo'] ?? '';
				$TipoFuente = $principal['TipoFuente'] ?? '';
				$FechaNovedad = $principal['FechaNovedad'] ?? '';
				$Cargo = $principal['CargoFuncion'] ?? '';
				if (empty($Cargo)) {
					$Cargo = '';
				}

				if (isset($Cargo) && !is_array($Cargo)) {
					$Cargo1 = $Cargo;
					$Cargo1 = (utf8_decode($Cargo1));
					$Cargo1 = self::limpiarCaracteresEspeciales($Cargo1);
					if ($Cargo1 !== '') {
						$Cargo = $Cargo1;
					}
				} else {
					$Cargo = '';
				}

				$Institucion = $principal['Institucion'] ?? '';
				if (empty($Institucion)) {
					$Institucion = '';
				}

				if (isset($Institucion) && !is_array($Institucion)) {
					$Institucion1 = $Institucion;
					$Institucion1 = (utf8_decode($Institucion1));
					$Institucion1 = self::limpiarCaracteresEspeciales($Institucion1);
					if ($Institucion1 !== '') {
						$Institucion = $Institucion1;
					}
				} else {
					$Institucion = '';
				}

				$Domicilio = $principal['Domicilio'] ?? '';
				if (empty($Domicilio)) {
					$Domicilio = '';
				}


				if (isset($Domicilio) && !is_array($Domicilio)) {
					$Domicilio1 = $Domicilio;
					$Domicilio1 = (utf8_decode($Domicilio1));
					$Domicilio1 = self::limpiarCaracteresEspeciales($Domicilio1);
					if ($Domicilio1 !== '') {
						$Domicilio = $Domicilio1;
					}
				} else {
					$Domicilio = '';
				}

				$NumeroDocumento = $principal['NroDocumento'] ?? '';
				$NumeroIdTributaria = $principal['NroIdTributaria'] ?? '';
				$Url = $principal['Url'] ?? '';

				$Relacion = $principal['Relacion'] ?? '';
				if (empty($Relacion)) {
					$Relacion = '';
				}

				if (isset($Relacion) && !is_array($Relacion)) {
					$Relacion1 = $Relacion;
					$Relacion1 = (utf8_decode($Relacion1));
					$Relacion1 = self::limpiarCaracteresEspeciales($Relacion1);
					if ($Relacion1 !== '') {
						$Relacion = $Relacion1;
					}
				} else {
					$Relacion = '';
				}

				$PrincipalLista = $principal['Lista'] ?? '';
				$PrincipalListaDescripcion = $principal['ListaDescripcion'] ?? '';
				$PaisSwift = $principal['PaisSwift'] ?? '';
				$TipoNovedad = $principal['TipoNovedad'] ?? '';
				$IdOrigRel = $principal['IdOrigRel'] ?? '';
				$PrincipalFuente = $principal['Fuente'] ?? '';
				$Observaciones = $principal['Observaciones'] ?? '';
				$Pais = $principal['Pais'] ?? '';
				$UrlNew = $principal['UrlNew'] ?? '';
				$NormaUif = $principal['NormaUif'] ?? '';
				$NormaUifDescripcion = $principal['NormaUifDescripcion'] ?? '';

				$FuenteLista = $fuente['Lista'] ?? '';
				$FuenteActiva = $fuente['Activa'] ?? '';
				$FuenteDescripcion = $fuente['Descripcion'] ?? '';
				$FuenteDescripcionLarga = $fuente['DescripcionLarga'] ?? '';
				$FuenteTipo = $fuente['Tipo'] ?? '';
				$FuenteImagen = $fuente['Imagen'] ?? '';
				$FuenteActualizaxml = $fuente['Actualizaxml'] ?? '';

				SQLConnection::backendStoreProcedure('LN_Fidecheck_ws_mas_datos_', array(
					$id_resultado, $id,
					$StatusCode,
					$Status,
					$Codigo,
					$TipoFuente,
					$FechaNovedad,
					$Cargo,
					$Institucion,
					$Domicilio,
					$NumeroDocumento,
					$NumeroIdTributaria,
					$Url,
					$Relacion,
					$PrincipalLista,
					$PrincipalListaDescripcion,
					$PaisSwift,
					$TipoNovedad,
					$IdOrigRel,
					$PrincipalFuente,
					$Observaciones,
					$Pais,
					$UrlNew,
					$NormaUif,
					$NormaUifDescripcion,
					$FuenteLista,
					$FuenteActiva,
					$FuenteDescripcion,
					$FuenteDescripcionLarga,
					$FuenteTipo,
					$FuenteImagen,
					$FuenteActualizaxml
				), 'selectOne');
			}
		}
		return $Status;
	}

	/* -- Fin Consulta Mas Datos PEP -- */


	/*
	public static function obtenerPEPSCliente($cliente){ 
	   // Busca todos los cuits de las contrapartes y sus socios/accionistas de ese cliente 
	   $respuesta     =  SQLConnection::backendStoreProcedure('ln_cliente_cuits_',array($cliente),'selectOne');

	   // Busca los fidecheck de todos los cuits encontrados 
	   $cuits_cliente =  SQLConnection::backendStoreProcedure('ln_cliente_cuits_buscar', array($cliente),'select');
	   $i = 0; 
	   foreach ($cuits_cliente as $cuits)
	   {
		   $i += 1; 
		   $cuit = $cuits->cuit; 
		   $nombre_persona = $cuits->nombre_persona; 
		   $id_padron = $cuits->id_padron; 
		   self::$id_resultados = []; 
		   $forzar_login = 'N'; 
		   $resp = '401'; // No hay token valido
		   while ($resp == '401')
		   {
			 $resp = '0'; 
			 $datos = self::obtenerDatosLogin(env('PEP_SERVICIO'),$forzar_login);
			 $final_response = '';
			 //dd($datos); 
			 if (isset($datos->error)) 
				{
				$final_response = new stdClass(); 
				$final_response->error = $datos->error; 
				$resp = $final_response;
				//return $final_response; 
				break; 
				} 
			 if (isset($datos->token)) 
			 {
			   $resp = self::obtenerDatosPEP($cuit,$nombre_persona,$id_padron,$datos->token);
			   $forzar_login = 'S';
			 }
		   }
		   usleep(10000000); 
		 }
		 dd($i); 
		 
	 }

	 */

	public static function obtenerPEPSCliente() {

		$cliente = Request::input('cliente');
		$familia = Request::input('familia') ?? null;
		$contraparte = Request::input('contraparte') ?? null;
		if ($contraparte !== null) {
			$contrapartes = DB::select("select contraparte from LN_contrapartes where contraparte = " . $contraparte);
		} else {
			$contrapartes = SQLConnection::backendStoreProcedure('ln_contrapartes_fidecheck', array($cliente, $familia), 'select');
		}
		$c = 0;
		foreach ($contrapartes as $cont) {
			$c += 1;
			$id = $cont->contraparte;
			$registros = SQLConnection::backendStoreProcedure('LN_completa_fidecheck', array($id), 'select');
			$i = 0;
			foreach ($registros as $cuits) {
				$i += 1;
				$buscar_afip = self::CURLCall(env('URL_FRONTEND') . '/api/local/v1/afip/obtener-padron/' . $cuits->tax_id, 'GET');
				/*f ($cuits->fidecheck == '')
				{*/
				$cuit = $cuits->tax_id;
				$nombre_persona = $cuits->nombre;
				$id_padron = 0;
				$seccion = $cuits->seccion;
				$datos_finales = self::procesar_pep($cuit, $nombre_persona, $id_padron);
				if (isset($datos_finales['error'])) {
					$resp = $datos_finales['error'];
					$error = 'ERROR';
					break;
				}

				if (count($datos_finales) == 0) {
					$fidecheck = 'N';
				} else {
					$fidecheck = $datos_finales[0]->fidecheck;
				}

				if ($fidecheck !== null) {
					$detalle = '';
					if ($fidecheck == 'S' || $fidecheck == 's') {
						$cargo = $datos_finales[0]->Cargo;
						$institucion = $datos_finales[0]->Institucion;
						$relacion = $datos_finales[0]->Relacion;
						$lista = $datos_finales[0]->TipoFuente;
						$pais = $datos_finales[0]->DescripcionPais;
						$orden = $datos_finales[0]->orden;
						// 1 - Terroritas
						// 2 - Sancionados 
						// 3 - PEP
						// 4 - Relacionado
						if ($orden <= 2) {
							$fidecheck = 'P';
						}
						if ($orden == 3) {
							if (strtolower($lista) == 'sujetos obligados' || strtolower($lista) == 'sujeto obligado') {
								$fidecheck = 'S';
							} else {
								$fidecheck = 'E';
								if ($relacion != '') {
									$fidecheck = 'R';
								}
							}
						}
						if ($orden == 4) {
							$fidecheck = 'R';
						}

						if ($lista == null) {
							$lista = '';
						}
						if ($pais == null) {
							$pais = '';
						}
						if ($cargo == null) {
							$cargo = '';
						}
						if ($institucion == null) {
							$institucion = '';
						}
						if ($relacion == null) {
							$relacion = '';
						}
						if ($lista != '') {
							$detalle .= 'Integrante de listas ' . $lista;
						}
						if ($detalle == '' && $pais != '') {
							$detalle = 'Integrante de listas';
						}
						if ($pais != '') {
							$detalle .= ' ' . $pais;
						}
						if ($detalle != '') {
							$detalle .= ':';
						}
						if ($cargo != '') {
							$detalle .= ' ' . $cargo;
						}
						if ($institucion != '') {
							$detalle .= ' de ' . $institucion;
						}
						if ($relacion != '') {
							$detalle .= ' - Relacionado: ' . $relacion;
						}
					}
					$idr = $datos_finales[0]->id_resultado;
					$actualizo =
						SQLConnection::backendStoreProcedure('LN_actualiza_fidecheck', array($id, $cuit, $seccion, $fidecheck, $detalle, $idr), 'select');
					$insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $id), 'selectOne');
				}
				/*}*/
				usleep(15000000);
				//usleep(1000000);  
			}

		}

		echo ("\r\nCantidad de contrapartes = " . $c);

	}

	public static function completarFidecheck() {

		$cl = Request::input('cliente');
		//$cl = 2046807993; 
		$id = Request::input('contraparte');
		//$id = 32103;
		$error = '';
		$inicio = (null !== Request::input('inicio')) ? Request::input('inicio') : 'inicio';
		if ($inicio == 'inicio') {
			$registros = SQLConnection::backendStoreProcedure('LN_completa_fidecheck', array($id), 'select');
			$i = 0;
			if (env('PEP_FIDECHECK_AUTOMATICO_VA_A_WORLDSYS') !== 'NO') {
				foreach ($registros as $cuits) {
					$i += 1;
					$buscar_afip = self::CURLCall(env('URL_FRONTEND') . '/api/local/v1/afip/obtener-padron/' . $cuits->tax_id, 'GET');
					/*
					if ($cuits->fidecheck == '' || $cuits->fidecheck == 'R') // Reprocesamos los Relacionados, por si son PEP, 
																			  // y antes lo guardamos como R
					 {
					 */
					$cuit = $cuits->tax_id;
					$nombre_persona = $cuits->nombre;
					$id_padron = 0;
					$seccion = $cuits->seccion;
					$datos_finales = self::procesar_pep($cuit, $nombre_persona, $id_padron);
					if (isset($datos_finales['error'])) {
						$resp = $datos_finales['error'];
						$error = 'ERROR';
						break;
					}

					if (count($datos_finales) == 0) {
						$fidecheck = 'N';
					} else {
						$fidecheck = $datos_finales[0]->fidecheck;
					}

					if ($fidecheck !== null) {
						$detalle = '';
						if ($fidecheck == 'S' || $fidecheck == 's') {
							$cargo = $datos_finales[0]->Cargo;
							$institucion = $datos_finales[0]->Institucion;
							$relacion = $datos_finales[0]->Relacion;
							$lista = $datos_finales[0]->TipoFuente;
							$pais = $datos_finales[0]->DescripcionPais;
							$orden = $datos_finales[0]->orden;
							// 1 - Terroritas
							// 2 - Sancionados 
							// 3 - PEP
							// 4 - Relacionado
							if ($orden <= 2) {
								$fidecheck = 'P';
							}
							if ($orden == 3) {
								if (strtolower($lista) == 'sujetos obligados' || strtolower($lista) == 'sujeto obligado') {
									$fidecheck = 'S';
								} else {
									$fidecheck = 'E';
									if ($relacion != '') {
										$fidecheck = 'R';
									}
								}
							}
							if ($orden == 4) {
								$fidecheck = 'R';
							}

							if ($lista == null) {
								$lista = '';
							}
							if ($pais == null) {
								$pais = '';
							}
							if ($cargo == null) {
								$cargo = '';
							}
							if ($institucion == null) {
								$institucion = '';
							}
							if ($relacion == null) {
								$relacion = '';
							}
							if ($lista != '') {
								$detalle .= 'Integrante de listas ' . $lista;
							}
							if ($detalle == '' && $pais != '') {
								$detalle = 'Integrante de listas';
							}
							if ($pais != '') {
								$detalle .= ' ' . $pais;
							}
							if ($detalle != '') {
								$detalle .= ':';
							}
							if ($cargo != '') {
								$detalle .= ' ' . $cargo;
							}
							if ($institucion != '') {
								$detalle .= ' de ' . $institucion;
							}
							if ($relacion != '') {
								$detalle .= ' - Relacionado: ' . $relacion;
							}
						}
						/* if ($cuit == '20135541649')
						 {
						   var_dump($id); 
						   var_dump($cuit);
						   var_dump($seccion); 
						   var_dump($fidecheck); 
						   var_dump($detalle); 
						   die(); 
						 }*/
						$idr = $datos_finales[0]->id_resultado;
						$actualizo =
							SQLConnection::backendStoreProcedure('LN_actualiza_fidecheck', array($id, $cuit, $seccion, $fidecheck, $detalle, $idr), 'select');
					}
					/*}*/
					//usleep(10000000);
					usleep(1000000);
				}
			}
		}
		$insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $id), 'selectOne');
		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select', $cl, NULL, NULL, NULL), 'selectOne');
		$sesion_id = isset(Session::get('usuario')->user_id) ? Session::get('usuario')->user_id : 15342812;
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, $sesion_id), 'selectOne');
		$socios = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'S'), 'select');
		$relac = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'R'), 'select');
		$direct = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'D'), 'select');
		$propio = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'P'), 'selectOne');
		return view('/led/led_fidecheckdemo2')->with(compact(['cliente', 'contrap', 'socios', 'relac', 'direct', 'propio', 'error', 'inicio']));

	}



	public static function CURLCall($url, $type) {
		$curl = curl_init();
		curl_setopt_array($curl, array(
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_ENCODING => "",
			CURLOPT_MAXREDIRS => 10,
			CURLOPT_TIMEOUT => 120,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => $type,
			CURLOPT_SSL_VERIFYHOST => false,
			CURLOPT_SSL_VERIFYPEER => false,
			//CURLOPT_POSTFIELDS => $params,
			CURLOPT_HTTPHEADER => array(
				"cache-control: no-cache",
				"content-type: application/x-www-form-urlencoded"
			),
		));

		$response = curl_exec($curl);
		$err = curl_error($curl);
		curl_close($curl);

		if (env('BACKEND') !== 'BACKEND') {
			$mensajeCurl = 'CURLCall Error:' . $err . ' - Response:' . $response;
			//print_r($mensajeCurl); 
		}

		if ($err) {

			return json_encode(array('error' => true));
		} else {
			return $response;
		}
	}

	public static function grabarFidecheckPEP() {
		$contraparte = Request::input('contraparte');
		$cuit = Request::input('cuit');
		$detalle = Request::input('detalle');
		$fidecheck = Request::input('fidecheck');
		if ($fidecheck == 'S') {
			$fidecheck = 'R';
		}
		$upd = SQLConnection::backendStoreProcedure('LN_demo_Fidecheck_update', array($contraparte, $cuit, $fidecheck, $detalle), 'selectOne');
		return 'ok';
	}

	public static function obtenerPEPSListaCuits() {
		// Los cuits a buscar se cargan en la tabla fidecheck_cuits, con una fecha determinada
// Para procesarlos https://backend.fidelitas.com.ar/obtener-pep-cuit?fecha=aaaa-mm-dd (se pasa como parámetro esa fecha)
		$fecha = Request::input('fecha');
		$registros = DB::select("select cuit from fidecheck_cuits where fidecheck is null and fecha = '" . $fecha . "' order by cuit");
		foreach ($registros as $key => $cuits) {
			$cuit = $cuits->cuit;
			$nombre_persona = '';
			$id_padron = 0;
			$datos_finales = self::procesar_pep($cuit, $nombre_persona, $id_padron);
			/*var_dump('----------------------------------'); 
			var_dump($datos_finales); */
			if (isset($datos_finales['error'])) {
				$resp = $datos_finales['error'];
				$error = 'ERROR';
				echo "ERROR -> " . $cuit;
				//continue;
				break;
			}
			if (count($datos_finales) == 0) {
				$fidecheck = 'N';
			} else {
				$fidecheck = $datos_finales[0]->fidecheck;
			}
			echo $cuit . ' - ' . $fidecheck . "\r\n";
			if ($fidecheck !== null) {
				$detalle = '';
				if ($fidecheck == 'S' || $fidecheck == 's') {
					$cargo = $datos_finales[0]->Cargo;
					$institucion = $datos_finales[0]->Institucion;
					$relacion = $datos_finales[0]->Relacion;
					$lista = $datos_finales[0]->TipoFuente;
					$pais = $datos_finales[0]->DescripcionPais;
					$orden = $datos_finales[0]->orden;
					// 1 - Terroritas
					// 2 - Sancionados 
					// 3 - PEP
					// 4 - Relacionado
					if ($orden <= 2) {
						$fidecheck = 'P';
					}
					if ($orden == 3) {
						if (strtolower($lista) == 'sujetos obligados' || strtolower($lista) == 'sujeto obligado') {
							$fidecheck = 'S';
						} else {
							$fidecheck = 'E';
							if ($relacion != '') {
								$fidecheck = 'R';
							}
						}
					}
					if ($orden == 4) {
						$fidecheck = 'R';
					}
					if ($lista == null) {
						$lista = '';
					}
					if ($pais == null) {
						$pais = '';
					}
					if ($cargo == null) {
						$cargo = '';
					}
					if ($institucion == null) {
						$institucion = '';
					}
					if ($relacion == null) {
						$relacion = '';
					}
					if ($lista != '') {
						$detalle .= 'Integrante de listas ' . $lista;
					}
					if ($detalle == '' && $pais != '') {
						$detalle = 'Integrante de listas';
					}
					if ($pais != '') {
						$detalle .= ' ' . $pais;
					}
					if ($detalle != '') {
						$detalle .= ':';
					}
					if ($cargo != '') {
						$detalle .= ' ' . $cargo;
					}
					if ($institucion != '') {
						$detalle .= ' de ' . $institucion;
					}
					if ($relacion != '') {
						$detalle .= ' - Relacionado: ' . $relacion;
					}
				}
				$actualizo =
					SQLConnection::backendStoreProcedure('SP_actualiza_fidecheck_cuits', array($fecha, $cuit, $fidecheck, $detalle), 'select');
			}
			usleep(2000000);
		}
	}

	public static function obtenerPEPApi() {
		$cuit = Request::input('cuit');
		$nombre_persona = Request::input('nombre_persona');
		$pais = Request::input('pais') ?? 'AR';
		// lo paso por afip desde frontend, esta llamada esta en la api que llama a esta función
		/*if ($pais == 'AR')
		{
		  $buscar_afip = self::CURLCall(env('URL_FRONTEND').'/api/local/v1/afip/obtener-padron/'.$cuit,'GET');
		}*/
		$datos = SQLConnection::backendStoreProcedure('api_buscar_padron', array($pais, $cuit), 'selectOne');
		$nombre_persona = $datos->nombre_persona ?? $nombre_persona;
		$datos_finales = self::procesar_pep($cuit, $nombre_persona, '0', $pais);
		/*if (isset($datos_finales['error'])) {
		  $resp  = $datos_finales['error']; 
		}*/
		$respuesta = [];
		$respuesta['error'] = 'OK';
		$respuesta['taxid'] = $cuit;
		$respuesta['nombre'] = $nombre_persona;
		$respuesta['fidecheck'] = '';
		$respuesta['lista'] = '';
		$respuesta['pais'] = '';
		$respuesta['cargo'] = '';
		$respuesta['institucion'] = '';
		$respuesta['relacion'] = '';

		if (isset($datos_finales['error'])) {
			$respuesta['error'] = $datos_finales['error'];
			$error = 'ERROR';
		} else {
			if (count($datos_finales) == 0) {
				$fidecheck = 'NEGATIVO';
			} else {
				$fidecheck = $datos_finales[0]->fidecheck;
			}

			if ($fidecheck == null || $fidecheck == 'N' || $fidecheck == 'n') {
				$fidecheck = 'NEGATIVO';
			}
			$respuesta['fidecheck'] = $fidecheck;

			if ($fidecheck !== null) {
				if ($fidecheck == 'S' || $fidecheck == 's') {
					$cargo = $datos_finales[0]->Cargo;
					$institucion = $datos_finales[0]->Institucion;
					$relacion = $datos_finales[0]->Relacion;
					$lista = $datos_finales[0]->TipoFuente;
					$pais = $datos_finales[0]->DescripcionPais;
					$orden = $datos_finales[0]->orden;
					// 1 - Terroritas
					// 2 - Sancionados 
					// 3 - PEP
					// 4 - Relacionado
					if ($orden <= 2) {
						$fidecheck = 'POSITIVO';
					}
					if ($orden == 3) {
						if (strtolower($lista) == 'sujetos obligados' || strtolower($lista) == 'sujeto obligado') {
							$fidecheck = 'SUJETO OBLIGADO';
						} else {
							$fidecheck = 'PEP';
							if ($relacion != '') {
								$fidecheck = 'RELACIONADO';
							}
						}
					}
					if ($orden == 4) {
						$fidecheck = 'RELACIONADO';
					}
					if ($lista == null) {
						$lista = '';
					}
					if ($pais == null) {
						$pais = '';
					}
					if ($cargo == null) {
						$cargo = '';
					}
					if ($institucion == null) {
						$institucion = '';
					}
					if ($relacion == null) {
						$relacion = '';
					}

					$respuesta['fidecheck'] = $fidecheck;
					$respuesta['lista'] = $lista;
					$respuesta['pais'] = $pais;
					$respuesta['cargo'] = $cargo;
					$respuesta['institucion'] = $institucion;
					$respuesta['relacion'] = $relacion;
				}

			}
		}
		//return $respuesta; 
		return json_encode([$respuesta]);
	}
}
