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;
 }