From f6e9d429d59065bf76e8ddfde7b7ea7ff8655f75 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 7 Apr 2026 23:51:32 +0200 Subject: [PATCH] [#77] Export/ElwigData: Fix import of AreaComContracts --- Elwig/Helpers/Export/ElwigData.cs | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/Elwig/Helpers/Export/ElwigData.cs b/Elwig/Helpers/Export/ElwigData.cs index b3bc693..cb81e68 100644 --- a/Elwig/Helpers/Export/ElwigData.cs +++ b/Elwig/Helpers/Export/ElwigData.cs @@ -224,7 +224,7 @@ namespace Elwig.Helpers.Export { } var importedMembers = new List<(string FileName, string ZwstId, string Device, int New, int Overwritten, int NotImported, string? Filters)>(); - var importedAreaComs = new List<(string FileName, string ZwstId, string Device, int Imported, int NotImported, string? Filters)>(); + var importedAreaComs = new List<(string FileName, string ZwstId, string Device, int New, int Overwritten, int NotImported, string? Filters)>(); var importedDeliveries = new List<(string FileName, string ZwstId, string Device, int New, int Overwritten, int NotImported, string? Filters)>(); foreach (var ((members, billingAddresses, telephoneNumbers, emailAddresses, areaCommitments, contracts, riede, wbKgs, wbGls, deliveries, deliveryParts, modifiers, timestamps), meta) in data.Zip(metaData)) { @@ -308,9 +308,9 @@ namespace Elwig.Helpers.Export { } if (importDuplicateMembers) { - ctx.RemoveRange(ctx.BillingAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr))); - ctx.RemoveRange(ctx.MemberTelephoneNrs.Where(n => duplicateMgNrs.Contains(n.MgNr))); - ctx.RemoveRange(ctx.MemberEmailAddrs.Where(a => duplicateMgNrs.Contains(a.MgNr))); + ctx.RemoveRange(ctx.BillingAddresses.IgnoreAutoIncludes().Where(a => duplicateMgNrs.Contains(a.MgNr))); + ctx.RemoveRange(ctx.MemberTelephoneNrs.IgnoreAutoIncludes().Where(n => duplicateMgNrs.Contains(n.MgNr))); + ctx.RemoveRange(ctx.MemberEmailAddrs.IgnoreAutoIncludes().Where(a => duplicateMgNrs.Contains(a.MgNr))); ctx.UpdateRange(members.Where(m => duplicateMgNrs.Contains(m.MgNr))); ctx.AddRange(billingAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr))); ctx.AddRange(telephoneNumbers.Where(n => duplicateMgNrs.Contains(n.MgNr))); @@ -329,7 +329,7 @@ namespace Elwig.Helpers.Export { } if (importDuplicateContracts) { - ctx.RemoveRange(ctx.AreaCommitments.Where(c => duplicateFbNrs.Contains(c.FbNr))); + ctx.RemoveRange(ctx.AreaCommitments.IgnoreAutoIncludes().Where(c => duplicateFbNrs.Contains(c.FbNr))); ctx.UpdateRange(contracts.Where(c => duplicateFbNrs.Contains(c.FbNr))); ctx.AddRange(areaCommitments.Where(c => duplicateFbNrs.Contains(c.FbNr))); } @@ -339,8 +339,9 @@ namespace Elwig.Helpers.Export { } if (contracts.Count > 0) { ctx.AddRange(riede); - var imported = contracts.Where(c => (importNewContracts && !duplicateFbNrs.Contains(c.FbNr)) || (importDuplicateContracts && duplicateFbNrs.Contains(c.FbNr))).ToList(); - importedAreaComs.Add((meta.FileName, meta.ZwstId, meta.Device, imported.Count, areaCommitments.Count - imported.Count, meta.AreaComFilters)); + var n = importNewContracts ? contracts.Count - duplicateFbNrs.Count : 0; + var o = importDuplicateContracts ? duplicateFbNrs.Count : 0; + importedAreaComs.Add((meta.FileName, meta.ZwstId, meta.Device, n, o, contracts.Count - n - o, meta.AreaComFilters)); } if (allowedDuplicateLsNrs.Count > 0) { @@ -349,9 +350,10 @@ namespace Elwig.Helpers.Export { .Select(d => (d.Year, d.DId)) .ToList(); ctx.RemoveRange(ctx.DeliveryParts + .IgnoreAutoIncludes() .Where(p => allowedDuplicateLsNrs.Contains(p.Delivery.LsNr)) .SelectMany(p => p.PartModifiers)); - ctx.RemoveRange(ctx.DeliveryParts.Where(p => allowedDuplicateLsNrs.Contains(p.Delivery.LsNr))); + ctx.RemoveRange(ctx.DeliveryParts.IgnoreAutoIncludes().Where(p => allowedDuplicateLsNrs.Contains(p.Delivery.LsNr))); ctx.UpdateRange(deliveries.Where(d => dids.Contains((d.Year, d.DId)))); ctx.AddRange(deliveryParts.Where(p => dids.Contains((p.Year, p.DId)))); ctx.AddRange(modifiers.Where(m => dids.Contains((m.Year, m.DId)))); @@ -363,9 +365,10 @@ namespace Elwig.Helpers.Export { .Select(d => (d.Year, d.DId)) .ToList(); ctx.RemoveRange(ctx.DeliveryParts + .IgnoreAutoIncludes() .Where(p => l.Contains(p.Delivery.LsNr)) .SelectMany(p => p.PartModifiers)); - ctx.RemoveRange(ctx.DeliveryParts.Where(p => l.Contains(p.Delivery.LsNr))); + ctx.RemoveRange(ctx.DeliveryParts.IgnoreAutoIncludes().Where(p => l.Contains(p.Delivery.LsNr))); ctx.UpdateRange(deliveries.Where(d => dids.Contains((d.Year, d.DId)))); ctx.AddRange(deliveryParts.Where(p => dids.Contains((p.Year, p.DId)))); ctx.AddRange(modifiers.Where(m => dids.Contains((m.Year, m.DId)))); @@ -418,10 +421,10 @@ namespace Elwig.Helpers.Export { $" ({d.New} neu, {d.Overwritten} überschrieben, {d.NotImported} nicht importiert)\n" + $" Zweigstelle: {branches[d.ZwstId].Name} (Gerät {d.Device})\n" + $" Filter: {d.Filters}"), - $"Flächenbindungen: {importedAreaComs.Sum(d => d.Imported)}", + $"Flächenbindungen: {importedAreaComs.Sum(d => d.New + d.Overwritten)}", ..importedAreaComs.Select(d => - $" {d.FileName} ({d.Imported})\n" + - $" ({d.Imported} importiert, {d.NotImported} nicht importiert)\n" + + $" {d.FileName} ({d.New + d.Overwritten})\n" + + $" ({d.New} importiert, {d.Overwritten} überschreiben, {d.NotImported} nicht importiert)\n" + $" Zweigstelle: {branches[d.ZwstId].Name} (Gerät {d.Device})\n" + $" Filter: {d.Filters}"), $"Lieferungen: {importedDeliveries.Sum(d => d.New + d.Overwritten)}",