<?php
namespace App\Custom;

use DB;
use PDO;
use Session;
/*
Aviso:
Todos los métodos de la clase SQLConnection deberan generarse como static, para agilizar el trabajo de instanciación ,velocidad y visibilidad por controlador.
*/

class SQLConnection {

	public static function cambiarClave($usuario, $clave_anterior, $clave_nueva) {
		return DB::selectOne('EXEC dbo.user_login ?,?,?,?,?,?,?,?', array($usuario, $clave_anterior, ENV('EXPIRATION_PERIOD'), ENV('QTY_PASSWORD'), ENV('SESSION_TIMEOUT'), ENV('SIMUL_LOGIN'), 'CHANGEPWD', $clave_nueva));
	}

	public static function enviarRestablecerClave($mail) {
		return DB::selectOne('EXEC dbo.recuperar_usuario_email ?', array($mail));
	}

	public static function obtenerPermisosOrg($user_id) {
		return DB::select('EXEC dbo.user_login_access ?', array($user_id));
	}

	public static function restablecerClave($usuario, $clave_nueva) {
		return DB::selectOne('EXEC dbo.user_login ?,?,?,?,?,?,?,?', array($usuario, '', ENV('EXPIRATION_PERIOD'), ENV('QTY_PASSWORD'), ENV('SESSION_TIMEOUT'), ENV('SIMUL_LOGIN'), 'RETRPWD', $clave_nueva));
	}


	//Iniciar y generar la sesión con el store en común de todas las aplicaciones.
	public static function iniciarSesion($usuario, $clave, $simultaneo = 0) {
		return DB::selectOne('EXEC dbo.user_login ?,?,?,?,?,?,?,?', array($usuario, $clave, ENV('EXPIRATION_PERIOD'), ENV('QTY_PASSWORD'), ENV('SESSION_TIMEOUT'), $simultaneo, 'LOGIN', NULL));
	}

	public static function cerrarSesion($usuario){
		return DB::selectOne('EXEC dbo.user_login ?,?,?,?,?,?,?,?', array($usuario,NULL,ENV('EXPIRATION_PERIOD'),ENV('QTY_PASSWORD'),ENV('SESSION_TIMEOUT'),NULL,'LOGOUT',NULL));
	}

	//Iniciar y generar la sesión con el store en común de todas las aplicaciones.
	public static function iniciarSesionConGoogle($email, $simultaneo = 0) {
		return DB::selectOne('EXEC dbo.user_login_google_auth ?,?,?,?', array($email, ENV('EXPIRATION_PERIOD'), ENV('SESSION_TIMEOUT'), $simultaneo));
	}


	//Generar la búsqueda de padron por cuit ó dni ó razon social
	public static function busquedaPadron($cuit = NULL, $dni = NULL, $razon_social = NULL) {

		$buscador_cuit = ($cuit) ? true : null;
		$buscador_dni = ($dni) ? true : null;
		$buscador_razon_social = ($razon_social) ? true : null;

		if ($buscador_cuit) {
			$cuit = Misc::parsearBusquedaPadron($cuit);
			if ($cuit == "") {
				return [];
			}
		} else if ($buscador_dni) {
			$dni = Misc::parsearBusquedaPadron($dni);
			if ($dni == "") {
				return [];
			}
		} else if ($buscador_razon_social) {
			$razon_social = Misc::parsearBusquedaPadron($razon_social);
			if ($razon_social == "") {
				return [];
			}
		}
		return DB::select('EXEC dbo.backend_buscar_en_padron ?,?', array($cuit, $razon_social));
	}

	public static function backendCentralDeudores($cuit, $meses, $visible) {
		return DB::select('EXEC backend_central_deudores ?,?,?', array($cuit, $meses, $visible));
	}

	public static function backendVisible($id_registro, $StoredProcedure) {
		$user_id = Session::get("usuario")->user_id;
		$id_padron = Session::get("id_padron");
		return DB::selectOne('EXEC ' . $StoredProcedure . ' ?,?,?', array($id_registro, $id_padron, $user_id));
	}

	public static function backendVisible2($id_registro, $StoredProcedure) {
		$user_id = Session::get("usuario")->user_id;
		return DB::selectOne('EXEC ' . $StoredProcedure . ' ?,?', array($id_registro, $user_id));
	}

	public static function obtenerEntidadesBancarias() {
		return DB::select('EXEC obtener_EntidadesBancarias', array());
	}

	public static function obtenerCodigos($StoredProcedure) {
		return DB::select('EXEC ' . $StoredProcedure, array());
	}

	public static function obtenerCendeuBloqueo($cuit) {
		return DB::select('EXEC backend_cendeu_bloqueo ?', array($cuit));
	}

	public static function obtenerCendeuCancela($cuit) {
		return DB::select('EXEC backend_cendeu_cancela ?', array($cuit));
	}

	public static function obtenerCargos() {
		return DB::select('EXEC obtener_Cargos', array());
	}

	public static function obtenerMonedas() {
		return DB::select('EXEC obtener_Monedas', array());
	}

	public static function obtenerSecciones() {
		return DB::select('EXEC obtener_Secciones_carga', array());
	}

