public virtual IList<GameDefinitionSummary> GetAllGameDefinitions(int gamingGroupId, IDateRangeFilter dateRangeFilter = null)
{
if (dateRangeFilter == null)
{
dateRangeFilter = new BasicDateRangeFilter();
}
var returnValue = _dataContext.GetQueryable<GameDefinition>()
.Where(gameDefinition => gameDefinition.GamingGroupId == gamingGroupId && gameDefinition.Active)
.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 >= dateRangeFilter.FromDate
&& playedGame.DatePlayed <= dateRangeFilter.ToDate)
.ToList(),
Champion = gameDefinition.Champion,
ChampionId = gameDefinition.ChampionId,
PreviousChampion = gameDefinition.PreviousChampion,
PreviousChampionId = gameDefinition.PreviousChampionId,
DateCreated = gameDefinition.DateCreated
})
.OrderBy(game => game.Name)
.ToList();
AddPlayersToChampionData(returnValue);
returnValue.ForEach(summary =>
{
summary.Champion = summary.Champion ?? new NullChampion();
summary.PreviousChampion = summary.PreviousChampion ?? new NullChampion();
summary.TotalNumberOfGamesPlayed = summary.PlayedGames.Count;
if (summary.BoardGameGeekGameDefinitionId.HasValue)
{
summary.BoardGameGeekInfo = _boardGameGeekGameDefinitionInfoRetriever.GetResults(summary.BoardGameGeekGameDefinitionId.Value);
}
});
return returnValue;
}