55 lines
No EOL
1.6 KiB
C#
55 lines
No EOL
1.6 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using isnd.ViewModels;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace isnd.Controllers
|
|
{
|
|
|
|
public partial class PackagesController
|
|
{
|
|
// Web search
|
|
public async Task<IActionResult> Index(PackageIndexViewModel model)
|
|
{
|
|
var applicationDbContext = dbContext.Packages.Include(p => p.Versions).Where(
|
|
p => ( model.Prerelease || p.Versions.Any(v => !v.IsPrerelease))
|
|
&& ((model.Query == null) || p.Id.StartsWith(model.Query)));
|
|
model.Data = await applicationDbContext.ToArrayAsync();
|
|
return View(model);
|
|
}
|
|
|
|
public async Task<IActionResult> Details(string pkgid)
|
|
{
|
|
if (pkgid == null)
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
var packageVersion = dbContext.PackageVersions
|
|
.Include(p => p.Package)
|
|
.Where(m => m.PackageId == pkgid)
|
|
.OrderByDescending(p => p)
|
|
;
|
|
|
|
if (packageVersion == null)
|
|
{
|
|
return NotFound();
|
|
}
|
|
bool results = await packageVersion.AnyAsync();
|
|
var latest = await packageVersion.FirstAsync();
|
|
|
|
return View("Details", new PackageDetailViewModel
|
|
{
|
|
latest = latest,
|
|
pkgid = pkgid,
|
|
totalHits = packageVersion.Count(),
|
|
data = packageVersion.Take(MAX_PKG_VERSION_LIST).ToArray()
|
|
});
|
|
|
|
}
|
|
const int MAX_PKG_VERSION_LIST = 50;
|
|
}
|
|
|
|
} |