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));
        }
Example #2
0
 protected WebProjectManager[] GetProjectManagers()
 {
     return(ProjectManagerHelper.GetProjectManagers());
 }