<?php
// api_consulta.php - Validación estricta y caché sincronizado
error_reporting(0);
ini_set('display_errors', 0);
header('Content-Type: application/json; charset=utf-8');

while (ob_get_level()) { ob_end_clean(); }

require_once 'config.php';
$input_raw = file_get_contents('php://input');
file_put_contents('bot_debug.txt', date('H:i:s') . " - RECIBIDO: " . $input_raw . PHP_EOL, FILE_APPEND);

$input = json_decode(file_get_contents('php://input'), true);
$raw_platform = strtolower(trim($input['platform'] ?? ''));
$email_consulta = trim(strtolower($input['email'] ?? ''));

if ($raw_platform === 'hbo max' || $raw_platform === 'hbo') {
    $platform = 'max';
} else {
    $platform = $raw_platform;
}

if (!$platform || !$email_consulta) {
    echo json_encode(['success' => false, 'message' => 'Faltan datos']);
    exit;
}

$correo_valido = false;

// 1. Verificación en BD Principal
$conn_nueva = @new mysqli('localhost', 'iivzwpqp_JEFFERS', '1q1(2Q!A!s01.seG', 'iivzwpqp_JEFFERSON');
if (!$conn_nueva->connect_error) {
    $conn_nueva->set_charset("utf8mb4");
    $stmt = $conn_nueva->prepare("SELECT id FROM clientes WHERE LOWER(TRIM(correo)) = ?");
    $stmt->bind_param("s", $email_consulta);
    $stmt->execute();
    if ($stmt->get_result()->num_rows > 0) $correo_valido = true;
    $stmt->close();
    $conn_nueva->close();
}

// 2. Verificación en BD Secundaria (Respaldo)
if (!$correo_valido) {
    $conn_vieja = @new mysqli('localhost', 'iivzwpqp_codigos', '1q1(2Q!A!s01.seG', 'iivzwpqp_codigos');
    if (!$conn_vieja->connect_error) {
        $conn_vieja->set_charset("utf8mb4");
        $stmt_viejo = $conn_vieja->prepare("SELECT id FROM correos_asignados WHERE LOWER(TRIM(email)) = ? AND estado = 'activo'");
        $stmt_viejo->bind_param("s", $email_consulta);
        $stmt_viejo->execute();
        if ($stmt_viejo->get_result()->num_rows > 0) $correo_valido = true;
        $stmt_viejo->close();
        $conn_vieja->close();
    }
}

if (!$correo_valido) {
    echo json_encode(['success' => false, 'message' => 'Correo no autorizado o sin asignación activa.']);
    exit;
}

// 3. Sistema de Caché Extendido (3 Minutos)
$cacheFile = sys_get_temp_dir() . '/bts_codigos_cache.json'; // Usar directorio temporal del sistema para evitar problemas de permisos de cPanel
$cacheData = file_exists($cacheFile) ? json_decode(file_get_contents($cacheFile), true) : [];
$cacheKey = md5($email_consulta . '_' . $platform);
$cooldown = 100; // 100 segundos de retención para que Telegram y Web vean el mismo código

if (isset($cacheData[$cacheKey]) && (time() - $cacheData[$cacheKey]['time']) < $cooldown) {
    echo json_encode(['success' => true, 'code' => $cacheData[$cacheKey]['code'], 'message' => 'Recuperado de caché']);
    exit;
}

// 4. Extracción IMAP Segura
require_once 'lector_imap.php';
$result_code = buscar_codigo_streaming($email_consulta, $platform);

if ($result_code) {
    // Guardar en caché y forzar permisos
    $cacheData[$cacheKey] = ['code' => $result_code, 'time' => time()];
    @file_put_contents($cacheFile, json_encode($cacheData));
    @chmod($cacheFile, 0666); 
    
    echo json_encode(['success' => true, 'code' => $result_code]);
} else {
    echo json_encode(['success' => false, 'message' => 'Correo validado correctamente, pero no hay códigos recientes en el buzón. Intente solicitar un código nuevo en la plataforma.']);
}
exit;