<?php
if($text == "👤 حساب کاربری") {
    $stmt = $pdo->prepare("SELECT COUNT(*) as count FROM `orders` WHERE `user_id` = ?");
    $stmt->execute([$chat_id]);
    $ordersCount = $stmt->fetch()->count;
    $stmt = $pdo->prepare("SELECT COUNT(*) as count, SUM(reward_coins) as total_reward FROM `referrals` WHERE `inviter_id` = ?");
    $stmt->execute([$chat_id]);
    $refData        = $stmt->fetch();
    $referralsCount = $refData->count;
    $referralIncome = $refData->total_reward ?? 0;
    $stmtJoins = $pdo->prepare("SELECT COUNT(*) FROM `memberships` WHERE `user_id` = ? AND DATE(`joined_at`) = CURDATE() AND `status` = 'active'");
    $stmtJoins->execute([$chat_id]);
    $todayJoins = intval($stmtJoins->fetchColumn());
    $nextMilestone = 20;

if($todayJoins >= 100) $nextMilestone = "تکمیل شده";
    elseif ($todayJoins >= 50) $nextMilestone = 100;
    elseif ($todayJoins >= 20) $nextMilestone = 50;
    $coins              = number_format((float) $user->coins, 2, '.', '');
    $subscriptionStatus = ($user->is_vip && strtotime($user->vip_expire) > time()) ? "🌟 ویژه" : "👤 رایگان";

if($user->is_vip && strtotime($user->vip_expire) > time()) {
        $expireDate = jdate("Y/m/d", strtotime($user->vip_expire));
        $responseText = "👤 *اطلاعات حساب کاربری شما*\n\n" .
            "🆔 شناسه کاربری: *$chat_id* \n" .
            "💎 وضعیت اشتراک: *$subscriptionStatus*\n" .
            "⏳ پایان اشتراک: *$expireDate*\n" .
            "💰 تعداد سکه: *$coins* سکه\n" .
            "📦 تعداد سفارشات: *$ordersCount*\n" .
            "👥 تعداد زیرمجموعه‌ها: *$referralsCount* نفر\n" .
            "💵 درآمد از زیرمجموعه‌گیری: *$referralIncome* سکه\n" .
            "🎯 فعالیت امروز: *$todayJoins* عضویت (هدف بعدی: $nextMilestone)";
} else {
        $responseText = "👤 *اطلاعات حساب کاربری شما*\n\n" .
            "🆔 شناسه کاربری: *$chat_id* \n" .
            "💎 وضعیت اشتراک: *$subscriptionStatus*\n" .
            "💰 تعداد سکه: *$coins* سکه\n" .
            "📦 تعداد سفارشات: *$ordersCount*\n" .
            "👥 تعداد زیرمجموعه‌ها: *$referralsCount* نفر\n" .
            "💵 درآمد از زیرمجموعه‌گیری: *$referralIncome* سکه\n" .
            "🎯 فعالیت امروز: *$todayJoins* عضویت (هدف بعدی: $nextMilestone)";
}

    $keyboard = json_encode([
        "inline_keyboard" => [
            [
                ['text' => '🏆 برترین کاربران', 'callback_data' => 'top_users']
            ],
            [
                ['text' => '💰 سکه روزانه', 'callback_data' => 'daily_bonus'],
                ['text' => '💸 انتقال سکه', 'callback_data' => 'transfer_coins']
            ],
            [
                ['text' => '🎁 کد هدیه', 'callback_data' => 'enter_gift_code']
            ]
        ]
    ]);
    setStep($from_id, "profile");
    sendMessage($chat_id, $responseText, $keyboard);
    die;
}


