void ApplyBadgeUpdate(BadgeData Badge) { EventSummary Summary = FindOrAddSummary(Badge.ChangeNumber); BadgeData ExistingBadge = Summary.Badges.Find(x => x.ChangeNumber == Badge.ChangeNumber && x.BuildType == Badge.BuildType); if (ExistingBadge != null) { if (ExistingBadge.Id <= Badge.Id) { Summary.Badges.Remove(ExistingBadge); } else { return; } } Summary.Badges.Add(Badge); Summary.Verdict = GetVerdict(Summary.Reviews, Summary.Badges); BadgeData LatestBadge; if (!BadgeNameToLatestData.TryGetValue(Badge.BadgeName, out LatestBadge) || Badge.ChangeNumber > LatestBadge.ChangeNumber || (Badge.ChangeNumber == LatestBadge.ChangeNumber && Badge.Id > LatestBadge.Id)) { BadgeNameToLatestData[Badge.BadgeName] = Badge; } }
public bool TryGetLatestBadge(string BuildType, out BadgeData BadgeData) { return(BadgeNameToLatestData.TryGetValue(BuildType, out BadgeData)); }
void ConvertMetadataToEvents(GetMetadataResponseV2 Metadata) { EventSummary Summary; if (ChangeNumberToSummary.TryGetValue(Metadata.Change, out Summary)) { foreach (string CurrentUser in Summary.CurrentUsers) { UserNameToLastSyncEvent.Remove(CurrentUser); } ChangeNumberToSummary.Remove(Metadata.Change); } if (Metadata.Badges != null) { foreach (GetBadgeDataResponseV2 BadgeData in Metadata.Badges) { BadgeData Badge = new BadgeData(); Badge.ChangeNumber = Metadata.Change; Badge.BuildType = BadgeData.Name; Badge.Result = BadgeData.State; Badge.Url = BadgeData.Url; Badge.Project = Metadata.Project; IncomingBadges.Enqueue(Badge); } } if (Metadata.Users != null) { foreach (GetUserDataResponseV2 UserData in Metadata.Users) { if (UserData.SyncTime != null) { EventData Event = new EventData { Id = UserData.SyncTime.Value, Change = Metadata.Change, Project = Metadata.Project, UserName = UserData.User, Type = EventType.Syncing }; IncomingEvents.Enqueue(Event); } EventType?Type = GetEventTypeFromVote(UserData.Vote); if (Type != null) { EventData Event = new EventData { Id = ++IncomingMetadataId, Change = Metadata.Change, Project = Metadata.Project, UserName = UserData.User, Type = Type.Value }; IncomingEvents.Enqueue(Event); } if (UserData.Investigating) { EventData Event = new EventData { Id = ++IncomingMetadataId, Change = Metadata.Change, Project = Metadata.Project, UserName = UserData.User, Type = EventType.Starred }; IncomingEvents.Enqueue(Event); } if (UserData.Starred) { EventData Event = new EventData { Id = ++IncomingMetadataId, Change = Metadata.Change, Project = Metadata.Project, UserName = UserData.User, Type = EventType.Starred }; IncomingEvents.Enqueue(Event); } if (UserData.Comment != null) { CommentData Comment = new CommentData { Id = ++IncomingMetadataId, ChangeNumber = Metadata.Change, Project = Metadata.Project, UserName = UserData.User, Text = UserData.Comment }; IncomingComments.Enqueue(Comment); } } } }