<?php
if($text == "🔍 جستجوی کاربر" && ($user->is_owner || $user->is_admin)) {
    setStep($chat_id, 'admin:search_user');
    $cancel_keyboard = json_encode([
        'keyboard' => [
            [['text' => '🔙 بازگشت به مدیریت']]
        ],
        'resize_keyboard' => true
    ]);
    sendMessage($chat_id, "🆔 لطفا شناسه عددی (User ID) کاربر مورد نظر را ارسال کنید:", $cancel_keyboard);
    die;
}


if($text == "💳 آخرین خرید ها" && ($user->is_owner || $user->is_admin)) {
    adminShowLatestPurchases($chat_id, 1, $pdo);
    die;
}


if($user->step == 'admin:search_user') {

if(!is_numeric($text)) {
        sendMessage($chat_id, "⚠️ شناسه کاربر باید عددی باشد.");
        die;
}

    $target_user_id = $text;
    adminShowUserInfo($chat_id, $target_user_id, $pdo);
    setStep($chat_id, 'none');
    die;
}


function adminShowUserInfo($chat_id, $target_user_id, $pdo, $message_id = null)
{
    $stmt = $pdo->prepare("SELECT * FROM `users` WHERE `user_id` = ?");
    $stmt->execute([$target_user_id]);
    $target_user = $stmt->fetch();

if(!$target_user) {
        sendMessage($chat_id, "⚠️ کاربری با این شناسه یافت نشد.");
        return;
}

    $stmtInv = $pdo->prepare("SELECT COUNT(*) FROM `referrals` WHERE `inviter_id` = ?");
    $stmtInv->execute([$target_user_id]);
    $invites_count = $stmtInv->fetchColumn();
    $username = $target_user->username ? "@" . $target_user->username : 'ندارد';
    $phone    = $target_user->phone ?? 'ثبت نشده';
    $fullname = $target_user->full_name ?? 'نامشخص';
    $response_text  = "🔎 *اطلاعات کامل کاربر*\n\n";
    $response_text .= "━━━━━━━━━━━━━━━━━━━━\n";
    $response_text .= "👤 *نام:* [$fullname](bale://user?id=$target_user->user_id)\n";
    $response_text .= "🆔 *شناسه:* $target_user->user_id\n";
    $response_text .= "🔹 *یوزرنیم:* $username\n";
    $response_text .= "📱 *شماره:* $phone\n";
    $response_text .= "📅 *عضویت:* " . jdate("H:i  Y/m/d", strtotime($target_user->created_at)) . "\n";
    $response_text .= "👥 *زیرمجموعه:* $invites_count نفر\n";
    $response_text .= "💰 *موجودی:* " . number_format($target_user->coins) . " سکه\n";
    $response_text .= "━━━━━━━━━━━━━━━━━━━━\n";
    $response_text .= "💼 *سطح:* " . ($target_user->is_admin ? '👑 ادمین' : '👤 کاربر') . "\n";
    $response_text .= "💢 *وضعیت:* " . ($target_user->is_blocked ? '🚫 مسدود' : '✅ آزاد') . "\n";
    $is_vip         = ($target_user->is_vip && strtotime($target_user->vip_expire) > time());
    $vip_status     = $is_vip ? "✅ فعال (تا " . jdate("Y/m/d", strtotime($target_user->vip_expire)) . ")" : "❌ غیرفعال";
    $response_text .= "🌟 *ویژه:* $vip_status\n";
    $upgradeText     = $is_vip ? '⬇️ تنزل به کاربر عادی' : '🌟 ارتقا به ویژه (۳۰ روزه)';
    $upgradeCallback = $is_vip ? 'downgrade_user-' . $target_user_id : 'upgrade_user-' . $target_user_id;
    $blockText     = $target_user->is_blocked ? '✅ آنبلاک' : '🚫 بلاک';
    $blockCallback = $target_user->is_blocked ? 'unblock_user-' . $target_user_id : 'block_user-' . $target_user_id;
    $keyboard = json_encode([
        'inline_keyboard' => [
            [
                ['text' => '➕ افزایش موجودی', 'callback_data' => 'inc_user_balance-' . $target_user_id],
                ['text' => '➖ کاهش موجودی', 'callback_data' => 'dec_user_balance-' . $target_user_id]
            ],
            [
                ['text' => '✉️ ارسال پیام به کاربر', 'callback_data' => 'send_message_to-' . $target_user_id]
            ],
            [
                ['text' => '📋 سفارشات کاربر', 'callback_data' => 'user_orders-' . $target_user_id],
                ['text' => '🛒 خریدهای کاربر', 'callback_data' => 'user_purchases-' . $target_user_id]
            ],
            [
                ['text' => $blockText, 'callback_data' => $blockCallback],
                ['text' => $upgradeText, 'callback_data' => $upgradeCallback]
            ],
            [
                ['text' => '🔄 بروزرسانی', 'callback_data' => 'refresh_user-' . $target_user_id]
            ]
        ]
    ]);

if($message_id) {
        editMessage($chat_id, $message_id, $response_text, $keyboard);
} else {
        sendMessage($chat_id, $response_text, $keyboard);
}

}


