public void RecalculatePoints(IDataContext dataContext, IPointsCalculator pointsCalculator, List<PlayedGameToRecalculate> playedGamesToRecalculate)
{
int counter = 0;
foreach (var playedGame in playedGamesToRecalculate)
{
var playerRanks = playedGame.PlayerGameResults.Select(x => new PlayerRank
{
PlayerId = x.PlayerId,
GameRank = x.GameRank
}).ToList();
var newPoints = pointsCalculator.CalculatePoints(playerRanks, playedGame.BoardGameGeekGameDefinition);
var applicationUserForThisGamingGroup = new ApplicationUser()
{
CurrentGamingGroupId = playedGame.GamingGroupId
};
foreach (var playerGameResult in playedGame.PlayerGameResults)
{
var scorecard = newPoints[playerGameResult.PlayerId];
playerGameResult.NemeStatsPointsAwarded = scorecard.BasePoints;
playerGameResult.GameDurationBonusPoints = scorecard.GameDurationBonusPoints;
playerGameResult.GameWeightBonusPoints = scorecard.GameWeightBonusPoints;
dataContext.Save(playerGameResult, applicationUserForThisGamingGroup);
}
Debug.WriteLine("{0} games updated... last PlayedGame.Id is {1}", ++counter, playedGame.PlayedGameId);
}
}