internal async Task <Game> LockSpread(int gameId) { 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.LockSpread(); dbSession.Store(game); dbSession.SaveChanges(); var pickemEvent = new PickemSystemEvent(PickemSystemEventTypes.SpreadLocked, gameId); _pickemEventer.Emit(pickemEvent); } // read back out to return return(await this.ReadGame(gameId)); }
internal async Task <Team> SetTeamStats(string uncheckedTeamCode, string seasonCode, int weekNumber, TeamStatsUpdate teamStatsUpdate) { if (teamStatsUpdate == null) { throw new ArgumentNullException("teamStatsUpdate"); } using (var dbSession = _documentStore.LightweightSession()) { var teamData = await this.GetTeam(dbSession, uncheckedTeamCode); // does season exist, if not add if (teamData.Seasons == null) { teamData.Seasons = new List <TeamSeasonStats>(); } TeamSeasonStats teamSeasonStats = teamData.Seasons.SingleOrDefault(s => s.SeasonCodeRef == seasonCode); if (teamSeasonStats == null) { teamSeasonStats = new TeamSeasonStats(); teamSeasonStats.SeasonCodeRef = seasonCode; teamData.Seasons.Add(teamSeasonStats); } if (teamSeasonStats.WeekStats == null) { teamSeasonStats.WeekStats = new List <TeamWeekStats>(); } TeamWeekStats teamWeekStats = teamSeasonStats.WeekStats.SingleOrDefault(w => w.WeekNumberRef == weekNumber); if (teamWeekStats == null) { teamWeekStats = new TeamWeekStats(); teamWeekStats.WeekNumberRef = weekNumber; teamSeasonStats.WeekStats.Add(teamWeekStats); } teamWeekStats.FbsRank = teamStatsUpdate.FbsRank; teamWeekStats.Losses = teamStatsUpdate.Losses; teamWeekStats.Wins = teamStatsUpdate.Wins; dbSession.Store(teamData); dbSession.SaveChanges(); var pickemEvent = new PickemSystemEvent(PickemSystemEventTypes.TeamStatsChanged, seasonCode, weekNumber); pickemEvent.DynamicKeys.teamCode = teamData.TeamCode; _pickemEventer.Emit(pickemEvent); return(MapTeamData(teamData)); } }