<?php namespace App\Http\Controllers;

use Session;
use Request; 
use App\Custom\SQLConnection;
use App;
use App\Custom\Misc;
use DateTime;
use stdClass;
use DB;
use Exception;
use Response;
use Illuminate\Support\Facades\Log;
 

class TablasGeneralesController extends Controller  {

	public static $ent_bancaria;
	public static $plataformas;
	//Fuentes
	public static function obtenerFuentes(){
	$menu = Misc::obtenerPermisosNavigatorNoCuit();
    //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
    $valido =  Misc::restriccionPermiso('FUENTES');
    if(!$valido){ return redirect('/menu'); }
		$fuentes 		= SQLConnection::backendStoreProcedure('backend_obtener_fuentes',array(),"select");

		foreach($fuentes as $fuente){
			$nuevafecha = strtotime ( '-'.$fuente->periodicidad.' day' , strtotime ( date('Y-m-d')) ) ;
			$nuevafecha = date ( 'Y-m-d' , $nuevafecha );

			if($fuente->fecha_informacion > $nuevafecha){
					$fuente->estado_texto = 'Al día';
					$fuente->estado = 1;
			}else{
					$fuente->estado_texto = 'Con demora';
					$fuente->estado = 2;
			}
		}

		return View('/tablasgenerales/fuentes')->with(compact('fuentes','menu'));
	}
	public static function modificarFuentes(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
    //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
    $valido =  Misc::restriccionPermiso('FUENPROC');
    if(!$valido){ return redirect('/menu'); }
		//$fuentes_procesadas 		= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_procesadas',array(null,null,null),"select");
		$fuentes_descripciones 	= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_descripciones',array(),"select");
		return View('/tablasgenerales/fuentes_procesadas_2')->with(compact('fuentes_procesadas','menu','fuentes_descripciones'));
	}

	public static function obtenerFuentesProcesadas(){
//Fuentes Procesadas
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
    //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
    $valido =  Misc::restriccionPermiso('FUENPROC');
    $valores 		= [];
		$valores[] 	= Request::input('fuente_con');
		$valores[]	= Request::input('fecha_desde_con');
		$valores[]	= Request::input('fecha_hasta_con');
    if(!$valido){ return redirect('/menu'); }
		
    $fuentes 		= SQLConnection::backendStoreProcedure('backend_obtener_fuentes',array(),"select");
		
		foreach($fuentes as $fuente){
			$nuevafecha = strtotime ( '-'.$fuente->periodicidad.' day' , strtotime ( date('Y-m-d')) ) ;
			$nuevafecha = date ( 'Y-m-d' , $nuevafecha );
			$nuevafecha2 = strtotime ('-2 day', strtotime( $nuevafecha ));
			$nuevafecha2 = date ( 'Y-m-d' , $nuevafecha2 );

			if($fuente->fecha_informacion == null) { 
				$fuente->estado_texto = 'Sin procesos';
				$fuente->estado = 0;
			}
			else
			{
				if($fuente->fecha_informacion > $nuevafecha){
						$fuente->estado_texto = 'Al día';
						$fuente->estado = 1;
				}else{
					  if($fuente->fecha_informacion >= $nuevafecha2){
							$fuente->estado_texto = 'Con demora';
							$fuente->estado = 2;
						} else {
							$fuente->estado_texto = 'Con atraso';
							$fuente->estado = 3;
						}
				}
			}	
		}

		//$fuentes_procesadas 		= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_procesadas',$valores,"select");
		$fuentes_descripciones 	= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_descripciones',array(),"select");
		return View('/tablasgenerales/fuentes_procesadas')->with(compact('menu','fuentes_descripciones','fuentes'));
		
	}

	public static function obtenerFuentesProcesadas2(){
		//Fuentes Procesadas
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
    	//valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
		$valido =  Misc::restriccionPermiso('FUENPROC');
		$valores 		= [];
			$valores[] 	= Request::input('fuente_con');
			$valores[]	= Request::input('fecha_desde_con');
			$valores[]	= Request::input('fecha_hasta_con');
		if(!$valido){ return redirect('/menu'); }

		$fuentes_procesadas 		= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_procesadas',$valores,"select");
		$fuentes_descripciones 	= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_descripciones',array(),"select");
		return View('/tablasgenerales/fuentes_procesadas_2')->with(compact('fuentes_procesadas','menu','fuentes_descripciones'));
		
	}


	public static function obtenerFuentesDescripciones(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
    //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
    $valido =  Misc::restriccionPermiso('FUENPROC');
    if(!$valido){ return redirect('/menu'); }
		$fuentes_procesadas 		= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_procesadas',array(null,null,null),"select");
		$fuentes_descripciones 	= SQLConnection::backendStoreProcedure('backend_obtener_fuentes_descripciones',array(),"select");
		return View('/tablasgenerales/fuentes_procesadas')->with(compact('fuentes_procesadas','menu','fuentes_descripciones'));
	}

	public static function ModificarFuentesProcesadas(){
		$info 		= [];
		$info[] 	= Request::input('fecha_informacion');
		$info[]		= Request::input('fuente');
		$info[]		= Request::input('observaciones');
		$fuentes_procesadas = SQLConnection::backendStoreProcedure('backend_modificar_fuentes_procesadas',$info,"selectOne");
		return 'ok';
	}

	public static function ModificarFuentesDescripciones(){
		$info 		= [];
		$info[] 	= Request::input('id_fuente_descripcion');
		$info[]		= Request::input('nombre');
		$info[]		= Request::input('descripcion');
		$info[]		= Request::input('periodicidad');
		$info[]		= Request::input('proveedor');
		$info[]		= Request::input('campos');
		$info[]		= Request::input('secciones');
		$info[]		= Request::input('accion');
		//$info       = array_values($info);
		
		$fuentes_procesadas = SQLConnection::backendStoreProcedure('backend_modificar_fuentes_descripciones',$info,"selectOne");
		return 'ok';
	}

// Slides

	public static function obtenerSlider(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
	    $valido =  Misc::restriccionPermiso('SLIDE');
	    if(!$valido){ return redirect('/menu'); }
		$sliders = SQLConnection::backendStoreProcedure('backend_obtener_slider',array(),"select");
		$archivo = $sliders['archivo'];
		$ruta_archivo = ENV('RUTA_ARCHIVO_PDF');

		$archivo = ENV('RUTA_SLIDER').'/'.$archivo;
		$existe_jpg = false;
		if (file_exists($archivo)){
		 $existe_jpg = true; 
		} 
		return View('/tablasgenerales/slider')->with(compact('sliders','menu','existe_jpg'));
	}

	public static function ModificarSlider(){
		$user_id 	= Session::get("usuario")->user_id;
		$info 		= [];
		$info[]     = $user_id;
		$info[] 	= Request::input('ruta_imagen');
		$info[]		= Request::input('texto');
		$info[]		= Request::input('accion');
		$fuentes_procesadas = SQLConnection::backendStoreProcedure('backend_modificar_slider',$info,"selectOne");
		return 'ok';
	}

	// Entidades Bancarias
	public function obtenerEntidadesBancarias(){
		
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido =  Misc::restriccionPermiso('ENTIDAD');
        if(!$valido){ return redirect('/menu'); }
		self::$ent_bancaria = SQLConnection::obtenerCodigos("obtener_EntidadesBancarias");
		$ent_bancaria = self::$ent_bancaria;
		
		return view('tablasgenerales/entidades_bancarias')->with(compact('ent_bancaria','menu'));
	}
	
  public function abmEntidadesBancarias(){
		$accion 		  = Request::input('accion'); 
		$codigo_ent   = Request::input('id_banco');
		$nombre 		  = Request::input('nombre');
		$nombre_corto = Request::input('nombre_corto');
		$grupo 				= Request::input('grupo');
		if($grupo == ''){
			$grupo = null; 
		}	
		$params = array($accion,$codigo_ent,$nombre,$nombre_corto,$grupo); 
		//print_r($params); die(); 
		$mensaje_bancos = SQLConnection::backendStoreProcedure("backend_abm_entidades_bancarias",$params,'selectOne');
			
		$ent_bancaria = SQLConnection::obtenerCodigos("obtener_EntidadesBancarias");
		//print_r($ent_bancaria); die(); 

		return json_encode(array('error' => $mensaje_bancos->error,'mensaje' => $mensaje_bancos->mensaje, 
	 	'tabla' => view('tablasgenerales/tabla_entidades_bancarias')->with(compact('ent_bancaria'))->render()
	 	));

		}

	// CIUU

	public function obtenerCiuu(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
    $valido =  Misc::restriccionPermiso('TERMINOS');
    if(!$valido){ return redirect('/menu'); }
 	  $tipo = (Request::input('tipo')=="") ? 'R' : Request::input('tipo');
		$ramos  = SQLConnection::backendStoreProcedure('backend_ciuu',array('R'),'select');
		$ciuu  = $ramos;
		return view('tablasgenerales/ciuu')->with(compact('menu','ciuu','tipo','ramos'));
	}

	public function filtrarCiuu(){
 	  $tipo = (Request::input('tipo')=="") ? 'R' : Request::input('tipo');
		$ciuu  = SQLConnection::backendStoreProcedure('backend_ciuu',array($tipo),'select');
		$ramos  = SQLConnection::backendStoreProcedure('backend_ciuu',array('R'),'select');
		return view('tablasgenerales/tabla_ciuu')->with(compact('ciuu','tipo','ramos'));
	}

	public function modificarCiuu(){
		$token 			 = Request::input('_token');
		$formulario  = Request::input('formulario');
		$cod_ramo    = Request::input('cod_ramo'); 
		$cod_subramo = Request::input('cod_subramo'); 
		$descripcion = Request::input('descripcion'); 
		$params= array($formulario,$cod_subramo,$cod_ramo,$descripcion);
		SQLConnection::backendStoreProcedure('backend_modificar_ciuu',$params,'selectOne');
		return 'ok';
	}

	public function modificarCiuuRamo(){
		$token 			 = Request::input('_token');
		$cod_ramo    = Request::input('cod_ramo'); 
		$descripcion = Request::input('descripcion'); 
		$params= array($cod_ramo,$descripcion);
		SQLConnection::backendStoreProcedure('backend_modificar_ciuu_ramo',$params,'selectOne');
		return 'ok';
	}

