<?php
// log.php

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Content-Type");
header("Content-Type: application/json");

$documentRoot = realpath(__DIR__ . '/../..');
$logFile = $documentRoot . "/php/api/log_ubicacion.json";

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['status' => 'error', 'message' => 'Método no permitido.']);
    exit;
}

$input = file_get_contents('php://input');
$data = json_decode($input, true);

$latitud = "";
$longitud = "";

// Validación mínima
if (!$data || !isset($data['latitud']) || !isset($data['longitud']) || !isset($data['pdf_url'])) {
    echo json_encode(['status' => 'error', 'message' => 'Datos inválidos o incompletos.']);
    exit;
}

/////////////////////////////

// Consultar la API de geoplugin
$url = "http://www.geoplugin.net/json.gp?ip=$ip";
$response = @file_get_contents($url);

if ($response !== false) {
    $data = json_decode($response, true);
    if (isset($data['geoplugin_status']) && $data['geoplugin_status'] == 200) {
        $latitud = $data['geoplugin_latitude'] ?? "";
        $longitud = $data['geoplugin_longitude'] ?? "";
    }
}
/////////////////////////////

// Evitar sobreescribir si ya viene desde JS
//$latitud  = $data['latitud'];
//$longitud = $data['longitud'];

// Obtener IP
$ip = $_SERVER['REMOTE_ADDR'];

// Crear logEntry
//    "plataforma" => PHP_OS,

$logEntry = [
    "uniqueNumber" => $data['uniqueNumber'] ?? round(microtime(true) * 1000),
    "fecha"        => $data['fecha'] ?? date("Y-m-d H:i:s"),
    "pdf_url"      => $data['pdf_url'],
    "pdf_rhb"      => $data['pdf_rhb'] ?? null,
    "latitud"      => $latitud,
    "longitud"     => $longitud,
    "precision"    => $data['precision'] ?? null,
    "ip"           => $ip,
    "userAgent"    => $_SERVER['HTTP_USER_AGENT'],
    "idioma"       => $_SERVER['HTTP_ACCEPT_LANGUAGE'],
    "timestamp"    => round(microtime(true) * 1000),
    "fechaLocal"   => date("Y-m-d H:i:s")
];

// Leer archivo existente
$logs = [];
if (file_exists($logFile)) {
    $jsonData = file_get_contents($logFile);
    $logs = json_decode($jsonData, true) ?: [];
}

// Agregar nueva entrada
$logs[] = $logEntry;

// Guardar
if (file_put_contents($logFile, json_encode($logs, JSON_PRETTY_PRINT)) !== false) {
    echo json_encode(['status' => 'success', 'message' => 'Log añadido correctamente.']);
} else {
    echo json_encode(['status' => 'error', 'message' => 'No se pudo escribir en el archivo.']);
}
?>