	public static function obtenerSinonimos($string) {
		return DB::selectOne('EXEC dbo.obtener_sinonimos ?', array($string));
	}

	public static function obtenerOmitidos() {
		return DB::select('EXEC dbo.obtener_omitidos');
	}

	public static function backendBalances($cuit, $anios, $visible) {
		return DB::select('EXEC backend_balances ?,?,?,?', array(null, $cuit, $anios, $visible));
	}

	public static function backendBalancesContables($cuit, $anios, $visible, $task_id) {
		return DB::select('EXEC backend_balances_contables ?,?,?,?,?', array(null, $cuit, $anios, $visible, $task_id));
	}

	public static function backendBalancesid($id_balance) {
		return DB::selectOne('EXEC backend_balances ?,?,?,?', array($id_balance, null, null, null));
	}

	public static function backendBalancesContablesid($id_balance) {
		return DB::selectOne('EXEC backend_balances_contables ?,?,?,?,?', array($id_balance, null, null, null, null));
	}

	public static function backendModificacionCentralDeudores($cuit, $codigo_ent, $fec_inf, $situacion, $deuda_total, $observaciones) {
		$user_id = Session::get("usuario")->user_id;
		$id_padron = Session::get("id_padron");
		return DB::selectOne('EXEC backend_modificacion_central_deudores ?,?,?,?,?,?,?', array($cuit, $codigo_ent, $fec_inf, $situacion, $deuda_total, $observaciones, $id_padron, $user_id));
	}

	public static function backendAltaCentralDeudores($cuit, $codigo_ent, $fec_inf, $situacion, $deuda_total, $observaciones) {
		$user_id = Session::get("usuario")->user_id;
		$id_padron = Session::get("id_padron");
		return DB::selectOne('EXEC backend_alta_central_deudores ?,?,?,?,?,?,?,?', array($cuit, $codigo_ent, $fec_inf, $situacion, $deuda_total, $observaciones, $id_padron, $user_id));
	}

	// Funcion generica para ejecutar Store Procedure
	public static function backendStoreProcedure($store_procedure, $params, $selectOne = FALSE, $debug = FALSE) {
		$question_marks = '';

		if (count($params)) {
			/*$question_marks = $params[0];
					 $question_marks = substr($question_marks,1,-1);*/
			$question_marks = array_fill(0, count($params), '?');
			$question_marks = ' ' . implode(',', $question_marks);
		}
		//return $question_marks;

		if ($debug === TRUE) {
			$params_txt = (count($params)) ? " '" . implode("','", $params) . "'" : "";
			//die("EXEC ".$store_procedure.$params_txt);
		}

		if ($selectOne == "selectOne" || $selectOne === TRUE) {
			return DB::selectOne('EXEC ' . $store_procedure . $question_marks, $params);
		} else {
			//$params = $params[0];
			/*$params = substr($params,1,-1);*/
			//return $params;
			return DB::select('EXEC ' . $store_procedure . $question_marks, $params);
		}
	}

	public static function insertarDatosGenerales($datos) {
		return DB::select('EXEC insertar_datos_generales ?,?,?,?,?,?,?', array($datos[0], (int) $datos[1], $datos[2], $datos[3], $datos[4], $datos[5], (int) $datos[6]));
	}

	public static function busquedaClientes($cli_codigo = NULL, $cli_cuit = NULL, $cli_nombre = NULL, $ifx = 0) {
		$buscador_cli_codigo = ($cli_codigo) ? true : null;#null
		$buscador_cli_cuit = ($cli_cuit) ? true : null;#true
		$buscador_cli_nombre = ($cli_nombre) ? true : null;#null		
		if ($buscador_cli_cuit) {
			$cli_cuit = Misc::parsearBusquedaPadron($cli_cuit);
			if ($cli_cuit == "") {
				return [];
			}
		} else if ($buscador_cli_codigo) {
			//$cli_codigo = $cli_codigo;
		} else if ($buscador_cli_nombre) {
			$cli_nombre = Misc::parsearBusquedaPadron($cli_nombre);
			if ($cli_nombre == "") {
				return [];
			}
		}

		//var_dump(array($cli_codigo, $cli_cuit, $cli_nombre, env('PLATAFORMA'))); die(); 
		$test = DB::select('EXEC dbo.buscar_clientes ?,?,?,?', array($cli_codigo, $cli_cuit, $cli_nombre, env('PLATAFORMA')));

		if ($ifx == '1') {
			return DB::select('EXEC dbo.buscar_en_clientes_ifx ?,?,?', array($cli_codigo, $cli_cuit, $cli_nombre));
		} else {
			return DB::select('EXEC dbo.buscar_clientes ?,?,?,?', array($cli_codigo, $cli_cuit, $cli_nombre, env('PLATAFORMA')));
		}
		// return DB::select('EXEC dbo.buscar_clientes ?,?,?,?', array($cli_codigo,$cli_cuit,$cli_nombre,47));
	}

	public static function obtenerSeccionesHabilitadasInforme($user_id, $id_informe) {
		return DB::select('EXEC dbo.obtener_secciones_habilitadas_informe ?,?', array($user_id, $id_informe));
	}

