1010
1111namespace NuGetGallery
1212{
13- public class ManagePackageViewModel : DisplayPackageViewModel
13+ public class ManagePackageViewModel : ListPackageItemViewModel
1414 {
1515 public ManagePackageViewModel ( Package package , User currentUser , IReadOnlyList < ReportPackageReason > reasons , UrlHelper url , string readMe )
1616 : base ( package , currentUser )
@@ -32,18 +32,50 @@ public ManagePackageViewModel(Package package, User currentUser, IReadOnlyList<R
3232
3333 IsLocked = package . PackageRegistration . IsLocked ;
3434
35- var versionSelectPackages = PackageVersions . Where ( p => ! p . Deleted ) ;
35+ var versionSelectPackages = package . PackageRegistration . Packages
36+ . Where ( p => p . PackageStatusKey == PackageStatus . Available || p . PackageStatusKey == PackageStatus . Validating )
37+ . OrderByDescending ( p => new NuGetVersion ( p . Version ) )
38+ . ToList ( ) ;
39+
40+ var versionSelectListItems = new List < SelectListItem > ( ) ;
41+ VersionListedStateDictionary = new Dictionary < string , VersionListedState > ( ) ;
42+ VersionReadMeStateDictionary = new Dictionary < string , VersionReadMeState > ( ) ;
43+ var submitUrlTemplate = url . PackageVersionActionTemplate ( "Edit" ) ;
44+ var getReadMeUrlTemplate = url . PackageVersionActionTemplate ( "GetReadMeMd" ) ;
45+ string defaultSelectedVersion = null ;
46+ foreach ( var versionSelectPackage in versionSelectPackages )
47+ {
48+ var text = NuGetVersionFormatter . ToFullString ( versionSelectPackage . Version ) + ( versionSelectPackage . IsLatestSemVer2 ? " (Latest)" : string . Empty ) ;
49+ var value = NuGetVersionFormatter . Normalize ( versionSelectPackage . Version ) ;
50+ versionSelectListItems . Add ( new SelectListItem
51+ {
52+ Text = text ,
53+ Value = value
54+ } ) ;
55+
56+ if ( versionSelectPackage == package )
57+ {
58+ defaultSelectedVersion = value ;
59+ }
60+
61+ VersionListedStateDictionary . Add (
62+ value ,
63+ new VersionListedState ( versionSelectPackage ) ) ;
64+
65+ var model = new TrivialPackageVersionModel ( versionSelectPackage ) ;
66+ VersionReadMeStateDictionary . Add (
67+ value ,
68+ new VersionReadMeState (
69+ submitUrlTemplate . Resolve ( model ) ,
70+ getReadMeUrlTemplate . Resolve ( model ) ,
71+ null ) ) ;
72+ }
73+
3674 VersionSelectList = new SelectList (
37- PackageVersions
38- . Where ( p => ! p . Deleted && ! p . FailedValidation )
39- . Select ( p => new SelectListItem
40- {
41- Text = p . FullVersion + ( p . LatestVersionSemVer2 ? " (Latest)" : string . Empty ) ,
42- Value = p . Version
43- } ) ,
44- "Value" ,
45- "Text" ,
46- Version ) ;
75+ versionSelectListItems ,
76+ nameof ( SelectListItem . Value ) ,
77+ nameof ( SelectListItem . Text ) ,
78+ defaultSelectedVersion ) ;
4779
4880 // Update edit model with the readme.md data.
4981 ReadMe = new EditPackageVersionReadMeRequest ( ) ;
@@ -63,5 +95,35 @@ public ManagePackageViewModel(Package package, User currentUser, IReadOnlyList<R
6395 public bool IsLocked { get ; }
6496
6597 public EditPackageVersionReadMeRequest ReadMe { get ; set ; }
98+
99+ public Dictionary < string , VersionListedState > VersionListedStateDictionary { get ; set ; }
100+
101+ public Dictionary < string , VersionReadMeState > VersionReadMeStateDictionary { get ; set ; }
102+
103+ public class VersionListedState
104+ {
105+ public VersionListedState ( Package package )
106+ {
107+ Listed = package . Listed ;
108+ DownloadCount = package . DownloadCount ;
109+ }
110+
111+ public bool Listed { get ; set ; }
112+ public int DownloadCount { get ; set ; }
113+ }
114+
115+ public class VersionReadMeState
116+ {
117+ public VersionReadMeState ( string submitUrl , string getReadMeUrl , string readMe )
118+ {
119+ SubmitUrl = submitUrl ;
120+ GetReadMeUrl = getReadMeUrl ;
121+ ReadMe = readMe ;
122+ }
123+
124+ public string SubmitUrl { get ; set ; }
125+ public string GetReadMeUrl { get ; set ; }
126+ public string ReadMe { get ; set ; }
127+ }
66128 }
67129}
0 commit comments