public async Task <ViewResult> Index() { int selectedYear = this.SelectedYear; // Hack to order and rank teams until leaderboards is working //var rankingValuesForYear = this.Db.leaderboarddatas.Where(x => x.year.value == selectedYear && x.leaderboard.key == "team_ranking").OrderBy(x => x.rank).ToList(); var rankingValuesForYear = this.Db.leaderboarddatas.Where(x => x.year.value == selectedYear && x.leaderboard.key == "team_ranking").OrderByDescending(x => x.value / x.team.teammatchups.Where(y => y.week.year.value == selectedYear && y.matchComplete).Count()).ToList(); // Re-rank double previousValue = 0; var currentRank = 0; for (int i = 0; i < rankingValuesForYear.Count(); i++) { leaderboarddata lbd = rankingValuesForYear.ElementAt(i); if (lbd.value != previousValue) { currentRank = i + 1; } lbd.rank = currentRank; previousValue = lbd.value; } var year = this.Db.years.Where(x => x.value == selectedYear).ToList().First(); var latestNote = await this.Db.notes.OrderByDescending(x => x.date).FirstOrDefaultAsync(); return(View(new HomeViewModel { Information = latestNote, TeamRankingDataForYear = rankingValuesForYear, ScheduleYear = year, SelectedYear = selectedYear })); }
public static LeaderBoardDataResponse From(leaderboarddata lbd) { /* * player * * win/loss ratio needs 3 decimal * best net score needs +/- * season improvement needs +/- * avg. opp. net score needs +/- * avg. net score needs +/- * avg. margin of victory needs +/- * avg. margin of net victory needs +/- * * * team * * win/loss ratio needs 3 decimal * season improvement needs +/- */ return(new LeaderBoardDataResponse { Id = lbd.id, IsP = lbd.isPlayer, LbId = lbd.leaderBoardId, PId = lbd.playerId, V = lbd.value, TId = lbd.teamId, R = lbd.rank, Det = lbd.detail, FV = lbd.formattedValue }); }
public leaderboarddata GetLeaderBoardData(int id, ILeaderBoard lb) { leaderboarddata lbd = null; leaderboard dbLb = this.GetLeaderBoard(lb); if (!this.idToLeaderBoardData.TryGetValue(this.GetLookupKey(id, lb.LeaderBoardKey), out lbd)) { lbd = new leaderboarddata { isPlayer = lb.IsPlayerBoard, leaderboard = dbLb, year = this.year }; if (lb.IsPlayerBoard) { lbd.playerId = id; } else { lbd.teamId = id; } dbLb.leaderboarddatas.Add(lbd); this.boardToData[dbLb.key].Add(lbd); } return(lbd); }
public LeaderBoardDataWebResponse(leaderboarddata boardData) { this.Value = boardData.value; this.Rank = boardData.rank; this.EntityId = boardData.isPlayer ? boardData.player.id : boardData.team.id; this.EntityName = boardData.isPlayer ? boardData.player.name : boardData.team.teamName; this.FormattedValue = boardData.formattedValue; }
private string TryGetFormattedValue(Dictionary <string, leaderboarddata> dictionary, string leaderboardName) { leaderboarddata leaderboarddata = null; if (dictionary.TryGetValue(leaderboardName, out leaderboarddata)) { return(leaderboarddata.formattedValue); } return(string.Empty); }
public void DeleteLeaderBoardData(int id, string leaderBoardKey) { leaderboarddata lbd = null; string key = this.GetLookupKey(id, leaderBoardKey); if (this.idToLeaderBoardData.TryGetValue(key, out lbd)) { this.db.leaderboarddatas.Remove(lbd); this.idToLeaderBoardData.Remove(key); //lbd.leaderboard.leaderboarddatas.Remove(lbd); ISet <leaderboarddata> lbdSet = null; if (this.boardToData.TryGetValue(leaderBoardKey, out lbdSet)) { lbdSet.Remove(lbd); } } }