	// public static function obtenerCliente($id_usuario=0){
	// 	return DB::select('EXEC dbo.obtener_cliente_usuario ?', array($id_usuario));
	// }

	public static function obtenerCliente($id_producto, $id_usuario = 0) {
		return DB::select('EXEC dbo.obtener_cliente_usuario ?,?', array($id_usuario, $id_producto));
	}


	public static function obtenerInsur() {
		return DB::select('EXEC dbo.cron_insur_php', array());
	}

	public static function obtenerJuiciosHomonimosActores() {
		return DB::select('EXEC dbo.backend_homonimos_actores', array());
	}

	public static function obtenerJuiciosHomonimosDemandados() {
		return DB::select('EXEC dbo.backend_homonimos_demandados', array());
	}

	public static function modificarJuiciosHomonimosBackend($tipo, $id_juicio, $cuit, $nombre) {
		return DB::selectOne('EXEC dbo.backend_modificar_juicio ?,?,?,?', array($tipo, $id_juicio, $cuit, $nombre));
	}

	public static function obtenerHomonimos() {
		return DB::select('EXEC dbo.backend_homonimos', array());
	}

	public static function modificarHomonimosBackend($id_juicio, $cuit_a, $cuit_d, $actor, $demandado) {
		return DB::selectOne('EXEC dbo.backend_modificar_homonimos ?,?,?,?,?', array($id_juicio, $cuit_a, $cuit_d, $actor, $demandado));
	}

	// Procesamiento cablevision.
	public static function obtenerCablevision() {
		return DB::select('EXEC dbo.obtener_datos_cablevision', array());
	}

	public static function insertarCablevision($identificacion, $domicilio, $piso, $depto, $localidad, $codpos, $provincia, $email, $fuente, $id_cablevision) {
		return DB::selectOne('EXEC dbo.insertar_datos_cablevision ?,?,?,?,?,?,?,?,?,?', array($identificacion, $domicilio, $piso, $depto, $localidad, $codpos, $provincia, $email, $fuente, $id_cablevision));
	}


	public static function insertarContenidoArchivoSociedades($codigo, $texto) {
		return DB::selectOne('EXEC dbo.insertar_contenido_archivo_sociedades ?,?', array($codigo, $texto));
	}

	public static function obtenerPadronPersonalizado($cuit, $dni, $nombre, $domicilio, $razon_social) {
		return DB::selectOne('EXEC dbo.backend_busqueda_padron_personalizada ?,?,?,?,?', array($cuit, $dni, $nombre, $domicilio, $razon_social));
	}
	//ABM cuit vinculados - datos card 'Formales'
	public static function obtenerEmpleados($cuit) {
		return DB::selectOne('EXEC dbo.obtener_empleados ?', array($cuit));
	}

	public static function obtenerSociedades($cuit) {
		return DB::selectOne('EXEC dbo.obtener_sociedades ?', array($cuit));
	}

	public static function obtenerDefuncion($dni) {
		return DB::selectOne('EXEC dbo.obtener_defuncion ?', array($dni));
	}

	public static function obtenerPersona($cuit) {
		return DB::selectOne('EXEC dbo.obtener_persona ?', array($cuit));
	}

	public static function obtenerEmpleadoDe($cuit) {
		return DB::select('EXEC dbo.obtener_empleado_de ?', array($cuit));
	}

	public static function obtenerDomicilios($cuit) {
		return DB::select('EXEC dbo.obtener_domicilios ?,?,?', array($cuit, 1, null));
	}

	public static function obtenerInscripciones($cuit) {
		return DB::selectOne('EXEC dbo.obtener_inscripciones ?', array($cuit));
	}

	public static function obtenerRazonSocialPorLetra($letra) {
		return DB::select('EXEC dbo.obtener_razon_social_letra ?', array($letra));
	}

	public static function obtenerProcesoInsurTotales() {
		return DB::selectOne('EXEC dbo.procesamiento_insur_totales', array());
	}

	public static function obtenerMarcasConCuit() {
		return DB::select('EXEC dbo.obtener_marcas_cuit');
	}

	public static function cargarEstadoMarcasExterno($cuit, $dato, $tipo_dato, $acta) {
		//return DB::selectOne('EXEC dbo.carga_estado_marcas_externo_2 ? ,?,?,?', array($cuit,$valor,$estado_directorio,$acta));		
		return DB::selectOne('EXEC dbo.carga_estado_marcas_externo_new ? ,?,?,?', array($cuit, $dato, $tipo_dato, $acta));
	}

	public static function obtenerEdictos($cuit) {
		return DB::select('EXEC dbo.obtener_edictos ?', array($cuit));
	}
	public static function obtenerEdictosHomonimos($palabras) {
		return DB::select('EXEC dbo.obtener_edictos_homonimos ?', array($palabras));
	}

	public static function obtenerAccionistas($cuit) {
		return DB::select('EXEC dbo.obtener_accionistas ?', array($cuit));
	}

	public static function obtenerAccionistasNew($cuit) {
		return DB::select('EXEC dbo.obtener_accionistas_new ?', array($cuit));
	}
	public static function backendCambiosNombres($cuit) {
		return DB::select('EXEC dbo.backend_cambios_nombres ?,?,?', array(null, $cuit, '1'));
	}


