BusinessLogic.Logic.GameDefinitions.GameDefinitionRetriever.GetGameDefinitionDetails C# (CSharp) Метод

GetGameDefinitionDetails() публичный Метод

public GetGameDefinitionDetails ( int id, int numberOfPlayedGamesToRetrieve ) : GameDefinitionSummary
id int
numberOfPlayedGamesToRetrieve int
Результат BusinessLogic.Models.Games.GameDefinitionSummary
        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(typeof(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(),
                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);

            return gameDefinitionSummary;
        }

Usage Example

        public override void FixtureSetUp()
        {
            base.FixtureSetUp();

            using (dbContext = new NemeStatsDbContext())
            {
                using (dataContext = new NemeStatsDataContext(dbContext, securedEntityValidatorFactory))
                {
                    var playerRepository = new EntityFrameworkPlayerRepository(dataContext);
                    var cacheableGameDataRetriever = new BoardGameGeekGameDefinitionInfoRetriever(new DateUtilities(), new CacheService(), dataContext);

                    var gameDefinitionRetriever = new GameDefinitionRetriever(dataContext, playerRepository, cacheableGameDataRetriever);
                    gameDefinitionSummary = gameDefinitionRetriever.GetGameDefinitionDetails(
                        testGameDefinition.Id, 
                        numberOfGamesToRetrieve);
                }
            }
        }
All Usage Examples Of BusinessLogic.Logic.GameDefinitions.GameDefinitionRetriever::GetGameDefinitionDetails