<?php
if($text == '🏪 فروشگاه سکه') {
    $responseText = "لطفا یکی از گزینه ها زیر را انتخاب کنید:";
    $keyboard = json_encode([
        "keyboard" => [
            [["text" => "🌟 ارتقا به ویژه"], ["text" => "💰 خرید سکه"]],
            [["text" => "🔙 بازگشت به منو اصلی"]]
        ]
    ]);
    sendMessage($from_id, $responseText, $keyboard);
    die;
}


if($text == "💰 خرید سکه") {
    $balance            = number_format((float) $user->coins, 0);
    $minBuy             = settings('min_coin_buy', 25);
    $coinPrice          = settings('coin_price', 250);
    $coinPriceFormatted = number_format($coinPrice);
    $responseText       = "🏪 *فروشگاه سکه*\n\n" .
        "موجودی فعلی شما: *$balance* سکه\n\n" .
        "💵 لطفاً تعداد سکه مورد نظر برای خرید را وارد کنید:\n\n" .
        "🔸 حداقل خرید: $minBuy سکه\n" .
        "🔸 قیمت هر سکه: $coinPriceFormatted تومان";
    setStep($chat_id, 'buy_coins_amount');
    $keyboard = json_encode([
        "keyboard" => [
            [["text" => "🔙 بازگشت به منو اصلی"]]
        ],
        "resize_keyboard" => true
    ]);
    sendMessage($chat_id, $responseText, $keyboard);
    die;
}


if($user->step == 'buy_coins_amount') {
    $minBuy = settings('min_coin_buy', 25);

if(!is_numeric($text)) {
        $backKeyboard = json_encode([
            "inline_keyboard" => [
                [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => 'cancel_payment']]
            ]
        ]);
        sendMessage($chat_id, "🔢 *فرمت نادرست*\n\nلطفاً برای تعداد سکه فقط از اعداد استفاده کنید.", $backKeyboard);
        die;
}


if(intval($text) < $minBuy) {
        $backKeyboard = json_encode([
            "inline_keyboard" => [
                [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => 'cancel_payment']]
            ]
        ]);
        $responseText = "📉 *تعداد کم*\n\n" .
            "حداقل مقدار خرید $minBuy سکه است. لطفاً تعداد بیشتری وارد کنید.\n\n" .
            "👇 لطفاً عددی بزرگتر وارد کنید:";
        sendMessage($chat_id, $responseText, $backKeyboard);
        die;
}

    $amount       = intval($text);
    $pricePerCoin = settings('coin_price', 250);
    $totalPrice   = $amount * $pricePerCoin;
    do {
        $rand1       = rand(100, 999);
        $rand2       = rand(1000, 9999);
        $rand3       = rand(1000, 9999);
        $orderNumber = "COIN-$rand1-$rand2-$rand3";
        $stmt        = $pdo->prepare("SELECT COUNT(*) FROM `coin_transactions` WHERE `order_number` = ?");
        $stmt->execute([$orderNumber]);
        $count = $stmt->fetchColumn();
}


while( $count > 0 );
    $stmt = $pdo->prepare("INSERT INTO `coin_transactions` (`user_id`, `order_number`, `amount_coins`, `price_toman`, `status`, `created_at`) VALUES (?, ?, ?, ?, 'pending', NOW())");
    $stmt->execute([$chat_id, $orderNumber, $amount, $totalPrice]);
    $responseText = "📜 *صورت‌حساب نهایی*\n\n" .
        "💎 *بسته انتخابی:* *" . number_format($amount) . "* سکه\n" .
        " *مبلغ قابل پرداخت:* *" . number_format($totalPrice) . "* تومان\n\n" .
        "⚡️ همین حالا پرداخت کنید و آنی سکه‌ها را دریافت کنید!\n\n" .
        "🔽 *روش پرداخت خود را انتخاب کنید:*";
    $keyboard     = json_encode([
        'inline_keyboard' => [
            [
                ['text' => '💼 پرداخت با کیف پول', 'callback_data' => "pay_wallet:$orderNumber"]
            ],
            [
                ['text' => '❌ لغو و بازگشت', 'callback_data' => "cancel_payment"]
            ]
        ]
    ]);
    sendMessage($chat_id, $responseText, $keyboard);
    setStep($chat_id, "none");
    die;
}


if($data == 'cancel_payment') {
    deleteMessage($chat_id, $message_id);
    sendMessage($chat_id, "❌ *خرید لغو شد*\n\nعملیات پرداخت توسط شما لغو گردید.\nهیچ مبلغی از حساب شما کسر نشد.", getMainMenuKeyboard($user));
    die;
}


