Added endpoints for specific verspakketten, added sorting for All Verspakketten endpoint

This commit is contained in:
moarten
2026-04-14 21:47:46 +02:00
parent 7bce78aa0c
commit 0acc9a1f8e
15 changed files with 351 additions and 10 deletions
@@ -12,15 +12,36 @@ namespace Lutra.Application.Verspakketten
{
public async Task<Response> Handle(Query request, CancellationToken cancellationToken)
{
var verspakketten = await context.Verspaketten
.AsNoTracking()
.OrderBy(v => v.Naam)
var query = context.Verspaketten.AsNoTracking();
// Apply sort before pagination so the database handles ordering efficiently.
IOrderedQueryable<Domain.Entities.Verspakket> sorted = request.SortField switch
{
VerspakketSortField.AverageCijferSmaak =>
request.SortDirection == SortDirection.Ascending
? query.OrderBy(v => v.Beoordelingen.Average(b => (double)b.CijferSmaak))
: query.OrderByDescending(v => v.Beoordelingen.Average(b => (double)b.CijferSmaak)),
VerspakketSortField.AverageCijferBereiden =>
request.SortDirection == SortDirection.Ascending
? query.OrderBy(v => v.Beoordelingen.Average(b => (double)b.CijferBereiden))
: query.OrderByDescending(v => v.Beoordelingen.Average(b => (double)b.CijferBereiden)),
VerspakketSortField.PrijsInCenten =>
request.SortDirection == SortDirection.Ascending
? query.OrderBy(v => v.PrijsInCenten)
: query.OrderByDescending(v => v.PrijsInCenten),
VerspakketSortField.Naam or _ =>
request.SortDirection == SortDirection.Ascending
? query.OrderBy(v => v.Naam)
: query.OrderByDescending(v => v.Naam),
};
var verspakketten = await sorted
.Skip(request.Skip)
.Take(request.Take)
.Select(v => new Verspakket
{
Naam = v.Naam,
PrijsInCenten = null,
PrijsInCenten = v.PrijsInCenten,
Beoordelingen = v.Beoordelingen
.Select(b => new Beoordeling
{