Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
 }