public async Task <Team> PutTeamStats(string TeamCode, string SeasonCode, int WeekNumber, [FromBody] TeamStatsUpdate teamStatsUpdate) { return(await _teamService.SetTeamStats(TeamCode, SeasonCode, WeekNumber, teamStatsUpdate)); }
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)); } }