diff --git a/src/controllers/reservation_controller.py b/src/controllers/reservation_controller.py index 6733479..fffb01e 100644 --- a/src/controllers/reservation_controller.py +++ b/src/controllers/reservation_controller.py @@ -17,7 +17,7 @@ def create_reservation(): current_user = ""#get_jwt_identity() reservation = Reservation(**request.json, creator=current_user) id = ReservationRepository.insert(reservation) - notify_clients(reservation.date) + notify_clients(reservation.date, reservation.room_id) return jsonify({"message": "Reservation created successfully", "id": id}) @reservation_blueprint.route('/', methods=['DELETE']) @@ -30,7 +30,7 @@ def cancel_reservation(reservation_id): room_id = reservation["room_id"] date = reservation["date"] result = ReservationRepository.delete(reservation_id) - notify_clients(date) + notify_clients(date, room_id) if not result or result.deleted_count == 0: return jsonify({"error": "Reservation not found"}), 404 @@ -44,7 +44,7 @@ def change_reservation(reservation_id): try: reservation = ReservationRepository.get_by_id(reservation_id) result = ReservationRepository.update(reservation_id, data) - notify_clients(reservation["date"]) + notify_clients(reservation["date"], reservation["room_id"]) if not result or result.matched_count == 0: return jsonify({"error": "Reservation not found"}), 404 except: diff --git a/src/controllers/websocket_controller.py b/src/controllers/websocket_controller.py index 6e3cd21..cbd7858 100644 --- a/src/controllers/websocket_controller.py +++ b/src/controllers/websocket_controller.py @@ -18,12 +18,23 @@ def handle_disconnect(): @socketio.on('subscribe_reservations') def handle_subscribe(data): date = data.get('date') - join_room(date) # Используем дату как комнату - # Получаем все резервации для указанной даты - reservations = ReservationRepository.list_all({'date': date}) + room_id = data.get('room_id') + + if room_id: + room = f"{date}_{room_id}" + filters = {'date': date, 'room_id': room_id} + else: + room = date + filters = {'date': date} + + join_room(room) + reservations = ReservationRepository.list_all(filters) emit('reservations_update', reservations) -def notify_clients(date): - # Отправляем всем подписчикам этой даты - reservations = ReservationRepository.list_all({'date': date}) - socketio.emit('reservations_update', reservations, room=date) \ No newline at end of file +def notify_clients(date, room_id=None): + all_reservations = ReservationRepository.list_all({'date': date}) + socketio.emit('reservations_update', all_reservations, room=date) + + if room_id: + room_reservations = [r for r in all_reservations if r.room_id == room_id] + socketio.emit('reservations_update', room_reservations, room=f"{date}_{room_id}") \ No newline at end of file