private static void ReportTableRow( StreamWriter file, string prefix, ContributionsReport.Interval interval, ContributionsReport.Report report, IEnumerable <DataModelIssue> issues) { IEnumerable <DataModelIssue> defaultGroupIssues = issues .Where(issue => report.Groups.Where(group => group.ContainsAuthor(issue)).None()).ToList(); ReportTableRow(file, " ", $"<b>{interval.GetLabel(report.Unit != ContributionsReport.Report.UnitKind.Month)}</b>", issues.NonPullRequests().Count().ToString(), issues.PullRequests().Count().ToString(), report.Groups.SelectMany(group => { IEnumerable <DataModelIssue> filteredIssues = issues.Where(issue => group.ContainsAuthor(issue)).ToList(); return(new string[] { filteredIssues.NonPullRequests().Count().ToString(), filteredIssues.PullRequests().Count().ToString() }); }), defaultGroupIssues.NonPullRequests().Count().ToString(), defaultGroupIssues.PullRequests().Count().ToString()); }
private void Report( StreamWriter file, ContributionsReport.Report report) { file.WriteLine("<table border=\"1\">"); // Heading ReportTableRow(file, " ", "<b>Date</b>", "<b>Total</b>", " ", report.Groups.SelectMany(group => new string[] { $"<b>{group.Name}</b>", " " }), $"<b>{report.DefaultGroupName}</b>", " "); ReportTableRow(file, " ", " ", "<b>Issues</b>", "<b>PRs</b>", report.Groups.SelectMany(group => new string[] { "<b>Issues</b>", "<b>PRs</b>" }), "<b>Issues</b>", "<b>PRs</b>"); // All intervals foreach (ContributionsReport.Interval interval in report.EnumerateIntervals()) { IEnumerable <DataModelIssue> issues = _report.Issues .Where(issue => interval.Contains(issue.CreatedAt.Value)).ToArray(); ReportTableRow(file, " ", interval, report, issues); } file.WriteLine("</table>"); file.WriteLine($"<h3>Users</h3>"); file.WriteLine("<table border=\"1\">"); // Heading ReportTableRow(file, " ", report.Groups.Select(group => $"<b>{group.Name}</b>"), $"<b>{report.DefaultGroupName}</b>"); // Users breakdown ReportTableRow_Users(file, " ", report, _report.Issues); file.WriteLine("</table>"); }
private static void ReportTableRow_Users( StreamWriter file, string prefix, ContributionsReport.Report report, IEnumerable <DataModelIssue> allIssues) { ContributionsReport.Interval reprotInterval = report.FullInterval; IEnumerable <DataModelIssue> issues = allIssues.Where(issue => reprotInterval.Contains(issue.CreatedAt.Value)); IEnumerable <DataModelIssue> defaultGroupIssues = issues .Where(issue => report.Groups.Where(group => group.ContainsAuthor(issue)).None()).ToList(); ReportTableRow(file, " ", report.Groups.Select(group => GetUserBreakdown(issues.Where(issue => group.ContainsAuthor(issue)).ToList())), GetUserBreakdown(defaultGroupIssues)); }