from aiogram import Router, F
from aiogram.types import CallbackQuery
from bot.data.topic_map import user_topic_map

router = Router(name="form_callbacks")

TEXTS = {
    "anketa": {
        "accept": "<b>🎉 Ваша анкета принята!</b>\n\nДобро пожаловать в проект!",
        "reject": "<b>❌ Ваша анкета отклонена.</b>\n\nВы можете попробовать позже."
    },
    "application": {
        "accept": "<b>🎉 Ваша анкета принята!</b>\n\nДобро пожаловать в проект!",
        "reject": "<b>❌ Ваша анкета отклонена.</b>\n\nВы можете попробовать позже."
    },
    "union": {
        "accept": "<b>🤝 Союз одобрен!</b>\n\nТеперь вы в союзе.",
        "reject": "<b>💔 Союз отклонён.</b>\n\nВы можете обсудить детали с администрацией."
    }
}

@router.callback_query(F.data.regexp(r"^([a-z_]+):(accept|reject):(\d+)$"))
async def process_decision_callback(callback: CallbackQuery):
    kind, action, thread_id_str = callback.data.split(":")
    thread_id = int(thread_id_str)

    user_id = None
    for (uid, k), tid in user_topic_map.items():
        if k == kind and tid == thread_id:
            user_id = uid
            break

    if not user_id:
        await callback.answer("Пользователь не найден.", show_alert=True)
        return

    text_to_send = TEXTS.get(kind, {}).get(action)
    if not text_to_send:
        await callback.answer("Некорректные данные.", show_alert=True)
        return

    await callback.message.bot.send_message(chat_id=user_id, text=text_to_send, parse_mode="HTML")
    await callback.message.edit_reply_markup(reply_markup=None)
    await callback.answer("Ответ отправлен пользователю.")
