Exemplo n.º 1
0
        public virtual GameDefinitionSummary GetGameDefinitionDetails(int id, int numberOfPlayedGamesToRetrieve)
        {
            var gameDefinition = _dataContext.GetQueryable <GameDefinition>()
                                 .Include(game => game.PlayedGames)
                                 .Include(game => game.Champion)
                                 .Include(game => game.Champion.Player)
                                 .Include(game => game.PreviousChampion)
                                 .Include(game => game.PreviousChampion.Player)
                                 .Include(game => game.GamingGroup)
                                 .SingleOrDefault(game => game.Id == id);

            if (gameDefinition == null)
            {
                throw new EntityDoesNotExistException <GameDefinition>(id);
            }

            BoardGameGeekInfo boardGameGeekInfo = null;

            if (gameDefinition.BoardGameGeekGameDefinitionId.HasValue)
            {
                boardGameGeekInfo = _boardGameGeekGameDefinitionInfoRetriever.GetResults(gameDefinition.BoardGameGeekGameDefinitionId.Value);
            }

            var gameDefinitionSummary = new GameDefinitionSummary
            {
                Active = gameDefinition.Active,
                BoardGameGeekGameDefinitionId = gameDefinition.BoardGameGeekGameDefinitionId,
                Name            = gameDefinition.Name,
                Description     = gameDefinition.Description,
                GamingGroup     = gameDefinition.GamingGroup,
                GamingGroupId   = gameDefinition.GamingGroupId,
                GamingGroupName = gameDefinition.GamingGroup.Name,
                Id = gameDefinition.Id,
                TotalNumberOfGamesPlayed = gameDefinition.PlayedGames.Count,
                AveragePlayersPerGame    = gameDefinition.PlayedGames.Select(item => (decimal)item.NumberOfPlayers).DefaultIfEmpty(0M).Average(),
                ChampionId        = gameDefinition.ChampionId,
                Champion          = gameDefinition.Champion ?? new NullChampion(),
                PreviousChampion  = gameDefinition.PreviousChampion ?? new NullChampion(),
                BoardGameGeekInfo = boardGameGeekInfo
            };

            var playedGames       = AddPlayedGamesToTheGameDefinition(numberOfPlayedGamesToRetrieve, gameDefinitionSummary);
            var distinctPlayerIds = AddPlayerGameResultsToEachPlayedGame(playedGames);

            AddPlayersToPlayerGameResults(playedGames, distinctPlayerIds);
            gameDefinitionSummary.PlayerWinRecords = _playerRepository.GetPlayerWinRecords(id, _dataContext);

            return(gameDefinitionSummary);
        }
        public void SetUp()
        {
            _autoMocker  = new RhinoAutoMocker <UniversalGameRetriever>();
            _currentUser = new ApplicationUser
            {
                Id = "some user id",
                CurrentGamingGroupId = 1
            };

            _expectedGameDefinition = new GameDefinition
            {
                Id = 20,
                BoardGameGeekGameDefinitionId = _boardGameGeekGameDefinitionId,
                GamingGroupId = _currentUser.CurrentGamingGroupId.Value
            };

            var otherGameDefinition = new GameDefinition
            {
                Id = 21,
                BoardGameGeekGameDefinitionId = _boardGameGeekGameDefinitionId
            };


            var gameDefinitionQueryable = new List <GameDefinition>
            {
                _expectedGameDefinition,
                otherGameDefinition
            }.AsQueryable();

            _autoMocker.Get <IDataContext>().Expect(mock => mock.GetQueryable <GameDefinition>()).Return(gameDefinitionQueryable);

            _expectedBoardGameGeekInfo = new BoardGameGeekInfo();
            _autoMocker.Get <IBoardGameGeekGameDefinitionInfoRetriever>().Expect(mock => mock.GetResults(Arg <int> .Is.Anything)).Return(_expectedBoardGameGeekInfo);

            _expectedGameDefinitionSummary = new GameDefinitionSummary();

            _expectedUniversalStats = new UniversalGameStats();
            _autoMocker.Get <IUniversalStatsRetriever>().Expect(mock => mock.GetResults(Arg <int> .Is.Anything))
            .Return(_expectedUniversalStats);

            _expectedTopChampions = new List <ChampionData>();
            _autoMocker.Get <IUniversalTopChampionsRetreiver>().Expect(mock => mock.GetFromSource(Arg <int> .Is.Anything))
            .Return(_expectedTopChampions);
        }
Exemplo n.º 3
0
            private void SetUpPlayedGameStuff()
            {
                _expectedBoardGameGeekInfo = new BoardGameGeekInfo
                {
                    BoardGameGeekGameDefinitionId = _expectedGameDefinition.BoardGameGeekGameDefinitionId.Value
                };
                _autoMocker.Get <IBoardGameGeekGameDefinitionInfoRetriever>()
                .Expect(mock => mock.GetResults(_expectedGameDefinition.BoardGameGeekGameDefinitionId.Value))
                .Return(_expectedBoardGameGeekInfo);

                _expectedPlayedGame1 = new PlayedGame
                {
                    Id             = _expectedEntityId1,
                    GameDefinition = new GameDefinition
                    {
                        Id = 101,
                        BoardGameGeekGameDefinitionId = 1,
                        Name = "game 1 name",
                        BoardGameGeekGameDefinition = new BoardGameGeekGameDefinition
                        {
                            Thumbnail = "some thumbnail"
                        }
                    },
                    //--have to set PlayerGameResults with a winner so that LINQ doesn't blow up -- even though EntityFramework can handle this just fine
                    PlayerGameResults = new List <PlayerGameResult>
                    {
                        new PlayerGameResult
                        {
                            GameRank = 1,
                            PlayerId = 51,
                            Player   = new Player
                            {
                                Name = "some player name"
                            }
                        }
                    },
                    WinnerType = WinnerTypes.PlayerWin,
                    DatePlayed = DateTime.UtcNow
                };
                _expectedPlayedGame2 = new PlayedGame
                {
                    Id             = _expectedEntityId2,
                    GameDefinition = new GameDefinition
                    {
                        Id   = 102,
                        Name = "game 2 name",
                        //--have to do this because entity framework can handle the null relationship, but pure LINQ cannot :(
                        BoardGameGeekGameDefinition = new BoardGameGeekGameDefinition()
                    },
                    PlayerGameResults = new List <PlayerGameResult>
                    {
                        new PlayerGameResult
                        {
                            GameRank = 1,
                            PlayerId = 51,
                            Player   = new Player
                            {
                                Name = "some player name"
                            }
                        }
                    },
                    WinnerType = WinnerTypes.TeamLoss,
                    DatePlayed = DateTime.UtcNow.AddDays(-10)
                };

                var playedGameQueryable = new List <PlayedGame>
                {
                    //--add this one first to make sure that the query orders correctly
                    _expectedPlayedGame2,
                    _expectedPlayedGame1,
                    new PlayedGame
                    {
                        PlayerGameResults = new List <PlayerGameResult>
                        {
                            new PlayerGameResult
                            {
                                GameRank = 1,
                                PlayerId = 51,
                                Player   = new Player
                                {
                                    Name = "some player name"
                                }
                            }
                        }
                    }
                }.AsQueryable();

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