public ActionResult Module() { var projectManagers = GetProjectManagers(); var packagesToInstall = new List <InstallPackagesModel>(); var installed = new List <InstallationState>(); foreach (var projectManager in projectManagers) { var availablePackages = ProjectManagerHelper.GetAvailablePackagesLatestList(projectManager); var installedPackages = ProjectManagerHelper.GetInstalledPackagesLatestList(projectManager, false); foreach (var package in availablePackages) { if (installedPackages.All(d => d.Id != package.Id)) { var pack = new InstallPackagesModel { icon = string.IsNullOrEmpty(package.IconUrl.ToString()) ? package.IconUrl.ToString() : string.Empty, name = package.Id, version = package.Version.ToString(), author = package.Authors.FirstOrDefault(), source = projectManager.SourceRepository.Source }; packagesToInstall.Add(pack); } } foreach (var installedPackage in installedPackages) { var update = projectManager.GetUpdatedPackage(availablePackages, installedPackage); var package = new InstallationState(); package.Installed = installedPackage; package.Update = update; package.Source = projectManager.SourceRepository.Source; if (installed.Any(d => d.Installed.Id == package.Installed.Id)) { var addedPackage = installed.First(d => d.Installed.Id == package.Installed.Id); if (package.Update != null) { if (addedPackage.Update == null || addedPackage.Update.Version < package.Update.Version) { installed.Remove(addedPackage); installed.Add(package); } } } else { installed.Add(package); } } } var model = new NugetPackagesModel { Install = packagesToInstall, Updates = installed }; return(View(model)); }
protected WebProjectManager[] GetProjectManagers() { return(ProjectManagerHelper.GetProjectManagers()); }