<?php
header('Content-Type: application/json;charset= utf-8');
ini_set('memory_limit','5024M');
set_time_limit(0);
require("dbinfo.php");
require("dl.php");
$con = mysqli_connect($sqlname, $username, $password, $db);
if(!$con){exit;}
require_once('referencias/Shapefile/ShapefileAutoloader.php');
Shapefile\ShapefileAutoloader::register();
use Shapefile\Shapefile;
use Shapefile\ShapefileException;
use Shapefile\ShapefileWriter;
use Shapefile\Geometry\Point;
use Shapefile\Geometry\Linestring;



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


$url_completo = 'SIN RESULTADOS';


if ($tipo == 'Colectores')
{


	$fecha_nombre_archivo = dl_fecha::dl_ahora_texto_nombre_archivo();
	$nombre_archivo = "referencias/Shapefile/tramos" . $fecha_nombre_archivo;
	$nombre_achivo_con_extension = $nombre_archivo . ".shp";
	
	$nombre_prj = $nombre_archivo . ".prj";
	$archivo_prj = fopen($nombre_prj,"w"); 
	$renglon = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]';
	fwrite($archivo_prj,$renglon);
	fclose($archivo_prj);



	$Shapefile = new ShapefileWriter($nombre_archivo);
	$Shapefile->setShapeType(Shapefile::SHAPE_TYPE_POLYLINE);
	
	$Shapefile->addNumericField('elemred');
	$Shapefile->addNumericField('tiposec');
	$Shapefile->addCharField('descsec', 254);
	$Shapefile->addNumericField('tipotra');
	$Shapefile->addCharField('desctra', 254);
	$Shapefile->addNumericField('id_psig_aa');
	$Shapefile->addNumericField('id_psig_ab');
	$Shapefile->addFloatField('dim1',20,2);
	$Shapefile->addFloatField('dim2',20,2);
	$Shapefile->addFloatField('dim3',20,2);
	$Shapefile->addFloatField('dim4',20,2);
	$Shapefile->addFloatField('pendiente',10,4);
	$Shapefile->addFloatField('salto',6,3);
	$Shapefile->addNumericField('contrato');
	$Shapefile->addNumericField('proyecto');
	$Shapefile->addFloatField('zarriba',20,2);
	$Shapefile->addFloatField('zabajo',20,2);
	$Shapefile->addFloatField('z_tapa_aa',20,2);
	$Shapefile->addFloatField('z_tapa_ab',20,2);
	$Shapefile->addFloatField('prof_aa',20,2);
	$Shapefile->addFloatField('prof_ab',20,2);
	$Shapefile->addFloatField('longitud',20,2);
	$Shapefile->addCharField('alta_fue', 100);
	$Shapefile->addCharField('alta_fe', 50);
	$Shapefile->addCharField('calle', 254);
	$Shapefile->addCharField('material', 254);
	$Shapefile->addCharField('etapa', 254);
	$Shapefile->addCharField('estado', 254);
	$Shapefile->addCharField('accion', 254);
	$Shapefile->addCharField('ccz', 254);
	$Shapefile->addCharField('cuenca', 254);
	$Shapefile->addCharField('coment', 254);
	$Shapefile->addCharField('propiet', 254);
	$Shapefile->addNumericField('arevisar', 254);
	$Shapefile->addNumericField('anocon', 254);
	$Shapefile->addCharField('plano', 254);
	$Shapefile->addCharField('habilit', 254);
	$Shapefile->addCharField('public', 254);
	$Shapefile->addCharField('fueraser', 254);

	$datos = '';
	$lista_valores = '';
if($_REQUEST['datos']){$datos = $_REQUEST['datos'];}
$valores = json_decode($datos);
for($j = 0;$j<count($valores);$j++)
{
	$lista_valores .= $valores[$j] . ",";
}
$lista_valores = substr($lista_valores,0,strlen($lista_valores) - 1);