if($data == 'daily_bonus') {
    $stmt = $pdo->prepare("SELECT * FROM `daily_coins` WHERE `user_id` = ? AND DATE(`created_at`) = CURDATE()");
    $stmt->execute([$chat_id]);
    $lastClaim = $stmt->fetch();

if($lastClaim) {
        $now           = new DateTime();
        $tomorrow      = new DateTime('tomorrow');
        $interval      = $now->diff($tomorrow);
        $timeRemaining = $interval->format('%h ساعت %i دقیقه و %s ثانیه');
        $responseText = "⏳ *شما امروز سکه روزانه خود را دریافت کرده‌اید!*\n\n" .
            "⏱ زمان باقی‌مانده تا دریافت بعدی:\n" .
            "🕒 *$timeRemaining*\n\n" .
            "💡 هر روز سر بزنید و سکه رایگان بگیرید!";
        $keyboard = json_encode([
            "inline_keyboard" => [
                [['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']]
            ]
        ]);
        editMessage($chat_id, $message_id, $responseText, $keyboard);
} else {
        $amount = ($user->is_vip) ? rand(2, 10) : rand(1, 5);
        try {
            $pdo->beginTransaction();
            $stmt = $pdo->prepare("INSERT INTO `daily_coins` (`user_id`, `amount`, `created_at`) VALUES (?, ?, NOW())");
            $stmt->execute([$chat_id, $amount]);
            $stmt = $pdo->prepare("UPDATE `users` SET `coins` = `coins` + ? WHERE `user_id` = ?");
            $stmt->execute([$amount, $chat_id]);
            $pdo->commit();
            $responseText = "🎉 *تبریک! سکه روزانه دریافت شد*\n\n💰 مقدار پاداش: *$amount* سکه\n✅ به موجودی شما اضافه شد.\n\n⏰ فردا هم سر بزنید!";
            $keyboard = json_encode([
                "inline_keyboard" => [
                    [['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']]
                ]
            ]);
            editMessage($chat_id, $message_id, $responseText, $keyboard);
} catch (Exception $e) {

if($pdo->inTransaction()) {
                $pdo->rollBack();
}

            answerCallbackQuery($query_id, "❌ خطا در دریافت سکه. لطفاً دوباره تلاش کنید.", true);
}

}

    die;
}