	public function altaCiuuRamo(){
		$token 			 = Request::input('_token');
		$descripcion = Request::input('descripcion'); 
		$params= array($descripcion);
		SQLConnection::backendStoreProcedure('backend_CIUU_alta_ramo',$params,'selectOne');
		$tipo  = 'R';
		$ramos = SQLConnection::backendStoreProcedure('backend_ciuu',array('R'),'select');
		$ciuu  = $ramos;
		return view('tablasgenerales/tabla_ciuu')->with(compact('ciuu','tipo','ramos'));
	}

	// CIUU - Porcentajes de Afectacion

	public function obtenerCiuuPorcentajes(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
    $valido =  Misc::restriccionPermiso('TERMINOS');
    if(!$valido){ return redirect('/menu'); }
		$ciuu  = SQLConnection::backendStoreProcedure('backend_ciuu_porcentajes',array(''),'select');
		return view('tablasgenerales/ciuu_porcentajes')->with(compact('menu','ciuu'));
	}

	public function modificarCiuuPorcentajes(){
		$token 			 = Request::input('_token');
		$cod_ramo    = Request::input('cod_ramo'); 
		$porcentaje  = Request::input('porcentaje'); 
		$params= array($cod_ramo,$porcentaje);
		SQLConnection::backendStoreProcedure('backend_modificar_ciuu_porcentajes',$params,'selectOne');
		$ciuu  = SQLConnection::backendStoreProcedure('backend_ciuu_porcentajes',array(''),'select');
		return view('tablasgenerales/tabla_ciuu_porcentajes')->with(compact('ciuu'));
	}


	// Terminos y Condiciones

	public function obtenerTerminos(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido =  Misc::restriccionPermiso('TERMINOS');
        if(!$valido){ return redirect('/menu'); }
		//$cuit = Session::get('cuit');
		$cuit = Request::input('cuit');
		$visible = 1;
		$terminos  = SQLConnection::backendStoreProcedure('backend_terminos',array(NULL,$visible),'select');
		//print_r($terminos); die(); 
		self::$plataformas = SQLConnection::obtenerCodigos("obtener_plataformas");
		$plataformas = self::$plataformas;
		
		return view('tablasgenerales/terminos')->with(compact('terminos','visible','plataformas','menu','cuit'));
	}

	public function filtrarTerminos(){
		//$cuit = Session::get('cuit');
		$cuit = Request::input('cuit');
		$visible = (Request::input('visible')=="") ? 1 : Request::input('visible');
		$terminos  = SQLConnection::backendStoreProcedure('backend_terminos',array(NULL,$visible),'select');
		return view('tablasgenerales/tabla_terminos')->with(compact('terminos','visible','cuit'));
	}

	public function visibleTerminos(){ 
		$id_terminos = Request::input('id_terminos');	
		$visible_terminos = SQLConnection::backendVisible2($id_terminos,'backend_visible_terminos');

		return json_encode(array('error' => $visible_terminos->error,'mensaje' => $visible_terminos->mensaje)); 
	}

	public function altaTerminos(){
	 	$user_id 		= Session::get("usuario")->user_id;
		$valores = [];
		$valores['user_id']		= $user_id; 

		foreach (request()->except('_token') as $key => $valor) {
			  if (empty($valor)) {
		  	  	$valor = '0';
			  }

			  $valores[$key]=str_replace("\n", "<br>", $valor);
		}
		$valores=array_values($valores);
		//var_dump($valores); die(); 
		
		$store_procedure = 'backend_abm_terminos';
		$mensaje_general = SQLConnection::backendStoreProcedure($store_procedure,$valores,"selectOne");
		$visible = 1; 
		$terminos  = SQLConnection::backendStoreProcedure('backend_terminos',array(NULL,$visible),'select');
				
	 	return json_encode(array('error' => $mensaje_general->error,'mensaje' => $mensaje_general->mensaje,
	 	'tabla' => view('tablasgenerales/tabla_terminos')->with(compact('terminos','visible'))->render()
	 	));
	
	}
	
	// Registro Actividad
	public function obtenerRegistrosActividad(){

		$menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido =  Misc::restriccionPermiso('REPOCONS');
        if(!$valido){ return redirect('/menu'); }
		//var_dump($registros);
		return view('tablasgenerales/registro_actividad')->with(compact('menu'));
		
	}
	
	public function filtrarRegistrosActividad(){
		$cliente = Request::input('cliente');
		$fecha_desde = Request::input('fecha_desde');
		$fecha_hasta = Request::input('fecha_hasta');
		
		if ($cliente == '') { $cliente = ' ';}
		if ($cliente == '0') { $cliente = ' ';}
		if ($fecha_desde == '') { $fecha_desde = ' ';}
		if ($fecha_hasta == '') { $fecha_hasta = ' ';}

		$registros  = SQLConnection::backendStoreProcedure('backend_consumos_clientes',array($cliente, $fecha_desde, $fecha_hasta),'select');
		//var_dump($registros);
		return view('tablasgenerales/tabla_registro_actividad')->with(compact('registros'));
		//return json_encode(array('tabla' => view('tablasgenerales/registro_actividad')->with(compact('registros','menu'))->render()));
	
	}

	// Registro Consultas