$sql = "SELECT ASTEXT(SHAPE) as geom,tiposec,tipotra,";
$sql .= "(SELECT codigo FROM adm_tipos WHERE id = A.tipotra) AS desctra , "; 
$sql .= "(SELECT codigo FROM adm_clases WHERE id = A.tiposec) AS descsec , "; 
$sql .= "elemred,id_psig_aa,id_psig_ab,dim1,dim2,dim3,dim4,contrato,proyecto,material,zarriba,zabajo,z_tapa_aa,z_tapa_ab,prof_aa,prof_ab";
$sql .= ",longitud,pendiente,salto,estado,accion,ccz,cuenca,alta_fuente,alta_fecha,calle,comentarios,etapa,plano,provisorio,";
$sql .= "dato1,dato2,dato3,dato4,datodeobra,habilitado,publicado,fueraservicio FROM cat_tramos A WHERE activo = 1 AND elemred IN (";
$sql .= $lista_valores . ")"; 



$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
            $geom = $row['geom'];
			$linea = new Linestring(); 
			$geom = substr($geom, 11);
			$geom = substr($geom, 0, -1);
			$puntos = explode(",",$geom);
			foreach ($puntos as $punto) 
			{
				$coords = explode(" ",$punto);
				$Point = new Point($coords[0], $coords[1]);
				$linea->addPoint($Point);
			}
			$linea->setData('elemred',$row['elemred']);
			$linea->setData('tiposec',$row['tiposec']);
			$linea->setData('descsec',$row['descsec']);
			$linea->setData('tipotra',$row['tipotra']);
			$linea->setData('desctra',$row['desctra']);
			$linea->setData('id_psig_aa',$row['id_psig_aa']);
			$linea->setData('id_psig_ab',$row['id_psig_ab']);
			$linea->setData('dim1',$row['dim1']);
			$linea->setData('dim2',$row['dim2']);
			$linea->setData('dim3',$row['dim3']);
			$linea->setData('dim4',$row['dim4']);
			$linea->setData('pendiente',$row['pendiente']);
			$linea->setData('salto',$row['salto']);
			$linea->setData('contrato',$row['contrato']);
			$linea->setData('proyecto',$row['proyecto']);
			$linea->setData('zarriba',$row['zarriba']);
			$linea->setData('zabajo',$row['zabajo']);
			$linea->setData('z_tapa_aa',$row['z_tapa_aa']);
			$linea->setData('z_tapa_ab',$row['z_tapa_ab']);
			$linea->setData('prof_aa',$row['prof_aa']);
			$linea->setData('prof_ab',$row['prof_ab']);
			$linea->setData('longitud',$row['longitud']);
			$linea->setData('alta_fue',$row['alta_fuente']);
			$linea->setData('alta_fe',$row['alta_fecha']);
			$linea->setData('calle',$row['calle']);
			$linea->setData('material',$row['material']);
			$linea->setData('etapa',$row['etapa']);
			$linea->setData('estado',$row['estado']);
			$linea->setData('accion',$row['accion']);
			$linea->setData('ccz',$row['ccz']);
			$linea->setData('cuenca',$row['cuenca']);
			$linea->setData('coment',$row['comentarios']);
			$linea->setData('arevisar',$row['dato3']);
			$linea->setData('propiet',$row['dato1']);
			$linea->setData('anocon',$row['dato4']);
			$linea->setData('plano',$row['plano']);
			$linea->setData('habilit',$row['habilitado']);
			$linea->setData('public',$row['publicado']);
			$linea->setData('fueraser',$row['fueraservicio']);
    	$Shapefile->writeRecord($linea);
		}
	}
}
			$tmp_file = '';
				$Shapefile = null;
				$files = glob($nombre_archivo . "*");
				if (count($files) > 0)
				{
				$zip = new ZipArchive();
				$ruta_completa = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/referencias/Shapefile';
				$tmp_file = $ruta_completa . '/tramos' . $fecha_nombre_archivo . '.zip';
				$zip->open($tmp_file, ZipArchive::CREATE);
				foreach($files as $file){
					$file2 = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/' . $file;
					$ruta_archivo = pathinfo($file); 
					$nombre_archivo2 = $ruta_archivo["basename"]; 
					$zip->addFile($file2,$nombre_archivo2);
				}
				$zip->close();
			
				unlink($nombre_archivo . ".dbf");
				unlink($nombre_archivo . ".shp");
				unlink($nombre_archivo . ".shx");
				unlink($nombre_archivo . ".prj");
				}
			
				$nombre_archivo = "referencias/Shapefile/tramos*.zip";
				$files = glob($nombre_archivo);
				foreach($files as $file){
					$ruta_archivo = pathinfo($file); 
					$nombre_archivo2 = $ruta_archivo["dirname"] . "/". $ruta_archivo["basename"];
					$fecha_fichero= dl_fecha::dl_fecha_texto_a_date(date('Y-m-d H:i:s',filemtime($nombre_archivo2)));
					$fecha_ahora = dl_fecha::dl_ahora_date();
					$interval = $fecha_ahora->diff($fecha_fichero);
					$horas =  ($interval->format('%y') * 635) + ($interval->format('%m') * 30) + ($interval->format('%d') * 24) + $interval->format('%h');
					if ($horas > 4){
						unlink($nombre_archivo2);
					}
				}
			
			
			$url_completo = $_SERVER['SERVER_NAME'] . '/COLECTORES/php/referencias/Shapefile/tramos' . $fecha_nombre_archivo . '.zip';;	

}


