public void ItDoesntChangeTheNameIfThePlayerIsActive()
        {
            string playerName = "some player name";
            var    result     = PlayerNameBuilder.BuildPlayerName(playerName, true);

            Assert.That(result, Is.EqualTo(playerName));
        }
        public void ItAddsAnInactiveSuffixToThePlayerNameIfThePlayerIsInactive()
        {
            string playerName = "x";
            var    result     = PlayerNameBuilder.BuildPlayerName(playerName, false);

            Assert.That(result, Is.EqualTo("x (INACTIVE)"));
        }
Example #3
0
        public GameResultViewModel Build(PlayerGameResult playerGameResult, bool showPointsScored = false)
        {
            Validate(playerGameResult);

            GameResultViewModel result = new GameResultViewModel
            {
                PlayerId           = playerGameResult.PlayerId,
                PlayerName         = PlayerNameBuilder.BuildPlayerName(playerGameResult.Player.Name, playerGameResult.Player.Active),
                PointsScored       = playerGameResult.PointsScored,
                GameRank           = playerGameResult.GameRank,
                NemePointsSummary  = new NemePointsSummaryViewModel(playerGameResult.NemeStatsPointsAwarded, playerGameResult.GameDurationBonusPoints, playerGameResult.GameWeightBonusPoints),
                GameDefinitionId   = playerGameResult.PlayedGame.GameDefinition.Id,
                GameDefinitionName = playerGameResult.PlayedGame.GameDefinition.Name,
                PlayedGameId       = playerGameResult.PlayedGameId,
                DatePlayed         = playerGameResult.PlayedGame.DatePlayed,
                BoardGameGeekUri   = BoardGameGeekUriBuilder.BuildBoardGameGeekGameUri(playerGameResult.PlayedGame.GameDefinition.BoardGameGeekGameDefinitionId),
                WinnerType         = playerGameResult.PlayedGame.WinnerType,
                ShowPointsScored   = showPointsScored
            };

            if (playerGameResult.PlayedGame.GameDefinition.BoardGameGeekGameDefinition != null)
            {
                result.ThumbnailImageUrl = playerGameResult.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.Thumbnail;
                result.ImageUrl          = playerGameResult.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.Image;
            }

            return(result);
        }
Example #4
0
        public void ItPopulatesTheOpposingPlayerName()
        {
            var expectedPlayer     = playerDetails.PlayerVersusPlayersStatistics.First(x => x.OpposingPlayerId == normalPlayer.OpposingPlayerId);
            var actualPlayer       = playerDetailsViewModel.PlayerVersusPlayers.PlayerSummaries.First(x => x.PlayerId == normalPlayer.OpposingPlayerId);
            var expectedPlayerName = PlayerNameBuilder.BuildPlayerName(expectedPlayer.OpposingPlayerName, expectedPlayer.OpposingPlayerActive);

            Assert.That(actualPlayer.PlayerName,
                        Is.EqualTo(expectedPlayerName));
        }
