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


if($user->step == 'awaiting_gift_code') {
    $code = trim($text);
    $backKeyboard = json_encode([
        "inline_keyboard" => [
            [['text' => '🔙 بازگشت به پروفایل ⬅️', 'callback_data' => 'back_to_profile']]
        ]
    ]);
    $stmt = $pdo->prepare("SELECT * FROM `gift_codes` WHERE `code` = ?");
    $stmt->execute([$code]);
    $giftCode = $stmt->fetch();

if(!$giftCode) {
        sendMessage($chat_id, "🚫 *کد نامعتبر*\n\nمتاسفانه کد هدیه‌ای که وارد کردید، صحیح نیست. لطفاً مجدداً بررسی و تلاش کنید.", $backKeyboard);
        die;
}


if($giftCode->status !== 'active') {
        sendMessage($chat_id, "⚠️ *کد غیرفعال*\n\nاین کد هدیه در حال حاضر غیرفعال است و قابل استفاده نمی‌باشد.", $backKeyboard);
        die;
}


if($giftCode->expires_at && strtotime($giftCode->expires_at) < time()) {
        sendMessage($chat_id, "⏳ *کد منقضی شده*\n\nمتاسفانه مهلت استفاده از این کد هدیه به پایان رسیده است.", $backKeyboard);
        die;
}


if($giftCode->usage_limit <= $giftCode->used_count) {
        sendMessage($chat_id, "📉 *تکمیل ظرفیت*\n\nتعداد دفعات مجاز استفاده از این کد هدیه به پایان رسیده است.", $backKeyboard);
        die;
}

    $stmtCheck = $pdo->prepare("SELECT * FROM `gift_code_usages` WHERE `gift_code_id` = ? AND `user_id` = ?");
    $stmtCheck->execute([$giftCode->id, $chat_id]);

if($stmtCheck->fetch()) {
        sendMessage($chat_id, "🔁 *استفاده تکراری*\n\nشما پیش از این از این کد هدیه استفاده کرده‌اید و امکان استفاده مجدد وجود ندارد.", $backKeyboard);
        die;
}

    try {
        $pdo->beginTransaction();
        $stmtUpdate = $pdo->prepare("UPDATE `gift_codes` SET `used_count` = `used_count` + 1 WHERE `id` = ?");
        $stmtUpdate->execute([$giftCode->id]);

if($giftCode->used_count + 1 >= $giftCode->usage_limit) {
             $stmtStatus = $pdo->prepare("UPDATE `gift_codes` SET `status` = 'disabled' WHERE `id` = ?");
             $stmtStatus->execute([$giftCode->id]);
}

        $stmtUsage = $pdo->prepare("INSERT INTO `gift_code_usages` (`gift_code_id`, `user_id`, `used_at`) VALUES (?, ?, NOW())");
        $stmtUsage->execute([$giftCode->id, $chat_id]);
        $coins = $giftCode->coins;
        $stmtUser = $pdo->prepare("UPDATE `users` SET `coins` = `coins` + ? WHERE `user_id` = ?");
        $stmtUser->execute([$coins, $chat_id]);
        $pdo->commit();
        setStep($chat_id, 'none');
        $responseText = "🎉 *تبریک!*\n\nکد هدیه با موفقیت فعال شد.\n💰 *مبلغ $coins سکه به کیف پول شما اضافه شد.*";
        sendMessage($chat_id, $responseText, $backKeyboard);
} catch (Exception $e) {
        $pdo->rollBack();
        sendMessage($chat_id, "⚠️ *خطای سیستمی*\n\nمتاسفانه مشکلی در ثبت کد رخ داد. لطفاً لحظاتی دیگر مجدداً تلاش کنید.", $backKeyboard);
}

    die;
}

