<?php
// miniapp/api/request_test.php
// درخواست اکانت تست - دقیقا مثل بات
header('Content-Type: application/json; charset=utf-8');

require __DIR__ . '/config.php';

$input = json_decode(file_get_contents('php://input'), true);
$userId = isset($input['user_id']) ? (int)$input['user_id'] : 0;

if ($userId <= 0) {
    echo json_encode(['ok' => false, 'error' => 'شناسه کاربر نامعتبر است'], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    // دریافت اطلاعات کاربر
    $userStmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
    $userStmt->execute([$userId]);
    $user = $userStmt->fetch(PDO::FETCH_ASSOC);

    if (!$user) {
        echo json_encode(['ok' => false, 'error' => 'کاربر یافت نشد'], JSON_UNESCAPED_UNICODE);
        exit;
    }

    // چک کردن اینکه آیا قبلا تست گرفته یا نه
    $testCheck = $pdo->prepare("SELECT * FROM test_accounts WHERE user_id = ? ORDER BY created_at DESC LIMIT 1");
    $testCheck->execute([$userId]);
    $lastTest = $testCheck->fetch(PDO::FETCH_ASSOC);

    // محدودیت: هر ۲۴ ساعت یک تست
    if ($lastTest) {
        $lastTime = strtotime($lastTest['created_at']);
        $diff = time() - $lastTime;
        $hoursLeft = 24 - floor($diff / 3600);
        
        if ($diff < 86400) { // 24 ساعت
            echo json_encode([
                'ok' => false, 
                'error' => "شما قبلا تست دریافت کرده‌اید. {$hoursLeft} ساعت دیگر می‌توانید درخواست جدید بدهید."
            ], JSON_UNESCAPED_UNICODE);
            exit;
        }
    }

    // دریافت کانفیگ تست موجود
    $configStmt = $pdo->prepare("SELECT * FROM configs WHERE plan_code = 'TEST' AND is_used = 0 LIMIT 1");
    $configStmt->execute();
    $config = $configStmt->fetch(PDO::FETCH_ASSOC);

    if (!$config) {
        // اطلاع به ادمین‌ها
        $admins = explode(',', ADMIN_IDS);
        foreach ($admins as $adminId) {
            $adminId = trim($adminId);
            if ($adminId) {
                tg('sendMessage', [
                    'chat_id' => $adminId,
                    'text' => "⚠️ درخواست تست جدید\n\n👤 کاربر: {$user['first_name']} ({$userId})\n\n❌ کانفیگ تست موجود نیست!"
                ]);
            }
        }

        echo json_encode([
            'ok' => false, 
            'error' => 'متاسفانه در حال حاضر کانفیگ تست موجود نیست. لطفا بعدا تلاش کنید.'
        ], JSON_UNESCAPED_UNICODE);
        exit;
    }

    // ثبت درخواست تست
    $insertTest = $pdo->prepare("INSERT INTO test_accounts (user_id, config_id, created_at, expires_at) VALUES (?, ?, NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY))");
    $insertTest->execute([$userId, $config['id']]);

    // علامت‌گذاری کانفیگ
    $markUsed = $pdo->prepare("UPDATE configs SET is_used = 1, used_by = ?, used_at = NOW() WHERE id = ?");
    $markUsed->execute([$userId, $config['id']]);

    // ارسال کانفیگ به کاربر در تلگرام
    $msg = "🎁 <b>اکانت تست شما آماده است!</b>\n\n";
    $msg .= "⏱ مدت اعتبار: ۲۴ ساعت\n\n";
    $msg .= "🔐 کانفیگ:\n\n";
    $msg .= "<code>" . htmlspecialchars($config['config_text']) . "</code>\n\n";
    $msg .= "📚 برای راهنمای اتصال از منوی ربات استفاده کنید.";

    tg('sendMessage', [
        'chat_id' => $userId,
        'text' => $msg,
        'parse_mode' => 'HTML'
    ]);

    echo json_encode([
        'ok' => true,
        'message' => 'اکانت تست با موفقیت ایجاد شد و در تلگرام برای شما ارسال شد.',
        'expires_at' => date('Y-m-d H:i:s', strtotime('+1 day'))
    ], JSON_UNESCAPED_UNICODE);

} catch (Exception $e) {
    error_log("request_test error: " . $e->getMessage());
    echo json_encode(['ok' => false, 'error' => $e->getMessage()], JSON_UNESCAPED_UNICODE);
}

