42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from aiogram.types import CallbackQuery
|
|
from aiogram_dialog import DialogManager
|
|
from aiogram_dialog.widgets.kbd import Button, Select
|
|
|
|
from app.infrastructure.database.crud import (
|
|
register_user_to_event,
|
|
unregister_user_to_event,
|
|
)
|
|
|
|
from .getters import registration_getter
|
|
|
|
|
|
async def on_event_selected(
|
|
callback: CallbackQuery,
|
|
widget: Select,
|
|
manager: DialogManager,
|
|
item_id: str,
|
|
):
|
|
manager.dialog_data["selected_event"] = int(item_id)
|
|
await manager.next()
|
|
|
|
|
|
async def change_registration(
|
|
callback: CallbackQuery,
|
|
widget: Button,
|
|
manager: DialogManager,
|
|
**kwargs,
|
|
):
|
|
user = manager.middleware_data["user"]
|
|
event_id = manager.dialog_data["selected_event"]
|
|
if (await registration_getter(manager))["is_registered_to_event"]:
|
|
await unregister_user_to_event(
|
|
manager.middleware_data["session"], user.id, event_id
|
|
)
|
|
else:
|
|
if not user.phone:
|
|
await callback.answer("Пожалуйста, заполните ваш номер телефона в профиле", show_alert=True)
|
|
else:
|
|
await register_user_to_event(
|
|
manager.middleware_data["session"], user.id, event_id
|
|
)
|