<?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");

$res = array();

$mensaje_array = array();


//_CONTROL DE CONEXIONES QUE NO CRUZAN PADRON REFERIDO EN DATOS

$sql = "SELECT A.id AS ID ";
$sql .= ", (X(STARTPOINT(A.SHAPE)) + X(ENDPOINT(A.SHAPE))) / 2  AS XC ";
$sql .= ", (Y(STARTPOINT(A.SHAPE)) + Y(ENDPOINT(A.SHAPE))) / 2  AS YC ";
$sql .= "FROM conexiones AS A INNER JOIN padrones AS B  ";
$sql .= "ON A.padron = B.padron  ";
$sql .= "WHERE activo = 1 AND NOT ST_Intersects(A.SHAPE,B.GEOMETRIA) GROUP BY ID ";
$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
            $elem = array(
                   'id'=>$row['ID'],
                   'xc'=>$row['XC'],
                   'yc'=>$row['YC'],
                   'tipo'=>'Padron cruzado'
                     );
           array_push($res,$elem);
        }
        $mensaje =  mysqli_num_rows($resultado) . " - Padrones cruzados ";
        array_push($mensaje_array,$mensaje);
    }
}            

$resultado = null;

//_CONTROL DE CONEXIONES padron 0

$sql = "SELECT id as ID ";
$sql .= ", (X(STARTPOINT(SHAPE)) + X(ENDPOINT(SHAPE))) / 2  AS XC ";
$sql .= ", (Y(STARTPOINT(SHAPE)) + Y(ENDPOINT(SHAPE))) / 2  AS YC ";
$sql .= "FROM conexiones ";
$sql .= "WHERE activo = 1 AND padron < 1";
$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
            $elem = array(
                   'id'=>$row['ID'],
                   'xc'=>$row['XC'],
                   'yc'=>$row['YC'],
                   'tipo'=>'Padron cero'
                     );
           array_push($res,$elem);
        }
        $mensaje =  mysqli_num_rows($resultado) . " - Padrones 0 ";
        array_push($mensaje_array,$mensaje);
    }
} 

$resultado = null;

//_CONTROL DE CONEXIONES cortas

$sql = "SELECT id as ID, SHAPE ";
$sql .= ", (X(STARTPOINT(SHAPE)) + X(ENDPOINT(SHAPE))) / 2  AS XC ";
$sql .= ", (Y(STARTPOINT(SHAPE)) + Y(ENDPOINT(SHAPE))) / 2  AS YC ";
$sql .= "FROM conexiones ";
$sql .= "WHERE activo = 1  HAVING ST_DISTANCE(STARTPOINT(SHAPE),ENDPOINT(SHAPE)) < 0.00001";
$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
            $elem = array(
                   'id'=>$row['ID'],
                   'xc'=>$row['XC'],
                   'yc'=>$row['YC'],
                   'tipo'=>'Conexion corta'
                     );
           array_push($res,$elem);
        }
        $mensaje =   mysqli_num_rows($resultado) . " - Conexiones cortas  " ;
        array_push($mensaje_array,$mensaje);
    }
} 
$resultado = null;

//_CONTROL DE CONEXIONES largas

$sql = "SELECT id as ID, SHAPE ";
$sql .= ", (X(STARTPOINT(SHAPE)) + X(ENDPOINT(SHAPE))) / 2  AS XC ";
$sql .= ", (Y(STARTPOINT(SHAPE)) + Y(ENDPOINT(SHAPE))) / 2  AS YC ";
$sql .= "FROM conexiones ";
$sql .= "WHERE activo = 1  HAVING ST_DISTANCE(STARTPOINT(SHAPE),ENDPOINT(SHAPE)) > 0.0006";
$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
            $elem = array(
                   'id'=>$row['ID'],
                   'xc'=>$row['XC'],
                   'yc'=>$row['YC'],
                   'tipo'=>'Conexion larga'
                     );
           array_push($res,$elem);
        }
        $mensaje =   mysqli_num_rows($resultado) . " - Conexiones largas  ";
        array_push($mensaje_array,$mensaje);
    }
} 
$resultado = null;

//_CONTROL DE CONEXIONES ALEJADAS DE COLECTOR_____________________________________
$colectores_alejados = 0;