if ($tipo == 'PSingulares')
{


				$fecha_nombre_archivo = dl_fecha::dl_ahora_texto_nombre_archivo();
				$nombre_archivo = "referencias/Shapefile/psingulares" . $fecha_nombre_archivo;
				$nombre_achivo_con_extension = $nombre_archivo . ".shp";

				$nombre_prj = $nombre_archivo . ".prj";
				$archivo_prj = fopen($nombre_prj,"w"); 
				$renglon = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]';
				fwrite($archivo_prj,$renglon);
				fclose($archivo_prj);


				$Shapefile = new ShapefileWriter($nombre_archivo);
				$Shapefile->setShapeType(Shapefile::SHAPE_TYPE_POINT);

				$Shapefile->addNumericField('elem_red');
				$Shapefile->addNumericField('tipo');
				$Shapefile->addCharField('desctipo', 254);
				$Shapefile->addFloatField('z_tapa',10,2);
				$Shapefile->addNumericField('inspec');
				$Shapefile->addFloatField('profun',10,2);
				$Shapefile->addFloatField('salto',10,2);
				$Shapefile->addFloatField('z_ab',10,2);
				$Shapefile->addCharField('alta_fue', 100);
				$Shapefile->addCharField('alta_fe', 50);
				$Shapefile->addCharField('calle', 254);
				$Shapefile->addNumericField('contrato');
				$Shapefile->addNumericField('proyecto');
				$Shapefile->addCharField('etapa', 254);
				$Shapefile->addCharField('estado', 254);
				$Shapefile->addCharField('accion', 254);
				$Shapefile->addCharField('ccz', 254);
				$Shapefile->addCharField('cuenca', 254);
				$Shapefile->addCharField('coment', 254);
				$Shapefile->addNumericField('arevisar', 254);
				$Shapefile->addNumericField('anocon', 254);
				$Shapefile->addCharField('plano', 254);
				$Shapefile->addCharField('habilit', 254);
				$Shapefile->addCharField('public', 254);
				$Shapefile->addCharField('fueraser', 254);




				$datos = '';
				$lista_valores = '';
			if($_REQUEST['datos']){$datos = $_REQUEST['datos'];}
			$valores = json_decode($datos);
			for($j = 0;$j<count($valores);$j++)
			{
				$lista_valores .= $valores[$j] . ",";
			}
			$lista_valores = substr($lista_valores,0,strlen($lista_valores) - 1);
			
			$sql = "SELECT X(SHAPE) as lng, Y(SHAPE) as lat,tipo,";
			$sql .= "(SELECT codigo FROM adm_tipos WHERE id = A.tipo) AS desctipo , ";  
			$sql .= "elem_red,z_tapa, inspeccion , profundidad, salto, z_ab, alta_fuente, alta_fecha, calle, contrato, proyecto";
			$sql .= ",etapa, estado,accion,ccz,cuenca,comentarios,dato3,dato4,plano,habilitado,publicado,fueraservicio";
			$sql .= " FROM cat_psingulares A WHERE activo = 1 AND elem_red IN (";
			$sql .= $lista_valores . ")"; 
			
				
			$resultado = mysqli_query($con,$sql);
			if ($resultado != FALSE){
				if (mysqli_num_rows($resultado) > 0){
					while($row = mysqli_fetch_assoc($resultado))
					{
									
						$punto = new Point($row['lng'],$row['lat']); 
						$punto->setData('elem_red',$row['elem_red']);
						$punto->setData('tipo',$row['tipo']);
						$punto->setData('desctipo',$row['desctipo']);
						$punto->setData('z_tapa', $row['z_tapa']);
						$punto->setData('inspec', $row['inspeccion']);
						$punto->setData('profun', $row['profundidad']);
						$punto->setData('salto', $row['salto']);
						$punto->setData('z_ab', $row['z_ab']);
						$punto->setData('alta_fue', $row['alta_fuente']);
						$punto->setData('alta_fe', $row['alta_fecha']);
						$punto->setData('calle', $row['calle']);
						$punto->setData('contrato', $row['contrato']);
						$punto->setData('proyecto', $row['proyecto']);
						$punto->setData('etapa',$row['etapa']);	
						$punto->setData('estado',$row['estado']);
						$punto->setData('accion', $row['accion']);
						$punto->setData('ccz', $row['ccz']);
						$punto->setData('cuenca', $row['cuenca']);	
						$punto->setData('coment', $row['comentarios']);
						$punto->setData('arevisar', $row['dato3']);
						$punto->setData('anocon', $row['dato4']);
						$punto->setData('plano', $row['plano']);
						$punto->setData('habilit', $row['habilitado']);
						$punto->setData('public', $row['publicado']);
						$punto->setData('fueraser', $row['fueraservicio']);


						
					$Shapefile->writeRecord($punto);
				}
			}
		}


				$tmp_file = '';
					$Shapefile = null;
					$files = glob($nombre_archivo . "*");
					if (count($files) > 0)
					{
					$zip = new ZipArchive();
					$ruta_completa = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/referencias/Shapefile';
					$tmp_file = $ruta_completa . '/psingulares' . $fecha_nombre_archivo . '.zip';
					$zip->open($tmp_file, ZipArchive::CREATE);
					foreach($files as $file){
						$file2 = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/' . $file;
						$ruta_archivo = pathinfo($file); 
						$nombre_archivo2 = $ruta_archivo["basename"]; 
						$zip->addFile($file2,$nombre_archivo2);
					}
					$zip->close();

					unlink($nombre_archivo . ".dbf");
					unlink($nombre_archivo . ".shp");
					unlink($nombre_archivo . ".shx");
					unlink($nombre_archivo . ".prj");
					}

					$nombre_archivo = "referencias/Shapefile/psingulares*.zip";
					$files = glob($nombre_archivo);
					foreach($files as $file){
						$ruta_archivo = pathinfo($file); 
						$nombre_archivo2 = $ruta_archivo["dirname"] . "/". $ruta_archivo["basename"];
						$fecha_fichero= dl_fecha::dl_fecha_texto_a_date(date('Y-m-d H:i:s',filemtime($nombre_archivo2)));
						$fecha_ahora = dl_fecha::dl_ahora_date();
						$interval = $fecha_ahora->diff($fecha_fichero);
						$horas =  ($interval->format('%y') * 635) + ($interval->format('%m') * 30) + ($interval->format('%d') * 24) + $interval->format('%h');
						if ($horas > 4){
							unlink($nombre_archivo2);
						}
					}


				$url_completo = $_SERVER['SERVER_NAME'] . '/COLECTORES/php/referencias/Shapefile/psingulares' . $fecha_nombre_archivo . '.zip';

}