Example #5
0
        public GameDefinitionDetailsViewModel Build(GameDefinitionSummary gameDefinitionSummary, ApplicationUser currentUser)
        {
            BoardGameGeekInfoViewModel boardGameGeekInfoViewModel = null;

            if (gameDefinitionSummary.BoardGameGeekGameDefinitionId.HasValue)
            {
                boardGameGeekInfoViewModel = _transformer.Transform <BoardGameGeekInfoViewModel>(gameDefinitionSummary.BoardGameGeekInfo);
            }
            var viewModel = new GameDefinitionDetailsViewModel
            {
                GameDefinitionId         = gameDefinitionSummary.Id,
                GameDefinitionName       = gameDefinitionSummary.Name,
                TotalNumberOfGamesPlayed = gameDefinitionSummary.TotalNumberOfGamesPlayed,
                AveragePlayersPerGame    = $"{gameDefinitionSummary.AveragePlayersPerGame:0.#}",
                GamingGroupId            = gameDefinitionSummary.GamingGroupId,
                GamingGroupName          = gameDefinitionSummary.GamingGroupName,
                UserCanEdit       = (currentUser != null && gameDefinitionSummary.GamingGroupId == currentUser.CurrentGamingGroupId),
                BoardGameGeekInfo = boardGameGeekInfoViewModel
            };

            if (gameDefinitionSummary.PlayedGames == null)
            {
                viewModel.PlayedGames = new List <PlayedGameDetailsViewModel>();
            }
            else
            {
                viewModel.PlayedGames = (from playedGame in gameDefinitionSummary.PlayedGames
                                         select _playedGameDetailsViewModelBuilder.Build(playedGame, currentUser, true))
                                        .ToList();
            }

            if (!(gameDefinitionSummary.Champion is NullChampion))
            {
                viewModel.ChampionName = PlayerNameBuilder.BuildPlayerName(
                    gameDefinitionSummary.Champion.Player.Name,
                    gameDefinitionSummary.Champion.Player.Active);
                viewModel.ChampionPlayerId    = gameDefinitionSummary.Champion.Player.Id;
                viewModel.WinPercentage       = gameDefinitionSummary.Champion.WinPercentage;
                viewModel.NumberOfGamesPlayed = gameDefinitionSummary.Champion.NumberOfGames;
                viewModel.NumberOfWins        = gameDefinitionSummary.Champion.NumberOfWins;
            }

            if (!(gameDefinitionSummary.PreviousChampion is NullChampion))
            {
                viewModel.PreviousChampionName = PlayerNameBuilder.BuildPlayerName(
                    gameDefinitionSummary.PreviousChampion.Player.Name,
                    gameDefinitionSummary.PreviousChampion.Player.Active);
                viewModel.PreviousChampionPlayerId = gameDefinitionSummary.PreviousChampion.Player.Id;
            }

            viewModel.GameDefinitionPlayersSummary = gameDefinitionSummary.PlayerWinRecords
                                                     .Select(_transformer.Transform <GameDefinitionPlayerSummaryViewModel>)
                                                     .ToList();

            return(viewModel);
        }
 private static void SetPreviousChampionStuff(GameDefinitionSummary gameDefinitionSummary,
                                              GameDefinitionDetailsViewModel viewModel)
 {
     if (!(gameDefinitionSummary.PreviousChampion is NullChampion))
     {
         viewModel.PreviousChampionName = PlayerNameBuilder.BuildPlayerName(
             gameDefinitionSummary.PreviousChampion.Player.Name,
             gameDefinitionSummary.PreviousChampion.Player.Active);
         viewModel.PreviousChampionPlayerId = gameDefinitionSummary.PreviousChampion.Player.Id;
     }
 }
 private static void SetChampionStuff(GameDefinitionSummary gameDefinitionSummary,
                                      GameDefinitionDetailsViewModel viewModel)
 {
     if (!(gameDefinitionSummary.Champion is NullChampion))
     {
         viewModel.ChampionName = PlayerNameBuilder.BuildPlayerName(
             gameDefinitionSummary.Champion.Player.Name,
             gameDefinitionSummary.Champion.Player.Active);
         viewModel.ChampionPlayerId    = gameDefinitionSummary.Champion.Player.Id;
         viewModel.WinPercentage       = gameDefinitionSummary.Champion.WinPercentage;
         viewModel.NumberOfGamesPlayed = gameDefinitionSummary.Champion.NumberOfGames;
         viewModel.NumberOfWins        = gameDefinitionSummary.Champion.NumberOfWins;
     }
 }
        private static void PopulatePlayerVersusPlayersViewModel(PlayerDetails playerDetails,
                                                                 Dictionary <int, string> playerIdToRegisteredUserEmailAddressDictionary,
                                                                 PlayerDetailsViewModel playerDetailsViewModel)
        {
            var playerVersusPlayers = new PlayersSummaryViewModel
            {
                WinLossHeader = "Win - Loss Record vs. Player"
            };

            foreach (var playerVersusPlayerStatistics in playerDetails.PlayerVersusPlayersStatistics)
            {
                var winPercentage = GetWinPercentage(playerVersusPlayerStatistics);

                string registeredUserEmail;
                playerIdToRegisteredUserEmailAddressDictionary.TryGetValue(
                    playerVersusPlayerStatistics.OpposingPlayerId, out registeredUserEmail);

                var playerSummaryViewModel = new PlayerSummaryViewModel
                {
                    PlayerName = PlayerNameBuilder.BuildPlayerName(playerVersusPlayerStatistics.OpposingPlayerName, playerVersusPlayerStatistics.OpposingPlayerActive),
                    PlayerId   = playerVersusPlayerStatistics.OpposingPlayerId,
                    RegisteredUserEmailAddress = registeredUserEmail,
                    GamesWon      = playerVersusPlayerStatistics.NumberOfGamesWonVersusThisPlayer,
                    GamesLost     = playerVersusPlayerStatistics.NumberOfGamesLostVersusThisPlayer,
                    WinPercentage = (int)winPercentage
                };

                if (playerDetails.CurrentNemesis != null &&
                    playerDetails.CurrentNemesis.NemesisPlayerId == playerVersusPlayerStatistics.OpposingPlayerId)
                {
                    playerSummaryViewModel.SpecialBadgeTypes.Add(new NemesisBadgeViewModel());
                }

                if (playerDetails.PreviousNemesis?.NemesisPlayerId == playerVersusPlayerStatistics.OpposingPlayerId)
                {
                    playerSummaryViewModel.SpecialBadgeTypes.Add(new PreviousNemesisBadgeViewModel());
                }

                if (playerDetails.Minions.Any(x => x.Id == playerVersusPlayerStatistics.OpposingPlayerId))
                {
                    playerSummaryViewModel.SpecialBadgeTypes.Add(new MinionBadgeViewModel());
                }

                playerVersusPlayers.PlayerSummaries.Add(playerSummaryViewModel);
            }

            playerDetailsViewModel.PlayerVersusPlayers = playerVersusPlayers;
        }
