"""Dashboard handlers."""

from aiogram import Router, F
from aiogram.types import CallbackQuery

from database import get_user_by_telegram_id, get_user_rank, get_prediction_count_for_user
from keyboards.user import get_main_menu_keyboard


router = Router()


@router.callback_query(F.data == "rewards")
async def show_rewards(callback: CallbackQuery):
    """Show rewards information."""
    rewards_text = """
🎁 **فروشگاه جوایز**

🏆 **نفر اول:**  
تور رایگان تفریحی جزیره کیش به همراه یک دوره آموزشی حضوری رایگان

🥈 **نفر دوم:**  
شرکت رایگان در ۲ دوره حضوری دندانپزشکی

🥉 **نفر سوم:**  
شرکت در ۱ دوره حضوری دندانپزشکی

🎖️ **نفر چهارم تا ششم:**  
شرکت در تمام دوره‌های آموزشی آکادمی گیسو با تخفیف ۵۰٪

📉 **نفر هفتم تا دهم:**  
شرکت در تمام دوره‌های آموزشی آکادمی گیسو با تخفیف ۳۰٪

📚 **نفر یازدهم تا پانزدهم:**  
دریافت رایگان ۲۰ ویدئوی آموزشی زیرنویس فارسی

📖 **نفر شانزدهم تا بیستم:**  
یک جلد کتاب رایگان از مرسدس دنت به انتخاب دلخواه

🎉 **جایزه برای همه شرکت‌کنندگان:**  
تخفیف ۵۰٪ خرید ویدئوهای آموزشی زیرنویس فارسی و تخفیف ۳۰٪ دائمی خرید ابزارهای دندانپزشکی
"""

    await callback.message.edit_text(rewards_text, reply_markup=get_main_menu_keyboard(), parse_mode="Markdown")
    await callback.answer()


@router.callback_query(F.data == "my_score")
async def show_my_score(callback: CallbackQuery):
    """Show user's score and statistics."""
    user = await get_user_by_telegram_id(callback.from_user.id)
    if not user:
        await callback.answer("❌ خطایی رخ داده است.", show_alert=True)
        return

    score = user.get("score", 0)
    rank = await get_user_rank(user["id"])
    prediction_count = await get_prediction_count_for_user(user["id"])
    referral_count = await __import__("database", fromlist=["get_referral_count_for_user"]).get_referral_count_for_user(user["id"])

    score_text = f"""
👤 امتیاز من

💎 امتیاز شما: {score}
📈 رتبه شما: {rank}
⚽ تعداد پیش بینی ها: {prediction_count}
👥 تعداد دعوت های موفق: {referral_count}
"""

    await callback.message.edit_text(score_text, reply_markup=get_main_menu_keyboard())
    await callback.answer()


@router.callback_query(F.data == "scoring_rules")
async def show_scoring_rules(callback: CallbackQuery):
    """Show scoring rules."""
    rules_text = """
📃 قوانین امتیازدهی

✅ ثبت پیش بینی: +2
✅ تشخیص صحیح برنده: +5
✅ تشخیص صحیح تفاضل گل: +3
✅ نتیجه دقیق: +10
✅ دعوت موفق: +2
"""

    await callback.message.edit_text(rules_text, reply_markup=get_main_menu_keyboard())
    await callback.answer()