<?php
if($data == 'transfer_coins') {
    setStep($chat_id, 'transfer_ask_amount');
    $responseText = "💸 *انتقال سکه*\n\n" .
        "لطفاً *تعداد سکه‌ای* که می‌خواهید انتقال دهید را وارد کنید:\n" .
        "(فقط عدد وارد کنید، مثلاً: *100*)";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '🔙 بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    die;
}


if($user->step == 'transfer_ask_amount' && $text != "🔙 برگشت به منو قبل") {
    $amount = intval(convertPersianToEnglishNumbers($text));

if($amount <= 0) {
        sendMessage($chat_id, "🔢 *خطا در مبلغ ورودی*\n\nلطفاً یک عدد معتبر و بزرگتر از صفر وارد کنید.\nمثال: 100");
        die;
        ;
}


if($user->coins < $amount) {
        sendMessage($chat_id, "💳 *موجودی ناکافی*\n\nشما سکه کافی برای انتقال این مبلغ را ندارید.\n💰 موجودی فعلی: " . number_format($user->coins) . " سکه");
        die;
        ;
}

    $isVip = !empty($user->is_vip) && !empty($user->vip_expire) && strtotime($user->vip_expire) > time();
    $dailyLimit = intval(settings('transfer_daily_limit', 0));

if(!$isVip && $dailyLimit > 0) {
        $stmt = $pdo->prepare("SELECT COALESCE(SUM(`coins`),0) FROM `coin_transfers` WHERE `sender_id` = ? AND DATE(`created_at`) = CURDATE()");
        $stmt->execute([$chat_id]);
        $todaySum = intval($stmt->fetchColumn() ?? 0);

if(($todaySum + $amount) > $dailyLimit) {
            sendMessage($chat_id, "⛔ محدودیت انتقال روزانه\n\nبیشتر از " . number_format($dailyLimit) . " سکه در روز باید حساب ویژه خریداری کنن.");
            die;
}

}

    setStep($chat_id, "transfer_ask_receiver:$amount");
    $responseText = "👤 *شناسه گیرنده*\n\n" .
        "مبلغ انتقال: *$amount* سکه\n\n" .
        "لطفاً *شناسه عددی (User ID)* فردی که می‌خواهید سکه به او انتقال دهید را وارد کنید:";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '🔙 بازگشت به پروفایل ⬅️', 'callback_data' => 'transfer_coins']]
        ]
    ]);
    sendMessage($chat_id, $responseText, $keyboard);
    die;
}


if(strpos($user->step, 'transfer_ask_receiver:') === 0 && $text != "🔙 بازگشت به پروفایل ⬅️") {
    $amount     = intval(substr($user->step, strlen('transfer_ask_receiver:')));
    $receiverId = convertPersianToEnglishNumbers($text);

if(!is_numeric($receiverId)) {
        sendMessage($chat_id, "🆔 *شناسه نامعتبر*\n\nشناسه کاربری باید فقط شامل اعداد باشد.");
        return;
}


if($receiverId == $chat_id) {
        sendMessage($chat_id, "🚫 *خطا در مقصد*\n\nشما نمی‌توانید به خودتان سکه انتقال دهید!");
        return;
}

    $receiver = getUser($receiverId);

if(!$receiver) {
        sendMessage($chat_id, "👤 *کاربر یافت نشد*\n\nکاربری با این شناسه در سیستم وجود ندارد.\nلطفاً شناسه صحیح را بررسی و مجدداً وارد کنید.");
        return;
}

    setStep($chat_id, "none");
    $receiverName = $receiver->full_name ?? "کاربر ناشناس";
    $sender     = getUser($chat_id);
    $isVip      = $sender->is_vip && strtotime($sender->vip_expire) > time();
    $defaultFeePercent = settings('transfer_fee_percent', 5) / 100;
    $feePercent = $isVip ? 0 : $defaultFeePercent;
    $fee        = $isVip ? 0 : intval(round($amount * $feePercent));
    $totalDeduction = $amount + $fee;
    $responseText = "🧾 *فاکتور انتقال سکه*\n\n" .
        "👤 گیرنده: *$receiverName* ($receiverId)\n" .
        "💰 مبلغ انتقال: *" . number_format($amount) . "* سکه\n";

if($fee > 0) {
        $responseText .= "💸 کارمزد: *" . number_format($fee) . "* سکه\n" .
            "📉 کسر نهایی از شما: *" . number_format($totalDeduction) . "* سکه\n\n";
} else {
        $responseText .= "✨ کارمزد: *رایگان (ویژه)*\n\n";
}

    $responseText .= "⚠️ آیا از انجام این انتقال *مطمئن* هستید؟";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '✅ تایید انتقال', 'callback_data' => "confirm_transfer:$amount:$receiverId"]],
            [['text' => '🔙 بازگشت به پروفایل ⬅️', 'callback_data' => 'transfer_coins']]
        ]
    ]);
    sendMessage($chat_id, $responseText, $keyboard);
    die;
}


