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
            });
        }
Пример #3
0
        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);
        }
Пример #4
0
 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;
 }
Пример #5
0
        private string TryGetFormattedValue(Dictionary <string, leaderboarddata> dictionary, string leaderboardName)
        {
            leaderboarddata leaderboarddata = null;

            if (dictionary.TryGetValue(leaderboardName, out leaderboarddata))
            {
                return(leaderboarddata.formattedValue);
            }

            return(string.Empty);
        }
Пример #6
0
        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);
                }
            }
        }