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