Example #1
0
        public async Task <double> PrecentileFinder(int userID)
        {
            var currentUserScore = await _pokemonUserSQLStore.SelectPlayerAverageScore(userID);

            var listOfUsers = await _pokemonUserSQLStore.SelectAllScores();

            var numOfBottomPrecentile = 0;
            //var userCount = listOfUsers.Count();
            var listOfUsersInList = new List <double>();


            foreach (var allPlayerScores in listOfUsers)
            {
                listOfUsersInList.Add(allPlayerScores);
            }
            var userCount = listOfUsersInList.Count();

            foreach (var allPlayersScoress in listOfUsersInList)
            {
                if (allPlayersScoress < currentUserScore)

                {
                    numOfBottomPrecentile += 1;
                }
            }

            var userPrecentile = (1d - (Convert.ToDouble(numOfBottomPrecentile) / Convert.ToDouble(userCount)));

            return(userPrecentile);
        }
        public async Task <double> ReturnPlayersAveragePercent()
        {
            var user = await _userManager.GetUserAsync(_httpContextAccessor.HttpContext.User);

            var userAverageScore = await _pokemonUserSQLStore.SelectPlayerAverageScore(user.Id);

            return(userAverageScore);
        }
        public async Task <PlayerRankModel> AssemblePlayerRank()
        {
            var user = await _userManager.GetUserAsync(_httpContextAccessor.HttpContext.User);

            var playerRank = new PlayerRankModel
            {
                PlayerPerrcentile = await _quizCalculations.PrecentileFinder(user.Id) * 100d,
                PlayerRank        = await _quizCalculations.RankFinder(user.Id),
                AverageScore      = await _pokemonUserSQLStore.SelectPlayerAverageScore(user.Id) * 100d,
                TopTenPlayers     = new List <string> (),
                Username          = user.UserName
            };

            foreach (var player in await SelectTopTenPlayers())
            {
                playerRank.TopTenPlayers.Add(player);
            }

            return(playerRank);
        }