<?php 

//------------------------------------------
//escrito por Jaime Rojas Landivar
//------------------------------------------

//dl('php_mapscript.so');
//$map_path="/var/www/html/i3geo/aplicmap/";
//$map = ms_newMapObj($map_path."mopc_gl_a3_tramo_afectacion2.map");

$_GET = array_merge($_GET,$_POST);
// Obtenemos el/los parametro(s) con el medoto get
$gid = $_GET["gid"];
//echo $gid;

// Establecer conexion a la base de datos
$link_bd=pg_connect("host=37.60.237.220 port=5432 dbname=jmap user=postgres password=sigapas2025s connect_timeout=5 options='--client_encoding=utf8'");

//Obtenemos el id para generar los archivos temproales necesarios
$sequence = 'admin.reportes_seq';

//$sql = "SELECT NEXTVAL('" . $sequence . "') AS nextval";
//$stmt = $link_bd->query($sql);
//$row = $stmt->fetch(PDO::FETCH_ASSOC);
//$seq = $row['nextval'];

$sql = "SELECT NEXTVAL('" . $sequence . "') AS nextval";
$result = pg_query($link_bd, $sql);
$seq = 0;

if ($result) {
  $row = pg_fetch_assoc($result);
  $seq = $row['nextval'];
} else {
  die("Error en la consulta: " . pg_last_error($link_bd));
}

//copiamos el mapfile base para generar nuestro mapfile temporal especifico
//Preparar copiary("SELECT NEXTVAL('" . $sequence . "');")->row()->nextval;

$nombre='slo_barrios';
$archivo1=$nombre.'.map';
$archivo2=$nombre.$seq.'.map';
$map_file_origen = '/var/www/html/jmapReport/map_files/'.$archivo1;
$map_file = '/var/www/html/jmapReport/tmp/'.$archivo2;

//Copiar original para crear el temporal
exec('cp ' . escapeshellarg($map_file_origen) . ' ' . escapeshellarg($map_file));

//Obtenemos la imagen
/*
$map = ms_newMapObj($map_file);
$imgo = $map->draw();
if($imgo->imagepath == "")
{echo "Erro IMAGEPATH vazio";exit;}
$nombre_imagen = $imgo->imagepath."imagen_".$nombre.".png";
$imgo->saveImage($nombre_imagen);
*/

// carga map file
$map = ms_newMapObj($map_file);
$w = $map->width;
$h = $map->height;

$layersname = $map->getAllLayerNames();
foreach ($layersname as $nombrelayer) {
  $layer = $map->getLayerByName($nombrelayer);
  if ($layer->data != "") {
        //$Tema = $layer->getmetadata("wms_name");
        //echo $nombrelayer;
        switch ($nombrelayer) {
        case "barloc":
            //echo $nombrelayer;
            $existedato = "NO";
            $sq = "select st_setsrid(geom,32721) as geom,gid,id,dpto,distrito,dpto_desc,dist_desc,area,bar_loc,barlo_desc,cant_viv,";       
            $sq = $sq."codigo,objectid from ide.barloc ";
            $sq = $sq."where gid = ".$gid;
            //echo $sq;
            $result = pg_query ($link_bd,$sq);
            ////echo "<p> " . 'despues de pg_query' . ":</p>";
            while ($reg = pg_fetch_array($result))
            {
                ////echo "<p> " . 'Ingreso SI' . ":</p>";
                $existedato = "SI";
            }
            pg_free_result ($result);
            pg_close ();
            if ($existedato == "NO")
            {
                ////echo "<p> " . 'Existe NO' . ":</p>";
                $layer->set('opacity', 20);
                //$layer->set('opacity', 20);
            }
            else
            {
                $data="geom from (".$sq." /*FW*//*FW*/) as foo using unique gid using srid=32721";
                $layer->set("data",$data);     
                $layer->set('opacity', 100);
                #echo "<p> " . $data . "</p>";
            }
            break;
        case "cuentas":
            // Aquí tu lógica específica para cuentas
            break;
            // Agrega más casos según temas que uses
        default:
            // Opcional: lógica por defecto
            break;
        }
    }
}

$map->save($map_file);
unset($map);
$map = ms_newMapObj($map_file);

/*
$layer = $map->getlayerbyname("barloc");
$layer->querybyattributes("barloc","gid"."=".$gid,1);
$layer->set('status', MS_ON);
$numresults = $layer->getNumResults();
$ext1='                     ';
$ext2='                     ';
$ext3='                     ';
$ext4='                     ';
if ($numresults < 1) {
 $error = true;
} else {
 $result = $layer->getResult(0);
 $shapeObj = $layer->getShape($result);
 $ext1 = $shapeObj->bounds->minx;
 $ext2 = $shapeObj->bounds->miny;
 $ext3 = $shapeObj->bounds->maxx;
 $ext4 = $shapeObj->bounds->maxy;
}
*/
//$extatual = $map->extent;
//$extatual->setExtent( $ext1, $ext2, $ext3, $ext4 );
//$o = $ref_map->outputformat;
//$map->setExtent( $ext1, $ext2, $ext3, $ext4 );
//$o->set("imagemode",MS_IMAGEMODE_RGB);
//$o->set("transparent","false");
//$layer->queryByRect($map->extent);


//Obtenemos la imagen
//$map = ms_newMapObj($map_file);
$imgo = $map->draw();
if($imgo->imagepath == "")
{echo "Erro IMAGEPATH vazio";exit;}
$nombre_imagen = $imgo->imagepath."imagen_".$nombre.".png";
$imgo->saveImage($nombre_imagen);
// carga map file
//$map = ms_newMapObj($map_file);
$w = $map->width;
$h = $map->height;

//-----------CONFIGURACION Y CREACION DEL ARCHIVO PDF
require(dirname(__FILE__).'/pacotes/fpdf/fpdf.php');
//$pdf = new FPDF("L","mm","A3");
$pdf = new FPDF("L","mm","A4");
$pdf->SetAutoPageBreak(false);
$pdf->SetDisplayMode( 70 , "single");
$pdf->SetMargins(0, 0, 0);
$pdf->AddPage("L");
$pdf->SetLineWidth(0.1);
$mapasize = getimagesize($nombre_imagen);
$wMapa = $mapasize[0];
$hMapa = $mapasize[1];
$nW = $wMapa/10;
$nH = $hMapa/10;
$anchomap = 420;
$altomap = 297;
//Ancho y alto para el recuadro de los datos
$xdatos = 10; //valor para x del recuadro de datos
$ydatos = $altomap;
//----------Imprimir la IMAGEN PRINCIPAL DEL MAPA en el PDF y dibujar los RECUADROS respectivos ---------------------
$pdf->Image($nombre_imagen, 10, 10, 170, 170);//imagen principal del mapa
//echo $nombre_imagen;
$pdf->Rect(10, 10, $anchomap-20, $altomap-20, 'D');//Mapa CONTORNO DE LA HOJA
$pdf->Close();
$nombre_archivo = "mapa_hoja".$hoja.".pdf";
$pdf->Output($nombre_archivo,"I", true);
?>