<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use App\Custom\Misc;
use Request;
use Session;
use Illuminate\Support\Facades\Input;
use DB;
class UtilitariosController extends Controller  {

	public static function getIdentificadores() {
		$cc = Request::input('country_code');
		if($cc != "") {
			$identificadores = SQLConnection::backendStoreProcedure('backend_obtener_identificadores_pais', array($cc));
			return response()->json($identificadores);
		}
	}


	public static function obtenerScore(){
		$menu = Misc::obtenerPermisosNavigatorNoCuit();
	    $valido =  Misc::restriccionPermiso('SCORE');
	    if(!$valido){ return redirect('/menu'); }
		$tabla_score = SQLConnection::backendStoreProcedure('obtener_tabla_score',array(),"select");
		
		// Separando tabla score por grupos
		$json  = json_encode($tabla_score);
		$array_tabla_score = json_decode($json, true);
		$grupos = array_column($array_tabla_score, 'id_grupo');
		$grupos = array_unique($grupos);
		$tabla_score_separada = [];
		foreach ($grupos as $grupo) {
			$tabla_score_separada[$grupo] = array_filter($array_tabla_score, function($v, $k) use ($grupo) {
			    return ($v['id_grupo'] == $grupo);
			}, ARRAY_FILTER_USE_BOTH);
		}
		//---------------------------------

		$tabla_porcentajes_score = SQLConnection::backendStoreProcedure('obtener_porcentaje_score_por_afectacion',array(),"select");
		$tabla_porcentajes_indice_combinacion_general = SQLConnection::backendStoreProcedure('obtener_porcentajes_indice_combinacion_general',array(),"selectOne");

		// Se agrega nueva tabla de valores 24102024 - TB		
		$tablaNueva = SQLConnection::backendStoreProcedure('score_balance_',array('select',null, null, null, null));
		
		$tablaAportes = SQLConnection::backendStoreProcedure('score_aportes_',array('select'));

		return View('/utilitarios/tablas_score')->with(compact('tabla_score_separada','tabla_porcentajes_score','tabla_porcentajes_indice_combinacion_general','menu','tablaNueva','tablaAportes'));
	}


	public static function editarTablaScore(){
		$score[] = Request::input('id_score');
		$score[] = (Request::input('cant_desde') == '') ? null: Request::input('cant_desde');
		$score[] = (Request::input('cant_hasta') == '') ? null: Request::input('cant_hasta');
		$score[] = (Request::input('dias_desde') == '') ? null: Request::input('dias_desde');
		$score[] = (Request::input('dias_hasta') == '') ? null: Request::input('dias_hasta');
		$score[] = Request::input('valor');
		$score[] = Request::input('afecta_directo');
		$resp = SQLConnection::backendStoreProcedure('backend_modificar_score_tabla_valores',$score,"selectOne");
		return 'ok';
	}

	public static function editarTablaScoreBalances(){		
		$score[] = 'update';
		$score[] = Request::input('id_score_chico');
		$score[] = (Request::input('desde_score') == '') ? null: Request::input('desde_score');
		$score[] = (Request::input('hasta_score') == '') ? null: Request::input('hasta_score');
		$score[] = Request::input('valor_score');
		$resp = SQLConnection::backendStoreProcedure('score_balance_',$score);

		return 'ok';
	}

	public static function editarTablaScoreAportes(){		
		$score[] = 'update';
		$score[] = Request::input('id_aportes_chico');
		$score[] = Request::input('valor_aportes');
		$resp = SQLConnection::backendStoreProcedure('score_aportes_',$score);

		return 'ok';
	}

	public static function editarIndicesGenerales(){
		$indices = [];
		$indices[] = Request::input('contable');
		$indices[] = Request::input('judicial');
		$indices[] = Request::input('cendeu');
		$indices[] = Request::input('cheques');
		$indices[] = Request::input('fiscal');
		$indices[] = Request::input('formal');
		$resp = SQLConnection::backendStoreProcedure('backend_modificar_score_indice_combinacion_general',$indices,"selectOne");
		return 'ok';
	}

	public static function editarPorcentajesAfectacion(){
		$porcentajes = [];
		$porcentajes[] = Request::input('porcentaje_0');
		$porcentajes[] = Request::input('afecta_directo_0');
		$porcentajes[] = Request::input('porcentaje_1');
		$porcentajes[] = Request::input('afecta_directo_1');
		$resp = SQLConnection::backendStoreProcedure('backend_modificar_score_porcentajes_afectacion',$porcentajes,"selectOne");
		return 'ok';
	}


