<?php
date_default_timezone_set('Europe/Madrid');
include 'conexion/conexion.php';

// Ahora aceptamos teléfono tanto de GET como de POST
$telefono = $_GET['telefono'] ?? $_POST['telefono'] ?? '';

if (!$telefono) {
    die("Teléfono no válido.");
}

/* ========= FUNCIONES ========= */
function obtenerIP() {
    if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        return $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    }
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
    }
    return $_SERVER['REMOTE_ADDR'] ?? '';
}

function obtenerGeoIP($ip) {
    $url = "http://ip-api.com/json/{$ip}?fields=status,country,regionName,as,proxy,hosting";
    $response = @file_get_contents($url);
    
    if ($response === false) {
        return ['Desconocido','Desconocido','Desconocido',0];
    }
    
    $data = json_decode($response, true);
    
    if (!isset($data['status']) || $data['status'] !== 'success') {
        return ['Desconocido','Desconocido','Desconocido',0];
    }
    
    $vpn = ($data['proxy'] == 1 || $data['hosting'] == 1) ? 1 : 0;
    
    return [
        $data['country'] ?? 'Desconocido',
        $data['regionName'] ?? 'Desconocido',
        $data['as'] ?? 'Desconocido',
        $vpn
    ];
}

/* ========= PROCESAR ACEPTACIÓN ========= */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['confirmar'])) {
    
    // Primero verificamos que el registro existe y NO tiene IP
    $checkStmt = $pdo->prepare("SELECT id, ip_usuario FROM registros WHERE telefono = ? ORDER BY id DESC LIMIT 1");
    $checkStmt->execute([$telefono]);
    $registroCheck = $checkStmt->fetch(PDO::FETCH_ASSOC);
    
    if ($registroCheck && empty($registroCheck['ip_usuario'])) {
        $ipReal = obtenerIP();
        
        if (!empty($ipReal)) {
            [$pais, $provincia, $proveedor, $vpnDetectado] = obtenerGeoIP($ipReal);
            
            // Usamos la fecha de PHP que ya tiene Europe/Madrid
            $fechaEspaña = date('Y-m-d H:i:s');
            
            $update = $pdo->prepare("
                UPDATE registros 
                SET 
                    ip_usuario = ?,
                    pais = ?,
                    provincia = ?,
                    proveedor = ?,
                    vpn_detectado = ?,
                    fecha_hora = ?
                WHERE id = ? AND ip_usuario IS NULL
            ");
            
            $update->execute([
                $ipReal,
                $pais,
                $provincia,
                $proveedor,
                $vpnDetectado,
                $fechaEspaña,
                $registroCheck['id']
            ]);
            
            session_start();
            $_SESSION['formulario_enviado'] = true;
            // Redirigir a gracias.php
            header("Location: gracias.php");
            exit;
        }
    } else {
        // Si ya tenía IP, redirigimos con mensaje
        header("Location: vista.php?telefono=" . urlencode($telefono) . "&ya_firmado=1");
        exit;
    }
}

/* ========= BUSCAR ÚLTIMO REGISTRO ========= */
$stmt = $pdo->prepare("
    SELECT * 
    FROM registros 
    WHERE telefono = ?
    ORDER BY id DESC
    LIMIT 1
");
$stmt->execute([$telefono]);
$data = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$data) {
    die("No se encontró registro.");
}

$aceptado = !empty($data['ip_usuario']);

// Mensajes de feedback
$mensajeExito = isset($_GET['firma']) ? 'Consentimiento confirmado correctamente.' : '';
$mensajeInfo = isset($_GET['ya_firmado']) ? 'Este consentimiento ya había sido firmado anteriormente.' : '';
?>

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Consentimiento</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
    background: linear-gradient(135deg, #f5f7fa, #e4ebf5);
    font-family: 'Segoe UI', sans-serif;
}
.card {
    border-radius: 15px;
    box-shadow: 0 10px 25px rgba(0,0,0,0.1);
}
</style>
</head>
<body class="d-flex justify-content-center align-items-center vh-100">

<div class="card p-4" style="max-width:600px; width:100%;">
    
    <?php if ($mensajeExito): ?>
    <div class="alert alert-success alert-dismissible fade show" role="alert">
        <?= $mensajeExito ?>
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    </div>
    <?php endif; ?>
    
    <?php if ($mensajeInfo): ?>
    <div class="alert alert-info alert-dismissible fade show" role="alert">
        <?= $mensajeInfo ?>
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    </div>
    <?php endif; ?>

    <h4 class="text-center mb-3">Tratamiento de Datos Personales</h4>

    <p>
        El usuario <strong>
        <?= htmlspecialchars($data['nombre'] . ' ' . $data['apellido']) ?>
        </strong> autoriza el tratamiento de sus datos personales conforme a la normativa vigente.
    </p>

    <hr>

    <p><strong>Teléfono:</strong> <?= htmlspecialchars($data['telefono']) ?></p>
    <p><strong>Email:</strong> <?= htmlspecialchars($data['correo']) ?></p>
    <p><strong>Fecha registro:</strong> 
        <?= date('d/m/Y H:i', strtotime($data['fecha_hora'])) ?>
    </p>

    <hr>

    <?php if (!$aceptado): ?>
        <div class="alert alert-warning">
            Estado: <strong>Pendiente de firma</strong>
        </div>

        <button type="button" class="btn btn-primary w-100" data-bs-toggle="modal" data-bs-target="#modalConfirmar">
            Firmar consentimiento
        </button>
    <?php else: ?>
        <div class="alert alert-success">
            <strong>✓ Consentimiento firmado</strong><br>
            <small class="d-block mt-2">
                <strong>Fecha firma:</strong>
                <?= !empty($data['fecha_hora']) 
                    ? date('d/m/Y H:i', strtotime($data['fecha_hora'])) 
                    : '-' ?>
            </small>
        </div>
    <?php endif; ?>

</div>

<!-- MODAL -->
<div class="modal fade" id="modalConfirmar" tabindex="-1">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Confirmar firma</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <div class="modal-body">
        <p>¿Confirma que desea firmar el consentimiento para el tratamiento de sus datos personales?</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
            Cancelar
        </button>
        <form method="POST">
            <input type="hidden" name="confirmar" value="1">
            <input type="hidden" name="telefono" value="<?= htmlspecialchars($telefono) ?>">
            <button type="submit" class="btn btn-success">
                Sí, firmar
            </button>
        </form>
      </div>
    </div>
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

<script>
// Forzar recarga desde el servidor si usamos el historial
window.addEventListener('pageshow', function(event) {
    if (event.persisted) {
        window.location.reload();
    }
});
</script>

</body>
</html>