<?php
header('Content-Type: application/json;charset= utf-8');
require("dbinfo.php");
require("dl.php");

$con = mysqli_connect($sqlname, $username, $password, $db);
if(!$con){exit;}
mysqli_set_charset($con,"utf8");

$consulta = '';
$mensaje = '';

$res = array();
$res_conexiones = array();
$res_conexiones2 = array();
$res_control = array();

if($_REQUEST['consulta']){$consulta = $_REQUEST['consulta'];}


$lista_consulta = json_decode($consulta);
$sql_fuente = '';
$sql_tramite = '';
$sql_etapa = '';
$sql_accion = '';
$sql_ccz = '';
$sql_calle = '';
$sql_sur = '';
$sql_servicios = '';
$sql_certificado = '';
$sql_zona = '';
$primersql = true;

//FILTRO CON FUENTE DE DATOS DE CONEXION

if ($lista_consulta->{'fuente'} == true)
{
$primersql = false;
switch ($lista_consulta->{'fuente_valor'}){
    case "Sistema de conexiones":
        $sql_fuente = " alta_fuent = 'SISTEMA DE CONEXIONES' ";
        $mensaje = $mensaje . " Fuente de datos: SISTEMA DE CONEXIONES ";
        break;
    case "Inspeccion red Arteaga":
        $sql_fuente = " alta_fuent = 'ARTEAGA' ";
        $mensaje = $mensaje . " Fuente de datos: INSPECCION RED ARTEAGA ";
        break;    
    case "Conforme obra":
        $sql_fuente = " alta_fuent LIKE 'CONFORME OBRA%' ";
        $mensaje = $mensaje . " Fuente de datos: PLANOS CONFORME OBRA ";
        break;
    case "Sistema unico de reclamos":
        $sql_fuente = " alta_fuent = 'DATOS RECOPILADOS DEL SISTEMA UNICO DE RECLAMOS' ";
        $mensaje = $mensaje . " Fuente de datos: SISTEMA UNICO DE RECLAMOS ";
        break;
    case "Datos recopilados libros":
        $sql_fuente = " alta_fuent = 'DATOS RECOPILADOS DE LIBROS' ";
        $mensaje = $mensaje . " Fuente de datos: DATOS RECOPILADOS DE LIBROS ";
        break;
    case "Aplicacion de Catastro":
        $sql_fuente = " alta_fuent = 'INGRESO CON APLICACION DE CATASTRO' ";
        $mensaje = $mensaje . " Fuente de datos: APLICACION DE CATASTRO ";
        break;    
    case "Importacion":
        $sql_fuente = " alta_fuent LIKE '%INGRESO POR IMPORTACION%' ";
        $mensaje = $mensaje . " Fuente de datos: IMPORTACION ";
        break;                
    case "Otros":
        $sql_fuente = " alta_fuent = 'CARGA INICIAL DE SISTEMA' ";
        $mensaje = $mensaje . " Fuente de datos: CARGA INICIAL DE SISTEMA ";
        break;   
    default:
        $sql_fuente = " alta_fuent = 'CARGA INICIAL DE SISTEMA' ";
        $mensaje = $mensaje . " Fuente de datos: CARGA INICIAL DE SISTEMA ";
 }
}



//FILTRO CON FUENTE DE DATOS DE CERTIFICADO

if ($lista_consulta->{'certificado'} == true)
{  
    switch ($lista_consulta->{'certificado_valor'}){
        case "Con certificado":
            $sql_certificado = " historial LIKE '%CCON,%' ";
            $mensaje = $mensaje . " Con certificado ";
            break;
        default:
            $sql_certificado = " historial NOT LIKE '%CCON,%' ";
            $mensaje = $mensaje . " Sin certificado "; 
        }
if ($primersql == false)
{
$sql_certificado = " AND " . $sql_certificado;
}
$primersql = false;
}





//FILTRO CON FUENTE DE DATOS DE TRAMITE