	//--------------- SLIDERS ACTIONS---------------------------

	public static function obtenerSliders() {
		$result = [];
		$exec = SQLConnection::backendStoreProcedure('obtener_sliders', array(0, 0));
		$sliders = count($exec) != 0 ? $exec : [];

		foreach ($sliders as $slider) {
			$exec = SQLConnection::backendStoreProcedure('obtener_imagenes', array($slider->id, null));
			$imagenes = count($exec) != 0 ? $exec : [];
			$slider->imagenes = $imagenes;
			$result[] = $slider;
		}
		$sliders = $result;
		return view('slider/index')->with(compact('sliders'));
	}

	public static function obtenerImagenes() {
		$id = Request::input('id');
		$src = Request::input('id');
		$imagenes = SQLConnection::backendStoreProcedure('obtener_imagenes', array( $id, $src));
		$vista =  view('slider/imagenes')->with(compact('imagenes'))->render();
		return response()->json($vista);
	}

	public static function agregarImagenes() {
		$path_imagenes = ENV('PATH_IMAGENES_FRONT_END').DIRECTORY_SEPARATOR;
		$imagenes = [];
		$input_imagenes = Request::allFiles();
		$errores = [];
		$pos = 1;
		$exec = SQLConnection::backendStoreProcedure('obtener_ultima_imagen', array());
		$i = ($exec != []) ? $exec[0]->id + 1 : 1;
		foreach ($input_imagenes as $imagen) {
			//mover archivos al path nuevo, insertar imagenes en BD, retornar array de paths
			$original_name = $imagen->getClientOriginalName();
			$extension = $imagen->getClientOriginalExtension();
			$path_destino = $path_imagenes . 'imagen_slider_' ;
			while (file_exists($path_destino . $i . '.' . $extension)) {
				$i++;
			}
			$path_destino = $path_destino . $i . '.' . $extension;
			if (move_uploaded_file($imagen->path(), $path_destino) !== false) {
				$src = str_replace($path_imagenes, '', $path_destino);
				$exec = SQLConnection::backendStoreProcedure('insertar_imagenes', array($src, null, 0, $pos, 1));
				$pos++;
				$i++;
				$imagenes[] = $exec[0];
			} else {
				$errores[] = "Error: no se pudo mover el archivo [$original_name] a la ruta prevista [$path_destino]";
			}
		}
		$vista =  view('slider.imagenes')->with(compact('imagenes', 'errores'))->render();
		return response()->json($vista);
	}

	public static function procesarSlider() {
		$result = [];
		$imagenes = request()->except(['_token', 'modal_descripcion', 'modal_status', 'modal_id', 'modal_ubicacion', 'modal_imagenes']);
		$imagenes = array_values($imagenes);
		$cantidad_inputs = count($imagenes);
		$cantidad_imagenes = count($imagenes)/4;
		$z = 0;
		for ($i=0; $i < $cantidad_imagenes ; $i++) { 
			if($z < $cantidad_inputs){
				$imagen['src'] = $imagenes[$z];
				$z++;
				$imagen['posicion'] = $imagenes[$z];
				$z++;
				$imagen['texto'] = $imagenes[$z];
				$z++;
				$imagen['visible'] = $imagenes[$z];
			}
			$result[] = $imagen;
			$z++;
		}
		$id = Request::input('modal_id');
		$descripcion = Request::input('modal_descripcion');
		$visible = intval(Request::input('modal_status'));
		$ubicacion = intval(Request::input('modal_ubicacion'));
		$exec = SQLConnection::backendStoreProcedure('insertar_slider', array($id, $descripcion, $ubicacion, $visible));
		$id_slider = $exec[0]->id_slider;
		foreach ($result as $imagen) {
			$exec = SQLConnection::backendStoreProcedure('editar_imagenes', array($imagen['src'] , $imagen['texto'], $id_slider, $imagen['posicion'], $imagen['visible']));
		}
		return response()->json(['status' => 'ok']);
	}

	public static function statusSlider() {
		$id = Request::input('id');
		$accion = Request::input('accion');
		$ubicacion = Request::input('ubicacion');
		if ($accion == 'activar'){
			$exec = SQLConnection::backendStoreProcedure('status_slider', array($id, $ubicacion, 1));
		}elseif ($accion == 'desactivar'){
			$exec = SQLConnection::backendStoreProcedure('status_slider', array($id, $ubicacion, 0));
		}
		return response()->json(['status' => 'ok']);
	}

	
}
