public IHttpActionResult GetDataForYear(int year)
        {
            if (year < 1999 || year > DateTimeOffset.UtcNow.Year)
            {
                return(BadRequest("year not in valid range"));
            }

            this.Db.Configuration.ProxyCreationEnabled = false;

            // TODO: Invalid players might need to be added to this (no shows, etc)
            var yearDataWithPlayerForYear = this.Db.playeryeardatas.Include(p => p.player).AsNoTracking().Where(x => x.year.value == year).ToList();

            var weeksForYear = this.Db.weeks.Where(w => w.year.value == year).Include(w => w.course).AsNoTracking().ToList();

            var teamsForYear           = this.Db.teams.AsNoTracking().Where(x => x.playeryeardatas.Any(y => y.year.value == year)).ToList();
            var leaderboards           = this.Db.leaderboards.AsNoTracking().ToList();
            var pairings               = this.Db.pairings.AsNoTracking().ToList();
            var leaderBoardDataForYear = this.Db.leaderboarddatas.AsNoTracking().Where(x => x.year.value == year).ToList();
            var courses             = weeksForYear.Select(w => w.course).GroupBy(c => c.id).Select(g => g.First());
            var teamMatchupsForYear = this.Db.teammatchups
                                      .Include(x => x.teams)
                                      .Include(x => x.matches)
                                      .Include("matches.results")
                                      .Where(x => x.week.year.value == year).ToList()
                                      .GroupBy(x => x.weekId, x => x, (key, value) => value.OrderBy(x => x.matchOrder))
                                      .SelectMany(x => x);

            var dby = new DataByYear
            {
                PlayersForYear         = yearDataWithPlayerForYear.Select(x => PlayerResponse.From(x)).ToList(),
                LeaderboardDataForYear = leaderBoardDataForYear.Select(x => LeaderBoardDataResponse.From(x)).ToList(),
                Leaderboards           = leaderboards.Select(x => new LeaderBoardResponse(x)).ToList(),
                TeamsForYear           = teamsForYear.Select(x => TeamResponse.From(x)).ToList(),
                TeamMatchups           = teamMatchupsForYear.Select(x => TeamMatchupResponse.From(x)).ToList(),
                Courses  = courses.Select(x => CourseResponse.From(x)).ToList(),
                Weeks    = weeksForYear.Select(x => new WeekResponse(x)).ToList(),
                Pairings = pairings
            };

            return(Ok(dby));
        }