diff --git a/src/isnd/Controllers/Packages/PackagesController.WebViews.cs b/src/isnd/Controllers/Packages/PackagesController.WebViews.cs index 2f67281..bd77a9e 100644 --- a/src/isnd/Controllers/Packages/PackagesController.WebViews.cs +++ b/src/isnd/Controllers/Packages/PackagesController.WebViews.cs @@ -18,8 +18,13 @@ namespace isnd.Controllers // Web search public async Task Index(PackageRegistrationQuery model) { - return View(new RegistrationPageIndexQueryAndResult{Query = model, - Result = await packageManager.SearchPackageAsync(model)}); + var pkgs = await packageManager.SearchPackageAsync(model); + + return View(new RegistrationPageIndexQueryAndResult + { + Query = model, + Result = pkgs.ToArray() + }); } public async Task Details(PackageDetailViewModel model) @@ -30,6 +35,7 @@ namespace isnd.Controllers } var packageVersion = dbContext.PackageVersions + .Include(p=>p.LatestCommit) .Include(p => p.Package) .Where(m => m.PackageId == model.pkgid) .OrderByDescending(p => p) @@ -48,7 +54,7 @@ namespace isnd.Controllers } const int MAX_PKG_VERSION_LIST = 50; - [Authorize] + [Authorize, HttpGet] public async Task Delete(string pkgid, string version, string pkgtype) { if (pkgid == null || version == null) @@ -66,7 +72,7 @@ namespace isnd.Controllers } // POST: PackageVersion/Delete/5 - [HttpPost, ActionName("Delete")] + [HttpPost] [ValidateAntiForgeryToken] public async Task DeleteConfirmed(string PackageId, string FullString, string Type) diff --git a/src/isnd/Data/Catalog/PackageRegistration.cs b/src/isnd/Data/Catalog/PackageRegistration.cs index e6f5f05..6a1bb0e 100644 --- a/src/isnd/Data/Catalog/PackageRegistration.cs +++ b/src/isnd/Data/Catalog/PackageRegistration.cs @@ -14,31 +14,17 @@ namespace isnd.Data.Catalog Items = new List(); } - public PackageRegistration(string bid, string id, string apiBase, IEnumerable pkgs) : base(bid + $"/{id}/index.json") + public PackageRegistration(string bid, string id, string apiBase, Packages.Package pkg) : base(bid + $"/{id}/index.json") { - Items = new List(); - long cnid = 0; - var pkgsGroups = pkgs.GroupBy(l => l.Id); - // Pour tous les groupes par Id - foreach (var gsp in pkgsGroups) + Items = new List { - var pkgsbi = gsp.ToArray(); - List versions = new List(); - - foreach(var l in pkgsbi.Select(p => p.Versions)) - { - versions.AddRange(l); - foreach (var pv in l) - { - if (pv.CommitNId> cnid) - { - cnid = pv.CommitNId; - } - } - } - Items.Add(new CatalogPage(bid, gsp.Key, apiBase, versions)); + new CatalogPage(bid, id, apiBase, pkg.Versions) + }; + if (pkg.Versions.Count>0) + { + CommitId = pkg.Versions.Max(v=>v.CommitNId).ToString(); + CommitTimeStamp = pkg.Versions.Max(v=>v.LatestCommit.CommitTimeStamp); } - CommitId = cnid.ToString(); } [JsonProperty("count")] @@ -49,5 +35,7 @@ namespace isnd.Data.Catalog public string CommitId { get; set; } public DateTimeOffset CommitTimeStamp { get; internal set; } + + } } \ No newline at end of file diff --git a/src/isnd/Data/Packages/PackageVersion.cs b/src/isnd/Data/Packages/PackageVersion.cs index ceccc16..a96e061 100644 --- a/src/isnd/Data/Packages/PackageVersion.cs +++ b/src/isnd/Data/Packages/PackageVersion.cs @@ -76,5 +76,6 @@ namespace isnd.Data } ); } + public bool IsDeleted => LatestCommit.Action == PackageAction.DeletePackage; } } \ No newline at end of file diff --git a/src/isnd/Interfaces/IPackageManager.cs b/src/isnd/Interfaces/IPackageManager.cs index 7410d2a..b87dc39 100644 --- a/src/isnd/Interfaces/IPackageManager.cs +++ b/src/isnd/Interfaces/IPackageManager.cs @@ -30,7 +30,7 @@ namespace isnd.Interfaces Task GetCatalogIndexAsync(); Task GetPackageRegistrationIndexAsync(PackageRegistrationQuery query); - Task SearchPackageAsync(PackageRegistrationQuery query); + Task> SearchPackageAsync(PackageRegistrationQuery query); } } \ No newline at end of file diff --git a/src/isnd/Services/PackageManager.cs b/src/isnd/Services/PackageManager.cs index 020141d..33a57e5 100644 --- a/src/isnd/Services/PackageManager.cs +++ b/src/isnd/Services/PackageManager.cs @@ -194,7 +194,7 @@ namespace isnd.Services var commit = new Commit { Action = PackageAction.DeletePackage, - TimeStamp = DateTime.Now + TimeStamp = DateTimeOffset.Now.ToUniversalTime() }; dbContext.Commits.Add(commit); var pkg = await dbContext.PackageVersions.SingleOrDefaultAsync( @@ -276,13 +276,13 @@ namespace isnd.Services query.Query = query.Query.ToLower(); var scope = await dbContext.Packages.Include(p => p.Versions).Include(p => p.Owner) .Include(p=>p.LatestVersion) - .Where(p => p.Id.ToLower() == query.Query).Skip(query.Skip).Take(query.Take).ToListAsync(); - + .SingleAsync(p => p.Id.ToLower() == query.Query); + if (scope.Versions.Count==0) return null; string bid = $"{apiBase}{ApiConfig.Registration}"; return new PackageRegistration(bid, query.Query, apiBase, scope); } - public async Task SearchPackageAsync(PackageRegistrationQuery query) + public async Task> SearchPackageAsync(PackageRegistrationQuery query) { string bid = $"{apiBase}{ApiConfig.Registration}"; @@ -297,8 +297,7 @@ namespace isnd.Services var total = scope.Count(); var pkgs = scope.Skip(query.Skip).Take(query.Take); - return - new PackageRegistration(bid, query.Query, apiBase, pkgs); + return pkgs.Select(p => new PackageRegistration(bid, query.Query, apiBase, p)); } private static bool MatchingExact(Data.Packages.Package p, PackageRegistrationQuery query) diff --git a/src/isnd/ViewModels/RegistrationPageIndexQueryAndResult.cs b/src/isnd/ViewModels/RegistrationPageIndexQueryAndResult.cs index e9aec7c..36f9b5d 100644 --- a/src/isnd/ViewModels/RegistrationPageIndexQueryAndResult.cs +++ b/src/isnd/ViewModels/RegistrationPageIndexQueryAndResult.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using isnd.Data.Catalog; namespace isnd @@ -5,6 +6,6 @@ namespace isnd public class RegistrationPageIndexQueryAndResult { public PackageRegistrationQuery Query { get; set; } - public PackageRegistration Result { get; set; } + public PackageRegistration[] Result { get; set; } } } \ No newline at end of file diff --git a/src/isnd/Views/Packages/Delete.cshtml b/src/isnd/Views/Packages/Delete.cshtml index 8a2074d..b5bebf5 100644 --- a/src/isnd/Views/Packages/Delete.cshtml +++ b/src/isnd/Views/Packages/Delete.cshtml @@ -43,7 +43,7 @@ -
+ diff --git a/src/isnd/Views/Packages/Index.cshtml b/src/isnd/Views/Packages/Index.cshtml index 6e679e2..74b26bc 100644 --- a/src/isnd/Views/Packages/Index.cshtml +++ b/src/isnd/Views/Packages/Index.cshtml @@ -10,25 +10,26 @@ - @Html.DisplayNameFor(model => model.Result.Items[0].Items[0].Id) + @Html.DisplayNameFor(model => model.Result[0].Items[0].Items[0].Id) - @Html.DisplayNameFor(model => model.Result.Items[0].Items[0].Entry.Description) + @Html.DisplayNameFor(model => model.Result[0].Items[0].Items[0].Entry.Description) -@foreach (var regpage in Model.Result.Items) { +@foreach (var regpage in Model.Result) +foreach (var i in regpage.Items) { - @regpage.GetPackageId() + @i.GetPackageId() - @Html.ActionLink("Details", "Details", new { pkgid = regpage.GetPackageId() }) + @Html.ActionLink("Details", "Details", new { pkgid = i.GetPackageId() }) }