Example #1
0
 public bool IsAuthor(DataModelIssue issue)
 {
     if ((Name != issue.User.Login) && (Id != issue.User.Id))
     {
         return(false);
     }
     return(Interval.Contains(issue.CreatedAt.Value));
 }
Example #2
0
 public IssueEntry(
     DataModelIssue issue, EntryKind kind,
     IEnumerable <Label> styledLabels = null,
     string styleName = null)
     : base(issue, styledLabels, styleName)
 {
     Kind          = kind;
     IsPullRequest = issue.IsPullRequest;
     IssueNumber   = issue.Number;
 }
Example #3
0
        // Returns null if the report is empty
        protected static string GenerateReport(
            Alert alert,
            string htmlTemplate,
            IEnumerable <DataModelIssue> beginIssues,
            IEnumerable <DataModelIssue> endIssues,
            IEnumerable <Label> areaLabels)
        {
            IEnumerable <DataModelIssue> beginQuery = alert.Query.Evaluate(beginIssues);
            IEnumerable <DataModelIssue> endQuery   = alert.Query.Evaluate(endIssues);

            IEnumerable <DataModelIssue> goneIssues = beginQuery.Except_ByIssueNumber(endQuery);
            IEnumerable <DataModelIssue> newIssues  = endQuery.Except_ByIssueNumber(beginQuery);

            if (goneIssues.None() && newIssues.None())
            {
                Console.WriteLine("    No changes to the query, skipping.");
                Console.WriteLine();
                return(null);
            }

            string text = htmlTemplate;

            text = text.Replace("%ISSUES_LINKED_COUNTS%",
                                AlertReport.GetLinkedCount("", newIssues.Concat(goneIssues)));

            IEnumerable <IssueEntry> newIssueEntries = newIssues
                                                       .Select(issue => new IssueEntry(issue, IssueEntry.EntryKind.New));
            IEnumerable <IssueEntry> goneIssueEntries = goneIssues
                                                        .Select(issue =>
            {
                DataModelIssue newIssue = endIssues.FirstOrNull_ByIssueNumber(issue);
                if (newIssue == null)
                {       // Closed issue
                    return(new IssueEntry(issue, IssueEntry.EntryKind.Closed));
                }
                return(new IssueEntry(newIssue, IssueEntry.EntryKind.Moved, areaLabels, "moved_area"));
            });

            text = text.Replace("%ISSUES_TABLE%", FormatIssueTable(newIssueEntries.Concat(goneIssueEntries)
                                                                   .OrderBy(entry => entry.OrderType)
                                                                   .ThenBy(entry => entry.IssueNumber)));

            return(text);
        }
Example #4
0
        public Flags GetUntriagedFlags(DataModelIssue issue)
        {
            Flags triageFlags = 0;

            // Check if this issue is marked as 'untriaged'
            if (issue.Labels.Intersect_ByName(_untriagedLabels).Any())
            {
                triageFlags |= Flags.UntriagedLabel;
            }

            // check if this issue has a Milestone
            if (issue.Milestone == null)
            {
                triageFlags |= Flags.MissingMilestone;
            }

            // Count area labels
            int areaLabelsCount = issue.Labels.Intersect_ByName(_areaLabels).Count();

            if (areaLabelsCount == 0)
            {
                triageFlags |= Flags.MissingAreaLabel;
            }
            else if (areaLabelsCount > 1)
            {
                triageFlags |= Flags.MultipleAreaLabels;
            }

            // Count issue labels
            int issueTypeLabelsCount = issue.Labels.Intersect_ByName(_issueTypeLabels).Count();

            if (issueTypeLabelsCount == 0)
            {
                triageFlags |= Flags.MissingIssueTypeLabel;
            }
            else if (issueTypeLabelsCount > 1)
            {
                triageFlags |= Flags.MultipleIssueTypeLabels;
            }

            return(triageFlags);
        }
Example #5
0
        // assignedToOverride - used for using 'Closed' as AssignedTo value in reports
        public IssueEntry(DataModelIssue issue, IEnumerable <Label> styledLabels = null, string styleName = null)
        {
            string idPrefix = "";

            if (issue.IsPullRequest)
            {
                idPrefix = "PR ";
            }

            IssueId = $"{idPrefix}#<a href=\"{issue.HtmlUrl}\">{issue.Number}</a>";

            Title = issue.Title;

            styledLabels = styledLabels ?? new Label[] { };

            LabelsText = string.Join(", ", issue.Labels.Select(l =>
                                                               styledLabels.Contains_ByName(l.Name) ? $"<span class=\"{styleName}\">{l.Name}</span>" : l.Name));

            if (issue.Assignee != null)
            {
                AssignedToText = $"<a href=\"{issue.Assignee.HtmlUrl}\">@{issue.Assignee.Login}</a>";
            }
            else
            {
                AssignedToText = "";
            }

            if (issue.Milestone != null)
            {
                MilestoneText = issue.Milestone.Title;
            }
            else
            {
                MilestoneText = "";
            }
        }
Example #6
0
 public bool ContainsAuthor(DataModelIssue issue)
 {
     return(Categories.Where(category => category.ContainsAuthor(issue)).Any());
 }
Example #7
0
 public bool ContainsAuthor(DataModelIssue issue)
 {
     return(Users.Where(user => user.IsAuthor(issue)).Any());
 }
 public override bool Evaluate(DataModelIssue issue)
 {
     return(issue.IsIssueOrComment == _isIssue);
 }
 public override bool Evaluate(DataModelIssue issue)
 {
     return(_value);
 }
 public override bool Evaluate(DataModelIssue issue)
 {
     return(issue.HasAssignee(_assigneeName));
 }
 public override bool Evaluate(DataModelIssue issue)
 {
     return((issue.Milestone != null) &&
            _milestoneRegex.IsMatch(issue.Milestone.Title));
 }
 public override bool Evaluate(DataModelIssue issue)
 {
     return(issue.IsMilestone(_milestoneName));
 }
 public override bool Evaluate(DataModelIssue issue)
 {
     return(issue.IsOpen == _isOpen);
 }
 public override bool Evaluate(DataModelIssue issue)
 {
     return(issue.HasLabel(_labelName));
 }
Example #15
0
 public override bool Evaluate(DataModelIssue issue)
 {
     return(GetUntriagedFlags(issue) != 0);
 }
Example #16
0
 public abstract bool Evaluate(DataModelIssue issue);
 public override bool Evaluate(DataModelIssue issue)
 {
     return(issue.Labels.Where(label => _labelRegex.IsMatch(label.Name)).Any());
 }