예제 #1
0
        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;
            }
        }
예제 #2
0
 public bool TryGetLatestBadge(string BuildType, out BadgeData BadgeData)
 {
     return(BadgeNameToLatestData.TryGetValue(BuildType, out BadgeData));
 }
예제 #3
0
        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);
                    }
                }
            }
        }