if ($lista_consulta->{'tramite'} == true)
{  

    switch ($lista_consulta->{'tramite_valor'}){
        case "Existente Inicio":
            $sql_tramite = " tramite = 'Existente Inicio' ";
            $mensaje = $mensaje . " Tramite: Existente Inicio";
            break;
        case "Existente Pend Inf Tecnico":
            $sql_tramite = " tramite = 'Existente Pend Inf Tecnico' ";
            $mensaje = $mensaje . " Tramite: Existente Pend Inf Tecnico";
            break;
        case "Existente Observado":
            $sql_tramite = " tramite = 'Existente Observado' ";
            $mensaje = $mensaje . " Tramite: Existente Observado";
            break;
        case "Existente Estudios y Proyectos":
            $sql_tramite = " tramite = 'Existente Estudios y Proyectos' ";
            $mensaje = $mensaje . " Tramite: Existente Estudios y Proyectos";
            break;
        case "Existente Finalizada":
            $sql_tramite = " tramite = 'Existente Finalizada' ";
            $mensaje = $mensaje . " Tramite: Existente Finalizada";
            break;
        case "Existente Otros":
            $sql_tramite = " tramite = 'Existente Otros' ";
            $mensaje = $mensaje . " Tramite: Existente Otros";
            break;
        case "Nueva Inicio":
            $sql_tramite = " tramite = 'Nueva Inicio' ";
            $mensaje = $mensaje . " Tramite: Nueva Inicio";
            break;
        case "Nueva Pend Inf Tecnico":
            $sql_tramite = " tramite = 'Nueva Pend Inf Tecnico' ";
            $mensaje = $mensaje . " Tramite: Nueva Pend Inf Tecnico";
            break;
        case "Nueva Observado":
            $sql_tramite = " tramite = 'Nueva Observado' ";
            $mensaje = $mensaje . " Tramite: Nueva Observado";
            break;
        case "Nueva Estudios y Proyectos":
            $sql_tramite = " tramite = 'Nueva Estudios y Proyectos' ";
            $mensaje = $mensaje . " Tramite: Nueva Estudios y Proyectos";
            break;
        case "Nueva Pend Aprob Insp":
            $sql_tramite = " tramite = 'Nueva Pend Aprob Insp' ";
            $mensaje = $mensaje . " Tramite: Nueva Pend Aprob Insp";
            break;
        case "Nueva en Construccion":
            $sql_tramite = " tramite = 'Nueva en Construccion' ";
            $mensaje = $mensaje . " Tramite: Nueva en Construccion";
            break;
        case "Nueva Finalizada":
            $sql_tramite = " tramite = 'Nueva Finalizada' ";
            $mensaje = $mensaje . " Tramite: Nueva Finalizada";
            break;
        case "Nueva Otros":
            $sql_tramite = " tramite = 'Nueva Otros' ";
            $mensaje = $mensaje . " Tramite: Nueva Otros";
            break;
       case "Grup de Conexiones Inicio":
            $sql_tramite = " tramite = 'Grup de Conexiones Inicio' ";
            $mensaje = $mensaje . " Tramite: Grup de Conexiones Inicio";
            break;
        case "Grup de Conexiones pendiente en uso":
            $sql_tramite = " tramite = 'Grup de Conexiones pendiente en uso' ";
            $mensaje = $mensaje . " Tramite: Grup de Conexiones pendiente en uso";
            break;
        case "Grup de Conexiones pendiente sin uso":
            $sql_tramite = " tramite = 'Grup de Conexiones pendiente sin uso' ";
            $mensaje = $mensaje . " Tramite: Grup de Conexiones pendiente sin uso";
            break;
        case "Grup de Conexiones Fin":
            $sql_tramite = " tramite = 'Grup de Conexiones Fin' ";
            $mensaje = $mensaje . " Tramite: Grup de Conexiones Fin";
            break;
        case "Grup de Conexiones Otros":
            $sql_tramite = " tramite = 'Nueva Finalizada' ";
            $mensaje = $mensaje . " Tramite: Nueva Finalizada";
            break;
        case "Nueva Otros":
            $sql_tramite = " tramite = 'Nueva Otros' ";
            $mensaje = $mensaje . " Tramite: Nueva Otros";
            break;
        case "Cert no saneam":
            $sql_tramite = " tramite = 'Cert no saneam' ";
            $mensaje = $mensaje . " Tramite: Cert no saneam";
            break;
        case "Otros":
            $sql_tramite = " tramite = 'Otros' ";
            $mensaje = $mensaje . " Tramite: Otros";
            break;
        case "Sin tramite":
            $sql_tramite = " tramite = 'Sin tramite' ";
            $mensaje = $mensaje . " Tramite: Sin tramite";
            break;
        }
if ($primersql == false)
{
$sql_tramite = " AND " . $sql_tramite;
}
$primersql = false;
}













