public IssuesIndexViewModel ConvertToIndexViewModel(IEnumerable<GlimpsePackage> glimpsePackages) { var issuesView = new IssuesIndexViewModel(); SetupFields(glimpsePackages); foreach (var glimpsePackage in _glimpsePackages) { var packageCategory = GetOrCreatePackageCategoryViewModel(issuesView, glimpsePackage); AddIssuesToViewModel(glimpsePackage, packageCategory); var packageView = new PackageViewModel { Name = glimpsePackage.Title, Status = glimpsePackage.Status, StatusDescription = glimpsePackage.StatusDescription }; packageCategory.Packages.Add(packageView); } issuesView.IssueReporters = GetIssueReporters(_glimpsePackages); var pullRequestContributors = new Dictionary<string, Tuple<GithubUser,List<GithubIssue>>>(); foreach (var package in _glimpsePackages) { var issues = package.Issues.Where(i => i.Html_Url.Contains("/pull/")); foreach (var issue in issues) { if (!pullRequestContributors.ContainsKey(issue.User.Id)) pullRequestContributors.Add(issue.User.Id, new Tuple<GithubUser, List<GithubIssue>>(issue.User, new List<GithubIssue>())); if(pullRequestContributors[issue.User.Id].Item2.All(i => i.Id != issue.Id)) pullRequestContributors[issue.User.Id].Item2.Add(issue); } } issuesView.PullRequestContributors = pullRequestContributors.Values.ToList(); return issuesView; }
private PackageCategoryViewModel GetOrCreatePackageCategoryViewModel(IssuesIndexViewModel issuesView, GlimpsePackage packageIssue) { var packageCategory = issuesView.PackageCategories.FirstOrDefault(c => c.Name == packageIssue.Category); if (packageCategory == null) { packageCategory = new PackageCategoryViewModel { Name = packageIssue.Category }; issuesView.PackageCategories.Add(packageCategory); } return packageCategory; }