<?php
//Obtengo la ruta General de los archivos!
$uri ='../../Classes/core_class/consultasDb.php';

include_once($uri);

class eficiencias extends consultasDb
{
	public function __construct()
	{
		parent::__construct('');
		$this->setDbLink(parent::Conectar());
	}
	
	public function GetSucursales()
	{
	   $sucursales = new consultasDb('');
	   $sucursales->setConsulta('SELECT LocalizacionJerarquicaID, Descripcion FROM Sucursales');
	   $resultado_sucursales = $sucursales->query();
	   $sucursales_array= array();
	   while($row = $sucursales->fetchArray($resultado_sucursales))
	   {
			array_push($sucursales_array,$row);
	   }
	   
	   return $sucursales_array; 
	}
	
	public function GetConfiguraciones($ConfiguracionNombre)
	{
	   $configuraciones = new consultasDb('');
	   $configuraciones->setConsulta("SELECT * FROM configuraciones WHERE ConfiguracionNombre = '".$ConfiguracionNombre."'");
	   $q = $configuraciones->query();
	   $row = $configuraciones->fetchArray($q);
	   $configuraciones->Desconectar();
	   return $row["ConfiguracionValor"];
	}
	
	public function GetSucursalesAsociadasPorOperador($operador_monitor_id)
	{	   
	   $sucursales_asociadas = new consultasDb('');
	   $sucursales_asociadas->setConsulta("SELECT LocalizacionJerarquicaID 
	   									   FROM operadores_monitores_sucursales
										   WHERE OperadorMonitorID = ".$operador_monitor_id);
	   $resultado_sucursales_asociadas = $sucursales_asociadas->query();
	   
	   $sucursales_asociadas_array= array();
	   while($row = $sucursales_asociadas->fetchArray($resultado_sucursales_asociadas))
	   {
			array_push($sucursales_asociadas_array,$row["LocalizacionJerarquicaID"]);
	   }	   
	   return $sucursales_asociadas_array;
	}
	
	public function GetDistritosBySucursalID($parametros)
	{	   
	   $distritos = new consultasDb('');
	   $distritos->setConsulta("CALL get_distritos_by_sucursal_id('".implode(",",json_decode($parametros['sucursales']))."')");
	   $resultado_distritos = $distritos->query();
	   
	   $distritos_array= array();
	   while($row = $distritos->fetchArray($resultado_distritos))
	   {
			array_push($distritos_array,$row);
	   }	   
	   return json_encode($distritos_array);
	}
	
	public function GetZonasByDistritosID($parametros)
	{	   
	   $zonas = new consultasDb('');
	   $zonas->setConsulta("CALL get_zonas_by_distrito_id('".implode(",",json_decode($parametros['distritos']))."')");
	   $resultado_zonas = $zonas->query();
	   
	   $zonas_array= array();
	   while($row = $zonas->fetchArray($resultado_zonas))
	   {
			array_push($zonas_array,$row);
	   }	   
	   return json_encode($zonas_array);
	}
	
	public function GetEficienciasBarras($parametros)
	{		
		try
		{			
			$eficiencia = new consultasDb("");
			//armamos el nombre del procedimiento.
			$procedimiento_nombre = "";
			if($parametros['localizacion_jerarquica_configurado']=='3') 
				$procedimiento_nombre .= "get_eficiencia_barra_zonas_";
			elseif($parametros['localizacion_jerarquica_configurado']=='2') 
				$procedimiento_nombre .= "get_eficiencia_barra_distritos_";
			else
				$procedimiento_nombre .= "get_eficiencia_barra_sucursales_";
			
			if($parametros['nivel']=='3') 
				$procedimiento_nombre .= "zonas";
			elseif($parametros['nivel']=='2') 
				$procedimiento_nombre .= "distritos";
			else
				$procedimiento_nombre .= "sucursales";	
			
			
			$query ="call ".$procedimiento_nombre."('".$parametros["fecha_desde"]."',
													 '".$parametros["fecha_hasta"]."',
													 '".implode(",",json_decode($parametros['localizacion_jerarquica']))."');";
			
			$eficiencia->setConsulta($query);
			$q = $eficiencia->query();
			$eficiencia->Desconectar();
			
			$rows = array();
			$cols = array();
			$temp = array();	
			$table = array();
			
			$cols[] = array('label' => 'Fecha', 'type' => 'string');

			$fecha = NULL;
			$fecha_aux =NULL;
			$fecha_set = false;
			$set_cols = false;
			
			while($row = $eficiencia->fetchArray($q)){
				$fecha_aux =$row["tmp_fecha"];
				
				if(is_null($fecha))
					$fecha = $row["tmp_fecha"];
			
				if($fecha==$fecha_aux)
				{
					if(!$set_cols){
						$cols[] = array('label' => $row["tmp_localizacion_jerarquica"], 'type' => 'number');
						$cols[] = array('id' => "",'role' => "tooltip", 'type' => 'string', 'p' =>array('role' => "tooltip"));
						$cols[] = array('id' => "",'label' => "","pattern" => "", 'type' => 'number', 'p' =>array('role' => "interval"));
						$cols[] = array('id' => "",'label' => "","pattern" => "", 'type' => 'number', 'p' =>array('role' => "interval"));

					}
					
					if(!$fecha_set){
						$temp[] = array('v' => (string) $row["tmp_fecha"]);
						$fecha_set = true;
					}
					$temp[] = array('v' => (int) ($row["porcentaje"]==0)?2:$row["porcentaje"]);
					$temp[] = array('v' => (string)"** ".$row["tmp_localizacion_jerarquica"]." **\n Eficiencia: ".$row["porcentaje"]."% \nVisitados sin Ventas: ".(100-$row["porcentaje"])."%" );
					$temp[] = array('v' => (int) ($row["porcentaje"]==0)?2:$row["porcentaje"]);
					$temp[] = array('v' => (int) 100);

				}else{
					$set_cols = true;
					$rows[] = array('c' => $temp);
					
					unset($temp);
					$temp[] = array('v' => (string) $row["tmp_fecha"]);
					$temp[] = array('v' => (int) ($row["porcentaje"]==0)?2:$row["porcentaje"]);
					$temp[] = array('v' => (string)"** ".$row["tmp_localizacion_jerarquica"]." - ".$row["tmp_fecha"]." **\n Eficiencia: ".$row["porcentaje"]."% \nVisitados sin Ventas: ".(100-$row["porcentaje"])."%" );
					$temp[] = array('v' => (int) ($row["porcentaje"]==0)?2:$row["porcentaje"]);
					$temp[] = array('v' => (int) 100);
					$fecha = $row["tmp_fecha"];
				}
				
			}
			$rows[] = array('c' => $temp);
			
			$table['cols']=$cols;
			$table['rows']=$rows;
			$jsonTable = json_encode($table);
			echo $jsonTable;

		} 
		catch (Exception $e) 
		{
			return 'Excepción capturada: '.  $e->getMessage(). "\n";
		}
	}
	
