from asgiref.sync import sync_to_async from hotels.models import UserHotel, Hotel, Reservation from users.models import User async def get_user_from_chat_id(chat_id): """Получение пользователя из базы по chat_id.""" return await sync_to_async(User.objects.filter(chat_id=chat_id).first)() async def get_hotels_for_user(user_id): """Получение отелей, связанных с пользователем.""" user = await sync_to_async(User.objects.filter(chat_id=user_id).first)() if not user: return [] return await sync_to_async(list)( Hotel.objects.filter(userhotel__user=user).distinct() ) async def get_reservations(hotel_id, start_date=None, end_date=None): """Получение статистики бронирований по отелю с гостями.""" query = Reservation.objects.filter(hotel_id=hotel_id) if start_date: query = query.filter(check_in__gte=start_date) if end_date: query = query.filter(check_out__lte=end_date) return await sync_to_async(list)(query.prefetch_related('guests'))