예제 #1
0
        public PlayersToCreateModel GetPlayersToCreate(string currentUserId, int currentGamingGroupId)
        {
            var currentUserPlayer = dataContext.GetQueryable <Player>().FirstOrDefault(p => p.ApplicationUserId == currentUserId && p.GamingGroupId == currentGamingGroupId);

            var recentPlayersQuery = GetPlayersToCreateQueryable(currentUserPlayer, currentGamingGroupId)
                                     .OrderByDescending(
                p => p.PlayerGameResults
                .Select(pgr => pgr.PlayedGame.DatePlayed)
                .OrderByDescending(d => d)
                .FirstOrDefault())
                                     .ThenBy(p => p.Name)
                                     .Take(5);

            var otherPlayersQuery = GetPlayersToCreateQueryable(currentUserPlayer, currentGamingGroupId)
                                    .Where(p => recentPlayersQuery.All(rp => rp.Id != p.Id))
                                    .OrderBy(p => p.Name);

            var result = new PlayersToCreateModel
            {
                UserPlayer    = GetPlayerInfoForUser(currentUserPlayer),
                OtherPlayers  = otherPlayersQuery.Select(GetPlayerInfoForUser).ToList(),
                RecentPlayers = recentPlayersQuery.Select(GetPlayerInfoForUser).ToList()
            };

            return(result);
        }
예제 #2
0
        public PlayersToCreateModel GetPlayersToCreate(string currentUserId, int currentGamingGroupId)
        {
            var allPlayersOrderedByLastDatePlayedThenName = _dataContext.GetQueryable <Player>()
                                                            .Where(player => player.GamingGroupId == currentGamingGroupId && player.Active)

                                                            .OrderByDescending(
                p => p.PlayerGameResults
                .Select(pgr => pgr.PlayedGame.DatePlayed)
                .OrderByDescending(d => d)
                .FirstOrDefault())
                                                            .ThenBy(p => p.Name)
                                                            .Select(x => new
            {
                PlayerInfo = new PlayerInfoForUser
                {
                    GamingGroupId = currentGamingGroupId,
                    PlayerId      = x.Id,
                    PlayerName    = x.Name
                },
                IsCurrentUserPlayer = x.ApplicationUserId == currentUserId
            })
                                                            .ToList();

            var currentUserPlayerResult = allPlayersOrderedByLastDatePlayedThenName.FirstOrDefault(x => x.IsCurrentUserPlayer);

            var recentPlayers = new List <PlayerInfoForUser>();
            var otherPlayers  = new List <PlayerInfoForUser>();

            int numberOfPlayers = 0;

            foreach (var playerResult in allPlayersOrderedByLastDatePlayedThenName)
            {
                if (playerResult.IsCurrentUserPlayer)
                {
                    continue;
                }

                if (numberOfPlayers < MAX_NUMBER_OF_RECENT_PLAYERS)
                {
                    recentPlayers.Add(playerResult.PlayerInfo);
                }
                else
                {
                    otherPlayers.Add(playerResult.PlayerInfo);
                }
                numberOfPlayers++;
            }

            var result = new PlayersToCreateModel
            {
                UserPlayer    = currentUserPlayerResult?.PlayerInfo,
                OtherPlayers  = otherPlayers.OrderBy(x => x.PlayerName).ToList(),
                RecentPlayers = recentPlayers
            };

            return(result);
        }
예제 #3
0
        public override void TestSetUp()
        {
            base.TestSetUp();

            players = new PlayersToCreateModel {
                UserPlayer = new PlayerInfoForUser()
                {
                    PlayerId = playerId
                }, OtherPlayers = new List <PlayerInfoForUser>(), RecentPlayers = new List <PlayerInfoForUser>()
            };

            autoMocker.Get <IGameDefinitionRetriever>().Expect(x => x.GetMostPlayedGames(Arg <GetMostPlayedGamesQuery> .Is.Anything)).Repeat.Once().Return(new PagedList <GameDefinitionDisplayInfo>(new List <GameDefinitionDisplayInfo>(), 1, 1));
            autoMocker.Get <IGameDefinitionRetriever>().Expect(x => x.GetRecentGames(Arg <GetRecentPlayedGamesQuery> .Is.Anything)).Repeat.Once().Return(new PagedList <GameDefinitionDisplayInfo>(new List <GameDefinitionDisplayInfo>(), 1, 1));
            autoMocker.Get <IPlayerRetriever>().Expect(x => x.GetPlayersToCreate(currentUser.Id, currentUser.CurrentGamingGroupId)).Repeat.Once().Return(players);
        }
        public override void TestSetUp()
        {
            base.TestSetUp();

            _players = new PlayersToCreateModel {
                UserPlayer = new PlayerInfoForUser {
                    PlayerId = _playerId
                }, OtherPlayers = new List <PlayerInfoForUser>(), RecentPlayers = new List <PlayerInfoForUser>()
            };

            AutoMocker.Get <IGameDefinitionRetriever>().Expect(x => x.GetMostPlayedGames(Arg <GetMostPlayedGamesQuery> .Is.Anything)).Repeat.Once().Return(new PagedList <GameDefinitionDisplayInfo>(new List <GameDefinitionDisplayInfo>(), 1, 1));
            AutoMocker.Get <IGameDefinitionRetriever>().Expect(x => x.GetRecentGames(Arg <GetRecentPlayedGamesQuery> .Is.Anything)).Repeat.Once().Return(new PagedList <GameDefinitionDisplayInfo>(new List <GameDefinitionDisplayInfo>(), 1, 1));
            AutoMocker.Get <IPlayerRetriever>().Expect(x => x.GetPlayersToCreate(CurrentUser.Id, EXPECTED_GAMING_GROUP_ID)).Repeat.Once().Return(_players);

            var expectedMapper = MockRepository.GenerateMock <ICustomMapper <GameDefinitionDisplayInfo, GameDefinitionDisplayInfoViewModel> >();

            AutoMocker.Get <IMapperFactory>()
            .Expect(mock => mock.GetMapper <GameDefinitionDisplayInfo, GameDefinitionDisplayInfoViewModel>())
            .Return(expectedMapper);
            expectedMapper.Expect(mock => mock.Map(Arg <IPagedList <GameDefinitionDisplayInfo> > .Is.Anything)).Return(new List <GameDefinitionDisplayInfoViewModel>());
        }