//FILTRO CON FUENTE DE DATOS DE ETAPA

if ($lista_consulta->{'etapa'} == true)
{  
$sql_etapa = " etapa = '" . $lista_consulta->{'etapa_valor'} . "' ";
$mensaje = $mensaje . "   Etapa: " . $lista_consulta->{'etapa_valor'};
if ($primersql == false)
{
$sql_etapa = " AND " . $sql_etapa;
}
$primersql = false;
}


//FILTRO CON FUENTE DE DATOS DE ACCION

if ($lista_consulta->{'accion'} == true)
{  
$sql_accion = " accion = '" . $lista_consulta->{'accion_valor'} . "' ";
$mensaje = $mensaje . "   Accion: " . $lista_consulta->{'accion_valor'};
if ($primersql == false)
{
$sql_accion = " AND " . $sql_accion;
}
$primersql = false;
}




//FILTRO CON FUENTE DE DATOS DE CCZ

if ($lista_consulta->{'ccz'} == true)
{  
$sql_ccz = " ccz = '" . $lista_consulta->{'ccz_valor'} . "' ";
$mensaje = $mensaje . "   CCZ: " . $lista_consulta->{'ccz_valor'};
if ($primersql == false)
{
$sql_ccz = " AND " . $sql_ccz;
}
$primersql = false;
}

//FILTRO CON FUENTE DE DATOS DE CALLE

if ($lista_consulta->{'calle'} == true)
{  
$sql_calle = " calle = '" . $lista_consulta->{'calle_valor'} . "' ";
$mensaje = $mensaje . "   Calle: " . $lista_consulta->{'calle_valor'};
if ($primersql == false)
{
$sql_calle = " AND " . $sql_calle;
}
$primersql = false;
}



//FILTRO CON FUENTE DE DATOS DE SUR

if ($lista_consulta->{'sur'} == true)
{  
switch ($lista_consulta->{'sur_valor'}){
    case "SUR Nueva Ingresado":
        $sql_sur = " sur = 'SUR Nueva Ingresado' ";
        $mensaje = $mensaje . " SUR Nueva Ingresado ";
        break;
    case "SUR Nueva Finalizado":
        $sql_sur = " sur = 'SUR Nueva Finalizado' ";
        $mensaje = $mensaje . " SUR Nueva Finalizado ";
        break;
    case "SUR Nueva En Proceso":
        $sql_sur = " sur = 'SUR Nueva En Proceso' ";
        $mensaje = $mensaje . " SUR Nueva En Proceso";
        break; 
    case "SUR Nueva Anulado":
        $sql_sur = " sur = 'SUR Nueva Anulado' ";
        $mensaje = $mensaje . " SUR Nueva Anulado ";
        break;
    case "SUR Rota Ingresado":
        $sql_sur = " sur = 'SUR Rota Ingresado' ";
        $mensaje = $mensaje . " SUR Rota Ingresado ";
        break;     
    case "SUR Rota Finalizado":
        $sql_sur = " sur = 'SUR Rota Finalizado' ";
        $mensaje = $mensaje . " SUR Rota Finalizado ";
        break;
    case "SUR Rota En Proceso":
        $sql_sur = " sur = 'SUR Rota En Proceso' ";
        $mensaje = $mensaje . " SUR Rota En Proceso";
        break; 
    case "SUR Rota Anulado":
        $sql_sur = " sur = 'SUR Rota Anulado' ";
        $mensaje = $mensaje . " SUR Rota Anulado ";
        break;
    case "SUR Obstruida Ingresado":
        $sql_sur = " sur = 'SUR Obstruida Ingresado' ";
        $mensaje = $mensaje . " SUR Obstruida Ingresado ";
        break;
    case "SUR Obstruida Finalizado":
        $sql_sur = " sur = 'SUR Obstruida Finalizado' ";
        $mensaje = $mensaje . " SUR Obstruida Finalizado ";
        break;
    case "SUR Obstruida En Proceso":
        $sql_sur = " sur = 'SUR Obstruida En Proceso' ";
        $mensaje = $mensaje . " SUR Obstruida En Proceso";
        break; 
    case "SUR Obstruida Anulado":
        $sql_sur = " sur = 'SUR Obstruida Anulado' ";
        $mensaje = $mensaje . " SUR Obstruida Anulado ";
        break;
    case "SUR Sucia Ingresado":
        $sql_sur = " sur = 'SUR Sucia Ingresado' ";
        $mensaje = $mensaje . " SUR Sucia Ingresado ";
        break;        
    case "SUR Sucia Finalizado":
        $sql_sur = " sur = 'SUR Sucia Finalizado' ";
        $mensaje = $mensaje . " SUR Sucia Finalizado ";
        break;
    case "SUR Sucia En Proceso":
        $sql_sur = " sur = 'SUR Sucia En Proceso' ";
        $mensaje = $mensaje . " SUR Sucia En Proceso";
        break; 
    case "SUR Sucia Anulado":
        $sql_sur = " sur = 'SUR Sucia Anulado' ";
        $mensaje = $mensaje . " SUR Sucia Anulado ";
        break;         
    default:
        $sql_sur = " sur = 'Sin reclamos' ";
        $mensaje = $mensaje . " SUR Sin reclamos ";
 }
if ($primersql == false)
{
$sql_sur = " AND " . $sql_sur;
}
$primersql = false;
}



