From 3ee7a6e75e0cd0f00f4605f4e442151ba171f501 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 13 Nov 2023 00:55:36 +0100 Subject: [PATCH] DeliveryConfirmationData: Fix ordering problem --- Elwig/Models/Dtos/DeliveryConfirmationData.cs | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Elwig/Models/Dtos/DeliveryConfirmationData.cs b/Elwig/Models/Dtos/DeliveryConfirmationData.cs index 5be0325..b645eba 100644 --- a/Elwig/Models/Dtos/DeliveryConfirmationData.cs +++ b/Elwig/Models/Dtos/DeliveryConfirmationData.cs @@ -28,7 +28,7 @@ namespace Elwig.Models.Dtos { } public static async Task> ForSeason(DbSet table, int year) { - return (await FromDbSet(table, year).ToListAsync()) + return (await FromDbSet(table, year)) .GroupBy( p => p.Delivery.MgNr, p => new DeliveryConfirmationRow(p), @@ -37,25 +37,31 @@ namespace Elwig.Models.Dtos { } public static async Task ForMember(DbSet table, int year, int mgnr) { - return new DeliveryConfirmationData((await FromDbSet(table, year, mgnr).ToListAsync()).Select(p => new DeliveryConfirmationRow(p)), mgnr); + return new DeliveryConfirmationData((await FromDbSet(table, year, mgnr)).Select(p => new DeliveryConfirmationRow(p)), mgnr); } - private static IQueryable FromDbSet(DbSet table, int? year = null, int? mgnr = null) { + private static async Task> FromDbSet(DbSet table, int? year = null, int? mgnr = null) { var y = year?.ToString() ?? "NULL"; var m = mgnr?.ToString() ?? "NULL"; - return table.FromSqlRaw($""" + IQueryable q = table; + if (year != null) q = q.Where(p => p.Year == year); + if (mgnr != null) q = q.Where(p => p.Delivery.MgNr == mgnr); + await q + .Include(p => p.Delivery) + .Include(p => p.Variant) + .Include(p => p.Attribute) + .Include(p => p.Quality) + .Include(p => p.Buckets) + .Include(p => p.PartModifiers) + .ThenInclude(m => m.Modifier) + .LoadAsync(); + return await table.FromSqlRaw($""" SELECT p.* FROM v_delivery v JOIN delivery_part p ON (p.year, p.did, p.dpnr) = (v.year, v.did, v.dpnr) WHERE (p.year = {y} OR {y} IS NULL) AND (v.mgnr = {m} OR {m} IS NULL) ORDER BY p.year, v.mgnr, v.sortid, v.abgewertet ASC, v.attribute_prio DESC, COALESCE(v.attrid, '~'), v.kmw DESC, v.lsnr, v.dpnr - """) - .Include(p => p.Delivery) - .Include(p => p.Variant) - .Include(p => p.Attribute) - .Include(p => p.Quality) - .Include(p => p.Buckets) - .Include(p => p.PartModifiers).ThenInclude(m => m.Modifier); + """).ToListAsync(); } }