예제 #5
0
        public PlayersToCreateModel GetPlayersForEditingPlayedGame(int playedGameId, ApplicationUser currentUser)
        {
            var recentPlayers = _dataContext.GetQueryable <PlayerGameResult>()
                                .Where(x => x.PlayedGameId == playedGameId)
                                .Select(x => new PlayerInfoForUser
            {
                PlayerId      = x.PlayerId,
                GamingGroupId = x.PlayedGame.GamingGroupId,
                PlayerName    = x.Player.Name
            })
                                .OrderBy(x => x.PlayerName)
                                .ToList();

            var gamingGroupId   = recentPlayers.First().GamingGroupId;
            var playerIdsInGame = recentPlayers.Select(x => x.PlayerId).ToList();

            var otherPlayers = _dataContext.GetQueryable <Player>()
                               .Where(x => x.Active &&
                                      x.GamingGroupId == gamingGroupId &&
                                      !playerIdsInGame.Contains(x.Id))
                               .Select(x => new PlayerInfoForUser
            {
                PlayerId      = x.Id,
                GamingGroupId = x.GamingGroupId,
                PlayerName    = x.Name
            })
                               .OrderBy(x => x.PlayerName)
                               .ToList();

            var result = new PlayersToCreateModel
            {
                RecentPlayers = recentPlayers,
                OtherPlayers  = otherPlayers,
                UserPlayer    = null
            };

            return(result);
        }
예제 #6
0
        public void SetUp()
        {
            _autoMocker = new RhinoAutoMocker <PlayedGameRetriever>();

            _currentUser = new ApplicationUser();

            _expectedPlayerGameResult1 = new PlayerGameResult
            {
                GameRank     = 1,
                PlayerId     = 5,
                PointsScored = 6,
                Player       = new Player
                {
                    Name = "player 1"
                }
            };
            _expectedPlayerGameResult2 = new PlayerGameResult
            {
                GameRank     = 2,
                PlayerId     = 7,
                PointsScored = 3,
                Player       = new Player
                {
                    Name = "player 2"
                }
            };

            _expectedPlayedGame = new PlayedGame
            {
                Id               = _playedGameId,
                DatePlayed       = DateTime.Now,
                Notes            = "some notes",
                GameDefinitionId = 2,
                GameDefinition   = new GameDefinition
                {
                    Name = "some game definition name",
                    BoardGameGeekGameDefinitionId = 4
                },
                PlayerGameResults = new List <PlayerGameResult>
                {
                    _expectedPlayerGameResult2,
                    _expectedPlayerGameResult1
                }
            };
            var playedGamesQueryable = new List <PlayedGame>
            {
                _expectedPlayedGame
            }.AsQueryable();

            _autoMocker.Get <IDataContext>().Expect(mock => mock.GetQueryable <PlayedGame>())
            .Return(playedGamesQueryable);

            _expectedHomePagePlayerSummary = new HomePagePlayerSummary();
            _autoMocker.Get <IHomePagePlayerSummaryRetriever>().Expect(mock =>
                                                                       mock.GetHomePagePlayerSummaryForUser(Arg <string> .Is.Anything, Arg <int> .Is.Anything))
            .Return(_expectedHomePagePlayerSummary);

            _expectedPlayersToCreateModel = new PlayersToCreateModel
            {
                UserPlayer    = new PlayerInfoForUser(),
                RecentPlayers = new List <PlayerInfoForUser>(),
                OtherPlayers  = new List <PlayerInfoForUser>()
            };
            _autoMocker.Get <IPlayerRetriever>().Expect(mock =>
                                                        mock.GetPlayersForEditingPlayedGame(Arg <int> .Is.Anything, Arg <ApplicationUser> .Is.Anything))
            .Return(_expectedPlayersToCreateModel);
        }