コード例 #1
0
        /// <summary>
        /// Processes a <see cref="Game"/> entity into the Teams data store asynchronously.
        /// </summary>
        /// <param name="game"></param>
        /// <returns></returns>
        public virtual async Task ProcessGameAsync(IGameDecorator gameDecorator)
        {
            Guard.ThrowIfNull(gameDecorator, $"{GetType()}.{nameof(ProcessGameAsync)}: {nameof(gameDecorator)}");

            var seasonYear = gameDecorator.SeasonYear;

            var guestSeason =
                await _teamSeasonRepository.GetTeamSeasonByTeamAndSeasonAsync(gameDecorator.GuestName, seasonYear);

            TeamSeasonDecorator?guestSeasonDecorator = null;

            if (!(guestSeason is null))
            {
                guestSeasonDecorator = new TeamSeasonDecorator(guestSeason);
            }

            var hostSeason =
                await _teamSeasonRepository.GetTeamSeasonByTeamAndSeasonAsync(gameDecorator.HostName, seasonYear);

            TeamSeasonDecorator?hostSeasonDecorator = null;

            if (!(hostSeason is null))
            {
                hostSeasonDecorator = new TeamSeasonDecorator(hostSeason);
            }

            await EditWinLossDataAsync(guestSeasonDecorator, hostSeasonDecorator, gameDecorator);

            EditScoringData(guestSeasonDecorator, hostSeasonDecorator, gameDecorator.GuestScore,
                            gameDecorator.HostScore);
        }
コード例 #2
0
        private async Task UpdateRankingsForTeamSeason(TeamSeasonDecorator teamSeasonDecorator)
        {
            try
            {
                var teamSeasonScheduleTotals =
                    await _teamSeasonScheduleRepository.GetTeamSeasonScheduleTotalsAsync(
                        teamSeasonDecorator.TeamName, teamSeasonDecorator.SeasonYear);

                if (teamSeasonScheduleTotals.ScheduleGames is null)
                {
                    return;
                }

                var teamSeasonScheduleAverages =
                    await _teamSeasonScheduleRepository.GetTeamSeasonScheduleAveragesAsync(
                        teamSeasonDecorator.TeamName, teamSeasonDecorator.SeasonYear);

                if (teamSeasonScheduleAverages.PointsFor is null ||
                    teamSeasonScheduleAverages.PointsAgainst is null)
                {
                    return;
                }

                var leagueSeason =
                    await _leagueSeasonRepository.GetLeagueSeasonByLeagueAndSeasonAsync(
                        teamSeasonDecorator.LeagueName, teamSeasonDecorator.SeasonYear);

                if (leagueSeason?.AveragePoints is null)
                {
                    return;
                }

                lock (_dbLock)
                {
                    teamSeasonDecorator.UpdateRankings(teamSeasonScheduleAverages.PointsFor.Value,
                                                       teamSeasonScheduleAverages.PointsAgainst.Value, leagueSeason.AveragePoints.Value);
                }
            }
            catch (InvalidOperationException ex)
            {
                if (ex.Message == "Nullable object must have a value.")
                {
                    // Ignore exception.
                }
                else
                {
                    //_sharedService.ShowExceptionMessage(ex, $"InvalidOperationException: {teamSeason.TeamName}");
                }
            }
            catch (Exception)
            {
                //_sharedService.ShowExceptionMessage(ex.InnerException, $"Exception: {teamSeason.TeamName}");
            }
        }
コード例 #3
0
        private async Task UpdateRankings()
        {
            var teamSeasons = await _teamSeasonRepository.GetTeamSeasonsBySeasonAsync(_selectedSeason);

            foreach (var teamSeason in teamSeasons)
            {
                var teamSeasonDecorator = new TeamSeasonDecorator(teamSeason);
                await UpdateRankingsForTeamSeason(teamSeasonDecorator);
            }

            await _sharedRepository.SaveChangesAsync();
        }