internal virtual void PopulateNemePointsSummary(int gamingGroupId, List<PlayerWithNemesis> playersWithNemesis, IDateRangeFilter dateRangeFilter)
{
var nemePointsDictionary = (from playerGameResult in dataContext.GetQueryable<PlayerGameResult>()
where playerGameResult.PlayedGame.GamingGroupId == gamingGroupId
&& playerGameResult.PlayedGame.DatePlayed >= dateRangeFilter.FromDate
&& playerGameResult.PlayedGame.DatePlayed <= dateRangeFilter.ToDate
group playerGameResult by playerGameResult.PlayerId
into groupedResults
select
new
{
BasePoints = groupedResults.Sum(x => x.NemeStatsPointsAwarded),
GameDurationBonusPoints = groupedResults.Sum(x => x.GameDurationBonusPoints),
WeightBonusPoints = groupedResults.Sum(x => x.GameWeightBonusPoints),
PlayerId = groupedResults.Key
}).ToDictionary(key => key.PlayerId, value => new NemePointsSummary(value.BasePoints, value.GameDurationBonusPoints, value.WeightBonusPoints));
foreach (var player in playersWithNemesis)
{
player.NemePointsSummary = nemePointsDictionary.ContainsKey(player.PlayerId) ? nemePointsDictionary[player.PlayerId] : new NemePointsSummary(0, 0, 0);
}
}