$sql = "SELECT A.id AS ID , A.SHAPE, B.SHAPE ";
$sql .= ", (X(STARTPOINT(A.SHAPE)) + X(ENDPOINT(A.SHAPE))) / 2  AS XC ";
$sql .= ", (Y(STARTPOINT(A.SHAPE)) + Y(ENDPOINT(A.SHAPE))) / 2  AS YC ";
$sql .= "FROM conexiones AS A INNER JOIN cat_tramos AS B  ";
$sql .= "ON A.colector = B.elemred  "; 
$sql .= "WHERE A.activo = 1  HAVING ST_DISTANCE(ST_ENDPOINT(A.SHAPE),B.SHAPE) > 0.00001023 AND ST_NUMPOINTS(B.SHAPE) < 3";
$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
            $elem = array(
                   'id'=>$row['ID'],
                   'xc'=>$row['XC'],
                   'yc'=>$row['YC'],
                   'tipo'=>'Colector alejado'
                     );
           array_push($res,$elem);
        }
        $colectores_alejados = $colectores_alejados + mysqli_num_rows($resultado);
    }
} 
$resultado = null;

$sql = "SELECT A.id AS ID , A.SHAPE, B.SHAPE, ASTEXT(B.SHAPE) AS GEOMCOLECTOR, ST_X(ST_ENDPOINT(A.SHAPE)) as LON, ST_Y(ST_ENDPOINT(A.SHAPE)) AS LAT ";
$sql .= ", (ST_X(ST_STARTPOINT(A.SHAPE)) + ST_X(ST_ENDPOINT(A.SHAPE))) / 2  AS XC ";
$sql .= ", (ST_Y(ST_STARTPOINT(A.SHAPE)) + ST_Y(ST_ENDPOINT(A.SHAPE))) / 2  AS YC ";
$sql .= "FROM conexiones AS A INNER JOIN cat_tramos AS B  ";
$sql .= "ON A.colector = B.elemred  "; 
$sql .= "WHERE A.activo = 1  HAVING ST_NUMPOINTS(B.SHAPE) > 2";
$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
      $linestring = $row['GEOMCOLECTOR'];
      $lat = $row['LAT'];
      $lon = $row['LON'];
      $res_pu_cercano = dl_geometria::dl_punto_cercano_linestring($lat,$lon,$linestring);
      if ($res_pu_cercano['distancia'] > 1)
            {
              $elem = array(
                   'id'=>$row['ID'],
                   'xc'=>$row['XC'],
                   'yc'=>$row['YC'],
                   'tipo'=>'Colector alejado'
                     );
           array_push($res,$elem);
           $colectores_alejados++;
           $dista = $res_pu_cercano['distancia'];
          //echo("problema con id:" . $row['ID'] .  " distancia= " . $dista . PHP_EOL);
            }
    }
    $mensaje =   $colectores_alejados . " - Colectores alejados   ";
    array_push($mensaje_array,$mensaje);
  } 
} 
$resultado = null;





//_CONTROL DE CONEXIONES padron 0

$sql = "SELECT id as ID ";
$sql .= ", (X(STARTPOINT(SHAPE)) + X(ENDPOINT(SHAPE))) / 2  AS XC ";
$sql .= ", (Y(STARTPOINT(SHAPE)) + Y(ENDPOINT(SHAPE))) / 2  AS YC ";
$sql .= "FROM conexiones ";
$sql .= "WHERE activo = 1 AND colector < 1";
$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
            $elem = array(
                   'id'=>$row['ID'],
                   'xc'=>$row['XC'],
                   'yc'=>$row['YC'],
                   'tipo'=>'Colector cero'
                     );
           array_push($res,$elem);
        }
        $mensaje =  mysqli_num_rows($resultado) . " - Colector 0 ";
        array_push($mensaje_array,$mensaje);
    }
} 

$resultado = null;



/*
$nombre_respaldo = "mantenimiento.csv";
$archivo_sql = fopen($nombre_respaldo,"w");
for($i=0;$i<count($res);$i++)
{
  fwrite($archivo_sql, $res[$i]['xc'] . ";" . $res[$i]['yc'] . ";" . $res[$i]['id'] . ";" . $res[$i]['tipo'] . PHP_EOL );
}
fclose($archivo_sql);
*/

$res_total = array();
array_push($res_total,$res);
$elem = array('mensaje'=>$mensaje_array);
array_push($res_total,$elem);

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