コード例 #1
0
        public IList <PlayerWinRecord> GetPlayerWinRecords(int gameDefinitionId)
        {
            var data = dataContext.MakeRawSqlQuery <PlayerWinRecordWithFlatPoints>(SQL_GET_PLAYER_INFO_FOR_GIVEN_GAME_DEFINITION,
                                                                                   new SqlParameter("GameDefinitionId", gameDefinitionId));

            var results = data.Select(x => new PlayerWinRecord
            {
                PlayerId             = x.PlayerId,
                NemePointsSummary    = new NemePointsSummary(x.BaseNemePoints, x.GameDurationBonusNemePoints, x.WeightBonusNemePoints),
                TotalGamesPlayed     = x.TotalGamesPlayed,
                AveragePointsPerGame = x.AveragePointsPerGame,
                PlayerName           = x.PlayerName,
                GamesWon             = x.GamesWon,
                WinPercentage        = x.WinPercentage,
                PlayerActive         = x.PlayerActive,
                GamesLost            = x.GamesLost,
                IsChampion           = x.IsChampion,
                IsFormerChampion     = x.IsFormerChampion
            }).ToList();

            results.ForEach(record =>
            {
                record.WinPercentage    = WinPercentageCalculator.CalculateWinPercentage(record.GamesWon, record.GamesLost);
                record.TotalGamesPlayed = record.GamesLost + record.GamesWon;
                if (record.TotalGamesPlayed > 0)
                {
                    record.AveragePointsPerGame = record.TotalGamesPlayed > 0 ? (float)record.NemePointsSummary.TotalPoints / record.TotalGamesPlayed : 0;
                }
            });

            return(results);
        }
コード例 #2
0
        public PlayerWithNemesisViewModel Build(PlayerWithNemesis playerWithNemesis, ApplicationUser currentUser)
        {
            ValidatePlayerNotNull(playerWithNemesis);

            AddInactivePlayerSuffix(playerWithNemesis);

            PlayerWithNemesisViewModel model = new PlayerWithNemesisViewModel
            {
                PlayerId                  = playerWithNemesis.PlayerId,
                PlayerName                = playerWithNemesis.PlayerName,
                PlayerActive              = playerWithNemesis.PlayerActive,
                PlayerRegistered          = playerWithNemesis.PlayerRegistered,
                UserCanEdit               = (currentUser != null && playerWithNemesis.GamingGroupId == currentUser.CurrentGamingGroupId),
                NemesisPlayerId           = playerWithNemesis.NemesisPlayerId,
                NemesisPlayerName         = playerWithNemesis.NemesisPlayerName,
                PreviousNemesisPlayerId   = playerWithNemesis.PreviousNemesisPlayerId,
                PreviousNemesisPlayerName = playerWithNemesis.PreviousNemesisPlayerName,
                NumberOfPlayedGames       = playerWithNemesis.GamesLost + playerWithNemesis.GamesWon,
                OverallWinPercentage      = WinPercentageCalculator.CalculateWinPercentage(playerWithNemesis.GamesWon, playerWithNemesis.GamesLost),
                TotalPoints               = playerWithNemesis.TotalPoints,
                TotalChampionedGames      = playerWithNemesis.TotalChampionedGames
            };

            return(model);
        }
コード例 #3
0
        public PlayerWithNemesisViewModel Build(PlayerWithNemesis playerWithNemesis, string email,
                                                ApplicationUser currentUser)
        {
            ValidatePlayerNotNull(playerWithNemesis);

            AddInactivePlayerSuffix(playerWithNemesis);

            var totalGamesPlayed = playerWithNemesis.GamesLost + playerWithNemesis.GamesWon;
            var model            = new PlayerWithNemesisViewModel
            {
                PlayerId                   = playerWithNemesis.PlayerId,
                PlayerName                 = playerWithNemesis.PlayerName,
                PlayerActive               = playerWithNemesis.PlayerActive,
                PlayerRegistered           = playerWithNemesis.PlayerRegistered,
                RegisteredUserEmailAddress = email,
                UserCanEdit                = (currentUser != null && playerWithNemesis.GamingGroupId == currentUser.CurrentGamingGroupId),
                NemesisPlayerId            = playerWithNemesis.NemesisPlayerId,
                NemesisPlayerName          = playerWithNemesis.NemesisPlayerName,
                PreviousNemesisPlayerId    = playerWithNemesis.PreviousNemesisPlayerId,
                PreviousNemesisPlayerName  = playerWithNemesis.PreviousNemesisPlayerName,
                NumberOfPlayedGames        = totalGamesPlayed,
                OverallWinPercentage       = WinPercentageCalculator.CalculateWinPercentage(playerWithNemesis.GamesWon, playerWithNemesis.GamesLost),
                NemePointsSummary          = new NemePointsSummaryViewModel(playerWithNemesis.NemePointsSummary),
                TotalChampionedGames       = playerWithNemesis.TotalChampionedGames,
                AveragePointsPerGame       = totalGamesPlayed > 0 ? (float)playerWithNemesis.NemePointsSummary.TotalPoints / (float)totalGamesPlayed : 0,
                AchievementsPerLevel       = playerWithNemesis.AchievementsPerLevel
            };

            return(model);
        }
