<?php
if(strpos($data, 'select-channel:') === 0) {
    $username = substr($data, strlen('select-channel:'));
    $stmt     = $pdo->prepare("SELECT * FROM `channels` WHERE `channel_username` = ? AND `added_by` = ? LIMIT 1");
    $stmt->execute([$username, $from_id]);
    $channel = $stmt->fetch();
    $costPerMember = settings('cost_per_member', 1);

if($channel) {
        $stmt = $pdo->prepare("SELECT * FROM `orders` WHERE `user_id` = ? AND `status` IN ('pending', 'running') AND (`channel_name` = ? OR (`invite_link` = ? AND `invite_link` != '')) LIMIT 1");
        $stmt->execute([$chat_id, ($channel->channel_name ?: $channel->channel_username), $channel->invite_link]);
        $activeOrder = $stmt->fetch();

if($activeOrder) {
            $responseText = "⚠️ *این کانال یک سفارش فعال دارد!*\n\n" .
                "شما نمی‌توانید همزمان دو سفارش برای یک کانال داشته باشید.\n\n" .
                "لطفاً تا پایان سفارش فعلی صبر کنید یا در صورت تمایل آن را لغو کنید.\n\n" .
                "📋 *شماره سفارش:* #{$activeOrder->order_id}\n" .
                "📊 *وضعیت:* " . ($activeOrder->status == 'pending' ? 'در صف انتظار' : 'درحال انجام') . "\n" .
                "👥 *تعداد درخواستی:* {$activeOrder->members_count}\n" .
                "✅ *انجام شده:* {$activeOrder->members_done}";
            $keyboard = json_encode([
                "inline_keyboard" => [
                    [['text' => '❌ لغو سفارش فعال', 'callback_data' => "cancel_active_order:{$activeOrder->order_id}"]],
                    [['text' => '🔙 بازگشت به منو قبل', 'callback_data' => 'back_to_channels_list']]
                ]
            ]);
            editMessage($chat_id, $message_id, $responseText, $keyboard);
            die;
} else {
            $coins = isset($user->coins) ? intval($user->coins) : 0;
            setStep($chat_id, 'order_channel:' . $channel->id);
            $responseText = "➕ *ثبت سفارش عضو*\n\n" .
                "📢 *کانال:* " . ($channel->channel_name ?: $channel->channel_username) . "\n" .
                "💰 *موجودی:* $coins *سکه* | 💵 *هزینه هر عضو:* {$costPerMember} *سکه*\n\n" .
                "🔢 *تعداد عضو مورد نیاز را وارد کنید:*\n" .
                "💡 *تعداد عضو مورد نظر خود را وارد کنید (مثال: 100)*";
            $keyboard = json_encode([
                "keyboard" => [
                    [['text' => '🔙 بازگشت به منو قبل']]
                ],
                "resize_keyboard" => true
            ]);
            sendMessage($chat_id, $responseText, $keyboard);
            die;
}

} else {
        answerCallbackQuery($query_id, '❌ کانال یافت نشد یا دسترسی ندارید', true);
        die;
}

}


if(strpos($data, 'cancel_active_order:') === 0) {
    $order_id = substr($data, strlen('cancel_active_order:'));
    $stmt = $pdo->prepare("SELECT * FROM `orders` WHERE `order_id` = ? AND `user_id` = ?");
    $stmt->execute([$order_id, $chat_id]);
    $order = $stmt->fetch();

if($order && ($order->status == 'running' || $order->status == 'pending')) {
        try {
            $pdo->beginTransaction();
            $stmt = $pdo->prepare("SELECT * FROM `orders` WHERE `order_id` = ? AND `user_id` = ? FOR UPDATE");
            $stmt->execute([$order_id, $chat_id]);
            $orderLocked = $stmt->fetch();

if(!$orderLocked || !in_array($orderLocked->status, ['running', 'pending'], true)) {
                $pdo->rollBack();
                answerCallbackQuery($query_id, "❌ سفارش یافت نشد یا قبلاً لغو شده است.", true);
                die;
}

            $refund = calcOrderCancelRefund($orderLocked);
            $refundTotal = $refund['total_refund'];

if($refundTotal > 0) {
                $stmt = $pdo->prepare("UPDATE `users` SET `coins` = `coins` + ? WHERE `user_id` = ?");
                $stmt->execute([$refundTotal, $chat_id]);
}

            $stmt = $pdo->prepare("UPDATE `orders` SET `status` = 'cancelled', `finished_at` = NOW() WHERE `order_id` = ?");
            $stmt->execute([$order_id]);
            $pdo->commit();
            answerCallbackQuery($query_id, "✅ سفارش با موفقیت لغو شد.", true);
            $query = "SELECT * FROM `channels` WHERE `added_by` = ?";
            $stmt  = $pdo->prepare($query);
            $stmt->execute([$chat_id]);
            $channels = $stmt->fetchAll();
            $keyboard = generateChannelsKeyboard($channels);
            $msg = "✅ سفارش لغو شد.\n\n💰 مبلغ بازگشتی: " . formatCoins($refundTotal) . " سکه";
            editMessage($chat_id, $message_id, $msg, $keyboard);
} catch (Exception $e) {
            $pdo->rollBack();
            answerCallbackQuery($query_id, "❌ خطایی رخ داد.", true);
}

} else {
        answerCallbackQuery($query_id, "❌ سفارش یافت نشد یا قبلاً لغو شده است.", true);
        $query = "SELECT * FROM `channels` WHERE `added_by` = ?";
        $stmt  = $pdo->prepare($query);
        $stmt->execute([$chat_id]);
        $channels = $stmt->fetchAll();
        $keyboard = generateChannelsKeyboard($channels);
        editMessage($chat_id, $message_id, "⚠️ سفارش یافت نشد یا قبلاً لغو شده است.", $keyboard);
}

    die;
}


if($data === 'back_to_channels_list') {
    setStep($chat_id, 'none');
    $query = "SELECT * FROM `channels` WHERE `added_by` = ?";
    $stmt  = $pdo->prepare($query);
    $stmt->execute([$chat_id]);
    $channels = $stmt->fetchAll();
    $responseText = "🗂 *مدیریت کانال‌ها*\n\n" .
        "لیست کانال‌های ثبت شده شما در زیر نمایش داده شده است.\n\n" .
        "*برای ثبت سفارش، روی نام کانال کلیک کنید یا با دکمه «افزودن کانال»، کانال جدیدی اضافه کنید.*\n\n" .
        "⚠️ *نکته مهم:* ربات باید در کانال مورد نظر ادمین باشد!";
    $keyboard     = generateChannelsKeyboard($channels);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}