	public static function cargarDatosHtmlMarcas($datos_parseo) {
		//actualizar lista,falta pasar transferencias

		$acta = $datos_parseo['acta'];
		$fecha_presentacion = $datos_parseo['fecha_presentacion'];
		$tipo_marca = $datos_parseo['tipo_marca'];
		$domicilio_legal = $datos_parseo['domicilio_legal'];
		$renov_de = $datos_parseo['renov_de'];
		$renov_por = $datos_parseo['renov_por'];
		$clase = $datos_parseo['clase'];
		$nombre_titular = $datos_parseo['nombre_titular'];
		$porcentaje_titularidad = $datos_parseo['porcentaje_titularidad'];
		$cuit = $datos_parseo['cuit'];
		$domicilio_real = $datos_parseo['domicilio_real'];
		$localidad = $datos_parseo['localidad'];
		$codigo_postal = $datos_parseo['codigo_postal'];
		$fecha_publicacion = $datos_parseo['fecha_publicacion'];
		$num_publicacion = $datos_parseo['num_publicacion'];
		die('nop');
		return DB::selectOne('EXEC dbo.carga_datos_html_marcas ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array($acta, $fecha_presentacion, $tipo_marca, $domicilio_legal, $renov_de, $renov_por, $clase, $nombre_titular, $porcentaje_titularidad, $cuit, $domicilio_real, $localidad, $codigo_postal, $fecha_publicacion, $num_publicacion));
	}

	public static function cargaFuenteCyQbt($datos) {
		$id_boletin = $datos[0]['id_boletin'];
		$fecha_publicacion = $datos[0]['fecha_publicacion'];
		$tipo_de_publicacion = $datos[0]['tipo_de_publicacion'];
		$localidad_juzgado = $datos[0]['localidad_juzgado'];
		$tipo_de_juzgado = $datos[0]['tipo_de_juzgado'];
		$nro_juzgado = $datos[0]['nro_juzgado'];
		$nro_secretaria = $datos[0]['nro_secretaria'];
		$nro_expediente = $datos[0]['nro_expediente'];
		$autos = $datos[0]['autos'];
		$fecha_decreto = $datos[0]['fecha_decreto'];
		$fecha_verificacion = $datos[0]['fecha_verificacion'];
		$fecha_individual = $datos[0]['fecha_individual'];
		$fecha_inf_gral = $datos[0]['fecha_inf_gral'];
		$tipo_entidad = $datos[0]['tipo_entidad'];
		$nombre = $datos[0]['nombre'];
		$documento = $datos[0]['documento'];
		$provincia = $datos[0]['provincia'];
		$novedad = $datos[0]['novedad'];
		$nombre_file = $datos[0]['nombre_file'];
		$contenido_archivo = $datos[0]['contenido_archivo'];
		$ruta_archivo = $datos[0]['ruta_archivo'];
		$id_tipo_causa = $datos[0]['id_tipo_causa'];
		$tipo_de_proceso = $datos[0]['tipo_de_proceso'];
		$demandado_sindico = $datos[0]['sindico'];
		$sindico_demandado = $datos[0]['demandado'];
		$cuit_demandado = $datos[0]['cuit_demandado'];
		//Misc::ddd($datos);
		return DB::selectOne('EXEC dbo.CYQ_BT ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array($id_boletin, $fecha_publicacion, $tipo_de_publicacion, $localidad_juzgado, $tipo_de_juzgado, $nro_juzgado, $nro_secretaria, $nro_expediente, $autos, $fecha_decreto, $fecha_verificacion, $fecha_individual, $fecha_inf_gral, $tipo_entidad, $nombre, $documento, $provincia, $novedad, $nombre_file, $contenido_archivo, $ruta_archivo, $id_tipo_causa, $tipo_de_proceso, $demandado_sindico, $sindico_demandado, $cuit_demandado));
	}

	public static function buscarCuitFuenteCyQBt($nombre, $cuit, $nombre_parse) {
		return DB::selectOne('EXEC dbo.sp_buscar_cuit ?,?,?', array($nombre, $cuit, $nombre_parse));
	}


	//DOSSIER

	//obtiene productos para generar dossier
	public static function obtenerProductosDossier() {
		return DB::select('EXEC dbo.obtener_productos_dossier');
	}
	//obtiene secciones de producto
	public static function obtenerSeccionesProductoDossier() {
		return DB::select('EXEC dbo.obtener_secciones_dossier');
	}
	//obtiene SubSecciones de producto
	public static function obtenerSubSeccionesProductoDossier() {
		return DB::select('EXEC dbo.obtener_subSecciones_dossier');
	}

	//obtiene SubSecciones de producto por id_seccion
	public static function obtenerSubSeccionesProductoDossierPorId($id_seccion) {
		return DB::select('EXEC dbo.obtener_subSecciones_dossier_por_id ?', array($id_seccion));
	}


	public static function obtenerTraducciones($blade) {
		/* if (!is_null(Session::get('traduccion_dinamica'))) {
			// Session::forget('traduccion_dinamica');
			return;
		} */
		//
		$app_id = Session::get('webdata')['app_id'] ?? ENV('APP_ID');
		$select = DB::select('EXEC dbo.obtener_traducciones_dinamicas ?,?', array($blade, $app_id));
		// $select = DB::select('EXEC dbo.obtener_traducciones_dinamicas ?,?', array($blade,$app_id));
		$array_traducciones = [];
		$idioma = isset(Session::get('usuario')->codigo_idioma) ? Session::get('usuario')->codigo_idioma : 'spa';
		//
		foreach ($select as $key => $value) {
			//$array_traducciones[$value->{'spa'}] = $value->{$idioma};
			$array_traducciones[strtoupper(substr(preg_replace('/[^a-zA-Z0-9]/', '', $value->{'spa'}), 0, 500))] = $value->{$idioma};
		}
		//
		Session::put('traduccion_dinamica', $array_traducciones);
	}

	//--  RAMI  --
	public static function info_api_all() {
		return DB::select('EXEC dbo.panel_control_api');
	}

	//--  DIEGO  --
	public static function info_fuentes_procesadas($action, $fecha_desde, $fecha_hasta) {
		return DB::select('EXEC dbo.fuentes_procesadas_info ?,?,?', array($action, $fecha_desde, $fecha_hasta));
	}


	//--  CLAUDIO  --

	/*
	FUNCION PARA EL REGISTRO DE ERRORES, SE DEBE INCLUIR DENTRO DEL EXCEPTION O CUANDO SE VALIDA SI N FUNCION DA TRUE O FALSE 
	
	REQUIERE: 
	$seccion = nombre del Controlador, vista, o seccion a evaluar.
	$nombre_funcion = la funcion que emite el error.
	$mensaje = se debe incluir un breve mensaje haciendo referencia a la posible falla.
	*/
	static function control_erores($seccion='', $nombre_funcion='', $mensaje='') {
		// $ip_server -> es para conocer el server donde se esta produciendo el error.
		$ip_server = $_SERVER['SERVER_ADDR'];
		// Llamada al store, no devuelve nada, solo guarda el registro.
		DB::select('EXEC dbo.info_log_erores ?,?,?,?', array($ip_server, $seccion, $nombre_funcion, $mensaje));
	}


	//------------------------------------------------------------------------------------------------------------------------------
	/*
	FUNCION PARA LA ADMINISTRACION DE LOS LOG DE ERRORES

	REQUIERE:
	$action = accion a ejecutar, 'todo' -> devuelve todos los resultados y no tiene en cuenta las fechas. 'eliminar' -> elimina el
	registro correspondiente al $id pasado. Si la action es '' (vacia) va a retornar todos los registros de las fechas desde y 
	hasta.

	$fecha_desde = fecha donde inicia la busqueda.

	$fecha_hasta = fecha inclusive hasta donde va a buscar.

	$id = es el id del registro que contiene el error. Este parametro solo se debe incluir cuando la action es eliminar.

	*/
	static function manejador_log_errores($action = '', $fecha_desde = '', $fecha_hasta = '', $id = '') {
		return DB::select('EXEC dbo.manejador_log_erores ?,?,?,?', array($action, $fecha_desde, $fecha_hasta, $id));
	}

	// ------ FUNCIONES DIEGO

	public static function busquedaPadron2($cuit = NULL, $dni = NULL, $razon_social = NULL) {
		$buscador_cuit = ($cuit) ? true : null;
		$buscador_dni = ($dni) ? true : null;
		$buscador_razon_social = ($razon_social) ? true : null;

		if ($buscador_cuit) {
			$cuit = Misc::parsearBusquedaPadron($cuit);
			if ($cuit == "") {
				return [];
			}
		} else if ($buscador_dni) {
			$dni = Misc::parsearBusquedaPadron($dni);
			if ($dni == "") {
				return [];
			}
		} else if ($buscador_razon_social) {
			$razon_social = Misc::parsearBusquedaPadron($razon_social);
			if ($razon_social == "") {
				return [];
			}
		}
		return DB::select('EXEC dbo.backend_buscar_en_padron ?,?', array($cuit, $razon_social));
	}

	public static function obtenerTitulos() {
		return DB::select('EXEC obtener_titulos_generales ?', array(ENV('ID_INFORME_COMERCIAL')));
	}
	
	public static function busquedaPadronAutocomplete($input_autocomplete, $todos_los_paises) {
		$input_autocomplete = Misc::parsearBusquedaPadron($input_autocomplete);
		if ($input_autocomplete == "") {
			return [];
		}
		return DB::select('EXEC dbo.busqueda_padron_autocompletar ?,?', array($input_autocomplete, $todos_los_paises));
	}

	// FUNCION QUE BUSCA EN EL PADRON DE INQUIRO
	public static function busquedaPadronInquiro($input_autocomplete) {
		$input_autocomplete = Misc::parsearBusquedaPadron($input_autocomplete);
		if ($input_autocomplete == "") {
			return [];
		}
		return DB::select('EXEC dbo.IV_padron ?', array($input_autocomplete));
	}

	// ------ GENERA INCONVENIENTES AL PASAR EN BACKEND2 "SQLSTATE[HY000] Unknown host machine name (SYBASE) (severity 2)" - POSIBLEMENTE FALTE DECLARACIÓN DE VARIABLE DE ENTORNO.
	// STORE CONSULTA FORMULARIOS ASOCIADOS A ID_USUARIO - DIEGO 
	public static function formulariosWP($valor1, $valor2, $valor3, $valor4, $valor5, $valor6, $valor7, $flag) {
		// CONEXIÓN A BBDD SQLSERVER DEV //
		global $DB_SQL_HOST;
		global $DB_SQL_USERNAME;
		global $DB_SQL_PASSWORD;
		global $DB_SQL_DATABASE;

		$DB_SQL_HOST = ENV('DB_SQL_HOST_DEV');
		$DB_SQL_USERNAME = ENV('DB_SQL_USERNAME_DEV');
		$DB_SQL_PASSWORD = ENV('DB_SQL_PASSWORD_DEV');
		$DB_SQL_DATABASE = ENV('DB_SQL_DATABASE_DEV');

		$connection = new PDO('dblib:host=' . $GLOBALS['DB_SQL_HOST'] . ';dbname=' . $GLOBALS['DB_SQL_DATABASE'] . ';charset=utf8', $GLOBALS['DB_SQL_USERNAME'], $GLOBALS['DB_SQL_PASSWORD']);

		$tabla_fide = $connection->prepare("SELECT * FROM wp_cf_form_fidelitas");
		$tabla_fide->setFetchMode(PDO::FETCH_OBJ);
		$tabla_fide->execute();
		$todoFide = $tabla_fide->fetchAll();



		#$resultado = DB::select('EXEC dbo.consultar_user_id ?', array($valor3));
		if ($flag == 'usuario') {
			$resultado = $connection->prepare("SELECT * FROM wp_cf_form_usuario");
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
			$todoUsID = $resultado->fetchAll();
			return $todoUsID;
		}
		if ($flag == 'formularioSel') {
			$resultado = $connection->prepare("SELECT * FROM wp_cf_form_fidelitas where id_usuario = '" . $valor3 . "'");
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
			$todoUsID = $resultado->fetchAll();
			return $todoUsID;
		}
		if ($flag == 'plantillas') {
			$resultado = $connection->prepare("SELECT * FROM wp_cf_form_plantillas");
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
			$plantillas = $resultado->fetchAll();
			return $plantillas;
		}
		if ($flag == 'nav') {
			$resultado = $connection->prepare("SELECT * FROM wp_cf_form_usuario where nombre_usuario like '" . strtoupper($valor3) . "'");
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
			$todoUsID = $resultado->fetchAll();
			return $todoUsID;
		}
		if ($flag == 'admin') {
			$resultado = $connection->prepare("SELECT * FROM wp_cf_form_usuario");
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
			$todoUs = $resultado->fetchAll();
			return $todoUs;
		}
		if ($flag == 'ultimaEntrada') {
			$resultado = $connection->prepare("SELECT * FROM wp_cf_form_indice");
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
			$entrada = $resultado->fetchAll();
			return $entrada;
		}
		if ($flag == 'getEstadoUsuario') {
			$resultado = $connection->prepare("SELECT estado FROM wp_cf_form_usuario WHERE id = " . $valor1 . " AND nombre_formulario LIKE '" . $valor2 . "'");
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
			$entrada = $resultado->fetchAll();
			return $entrada;
		}
		if ($flag == 'escribirF') {
			$resultado = $connection->prepare("UPDATE wp_cf_form_fidelitas SET valor_campo = '" . $valor2 . "' WHERE id_usuario = " . $valor3 . " AND id_campo LIKE '" . $valor1 . "' AND nombre_form LIKE '" . $valor5 . "' AND id_entrada = " . $valor4);
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
		}
		if ($flag == 'updateEstado') {
			$update = $connection->prepare("UPDATE wp_cf_form_usuario SET estado = '" . $valor2 . "' WHERE id = " . $valor1);
			$update->setFetchMode(PDO::FETCH_OBJ);
			$update->execute();
		}
		if ($flag == 'crearForm') {
			$createForm = $connection->prepare("INSERT into wp_cf_form_plantillas (nombre_formulario, id_formulario, link_formulario) VALUES ('" . $valor2 . "', '" . $valor1 . "', '" . $valor3 . "')");
			$createForm->setFetchMode(PDO::FETCH_OBJ);
			$createForm->execute();
			return 'Se creo formulario exitosamente';
		}
		if ($flag == 'asignarF') {
			$asignForm = $connection->prepare("INSERT into wp_cf_form_usuario (id_usuario, nombre_usuario, cuit_usuario, codigo_usuario, nombre_formulario, id_formulario, link_formulario, estado) VALUES ('" . $valor3 . "', '" . $valor5 . "', '" . $valor6 . "', '" . $valor4 . "', '" . $valor2 . "', '" . $valor1 . "', '" . $valor7 . "','F')");
			$asignForm->setFetchMode(PDO::FETCH_OBJ);
			$asignForm->execute();
		}
		if ($flag == 'fidelitas') {
			return $todoFide;
		}
		if ($flag == 'fideUs') {
			$tabla_fide = $connection->prepare("SELECT * FROM wp_cf_form_fidelitas WHERE id_usuario = " . $valor1);
			$tabla_fide->setFetchMode(PDO::FETCH_OBJ);
			$tabla_fide->execute();
			$todoFide = $tabla_fide->fetchAll();
		}
		if ($flag == 'updateUsuario') {
			$resultado = $connection->prepare("UPDATE wp_cf_form_fidelitas SET id_usuario = " . $valor1 . " WHERE id_entrada = " . $valor2);
			$resultado->setFetchMode(PDO::FETCH_OBJ);
			$resultado->execute();
		}
		if ($flag == 'consultaCron') {
			$entrada = $connection->prepare("SELECT * FROM wp_cf_form_usuario_flag WHERE id_usuario = " . $valor1);
			$entrada->setFetchMode(PDO::FETCH_OBJ);
			$entrada->execute();
			$entrada = $entrada->fetchAll();
			return $entrada;
		}
		if ($flag == 'cron') {
			$entrada = $connection->prepare("INSERT into wp_cf_form_usuario_flag (id_usuario, nombre_usuario, nombre_formulario, id_formulario, flag) VALUES ('" . $valor1 . "', '" . strtoupper($valor2) . "', '" . $valor3 . "', '" . $valor4 . "', '" . $valor5 . "')");
			$entrada->setFetchMode(PDO::FETCH_OBJ);
			$entrada->execute();
		}

	}

	public static function concursos_quiebras_temp_original($flag, $campo1) {
		global $DB_SQL_HOST;
		global $DB_SQL_USERNAME;
		global $DB_SQL_PASSWORD;
		global $DB_SQL_DATABASE;

		$DB_SQL_HOST = ENV('DB_SQL_HOST_DEV');
		$DB_SQL_USERNAME = ENV('DB_SQL_USERNAME_DEV');
		$DB_SQL_PASSWORD = ENV('DB_SQL_PASSWORD_DEV');
		$DB_SQL_DATABASE = ENV('DB_SQL_DATABASE_DEV');

		$connection = new PDO('dblib:host=' . $GLOBALS['DB_SQL_HOST'] . ';dbname=' . $GLOBALS['DB_SQL_DATABASE'] . ';charset=utf8', $GLOBALS['DB_SQL_USERNAME'], $GLOBALS['DB_SQL_PASSWORD']);
		if ($flag == 'cantidad') {
			$tabla_fide = $connection->prepare("EXEC quiebra_juicios_store 'consulta_juicios_errores_cantidad',0,'','','','','','','','','','','','',''");
			$tabla_fide->setFetchMode(PDO::FETCH_OBJ);
			$tabla_fide->execute();
			return $tabla_fide->fetchAll();
		} elseif ($flag == 'errores') {
			$tabla_fide = $connection->prepare("EXEC quiebra_juicios_store 'consulta_juicios_errores',0,'','','','','','','','','','','','',''");
			$tabla_fide->setFetchMode(PDO::FETCH_OBJ);
			$tabla_fide->execute();
			return $tabla_fide->fetchAll();
		} elseif ($flag == 'consulta_procesadas') {
			$tabla_fide = $connection->prepare("EXEC quiebra_juicios_store 'consulta_quiebra_juicios',0,'','" . $campo1[0] . "','','','','','','','','','" . $campo1[1] . "','',''");
			$tabla_fide->setFetchMode(PDO::FETCH_OBJ);
			$tabla_fide->execute();
			return $tabla_fide->fetchAll();
		} elseif ($flag == 'borrarLog') {
			$tabla_fide = $connection->prepare("EXEC quiebra_juicios_store 'delete_juicios_errores'," . $campo1 . ",'','','','','','','','','','','','',''");
			$tabla_fide->setFetchMode(PDO::FETCH_OBJ);
			$tabla_fide->execute();
			return $tabla_fide->fetchAll();
		} elseif ($flag == 'editEntrada') {
			$tabla_fide = $connection->prepare("EXEC quiebra_juicios_store 'update_juicios'," . $campo1[0] . ",'','2000-01-01','','" . $campo1[1] . "','" . $campo1[2] . "','" . $campo1[3] . "','" . $campo1[4] . "','" . $campo1[5] . "','" . $campo1[6] . "','" . $campo1[7] . "','" . $campo1[8] . "','" . $campo1[9] . "','" . $campo1[10] . "'");
			$tabla_fide->setFetchMode(PDO::FETCH_OBJ);
			return $tabla_fide->execute();
			;
		}
	}

	public static function concursos_quiebras_temp($flag, $campo1) {
		if ($flag == 'cantidad') {
			return DB::select('EXEC dbo.procesar_edictos_juicios ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('consulta_juicios_errores_cantidad', 0, '', '', '', '', '', '', '', '', '', '', '', '', '', ''));
		} elseif ($flag == 'errores') {
			return DB::select('EXEC dbo.procesar_edictos_juicios ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('consulta_juicios_errores', 0, '', '', '', '', '', '', '', '', '', '', '', '', '', ''));
		} elseif ($flag == 'consulta_procesadas') {
			return DB::select('EXEC dbo.procesar_edictos_juicios ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('consulta_quiebra_juicios', 0, '', $campo1[0], '', '', '', '', '', '', '', '', $campo1[1], '', '', ''));
		} elseif ($flag == 'borrarLog') {
			return DB::select('EXEC dbo.procesar_edictos_juicios ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('delete_juicios_errores', $campo1, '', '', '', '', '', '', '', '', '', '', '', '', '', ''));
		} elseif ($flag == 'editEntrada') {
			return DB::select('EXEC dbo.procesar_edictos_juicios ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('update_juicios', $campo1[0], '', '2000-01-01', '', $campo1[1], $campo1[2], $campo1[3], $campo1[4], $campo1[5], $campo1[6], $campo1[7], $campo1[8], $campo1[9], $campo1[10], ''));
		}


	}

	//---------------------------  FUNCIONES PARA NUEVO BLUE  ----------------------------------------------------------------//
	/*
	Funcion que retorna la cantidad de clientes activos e inactivos
	*/
	public static function totalClientes() {
		return DB::select('EXEC dbo.clientes_totales');
	}

	/*
	Funcion que retorna la cantidad de usuarios activos e inactivos
	*/
	public static function totalUsu() {
		return DB::select('EXEC dbo.usuarios_totales');
	}

	/*
	Funcion que retorna Pais, codigo, numero identificador para N pais, ej: Argentina => cuil, cuit
	Si no se especifica un parametro, retorna todos los paises.
	REQUIERE: $codigo == pais_codigo ('AR','BR',etc).
	*/
		  public static function PaisesTipoIdentificacion($codigo = null) {
			if (is_null($codigo)) {
				return DB::select('EXEC dbo.obtener_paises_identificadores');
			} else {
				return DB::select('EXEC dbo.obtener_paises_identificadores ?', array($codigo));
			}
		}
	//------------------------------------------------------------------------------------------------------------------------//

	/**
	 * Funcion que devuelve las preferencias de navegacion y idioma del usuario
	 * @param string el id del usuario
	 * @return object las preferencias del usuario
	 */
	public static function obtenerPreferenciasUsuario($user_id) {
		return DB::selectOne('EXEC dbo.obtener_preferencias_usuario ?', array($user_id));
	}

	/**
	 * Funcion que devuelve datos del perfil del usuario
	 * 
	 * @param string el id del usuario
	 * @return object los datos del perfil de usuario
	 * 
	 */
	public static function obtenerPerfil($user_id) {
		return DB::selectOne('EXEC dbo.obtener_perfil ?', array($user_id));
	}

	/**
	 * Funcion que devuelve los permisos de navegacion que tiene el usuario
	 * 
	 * @access public
	 * @static
	 * @param int el id del usuario
	 * @return array|null permisos del usuario
	 */
	public static function obtenerPermisos($user_id) {
		// dd(array('LIST_BY_USERID',$user_id,Session::get('webdata')['id_menu_plataforma'],$user_id));
		return DB::select('EXEC dbo.user_menu_acces_ ?,?,?,?', array('LIST_BY_USERID', $user_id, Session::get('webdata')['id_menu_plataforma'], $user_id));
	}

	/**
	 * @access public
	 * @param string el texto a registrar
	 * @param string la accion a registrar
	 * @param string id de la plataforma (Ej:'IV_BACK')
	 * @param string|int el id del ususario
	 * @param string el servicio contratado (Codigo de producto)
	 * @param string|null el id de cliente
	 * @param string|null el id de contraparte
	 * @param string|null el doc id
	 * @param string|null el de set documento
	 * @param string|null la familia
	 * @param string|null el tipo informe
	 * @param string|null el tipo doc
	 * @param string|null el id del tipo de tarea
	 * @param string|null si la tarea es 'I' iniciado o 'F' finalizada
	 * @param string|null el id del informe
	 * @return null|array
	 */
	public static function logTrazabilidad(string $texto, string $accion, string $id_plataforma, $user_id, $servicio_contratado, $cliente = 0, $contraparte = null, $doc_id = null, $set_doc = null, $familia = null, $idtipoinforme = null, $tipo_doc = null, $idTarea = null, $tipo_accion = null, $informe = null) {
		return DB::select('EXEC dbo.insertar_trazabilidad ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array($texto, $cliente, $accion, $id_plataforma, $contraparte, $user_id, $doc_id, $servicio_contratado, $set_doc, $familia, $idtipoinforme, $tipo_doc, $idTarea, $tipo_accion, $informe));
		// @texto varchar(1000),
		// @cliente int,
		// @accion varchar(100),
		// @id_plataforma varchar(10) = 'FI', /*FI - IV - IM - BACK */
		// @contraparte	int = null,
		// @user_id		int	= null, 
		// @doc_id bigint = null, 
		// @servicio_contratado int = null,
		// @set_doc int = null,
		// @familia int = null,
		// @idtipoinforme int = null,
		// @tipo_doc int = null,
		// @idTarea int = null,
		// @TipoAccion varchar(1) = null, /* I = INICIO / F = FIN / P= PAUSA*/
		// @informe int = null
	}
}