private NewAttachment[] BuildAttachments(PrReport report, Dictionary <string, User> users) { var overdueHours = (_settings.OverdueTicks / 3600); List <NewAttachment> result = new List <NewAttachment>(); var tags = $"[{string.Join("][", _settings.LessImportantTags)}]"; var fields0 = BuildFields(report, report.NotOverdue, users); var fields1 = BuildFields(report, report.OverdueAndImportant, users); var fields2 = BuildFields(report, report.OverdueButNotImportant, users); var a0 = new NewAttachment("This channel is not able to show attachment.", fields0, null, null, "good", $"Updated PRs (within {overdueHours} hours)", null, new[] { "fields" }); var a1 = new NewAttachment("This channel is not able to show attachment.", fields1, null, null, "danger", $"Overdue (Not updated in {overdueHours} hours)", null, new[] { "fields" }); var a2 = new NewAttachment("This channel is not able to show attachment.", fields2, null, null, "#DCDCDC", $"Overdue but marked as {tags}", null, new [] { "fields" }); if (report.NotOverdue.Count > 0) { result.Add(a0); } if (report.OverdueAndImportant.Count > 0) { result.Add(a1); } if (report.OverdueButNotImportant.Count > 0) { result.Add(a2); } return(result.ToArray()); }
private MessageWithAttachments BuildSlackMessage(PrReport report, Dictionary <string, User> users) { var text = $"*{report.Repository.CombinedName}*"; MessageWithAttachments message = new MessageWithAttachments(BuildAttachments(report, users), text, null, ":cat:"); return(message); }
private Field[] BuildFields(PrReport report, List <Issue> issues, Dictionary <string, User> users) { var prRef = report.PullRequestRef; return (issues.Select( i => { var tags = (i.Labels != null && i.Labels.Any()) ? $"\r\tTags: {i.Labels.ToTagString()}" : string.Empty; var milestone = (i.Milestone != null) ? $"\r\tMilestone: {i.Milestone.Title}" : string.Empty; return new Field("", $"<{i.HtmlUrl}|{i.Title}>" + $"\r\tAuthor: <{users[i.User.Login].HtmlUrl}|{users[i.User.Login].Name}>" + $"\r\tCreated: `{prRef[i.Number].CreatedAt.ToEasternTime():MM/dd/yyyy hh:mm:ss K}`" + $"\r\tUpdated:`{prRef[i.Number].UpdatedAt.ToEasternTime():MM/dd/yyyy hh:mm:ss K}`" + $"\r\tOpen for: {GetDaysOrHourOpenString(prRef[i.Number].CreatedAt)}" + milestone + tags ); } ) .ToArray()); }