Example #9
0
        public static void Configure()
        {
            Mapper.CreateMap <ApplicationLinkageMessage, ApplicationLinkage>(MemberList.Destination);
            Mapper.CreateMap <ApplicationLinkage, ApplicationLinkageMessage>(MemberList.Destination);
            Mapper.CreateMap <TopGamingGroupSummary, TopGamingGroupSummaryViewModel>(MemberList.Source);
            Mapper.CreateMap <VotableFeature, VotableFeatureViewModel>(MemberList.Destination);
            Mapper.CreateMap <NewUserMessage, NewUser>(MemberList.Destination)
            .ForMember(x => x.GamingGroupInvitationId, opt => opt.Ignore())
            .ForMember(x => x.Source, opt => opt.Ignore());
            Mapper.CreateMap <NewlyRegisteredUser, NewlyRegisteredUserMessage>(MemberList.Source);
            Mapper.CreateMap <PlayedGameApplicationLinkage, ApplicationLinkage>(MemberList.Destination);
            Mapper.CreateMap <PlayedGameSearchResult, PlayedGameSearchResultMessage>(MemberList.Destination)
            .ForSourceMember(x => x.PlayerGameResults, opt => opt.Ignore())
            .ForMember(x => x.DateLastUpdated, opt => opt.MapFrom(src => src.DateLastUpdated.ToString("yyyy-MM-dd")))
            .ForMember(x => x.DatePlayed, opt => opt.MapFrom(src => src.DatePlayed.ToString("yyyy-MM-dd")));
            Mapper.CreateMap <PlayerResult, PlayerGameResultMessage>(MemberList.Destination)
            .ForMember(x => x.TotalNemeStatsPointsAwarded, opt => opt.MapFrom(src => src.TotalPoints));
            Mapper.CreateMap <PlayerGameSummary, PlayerGameSummaryViewModel>(MemberList.Source);
            Mapper.CreateMap <PlayerInfoForUser, PlayerInfoForUserMessage>(MemberList.Destination);
            Mapper.CreateMap <GamingGroupInfoForUser, GamingGroupInfoForUserMessage>(MemberList.Destination);
            Mapper.CreateMap <UserInformation, UserInformationMessage>(MemberList.Destination);
            Mapper.CreateMap <PlayerWinRecord, PlayerSummaryViewModel>(MemberList.Destination)
            .ForMember(x => x.SpecialBadgeTypes, opt => opt.MapFrom(src => src.MapSpecialBadges()))
            .ForMember(x => x.PlayerName, opt => opt.MapFrom(src => PlayerNameBuilder.BuildPlayerName(src.PlayerName, src.PlayerActive)));
            Mapper.CreateMap <PlayerWinRecord, GameDefinitionPlayerSummaryViewModel>(MemberList.Destination)
            .ForMember(x => x.SpecialBadgeTypes, opt => opt.MapFrom(src => src.MapSpecialBadges()))
            .ForMember(x => x.PlayerName, opt => opt.MapFrom(src => PlayerNameBuilder.BuildPlayerName(src.PlayerName, src.PlayerActive)));
            Mapper.CreateMap <GameDefinitionTotal, GameDefinitionTotalMessage>(MemberList.Destination);
            Mapper.CreateMap <GameDefinitionTotals, GameDefinitionTotalsMessage>(MemberList.Destination);
            Mapper.CreateMap <GameDefinition, GameDefinitionEditViewModel>(MemberList.Destination)
            .ForMember(x => x.GameDefinitionId, opt => opt.MapFrom(src => src.Id));
            Mapper.CreateMap <GameDefinitionEditViewModel, GameDefinitionUpdateRequest>(MemberList.Destination);
            Mapper.CreateMap <CreateGameDefinitionViewModel, CreateGameDefinitionRequest>(MemberList.Destination)
            //for now, GamingGroupId is optional and only passed from the API
            .ForMember(x => x.GamingGroupId, opt => opt.Ignore());
            Mapper.CreateMap <PlayerStatistics, PlayerStatisticsMessage>(MemberList.Destination)
            .ForMember(x => x.BaseNemePoints, opt => opt.MapFrom(src => src.NemePointsSummary.BaseNemePoints))
            .ForMember(x => x.GameDurationBonusNemePoints, opt => opt.MapFrom(src => src.NemePointsSummary.GameDurationBonusNemePoints))
            .ForMember(x => x.WeightBonusNemePoints, opt => opt.MapFrom(src => src.NemePointsSummary.WeightBonusNemePoints))
            .ForMember(x => x.TotalPoints, opt => opt.MapFrom(src => src.NemePointsSummary.TotalPoints));
            Mapper.CreateMap <PlayerQuickStats, PlayerQuickStatsViewModel>(MemberList.Destination);
            Mapper.CreateMap <NemePointsSummary, NemePointsSummaryViewModel>(MemberList.Destination)
            .ConstructUsing(x => new NemePointsSummaryViewModel(x.BaseNemePoints, x.GameDurationBonusNemePoints, x.WeightBonusNemePoints));
            Mapper.CreateMap <TrendingGame, TrendingGameViewModel>(MemberList.Destination);
            Mapper.CreateMap <BoardGameGeekGameDefinition, BoardGameGeekGameDefinitionViewModel>()
            .ForMember(m => m.BoardGameGeekUri, opt => opt.MapFrom(src => BoardGameGeekUriBuilder.BuildBoardGameGeekGameUri(src.Id)))
            .ForMember(m => m.Categories, opt => opt.MapFrom(src => src.Categories.Select(c => c.CategoryName)))
            .ForMember(m => m.Mechanics, opt => opt.MapFrom(src => src.Mechanics.Select(c => c.MechanicName)))
            .ForMember(m => m.WeightDescription, opt => opt.Ignore());
            Mapper.CreateMap <PlayedGameQuickStats, PlayedGameQuickStatsViewModel>(MemberList.Destination);

            Mapper.CreateMap <PlayedGameMessage, NewlyCompletedGame>(MemberList.Destination)
            .ForMember(m => m.DatePlayed, opt => opt.ResolveUsing(x =>
            {
                var datePlayed = DateTime.UtcNow;

                if (!string.IsNullOrWhiteSpace(x.DatePlayed))
                {
                    datePlayed = DateTime.ParseExact(x.DatePlayed, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None);
                }

                return(datePlayed);
            }));

            Mapper.CreateMap <UpdatedPlayedGameMessage, UpdatedGame>(MemberList.Destination)
            .ForMember(m => m.DatePlayed, opt => opt.ResolveUsing(x =>
            {
                var datePlayed = DateTime.UtcNow;

                if (!string.IsNullOrWhiteSpace(x.DatePlayed))
                {
                    datePlayed = DateTime.ParseExact(x.DatePlayed, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None);
                }

                return(datePlayed);
            }));

            Mapper.CreateMap <PlayedGameFilterMessage, PlayedGameFilter>(MemberList.Source);

            Mapper.CreateMap <BoardGameGeekInfo, BoardGameGeekInfoViewModel>()
            .ForMember(m => m.HideLinkToGlobalStats, opt => opt.Ignore())
            .ForMember(m => m.BoardGameGeekUri,
                       opt => opt.MapFrom(src => BoardGameGeekUriBuilder.BuildBoardGameGeekGameUri(src.BoardGameGeekGameDefinitionId)))
            .ForMember(m => m.BoardGameGeekAverageWeightDescription,
                       opt => opt.MapFrom(src => new WeightTierCalculator().GetWeightTier(src.BoardGameGeekAverageWeight).ToString()))
            .ForMember(m => m.BoardGameGeekWeightPercent,
                       opt => opt.MapFrom(src => src.BoardGameGeekAverageWeight.HasValue ? ((src.BoardGameGeekAverageWeight.Value * 100) / BoardGameGeekGameDefinitionViewModel.MaxBggWeight).ToString(CultureInfo.InvariantCulture).Replace(",", ".") : "0"))
            .ForMember(m => m.AveragePlayTime,
                       opt =>
                       opt.MapFrom(
                           src =>
                           !src.MaxPlayTime.HasValue
                                    ? src.MinPlayTime
                                    : (src.MinPlayTime.HasValue ? (src.MaxPlayTime.Value + src.MinPlayTime.Value) / 2 : src.MaxPlayTime)));

            Mapper.CreateMap <UniversalGameStats, UniversalGameStatsViewModel>()
            .ForMember(m => m.AveragePlayersPerGame,
                       opt => opt.MapFrom(src => $"{(src.AveragePlayersPerGame ?? 0):0.#}"));

            Mapper.CreateMap <BoardGameGeekGameSummary, UniversalGameDetailsViewModel>(MemberList.Destination)
            .ForMember(m => m.GamingGroupGameDefinitionSummary, opt => opt.Ignore());

            Mapper.CreateMap <ChampionData, ChampionDataModel>(MemberList.Destination);
        }
Example #10
0
        public void ItCopiesThePlayerName()
        {
            var expectedName = PlayerNameBuilder.BuildPlayerName(playerDetails.Name, playerDetails.Active);

            Assert.AreEqual(expectedName, playerDetailsViewModel.PlayerName);
        }
Example #11
0
 public void ItBuildsThePlayerName()
 {
     Assert.AreEqual(PlayerNameBuilder.BuildPlayerName(playerGameResult.Player.Name, playerGameResult.Player.Active), playerGameResultDetails.PlayerName);
 }
 public void ItSetsThePreviousChampionNameWhenThereIsAPreviousChampion()
 {
     Assert.That(_viewModel.PreviousChampionName, Is.EqualTo(PlayerNameBuilder.BuildPlayerName(_previousChampionPlayer.Name, _previousChampionPlayer.Active)));
 }