import uuid from sqlalchemy.ext.asyncio import AsyncSession from app.crud import crud_championship, crud_participant, crud_registration, crud_user from app.models.participant_list import ParticipantList from app.models.user import User from app.services import notification_service async def publish_participant_list( db: AsyncSession, championship_id: uuid.UUID, organizer: User, ) -> ParticipantList: pl = await crud_participant.get_by_championship(db, championship_id) if not pl: raise ValueError("Participant list not found — create it first") pl = await crud_participant.publish(db, pl) championship = await crud_championship.get(db, championship_id) registrations = await crud_registration.list_by_championship(db, championship_id) for reg in registrations: user = await crud_user.get(db, reg.user_id) if not user: continue if reg.status == "accepted": title = "Congratulations!" body = f"You've been accepted to {championship.title}!" elif reg.status == "rejected": title = "Application Update" body = f"Unfortunately, your application to {championship.title} was not accepted this time." else: title = "Application Update" body = f"You are on the waitlist for {championship.title}." await notification_service.send_push_notification( db=db, user=user, title=title, body=body, notif_type=reg.status, registration_id=str(reg.id), ) return pl