if(strpos($data, 'pay_card:') === 0 || strpos($data, 'pay_wallet:') === 0) {
    $parts       = explode(':', $data);
    $type        = $parts[0];
    $orderNumber = $parts[1];
    $stmt        = $pdo->prepare("SELECT * FROM `coin_transactions` WHERE `order_number` = ?");
    $stmt->execute([$orderNumber]);
    $transaction = $stmt->fetch();

if(!$transaction) {
        deleteMessage($chat_id, $message_id);
        sendMessage($chat_id, "🚫 *سفارش نامعتبر*\n\nاین سفارش منقضی شده یا در سیستم یافت نشد.\nلطفاً مجدداً اقدام به خرید کنید.", getMainMenuKeyboard($user));
        die;
}

    $amount     = $transaction->amount_coins;
    $totalPrice = $transaction->price_toman;
    deleteMessage($chat_id, $message_id);

if($type == 'pay_wallet') {
        $walletAddress = settings('wallet_address', "WALLET-tqRD5MDZQQQiN8YC");
        $result        = sendPayment(
            $chat_id,
            "خرید $amount سکه",
            "لطفاً مبلغ " . number_format($totalPrice) . " تومان را از طریق کیف پول بله پرداخت نمایید.",
            $orderNumber,
            $walletAddress,
            [['label' => "خرید سکه", 'amount' => $totalPrice * 10]]
        );

if(!$result->ok) {
            $backKeyboard = json_encode([
                "inline_keyboard" => [
                    [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => 'cancel_payment']]
                ]
            ]);
            sendMessage($chat_id, "⚠️ *خطای سیستمی*\n\nمشکلی در ایجاد فاکتور پرداخت رخ داد: " . ($result->description ?? 'خطای ناشناخته'), $backKeyboard);
            die;
}

        sendMessage($chat_id, "⏳ پس از خرید بسته سکه و پرداخت، سکه‌ها به صورت آنی به حساب شما اضافه خواهند شد.", getMainMenuKeyboard($user));
}

    die;
}


if(strpos($user->step, 'buy_coins_payment:') === 0) {
    setStep($chat_id, 'none');
    sendMessage($chat_id, "⚠️ *خطا در پردازش*\n\nمشکلی در روند پرداخت رخ داد. لطفاً مجدداً تلاش کنید.", getMainMenuKeyboard($user));
    die;
}


if($text == "🌟 ارتقا به ویژه" || $text == "/upgrade") {
    $price          = settings('vip_price_toman', 32000);
    $priceFormatted = number_format($price);
    $responseText   = "*💎 خرید اشتراک ویژه | تجربه حرفه‌ای با حداکثر بازده*
🎁 با خرید اشتراک ویژه، تمام مزایا مستقیم به حساب شما اضافه می‌شه!
*🚀 اولویت بالا در انجام سفارش‌ها
💰 درآمد ۲ برابری از معرفی دوستان
💸 5% تخفیف دائمی روی همه سفارش‌ها
⚡️ انتقال سکه کاملاً رایگان
📈 ثبت تا ۱۰ سفارش در روز
👥 حداقل سفارش فقط 10 ممبر
🛡 کاهش جریمه خروج از کانال‌ها
🛠 امکان لغو سفارش و کنترل کامل
📞 پشتیبانی ویژه با پاسخ سریع‌تر
💎 بازگشت سکه جریمه کاربران به حساب شما*
✨ حساب ویژه یعنی سرعت بیشتر، سود بالاتر و بدون محدودیت";
    $keyboard       = json_encode([
        "inline_keyboard" => [
            [['text' => "💎 ارتقا حساب به ویژه ($priceFormatted تومان)", 'callback_data' => 'buy_vip_plan']]
        ]
    ]);
    sendMessage($chat_id, $responseText, $keyboard);
    die;
}


if($data == 'buy_vip_plan') {

if($user->is_vip && strtotime($user->vip_expire) > time()) {
        $expireDate = jdate("Y/m/d", strtotime($user->vip_expire));
        answerCallbackQuery($query_id, "✅ شما تا تاریخ $expireDate اشتراک ویژه دارید.", true);
        die;
}

    $price = settings('vip_price_toman', 32000);
    $days  = settings('vip_duration_days', 30);
    do {
        $rand1       = rand(100, 999);
        $rand2       = rand(1000, 9999);
        $orderNumber = "VIP-$rand1-$rand2";
        $stmt        = $pdo->prepare("SELECT COUNT(*) FROM `vip_transactions` WHERE `order_number` = ?");
        $stmt->execute([$orderNumber]);
        $count = $stmt->fetchColumn();
}


while( $count > 0 );
    $stmt = $pdo->prepare("INSERT INTO `vip_transactions` (`user_id`, `vip_days`, `price_toman`, `order_number`, `created_at`) VALUES (?, ?, ?, ?, NOW())");
    $stmt->execute([$chat_id, $days, $price, $orderNumber]);
    $walletAddress  = settings('wallet_address', "WALLET-tqRD5MDZQQQiN8YC");
    $priceFormatted = number_format($price);
    $result         = sendPayment(
        $chat_id,
        "اشتراک ویژه $days روزه",
        "پرداخت $priceFormatted تومان بابت ارتقا حساب به ویژه ($days روزه)",
        $orderNumber,
        $walletAddress,
        [['label' => "اشتراک ویژه", 'amount' => $price * 10]]
    );

if(!$result->ok) {
        answerCallbackQuery($query_id, "❌ خطا در ایجاد فاکتور: " . ($result->description ?? 'خطای ناشناخته'), true);
        die;
}

    answerCallbackQuery($query_id, "⏳ فاکتور پرداخت ارسال شد.", false);
    die;
}