//FILTRO CON FUENTE DE DATOS DE SERVICIOS

if ($lista_consulta->{'servicios'} == true)
{  
    switch ($lista_consulta->{'servicios_valor'}){
        case "Sin tarifa":
            $sql_servicios = " servicios = '' ";
            $mensaje = $mensaje . " Sin tarifa ";
            break;
        case "Tarifa unica":
            $sql_servicios = " servicios <> '' AND servicios NOT LIKE '%\",\"%' ";
            $mensaje = $mensaje . " Una sola tarifa ";
            break;    
        case "Alguna tarifa":
            $sql_servicios = " servicios <> '' ";
            $mensaje = $mensaje . " Alguna tarifa ";
            break;
        default:
            $sql_servicios = " servicios <> '' AND servicios LIKE '%\",\"%' ";
            $mensaje = $mensaje . " Multiples tarifas ";
     }

if ($primersql == false)
{
$sql_servicios = " AND " . $sql_servicios;
}
$primersql = false;
}



//FILTRO CON ZONA

if ($lista_consulta->{'zona'} == true)
{  
    $coordinates = json_decode($lista_consulta->{'zona_valor'}, true);
    $polygonCoordinates = [];
    foreach ($coordinates as $point) {
        $polygonCoordinates[] = $point['lng'] . ' ' . $point['lat']; // longitud primero, luego latitud
    }
    $polygonCoordinates[] = $polygonCoordinates[0]; // Agregar el primer punto al final
    $polygon = 'POLYGON((' . implode(', ', $polygonCoordinates) . '))';
    $sql_zona = " ST_Intersects(SHAPE, ST_GeomFromText('$polygon', 4326))";
    $mensaje = $mensaje . " Zona definida usuario ";

if ($primersql == false)
{
$sql_zona = " AND " . $sql_zona;
}
$primersql = false;
}


$sql = "SELECT id, X(Startpoint(SHAPE)) AS lon1, Y(Startpoint(SHAPE)) AS lat1,  X(Endpoint(SHAPE)) AS lon2, Y(Endpoint(SHAPE)) AS lat2, SHAPE, padron, colector, profundidad, tipo, seccion, distmed, distmei, alta_fuent , alta_descr, alta_fecha, servicios, tgms, oses, medidores, sur, historial, tramite, etapa, ccz, accion, fotos, audios, activo, puertas, z_col, via, id_tramite, id_con_ant, calle , empresa, tramite, descripcion FROM conexiones WHERE activo = 1 AND " . $sql_fuente . $sql_tramite . $sql_etapa . $sql_accion . $sql_ccz . $sql_calle . $sql_sur . $sql_certificado . $sql_servicios . $sql_zona . " LIMIT 25000 ";