function adminUserOrders($chat_id, $target_user_id, $page, $message_id = null)
{
    global $pdo;
    $limit  = 1;
    $offset = ($page - 1) * $limit;
    $stmt = $pdo->prepare("SELECT COUNT(*) as total FROM `orders` WHERE `user_id` = ?");
    $stmt->execute([$target_user_id]);
    $total = $stmt->fetch()->total;

if($total == 0) {
        $responseText = "📭 کاربر هیچ سفارشی ثبت نکرده است.";
        $keyboard     = json_encode([
            "inline_keyboard" => [
                [['text' => '🔙 بازگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
            ]
        ]);

if($message_id) {
            editMessage($chat_id, $message_id, $responseText, $keyboard);
} else {
            sendMessage($chat_id, $responseText, $keyboard);
}

        return;
}

    $stmt = $pdo->prepare("SELECT * FROM `orders` WHERE `user_id` = ? ORDER BY `created_at` DESC LIMIT $limit OFFSET $offset");
    $stmt->execute([$target_user_id]);
    $orders = $stmt->fetchAll();
    $order = $orders[0];
    $progress = 0;

if($order->members_count > 0) {
        $progress = ($order->members_done / $order->members_count) * 100;
}

    $progressInt = intval($progress);
    $statusText  = "نامشخص";
    $statusEmoji = "⚪️";

if($order->status == 'running') {
        $statusText  = "فعال";
        $statusEmoji = "📌";
} elseif ($order->status == 'completed') {
        $statusText  = "تکمیل شده";
        $statusEmoji = "✅";
} elseif ($order->status == 'cancelled') {
        $statusText  = "لغو شده";
        $statusEmoji = "❌";
} elseif ($order->status == 'stopped') {
        $statusText  = "متوقف شده";
        $statusEmoji = "⛔️";
}

    $isBoosted = ($order->boost_manual > 0);
    $boostText = $isBoosted ? "🚀 (بوست شده)" : "";
    $remains = $order->members_count - $order->members_done;

if($remains < 0)
        $remains = 0;
    $responseText = "$statusEmoji *جزئیات سفارش #{$order->order_id}*\n" .
        "━━━━━━━━━━━━━━━━━━━━\n" .
        "📢 *کانال:* {$order->channel_name}\n" .
        "🔗 *لینک:* {$order->invite_link}\n\n" .
        "🔢 *تعداد درخواستی:* {$order->members_count} نفر\n" .
        "✅ *انجام شده:* {$order->members_done} نفر\n" .
        "⏳ *باقیمانده:* {$remains} نفر\n" .
        "📊 *پیشرفت:* $progressInt%\n\n" .
        "💰 *هزینه کل:* " . number_format($order->total_cost) . " سکه $boostText\n" .
        "📌 *وضعیت:* $statusText\n" .
        "📅 *تاریخ ثبت:* " . jdate("H:i  Y/m/d", strtotime($order->created_at));
    $keyboard = [];
    $row1     = [];

if($order->status == 'running') {
        $row1[] = ['text' => '⛔️ توقف سفارش', 'callback_data' => "admin_stop_order:{$order->order_id}:{$target_user_id}:{$page}"];
        $row1[] = ['text' => '❌ لغو سفارش', 'callback_data' => "admin_cancel_order:{$order->order_id}:{$target_user_id}:{$page}"];
} elseif ($order->status == 'stopped') {
        $row1[] = ['text' => '▶️ شروع مجدد', 'callback_data' => "admin_resume_order:{$order->order_id}:{$target_user_id}:{$page}"];
        $row1[] = ['text' => '❌ لغو سفارش', 'callback_data' => "admin_cancel_order:{$order->order_id}:{$target_user_id}:{$page}"];
}


if(!empty($row1)) {
        $keyboard[] = $row1;
}

    $row2 = [];

if(!$isBoosted && ($order->status == 'running' || $order->status == 'stopped')) {
        $row2[] = ['text' => '🚀 فعالسازی بوست (رایگان)', 'callback_data' => "admin_boost_order:{$order->order_id}:{$target_user_id}:{$page}"];
}


if($order->status == 'running' || $order->status == 'completed' || $order->status == 'stopped') {
        $row2[] = ['text' => '👥 بررسی ریزش و عضویت‌ها', 'callback_data' => "admin_check_order:{$order->order_id}:{$target_user_id}:{$page}"];
}


if(!empty($row2)) {
        $keyboard[] = $row2;
}

    $rowNav = [];

if($page > 1) {
        $rowNav[] = ['text' => '➡️ قبلی', 'callback_data' => "user_orders_page:{$target_user_id}:" . ($page - 1)];
}


if($page * $limit < $total) {
        $rowNav[] = ['text' => 'بعدی ⬅️', 'callback_data' => "user_orders_page:{$target_user_id}:" . ($page + 1)];
}


if(!empty($rowNav)) {
        $keyboard[] = $rowNav;
}

    $keyboard[] = [['text' => '🔙 بازگشت به اطلاعات کاربر', 'callback_data' => "refresh_user-{$target_user_id}"]];
    $markup = ["inline_keyboard" => $keyboard];

if($message_id) {
        editMessage($chat_id, $message_id, $responseText, json_encode($markup));
} else {
        sendMessage($chat_id, $responseText, json_encode($markup));
}

}


function adminShowLatestPurchases($chat_id, $page, $pdo, $message_id = null)
{
    $limit  = 5;
    $offset = ($page - 1) * $limit;
    $stmt  = $pdo->query("SELECT (SELECT COUNT(*) FROM `coin_transactions` WHERE `status` = 'success') + (SELECT COUNT(*) FROM `vip_transactions` WHERE `status` = 'success')");
    $total = intval($stmt->fetchColumn());

if($total == 0) {
        $msg = "📭 هیچ خریدی ثبت نشده است.";

if($message_id) {
            editMessage($chat_id, $message_id, $msg);
} else {
            sendMessage($chat_id, $msg);
}

        return;
}

    $query = "
        SELECT 'coin' AS type, c.user_id, c.order_number, c.amount_coins AS amount_coins, NULL AS vip_days,
               c.price_toman, c.created_at, u.full_name, u.username
        FROM `coin_transactions` c
        LEFT JOIN `users` u ON c.user_id = u.user_id
        WHERE c.status = 'success'
        UNION ALL
        SELECT 'vip' AS type, v.user_id, v.order_number, NULL AS amount_coins, v.vip_days AS vip_days,
               v.price_toman, v.created_at, u.full_name, u.username
        FROM `vip_transactions` v
        LEFT JOIN `users` u ON v.user_id = u.user_id
        WHERE v.status = 'success'
        ORDER BY created_at DESC
        LIMIT $limit OFFSET $offset
    ";
    $stmt  = $pdo->prepare($query);
    $stmt->execute();
    $rows = $stmt->fetchAll();
    $msg = "💳 *آخرین خرید ها*\n\n";

foreach($rows as $row) {
        $userName = $row->full_name ?? 'نامشخص';
        $username = $row->username ? "@" . $row->username : 'ندارد';
        $date     = jdate("H:i  Y/m/d", strtotime($row->created_at));

if($row->type === 'coin') {
            $msg .= "🪙 *خرید سکه*\n";
            $msg .= "👤 کاربر: [$userName](bale://user?id={$row->user_id}) ({$row->user_id})\n";
            $msg .= "🔹 یوزرنیم: $username\n";
            $msg .= "💰 مقدار: " . number_format($row->amount_coins) . " سکه\n";
} else {
            $msg .= "⭐️ *خرید اشتراک*\n";
            $msg .= "👤 کاربر: [$userName](bale://user?id={$row->user_id}) ({$row->user_id})\n";
            $msg .= "🔹 یوزرنیم: $username\n";
            $msg .= "⏳ مدت: " . intval($row->vip_days) . " روز\n";
}

        $msg .= "💵 مبلغ: " . number_format($row->price_toman) . " تومان\n";
        $msg .= "🧾 کد سفارش: {$row->order_number}\n";
        $msg .= "📅 تاریخ: $date\n";
        $msg .= "------------------------\n";
}

    $keyboard = [];
    $nav      = [];

if($page > 1) {
        $nav[] = ['text' => '➡️ قبلی', 'callback_data' => "admin_latest_purchases_page:" . ($page - 1)];
}


if($page * $limit < $total) {
        $nav[] = ['text' => 'بعدی ⬅️', 'callback_data' => "admin_latest_purchases_page:" . ($page + 1)];
}


if(!empty($nav)) {
        $keyboard[] = $nav;
}

    $keyboard[] = [['text' => '🔄 بروزرسانی', 'callback_data' => "admin_latest_purchases_refresh:$page"]];
    $markup = json_encode(['inline_keyboard' => $keyboard]);

if($message_id) {
        editMessage($chat_id, $message_id, $msg, $markup);
} else {
        sendMessage($chat_id, $msg, $markup);
}

}


if(!empty($data) && ($user->is_owner || $user->is_admin)) {

if(strpos($data, 'refresh_user-') === 0) {
        $target_user_id = explode('-', $data)[1];
        adminShowUserInfo($chat_id, $target_user_id, $pdo, $message_id);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'inc_user_balance-') === 0) {
        $target_user_id = explode('-', $data)[1];
        setStep($chat_id, 'admin:inc_balance:' . $target_user_id);
        $cancel_keyboard = json_encode(['keyboard' => [[['text' => '🔙 بازگشت به مدیریت']]], 'resize_keyboard' => true]);
        sendMessage($chat_id, "💰 لطفا مبلغی که می‌خواهید به موجودی کاربر اضافه کنید را وارد نمایید:", $cancel_keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'dec_user_balance-') === 0) {
        $target_user_id = explode('-', $data)[1];
        setStep($chat_id, 'admin:dec_balance:' . $target_user_id);
        $cancel_keyboard = json_encode(['keyboard' => [[['text' => '🔙 بازگشت به مدیریت']]], 'resize_keyboard' => true]);
        sendMessage($chat_id, "💰 لطفا مبلغی که می‌خواهید از موجودی کاربر کسر کنید را وارد نمایید:", $cancel_keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'send_message_to-') === 0) {
        $target_user_id = explode('-', $data)[1];
        setStep($chat_id, 'admin:send_msg:' . $target_user_id);
        $cancel_keyboard = json_encode(['keyboard' => [[['text' => '🔙 بازگشت به مدیریت']]], 'resize_keyboard' => true]);
        sendMessage($chat_id, "✉️ لطفا پیامی که می‌خواهید برای کاربر ارسال کنید را بنویسید:", $cancel_keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'block_user-') === 0) {
        $target_user_id = explode('-', $data)[1];
        $stmtCheck = $pdo->prepare("SELECT * FROM `users` WHERE `user_id` = ?");
        $stmtCheck->execute([$target_user_id]);
        $targetInfo = $stmtCheck->fetch();

if($targetInfo && ($targetInfo->is_admin || $targetInfo->is_owner)) {
            answerCallbackQuery($query_id, "⛔️ شما نمی‌توانید ادمین یا مالک ربات را مسدود کنید.", true);
            die;
}

        $stmt = $pdo->prepare("UPDATE `users` SET `is_blocked` = 1 WHERE `user_id` = ?");
        $stmt->execute([$target_user_id]);
        $back_keyboard = json_encode([
            'inline_keyboard' => [
                [['text' => '🔙 بازگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
            ]
        ]);
        $msg  = "🚫 *کاربر با موفقیت مسدود شد.*\n\n";
        $msg .= "👤 شناسه کاربر: $target_user_id\n";
        $msg .= "📅 زمان اقدام: " . jdate("H:i  Y/m/d");
        editMessage($chat_id, $message_id, $msg, $back_keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'unblock_user-') === 0) {
        $target_user_id = explode('-', $data)[1];
        $stmt           = $pdo->prepare("UPDATE `users` SET `is_blocked` = 0 WHERE `user_id` = ?");
        $stmt->execute([$target_user_id]);
        $back_keyboard  = json_encode([
            'inline_keyboard' => [
                [['text' => '🔙 بازگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
            ]
        ]);
        $msg            = "✅ *رفع مسدودیت انجام شد.*\n\n";
        $msg           .= "👤 شناسه کاربر: $target_user_id\n";
        $msg           .= "🔓 وضعیت جدید: آزاد\n";
        $msg           .= "📅 زمان اقدام: " . jdate("H:i  Y/m/d");
        editMessage($chat_id, $message_id, $msg, $back_keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'upgrade_user-') === 0) {
        $target_user_id = explode('-', $data)[1];
        $expireDate     = date('Y-m-d H:i:s', strtotime("+30 days"));
        $stmt           = $pdo->prepare("UPDATE `users` SET `is_vip` = 1, `vip_expire` = ? WHERE `user_id` = ?");
        $stmt->execute([$expireDate, $target_user_id]);
        $userMsg = "🌟 *تبریک! حساب کاربری شما توسط مدیریت به ویژه ارتقا یافت.*\n\n" .
            "💎 شما اکنون به تمام بخش‌های ویژه دسترسی دارید.\n" .
            "📅 تاریخ انقضا: " . jdate("H:i  Y/m/d", strtotime($expireDate));
        sendMessage($target_user_id, $userMsg);
        $back_keyboard  = json_encode([
            'inline_keyboard' => [
                [['text' => '🔙 بازگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
            ]
        ]);
        $msg            = "🌟 *ارتقا به حساب ویژه انجام شد.*\n\n";
        $msg           .= "👤 شناسه کاربر: $target_user_id\n";
        $msg           .= "🎁 نوع اشتراک: ۳۰ روزه (هدیه)\n";
        $msg           .= "📅 تاریخ انقضا: " . jdate("H:i  Y/m/d", strtotime($expireDate));
        editMessage($chat_id, $message_id, $msg, $back_keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'downgrade_user-') === 0) {
        $target_user_id = explode('-', $data)[1];
        $stmt           = $pdo->prepare("UPDATE `users` SET `is_vip` = 0, `vip_expire` = NULL WHERE `user_id` = ?");
        $stmt->execute([$target_user_id]);
        $back_keyboard  = json_encode([
            'inline_keyboard' => [
                [['text' => '🔙 بازگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
            ]
        ]);
        $msg            = "⬇️ *تنزل حساب انجام شد.*\n\n";
        $msg           .= "👤 شناسه کاربر: $target_user_id\n";
        $msg           .= "👤 وضعیت جدید: کاربر عادی\n";
        $msg           .= "📅 زمان اقدام: " . jdate("H:i  Y/m/d");
        editMessage($chat_id, $message_id, $msg, $back_keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'user_orders-') === 0) {
        $target_user_id = explode('-', $data)[1];
        adminUserOrders($chat_id, $target_user_id, 1, $message_id);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'user_orders_page:') === 0) {
        $parts          = explode(':', $data);
        $target_user_id = $parts[1];
        $page           = intval($parts[2]);
        adminUserOrders($chat_id, $target_user_id, $page, $message_id);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'admin_stop_order:') === 0) {
        $parts          = explode(':', $data);
        $order_id       = $parts[1];
        $target_user_id = $parts[2];
        $page           = intval($parts[3]);
        $stmt = $pdo->prepare("UPDATE `orders` SET `status` = 'stopped' WHERE `order_id` = ?");
        $stmt->execute([$order_id]);
        answerCallbackQuery($query_id, "✅ سفارش متوقف شد.", true);
        adminUserOrders($chat_id, $target_user_id, $page, $message_id);
        die;
}


if(strpos($data, 'admin_resume_order:') === 0) {
        $parts          = explode(':', $data);
        $order_id       = $parts[1];
        $target_user_id = $parts[2];
        $page           = intval($parts[3]);
        $stmt = $pdo->prepare("UPDATE `orders` SET `status` = 'running' WHERE `order_id` = ?");
        $stmt->execute([$order_id]);
        answerCallbackQuery($query_id, "✅ سفارش مجدداً فعال شد.", true);
        adminUserOrders($chat_id, $target_user_id, $page, $message_id);
        die;
}


if(strpos($data, 'admin_boost_order:') === 0) {
        $parts          = explode(':', $data);
        $order_id       = $parts[1];
        $target_user_id = $parts[2];
        $page           = intval($parts[3]);
        $stmt = $pdo->prepare("UPDATE `orders` SET `boost_manual` = 1 WHERE `order_id` = ?");
        $stmt->execute([$order_id]);
        answerCallbackQuery($query_id, "✅ سفارش بوست شد.", true);
        adminUserOrders($chat_id, $target_user_id, $page, $message_id);
        die;
}


if(strpos($data, 'admin_cancel_order:') === 0) {
        $parts          = explode(':', $data);
        $order_id       = $parts[1];
        $target_user_id = $parts[2];
        $page           = intval($parts[3]);
        $stmt = $pdo->prepare("SELECT * FROM `orders` WHERE `order_id` = ?");
        $stmt->execute([$order_id]);
        $order = $stmt->fetch();

if($order && $order->status != 'cancelled' && $order->status != 'completed') {
            $remaining = $order->members_count - $order->members_done;

if($remaining < 0)
                $remaining = 0;
            $refundAmount = $remaining * $order->coin_per_member;
            $stmt = $pdo->prepare("UPDATE `users` SET `coins` = `coins` + ? WHERE `user_id` = ?");
            $stmt->execute([$refundAmount, $target_user_id]);
            $stmt = $pdo->prepare("UPDATE `orders` SET `status` = 'cancelled', `finished_at` = NOW() WHERE `order_id` = ?");
            $stmt->execute([$order_id]);
            $msg = "❌ *سفارش شما توسط مدیریت لغو شد.*\n\n" .
                "🔖 *سفارش #{$order_id}*\n" .
                "💰 *مبلغ بازگشتی:* " . number_format($refundAmount) . " سکه";
            sendMessage($target_user_id, $msg);
            answerCallbackQuery($query_id, "✅ سفارش لغو شد و مبلغ به کاربر برگشت داده شد.", true);
            adminUserOrders($chat_id, $target_user_id, $page, $message_id);
} else {
            answerCallbackQuery($query_id, "❌ امکان لغو این سفارش وجود ندارد.", true);
}

        die;
}


if(strpos($data, 'admin_check_order:') === 0) {
        $parts          = explode(':', $data);
        $order_id       = $parts[1];
        $target_user_id = $parts[2];
        $page           = intval($parts[3]);
        $stmt = $pdo->prepare("SELECT * FROM `orders` WHERE `order_id` = ?");
        $stmt->execute([$order_id]);
        $order = $stmt->fetch();

if(!$order) {
            answerCallbackQuery($query_id, "❌ سفارش یافت نشد.", true);
            die;
}

        $stmt = $pdo->prepare("SELECT * FROM `memberships` WHERE `order_id` = ?");
        $stmt->execute([$order_id]);
        $memberships  = $stmt->fetchAll();
        $totalMembers = count($memberships);

if($totalMembers == 0) {
            answerCallbackQuery($query_id, "ℹ️ هیچ کاربری هنوز عضو نشده است.", true);
            die;
}

        editMessage($chat_id, $message_id, "⏳ در حال بررسی وضعیت اعضا...");
        $channelIdentity = null;
        $stmtCh          = $pdo->prepare("SELECT * FROM `channels` WHERE `channel_name` = ? OR `invite_link` = ? LIMIT 1");
        $stmtCh->execute([$order->channel_name, $order->invite_link]);
        $channelInfo = $stmtCh->fetch();

if($channelInfo) {
            $channelIdentity = $channelInfo->channel_username ? "@" . $channelInfo->channel_username : null;
}


if(!$channelIdentity && preg_match('/ble\.ir\/([a-zA-Z0-9_]+)/', $order->invite_link, $matches)) {

if(strpos($matches[1], '+') === false) {
                $channelIdentity = "@" . $matches[1];
}

}


if(!$channelIdentity) {
            answerCallbackQuery($query_id, "❌ امکان بررسی کانال وجود ندارد (لینک نامعتبر).", true);
            adminUserOrders($chat_id, $target_user_id, $page, $message_id);
            die;
}

        $processed     = 0;
        $dropped       = 0;
        $refundedTotal = 0;
        $joined        = 0;
        $lastUpdate    = time();

foreach($memberships as $member) {
            $processed++;

if($member->status == 'active') {
                $isMember = false;
                $check    = getChatMember(strtolower($channelIdentity), $member->user_id);

if(isset($check->result)) {
                    $status = $check->result->status;

if(in_array($status, ['member', 'administrator', 'creator'])) {
                        $isMember = true;
                        $joined++;
}

}


if(!$isMember) {
                    $joinTime = strtotime($member->joined_at);
                    $timeDiff = time() - $joinTime;

if($timeDiff < 86400) {
                        $dropped++;
                        $refundAmount = $order->coin_per_member;
                        $stmtRef = $pdo->prepare("UPDATE `users` SET `coins` = `coins` + ? WHERE `user_id` = ?");
                        $stmtRef->execute([$refundAmount, $target_user_id]);
                        $penaltyAmount = calculateReward($order);
                        $stmtDed       = $pdo->prepare("UPDATE `users` SET `coins` = `coins` - ? WHERE `user_id` = ?");
                        $stmtDed->execute([$penaltyAmount, $member->user_id]);
                        $stmtUpd = $pdo->prepare("UPDATE `memberships` SET `status` = 'left_refunded', `left_at` = NOW(), `penalty_applied` = 1 WHERE `id` = ?");
                        $stmtUpd->execute([$member->id]);
                        $refundedTotal += $refundAmount;
} else {
                        $stmtUpd = $pdo->prepare("UPDATE `memberships` SET `status` = 'left_expired', `left_at` = NOW() WHERE `id` = ?");
                        $stmtUpd->execute([$member->id]);
}

}

} else {

if($member->status == 'left_refunded') {
                    $dropped++;
}

}


if($processed % 5 == 0 || time() - $lastUpdate > 1) {
                $percent    = intval(($processed / $totalMembers) * 100);
                $updateText = "⏳ در حال بررسی وضعیت اعضا...\n\n" .
                    "📊 وضعیت: $processed/$totalMembers ($percent%)\n" .
                    "📉 ریزش یافت شده: $dropped نفر";
                editMessage($chat_id, $message_id, $updateText);
                $lastUpdate = time();
}

}

        $msg = "✅ *بررسی تکمیل شد*\n\n" .
            "👥 کل بررسی: $totalMembers نفر\n" .
            "✅ عضو مانده: $joined نفر\n" .
            "📉 تعداد ریزش (زیر ۲۴ ساعت): $dropped نفر\n" .
            "💰 مبلغ بازگشتی به کاربر: " . intval($refundedTotal) . " سکه";
        adminUserOrders($chat_id, $target_user_id, $page, $message_id);
        sendMessage($chat_id, $msg);
        die;
}


if(strpos($data, 'user_purchases-') === 0) {
        $target_user_id = explode('-', $data)[1];
        $responseText = "🛒 *خریدهای کاربر*\n\nلطفاً نوع خرید را انتخاب کنید:";
        $keyboard     = json_encode([
            'inline_keyboard' => [
                [
                    ['text' => '💎 خرید سکه', 'callback_data' => "admin_coin_history:$target_user_id:1"],
                    ['text' => '⭐️ خرید اشتراک', 'callback_data' => "admin_vip_history:$target_user_id:1"]
                ],
                [
                    ['text' => '🔙 بازگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]
                ]
            ]
        ]);
        editMessage($chat_id, $message_id, $responseText, $keyboard);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'admin_latest_purchases_page:') === 0) {
        $page = intval(explode(':', $data)[1]);
        adminShowLatestPurchases($chat_id, $page, $pdo, $message_id);
        answerCallbackQuery($query_id);
        die;
}


if(strpos($data, 'admin_latest_purchases_refresh:') === 0) {
        $page = intval(explode(':', $data)[1]);
        adminShowLatestPurchases($chat_id, $page, $pdo, $message_id);
        answerCallbackQuery($query_id, "بروزرسانی شد");
        die;
}


if(strpos($data, 'admin_coin_history:') === 0) {
        $parts          = explode(':', $data);
        $target_user_id = $parts[1];
        $page           = intval($parts[2]);
        $limit  = 5;
        $offset = ($page - 1) * $limit;
        $stmt = $pdo->prepare("SELECT * FROM `coin_transactions` WHERE `user_id` = ? AND `status` = 'success' ORDER BY `created_at` DESC LIMIT $limit OFFSET $offset");
        $stmt->execute([$target_user_id]);
        $transactions = $stmt->fetchAll();
        $stmtCount = $pdo->prepare("SELECT COUNT(*) FROM `coin_transactions` WHERE `user_id` = ? AND `status` = 'success'");
        $stmtCount->execute([$target_user_id]);
        $total = $stmtCount->fetchColumn();
        $msg = "💎 *تاریخچه خرید سکه کاربر*\n\n";

if(empty($transactions)) {
            $msg .= "هیچ خریدی یافت نشد.";
} else {

foreach($transactions as $t) {
                $msg .= "🔢 شناسه تراکنش: {$t->id}\n";
                $msg .= "💰 مقدار: " . number_format($t->amount_coins) . " سکه\n";
                $msg .= "💵 مبلغ: " . number_format($t->price_toman) . " تومان\n";
                $msg .= "📅 تاریخ: " . jdate("H:i  Y/m/d", strtotime($t->created_at)) . "\n";
                $msg .= "------------------------\n";
}

}

        $keyboard = [];
        $nav      = [];

if($page > 1)
            $nav[] = ['text' => '➡️ قبلی', 'callback_data' => "admin_coin_history:$target_user_id:" . ($page - 1)];

if($page * $limit < $total)
            $nav[] = ['text' => 'بعدی ⬅️', 'callback_data' => "admin_coin_history:$target_user_id:" . ($page + 1)];

if(!empty($nav))
            $keyboard[] = $nav;
        $keyboard[] = [['text' => '🔙 بازگشت', 'callback_data' => 'user_purchases-' . $target_user_id]];
        editMessage($chat_id, $message_id, $msg, json_encode(['inline_keyboard' => $keyboard]));
        die;
}


if(strpos($data, 'admin_vip_history:') === 0) {
        $parts          = explode(':', $data);
        $target_user_id = $parts[1];
        $page           = intval($parts[2]);
        $limit  = 5;
        $offset = ($page - 1) * $limit;
        $stmt = $pdo->prepare("SELECT * FROM `vip_transactions` WHERE `user_id` = ? AND `status` = 'success' ORDER BY `created_at` DESC LIMIT $limit OFFSET $offset");
        $stmt->execute([$target_user_id]);
        $transactions = $stmt->fetchAll();
        $stmtCount = $pdo->prepare("SELECT COUNT(*) FROM `vip_transactions` WHERE `user_id` = ? AND `status` = 'success'");
        $stmtCount->execute([$target_user_id]);
        $total = $stmtCount->fetchColumn();
        $msg = "⭐️ *تاریخچه خرید اشتراک کاربر*\n\n";

if(empty($transactions)) {
            $msg .= "هیچ اشتراکی یافت نشد.";
} else {

foreach($transactions as $t) {
                $msg .= "🔢 شناسه تراکنش: {$t->id}\n";
                $msg .= "🌟 اشتراک: " . $t->vip_days . " روزه\n";
                $msg .= "💵 مبلغ: " . number_format($t->price_toman) . " تومان\n";
                $msg .= "📅 تاریخ: " . jdate("H:i  Y/m/d", strtotime($t->created_at)) . "\n";
                $msg .= "------------------------\n";
}

}

        $keyboard = [];
        $nav      = [];

if($page > 1)
            $nav[] = ['text' => '➡️ قبلی', 'callback_data' => "admin_vip_history:$target_user_id:" . ($page - 1)];

if($page * $limit < $total)
            $nav[] = ['text' => 'بعدی ⬅️', 'callback_data' => "admin_vip_history:$target_user_id:" . ($page + 1)];

if(!empty($nav))
            $keyboard[] = $nav;
        $keyboard[] = [['text' => '🔙 بازگشت', 'callback_data' => 'user_purchases-' . $target_user_id]];
        editMessage($chat_id, $message_id, $msg, json_encode(['inline_keyboard' => $keyboard]));
        die;
}

}


if(strpos($user->step, 'admin:inc_balance:') === 0) {

if($text == '🔙 بازگشت به مدیریت') {
        setStep($chat_id, 'none');
        sendMessage($chat_id, "به منوی مدیریت بازگشتید.", $admin_keyboard);
        die;
}

    $target_user_id = explode(':', $user->step)[2];

if(!is_numeric($text)) {
        sendMessage($chat_id, "⚠️ مبلغ باید عددی باشد.");
        die;
}

    $amount = intval($text);
    $stmt = $pdo->prepare("SELECT coins FROM users WHERE user_id = ?");
    $stmt->execute([$target_user_id]);
    $old_balance = $stmt->fetchColumn();
    $stmt = $pdo->prepare("UPDATE users SET coins = coins + ? WHERE user_id = ?");
    $stmt->execute([$amount, $target_user_id]);
    $new_balance = $old_balance + $amount;
    sendMessage($target_user_id, "💰 *موجودی حساب شما توسط مدیریت افزایش یافت.*\n\n➕ مقدار افزایش: " . number_format($amount) . " سکه\n💵 موجودی فعلی: " . number_format($new_balance) . " سکه");
    $msg  = "✅ موجودی کاربر با موفقیت افزایش یافت.\n\n";
    $msg .= "💰 موجودی قبلی: " . number_format($old_balance) . "\n";
    $msg .= "💰 موجودی جدید: " . number_format($new_balance);
    $back_keyboard = json_encode([
        'inline_keyboard' => [
            [['text' => '🔙 برگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
        ]
    ]);
    sendMessage($chat_id, $msg, $back_keyboard);
    setStep($chat_id, 'none');
    adminShowUserInfo($chat_id, $target_user_id, $pdo);
    die;
}


if(strpos($user->step, 'admin:dec_balance:') === 0) {
    $target_user_id = explode(':', $user->step)[2];

if(!is_numeric($text)) {
        sendMessage($chat_id, "⚠️ مبلغ باید عددی باشد.");
        die;
}

    $amount = intval($text);
    $stmt = $pdo->prepare("SELECT coins FROM users WHERE user_id = ?");
    $stmt->execute([$target_user_id]);
    $old_balance = $stmt->fetchColumn();
    $stmt = $pdo->prepare("UPDATE users SET coins = coins - ? WHERE user_id = ?");
    $stmt->execute([$amount, $target_user_id]);
    $new_balance = $old_balance - $amount;
    sendMessage($target_user_id, "💰 *موجودی حساب شما توسط مدیریت کاهش یافت.*\n\n➖ مقدار کاهش: " . number_format($amount) . " سکه\n💵 موجودی فعلی: " . number_format($new_balance) . " سکه");
    $msg  = "✅ موجودی کاربر با موفقیت کاهش یافت.\n\n";
    $msg .= "💰 موجودی قبلی: " . number_format($old_balance) . "\n";
    $msg .= "💰 موجودی جدید: " . number_format($new_balance);
    $back_keyboard = json_encode([
        'inline_keyboard' => [
            [['text' => '🔙 برگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
        ]
    ]);
    sendMessage($chat_id, $msg, $back_keyboard);
    setStep($chat_id, 'none');
    adminShowUserInfo($chat_id, $target_user_id, $pdo);
    die;
}


if(strpos($user->step, 'admin:send_msg:') === 0) {

if($text == '🔙 بازگشت به مدیریت') {
        setStep($chat_id, 'none');
        sendMessage($chat_id, "به منوی مدیریت بازگشتید.", $admin_keyboard);
        die;
}

    $target_user_id = explode(':', $user->step)[2];
    $admin_msg = "📩 *پیام جدید از طرف پشتیبانی:*\n\n" . $text;
    sendMessage($target_user_id, $admin_msg);
    $back_keyboard = json_encode([
        'inline_keyboard' => [
            [['text' => '🔙 برگشت به اطلاعات کاربر', 'callback_data' => 'refresh_user-' . $target_user_id]]
        ]
    ]);
    $msg  = "✅ *پیام با موفقیت ارسال شد.*\n\n";
    $msg .= "👤 گیرنده: $target_user_id\n";
    $msg .= "📝 متن پیام:\n$text\n";
    $msg .= "📅 زمان ارسال: " . jdate("H:i  Y/m/d");
    sendMessage($chat_id, $msg, $back_keyboard);
    setStep($chat_id, 'none');
    die;
}

