DeliveryConfirmation: Cache deliveries of all members
This commit is contained in:
@ -82,7 +82,18 @@ namespace Elwig.Dialogs {
|
|||||||
list = list.Where((_, n) => n % 10 == r);
|
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();
|
await doc.Generate();
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ namespace Elwig.Documents {
|
|||||||
public string? Text = App.Client.TextDeliveryConfirmation;
|
public string? Text = App.Client.TextDeliveryConfirmation;
|
||||||
public Dictionary<string, (string, int, int, int, int)> MemberBins;
|
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) {
|
base($"Anlieferungsbestätigung {year}", m) {
|
||||||
Year = year;
|
Year = year;
|
||||||
ShowDateAndLocation = true;
|
ShowDateAndLocation = true;
|
||||||
@ -20,7 +20,7 @@ namespace Elwig.Documents {
|
|||||||
IncludeSender = true;
|
IncludeSender = true;
|
||||||
// FIXME footer in merged documents
|
// FIXME footer in merged documents
|
||||||
//DocumentId = $"Anl.-Best. {Year}/{m.MgNr}";
|
//DocumentId = $"Anl.-Best. {Year}/{m.MgNr}";
|
||||||
Deliveries = ctx.DeliveryParts.FromSqlRaw($"""
|
Deliveries = deliveries ?? ctx.DeliveryParts.FromSqlRaw($"""
|
||||||
SELECT p.*
|
SELECT p.*
|
||||||
FROM v_delivery v
|
FROM v_delivery v
|
||||||
JOIN delivery_part p ON (p.year, p.did, p.dpnr) = (v.year, v.did, v.dpnr)
|
JOIN delivery_part p ON (p.year, p.did, p.dpnr) = (v.year, v.did, v.dpnr)
|
||||||
|
Reference in New Issue
Block a user