public async Task <Game> UpdateSpread(int GameId, SpreadUpdate spreadUpdates) { if (spreadUpdates == null) { throw new ArgumentException("No spreadUpdates parameter input for UpdateSpread (is null)"); } using (var dbSession = _documentStore.LightweightSession()) { var game = await dbSession .Query <GameData>() .Where(g => g.GameId == GameId) .SingleOrDefaultAsync() .ConfigureAwait(false); if (game == null) { throw new ArgumentException($"No matching game found to update for Game Id: {GameId}"); } GameChanger gameChanger = new GameChanger(game, dbSession); gameChanger.ApplySpread(spreadUpdates); dbSession.Store(game); dbSession.SaveChanges(); var pickemEvent = new PickemSystemEvent(PickemSystemEventTypes.SpreadUpdated, GameId); _pickemEventer.Emit(pickemEvent); } // read back out to return return(await this.ReadGame(GameId)); }
internal void ApplySpread(SpreadUpdate spreadUpdates) { if (_game.GameState != GameStates.SpreadNotSet) { throw new InvalidOperationException($"Cannot update game id: {_game.GameId} spread because the game state is: {_game.GameState}"); } _game.Spread.PointSpread = spreadUpdates.PointSpread; _game.Spread.SpreadDirection = spreadUpdates.SpreadDirection; this.SynchScoresAndLeadersAfterSpread(); }
public async Task <Game> UpdateSpread(int GameId, [FromBody] SpreadUpdate spreadUpdates) { return(await _gameService.UpdateSpread(GameId, spreadUpdates)); }