public async Task SelectRole(GameCommand <SelectRole> cmd) { var game = _inProgressGameStore.FindById(cmd.GameId); try { await _gameService.ExecuteSelectRole(game, GetUserId(), cmd.Action); } catch (Exception e) { await Clients.Caller.Error(new GameErrorEvent { ErrorMessage = e.Message }); } var changedEvent = new GameChangedEvent { Game = GameDto.Create(game) }; await Clients.Group(cmd.GameId).GameChanged(changedEvent); await BroadcastAvailableActionTypes(game); }
public override async Task OnConnectedAsync() { if (Context.GetHttpContext().Request.Query.TryGetValue("gameId", out var gameId)) { var game = _inProgressGameStore.FindById(gameId); await Groups.AddToGroupAsync(Context.ConnectionId, gameId); var changedEvent = new GameChangedEvent { Game = GameDto.Create(game) }; await Clients.Caller.GameChanged(changedEvent); await SendAvailableActionTypes(game, GetUserId()); } else { await Clients.Caller.Error(new GameErrorEvent { ErrorMessage = "Not found gameId query param" }); } }
public Task ExecuteAsync(GameChangedEvent @event) { return(_bettingClient.ApiGameMetadataPostAsync(new SaveGameMetadata { Id = @event.Game.Id, StartDate = @event.Game.StartDate, TeamA = @event.Game.TeamA, TeamB = @event.Game.TeamB })); }