<?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->addNumericField('contrato');
	$Shapefile->addCharField('desccon', 254);
	$Shapefile->addNumericField('proyecto');
	$Shapefile->addCharField('descpro', 254);
	$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);

	$tramos = json_decode($datos);
	for($j = 0;$j<count($tramos);$j++)
	{
		$tramo = $tramos[$j];
					$elemred = $tramo->elemred;
					$geom = $tramo->geom;
					$tiposec = $tramo->tiposec;
					$tipotra = $tramo->tipotra;
					$id_psig_aa = $tramo->id_psig_aa;
					$id_psig_ab = $tramo->id_psig_ab;
					$dim1 = $tramo->dim1;
					$dim2 = $tramo->dim2;
					$dim3 = $tramo->dim3;
					$dim4 = $tramo->dim4;
					$contrato = $tramo->contrato;
					$proyecto = $tramo->proyecto;
					$material = $tramo->material;
					$zarriba = $tramo->zarriba;
					$zabajo = $tramo->zabajo;
					$z_tapa_aa = $tramo->z_tapa_aa;
					$z_tapa_ab = $tramo->z_tapa_ab;
					$prof_aa = $tramo->prof_aa;
					$prof_ab = $tramo->prof_ab;
					$longitud = $tramo->longitud;
					$estado = $tramo->estado;
					$accion = $tramo->accion;
					$ccz = $tramo->ccz;
					$cuenca = $tramo->cuenca;
					$alta_fuente = $tramo->alta_fuente;
					$alta_fecha = $tramo->alta_fecha;
					$calle = $tramo->calle;
					$comentarios = $tramo->comentarios;
					$etapa = $tramo->etapa;
					$contrato = $tramo->contrato;
					$proyecto = $tramo->proyecto;
					$descsec = '';
					$desctra = '';
					$desccon = '';
					$descpro = '';
								$sql = "SELECT (SELECT codigo FROM adm_clases WHERE id = cat_tramos.tiposec LIMIT 1) as descsec,";
								$sql .= " (SELECT codigo FROM adm_tipos WHERE id = cat_tramos.tipotra LIMIT 1) as desctra,";
								$sql .= " (SELECT nombre FROM adm_contratos WHERE id = cat_tramos.contrato LIMIT 1) as desccon,";
								$sql .= " (SELECT nombre FROM adm_proyectos WHERE id = cat_tramos.proyecto LIMIT 1) as descpro";
								$sql .= " FROM cat_tramos WHERE elemred = " . $elemred . " LIMIT 1";
								$resultado = mysqli_query($con,$sql);
								if ($resultado != FALSE){
									if (mysqli_num_rows($resultado) > 0){
										$row = mysqli_fetch_assoc($resultado);
												$descsec = $row["descsec"];
												$desctra = $row["desctra"];
												$desccon = $row["desccon"];
												$descpro = $row["descpro"];
										}	
								}	
					$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',$elemred);
					$linea->setData('tiposec',$tiposec);
					$linea->setData('descsec',$descsec);
					$linea->setData('tipotra', $tipotra);
					$linea->setData('desctra', $desctra);
					$linea->setData('id_psig_aa', $id_psig_aa);
					$linea->setData('id_psig_ab', $id_psig_ab);
					$linea->setData('dim1', $dim1);
					$linea->setData('dim2', $dim2);
					$linea->setData('dim3', $dim3);
					$linea->setData('dim4', $dim4);
					$linea->setData('contrato', $contrato);
					$linea->setData('desccon', $desccon);
					$linea->setData('proyecto', $proyecto);
					$linea->setData('descpro', $descpro);
					$linea->setData('zarriba',$zarriba);	
					$linea->setData('zabajo',$zabajo);
					$linea->setData('z_tapa_aa', $z_tapa_aa);
					$linea->setData('z_tapa_ab', $z_tapa_ab);
					$linea->setData('prof_aa', $prof_aa);	
					$linea->setData('prof_ab', $prof_ab);
					$linea->setData('longitud', $longitud);
					$linea->setData('alta_fue', $alta_fuente);
					$linea->setData('alta_fe', $alta_fecha);
					$linea->setData('calle', $calle);
					$linea->setData('material', $material);
					$linea->setData('etapa', $etapa);
					$linea->setData('estado', $estado);
					$linea->setData('accion', $accion);
					$linea->setData('ccz', $ccz);
					$linea->setData('cuenca', $cuenca);
					if ($comentarios == ''){$comentarios = 'Sin comentarios';}
						$linea->setData('coment', $comentarios);
						$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->addCharField('desccon', 254);
				$Shapefile->addNumericField('proyecto');
				$Shapefile->addCharField('descpro', 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);



				$psingulares = json_decode($datos);
				for($j = 0;$j<count($psingulares);$j++)
				{
					$psingular = $psingulares[$j];
								$elem_red = $psingular->elem_red;
								$lat = $psingular->lat;
								$lon = $psingular->lon;
								$tipo = $psingular->tipo;
								$z_tapa = $psingular->z_tapa;
								$inspeccion = $psingular->inspeccion;
								$profundidad = $psingular->profundidad;
								$salto = $psingular->salto;
								$z_ab = $psingular->z_ab;
								$alta_fuente = $psingular->alta_fuente;
								$alta_fecha = $psingular->alta_fecha;
								$calle = $psingular->calle;
								$contrato = $psingular->contrato;
								$proyecto = $psingular->proyecto;
								$etapa = $psingular->etapa;
								$estado = $psingular->estado;
								$accion = $psingular->accion;
								$ccz = $psingular->ccz;
								$cuenca = $psingular->cuenca;
								$comentarios = $psingular->comentarios;
								$desctipo = '';
								$desccon = '';
								$descpro = '';
											$sql = "SELECT (SELECT codigo FROM adm_tipos WHERE id = cat_psingulares.tipo LIMIT 1) as desctipo,";
											$sql .= " (SELECT nombre FROM adm_contratos WHERE id = cat_psingulares.contrato LIMIT 1) as desccon,";
											$sql .= " (SELECT nombre FROM adm_proyectos WHERE id = cat_psingulares.proyecto LIMIT 1) as descpro";
											$sql .= " FROM cat_psingulares WHERE elem_red = " . $elem_red . " LIMIT 1";
											$resultado = mysqli_query($con,$sql);
											if ($resultado != FALSE){
												if (mysqli_num_rows($resultado) > 0){
													$row = mysqli_fetch_assoc($resultado);
															$desctipo = $row["desctipo"];
															$desccon = $row["desccon"];
															$descpro = $row["descpro"];
													}	
											}											
						$punto = new Point($lon,$lat); 
						$punto->setData('elem_red',$elem_red);
						$punto->setData('tipo',$tipo);
						$punto->setData('desctipo',$desctipo);
						$punto->setData('z_tapa', $z_tapa);
						$punto->setData('inspec', $inspeccion);
						$punto->setData('profun', $profundidad);
						$punto->setData('salto', $salto);
						$punto->setData('z_ab', $z_ab);
						$punto->setData('alta_fue', $alta_fuente);
						$punto->setData('alta_fe', $alta_fecha);
						$punto->setData('calle', $calle);
						$punto->setData('contrato', $contrato);
						$punto->setData('desccon', $desccon);
						$punto->setData('proyecto', $proyecto);
						$punto->setData('descpro', $descpro);
						$punto->setData('etapa',$etapa);	
						$punto->setData('estado',$estado);
						$punto->setData('accion', $accion);
						$punto->setData('ccz', $ccz);
						$punto->setData('cuenca', $cuenca);	
						if ($comentarios == ''){$comentarios = 'Sin comentarios';}
						$punto->setData('coment', $comentarios);
					$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('desctipo', 254);
				$Shapefile->addNumericField('clase');
				$Shapefile->addCharField('descclas', 254);
				$Shapefile->addFloatField('dim',10,2);
				$Shapefile->addNumericField('cant_boc');
				$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->addCharField('desccon', 254);
				$Shapefile->addNumericField('proyecto');
				$Shapefile->addCharField('descpro', 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);



				$captaciones = json_decode($datos);
				for($j = 0;$j<count($captaciones);$j++)
				{
					$captacion = $captaciones[$j];
								$elem_red = $captacion->elem_red;
								$id_tramo = $captacion->id_tramo;
								$lat = $captacion->lat;
								$lon = $captacion->lon;
								$id_conex = $captacion->id_conex;
								$tipo = $captacion->tipo;
								$clase = $captacion->clase;
								$dim = $captacion->dim;
								$cant_bocas = $captacion->cant_bocas;
								$z_col = $captacion->z_col;
								$z_tapa = $captacion->z_tapa;
								$alta_fuente = $captacion->alta_fuente;
								$alta_fecha = $captacion->alta_fecha;
								$calle = $captacion->calle;
								$contrato = $captacion->contrato;
								$proyecto = $captacion->proyecto;
								$etapa = $captacion->etapa;
								$estado = $captacion->estado;
								$accion = $captacion->accion;
								$cuenca = $captacion->cuenca;
								$ccz = $captacion->ccz;
								$comentarios = $captacion->comentarios;
								$desctipo = '';
								$desccon = '';
								$descpro = '';
								$descclase = '';
											$sql = "SELECT (SELECT codigo FROM adm_tipos WHERE id = cat_captaciones.tipo LIMIT 1) as desctipo,";
											$sql .= " (SELECT codigo FROM adm_clases WHERE id = cat_captaciones.clase LIMIT 1) as descclase,";
											$sql .= " (SELECT nombre FROM adm_contratos WHERE id = cat_captaciones.contrato LIMIT 1) as desccon,";
											$sql .= " (SELECT nombre FROM adm_proyectos WHERE id = cat_captaciones.proyecto LIMIT 1) as descpro";
											$sql .= " FROM cat_captaciones WHERE elem_red = " . $elem_red . " LIMIT 1";
											$resultado = mysqli_query($con,$sql);
											if ($resultado != FALSE){
												if (mysqli_num_rows($resultado) > 0){
													$row = mysqli_fetch_assoc($resultado);
															$desctipo = $row["desctipo"];
															$desccon = $row["desccon"];
															$descpro = $row["descpro"];
															$descclase = $row["descclase"];
													}	
											}											
						$punto = new Point($lon,$lat); 
						$punto->setData('elem_red',$elem_red);
						$punto->setData('id_tramo',$id_tramo);
						$punto->setData('id_conex',$id_conex);
						$punto->setData('tipo',$tipo);
						$punto->setData('desctipo',$desctipo);
						$punto->setData('clase', $clase);
						$punto->setData('descclas',$descclase);
						$punto->setData('dim', $dim);
						$punto->setData('cant_boc', $cant_bocas);
						$punto->setData('z_col', $z_col);
						$punto->setData('z_tapa', $z_tapa);
						$punto->setData('alta_fue', $alta_fuente);
						$punto->setData('alta_fe', $alta_fecha);
						$punto->setData('calle', $calle);
						$punto->setData('contrato', $contrato);
						$punto->setData('desccon', $desccon);
						$punto->setData('proyecto', $proyecto);
						$punto->setData('descpro', $descpro);
						$punto->setData('etapa',$etapa);	
						$punto->setData('estado',$estado);
						$punto->setData('accion', $accion);
						$punto->setData('ccz', $ccz);
						$punto->setData('cuenca', $cuenca);	
						if ($comentarios == ''){$comentarios = 'Sin comentarios';}
						$punto->setData('coment', $comentarios);
					$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;

    ?>