if(strpos($data, 'confirm_transfer:') === 0) {
    $parts = explode(':', substr($data, strlen('confirm_transfer:')));

if(count($parts) != 2)
        die;
    $receiverId = $parts[1];
    $amount     = intval($parts[0]);
    $sender = $user;
    $isVip      = $sender->is_vip && strtotime($sender->vip_expire) > time();
    $feePercent = $isVip ? 0 : (settings('transfer_fee_percent', 5) / 100);
    $fee        = $isVip ? 0 : intval(round($amount * $feePercent));
    $totalDeduction = $amount + $fee;
    $dailyLimit = intval(settings('transfer_daily_limit', 0));

if(!$isVip && $dailyLimit > 0) {
        $stmt = $pdo->prepare("SELECT COALESCE(SUM(`coins`),0) FROM `coin_transfers` WHERE `sender_id` = ? AND DATE(`created_at`) = CURDATE()");
        $stmt->execute([$chat_id]);
        $todaySum = intval($stmt->fetchColumn() ?? 0);

if(($todaySum + $amount) > $dailyLimit) {
            answerCallbackQuery($query_id, "⛔ بیش از " . number_format($dailyLimit) . " سکه در روز نیازمند حساب ویژه است.", true);
            deleteMessage($chat_id, $message_id);
            die;
}

}


if($sender->coins < $totalDeduction) {
        answerCallbackQuery($query_id, "❌ موجودی حساب شما برای انجام این تراکنش کافی نیست.", true);
        deleteMessage($chat_id, $message_id);
        die;
}

    $trackingId = rand(10000000, 99999999);
    try {
        $pdo->beginTransaction();
        $stmtSub = $pdo->prepare("UPDATE `users` SET `coins` = `coins` - ? WHERE `user_id` = ?");
        $stmtSub->execute([$totalDeduction, $chat_id]);
        $stmtAdd = $pdo->prepare("UPDATE `users` SET `coins` = `coins` + ? WHERE `user_id` = ?");
        $stmtAdd->execute([$amount, $receiverId]);
        $stmtLog = $pdo->prepare("INSERT INTO `coin_transfers` (`tracking_id`, `sender_id`, `receiver_id`, `coins`, `created_at`) VALUES (?, ?, ?, ?, NOW())");
        $stmtLog->execute([$trackingId, $chat_id, $receiverId, $amount]);
        $pdo->commit();
        $responseText = "✅ *انتقال با موفقیت انجام شد.*\n\n" .
            "💰 مبلغ: *" . number_format($amount) . "* سکه\n" .
            "👤 به کاربر: *$receiverId*\n" .
            "🔖 کد رهگیری: *$trackingId*";
        editMessage($chat_id, $message_id, $responseText);
        $responseText = "📥 *دریافت سکه*\n\n" .
            "شما مبلغ *" . number_format($amount) . "* سکه از کاربر *$chat_id* دریافت کردید.\n" .
            "🔖 کد رهگیری: *$trackingId*";
        sendMessage($receiverId, $responseText);
} catch (Exception $e) {
        $pdo->rollBack();
        answerCallbackQuery($query_id, "❌ خطا در انجام تراکنش.", true);
}

    die;
}


if($data == 'cancel_transfer') {
    $responseText = "❌ *انتقال لغو شد*\n\n" .
        "عملیات انتقال سکه توسط شما متوقف گردید.\n" .
        "💰 هیچ مبلغی از حساب شما کسر نشد.";
    $keyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '🔙 بازگشت به پروفایل', 'callback_data' => 'back_to_profile']]
        ]
    ]);
    editMessage($chat_id, $message_id, $responseText, $keyboard);
    setStep($chat_id, "none");
    die;
}

