<?php
// فایل: test_sync_final.php
// تست مستقیم sync_service_with_panel بعد از اصلاح

error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once 'config.php';
require_once 'api.php';

global $pdo;

// آیدی سرور (همون 39)
$server_id = 39;

echo "Starting sync_service_with_panel for server_id: $server_id\n\n";

// ابتدا اطلاعات سرور رو بگیر
$stmt = $pdo->prepare("
    SELECT asv.*, p.url, p.username as panel_user, p.password as panel_pass, 
           p.inbound_id, p.sub_port, p.sub_path, p.sub_domain, p.version, p.api_token
    FROM agent_servers asv
    JOIN panels p ON asv.panel_id = p.id
    WHERE asv.id = ?
");
$stmt->execute([$server_id]);
$server = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$server) {
    die("Server not found!\n");
}

echo "Server: " . $server['username'] . ", Version: " . $server['version'] . "\n";
echo "UUID in DB (عدد): " . $server['uuid'] . "\n\n";

// برای پنل قدیمی، مستقیم با ایمیل اطلاعات بگیریم
$cookie_file = null;

// لاگین به پنل قدیمی
$pass = $server['panel_pass'] ?? '';
$cookie_file = tempnam(sys_get_temp_dir(), 'cookie_');

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => rtrim($server['url'], '/') . "/login",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => "username=" . urlencode($server['panel_user']) . "&password=" . urlencode($pass),
    CURLOPT_COOKIEJAR => $cookie_file,
    CURLOPT_COOKIEFILE => $cookie_file,
    CURLOPT_TIMEOUT => 15,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_FOLLOWLOCATION => true
]);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($http_code != 200) {
    die("❌ لاگین ناموفق!\n");
}
echo "✅ لاگین موفق\n";

// دریافت اطلاعات کاربر با ایمیل
$info_url = rtrim($server['url'], '/') . "/panel/api/inbounds/getClientTraffics/" . urlencode($server['username']);

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $info_url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Accept: application/json'],
    CURLOPT_COOKIEFILE => $cookie_file,
    CURLOPT_TIMEOUT => 15,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false
]);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($http_code == 200) {
    $data = json_decode($response, true);
    if ($data && isset($data['success']) && $data['success'] === true) {
        $user_info = $data['obj'];
        
        $client_id = $user_info['id']; // عدد 133
        $total_bytes = $user_info['total'] ?? 0;
        $volume_gb = $total_bytes > 0 ? round($total_bytes / 1073741824, 3) : 0;
        
        $expiry_time_ms = $user_info['expiryTime'] ?? 0;
        $expiry_date = null;
        if ($expiry_time_ms > 0 && $expiry_time_ms != -2592000000) {
            $expiry_date = date('Y-m-d H:i:s', $expiry_time_ms / 1000);
        }
        
        $status = $user_info['enable'] ? 1 : 0;
        
        echo "\n✅ اطلاعات کاربر دریافت شد:\n";
        echo "  - Client ID: $client_id\n";
        echo "  - Volume GB: $volume_gb\n";
        echo "  - Expiry Date: $expiry_date\n";
        echo "  - Status: $status\n";
        
        // به‌روزرسانی دیتابیس (بدون updated_at)
        $update = $pdo->prepare("
            UPDATE agent_servers 
            SET uuid = ?, volume_gb = ?, expiry_date = ?, status = ?
            WHERE id = ?
        ");
        $update->execute([$client_id, $volume_gb, $expiry_date, $status, $server_id]);
        
        echo "\n✅ دیتابیس به‌روزرسانی شد!\n";
        echo "همگام‌سازی موفقیت‌آمیز بود!\n";
    } else {
        echo "❌ کاربر یافت نشد!\n";
    }
} else {
    echo "❌ خطا در دریافت اطلاعات\n";
}

// پاک کردن کوکی
if ($cookie_file && file_exists($cookie_file)) {
    @unlink($cookie_file);
}
?>