public ManagePackageViewModel(Package package, User currentUser, IReadOnlyList <ReportPackageReason> reasons, UrlHelper url, string readMe, bool isManageDeprecationEnabled) : base(package, currentUser) { IsCurrentUserAnAdmin = currentUser != null && currentUser.IsAdministrator; DeletePackagesRequest = new DeletePackagesRequest { Packages = new List <string> { string.Format( CultureInfo.InvariantCulture, "{0}|{1}", package.PackageRegistration.Id, package.Version) }, ReasonChoices = reasons }; IsLocked = package.PackageRegistration.IsLocked; IsManageDeprecationEnabled = isManageDeprecationEnabled; var versionSelectPackages = package.PackageRegistration.Packages .Where(p => p.PackageStatusKey == PackageStatus.Available || p.PackageStatusKey == PackageStatus.Validating) .OrderByDescending(p => new NuGetVersion(p.Version)) .ToList(); VersionSelectList = new List <SelectListItem>(); VersionListedStateDictionary = new Dictionary <string, VersionListedState>(); VersionReadMeStateDictionary = new Dictionary <string, VersionReadMeState>(); VersionDeprecationStateDictionary = new Dictionary <string, VersionDeprecationState>(); var submitUrlTemplate = url.PackageVersionActionTemplate("Edit"); var getReadMeUrlTemplate = url.PackageVersionActionTemplate("GetReadMeMd"); foreach (var versionSelectPackage in versionSelectPackages) { var text = PackageHelper.GetSelectListText(versionSelectPackage); var value = NuGetVersionFormatter.Normalize(versionSelectPackage.Version); VersionSelectList.Add(new SelectListItem { Text = text, Value = value, Selected = package == versionSelectPackage }); VersionListedStateDictionary.Add( value, new VersionListedState(versionSelectPackage)); var model = new TrivialPackageVersionModel(versionSelectPackage); VersionReadMeStateDictionary.Add( value, new VersionReadMeState( submitUrlTemplate.Resolve(model), getReadMeUrlTemplate.Resolve(model), null)); VersionDeprecationStateDictionary.Add( value, new VersionDeprecationState(versionSelectPackage, text)); } // Update edit model with the readme.md data. ReadMe = new EditPackageVersionReadMeRequest(); if (package.HasReadMe) { ReadMe.ReadMe.SourceType = ReadMeService.TypeWritten; ReadMe.ReadMe.SourceText = readMe; } }
private ManagePackageViewModel SetupInternal( ManagePackageViewModel viewModel, Package package, User currentUser, IReadOnlyList <ReportPackageReason> reasons, UrlHelper url, string readMe, bool isManageDeprecationEnabled) { viewModel.IsCurrentUserAnAdmin = currentUser != null && currentUser.IsAdministrator; viewModel.DeletePackagesRequest = new DeletePackagesRequest { Packages = new List <string> { string.Format( CultureInfo.InvariantCulture, "{0}|{1}", package.PackageRegistration.Id, package.Version) }, ReasonChoices = reasons }; viewModel.IsLocked = package.PackageRegistration.IsLocked; viewModel.IsManageDeprecationEnabled = isManageDeprecationEnabled; var versionSelectPackages = package.PackageRegistration.Packages .Where(p => p.PackageStatusKey == PackageStatus.Available || p.PackageStatusKey == PackageStatus.Validating) .OrderByDescending(p => new NuGetVersion(p.Version)) .ToList(); var versionSelectList = new List <SelectListItem>(); viewModel.VersionSelectList = versionSelectList; var versionListedStateDictionary = new Dictionary <string, ManagePackageViewModel.VersionListedState>(); viewModel.VersionListedStateDictionary = versionListedStateDictionary; var versionReadMeStateDictionary = new Dictionary <string, ManagePackageViewModel.VersionReadMeState>(); viewModel.VersionReadMeStateDictionary = versionReadMeStateDictionary; var versionDeprecationStateDictionary = new Dictionary <string, ManagePackageViewModel.VersionDeprecationState>(); viewModel.VersionDeprecationStateDictionary = versionDeprecationStateDictionary; foreach (var versionSelectPackage in versionSelectPackages) { var text = PackageHelper.GetSelectListText(versionSelectPackage); var value = NuGetVersionFormatter.Normalize(versionSelectPackage.Version); versionSelectList.Add(new SelectListItem { Text = text, Value = value, Selected = package == versionSelectPackage }); versionListedStateDictionary.Add( value, new ManagePackageViewModel.VersionListedState(versionSelectPackage.Listed, versionSelectPackage.DownloadCount)); var model = new TrivialPackageVersionModel(versionSelectPackage); versionReadMeStateDictionary.Add( value, GetVersionReadMeState(model, url)); versionDeprecationStateDictionary.Add( value, GetVersionDeprecationState(versionSelectPackage.Deprecations.SingleOrDefault(), text)); } // Update edit model with the readme.md data. viewModel.ReadMe = new EditPackageVersionReadMeRequest(); if (package.HasReadMe && package.EmbeddedReadmeType == EmbeddedReadmeFileType.Absent) { viewModel.ReadMe.ReadMe.SourceType = ReadMeService.TypeWritten; viewModel.ReadMe.ReadMe.SourceText = readMe; } return(viewModel); }