if ($tipo == 'Captaciones')
{


				$fecha_nombre_archivo = dl_fecha::dl_ahora_texto_nombre_archivo();
				$nombre_archivo = "referencias/Shapefile/captaciones" . $fecha_nombre_archivo;
				$nombre_achivo_con_extension = $nombre_archivo . ".shp";

				$nombre_prj = $nombre_archivo . ".prj";
				$archivo_prj = fopen($nombre_prj,"w"); 
				$renglon = 'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]';
				fwrite($archivo_prj,$renglon);
				fclose($archivo_prj);


				$Shapefile = new ShapefileWriter($nombre_archivo);
				$Shapefile->setShapeType(Shapefile::SHAPE_TYPE_POINT);

				$Shapefile->addNumericField('elem_red');
				$Shapefile->addNumericField('id_tramo');
				$Shapefile->addNumericField('id_conex');
				$Shapefile->addNumericField('tipo');
				$Shapefile->addCharField('destipo', 254);
				$Shapefile->addNumericField('clase');
				$Shapefile->addCharField('desclas', 254);
				$Shapefile->addFloatField('dim',10,2);
				$Shapefile->addCharField('cant_boc',20);
				$Shapefile->addFloatField('z_col',10,2);
				$Shapefile->addFloatField('z_tapa',10,2);
				$Shapefile->addCharField('alta_fue', 100);
				$Shapefile->addCharField('alta_fe', 50);
				$Shapefile->addCharField('calle', 254);
				$Shapefile->addNumericField('contrato');
				$Shapefile->addNumericField('proyecto');
				$Shapefile->addCharField('etapa', 254);
				$Shapefile->addCharField('estado', 254);
				$Shapefile->addCharField('accion', 254);
				$Shapefile->addCharField('ccz', 254);
				$Shapefile->addCharField('cuenca', 254);
				$Shapefile->addCharField('coment', 254);				
				$Shapefile->addNumericField('arevisar', 254);
				$Shapefile->addNumericField('anocon', 254);
				$Shapefile->addCharField('plano', 254);
				$Shapefile->addCharField('habilit', 254);
				$Shapefile->addCharField('public', 254);
				$Shapefile->addCharField('fueraser', 254);



				$datos = '';
				$lista_valores = '';
			if($_REQUEST['datos']){$datos = $_REQUEST['datos'];}
			$valores = json_decode($datos);
			for($j = 0;$j<count($valores);$j++)
			{
				$lista_valores .= $valores[$j] . ",";
			}
			$lista_valores = substr($lista_valores,0,strlen($lista_valores) - 1);
			
			$sql = "SELECT X(SHAPE) as lng, Y(SHAPE) as lat,tipo,clase,";
			$sql .= "(SELECT codigo FROM adm_tipos WHERE id = A.tipo) AS destipo , ";  
			$sql .= "(SELECT codigo FROM adm_clases WHERE id = A.clase) AS desclas , ";  
			$sql .= "elem_red,id_tramo,id_conex_capt,dim,cant_bocas,z_col,z_tapa,alta_fuente, alta_fecha, calle, contrato, proyecto";
			$sql .= ",etapa, estado,accion,ccz,cuenca,comentarios,dato3,dato4,plano,habilitado,publicado,fueraservicio";
			$sql .= " FROM cat_captaciones A WHERE activo = 1 AND elem_red IN (";
			$sql .= $lista_valores . ")"; 
			
				
			$resultado = mysqli_query($con,$sql);
			if ($resultado != FALSE){
				if (mysqli_num_rows($resultado) > 0){
					while($row = mysqli_fetch_assoc($resultado))
					{
									
						$punto = new Point($row['lng'],$row['lat']); 
						$punto->setData('elem_red',$row['elem_red']);
						$punto->setData('id_tramo',$row['id_tramo']);
						$punto->setData('id_conex',$row['id_conex_capt']);
						$punto->setData('tipo', $row['tipo']);
						$punto->setData('destipo', $row['destipo']);
						$punto->setData('clase', $row['clase']);
						$punto->setData('desclas', $row['desclas']);
						$punto->setData('dim', $row['dim']);
						$punto->setData('cant_boc', $row['cant_bocas']);
						$punto->setData('z_col', $row['z_col']);
						$punto->setData('z_tapa', $row['z_tapa']);
						$punto->setData('alta_fue', $row['alta_fuente']);
						$punto->setData('alta_fe', $row['alta_fecha']);
						$punto->setData('calle', $row['calle']);
				    	$punto->setData('contrato', $row['contrato']);
						$punto->setData('proyecto', $row['proyecto']);
						$punto->setData('etapa',$row['etapa']);	
						$punto->setData('estado',$row['estado']);
						$punto->setData('accion', $row['accion']);
						$punto->setData('ccz', $row['ccz']);
						$punto->setData('cuenca', $row['cuenca']);	
						$punto->setData('coment', $row['comentarios']);
						$punto->setData('arevisar', $row['dato3']);
						$punto->setData('anocon', $row['dato4']);
						$punto->setData('plano', $row['plano']);
						$punto->setData('habilit', $row['habilitado']);
						$punto->setData('public', $row['publicado']);
						$punto->setData('fueraser', $row['fueraservicio']);


						
					$Shapefile->writeRecord($punto);
				}
			}
		}



				$tmp_file = '';
					$Shapefile = null;
					$files = glob($nombre_archivo . "*");
					if (count($files) > 0)
					{
					$zip = new ZipArchive();
					$ruta_completa = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/referencias/Shapefile';
					$tmp_file = $ruta_completa . '/captaciones' . $fecha_nombre_archivo . '.zip';
					$zip->open($tmp_file, ZipArchive::CREATE);
					foreach($files as $file){
						$file2 = $_SERVER['DOCUMENT_ROOT'] . '/COLECTORES/php/' . $file;
						$ruta_archivo = pathinfo($file); 
						$nombre_archivo2 = $ruta_archivo["basename"]; 
						$zip->addFile($file2,$nombre_archivo2);
					}
					$zip->close();

					unlink($nombre_archivo . ".dbf");
					unlink($nombre_archivo . ".shp");
					unlink($nombre_archivo . ".shx");
					unlink($nombre_archivo . ".prj");
					}

					$nombre_archivo = "referencias/Shapefile/captaciones*.zip";
					$files = glob($nombre_archivo);
					foreach($files as $file){
						$ruta_archivo = pathinfo($file); 
						$nombre_archivo2 = $ruta_archivo["dirname"] . "/". $ruta_archivo["basename"];
						$fecha_fichero= dl_fecha::dl_fecha_texto_a_date(date('Y-m-d H:i:s',filemtime($nombre_archivo2)));
						$fecha_ahora = dl_fecha::dl_ahora_date();
						$interval = $fecha_ahora->diff($fecha_fichero);
						$horas =  ($interval->format('%y') * 635) + ($interval->format('%m') * 30) + ($interval->format('%d') * 24) + $interval->format('%h');
						if ($horas > 4){
							unlink($nombre_archivo2);
						}
					}


				$url_completo = $_SERVER['SERVER_NAME'] . '/COLECTORES/php/referencias/Shapefile/captaciones' . $fecha_nombre_archivo . '.zip';

}






echo $url_completo;

    ?>