	public function obtenerRegistrosConsultas(){

		$menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido =  Misc::restriccionPermiso('REPOCONS');
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL, 0, env('PLATAFORMA')), 'select');

        if(!$valido){ return redirect('/menu'); }
		//var_dump($registros);
		return view('tablasgenerales/registro_consultas')->with(compact('menu','clientes'));
		
	}

	public function filtrarRegistrosConsultas(){		
		try{
			$cuit = Request::input('cuit');
			$cliente = Request::input('cliente_val');
			$fecha_desde = Request::input('fecha_desde');
			$fecha_hasta = Request::input('fecha_hasta');
	
			if (!empty($fecha_desde) && !empty($fecha_hasta)) {
				$fecha_desde = DateTime::createFromFormat('m/d/Y', $fecha_desde)->format('Y-m-d');
				$fecha_hasta = DateTime::createFromFormat('m/d/Y', $fecha_hasta)->format('Y-m-d');
			}
	
			$registros = [];
	
			if (empty($cuit) && !empty($cliente)) {
				$registros = SQLConnection::backendStoreProcedure('backend_consultas_clientes', array($cliente, $fecha_desde, $fecha_hasta), 'select');
			} elseif (!empty($cuit) && empty($cliente)) {
				$registros = SQLConnection::backendStoreProcedure('backend_consultas_cuit', array($cuit, $fecha_desde, $fecha_hasta), 'select');
			}else{
				throw new Exception("Ocurrio un error, intentelo de nuevo.");
			}
			
			return view('tablasgenerales/tabla_registro_consultas')->with(compact('registros'));
		}catch(Exception $e){
			return $e->getMessage();
		}	   
	}
		
	public function obtenerRegistroConsumos(){
		$user_id = 0;
		$cliente = Request::input('cliente');
		$cli_nombre = Request::input('cli_nombre');
		//$informe_comercial_id = ENV('ID_INFORME_COMERCIAL');
		$producto= Request::input('producto');
		$producto_nombre= Request::input('producto_nombre');
		//$producto = ENV('ID_INFORME_COMERCIAL');
		//dd($producto);

		return view('tablasgenerales/registro_consumos')->with(compact('cliente','cli_nombre','producto','producto_nombre'));
	}

	/**
	 * @deprecated
	 */
	public function obtenerRegistroConsumosCliente(){
		$user_id = 0;
		$tipo = 'C';

		$producto = '';
		$tipo = '';
		
		//$registros  = SQLConnection::backendStoreProcedure('obtener_Registro_Consumos', array($cliente,$user_id,$fecha_desde,$fecha_hasta,$producto,$tipo),'select');

	}
	
	public function filtrarRegistroConsumos(){
		$fecha_desde = Request::input('fecha_desde_con');
		$fecha_hasta = Request::input('fecha_hasta_con');
		$user_id 	 = 0;
		$id_cliente  = Request::input('cliente');
		//$producto    = env('ID_INFORME_COMERCIAL');
		$producto = Request::input('producto');
		$producto_nombre= Request::input('producto_nombre');

		//dd($producto);
		
		if ($fecha_desde == '') { $fecha_desde = ' ';}
		if ($fecha_hasta == '') { $fecha_hasta = ' ';}
		$fecha_desde_dmy = substr($fecha_desde, 8, 2) . "/" . substr($fecha_desde, 5, 2) . "/" . substr($fecha_desde, 0, 4);
		$fecha_hasta_dmy = substr($fecha_hasta, 8, 2) . "/" . substr($fecha_hasta, 5, 2) . "/" . substr($fecha_hasta, 0, 4);

		$union = 0; 
		$union = DB::selectOne("SELECT top 1 cliente from clientes_union where cliente_union = " . $id_cliente);
		$tipo = 'C'; // ve las consultas de todo el cliente
		if (isset($union)) 
		//if ($id_cliente == '460960454') 
		{ 
				$tipo = 'F'; // ve todas las consultas de todos los clientes unificados en la facturacion
		}

		$params= array($id_cliente,$user_id,$fecha_desde,$fecha_hasta,$producto,$tipo);

		$registros  = SQLConnection::backendStoreProcedure('obtener_Registro_Consumos', $params,'select');

		$totales = [] ; 
		$total_gral = 0;
		foreach ($registros as $registro) {
			  $total_gral += 1; 
				if (isset($totales[$registro->username])) {
						$totales[$registro->username] += 1;
				}
				else
				{
						$totales[$registro->username] = 1;
				}
		}
    	//print_r($totales); die(); 
		return view('tablasgenerales/tabla_registro_consumos')->with(compact('registros','totales','total_gral','fecha_desde_dmy','fecha_hasta_dmy','producto','producto_nombre'));	
	}

	public function obtenerMisAportes(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		return view('tablasgenerales/misaportes')->with(compact('menu')); 
	}
	
	public function filtrarMisAportes(){
		$fecha_desde = Request::input('fecha_desde_con');
		$fecha_hasta = Request::input('fecha_hasta_con');
		//$fecha_desde_dmy = substr($fecha_desde, 8, 2) . "/" . substr($fecha_desde, 5, 2) . "/" . substr($fecha_desde, 0, 4);
		//$fecha_hasta_dmy = substr($fecha_hasta, 8, 2) . "/" . substr($fecha_hasta, 5, 2) . "/" . substr($fecha_hasta, 0, 4);
		if ($fecha_desde == '') { $fecha_desde = null;}
		if ($fecha_hasta == '') { $fecha_hasta = null;}
		$params= array($fecha_desde,$fecha_hasta);
		$registros  = SQLConnection::backendStoreProcedure('backend_mis_aportes_consultas', $params,'select');
		
		return view('tablasgenerales/tabla_misaportes')->with(compact('registros','fecha_desde','fecha_hasta'));
	}

	
	public static function listadoSubcontratistas05022025(){
		$fechaSC = Request::input("fecha_de_screening");
		$cliente = Request::input('cliente_SC');
		
		$fecha = substr($fechaSC,0,7); 
		$nombreExcel = 'Subcontratistas_enriquecidos_'.$fecha.'.xlsx';

		$header = ['SubContratista','Identificacion Sub'];
		$data_reporte = SQLConnection::backendStoreProcedure('Subcontratistas_enriquecer_', array('LISTAR',$cliente,$fechaSC), 'select');
		$arreglo = [];
		array_push($arreglo,$header);
		foreach ( $data_reporte as $row) {
			$row = get_object_vars($row);
			$row = array_values($row);
			array_push($arreglo,$row);
		}

        //Genero el excel con la libreria nueva
		$xlsx = SimpleXLSXGen::fromArray($arreglo);
        $xlsx->saveAs(env('PATH_EXCEL_GEN').'/'.$nombreExcel);
        return json_encode(['filename' => $nombreExcel, 'path' => (ENV('RUTA_EXCEL_GEN').'/'.$nombreExcel).'?v='.rand() ]);

    }

	public static function listadoSubcontratistas(){
		$fechaSC = Request::input("fecha_de_screening");
		$cliente = Request::input('cliente_SC');
		
		$fecha = substr($fechaSC,0,7); 
		$nombreExcel = 'Subcontratistas_enriquecidos_'.$fecha.'.xlsx';

		$data_reporte = SQLConnection::backendStoreProcedure('Subcontratistas_enriquecer_', array('LISTAR_FULL',$cliente,$fechaSC), 'select');
		$arreglo = [];
		foreach ( $data_reporte as $key => $row) {
			if ($key==0)
			{
				$renglon = ['Total a Facturar: ' . $row->cantidad_a_facturar,
							null,
							null,
							null,
							null,
							null,
							null,
							null,
							null];	
				array_push($arreglo,$renglon);
				$header = ['Contratista','Identificacion Contratista','SubContratista','Identificacion Subcontratista','Vigencia Desde','Vigencia Hasta','Tipo','Fecha Actualizacion', 'Actualizacion Anterior'];
				array_push($arreglo,$header);
				
			}

			$renglon = [$row->nombre_contratista,
						$row->cuit_contratista,
						$row->nombre_subcontratista,
						$row->cuit_subcontratista,
						$row->vigencia_desde,
						$row->vigencia_hasta,
						$row->tipo,
						$row->fecha_actualizacion,
						$row->actualizacion_anterior];
			array_push($arreglo,$renglon);
		}

        //Genero el excel con la libreria nueva
		$xlsx = SimpleXLSXGen::fromArray($arreglo);
        $xlsx->saveAs(env('PATH_EXCEL_GEN').'/'.$nombreExcel);
        return json_encode(['filename' => $nombreExcel, 'path' => (ENV('RUTA_EXCEL_GEN').'/'.$nombreExcel).'?v='.rand() ]);

    }


	public function SociosEnriquecer(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		$disponibles = SQLConnection::backendStoreProcedure('socios_enriquecer', array('clientes_enriquecer_socios_disponibles'), 'select');
		$asignados = SQLConnection::backendStoreProcedure('socios_enriquecer', array('clientes_enriquecer_socios_asignados'), 'select');
		$son_contrapartes = 'si'; 
		return view('tablasgenerales/socios_enriquecer')->with(compact('menu','disponibles','asignados','son_contrapartes')); 
	}

	public function SociosEnriquecer2(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		$disponibles = [];
		$asignados = [];
		$son_contrapartes = 'no'; 
		return view('tablasgenerales/socios_enriquecer')->with(compact('menu','disponibles','asignados','son_contrapartes')); 
	}

	public static function SociosEnriquecerData(){
		$fechaSC = Request::input("fecha_de_screening");
		$cliente = Request::input('cliente_SC');
		$contraScreenSub = Request::input('contraScreenSub'); 					
		
		//if (Request::input('son_contrapartes') == ''){
		//	$params = ['select',NULL,150];
		//}else {
		//	$params = ['cuits',2046807993,150,'2023-05-15'];
		//}
/*
		if($fechaSC == "" && $cliente == ""){

			$params = ['select',NULL,150];			
		}else{

			$params = ['cuits',$cliente,NULL,$fechaSC];
		}
*/
		if ($contraScreenSub == 'C') { $params = ['select',NULL,150]; }
		if ($contraScreenSub == 'S') { //var_dump($cliente); var_dump($fechaSC); die(); 
			                           $params = ['cuits',$cliente,NULL,$fechaSC]; }
		if ($contraScreenSub == 'A') { $params = ['subcontratistas',$cliente,90]; }
		if ($contraScreenSub == 'F') { $params = ['cliente_familia',$cliente,150,null,$fechaSC]; } // En el campo llamado $fechaSC tiene la familia

		$hay = 'SI';		
		$registros  = SQLConnection::backendStoreProcedure('socios_enriquecer', $params,'select');		

		if (empty($registros)) { 
			$hay = 'NO';
		}

		foreach ($registros as $k => $reg) {
			$registros[$k]->edit  = '<a style="cursor:pointer;"><i style="font-size:14px" class="fa fa-plus-circle"></i></a>';
			$registros[$k]->edit2 = '<a style="cursor:pointer;"><i style="font-size:14px" class="fa fa-map-marker"></i></a>';
			$registros[$k]->edit3 = '<a style="cursor:pointer;"><i style="font-size:14px" class="fa fa-newspaper-o"></i></a>';
			$registros[$k]->edit4 = '<a style="cursor:pointer;"><i style="font-size:14px" class="bi bi-card-list"></i></a>';			
		}

		return json_encode(array('data' => $registros,'hay'=>$hay));
	}

	public  function armarDomicilio($domicilio,$codpos,$loc_nombre,$prv_nombre,$pai_nombre){
    $return = $domicilio;
    if($codpos){
      $return .= ', ('.$codpos.')';
    }
    if($loc_nombre){
      $return .= ', '.$loc_nombre;
    }
    if($prv_nombre){
      $return .= ', '.$prv_nombre;
    }
    if($pai_nombre){
      $return .= ', '.$pai_nombre;
    }
    return $return;
  }


	public function SociosEnriquecerDomicilio(){
		$cuit = Request::input('cuit');

		$domicilios = new stdClass;
		$formales       = SQLConnection::backendStoreProcedure('sp_obtener_domicilios', array($cuit),'select');
		$domicilios->otros_domicilios = '';
		$domicilios->domicilio_legal  = '';
		$domicilios->domicilio        = '';
		$domicilios->domicilio_fiscal = '';

		foreach($formales as $formal) {
			// Domicilio Legal 
			if(strpos($formal->tipo_domicilio, 'L') !== false){
				if (isset($domicilios->domicilio_legal) && $domicilios->domicilio_legal != '') {
					if (strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'F') === false) {
						$domicilios->otros_domicilios .= self::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
					}
				} else {
					$domicilios->domicilio_legal = self::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
				}
			}
			// Domicilio Fiscal 
			if(strpos($formal->tipo_domicilio, 'F') !== false){
				if (isset($domicilios->domicilio_fiscal) && $domicilios->domicilio_fiscal != '') {
					if (strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'L') === false) {
						$domicilios->otros_domicilios .= self::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
					}
				} else {
					$domicilios->domicilio_fiscal = self::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
				}
			}

			// Domicilio Principal
			if(strpos($formal->tipo_domicilio, 'D') !== false || strpos($formal->tipo_domicilio, 'E') !== false) {
				if (isset($domicilios->domicilio) && $domicilios->domicilio != '') {
					if (strpos($formal->tipo_domicilio, 'F') === false && strpos($formal->tipo_domicilio, 'L') === false) {
						$domicilios->otros_domicilios .= self::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
					}
				} else {
					$domicilios->domicilio = self::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
				}
			}
			// Otros Domicilios
			if (strpos($formal->tipo_domicilio, 'O') !== false && strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'L') === false && strpos($formal->tipo_domicilio, 'F') === false){
				$domicilios->otros_domicilios .= self::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
			}
		}

		if($domicilios->domicilio == '' && $domicilios->domicilio_fiscal != ''){
			$domicilios->domicilio  .= $domicilios->domicilio_fiscal;
		}
		return view('tablasgenerales/domicilio_cuit')->with(compact('domicilios')); 
	}

	public static function SociosEnriquecerMove() {

		$move = Request::input('move');

		$disp = !empty(Request::input('disponibles')) ? Request::input('disponibles') : NULL;
		$asig = !empty(Request::input('asignados')) ? Request::input('asignados') : NULL;

		$clientes = ($move == 'right') ? ( NULL !== $disp ? $disp : NULL ) : ( NULL !== $asig ? $asig : NULL );

		$duplicado = 0;

		if (NULL !== $clientes) {

			$cli = explode(",", $clientes);

			foreach ($cli as $key => $cliente) {
				if ($move == 'right') {

					$temp = SQLConnection::backendStoreProcedure('socios_enriquecer', array('agregar',$cliente));
					
				}
				else {
					$temp = SQLConnection::backendStoreProcedure('socios_enriquecer', array('sacar',$cliente));
				}
			}
		}

		$disponibles = SQLConnection::backendStoreProcedure('socios_enriquecer', array('clientes_enriquecer_socios_disponibles'), 'select');
		$asignados = SQLConnection::backendStoreProcedure('socios_enriquecer', array('clientes_enriquecer_socios_asignados'), 'select');

		return json_encode( array($disponibles, $asignados) );

	}

	public function misAportesEnriquecer(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();

		$disponibles = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('productos'), 'select');
		$asignados = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('mis_aportes_productos'), 'select');

		return view('tablasgenerales/misaportes_enriquecer')->with(compact('menu','disponibles','asignados')); 
	}

	public function misAportesEnriquecerData(){
		$params = [];
		$hay = 'SI';
		$registros  = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', $params,'select');
		if (empty($registros)) { $hay = 'NO';}
		return json_encode(array('data' => $registros,'hay'=>$hay));
	}

	public static function misAportesProductosMove() {

		$move = Request::input('move');

		$disp = !empty(Request::input('disponibles')) ? Request::input('disponibles') : NULL;
		$asig = !empty(Request::input('asignados')) ? Request::input('asignados') : NULL;

		$productos = ($move == 'right') ? ( NULL !== $disp ? $disp : NULL ) : ( NULL !== $asig ? $asig : NULL );

		$duplicado = 0;

		if (NULL !== $productos) {
			$prod = explode(",", $productos);

			foreach ($prod as $key => $producto) {
				if ($move == 'right') {
					$temp = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('agregar',$producto));					
				}
				else {
					$temp = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('sacar',$producto));
				}
			}
		}

		$disponibles = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('productos'), 'select');
		$asignados = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('mis_aportes_productos'), 'select');

		return json_encode( array($disponibles, $asignados) );

	}

	public function obtenerJuiciosSCW(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		return view('tablasgenerales/juiciosscw')->with(compact('menu')); 
	}
	
	public function filtrarJuiciosSCW(){
		$fecha_desde = Request::input('fecha_desde_con');
		$fecha_hasta = Request::input('fecha_hasta_con');
		$fecha_desde_dmy = substr($fecha_desde, 8, 2) . "/" . substr($fecha_desde, 5, 2) . "/" . substr($fecha_desde, 0, 4);
		$fecha_hasta_dmy = substr($fecha_hasta, 8, 2) . "/" . substr($fecha_hasta, 5, 2) . "/" . substr($fecha_hasta, 0, 4);
		if ($fecha_desde == '') { $fecha_desde = null;}
		if ($fecha_hasta == '') { $fecha_hasta = null;}
		$params= array($fecha_desde,$fecha_hasta,null);
		$registros  = SQLConnection::backendStoreProcedure('backend_juicios_scw_consultas', $params,'select');
		$_5anios = date('Y');
		$_5anios-= 5; 
		$cant = 0; 
		$files = scandir('/var/www/html/fidelitas/public/files_action');
		foreach($files as $key => $file){
			if($file != '.' && $file != '..') {
				$cant += 1; 
			}
		}
		return view('tablasgenerales/tabla_juiciosscw')->with(compact('registros','fecha_desde_dmy','fecha_hasta_dmy','_5anios','cant'));
	}

	public function JuiciosSCWTxt(){
		$id_juicio = Request::input('id_juicio');
		
		$params = array(null,null,$id_juicio);
		
		$texto = (SQLConnection::backendStoreProcedure('backend_juicios_scw_consultas', $params,'selectOne'))->source_html;				
		$texto = Misc::decrypt($texto); 
		
		return $texto;
	}


