public void Handle(ParticipantGameCompleted e) { var divisionName = SimplifyDivision(e.Division); var year = "2014"; if (MatchYearLookup.ContainsKey(e.Id)) { year = MatchYearLookup[e.Id]; } var division = Divisions.SingleOrDefault(x => x.Name == divisionName && x.Year == year); if (division == null) { division = new Division { Name = divisionName, Year = year }; Divisions.Add(division); } var participant = division.Participants.SingleOrDefault(x => x.ParticipantId == e.ParticipantId); if (participant == null) { participant = new Participant { ParticipantId = e.ParticipantId, Scores = new List <Score>() }; division.Participants.Add(participant); } participant.Scores.RemoveAll(x => x.MatchId == e.Id); participant.Name = e.Name; participant.Gender = e.Gender; participant.Scores.Add(new Score { MatchId = e.Id, Scratch = e.Score, Wins = e.IsPOA ? (e.POA > e.OpponentPOA ? 1M : e.POA < e.OpponentPOA ? 0M : .5M) : (e.Score > e.OpponentScore ? 1M : e.Score < e.OpponentScore ? 0M : .5M), }); participant.Total = participant.Scores.Sum(x => x.Scratch); participant.Wins = participant.Scores.Sum(x => x.Wins); participant.Average = 1.0M * participant.Total / participant.Scores.Count; }
public void Handle(ParticipantGameCompleted e) { var divisionName = SimplifyDivision(e.Division); var year = "2014"; if (Matches.ContainsKey(e.Id)) { year = Matches[e.Id]; } var division = Divisions.SingleOrDefault(x => x.Name == divisionName && x.Year == year); if (division == null) { division = new Division { Name = divisionName, Year = year }; Divisions.Add(division); } division.Scores.RemoveAll(x => x.MatchId == e.Id && x.ParticipantId == e.ParticipantId); if (divisionName.Equals("Tournament", StringComparison.OrdinalIgnoreCase) && e.Score < 275) { return; } if (!divisionName.Equals("Tournament", StringComparison.OrdinalIgnoreCase) && e.POA < 75) { return; } division.Scores.Add(new Score { Gender = e.Gender, MatchId = e.Id, Name = e.Name, ParticipantId = e.ParticipantId, POA = e.POA, Scratch = e.Score, Year = year }); }