Пример #1
0
        public virtual List <GameDefinitionSummary> GetGameDefinitionSummaries(List <int> gameDefinitionIds)
        {
            var dateRangeFilter = new BasicDateRangeFilter();

            var gameDefinitionSummaries = _dataContext.GetQueryable <GameDefinition>()
                                          .Where(gameDefinition => gameDefinitionIds.Contains(gameDefinition.Id))
                                          .Select(gameDefinition => new GameDefinitionSummary
            {
                Active = gameDefinition.Active,
                BoardGameGeekGameDefinitionId = gameDefinition.BoardGameGeekGameDefinitionId,
                Name          = gameDefinition.Name,
                Description   = gameDefinition.Description,
                GamingGroupId = gameDefinition.GamingGroupId,
                Id            = gameDefinition.Id,
                PlayedGames   = gameDefinition.PlayedGames.Where(
                    playedGame => playedGame.DatePlayed >= ((IDateRangeFilter)dateRangeFilter).FromDate &&
                    playedGame.DatePlayed <= ((IDateRangeFilter)dateRangeFilter).ToDate)
                                .ToList(),
                Champion                    = gameDefinition.Champion,
                ChampionId                  = gameDefinition.ChampionId,
                PreviousChampion            = gameDefinition.PreviousChampion,
                PreviousChampionId          = gameDefinition.PreviousChampionId,
                DateCreated                 = gameDefinition.DateCreated,
                BoardGameGeekGameDefinition = gameDefinition.BoardGameGeekGameDefinition
            })
                                          .ToList();

            gameDefinitionSummaries.ForEach(x => x.BoardGameGeekInfo = x.BoardGameGeekGameDefinitionId.HasValue ?
                                                                       _boardGameGeekGameDefinitionInfoRetriever.GetResults(x.BoardGameGeekGameDefinitionId.Value)
                        : null);

            return(gameDefinitionSummaries);
        }
Пример #2
0
        public BoardGameGeekGameSummary GetBoardGameGeekGameSummary(int boardGameGeekGameDefinitionId, ApplicationUser currentUser, int numberOfRecentlyPlayedGamesToRetrieve = DEFAULT_NUMBER_OF_GAMES)
        {
            var topChampions      = _universalTopChampionsRetreiver.GetFromSource(boardGameGeekGameDefinitionId);
            var boardGameGeekInfo = _boardGameGeekGameDefinitionInfoRetriever.GetResults(boardGameGeekGameDefinitionId);
            var universalStats    = _universalStatsRetriever.GetResults(boardGameGeekGameDefinitionId);
            GameDefinitionSummary gamingGroupGameDefinitionSummary = null;

            if (currentUser.CurrentGamingGroupId.HasValue)
            {
                gamingGroupGameDefinitionSummary = GetGamingGroupGameDefinitionSummary(boardGameGeekGameDefinitionId,
                                                                                       currentUser.CurrentGamingGroupId.Value, numberOfRecentlyPlayedGamesToRetrieve);
            }

            var filter = new RecentlyPlayedGamesFilter
            {
                BoardGameGeekGameDefinitionId = boardGameGeekGameDefinitionId,
                NumberOfGamesToRetrieve       = numberOfRecentlyPlayedGamesToRetrieve
            };
            var recentlyPlayedPublicGames = _recentPublicGamesRetriever.GetResults(filter);

            return(new BoardGameGeekGameSummary
            {
                BoardGameGeekInfo = boardGameGeekInfo,
                UniversalGameStats = universalStats,
                GamingGroupGameDefinitionSummary = gamingGroupGameDefinitionSummary,
                RecentlyPlayedGames = recentlyPlayedPublicGames,
                TopChampions = topChampions
            });
        }
Пример #3
0
        internal virtual void SetRelatedEntities(AchievementGroup achievementGroup, PlayerAchievementDetails result, List <int> relatedEntityIds)
        {
            switch (achievementGroup)
            {
            case AchievementGroup.Game:
                var intermediateAnonymousResult = _dataContext.GetQueryable <GameDefinition>()
                                                  .Where(x => relatedEntityIds.Contains(x.Id))
                                                  .Select(x => new
                {
                    AchievementRelatedGameDefinitionSummary = new AchievementRelatedGameDefinitionSummary
                    {
                        Id            = x.Id,
                        Name          = x.Name,
                        GamingGroupId = x.GamingGroupId
                    },
                    x.BoardGameGeekGameDefinitionId
                })
                                                  .OrderBy(x => x.AchievementRelatedGameDefinitionSummary.Name)
                                                  .ToList();

                foreach (var recordWithABoardGameGeekGameDefinitionId in intermediateAnonymousResult.Where(x => x.BoardGameGeekGameDefinitionId != null))
                {
                    recordWithABoardGameGeekGameDefinitionId.AchievementRelatedGameDefinitionSummary.BoardGameGeekInfo =
                        _boardGameGeekGameDefinitionInfoRetriever.GetResults(recordWithABoardGameGeekGameDefinitionId.BoardGameGeekGameDefinitionId.Value);
                }
                result.RelatedGameDefinitions = intermediateAnonymousResult.Select(x => x.AchievementRelatedGameDefinitionSummary).ToList();
                break;

            case AchievementGroup.PlayedGame:
                result.RelatedPlayedGames = _dataContext.GetQueryable <PlayedGame>()
                                            .Where(y => relatedEntityIds.Contains(y.Id))
                                            .Select(x => new AchievementRelatedPlayedGameSummary
                {
                    GameDefinitionId = x.GameDefinitionId,
                    WinnerType       = x.WinnerType,
                    DatePlayed       = x.DatePlayed,
                    BoardGameGeekGameDefinitionId = x.GameDefinition.BoardGameGeekGameDefinitionId,
                    GameDefinitionName            = x.GameDefinition.Name,
                    PlayedGameId      = x.Id,
                    ThumbnailImageUrl = x.GameDefinition.BoardGameGeekGameDefinition.Thumbnail,
                    WinningPlayerName = x.PlayerGameResults.FirstOrDefault(y => y.GameRank == 1).Player.Name,
                    WinningPlayerId   = x.PlayerGameResults.FirstOrDefault(y => y.GameRank == 1).PlayerId
                })
                                            .OrderByDescending(x => x.DatePlayed)
                                            .ToList();
                break;

            case AchievementGroup.Player:
                result.RelatedPlayers = _dataContext.GetQueryable <Player>()
                                        .Where(x => relatedEntityIds.Contains(x.Id))
                                        .Select(x => new AchievementRelatedPlayerSummary
                {
                    PlayerId        = x.Id,
                    PlayerName      = x.Name,
                    GamingGroupId   = x.GamingGroupId,
                    GamingGroupName = x.GamingGroup.Name
                }).ToList();
                break;

            case AchievementGroup.NotApplicable:
                break;
            }
        }