if ($lista_consulta->{'fecha'} == true)
{
    $fecha_inicial_texto = substr($lista_consulta->{'fecha1_valor'}, 0 , 10) . " 00:00:00";
    $fecha_inicial = dl_fecha::dl_fecha_texto_a_date($fecha_inicial_texto);
    $fecha_final_texto = substr($lista_consulta->{'fecha2_valor'}, 0 , 10) . " 00:00:00";
    $fecha_final =  dl_fecha::dl_fecha_texto_a_date($fecha_final_texto);
    $mensaje = $mensaje . "   Entre: " . substr($fecha_inicial_texto, 0 , 10) . " y " . substr($fecha_final_texto, 0 , 10);
}


$resultado = mysqli_query($con,$sql);
$cuenta_oks = 0;
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
		    // $row = array_map('utf8_encode',$row);
			$elem = array(
							'id'=>$row["id"],
							'lon1'=>$row["lon1"],
                            'lat1'=>$row["lat1"],
							'lon2'=>$row["lon2"],
                            'lat2'=>$row["lat2"],
                            'padron'=>$row["padron"],
                            'colector'=>$row["colector"],
                            'profundidad'=>$row["profundidad"],
                            'tipo'=>$row["tipo"],
                            'seccion'=>$row["seccion"],
                            'distmed'=>$row["distmed"],
                            'distmei'=>$row["distmei"],
                            'alta_fuent'=>$row["alta_fuent"],
                            'alta_descr'=>$row["alta_descr"],
                            'alta_fecha'=>$row["alta_fecha"],
                            'servicios'=>$row["servicios"],
                            'tgms'=>$row["tgms"],
                            'oses'=>$row["oses"],
                            'medidores'=>$row["medidores"],
                            'sur'=>$row["sur"],
                            'historial'=>$row["historial"],
                            'tramite'=>$row["tramite"],
                            'etapa'=>$row["etapa"],
                            'ccz'=>$row["ccz"],
                            'accion'=>$row["accion"],
                            'fotos'=>$row["fotos"],
                            'audios'=>$row["audios"],
                            'activo'=>$row["activo"],
                            'puertas'=>$row["puertas"],
                            'z_col'=>$row["z_col"],
                            'via'=>$row["via"],
                            'id_tramite'=>$row["id_tramite"],
                            'id_con_ant'=>$row["id_con_ant"],
                            'calle'=>$row["calle"],
                            'empresa'=>$row["empresa"],
                            'tramite'=>$row["tramite"],
                            'descripcion'=>$row["descripcion"]
      	   				);
			 $exito_en_consulta = TRUE;

             if ($lista_consulta->{'fecha'} == true)
                {
                    $historial = $row["historial"];
                    if ($historial != '')
                    {
                            $historial_array = json_decode($historial,true);
                            $filtro_fecha_ok = false;
                            foreach($historial_array as $clave2)
                            {
                                $fecha_historial_texto = $clave2['fecha'];
                                $fecha_historial = dl_fecha::dl_fecha_texto_a_date($fecha_historial_texto);
                                if ($fecha_historial >= $fecha_inicial && $fecha_historial <= $fecha_final)
                                {
                                    $filtro_fecha_ok = true;
                                }
                            }
                            if ($filtro_fecha_ok == true)
                            {
                                $cuenta_oks++;
                                array_push($res_conexiones,$elem);
                            }
                    }       
                }
                else
                {
                    $cuenta_oks++;
			        array_push($res_conexiones,$elem);
                } 
                if ($cuenta_oks > 25000){break;}  
            }
		}
}	







$cantidad_resultados = count($res_conexiones);
array_push($res_control,$cantidad_resultados);
array_push($res_control,$mensaje);

array_push($res, $res_conexiones);
array_push($res, $res_control);

mysqli_close($con);
echo json_encode($res);
?>



