prepare("SELECT * FROM `users` WHERE `telegram_id` = ?"); $checkUser->execute([$from_id]); $adminUser = $checkUser->fetch(); if (!$adminUser || !isAdmin($adminUser->login_username ?? "")) { answerCallback($callback_query->id, "⚠️ دسترسی غیرمجاز!", true); die; } $stmt = $pdo->prepare("SELECT * FROM `withdraw_requests` WHERE `id` = ?"); $stmt->execute([$requestId]); $request = $stmt->fetch(); if (!$request) { answerCallback($callback_query->id, "❌ درخواست یافت نشد!", true); die; } if ($request->status != "pending") { answerCallback($callback_query->id, "⚠️ این درخواست قبلاً پردازش شده است.", true); die; } $pdo->prepare("UPDATE `withdraw_requests` SET `status` = 'approved' WHERE `id` = ?") ->execute([$requestId]); $pdo->prepare("UPDATE `accounts` SET `current_profit` = `current_profit` - ? WHERE `username` = ?") ->execute([$request->amount, $request->username]); $amountFormatted = number_format($request->amount); answerCallback($callback_query->id, "✅ درخواست تایید و واریز شد.", false); // دریافت اطلاعات کامل حساب کاربر $stmtAccount = $pdo->prepare("SELECT `full_name`, `base_investment`, `current_profit` FROM `accounts` WHERE `username` = ?"); $stmtAccount->execute([$request->username]); $accountInfo = $stmtAccount->fetch(); // دریافت اطلاعات کارت $stmtCard = $pdo->prepare("SELECT `full_name`, `card_number` FROM `cards` WHERE `username` = ? ORDER BY `id` DESC LIMIT 1"); $stmtCard->execute([$request->username]); $cardInfo = $stmtCard->fetch(); // شمارش تراکنش‌های قبلی $stmtWithdraws = $pdo->prepare("SELECT COUNT(*) as total, SUM(`amount`) as total_amount FROM `withdraw_requests` WHERE `username` = ? AND `status` = 'approved'"); $stmtWithdraws->execute([$request->username]); $withdrawStats = $stmtWithdraws->fetch(); $totalWithdraws = $withdrawStats->total ?? 0; $totalWithdrawAmount = $withdrawStats->total_amount ?? 0; $fullName = $accountInfo->full_name ?? $request->username; $baseInvestment = number_format($accountInfo->base_investment ?? 0); $currentProfit = number_format($accountInfo->current_profit ?? 0); $cardNumber = $cardInfo ? substr($cardInfo->card_number, -4) : "—"; $cardOwner = $cardInfo->full_name ?? "—"; $adminResponseText = "✅ *درخواست تایید و واریز شد*\n\n" . "📋 *اطلاعات کاربر*\n\n" . "👤 نام: *{$fullName}*\n" . "📱 نام کاربری: `{$request->username}`\n" . "🆔 تلگرام: `{$request->telegram_id}`\n\n\n" . "💼 *وضعیت مالی کاربر*\n\n" . "💰 سرمایه پایه: *{$baseInvestment}* تومان\n" . "📈 سود فعلی: *{$currentProfit}* تومان\n\n\n" . "📊 *آمار برداشت‌های کاربر*\n\n" . "🔹 تعداد موفق: *{$totalWithdraws}*\n" . "💰 جمع مبالغ: *" . number_format($totalWithdrawAmount) . "* تومان\n\n\n" . "💰 *جزئیات درخواست*\n\n" . "🔹 کد: `{$request->tracking_code}`\n" . "💰 مبلغ: *{$amountFormatted}* تومان\n" . "💳 کارت: `****{$cardNumber}`\n" . "👤 صاحب کارت: *{$cardOwner}*\n" . "📊 وضعیت: ✅ تایید شده و واریز شده"; editMessage($chat_id, $message_id, $adminResponseText); // دریافت اطلاعات کامل کارت $stmtCard = $pdo->prepare("SELECT `full_name`, `card_number` FROM `cards` WHERE `username` = ? ORDER BY `id` DESC LIMIT 1"); $stmtCard->execute([$request->username]); $cardInfo = $stmtCard->fetch(); $cardNumber = $cardInfo ? $cardInfo->card_number : "—"; $cardOwner = $cardInfo ? $cardInfo->full_name : "—"; $cardDisplay = $cardInfo ? substr($cardInfo->card_number, -4) : "—"; $timestamp = strtotime($request->created_at ?? date('Y-m-d H:i:s')); $requestTime = jdate('H:i:s', $timestamp, tr_num: 'en'); $requestDateOnly = jdate('Y/m/d', $timestamp, tr_num: 'en'); $approveTimestamp = time(); $approveTime = jdate('H:i:s', $approveTimestamp, tr_num: 'en'); $approveDateOnly = jdate('Y/m/d', $approveTimestamp, tr_num: 'en'); $userMessage = "🎉 *درخواست برداشت شما تایید شد*\n\n" . "📋 *جزئیات کامل تراکنش*\n\n" . "🔹 کد پیگیری: `{$request->tracking_code}`\n" . "💰 مبلغ: *{$amountFormatted}* تومان\n" . "✅ وضعیت: تایید شده و واریز شده\n\n" . "💳 *اطلاعات کارت واریزی*\n\n" . "👤 صاحب کارت: *{$cardOwner}*\n" . "🔹 ۴ رقم آخر: `****{$cardDisplay}`\n\n" . "📅 *زمان‌بندی*\n\n" . "📤 درخواست: {$requestTime} - {$requestDateOnly}\n" . "✅ تایید: {$approveTime} - {$approveDateOnly}\n\n" . "💡 مبلغ به حساب کارت انتخابی شما واریز شده است.\n\n" . "✅ در صورت عدم دریافت مبلغ، با پشتیبانی تماس حاصل فرمایید."; // دریافت کیبورد عادی کاربر $stmtUser = $pdo->prepare("SELECT u.login_username, a.is_admin FROM users u INNER JOIN accounts a ON u.login_username = a.username WHERE u.telegram_id = ?"); $stmtUser->execute([$request->telegram_id]); $userInfo = $stmtUser->fetch(); if ($userInfo) { $userKeyboard = ($userInfo->is_admin == 1) ? $adminMainKeyboard : $userMainKeyboard; } else { $userKeyboard = $userMainKeyboard; } sendMessage($request->telegram_id, $userMessage, $userKeyboard); die; } if (isset($callback_query) && isset($data) && strpos($data, "admin_withdraw_reject:") === 0) { $parts = explode(":", $data); $requestId = (int) $parts[1]; $checkUser = $pdo->prepare("SELECT * FROM `users` WHERE `telegram_id` = ?"); $checkUser->execute([$from_id]); $adminUser = $checkUser->fetch(); if (!$adminUser || !isAdmin($adminUser->login_username ?? "")) { answerCallback($callback_query->id, "⚠️ دسترسی غیرمجاز!", true); die; } $stmt = $pdo->prepare("SELECT * FROM `withdraw_requests` WHERE `id` = ?"); $stmt->execute([$requestId]); $request = $stmt->fetch(); if (!$request) { answerCallback($callback_query->id, "❌ درخواست یافت نشد!", true); die; } if ($request->status != "pending") { answerCallback($callback_query->id, "⚠️ این درخواست قبلاً پردازش شده است.", true); die; } $pdo->prepare("UPDATE `withdraw_requests` SET `status` = 'rejected' WHERE `id` = ?") ->execute([$requestId]); $amountFormatted = number_format($request->amount); answerCallback($callback_query->id, "❌ درخواست رد شد.", false); // دریافت اطلاعات کامل حساب کاربر $stmtAccount = $pdo->prepare("SELECT `full_name`, `base_investment`, `current_profit` FROM `accounts` WHERE `username` = ?"); $stmtAccount->execute([$request->username]); $accountInfo = $stmtAccount->fetch(); // دریافت اطلاعات کارت $stmtCard = $pdo->prepare("SELECT `full_name`, `card_number` FROM `cards` WHERE `username` = ? ORDER BY `id` DESC LIMIT 1"); $stmtCard->execute([$request->username]); $cardInfo = $stmtCard->fetch(); $fullName = $accountInfo->full_name ?? $request->username; $baseInvestment = number_format($accountInfo->base_investment ?? 0); $currentProfit = number_format($accountInfo->current_profit ?? 0); $cardNumber = $cardInfo ? substr($cardInfo->card_number, -4) : "—"; $cardOwner = $cardInfo->full_name ?? "—"; $adminResponseText = "❌ *درخواست رد شد*\n\n" . "📋 *اطلاعات کاربر*\n\n" . "👤 نام: *{$fullName}*\n" . "📱 نام کاربری: `{$request->username}`\n" . "🆔 تلگرام آیدی: `{$request->telegram_id}`\n\n" . "💼 *وضعیت مالی کاربر*\n\n" . "💰 سرمایه پایه: *{$baseInvestment}* تومان\n" . "📈 سود فعلی: *{$currentProfit}* تومان\n\n" . "💰 *جزئیات درخواست*\n\n" . "🔹 کد پیگیری: `{$request->tracking_code}`\n" . "💰 مبلغ: *{$amountFormatted}* تومان\n" . "💳 کارت: `****{$cardNumber}`\n" . "👤 صاحب کارت: *{$cardOwner}*\n" . "📊 وضعیت: ❌ رد شده"; editMessage($chat_id, $message_id, $adminResponseText); // دریافت اطلاعات کامل کارت $stmtCard = $pdo->prepare("SELECT `full_name`, `card_number` FROM `cards` WHERE `username` = ? ORDER BY `id` DESC LIMIT 1"); $stmtCard->execute([$request->username]); $cardInfo = $stmtCard->fetch(); $cardNumber = $cardInfo ? $cardInfo->card_number : "—"; $cardOwner = $cardInfo ? $cardInfo->full_name : "—"; $cardDisplay = $cardInfo ? substr($cardInfo->card_number, -4) : "—"; $timestamp = strtotime($request->created_at ?? date('Y-m-d H:i:s')); $requestTime = jdate('H:i:s', $timestamp, tr_num: 'en'); $requestDateOnly = jdate('Y/m/d', $timestamp, tr_num: 'en'); $rejectTimestamp = time(); $rejectTime = jdate('H:i:s', $rejectTimestamp, tr_num: 'en'); $rejectDateOnly = jdate('Y/m/d', $rejectTimestamp, tr_num: 'en'); $userMessage = "❌ *درخواست برداشت شما رد شد*\n\n" . "📋 *جزئیات کامل درخواست*\n\n" . "🔹 کد پیگیری: `{$request->tracking_code}`\n" . "💰 مبلغ درخواستی: *{$amountFormatted}* تومان\n" . "❌ وضعیت: رد شده\n\n" . "💳 *اطلاعات کارت درخواستی*\n\n" . "👤 صاحب کارت: *{$cardOwner}*\n" . "🔹 ۴ رقم آخر: `****{$cardDisplay}`\n\n" . "📅 *زمان‌بندی*\n\n" . "📤 درخواست: {$requestTime} - {$requestDateOnly}\n" . "❌ رد: {$rejectTime} - {$rejectDateOnly}\n\n" . "💡 در صورت نیاز، می‌توانید مجدداً درخواست برداشت جدید ثبت نمایید.\n\n" . "📞 برای اطلاعات بیشتر در مورد دلیل رد درخواست، با پشتیبانی تماس حاصل فرمایید."; // دریافت کیبورد عادی کاربر $stmtUser = $pdo->prepare("SELECT u.login_username, a.is_admin FROM users u INNER JOIN accounts a ON u.login_username = a.username WHERE u.telegram_id = ?"); $stmtUser->execute([$request->telegram_id]); $userInfo = $stmtUser->fetch(); if ($userInfo) { $userKeyboard = ($userInfo->is_admin == 1) ? $adminMainKeyboard : $userMainKeyboard; } else { $userKeyboard = $userMainKeyboard; } sendMessage($request->telegram_id, $userMessage, $userKeyboard); die; }