DeliveryConfirmation: Cache deliveries of all members

This commit is contained in:
2023-10-19 17:04:35 +02:00
parent a832879b73
commit 28fb4f6fa2
2 changed files with 14 additions and 3 deletions

View File

@ -82,7 +82,18 @@ namespace Elwig.Dialogs {
list = list.Where((_, n) => n % 10 == r);
}
using var doc = await Document.Merge(list.Select(m => new DeliveryConfirmation(Context, Year, m))); ;
var deliveries = await Context.DeliveryParts.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 v.year = {Year}
ORDER BY v.sortid, v.abgewertet ASC,
COALESCE(LENGTH(v.attributes), 0) ASC, attribute_prio DESC, COALESCE(v.attributes, '~'),
v.kmw DESC, v.lsnr, v.dpnr
""")
.ToListAsync();
using var doc = await Document.Merge(list.Select(m => new DeliveryConfirmation(Context, Year, m, deliveries.Where(d => d.Delivery.MgNr == m.MgNr)))); ;
await doc.Generate();
Mouse.OverrideCursor = null;

View File

@ -12,7 +12,7 @@ namespace Elwig.Documents {
public string? Text = App.Client.TextDeliveryConfirmation;
public Dictionary<string, (string, int, int, int, int)> MemberBins;
public DeliveryConfirmation(AppDbContext ctx, int year, Member m) :
public DeliveryConfirmation(AppDbContext ctx, int year, Member m, IEnumerable<DeliveryPart>? deliveries = null) :
base($"Anlieferungsbestätigung {year}", m) {
Year = year;
ShowDateAndLocation = true;
@ -20,7 +20,7 @@ namespace Elwig.Documents {
IncludeSender = true;
// FIXME footer in merged documents
//DocumentId = $"Anl.-Best. {Year}/{m.MgNr}";
Deliveries = ctx.DeliveryParts.FromSqlRaw($"""
Deliveries = deliveries ?? ctx.DeliveryParts.FromSqlRaw($"""
SELECT p.*
FROM v_delivery v
JOIN delivery_part p ON (p.year, p.did, p.dpnr) = (v.year, v.did, v.dpnr)