private void ProcessMatch(Match match) { // Get average ratings var avgWinnerRating = match.Winners.Average(p => p.Rating); var avgLoserRating = match.Losers.Average(p => p.Rating); // Calculate rating delta based on result var ratingDelta = _ratingService.CalculateDelta(avgWinnerRating, avgLoserRating); match.RatingDelta = ratingDelta; // Update player stats foreach (var player in match.Winners) { player.Wins++; player.Rating += ratingDelta; } foreach (var player in match.Losers) { player.Losses++; player.Rating -= ratingDelta; } // Save _db.GetCollection <Player>().Update(match.Winners); _db.GetCollection <Player>().Update(match.Losers); }