[#79] Entities: Remove EF proxies
This commit is contained in:
@@ -27,10 +27,7 @@ namespace Elwig.Services {
|
||||
|
||||
public static async Task<Member?> GetMemberAsync(int mgnr) {
|
||||
using var ctx = new AppDbContext();
|
||||
return await ctx.Members
|
||||
.Include(m => m.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.DefaultWbKg!.AtKg)
|
||||
.FirstOrDefaultAsync(m => m.MgNr == mgnr);
|
||||
return await ctx.Members.FirstOrDefaultAsync(m => m.MgNr == mgnr);
|
||||
}
|
||||
|
||||
public static Member? GetMember(int mgnr) {
|
||||
@@ -71,7 +68,7 @@ namespace Elwig.Services {
|
||||
vm.IsNetWeight = p.IsNetWeight;
|
||||
|
||||
vm.Modifiers.Clear();
|
||||
foreach (var m in p.Modifiers) {
|
||||
foreach (var m in p.PartModifiers) {
|
||||
vm.Modifiers.Add((Modifier)ControlUtils.GetItemFromSourceWithPk(vm.ModifiersSource, m.Year, m.ModId)!);
|
||||
}
|
||||
|
||||
@@ -472,6 +469,7 @@ namespace Elwig.Services {
|
||||
DeliveryPart p;
|
||||
|
||||
using var ctx = new AppDbContext();
|
||||
using var tx = await ctx.Database.BeginTransactionAsync();
|
||||
int year = oldYear ?? Utils.CurrentYear;
|
||||
int did = oldDid ?? await ctx.NextDId(year);
|
||||
int dpnr = oldDpnr ?? await ctx.NextDPNr(year, did);
|
||||
@@ -556,13 +554,13 @@ namespace Elwig.Services {
|
||||
if (originalMgNr != null && originalMgNr.Value != d.MgNr) {
|
||||
// update origin (KgNr), if default is selected
|
||||
var newKgNr = (await ctx.Members.FindAsync(d.MgNr))?.DefaultKgNr;
|
||||
foreach (var part in d.Parts.Where(part => part.DPNr != dpnr && part.KgNr == originalMemberKgNr)) {
|
||||
part.KgNr = newKgNr;
|
||||
ctx.Update(part);
|
||||
}
|
||||
await ctx.DeliveryParts
|
||||
.Where(p => p.Year == d.Year && p.DId == d.DId && p.DPNr != dpnr && p.KgNr == originalMemberKgNr)
|
||||
.ExecuteUpdateAsync(u => u.SetProperty(p => p.KgNr, newKgNr));
|
||||
}
|
||||
|
||||
await ctx.SaveChangesAsync();
|
||||
await tx.CommitAsync();
|
||||
|
||||
return p;
|
||||
});
|
||||
@@ -574,7 +572,10 @@ namespace Elwig.Services {
|
||||
|
||||
using var ctx = new AppDbContext();
|
||||
bool anyLeft = false;
|
||||
var d = (await ctx.Deliveries.FindAsync(year, did))!;
|
||||
var d = await ctx.Deliveries
|
||||
.Where(d => d.Year == year && d.DId == did)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.PartModifiers)
|
||||
.SingleAsync();
|
||||
var lnr = await ctx.NextLNr(d.Date, d.ZwstId);
|
||||
n = new Delivery {
|
||||
Year = year,
|
||||
@@ -601,7 +602,11 @@ namespace Elwig.Services {
|
||||
anyLeft = true;
|
||||
p.Weight -= w;
|
||||
ctx.Update(p);
|
||||
var s = ctx.CreateProxy<DeliveryPart>();
|
||||
var s = new DeliveryPart {
|
||||
SortId = null!,
|
||||
QualId = null!,
|
||||
HkId = null!,
|
||||
};
|
||||
var values = ctx.Entry(p).CurrentValues;
|
||||
ctx.Entry(s).CurrentValues.SetValues(values);
|
||||
s.Year = n.Year;
|
||||
@@ -633,7 +638,10 @@ namespace Elwig.Services {
|
||||
using var ctx = new AppDbContext();
|
||||
var anyLeft = false;
|
||||
n = (await ctx.Deliveries.FirstAsync(d => d.LsNr == lsnr))!;
|
||||
var d = (await ctx.Deliveries.FindAsync(year, did))!;
|
||||
var d = await ctx.Deliveries
|
||||
.Where(d => d.Year == year && d.DId == did)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.PartModifiers)
|
||||
.SingleAsync();
|
||||
var dpnr = await ctx.NextDPNr(n.Year, n.DId);
|
||||
foreach (var (p, w) in d.Parts.ToList().Zip(weights)) {
|
||||
if (w <= 0) {
|
||||
@@ -645,7 +653,11 @@ namespace Elwig.Services {
|
||||
anyLeft = true;
|
||||
p.Weight -= w;
|
||||
ctx.Update(p);
|
||||
var s = ctx.CreateProxy<DeliveryPart>();
|
||||
var s = new DeliveryPart {
|
||||
SortId = null!,
|
||||
QualId = null!,
|
||||
HkId = null!,
|
||||
};
|
||||
var values = ctx.Entry(p).CurrentValues;
|
||||
ctx.Entry(s).CurrentValues.SetValues(values);
|
||||
s.Year = n.Year;
|
||||
@@ -674,7 +686,10 @@ namespace Elwig.Services {
|
||||
public static async Task DepreciateDelivery(int year, int did, int[] weights) {
|
||||
await Task.Run(async () => {
|
||||
using var ctx = new AppDbContext();
|
||||
var d = (await ctx.Deliveries.FindAsync(year, did))!;
|
||||
var d = await ctx.Deliveries
|
||||
.Where(d => d.Year == year && d.DId == did)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.PartModifiers)
|
||||
.SingleAsync();
|
||||
var dpnr = await ctx.NextDPNr(year, did);
|
||||
foreach (var (p, w) in d.Parts.ToList().Zip(weights)) {
|
||||
if (w <= 0) {
|
||||
@@ -686,7 +701,11 @@ namespace Elwig.Services {
|
||||
} else {
|
||||
p.Weight -= w;
|
||||
ctx.Update(p);
|
||||
var n = ctx.CreateProxy<DeliveryPart>();
|
||||
var n = new DeliveryPart {
|
||||
SortId = null!,
|
||||
QualId = null!,
|
||||
HkId = null!,
|
||||
};
|
||||
var values = ctx.Entry(p).CurrentValues;
|
||||
ctx.Entry(n).CurrentValues.SetValues(values);
|
||||
n.DPNr = dpnr++;
|
||||
@@ -711,10 +730,8 @@ namespace Elwig.Services {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
var d = (await ctx.Deliveries.FindAsync(year, did))!;
|
||||
using var doc = new DeliveryNote(d, ctx);
|
||||
await Utils.ExportDocument(doc, mode, d.LsNr, (d.Member, $"{DeliveryNote.Name} Nr. {d.LsNr}", $"Im Anhang finden Sie den {DeliveryNote.Name} Nr. {d.LsNr}"));
|
||||
using var doc = await DeliveryNote.Initialize(year, did);
|
||||
await Utils.ExportDocument(doc, mode, doc.Delivery.LsNr, (doc.Member, $"{DeliveryNote.Name} Nr. {doc.Delivery.LsNr}", $"Im Anhang finden Sie den {DeliveryNote.Name} Nr. {doc.Delivery.LsNr}"));
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
@@ -792,9 +809,6 @@ namespace Elwig.Services {
|
||||
.Select(p => p.Delivery)
|
||||
.Distinct()
|
||||
.Include(d => d.Parts).ThenInclude(p => p.PartModifiers)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.Rd)
|
||||
.Include(d => d.Parts).ThenInclude(p => p.Kg!.Gl)
|
||||
.AsSplitQuery()
|
||||
.ToListAsync();
|
||||
var wbKgs = list
|
||||
.SelectMany(d => d.Parts)
|
||||
|
||||
Reference in New Issue
Block a user