Adding completed_at and winners to g ames
This commit is contained in:
@@ -203,20 +203,33 @@ def reset_timer(game, socketio_instance):
|
||||
|
||||
|
||||
def end_game(game, socketio_instance):
|
||||
"""End/deactivate a game"""
|
||||
"""End/deactivate a game and record winners"""
|
||||
from datetime import datetime
|
||||
|
||||
# Calculate winners (team(s) with highest score)
|
||||
if game.teams:
|
||||
team_scores = [(team.name, team.total_score) for team in game.teams]
|
||||
if team_scores:
|
||||
max_score = max(score for _, score in team_scores)
|
||||
winners = [
|
||||
{"team_name": name, "score": score}
|
||||
for name, score in team_scores
|
||||
if score == max_score
|
||||
]
|
||||
game.winners = winners
|
||||
|
||||
game.is_active = False
|
||||
game.completed_at = datetime.utcnow()
|
||||
db.session.commit()
|
||||
|
||||
# Emit game_ended event to all rooms
|
||||
socketio_instance.emit('game_ended', {
|
||||
# Emit game_ended event with winners
|
||||
end_data = {
|
||||
'game_id': game.id,
|
||||
'game_name': game.name
|
||||
}, room=f'game_{game.id}_contestant')
|
||||
|
||||
socketio_instance.emit('game_ended', {
|
||||
'game_id': game.id,
|
||||
'game_name': game.name
|
||||
}, room=f'game_{game.id}_admin')
|
||||
'game_name': game.name,
|
||||
'winners': game.winners
|
||||
}
|
||||
socketio_instance.emit('game_ended', end_data, room=f'game_{game.id}_contestant')
|
||||
socketio_instance.emit('game_ended', end_data, room=f'game_{game.id}_admin')
|
||||
|
||||
|
||||
def restart_game(game, socketio_instance):
|
||||
|
||||
Reference in New Issue
Block a user