if($data == 'back_to_profile') {
    setStep($from_id, "profile");
    $stmt = $pdo->prepare("SELECT COUNT(*) as count FROM `orders` WHERE `user_id` = ?");
    $stmt->execute([$chat_id]);
    $ordersCount = $stmt->fetch()->count;
    $stmt = $pdo->prepare("SELECT COUNT(*) as count, SUM(reward_coins) as total_reward FROM `referrals` WHERE `inviter_id` = ?");
    $stmt->execute([$chat_id]);
    $refData        = $stmt->fetch();
    $referralsCount = $refData->count;
    $referralIncome = $refData->total_reward ?? 0;
    $stmtJoins = $pdo->prepare("SELECT COUNT(*) FROM `memberships` WHERE `user_id` = ? AND DATE(`joined_at`) = CURDATE() AND `status` = 'active'");
    $stmtJoins->execute([$chat_id]);
    $todayJoins = intval($stmtJoins->fetchColumn());
    $nextMilestone = 20;

if($todayJoins >= 100) $nextMilestone = "تکمیل شده";
    elseif ($todayJoins >= 50) $nextMilestone = 100;
    elseif ($todayJoins >= 20) $nextMilestone = 50;
    $user  = getUser($chat_id);
    $coins = number_format((float) $user->coins, 2, '.', '');
    $subscriptionStatus = ($user->is_vip && strtotime($user->vip_expire) > time()) ? "🌟 ویژه" : "👤 رایگان";

if($user->is_vip && strtotime($user->vip_expire) > time()) {
        $expireDate = jdate("Y/m/d", strtotime($user->vip_expire));
        $responseText = "👤 *اطلاعات حساب کاربری شما*\n\n" .
            "🆔 شناسه کاربری: *$chat_id* \n" .
            "💎 وضعیت اشتراک: *$subscriptionStatus*\n" .
            "⏳ پایان اشتراک: *$expireDate*\n" .
            "💰 تعداد سکه: *$coins* سکه\n" .
            "📦 تعداد سفارشات: *$ordersCount*\n" .
            "👥 تعداد زیرمجموعه‌ها: *$referralsCount* نفر\n" .
            "💵 درآمد از زیرمجموعه‌گیری: *$referralIncome* سکه\n" .
            "🎯 فعالیت امروز: *$todayJoins* عضویت (هدف بعدی: $nextMilestone)";
} else {
        $responseText = "👤 *اطلاعات حساب کاربری شما*\n\n" .
            "🆔 شناسه کاربری: *$chat_id* \n" .
            "💎 وضعیت اشتراک: *$subscriptionStatus*\n" .
            "💰 تعداد سکه: *$coins* سکه\n" .
            "📦 تعداد سفارشات: *$ordersCount*\n" .
            "👥 تعداد زیرمجموعه‌ها: *$referralsCount* نفر\n" .
            "💵 درآمد از زیرمجموعه‌گیری: *$referralIncome* سکه\n" .
            "🎯 فعالیت امروز: *$todayJoins* عضویت (هدف بعدی: $nextMilestone)";
}

    $keyboard = json_encode([
        "inline_keyboard" => [
            [
                ['text' => '🏆 برترین کاربران', 'callback_data' => 'top_users']
            ],
            [
                ['text' => '💰 سکه روزانه', 'callback_data' => 'daily_bonus'],
                ['text' => '💸 انتقال سکه', 'callback_data' => 'transfer_coins']
            ],
            [
                ['text' => '🎁 کد هدیه', 'callback_data' => 'enter_gift_code']
            ]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'top_users') {
    $responseText = "🏆 *برترین کاربران ربات*\n\n📊 در این بخش می‌توانید لیست کاربران برتر ربات را در زمینه‌های مختلف مشاهده کنید.\n\n👇 لطفاً یکی از گزینه‌های زیر را انتخاب کنید:";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '💰 بیشترین سکه', 'callback_data' => 'leaderboard:coins'], ['text' => '💌 بیشترین دعوت', 'callback_data' => 'leaderboard:invites']],
            [['text' => '📣 بیشترین عضویت', 'callback_data' => 'leaderboard:memberships']],
            [['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'leaderboard:coins') {
    $stmt = $pdo->prepare("SELECT user_id, full_name, coins, is_vip, vip_expire FROM users ORDER BY coins DESC LIMIT 10");
    $stmt->execute();
    $topUsers = $stmt->fetchAll();
    $stmtRank = $pdo->prepare("SELECT COUNT(*) as user_rank FROM users WHERE coins > (SELECT coins FROM users WHERE user_id = ?)");
    $stmtRank->execute([$chat_id]);
    $rank = $stmtRank->fetch()->user_rank + 1;
    $responseText = "💰 *برترین کاربران (بیشترین سکه)*\n\n";
    $medals = ['🥇', '🥈', '🥉'];

foreach($topUsers as $i => $u) {
        $num  = $i + 1;
        $icon = $medals[$i] ?? "🔹";
        $isVip   = $u->is_vip && strtotime($u->vip_expire) > time();
        $vipIcon = $isVip ? "💎 " : "";
        $name   = $u->full_name ? $u->full_name : "کاربر";
        $coins  = number_format((float) $u->coins, 0);
        $userId = $u->user_id;

if($i < 3) {
            $responseText .= "$icon *$vipIcon$name | $userId* | $coins سکه\n\n";
} else {
            $responseText .= "$num. *$vipIcon$name | $userId* | $coins سکه\n\n";
}

}

    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'top_users']]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'leaderboard:invites') {
    $stmt = $pdo->prepare("
        SELECT u.user_id, u.full_name, u.is_vip, u.vip_expire, COUNT(r.id) as count 
        FROM users u 
        JOIN referrals r ON u.user_id = r.inviter_id 
        GROUP BY u.user_id 
        ORDER BY count DESC 
        LIMIT 10
    ");
    $stmt->execute();
    $topUsers = $stmt->fetchAll();
    $stmtCount = $pdo->prepare("SELECT COUNT(*) FROM referrals WHERE inviter_id = ?");
    $stmtCount->execute([$chat_id]);
    $myCount = $stmtCount->fetchColumn();
    $rank = 1;

if($myCount > 0) {
        $stmtRank = $pdo->prepare("
            SELECT COUNT(*) FROM (
                SELECT COUNT(*) as c FROM referrals GROUP BY inviter_id
            ) as counts WHERE c > ?
        ");
        $stmtRank->execute([$myCount]);
        $rank = $stmtRank->fetchColumn() + 1;
} else {
        $rank = "ثبت نشده";
}

    $responseText = "💌 *برترین کاربران (بیشترین دعوت)*\n\n";
    $medals = ['🥇', '🥈', '🥉'];

foreach($topUsers as $i => $u) {
        $num  = $i + 1;
        $icon = $medals[$i] ?? "🔹";
        $isVip   = $u->is_vip && strtotime($u->vip_expire) > time();
        $vipIcon = $isVip ? "💎 " : "";
        $name   = $u->full_name ? $u->full_name : "کاربر";
        $count  = number_format($u->count);
        $userId = $u->user_id;

if($i < 3) {
            $responseText .= "$icon *$vipIcon$name | $userId* | $count دعوت\n\n";
} else {
            $responseText .= "$num. *$vipIcon$name | $userId* | $count دعوت\n\n";
}

}

    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'top_users']]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'leaderboard:memberships') {
    $stmt = $pdo->prepare("SELECT u.user_id, u.full_name, u.is_vip, u.vip_expire, COUNT(m.id) as count 
                           FROM memberships m 
                           JOIN users u ON m.user_id = u.user_id 
                           WHERE m.status = 'active'
                           GROUP BY m.user_id 
                           ORDER BY count DESC 
                           LIMIT 10");
    $stmt->execute();
    $topUsers = $stmt->fetchAll();
    $stmtMyCount = $pdo->prepare("SELECT COUNT(*) FROM memberships WHERE user_id = ? AND status = 'active' AND DATE(joined_at) = CURDATE()");
    $stmtMyCount->execute([$chat_id]);
    $myCount = $stmtMyCount->fetchColumn();

if($myCount > 0) {
        $stmtRank = $pdo->prepare("SELECT COUNT(*) FROM (SELECT COUNT(*) as c FROM memberships WHERE status = 'active' AND DATE(joined_at) = CURDATE() GROUP BY user_id HAVING c > ?) as higher");
        $stmtRank->execute([$myCount]);
        $rank = $stmtRank->fetchColumn() + 1;
} else {
        $rank = "بدون عضویت امروز";
}

    $responseText = "📥 *برترین کاربران*\n\n";
    $medals = ['🥇', '🥈', '🥉'];

foreach($topUsers as $i => $u) {
        $num  = $i + 1;
        $icon = $medals[$i] ?? "🔹";
        $isVip   = $u->is_vip && strtotime($u->vip_expire) > time();
        $vipIcon = $isVip ? "💎 " : "";
        $name   = "[{$u->full_name}](uid:$u->user_id)" ?: "کاربر";
        $count  = number_format($u->count);
        $userId = "[{$u->user_id}](uid:$u->user_id)";

if($i < 3) {
            $responseText .= "$icon *$vipIcon$name | $userId* | $count\n\n";
} else {
            $responseText .= "$num. *$vipIcon$name | $userId* | $count\n\n";
}

}

    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'top_users']]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'lucky_spin_menu') {
    $cost         = 200;
    $responseText = "🎡 *چرخونه شانس*\n\n" .
        "🌟 گردونه شانس ربات! شانس خود را امتحان کنید و برنده جوایز نفیس شوید.\n\n" .
        "💸 هزینه هر بار چرخش: $cost سکه\n\n" .
        "🎁 لیست جوایز موجود در گردونه:\n" .
        "💰 ۲۰ سکه\n" .
        "💰 ۵۰ سکه\n" .
        "💰 ۱۰۰ سکه\n" .
        "💰 ۵۰۰ سکه\n" .
        "💰 ۱۰۰۰ سکه\n" .
        "💎 ۱ روز اشتراک ویژه\n" .
        "💎 ۳ روز اشتراک ویژه\n" .
        "💎 ۷ روز اشتراک ویژه\n" .
        "💎 ۳۰ روز اشتراک ویژه";
    $keyboard     = json_encode([
        "inline_keyboard" => [
            [
                ['text' => "🎲 چرخاندن گردونه (۲۰۰ سکه)", 'callback_data' => 'spin_the_wheel']
            ],
            [
                ['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']
            ]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($data == 'spin_the_wheel') {
    $cost = 200;
    $stmt = $pdo->prepare("SELECT coins, is_vip, vip_expire FROM users WHERE user_id = ?");
    $stmt->execute([$chat_id]);
    $user = $stmt->fetch();

if(!$user || $user->coins < $cost) {
        answerCallbackQuery($query_id, "❌ موجودی سکه شما کافی نیست!", true);
        $responseText = "❌ _موجودی ناکافی_\n\n" .
            "💰 برای چرخاندن گردونه شانس شما به حداقل ۲۰۰ سکه نیاز دارید.\n" .
            "📉 موجودی فعلی شما: " . number_format($user->coins) . " سکه\n\n" .
            "👇 برای افزایش موجودی از دکمه زیر استفاده کنید:";
        $keyboard     = json_encode([
            "inline_keyboard" => [
                [['text' => '💰 افزایش موجودی', 'callback_data' => 'add_funds_page']],
                [['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']]
            ]
        ]);
        editMessage($chat_id, $message_id, $responseText, $keyboard);
        die;
}

    $pdo->beginTransaction();
    try {
        $stmt = $pdo->prepare("UPDATE users SET coins = coins - ? WHERE user_id = ?");
        $stmt->execute([$cost, $chat_id]);
        $prizes = [
            ['name' => '۲۰ سکه', 'type' => 'coins', 'amount' => 20, 'weight' => 40],
            ['name' => '۵۰ سکه', 'type' => 'coins', 'amount' => 200, 'weight' => 30],
            ['name' => '۱ روز اشتراک ویژه', 'type' => 'vip_days', 'amount' => 1, 'weight' => 15],
            ['name' => '۱۰۰ سکه', 'type' => 'coins', 'amount' => 100, 'weight' => 10],
            ['name' => '۳ روز اشتراک ویژه', 'type' => 'vip_days', 'amount' => 3, 'weight' => 8],
            ['name' => '۵۰۰ سکه', 'type' => 'coins', 'amount' => 500, 'weight' => 5],
            ['name' => '۷ روز اشتراک ویژه', 'type' => 'vip_days', 'amount' => 7, 'weight' => 3],
            ['name' => '۱۰۰۰ سکه', 'type' => 'coins', 'amount' => 1000, 'weight' => 2],
            ['name' => '۳۰ روز اشتراک ویژه', 'type' => 'vip_days', 'amount' => 30, 'weight' => 1],
        ];
        $rand          = mt_rand(1, array_sum(array_column($prizes, 'weight')));
        $currentWeight = 0;
        $winningPrize  = null;

foreach($prizes as $prize) {
            $currentWeight += $prize['weight'];

if($rand <= $currentWeight) {
                $winningPrize = $prize;
                break;
}

}


if($winningPrize['type'] == 'coins') {
            $stmt = $pdo->prepare("UPDATE users SET coins = coins + ? WHERE user_id = ?");
            $stmt->execute([$winningPrize['amount'], $chat_id]);
} elseif ($winningPrize['type'] == 'vip_days') {
            $currentVipExpire = $user->vip_expire;
            $baseTime         = (strtotime($currentVipExpire) > time()) ? strtotime($currentVipExpire) : time();
            $newExpireDate    = date('Y-m-d H:i:s', $baseTime + ($winningPrize['amount'] * 86400));
            $stmt = $pdo->prepare("UPDATE users SET is_vip = 1, vip_expire = ? WHERE user_id = ?");
            $stmt->execute([$newExpireDate, $chat_id]);
}

        $stmt = $pdo->prepare("INSERT INTO `lucky_spin_history` (`user_id`, `prize_name`, `prize_type`, `prize_amount`, `cost`) VALUES (?, ?, ?, ?, ?)");
        $stmt->execute([$chat_id, $winningPrize['name'], $winningPrize['type'], $winningPrize['amount'], $cost]);
        $pdo->commit();
        $items = array_column($prizes, 'name');
        $spinText = "🎡 _گردونه در حال چرخش..._\n\n";
        editMessage($chat_id, $message_id, $spinText);

for($i = 0; $i < 8; $i++) {
            $randomItem = $items[array_rand($items)];
            $tempText   = "🎡 گردونه در حال چرخش...\n\n🎲 $randomItem";
            editMessage($chat_id, $message_id, $tempText);
            usleep(150000); 
}


for($i = 0; $i < 4; $i++) {
            $randomItem = $items[array_rand($items)];
            $tempText   = "🎡 گردونه در حال چرخش...\n\n🎲 $randomItem";
            editMessage($chat_id, $message_id, $tempText);
            usleep(400000);
}

        $finalText = "*🎉 تبریک! شما برنده شدید*\n\n" .
            "🎁 جایزه برنده شده: *" . $winningPrize['name'] . "*\n\n";

if($winningPrize['type'] == 'vip_days') {
            $finalText .= "✅ تبریک!\nاشتراک ویژه شما به مدت" . $winningPrize['amount'] . " روز دیگر تمدید شد.\n\n" .
                "🌟 لذت ببرید از امکانات ویژه!";
} else {
            $finalText .= "✅ مبلغ جایزه به موجودی سکه‌های شما اضافه گردید.";
}

        $keyboard = json_encode([
            "inline_keyboard" => [
                [
                    ['text' => "🎲 چرخش مجدد (200 سکه)", 'callback_data' => 'spin_the_wheel']
                ],
                [
                    ['text' => 'بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']
                ]
            ]
        ]);
        sleep(1); 
        editMessage($chat_id, $message_id, $finalText, $keyboard);
} catch (Exception $e) {

if($pdo->inTransaction()) {
            $pdo->rollBack();
}

        answerCallbackQuery($query_id, "❌ خطایی رخ داد.", true);
}

    die;
}