<?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;}



$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 = 'PROJCS["WGS_1984_UTM_Zone_21S",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0.0],PARAMETER["central_meridian",-57.0],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000.0],PARAMETER["false_northing",10000000.0],UNIT["Meter",1.0]]';
fwrite($archivo_prj,$renglon);
fclose($archivo_prj);

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;
$Shapefile = new ShapefileWriter($nombre_archivo);
$Shapefile->setShapeType(Shapefile::SHAPE_TYPE_POINT);

$Shapefile->addNumericField('id');
$Shapefile->addNumericField('elem_red');
//$Shapefile->addNumericField('id_tramo');
//$Shapefile->addNumericField('id_conex');
//$Shapefile->addNumericField('codtipo');
$Shapefile->addCharField('tipo', 15);
$Shapefile->addNumericField('tipoboca');
//$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);
$Shapefile->addCharField('datodeobra', 60);

$sql = "SELECT X(SHAPE) AS lon, Y(SHAPE) AS lat, elem_red, id_tramo, id_conex_capt,";
$sql .= " tipo, (SELECT codigo FROM adm_tipos WHERE id = cat_captaciones.tipo LIMIT 1) as desctipo,";
$sql .= " clase, (SELECT codigo FROM adm_clases WHERE id = cat_captaciones.clase LIMIT 1) as descclase,";
$sql .= " dim, cant_bocas, alta_fuente, alta_fecha, z_col, z_tapa, calle, plano,";
$sql .= " contrato, (SELECT nombre FROM adm_contratos WHERE id = cat_captaciones.contrato LIMIT 1) as desccon,";
$sql .= " proyecto, (SELECT nombre FROM adm_proyectos WHERE id = cat_captaciones.proyecto LIMIT 1) as descpro,";
$sql .= " etapa, estado, accion, ccz, cuenca, comentarios ";
$sql .= " FROM cat_captaciones WHERE activo = 1";


$resultado = mysqli_query($con,$sql);
if ($resultado != FALSE){
	if (mysqli_num_rows($resultado) > 0){
		while($row = mysqli_fetch_assoc($resultado))
		{
				$lon = $row["lon"];
				$lat = $row["lat"];
                $elem_red = $row["elem_red"];
                $id_tramo = $row["id_tramo"];
				$id_conex_capt = $row["id_conex_capt"];				
                $tipo = $row["tipo"];
				$desctipo = $row["desctipo"];
				$clase = $row["clase"];
				$descclase = $row["descclase"];
				$dim = $row["dim"];
				$cant_bocas = $row["cant_bocas"];
				$alta_fuente = $row["alta_fuente"];
				$alta_fecha = $row["alta_fecha"];
				$z_col = $row["z_col"];
				$z_tapa = $row["z_tapa"];
				$calle = $row["calle"];
				$contrato = $row["contrato"];
				$desccon = $row["desccon"];
				$proyecto = $row["proyecto"];
				$descpro = $row["descpro"];
				$etapa = $row["etapa"];
				$estado = $row["estado"];
				$accion = $row["accion"];
				$ccz = $row["ccz"];
				$cuenca = $row["cuenca"];
				$comentarios = $row["comentarios"];
				$plano = $row["plano"];
	$utm = dl_coordenadas::dl_ll_a_sirgas($lat,$lon);			
				
	$punto = new Point($utm['x'],$utm['y']); 

//	    $linea->setData('OGR_FID',$OGR_FID);
		$punto->setData('id',$elem_red);
	    $punto->setData('elem_red',$elem_red);
		//$punto->setData('id_tramo',$id_tramo);
		//$punto->setData('id_conex',$id_conex_capt);
		//$punto->setData('codtipo',$tipo);
		$punto->setData('tipo',$desctipo);
		$punto->setData('tipoboca',$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);
		$punto->setData('datodeobra', $plano);
	$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"]; 
		   $extension = strtolower(substr($nombre_archivo2, -3));
		   if ($extension == 'dbf')
		   {
							// Modificar los nombres de campo en el archivo DBF
							$rutaadbf = $ruta_completa . "/" . $nombre_archivo2;
							$dbfFile = fopen($rutaadbf, 'r+');
							// Leer la cabecera del archivo DBF
							$header = fread($dbfFile, 32);
							// Calcular el número de campos
							$numFields = (ord($header[10]) + (ord($header[11]) << 8) - 1) / 32;
							// Leer y modificar cada entrada de campo
							for ($i = 0; $i < $numFields; $i++) {
								fseek($dbfFile, 32 + $i * 32);
								$fieldName = fread($dbfFile, 11);
								// Convertir el nombre del campo a minúsculas y rellenar con espacios en blanco si es necesario
								$fieldName = str_pad(strtolower($fieldName), 11);
								fseek($dbfFile, 32 + $i * 32);
								fwrite($dbfFile, $fieldName);
							}
							// Cerrar el archivo DBF
							fclose($dbfFile);
		   }
		   $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;

    ?>

