talkpal-backend/src/controllers/websocket_controller.py
2025-05-24 12:58:06 +03:00

40 lines
1.2 KiB
Python

from flask_jwt_extended import get_jwt_identity, jwt_required
from flask_socketio import emit, join_room
from infra.server import socketio
from repos.reservation_repo import ReservationRepository
@socketio.on('connect')
#@jwt_required()
def handle_connect():
#current_user = get_jwt_identity()
#print(f'Client connected: {current_user}')
emit('status', {'message': 'Connected'})
@socketio.on('disconnect')
def handle_disconnect():
print('Client disconnected')
@socketio.on('subscribe_reservations')
def handle_subscribe(data):
date = data.get('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, 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}")