

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

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

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

// Inicializar lat/long con lo que venga desde JS
$latitud  = $data['latitud']  ?? null;
$longitud = $data['longitud'] ?? null;

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

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

if ($latitud  == null) $latitud = 41.5568023;
if ($longitud  == null) $longitud = 2.05310186385176;

// 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'] ?? null,
    "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;

// Purgar registros con más de 12 meses
$corte = (time() - 60 * 60 * 24 * 365) * 1000;
$logs = array_values(array_filter($logs, fn($l) => isset($l['uniqueNumber']) && $l['uniqueNumber'] >= $corte));

// 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.']);
}
?>

