<?php 
require_once('../modelos/Ubicacion.php');
include_once 'funciones.php';

$ubicacion=new Ubicacion();

$idcaja=isset($_POST["idcaja"])? limpiarCadena($_POST["idcaja"]):"";
$idcaja_informacion=isset($_POST["idcaja_informacion"])? limpiarCadena($_POST["idcaja_informacion"]):"";
$direccion_capturada=isset($_POST["direccion_capturada"])? limpiarCadena($_POST["direccion_capturada"]):"";
$latitud=isset($_POST["latitud"])? limpiarCadena($_POST["latitud"]):"";
$longitud=isset($_POST["longitud"])? limpiarCadena($_POST["longitud"]):"";
$zona=isset($_POST["zona"])? limpiarCadena($_POST["zona"]):"";
$nombre=isset($_POST["nombre"])? limpiarCadena($_POST["nombre"]):"";
$capacidad=isset($_POST["capacidad"])? limpiarCadena($_POST["capacidad"]):"";
$idolt=isset($_POST["idolt"])? limpiarCadena($_POST["idolt"]):"";
$tarjeta=isset($_POST["tarjeta"])? limpiarCadena($_POST["tarjeta"]):"";
$puerto=isset($_POST["puerto"])? limpiarCadena($_POST["puerto"]):"";
$autorizacion=isset($_POST["autorizacion"])? limpiarCadena($_POST["autorizacion"]):"";
$descripcion=isset($_POST["descripcion"])? limpiarCadena($_POST["descripcion"]):"";
$idicono=isset($_POST["idicono"])? limpiarCadena($_POST["idicono"]):"";
$nombre_prime=isset($_POST["nombre_prime"])? limpiarCadena($_POST["nombre_prime"]):"";
$codigo=isset($_POST["codigo"])? limpiarCadena($_POST["codigo"]):"";

switch ($_GET["op"])
{
      case 'guardaryeditar':
          $imagen = '';
          $max_width = 800;
          $max_height = 600;
          $calidad = 80;
          $formatos_permitidos = ['image/jpeg', 'image/jpg', 'image/png'];
          // Validación de imagen (para insertar y editar)
          if (!isset($_FILES['inputImagenPoste']) || $_FILES['inputImagenPoste']['error'] !== UPLOAD_ERR_OK) {
              // Si no se sube imagen nueva, se usa la anterior
              $imagen = $_POST["previewImagenPoste"] ?? '';
          } else {
              $infoImagen = getimagesize($_FILES['inputImagenPoste']['tmp_name']);

              if (!$infoImagen || !in_array($infoImagen['mime'], $formatos_permitidos)) {
                  echo json_encode(["status" => "error", "message" => "Formato de imagen no permitido. Solo JPG o PNG."]);
                  exit;
              }
              $ext = image_type_to_extension($infoImagen[2], false); // ej. 'jpg'
              $nuevoNombre = round(microtime(true)) . "." . $ext;
              $rutaDestino = "../files/caja/" . $nuevoNombre;

              // Procesar y redimensionar imagen
              if (!procesarImagen($_FILES['inputImagenPoste']['tmp_name'], $rutaDestino, $max_width, $max_height, $calidad, $ext)) {
                  echo json_encode(["status" => "error", "message" => "Error al procesar la imagen."]);
                  exit;
              }
              $imagen = $nuevoNombre;
          }
          // Insertar o editar
          if (empty($idcaja)) {
              $rspta = $ubicacion->insertar($nombre_prime,$idicono,$direccion_capturada, $imagen, $latitud, $longitud);
              $mensaje = "Registro exitoso";
          } else {
              $rspta = $ubicacion->editar($idcaja,$nombre_prime,$idicono, $direccion_capturada, $imagen, $latitud, $longitud);
              $mensaje = "Actualización exitosa";
          }
          // Respuesta
          if ($rspta) {
              echo json_encode(["status" => "success", "message" => $mensaje]);
          } else {
              echo json_encode(["status" => "error", "message" => "Error al guardar los datos"]);
          }
      break;


    case 'guardaryeditar_informacion':
      if (!empty($idcaja_informacion)) {
        $rspta = $ubicacion->insertar_informacion($idcaja_informacion, $zona, $nombre, $capacidad, $idolt, $tarjeta, $puerto, $autorizacion, $descripcion,$codigo);
        if ($rspta) {
          echo json_encode(["status" => "success", "message" => "Registro exitoso"]);
        } else {
            echo json_encode(["status" => "error", "message" => "Error al registrar"]);
        }
      }
      break;

    case 'mostrar':
      $rspta=$ubicacion->mostrar($idubicacion);
       //Codificar el resultado utilizando json
       echo json_encode($rspta);
    break;

    case 'eliminar':
      $rspta=$ubicacion->eliminar($idubicacion);
       //Codificar el resultado utilizando json
       echo json_encode($rspta);
    break;

    case 'cargar_linea':
      $idcaja=$_REQUEST['idcaja'];
      $rspta=$ubicacion->cargar_linea($idcaja);
       //Codificar el resultado utilizando json
       echo json_encode($rspta);
    break;

    case 'listarubicacion':
      $rspta=$ubicacion->listarubicacion();
      //Vamos a declarar un array
      $data=Array();
      while($reg=$rspta->fetch_object())
      {
        $data[]=array(
          "0"=>$reg->nombre_ubicacion,
          "1"=>$reg->detalle_ubicacion,
          "2"=>$reg->servidor_ubicacion,
          "3"=>$reg->usuario_ubicacion,
          "4"=>$reg->pass_ubicacion,
          "5"=>'<a href="create.php?idubicacion=' . $reg->idubicacion . '" class="btn btn-warning btn-xs btn-flat"><i class="fa fa-edit"></i></a>' .
               ' <button class="btn btn-danger btn-xs btn-flat" onclick="eliminar(' . $reg->idubicacion . ')"><i class="fas fa-trash-alt"></i></button>'
        );
      }
      $results= array(
        "sEcho"=>1, //Informacion para el datatable
        "iTotalRecords"=>count($data),//Enviamos el total de registtros en el datatable
        "iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
        "aaData"=>$data);
      echo json_encode($results);

    break;

    case 'selectOdf': 
      $rspta = $ubicacion->selectOdf();
      if ($rspta) {
          while ($reg = $rspta->fetch_object()) {
              echo "<option value='" . htmlspecialchars($reg->idodf, ENT_QUOTES, 'UTF-8') . "'>" . htmlspecialchars($reg->nombre, ENT_QUOTES, 'UTF-8') . "</option>";
          }
      } else {
          echo "<option value=''>No hay odf disponibles</option>";
      }
      break;

      case 'registrarDatos':
        $idcontrato=$_REQUEST['idcontrato'];
        $dni=$_REQUEST['dni'];
        $detalle_id=$_REQUEST['detalle_id'];
        // Aquí registra en la base de datos como necesites
        $rspta = $ubicacion->insertar_datos($dni, $idcontrato, $detalle_id);
        if ($rspta) {
              echo json_encode(["status" => "success", "message" => "Cliente registrado"]);
          } else {
              echo json_encode(["status" => "error", "message" => "Error al guardar los datos"]);
          }
        break;
 
}

?>