	public function GetEficienciasTortas($parametros)
	{		
		try
		{			
			//armamos el nombre del procedimiento.
			$procedimiento_nombre = "";
			if($parametros['localizacion_jerarquica_configurado']=='3') 
				$procedimiento_nombre .= "get_eficiencia_torta_zonas_";
			elseif($parametros['localizacion_jerarquica_configurado']=='2') 
				$procedimiento_nombre .= "get_eficiencia_torta_distritos_";
			else
				$procedimiento_nombre .= "get_eficiencia_torta_sucursales_";
			
			if($parametros['nivel']=='3') 
				$procedimiento_nombre .= "zonas";
			elseif($parametros['nivel']=='2') 
				$procedimiento_nombre .= "distritos";
			else
				$procedimiento_nombre .= "sucursales";	
			
			
			$query ="call ".$procedimiento_nombre."('".$parametros["fecha_desde"]."',
													 '".$parametros["fecha_hasta"]."',
													 '".implode(",",json_decode($parametros['localizacion_jerarquica']))."');";
			$torta = new consultasDb("");
			$torta->setConsulta($query);
			$q = $torta->query();
			$torta->Desconectar();			
			
			
			$rows = array();
			$cols = array();
			$temp = array();	
			$table = array();
			
			$cols[] = array('label' => 'Leyenda', 'type' => 'string');
			$cols[] = array('label' => 'Eficiencia', 'type' => 'number');
			$cols[] = array('label' => 'Localización Jerárquica', 'type' => 'string');

			$fecha = NULL;
			$fecha_aux =NULL;
			$fecha_set = false;
			$set_cols = false;
			
			while($row = $torta->fetchArray($q)){
				
				$temp[] = array('v' => (string)'Eficiencia: '.$row["porcentaje"].'%');
				$temp[] = array('v' => (float)$row["porcentaje"]);
				$temp[] = array('v' => (string)$row["localizacion_jerarquica"]);
				
				$rows[] = array('c' => $temp);
				unset($temp);
				
				$sin_ventas = 100 - $row["porcentaje"];
				$temp[] = array('v' => (string)'Visitados sin ventas: '.$sin_ventas.'%');
				$temp[] = array('v' => (float)100-$row["porcentaje"]);
				$temp[] = array('v' => (string)$row["localizacion_jerarquica"]);
				
				$rows[] = array('c' => $temp);
				unset($temp);				
			}
			
			$table['cols']=$cols;
			$table['rows']=$rows;
			
			$jsonTable = json_encode($table);
			echo $jsonTable;
		} 
		catch (Exception $e) 
		{
			return 'Excepción capturada: '.  $e->getMessage(). "\n";
		}
	}
}
?>