コード例 #4
0
        public IList <PlayerGameSummary> GetPlayerGameSummaries(int playerId)
        {
            var data = dataContext.MakeRawSqlQuery <PlayerGameSummary>(SQL_GET_PLAYER_GAME_SUMMARY_INFO,
                                                                       new SqlParameter("PlayerId", playerId));

            var results = data.ToList();

            results.ForEach(record => record.WinPercentage = WinPercentageCalculator.CalculateWinPercentage(record.NumberOfGamesWon, record.NumberOfGamesLost));

            return(results);
        }
コード例 #5
0
        public IList <PlayerWinRecord> GetPlayerWinRecords(int gameDefinitionId)
        {
            DbRawSqlQuery <PlayerWinRecord> data = dataContext.MakeRawSqlQuery <PlayerWinRecord>(SQL_GET_PLAYER_INFO_FOR_GIVEN_GAME_DEFINITION,
                                                                                                 new SqlParameter("GameDefinitionId", gameDefinitionId));

            var results = data.ToList();

            results.ForEach(record => record.WinPercentage = WinPercentageCalculator.CalculateWinPercentage(record.GamesWon, record.GamesLost));

            return(results);
        }
コード例 #6
0
        public virtual List <TopPlayer> GetTopPlayers(int numberOfPlayersToRetrieve)
        {
            DbRawSqlQuery <TopPlayer> data = dataContext.MakeRawSqlQuery <TopPlayer>(string.Format(SQL_GET_TOP_PLAYERS, numberOfPlayersToRetrieve));

            List <TopPlayer> topPlayers = data.ToList();

            //WinPercentage as it is originally pulled back from the query contains the number of games won and we have to
            //do the below math to switch it to a win %
            topPlayers.ForEach(player => player.WinPercentage = WinPercentageCalculator.CalculateWinPercentage(player.WinPercentage, player.TotalNumberOfGamesPlayed));

            return(topPlayers);
        }
コード例 #7
0
        public virtual List <TopPlayer> GetTopPlayers(int numberOfPlayersToRetrieve)
        {
            var data = dataContext.MakeRawSqlQuery <TopPlayerWithFlatPoints>(string.Format(SQL_GET_TOP_PLAYERS, numberOfPlayersToRetrieve));

            var topPlayers = data.Select(x => new TopPlayer
            {
                NemePointsSummary        = new NemePointsSummary(x.BaseNemePoints, x.GameDurationBonusPoints, x.GameWeightBonusPoints),
                PlayerName               = x.PlayerName,
                WinPercentage            = x.WinPercentage,
                PlayerId                 = x.PlayerId,
                TotalNumberOfGamesPlayed = x.TotalNumberOfGamesPlayed
            }).ToList()
                             .ToList();

            //WinPercentage as it is originally pulled back from the query contains the number of games won and we have to
            //do the below math to switch it to a win %
            topPlayers.ForEach(player => player.WinPercentage = WinPercentageCalculator.CalculateWinPercentage(player.WinPercentage, player.TotalNumberOfGamesPlayed - player.WinPercentage));

            return(topPlayers);
        }
コード例 #8
0
 public int TestOtherCases(int numberOfWins, int numberOfLosses)
 {
     return(WinPercentageCalculator.CalculateWinPercentage(numberOfWins, numberOfLosses));
 }
コード例 #9
0
        public void ItReturnsZeroIfThereAreOnlyLosses()
        {
            var result = WinPercentageCalculator.CalculateWinPercentage(0, 21);

            Assert.That(result, Is.EqualTo(0));
        }
コード例 #10
0
        public void ItReturnsOneHundredPercentIfThereAreOnlyWins()
        {
            var result = WinPercentageCalculator.CalculateWinPercentage(42, 0);

            Assert.That(result, Is.EqualTo(100));
        }
コード例 #11
0
        public void ItReturnsZeroWhenThereAreZeroGamesPlayed()
        {
            var result = WinPercentageCalculator.CalculateWinPercentage(0, 0);

            Assert.That(result, Is.EqualTo(0));
        }