from aiogram.types import User from aiogram_dialog import DialogManager from app.infrastructure.database.crud import ( get_event_by_id, get_events_list, ) from app.infrastructure.database.enums import UserEventStatus from app.infrastructure.database.models import Event async def events_list_getter( dialog_manager: DialogManager, event_from_user: User, **kwargs ) -> dict[str, str]: events = await get_events_list(dialog_manager.middleware_data["session"]) return {"events": [{"title": event.title, "id": event.id} for event in events]} async def event_getter(dialog_manager: DialogManager, **kwargs) -> dict[str, Event]: return { "event_obj": await get_event_by_id( dialog_manager.middleware_data["session"], dialog_manager.dialog_data["selected_event"], ) } async def registration_getter(dialog_manager: DialogManager, **kwargs): user = dialog_manager.middleware_data["user"] event_id = dialog_manager.dialog_data["selected_event"] return { "is_registered_to_event": any( (ue.event_id == event_id) and (ue.status != UserEventStatus.CANCELLED.value) for ue in user.events ) } async def registraion_getter(dialog_manager: DialogManager, **kwargs): user = dialog_manager.middleware_data["user"] event_id = dialog_manager.dialog_data["selected_event"] return { "is_registered_to_event": any(ue.event_id == event_id for ue in user.events) }