/*
	public function filtrarTerminos(){
		$cuit = Session::get('cuit');
		$visible = (Request::input('visible')=="") ? 1 : Request::input('visible');
		$terminos  = SQLConnection::backendStoreProcedure('backend_terminos',array(NULL,$visible),'select');
		return view('tablasgenerales/tabla_terminos')->with(compact('terminos','visible'));
	}
*/


	public static function kpiImperium() {
		$complejidad_doc = SQLConnection::backendStoreProcedure('backend_complejidad_doc', array('CONSULTAR',null,null,null,null,null), 'select');

		$meses = [];
		for($i=0; $i < 24; $i++) {
			$j = ($i - 23);
			$interval = date_interval_create_from_date_string($j." months");
			$f1 = date_create_from_format('!Y-m-d', date('Y-m').'-01');
			$f2 = date_add($f1, $interval);
			$ym = date_format($f2, 'Y') * 100 + date_format($f2, 'm');
			if($ym >= 201604) {
				$meses[] = date_format($f2, 'Y') * 100 + date_format($f2, 'm');
			}
		}
		$last_month = $meses[sizeof($meses)-1];

		return view('tablasgenerales/imperium_kpi')->with(compact('meses', 'last_month', 'complejidad_doc'));
	}

	public static function kpiImperiumResult() {
		
		$reportes = Request::input('accion');
		$agrupacion = Request::input('agrupacion');
		$mes_desde = Request::input('mes_desde');
		$mes_hasta = Request::input('mes_hasta');
		$mes_curso = Request::input('mes_curso');

		$allcomp = Request::input('todas_complejidad');
		$selectedcomp = Request::input('complejidad');

		$lista_comp = '';
		for($i = 0; $i < sizeof($selectedcomp); $i++) {
			$lista_comp = $lista_comp.($lista_comp != '' ? ',' : '');
			$lista_comp = $lista_comp.$selectedcomp[$i];
		}
		$comp = isset($allcomp) ? NULL : $lista_comp;

		/* un query con los datos de las complejidades seleccionadas */
		$data_comp = SQLConnection::backendStoreProcedure('backend_complejidad_doc_lista', array($lista_comp), 'select');

		//echo 'AGRUPACION: '.$agrupacion.'  MES DESDE: '.$mes_desde.'  MES HASTA: '.$mes_hasta;

		if($agrupacion == 'anual') {
			/* anual */
			$m12 = date_interval_create_from_date_string("-12 months");
			$m1 = date_interval_create_from_date_string("-1 months");

			$fh = date('Y-m-d');
			
			$fecha_hasta1 = date_create_from_format('!Y-m-d', date('Y-m').'-01');
			$fecha_hasta = date_add($fecha_hasta1, $m1);

			$tt = date_create_from_format('!Y-m-d', date('Y-m').'-01');			
			$fecha_desde = date_add($tt, $m12);			

			$mes_desde = date_format($fecha_desde,'Ym');
			$mes_hasta = date_format($fecha_hasta,'Ym');

		}else {			
			
			if($agrupacion == 'total') {
				/* fechas desde-hasta */
				$fecha_desde = date_create_from_format('!d/m/Y', Request::input('fecha_desde'));
				$fecha_hasta = date_create_from_format('!d/m/Y', Request::input('fecha_hasta'));				
				$d1 = date_interval_create_from_date_string("1 day");
				$s1 = date_interval_create_from_date_string("-1 second");
				$fecha_hasta = date_add(date_add($fecha_hasta, $d1), $s1);	
			}else {
				/* rango meses */
				$fh = date('Y-m-d');
				$fecha_desde = date_create_from_format('Y-m-d', $fh);
				$fecha_hasta = date_create_from_format('Y-m-d', $fh);

				//echo 'MES DESDE: '.$mes_desde.'  MES HASTA: '.$mes_hasta;
			}
		}


		$meses_array = ["ENE","FEB","MAR","ABR","MAY","JUN","JUL","AGO","SEP","OCT","NOV","DIC"];

		$reportes_array = ["Documentos ingresados",
							"Documentos procesados",
							"Documentos verificados",
							"Documentos rechazados y aprobados parciales",
							"Documentos procesados por usuario",
							"Documentos ingresados por cliente",
							"Documentos procesados por cliente",
							"Notificaciones recibidas",
							"Notificaciones emitidas"];

		$meses = [];
		$yyyymm = [];
		$titles = [];

		/* array con los últimos días de cada uno de los meses del rango seleccionado */ 
		$lastdayinmonths = [];

		/* Intervalos de a 10 días */
		$mes_actual = ($mes_curso == 1) ? $meses_array[date('m')-1].' '.date('Y') : '';
		$lastday = cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));
		$s1 = date_interval_create_from_date_string("-1 second");
		$d1 = date_interval_create_from_date_string("1 day");

		$d1from = date_create_from_format('!Y-m-d', date('Y-m').'-01');
		$t1to = date_create_from_format('!Y-m-d', date('Y-m').'-10');
		$d1to = date_add(date_add($t1to, $d1), $s1);

		$d2from = date_create_from_format('!Y-m-d', date('Y-m').'-11');
		$t2to = date_create_from_format('!Y-m-d', date('Y-m').'-20');
		$d2to = date_add(date_add($t2to, $d1), $s1);

		$d3from = date_create_from_format('!Y-m-d', date('Y-m').'-21');
		$t3to = date_create_from_format('!Y-m-d', date('Y-m').'-'.$lastday);
		$d3to = date_add(date_add($t3to, $d1), $s1);

		/*echo date_format($d1from,'Y-m-d H:i:s').' | '.date_format($d1to,'Y-m-d H:i:s').' | '.date_format($d2from,'Y-m-d H:i:s').' | '.date_format($d2to,'Y-m-d H:i:s').' | '.date_format($d3from,'Y-m-d H:i:s').' | '.date_format($d3to,'Y-m-d H:i:s');
		dd($lastday);*/

		$a1 = intdiv($mes_desde,100);
		$m1 = $mes_desde - $a1*100;
		$a2 = intdiv($mes_hasta,100);
		$m2 = $mes_hasta - $a2*100;

		$ymd = date_create_from_format('!Y-m-d', $a1.'-'.$m1.'-1');
		$ymh = date_create_from_format('!Y-m-d', $a2.'-'.$m2.'-1');

		$mm = date_interval_create_from_date_string("1 month");
		$p = $ymd;
		while ($p <= $ymh) {
			$x = date_format($p, 'Y-m-d');
			$y = substr($x, 0, 4);
			$m = substr($x, 5, 2)-1;

			$meses[] = $meses_array[$m].' '.$y;
			$yyyymm[] = date_format($p, 'Ym');

			$p = date_add($p, $mm);

			$lastdayinmonths[] = cal_days_in_month(CAL_GREGORIAN, substr($x, 5, 2), $y);
		}


		$resultados = [];
		$resultados2 = [];

		$dims = [];
		
		foreach ($reportes as $rpt) {			
			$sp = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, $agrupacion, $mes_desde, $mes_hasta, $fecha_desde, $fecha_hasta, $comp), "select");

			switch ($rpt) {
				case 'Ingresados': {
					$rslt = [];
					$titles[] = $reportes_array[0];

					if($agrupacion != 'total') {
						/* init array */

						foreach ($meses as $idx => $mes) {
							$rslt[$idx] = 0;
						}

						foreach ($sp as $mval) {
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$ix = array_search($anomes, $yyyymm);
							$rslt[$ix] = $mval->total_ingresados;
						}

					}
					else {
						foreach ($sp as $mval) {
							$rslt[] = $mval->total_ingresados;
						}
					}


					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {
						/*$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'total', $mes_desde, $mes_hasta, $d1from, $d1to), "select");
						$sp2 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'total', $mes_desde, $mes_hasta, $d2from, $d2to), "select");
						$sp3 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'total', $mes_desde, $mes_hasta, $d3from, $d3to), "select");*/

						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");

						$v1 = (sizeof($sp1) > 0) ? $sp1[0]->total_documentos : 0;
						$v2 = (sizeof($sp1) > 1) ? $sp1[1]->total_documentos : 0;
						$v3 = (sizeof($sp1) > 2) ? $sp1[2]->total_documentos : 0;

						//$resultados2[] = [$sp1[0]->total_documentos, $sp1[1]->total_documentos, $sp1[2]->total_documentos];
						$resultados2[] = [$v1,$v2,$v3];
					}
					
					$dims[] = 1;
					break;
				}

				case 'Procesados': {
					$rslt = [];
					$titles[] = $reportes_array[1];

					if($agrupacion != 'total') {
						/* init array */

						foreach ($meses as $idx => $mes) {
							$rslt[$idx] = 0;
						}

						foreach ($sp as $mval) {
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$ix = array_search($anomes, $yyyymm);
							$rslt[$ix] = $mval->total_procesados;
						}

					}
					else {
						foreach ($sp as $mval) {
							$rslt[] = $mval->total_procesados;
						}
					}
					
					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {

						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");

						$v1 = (sizeof($sp1) > 0) ? $sp1[0]->total_documentos : 0;
						$v2 = (sizeof($sp1) > 1) ? $sp1[1]->total_documentos : 0;
						$v3 = (sizeof($sp1) > 2) ? $sp1[2]->total_documentos : 0;

						//$resultados2[] = [$sp1[0]->total_documentos, $sp1[1]->total_documentos, $sp1[2]->total_documentos];
						$resultados2[] = [$v1,$v2,$v3];

					}

					$dims[] = 1;
					break;
				}

				case 'Verificados': {
					$rslt = [];
					$titles[] = $reportes_array[2];

					if($agrupacion != 'total') {
						/* init array */

						foreach ($meses as $idx => $mes) {
							$rslt[$idx] = 0;
						}

						foreach ($sp as $mval) {
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$ix = array_search($anomes, $yyyymm);
							$rslt[$ix] = $mval->total_verificados;
						}

					}
					else {
						foreach ($sp as $mval) {
							$rslt[] = $mval->total_verificados;
						}
					}
					
					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {

						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");
						$v1 = (sizeof($sp1) > 0) ? $sp1[0]->total_documentos : 0;
						$v2 = (sizeof($sp1) > 1) ? $sp1[1]->total_documentos : 0;
						$v3 = (sizeof($sp1) > 2) ? $sp1[2]->total_documentos : 0;

						//$resultados2[] = [$sp1[0]->total_documentos, $sp1[1]->total_documentos, $sp1[2]->total_documentos];
						$resultados2[] = [$v1,$v2,$v3];
					}
					
					$dims[] = 1;
					break;
				}

				case 'Rechazados_parciales': {
					$rslt = [];
					$titles[] = $reportes_array[3];

					if($agrupacion != 'total') {
						/* init array */

						foreach ($meses as $idx => $mes) {
							$rslt[$idx] = 0;
						}

						foreach ($sp as $mval) {
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$ix = array_search($anomes, $yyyymm);
							$rslt[$ix] = $mval->total_procesados;
						}

					}
					else {
						foreach ($sp as $mval) {
							$rslt[] = $mval->total_procesados;
						}
					}
					
					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {

						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");
						$v1 = (sizeof($sp1) > 0) ? $sp1[0]->total_documentos : 0;
						$v2 = (sizeof($sp1) > 1) ? $sp1[1]->total_documentos : 0;
						$v3 = (sizeof($sp1) > 2) ? $sp1[2]->total_documentos : 0;

						//$resultados2[] = [$sp1[0]->total_documentos, $sp1[1]->total_documentos, $sp1[2]->total_documentos];
						$resultados2[] = [$v1,$v2,$v3];
					}

					$dims[] = 1;
					break;
				}


				case 'Procesados_usuario': {
					$rslt = [];
					$titles[] = $reportes_array[4];

					if($agrupacion != 'total') {
						$lastusr = 0;
						$ix = -1;
						foreach ($sp as $mval) {

							if($mval->usuario != $lastusr) {
								if($ix >= 0) {
									$usr[sizeof($meses)+1] = $lastusr;

									$rslt[$ix] = $usr;
								}

								$ix++;

								$usr[0] = $mval->nombre;

								foreach($meses as $iy => $mes) {
									$usr[$iy+1] = 0;
								}

								
							}
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$iy = array_search($anomes, $yyyymm);
							$usr[$iy+1] = $mval->total_procesados;

							$lastusr = $mval->usuario;
						}

						

						if($ix >= 0) {
							$usr[sizeof($meses)+1] = $lastusr;
							$rslt[$ix] = $usr;
						}

						//dd($rslt);
						
					}
					else {
						foreach ($sp as $mval) {
							$usr[0] = $mval->nombre;
							$usr[1] = $mval->total_procesados;
							$usr[2] = $mval->usuario;
							$rslt[] = $usr;
						}
					}

					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {
						$rslt2 = [];

						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");
						//dd($sp1);

						$lastusr = 0;
						$ix = -1;
						foreach ($sp1 AS $mval) {
							if($mval->usuario != $lastusr) {
								if($ix >= 0) {
									$rslt2[$ix] = $usr;
								}
								$ix++;

								$usr = [$mval->first_name.' '.$mval->last_name, 0, 0, 0, $mval->usuario];
								$lastusr = $mval->usuario;
							}
							$usr[$mval->rango] = $mval->total_documentos;
						}
						if($ix >= 0) {
							$rslt2[$ix] = $usr;
						}
						
						//dd($rslt2);

						$resultados2[] = $rslt2;
					}

					$dims[] = 2;
					break;
				}

				case 'Ingresados_cliente': {
					$rslt = [];
					$titles[] = $reportes_array[5];

					if($agrupacion != 'total') {

						$lastcli = 0;
						$ix = -1;
						foreach ($sp as $mval) {

							if($mval->cliente != $lastcli) {
								if($ix >= 0) {
									$cli[sizeof($meses)+1] = $lastcli;

									$rslt[$ix] = $cli;
								}

								$ix++;

								$cli[0] = $mval->nombre_cliente;

								foreach($meses as $iy => $mes) {
									$cli[$iy+1] = 0;
								}

								$lastcli = $mval->cliente;
							}
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$iy = array_search($anomes, $yyyymm);
							$cli[$iy+1] = $mval->total_ingresados;
						}
						if($ix >= 0) {
							$rslt[$ix] = $cli;
						}

					}
					else {
						foreach ($sp as $mval) {
							$cli[0] = $mval->nombre_cliente;
							$cli[1] = $mval->total_ingresados;
							$cli[2] = $mval->cliente;
							$rslt[] = $cli;
						}					
					}


					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {
						$rslt2 = [];
						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");
						//dd($sp1);

						$lastcli = 0;
						$ix = -1;
						foreach ($sp1 AS $mval) {
							if($mval->cliente != $lastcli) {
								if($ix >= 0) {
									$rslt2[$ix] = $cli;
								}
								$ix++;

								$cli = [$mval->nombre_cliente, 0, 0, 0, $mval->cliente];
								$lastcli = $mval->cliente;
							}
							$cli[$mval->rango] = $mval->total_documentos;
						}
						if($ix >= 0) {
							$rslt2[$ix] = $cli;
						}
						
						//dd($rslt2);

						$resultados2[] = $rslt2;

					}

					$dims[] = 2;				
					break;
				}


				case 'Procesados_cliente': {
					$rslt = [];
					$titles[] = $reportes_array[6];

					if($agrupacion != 'total') {

						$lastcli = 0;
						$ix = -1;
						foreach ($sp as $mval) {

							if($mval->cliente != $lastcli) {
								$cli[sizeof($meses)+1] = $lastcli;

								if($ix >= 0) {
									$rslt[$ix] = $cli;
								}

								$ix++;

								$cli[0] = $mval->nombre_cliente;

								foreach($meses as $iy => $mes) {
									$cli[$iy+1] = 0;
								}

								$lastcli = $mval->cliente;
							}
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$iy = array_search($anomes, $yyyymm);
							$cli[$iy+1] = $mval->total_procesados;
						}
						if($ix >= 0) {
							$rslt[$ix] = $cli;
						}

					}
					else {
						foreach ($sp as $mval) {
							$cli[0] = $mval->nombre_cliente;
							$cli[1] = $mval->total_procesados;
							$cli[2] = $mval->cliente;
							$rslt[] = $cli;
						}					
						
					}


					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {
						$rslt2 = [];
						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");

						$lastcli = 0;
						$ix = -1;
						foreach ($sp1 AS $mval) {
							if($mval->cliente != $lastcli) {
								if($ix >= 0) {
									$rslt2[$ix] = $cli;
								}
								$ix++;

								$cli = [$mval->nombre_cliente, 0, 0, 0, $mval->cliente];
								$lastcli = $mval->cliente;
							}
							$cli[$mval->rango] = $mval->total_documentos;
						}
						if($ix >= 0) {
							$rslt2[$ix] = $cli;
						}

						$resultados2[] = $rslt2;
					}


					$dims[] = 2;					
					break;
				}

				case 'Notificaciones_recibidas' || 'Notificaciones_emitidas': {
					$rslt = [];
					$titles[] = ($rpt == 'Notificaciones_recibidas') ? $reportes_array[7] : $reportes_array[8];

					if($agrupacion != 'total') {

						$lastread = -1;
						$ix = -1;
						foreach ($sp as $mval) {

							if($mval->leido != $lastread) {
								if($ix >= 0) {
									$rslt[$ix] = $noti;
								}

								$ix++;
								
								$noti[0] = ($mval->leido == 0) ? "No leídas":"Leídas";

								foreach($meses as $iy => $mes) {
									$noti[$iy+1] = 0;
								}

								$lastread = $mval->leido;
							}
							$anomes = $mval->yyyy.substr('0'.$mval->mm, -2);
							$iy = array_search($anomes, $yyyymm);
							$noti[$iy+1] = $mval->total_notificaciones;
						}
						if($ix >= 0) {
							$rslt[$ix] = $noti;
						}


					}
					else {
						foreach ($sp as $mval) {
							$noti[0] = ($mval->leido == 0) ? "No leídas":"Leídas";
							$noti[1] = $mval->total_notificaciones;
							$rslt[] = $noti;
						}					
						
					}


					/* Estadística mes en curso cada 10 días */
					if($mes_curso == 1) {
						$rslt2 = [];
						$sp1 = SQLConnection::backendStoreProcedure('Imperium_KPIs', array($rpt, 'Ultimo_mes', $mes_desde, $mes_hasta, $d1from, $d1to, $comp), "select");

						$lastread = -1;
						$ix = -1;
						foreach ($sp1 AS $mval) {
							if($mval->leido != $lastread) {
								if($ix >= 0) {
									$rslt2[$ix] = $noti;
								}
								$ix++;

								$noti = [($mval->leido == 0) ? "No leídas":"Leídas", 0, 0, 0];
								$lastread = $mval->leido;
							}
							$noti[$mval->rango] = $mval->total_notificaciones;
						}
						if($ix >= 0) {
							$rslt2[$ix] = $noti;
						}

						$resultados2[] = $rslt2;
					}


					$dims[] = 2;
					break;
				}


				default:		
					break;
			}

			$resultados[] = $rslt;

		}

		$fracciones = array($d1from, $d1to, $d2from, $d2to, $d3from, $d3to);
		return view('tablasgenerales/imperium_kpi_result')->with(compact('reportes', 'agrupacion', 'mes_desde', 'mes_hasta', 'fecha_desde', 'fecha_hasta', 'meses', 'dims', 'resultados', 'titles', 'mes_curso', 'mes_actual', 'lastday', 'resultados2', 'comp', 'data_comp', 'lastdayinmonths', 'yyyymm', 'fracciones'));

	}

	public static function kpiImperiumDetail() {
		$rpt = Request::input('report');
		$from = Request::input('from');
		$to = Request::input('to');
		$complejidad = (Request::input('complejidad') != '') ? Request::input('complejidad') : NULL;
		$id = (Request::input('id') > 0) ? Request::input('id') : NULL;

		/* si está ingresando a algún reporte que incluye datos detalle por cliente o por usuario específico
				si es alguno de ellos, el valor está en $id
		 */
		$p1 = strpos($rpt, 'usuario');
		$p2 = strpos($rpt, 'cliente');


		$reportes_array = ["Documentos ingresados",
							"Documentos procesados",
							"Documentos verificados",
							"Documentos rechazados y aprobados parciales",
							"Documentos procesados por usuario",
							"Documentos ingresados por cliente",
							"Documentos procesados por cliente",
							"Notificaciones recibidas",
							"Notificaciones emitidas"];

		$actions_array = ['Ingresados', 'Procesados', 'Verificados', 'Rechazados_parciales', 'Procesados_usuario', 'Ingresados_cliente', 'Procesados_cliente', 'Notificaciones_recibidas', 'Notificaciones_emitidas'];

		$title = $reportes_array[array_search($rpt, $actions_array,true)];


		$data = SQLConnection::backendStoreProcedure('Imperium_KPIs_detail', array($rpt, $from, $to, $complejidad, ($p1 >= 0 ) ? $id : NULL, ($p2 >= 0 ) ? $id : NULL), 'select');

		$from = substr($from, 6, 2).'/'.substr($from, 4, 2).'/'.substr($from, 0, 4);
		$to = substr($to, 6, 2).'/'.substr($to, 4, 2).'/'.substr($to, 0, 4);
		return view('tablasgenerales/imperium_kpi_detail')->with(compact(['rpt', 'from', 'to', 'complejidad', 'id', 'title', 'data', 'p1', 'p2']));
	}

	public static function kpiImperiumTipoDoc() {
		$rpt = Request::input('report');
		$tipodoc = Request::input('tipo_doc');
		$from = Request::input('from');
		$to = Request::input('to');
		$complejidad = (Request::input('complejidad') != '') ? Request::input('complejidad') : NULL;
		$id = (Request::input('id') > 0) ? Request::input('id') : NULL;


		/* si está ingresando a algún reporte que incluye datos detalle por cliente o por usuario específico
				si es alguno de ellos, el valor está en $id
		 */
		$p1 = strpos($rpt, 'usuario');
		$p2 = strpos($rpt, 'cliente');


		$reportes_array = ["Documentos ingresados",
							"Documentos procesados",
							"Documentos verificados",
							"Documentos rechazados y aprobados parciales",
							"Documentos procesados por usuario",
							"Documentos ingresados por cliente",
							"Documentos procesados por cliente",
							"Notificaciones recibidas",
							"Notificaciones emitidas"];

		$actions_array = ['Ingresados', 'Procesados', 'Verificados', 'Rechazados_parciales', 'Procesados_usuario', 'Ingresados_cliente', 'Procesados_cliente', 'Notificaciones_recibidas', 'Notificaciones_emitidas'];

		$title = $reportes_array[array_search($rpt, $actions_array,true)];

		$desde = substr($from, 6, 4).substr($from, 3, 2).substr($from, 0, 2);
		$hasta = substr($to, 6, 4).substr($to, 3, 2).substr($to, 0, 2);

		$data = SQLConnection::backendStoreProcedure('Imperium_KPIs_docs', array($rpt, $tipodoc, $desde, $hasta, ($p1 >= 0 ) ? $id : NULL, ($p2 >= 0 ) ? $id : NULL), 'select');

		return view('tablasgenerales/imperium_kpi_tipo_doc')->with(compact('rpt', 'from', 'to', 'complejidad', 'id', 'title', 'p1', 'p2', 'data'));
	}

	public static function ImperiumDocPendientes() {
		return view('/tablasgenerales/imperium_doc_pendientes');
	}

	public static function ImperiumDocPendientesExport() {
		set_time_limit(0); 

		$docs = SQLConnection::backendStoreProcedure('Imperium_Reporte_Docs_Pendientes', array(), 'select');

		$file = '<table border="1"><tr>';
		$file .= '<th>CLIENTE</th><th>DOCUMENTO</th><th>COMPLEJ</th><th>INGRESADO</th><th>TOLERANCIA</th><th>ACCESO</th><th>PERIODO</th><th>SECCION</th><th>VIGENCIA</th><th>CONTRATISTA</th><th>CUIT</th><th>SUBCONTRATISTA DE</th><th>CUIT</th><th>EMPLEADO</th><th>CUIL</th><th>VEHICULO</th><th>DOMINIO</th>';
		$file .= '</tr>';

		foreach($docs as $doc) {
			$file .= '<tr>';
			$file .= '<td>'. $doc->nombre_cliente . '</td>';
			$file .= '<td>'. $doc->nombre_tipo_doc . '</td>';
			$file .= '<td>'. $doc->codigo_complejidad . '</td>';
			$file .= '<td>'. $doc->ingresado . '</td>';
			$file .= '<td>'. $doc->tolerancia_verif . '</td>';
			$file .= '<td>'. ($doc->acceso > 0 ? 'SI' : 'NO') . '</td>';
			$file .= '<td>'. $doc->periodo . '</td>';
			$file .= '<td>'. $doc->nombre_seccion . '</td>';
			$file .= '<td>'. $doc->fecha_vigencia . '</td>';
			$file .= '<td>'. $doc->nombre_contratista . '</td>';
			$file .= '<td>'. $doc->cuit . '</td>';
			$file .= '<td>'. ($doc->cuit != $doc->cuit_1 ? $doc->nombre_contratista_1 : '') . '</td>';
			$file .= '<td>'. ($doc->cuit != $doc->cuit_1 ? $doc->cuit_1 : '') . '</td>';
			$file .= '<td>'. $doc->nombre_empleado . '</td>';
			$file .= '<td>'. $doc->cuit_e . '</td>';
			$file .= '<td>'. $doc->nombre_vehiculo . '</td>';
			$file .= '<td>'. $doc->dominio . '</td>';
			$file .= '</tr>';
		}

		$fecha = date("Y-m-d");
		header('Content-disposition: attachment; filename=Imperium_Reporte_Doc_Pendientes_' . $fecha . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');
		$file = mb_convert_encoding($file, 'ISO-8859-1', 'UTF-8'); 
		//echo $file;
		/* 14/02/2020 lo cambiamos por: */
		$response =  array(
			'op' => 'ok',
			'archivo' => 'Imperium_Reporte_Doc_Pendientes_' . $fecha . '.xls', 
			'file' => "data:application/vnd.ms-excel;base64,".base64_encode($file)
		);
		die(json_encode($response));
	
	}


	public static function complejidadDoc() {
		$desc = NULL;
		$estado = -1;

		$complejidad = SQLConnection::backendStoreProcedure('backend_complejidad_doc', array('CONSULTAR',null,null,null,null,null), 'select');
		return view('tablasgenerales/complejidad_doc')->with(compact('complejidad', 'desc', 'estado'));
	}

	public static function complejidadDocSearch() {
		$desc = Request::input('desc');
		$estado = Request::input('estado');
		$complejidad = SQLConnection::backendStoreProcedure('backend_complejidad_doc', array('CONSULTAR',null,null,$desc,$estado,null), 'select');
		return view('tablasgenerales/complejidad_doc')->with(compact('complejidad', 'desc', 'estado'));
	}

	public static function complejidadDocNew() {

		$data = new stdClass();
		$data->action = "ALTA";
		$data->complejidad = 0;
		$data->codigo_complejidad = "";
		$data->descripcion_complejidad = "";
		$data->activa = 1;

		return view('modals/modal_complejidad_doc')->with(compact('data'));
	}

	public static function complejidadDocSave() {
		$data[0] = Request::input('action');
		$data[1] = Request::input('complejidad');
		$data[2] = Request::input('codigo_complejidad');
		$data[3] = Request::input('descripcion_complejidad');
		$data[4] = Request::input('activa');
		$data[5] = Session::get('usuario')->user_id;
		$c = SQLConnection::backendStoreProcedure('backend_complejidad_doc', $data, 'selectOne');


		$desc = NULL;
		$estado = -1;
		$complejidad = SQLConnection::backendStoreProcedure('backend_complejidad_doc', array('CONSULTAR',null,null,null,null,null), 'select');
		/*return view('tablasgenerales/complejidad_doc')->with(compact('complejidad', 'desc', 'estado'));*/

		return redirect()->back();
	}

	public static function complejidadDocEdit() {
		$id = Request::input('id');
		$d1 = SQLConnection::backendStoreProcedure('backend_complejidad_doc', array('SELECT',$id,null,null,null,null), 'select');
		$d2 = $d1[0];

		$data = new stdClass();
		$data->action = "MODIFICAR";
		$data->complejidad = $d2->complejidad;
		$data->codigo_complejidad = $d2->codigo_complejidad;
		$data->descripcion_complejidad = $d2->descripcion_complejidad;
		$data->activa = $d2->activa;

		return view('modals/modal_complejidad_doc')->with(compact('data'));
	}

	public static function DeudaPrevisional() {
		$menu     = Misc::obtenerPermisosNavigatorNoCuit();
		$desde    = 'Deudas Previsionales CUIT EMPLEADOR'; 
		return view('/buscador_padron')->with(compact(['menu','desde'])); 
	}

	public static function DeudaPrevisionalCuit() {
		$menu     				 = Misc::obtenerPermisosNavigatorNoCuit();
		$cuit              = Request::Input('cuit');
		$nombre_persona    = Request::Input('nombre_persona');
		$visible = 1;
		$datos = []; 

		$datos = SQLConnection::backendStoreProcedure('deuda_previsional_', array($cuit), 'select');
	
	    return view('tablasgenerales/deuda_previsional')->with(compact('cuit','nombre_persona','menu','datos'));

	}
	
	public function screeningTxtCliente(){

	    $menu = Misc::obtenerPermisosNavigatorNoCuit();
		return view('screening/formulario_carga_txt_cliente')->with(compact('menu'));
	}

	public function screeningPasos(){
	    $menu = Misc::obtenerPermisosNavigatorNoCuit();
		return view('screening/pasos_a_seguir')->with(compact('menu'));
	}

	public function screeningControlConsultaAfip(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		return view('screening/control_consulta_afip')->with(compact('menu'));
	}

	public function screeningFechaProceso(){
		$cliente = Request::Input('cliente');
		$fechas = SqlConnection::backendStoreProcedure('screening_fecha_ultimo_proceso', array($cliente),'SelectOne');
		$fecha_proceso = $fechas->fecha ?? null; 
		//return $fecha_proceso; 
		return json_encode(array('fecha' => $fecha_proceso,'error'=>'OK'));

	}

	public function screeningSubirTxtCliente(){
		$cliente = Request::Input('cliente');
		$fecha   = Request::Input('fecha_desde') ?? null;
		$afip    = Request::Input('afip') ?? 1;
	 	$user_id 		= Session::get("usuario")->user_id;
		$user_name = Session::get('usuario')->username;
		$archivo = $_FILES['archivo']['name'];
		$url_temporal = $_FILES['archivo']['tmp_name'];
		$destino = "/var/www/html/compartido/screening/" . $cliente . "/";
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		if(!is_dir($destino)){
			mkdir($destino, 0777,true);
		}

		$cuits = [];
		if(move_uploaded_file($url_temporal, $destino.$archivo)) {
			chmod($destino, 0777);
			$file = fopen($destino.$archivo, 'r');
			while (!feof($file)){
				$linea = fgets($file);
				/* Solo deja los numeros */
				$numero = ''; 
				$numero = trim(preg_replace("/[^0-9]/", "", $linea));
				if (strlen($numero) > 0) 
				{
					$cuits[] = $numero;
				}
			}
			
			$cant = 0; 
			foreach($cuits as $key => $v) {
				$cant += 1; 
				try {
					SqlConnection::backendStoreProcedure('screening_insertar', array($cliente,$v,$fecha,$afip));
				} catch (Exception $e) {
					$mensaje = $e->getMessage();
					return view("/screening/mensaje")->with(compact(['mensaje','menu']));
				}
			}

			if ($cant == 0)
			{
				$mensaje = 'No se ha cargado ningún registro';
			}
			else
			{
				$mensaje = 'Archivo cargado correctamente. Total de registros a procesar: ' . $cant;
			}
			return view("/screening/mensaje")->with(compact(['mensaje','menu']));
		}
		else 
		{
			$mensaje = "Se produjo un error al subir el archivo.";
			return view("/screening/mensaje")->with(compact(['mensaje','menu']));
		}
 	}

 	//NUEVAS FUNCIONES PARA CONSULTAS MIS APORTES 

	public function vistaConsutlaMisAportes(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();

		return view('/tablasgenerales/mis_aportes_nuevo')->with(compact('menu')); 
 	}

	//NUEVAS FUNCIONES PARA CONSULTAS A REALIZAR MIS APORTES

	public function ConsultaRealizarMisAportes(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();

		$disponibles = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('productos'), 'select');				
		$asignados = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', array('mis_aportes_productos'), 'select');

		return view('/tablasgenerales/consulta_realizar_misaportes')->with(compact('menu','disponibles','asignados')); 
	}

	public function datosConsultaRealizadaAportes(){
		$params = [];
		$hay = 'SI';
		$registros  = SQLConnection::backendStoreProcedure('mis_aportes_enriquecer', $params,'select');				
		
		if( empty($registros) ){ 
			$hay = 'NO';
		}
		
		return view('/tablasgenerales/tabla_realizar_mis_aportes')->with(compact('hay', 'registros')); 
	}

	//NUEVAS FUNCIONES PARA CONSULTA DE JUICIOS SCW
	public function vistaJuiciosSCW(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		return view('/tablasgenerales/consulta_juicios_scw')->with(compact('menu')); 
	}

	public function datosJuiciosSCW(){
		$fecha_desde = Request::input('fecha_desde_con');
		$fecha_hasta = Request::input('fecha_hasta_con');
		$fecha_desde_dmy = substr($fecha_desde, 8, 2) . "/" . substr($fecha_desde, 5, 2) . "/" . substr($fecha_desde, 0, 4);
		$fecha_hasta_dmy = substr($fecha_hasta, 8, 2) . "/" . substr($fecha_hasta, 5, 2) . "/" . substr($fecha_hasta, 0, 4);
		
		if($fecha_desde == ''){ 
			$fecha_desde = null;
		}
		
		if($fecha_hasta == ''){ 
			$fecha_hasta = null;
		}
		
		$params= array($fecha_desde,$fecha_hasta,null);
		$registros_consulta  = SQLConnection::backendStoreProcedure('backend_juicios_scw_consultas', $params,'select');				
		$_5anios = date('Y');
		$_5anios-= 5; 
		$cant = 0; 
		$files = scandir('/var/www/html/fidelitas/public/files_action');
		
		foreach($files as $key => $file){
			if($file != '.' && $file != '..') {
				$cant += 1; 
			}
		}

		return view('/tablasgenerales/consulta_juicios_scw')->with(compact('registros_consulta','fecha_desde_dmy','fecha_hasta_dmy','_5anios','cant'));
	}

	//NUEVAS FUNCIONES PARA ACTUALIZACION DE DIRECTORIOS
	public function actualizarDirectorios(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();

		$disponibles = SQLConnection::backendStoreProcedure('socios_enriquecer', array('clientes_enriquecer_socios_disponibles'), 'select');
		$asignados = SQLConnection::backendStoreProcedure('socios_enriquecer', array('clientes_enriquecer_socios_asignados'), 'select');
		$son_contrapartes = 'si'; 
		
		return view('/tablasgenerales/socios_enriquecer_nuevo')->with(compact('menu','disponibles','asignados','son_contrapartes')); 
	}

	public function mostrarEdictos(){		
		// Edictos
		$cuit = $_GET['cuit'] ?? null;
		$nombre_persona = $_GET['nombre'] ?? null;				
		$tipo_persona              = (substr($cuit,0,1) != '3') ? 'f' : 'j';

    
		$razon_social_todos        = [];  
		$razon_social              = Request::input('nombre_persona') ?? $_GET['nombre'] ;
		$razon_social              = str_replace('#', 'ñ', $razon_social);
		$razon_social_todos[5]     = $razon_social;
		$razon_social_f            = Request::input('nombre_persona') ?? $_GET['nombre'];
		$razon_social_f            = str_replace('#', 'ñ', $razon_social_f);
		$razon_social_f            = preg_replace('/\(|\)/','',$razon_social_f);
		$malla_razon_social        = $razon_social;

		$razon_social_completa     = '';
		$razon_social_explode      = explode(" ", $razon_social_f);


		$resultado_nombres_ant     = []; 		
		$nombres_anteriores = SQLConnection::backendCambiosNombres($cuit);
		$resultado_nombres_ant[] = $razon_social;
		if ($tipo_persona =='j') {
			$accionistas = SQLConnection::obtenerAccionistasNew($cuit);
			if ($nombres_anteriores) {       
				foreach ($nombres_anteriores as $nombre_ant) {
					$resultado_nombres_ant[] = $nombre_ant->nombre; 
				}
			}
		}
		else {
			$accionistas = ''; 
		}
    	//Elimina de las combinaciones los valores que contienen una letra 
		$explode_aux = [];
		foreach ($razon_social_explode as $key => $value) {
			if(isset($value) && (strlen($value) > 1)) {
				$explode_aux[] = $value;
			}
		}

		$razon_social_explode = $explode_aux;

		$edictos_homonimos = [];
 		$edictos = SQLConnection::backendStoreProcedure('backend_obtener_edictos',array($cuit),"select");

		//P. FISICA
		if($tipo_persona == 'f') {
			$razon_social_explode = array_values($razon_social_explode);
			$resultado_razon_social    = Misc::resultadoCombinaciones($razon_social_explode);
			
			//Limita a 10 resultados las combinaciones en PF
			$resultado_razon_social = array_slice($resultado_razon_social, -10);
			$cant_resultado_razon_social = count($resultado_razon_social);

			if($cant_resultado_razon_social < 10){
				foreach($resultado_razon_social as $key => $rs){
					if(!(end($resultado_razon_social) == $rs)) {
						$razon_social_completa .='NEAR(('.str_replace(" ",",",$rs).'),0,true) OR ';
					}
					else {
						$razon_social_completa .= 'NEAR(('.str_replace(" ",",",$rs).'),0,true)';
					}
				}
			}
			else {
				$razon_social_completa = "\"".$razon_social_f."\"";				
			}
		}
		
		
		// P. JURIDICA
		if($tipo_persona == 'j') {
			$sinonimos                 = Misc::diccionarioSinonimosTEST($resultado_nombres_ant);
			$count_sinonimo = count($sinonimos) - 1;
            
			foreach($sinonimos as $key => $rs) {
				if(!($key == $count_sinonimo)){
					$razon_social_completa .= $rs.'OR';
				}
				else {
					$razon_social_completa .= $rs;
				}
			}
			
			if(!$razon_social_completa){
				$razon_social_completa = "\"".$razon_social."\"";				
			}
  			$edictos_homonimos = SQLConnection::backendStoreProcedure('obtener_edictos_homonimos_conid',array($razon_social_completa),"select");			
		}else {
			//Edictos para PF
  			$edictos_homonimos = 
  			SQLConnection::backendStoreProcedure('obtener_edictos_homonimos_conid',array($razon_social_completa),"select");
			$sinonimos = $razon_social_completa; 
        }		
		if($edictos_homonimos) {
			if($tipo_persona == 'f') {
				$edictos_homonimos = Misc::ResaltarResultadosEdictosHomonimosPF($edictos_homonimos,$resultado_razon_social);
            }
            else {
				$edictos_homonimos   = Misc::ResaltarResultadosEdictosHomonimosNombresAnt($edictos_homonimos, $sinonimos);
            }
        }
		$aux=[];
		foreach($edictos_homonimos as $key => $value){
			if(!isset($aux[$value->id_boletin][$value->razon_social])){
				$aux[$value->id_boletin][$value->razon_social] = new stdClass();
				$aux[$value->id_boletin][$value->razon_social]->id_fide = '';
			}
			$aux[$value->id_boletin][$value->razon_social]->id_boletin = $value->id_boletin;
			$aux[$value->id_boletin][$value->razon_social]->provincia_boletin = $value->provincia_boletin;
			$aux[$value->id_boletin][$value->razon_social]->fechab = $value->fechab;
			$aux[$value->id_boletin][$value->razon_social]->fecha_publicacion = $value->fecha_publicacion;
			$aux[$value->id_boletin][$value->razon_social]->contenido_archivo = $value->contenido_archivo;
			$aux[$value->id_boletin][$value->razon_social]->tabla = $value->tabla;
			$aux[$value->id_boletin][$value->razon_social]->quien = $value->quien;
			
			$aux[$value->id_boletin][$value->razon_social]->id_fide .= $value->id_fide.',';
		}
		
		$edictos_homonimos = $aux;
		$aux=[];
		foreach($edictos as $key => $value){
			if(!isset($aux[$value->id_boletin][$value->razon_social])){
				$aux[$value->id_boletin][$value->razon_social] = new stdClass();
				$aux[$value->id_boletin][$value->razon_social]->id_fide = '';
			}
			$aux[$value->id_boletin][$value->razon_social]->cuit = $value->cuit;
			$aux[$value->id_boletin][$value->razon_social]->id_boletin = $value->id_boletin;
			$aux[$value->id_boletin][$value->razon_social]->provincia_boletin = $value->provincia_boletin;
			$aux[$value->id_boletin][$value->razon_social]->fechab = $value->fechab;
			$aux[$value->id_boletin][$value->razon_social]->fecha_publicacion = $value->fecha_publicacion;
			$aux[$value->id_boletin][$value->razon_social]->contenido_archivo = $value->contenido_archivo;
			$aux[$value->id_boletin][$value->razon_social]->tabla = $value->tabla;
			$aux[$value->id_boletin][$value->razon_social]->quien = $value->quien;
			
			$aux[$value->id_boletin][$value->razon_social]->id_fide .= $value->id_fide.',';
		}
		$edictos = $aux;
		$mostrar_homonimos = true;	    	
		
		return view('/produccion/edictos_nuevo')->with(compact('cuit', 'nombre_persona', 'edictos', 'mostrar_homonimos', 'edictos_homonimos', 'malla_razon_social'));
	}

	public function modalCargaBoletin(){				
		$select = $_GET['n'];
		$cuit = $_GET['cuit'] ?? null;
		$nombre = $_GET['nombre'] ?? null;
		$edictos = [];

		if ($cuit !== null){
			$edictos = SqlConnection::backendStoreProcedure('obtener_edictos', array($cuit));
		}

		$regiones = SqlConnection::backendStoreProcedure('obtener_regiones_edictos', array('1'));
		
		return view('extractor/cargar-nuevo')->with(compact(['regiones','cuit','nombre','edictos']));
	}

	public function fechaScreening(){		
		$cliente = Request::input('cliente');		
		$fechas = SQLConnection::backendStoreProcedure("socios_enriquecer",array("fechas",$cliente));

		if (!empty($fechas)) {

			return $fechas;
		}else{
			
			return 0;
		}
	}

	public function familiasScreening(){		
		$cliente = Request::input('cliente');		
		$familias = SQLConnection::backendStoreProcedure("socios_enriquecer",array("familias",$cliente));
		return $familias;
		
	}


	// Control Lista CUITs:

	public function obtenerControlListaCuit(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
		$visible = 1;
		$lista  = SQLConnection::backendStoreProcedure('control_consumos_lista_cuit_',array('select',null,$visible),'select');
		$cuit = null; 
		return view('tablasgenerales/control_lista_cuit')->with(compact('lista','visible','menu','lista','cuit'));
	}

	public function filtrarControlListaCuit(){
		$visible = (Request::input('visible')=="") ? 1 : Request::input('visible');
		$lista  = SQLConnection::backendStoreProcedure('control_consumos_lista_cuit_',array('select',null,$visible),'select');
		return view('tablasgenerales/tabla_control_lista_cuit')->with(compact('lista','visible'));
	}

	public function visibleControlListaCuit(){ 
		$id = Request::input('id');	
		$baja  = SQLConnection::backendStoreProcedure('control_consumos_lista_cuit_',array('baja',$id),'selectOne');
		return json_encode(array('error' => $baja->error,'mensaje' => $baja->mensaje)); 
	}

	public function altaControlListaCuit(){ 
		$id = Request::input('modal_id_lista') ?? null;	
		$cuit = Request::input('cuit');	
		$email = Request::input('email');
		$email_array = []; 
		$email_array = explode(',',$email); 
		$errores = ''; 
		foreach ($email_array as $key => $mail)
		{	
			if ( !filter_var($mail, FILTER_VALIDATE_EMAIL) ) 
			{
				$errores .= ' ' . $mail; 
			} 	
		}
		if ($errores !== '')
		{
			return json_encode(array('error' => '3','mensaje' => $errores . ' -  Dirección/es de email inválida/s'));	
		}
		$visible = Request::input('visible') ?? 1;
		$accion = Request::input('accion');
		if ($accion=='M')
		{
			$alta  = SQLConnection::backendStoreProcedure('control_consumos_lista_cuit_',array('update',$id,$visible,$cuit,$email),'selectOne');
		}
		else
		{
			$alta  = SQLConnection::backendStoreProcedure('control_consumos_lista_cuit_',array('alta',null,$visible,$cuit,$email),'selectOne');

		}
		$lista  = SQLConnection::backendStoreProcedure('control_consumos_lista_cuit_',array('select',null,$visible),'select');
		return json_encode(array('error' => $alta->error,'mensaje' => $alta->mensaje,
		'tabla' => view('tablasgenerales/tabla_control_lista_cuit')->with(compact('lista','visible'))->render()
		));	
	}


	public function misAportesProcesarSelect(){		
		$cliente = Request::input('cliente');	
		$id_taken = Request::input('id_taken');		
		$lista_cuil = SQLConnection::backendStoreProcedure('mis_aportes_procesar_',array('LISTACUIL',$cliente,$id_taken));
		return $lista_cuil;
	}

	public function misAportesProcesarUpdate(){	
		$proceso = Request::input('proceso');		
		$id = Request::input('id');		
		$update = SQLConnection::backendStoreProcedure('mis_aportes_procesar_',array('UPDATE',null,null,$proceso,$id));
		return $update;
	}

	public function misAportesProcesarFamilia(){	
		$cliente = Request::input('cliente');
		$id_taken = Request::input('id_taken');
		$familia = Request::input('familia');
		if ( 
			!is_null($cliente) &&
			!is_null($id_taken) &&
			!is_null($familia)
		){
			if ( 
				is_numeric($cliente) &&
				is_numeric($id_taken) &&
				is_numeric($familia)
			){
				SQLConnection::backendStoreProcedure('mis_aportes_procesar_',array('INSERTFAM',$cliente,$id_taken,null,null,null,$familia));
				return Response::json(['error' => 0,'cliente' => $cliente,'id_taken' => $id_taken,'familia' => $familia,'mensaje' => 'Se solicito generar un listado para procesar aportes para las contrapartes de la familia del cliente.'],200);
			} else {
				return Response::json(['error' => 2,'cliente' => $cliente,'id_taken' => $id_taken,'familia' => $familia,'mensaje' => 'Los parametros no son sanitizados.']);	
			}
		} else {
			return Response::json(['error' => 1,'cliente' => $cliente,'id_taken' => $id_taken,'familia' => $familia,'mensaje' => 'Faltan parametros.']);
		}
		
	}

	public function misAportesError(){
		$cuit = Request::input('cuil') ?? '';
		$p_txtError = Request::input('error') ?? '';
		$tipo = Request::input('tipo') ?? 1;
		$p_dias = Request::input('p_dias') ?? 30;

		if ( !is_numeric($tipo) ){
			$tipo = 1;
		}

		if (is_numeric($cuit) && (strlen($cuit) == 11)){
		
			if (strlen($p_txtError) > 1){
				SQLConnection::backendStoreProcedure('mis_aportes_enriquecer',array('CUILERROR',null,$cuit,$p_txtError,$tipo,$p_dias));

				return Response::JSON(['error' => 3, 'mensaje' => 'Error enviado con éxito']);
			}

			return Response::JSON(['error' => 2, 'mensaje' => 'Error vacío']);
		}

		return Response::JSON(['error' => 1, 'mensaje' => 'El valor no corresponde a un cuit']);
	}




	public function constanciaProcesarSelect(){		
		$id_taken = Request::input('id_taken');		
		$lista_cuil = SQLConnection::backendStoreProcedure('padron_constancia_',array('LISTACUIL',$id_taken));
		return $lista_cuil;
	}

	public function constanciaProcesarUpdate(){	
		$id = Request::input('id');		
		$update = SQLConnection::backendStoreProcedure('padron_constancia_',array('UPDATE',null,$id));
		return $update;
	}

	public function constanciaUpdateCuit(){	
		$cuit = Request::input('cuit');
		$update = SQLConnection::backendStoreProcedure('padron_constancia_',array('UPDATE_CUIT',null,null,$cuit));
		return $update;
	}


}