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); }
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 }); }
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; } }