示例#1
0
        public IActionResult TeamInfoSeason(int id, int year)
        {
            var weekRecords = TeamRecordHandler.GetTeamRecordsByTeamAndYear(id, year);
            var h2hRecords  = weekRecords.Last().Head2HeadRecords
                              .Where(h2h => h2h.GamesPlayed > 0)
                              .OrderBy(h2h => h2h.Opponent.Name)
                              .ToList();
            var games   = GameHandler.GetGamesByYearAndTeam(year, id);
            var players = RosterHandler.GetByTeamAndYearGroupedByPlayer(id, year).Select(list =>
            {
                return(new TeamPlayerInfo
                {
                    Player = list.First().Player,
                    RosterEntries = list
                });
            }).ToList();

            return(View(new TeamInfoSeason
            {
                Team = TeamHandler.GetById(id),
                Year = year,
                WeekRecords = weekRecords,
                H2HRecords = h2hRecords,
                Games = games,
                Players = players
            }));
        }
示例#2
0
        public IActionResult TeamInfo(int id)
        {
            var regSeasonRecords      = TeamRecordHandler.GetFinalRegularSeasonTeamRecordsForEachYear(id);
            var regSeasonCareerRecord = regSeasonRecords.Aggregate((total, next) =>
            {
                return(new TeamRecord
                {
                    Win = total.Win + next.Win,
                    Loss = total.Loss + next.Loss,
                    PointsFor = total.PointsFor + next.PointsFor,
                    PointsAgainst = total.PointsAgainst + next.PointsAgainst
                });
            });
            var h2hRecords          = TeamRecordHandler.GetAccumulatedHead2HeadRecords(id).OrderByDescending(h2h => h2h.Pct).ToList();
            var playoffFinalRecords = TeamRecordHandler.GetFinalTeamRecordsForEachYear(id).Where(tr => tr.IsPlayoffs).ToList();

            return(View(new TeamInfo
            {
                Team = TeamHandler.GetById(id),
                RegularSeasonRecords = regSeasonRecords,
                RegularSeasonCareerRecord = regSeasonCareerRecord,
                H2HRecords = h2hRecords,
                PlayoffFinalRecords = playoffFinalRecords
            }));
        }
示例#3
0
        public IActionResult SeasonInfo(int year)
        {
            var teamRecords = TeamRecordHandler.GetLatestRegularSeasonTeamRecords(year);
            var games       = GameHandler.GetGamesByYear(year);

            return(View(new SeasonInfo
            {
                Year = year,
                Standings = teamRecords,
                Games = games
            }));
        }
示例#4
0
        public IActionResult Index()
        {
            var teams = TeamHandler.GetAllTeams();

            teams.Sort((t1, t2) => t1.Name.CompareTo(t2.Name));

            var model = teams.Select(t => new TeamOverallInfo
            {
                Team         = t,
                YearsActive  = TeamRecordHandler.GetYearsActive(t.Id),
                NumChampion  = SeasonInfoHandler.GetNumChampion(t.Id),
                CareerRecord = TeamRecordHandler.GetCareerRecord(t.Id)
            }).ToList();

            return(View(model));
        }
示例#5
0
        public static Standings GetStandings(int year, int week)
        {
            List <TeamRecord> teamRecords = null;

            if (week == 0)
            {
                // create default standings
                var teams = GameHandler.GetTeamsInYear(year);

                teamRecords = new List <TeamRecord>();

                foreach (var team in teams)
                {
                    teamRecords.Add(new TeamRecord
                    {
                        Year   = year,
                        Week   = 0,
                        TeamId = team.Id,
                        // create H2H records against every other team
                        Head2HeadRecords = teams.Where(t => t.Id != team.Id).Select(t => new Head2HeadRecord
                        {
                            Year       = year,
                            Week       = week,
                            TeamId     = team.Id,
                            OpponentId = t.Id
                        }).ToList()
                    });
                }
            }
            else
            {
                teamRecords = TeamRecordHandler.GetTeamRecordsByWeek(year, week);
            }

            if (week <= SeasonInfoHandler.GetSeason(year).RegularSeasonLength)
            {
                return(new RegularSeasonStandings(teamRecords));
            }

            return(new PlayoffStandings(teamRecords));
        }
示例#6
0
        public static Utils.Standings CalculateStandings(int year, int week, bool force = false)
        {
            if (week < 1 || week > 16)
            {
                throw new ArgumentException();
            }

            var weekExists = TeamRecordHandler.WeekExists(year, week);

            if (weekExists)
            {
                if (force)
                {
                    TeamRecordHandler.DeleteTeamRecordsInWeek(year, week);
                }
                else
                {
                    return(Utils.Standings.GetStandings(year, week));
                }
            }

            var prevStandings = Utils.Standings.GetStandings(year, week - 1);

            if (!prevStandings.IsValid())
            {
                // previous week's standings does not exist yet
                prevStandings = CalculateStandings(year, week - 1, force: force);
            }

            Console.WriteLine("Calculating standings for {0} week {1}", year, week);

            Utils.Standings newStandings = null;

            var seasonInfo = SeasonInfoHandler.GetSeason(year);

            if (week <= seasonInfo.RegularSeasonLength)
            {
                newStandings = new Utils.RegularSeasonStandings(prevStandings);
            }
            else
            {
                newStandings = new Utils.PlayoffStandings(prevStandings);
            }

            var games = GameHandler.GetGamesByWeek(year, week);

            foreach (var game in games)
            {
                if (game.HasValidResult)
                {
                    newStandings.AddResult(game);
                }
            }

            newStandings.SortStandings();

            TeamRecordHandler.Add(newStandings.TeamRecords);

            // update season info
            if (week <= seasonInfo.RegularSeasonLength)
            {
                var highestPointsForRecord = newStandings.GetHighestPointsForRecord();
                seasonInfo.HighestPointsFor       = highestPointsForRecord.PointsFor;
                seasonInfo.HighestPointsForTeamId = highestPointsForRecord.TeamId;
                seasonInfo.HighestPointsForTeam   = highestPointsForRecord.Team;

                if (week == seasonInfo.RegularSeasonLength)
                {
                    seasonInfo.RegularSeasonChampionId = newStandings.TeamRecords[0].TeamId;
                }
            }
            else if (week == seasonInfo.SeasonLength)
            {
                seasonInfo.ChampionId    = newStandings.TeamRecords[0].TeamId;
                seasonInfo.SecondPlaceId = newStandings.TeamRecords[1].TeamId;
                seasonInfo.ThirdPlaceId  = newStandings.TeamRecords[2].TeamId;
                seasonInfo.SackoId       = newStandings.TeamRecords.Last().TeamId;
            }

            SeasonInfoHandler.Update(seasonInfo);

            return(newStandings);
        }