[struc:] moved KasPersonError-Instance from addressset to KasPerson-Instance

This commit is contained in:
Elias Fierke
2025-12-07 13:30:25 +01:00
parent 8c56717b9c
commit b70bd5e324
3 changed files with 82 additions and 89 deletions

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Avalonia.Threading;
@@ -35,24 +36,32 @@ public class AddressCheck
_progress = progressWindow;
}
public async Task<List<KasPersonError>> Perform(int id)
public async Task<List<KasPerson>> Perform(int id)
{
foreach (var adset in Settings._instance.addressSets.addresses)
if (adset.ID == id)
// Find the index of the address set with the given id
var adset_index = -1;
for (var i = 0; i < Settings._instance.addressSets.addresses.Count; i++)
if (Settings._instance.addressSets.addresses[i].ID == id)
{
var failed_refsids = new List<KasPersonError>();
var total = adset.KasPersons.Count;
var current = 0;
adset_index = i;
break;
}
await Task.Run(async () =>
{
foreach (var person in adset.KasPersons)
{
var errors = new List<ErrorTypes>();
var warnings = new List<WarningTypes>();
var hasFaults = false;
if (adset_index == -1) return new List<KasPerson>();
var address_component_count = 2; // cause anrede and name are first
var adset = Settings._instance.addressSets.addresses[adset_index];
var total = adset.KasPersons.Count;
var current = 0;
await Task.Run(async () =>
{
foreach (var person in adset.KasPersons)
{
var errors = new List<ErrorTypes>();
var warnings = new List<WarningTypes>();
var hasFaults = false;
var address_component_count = 2; // cause anrede and name are first
// PLZ-Prüfung
if (person.plz == "" || person.plz == null)
@@ -92,13 +101,12 @@ public class AddressCheck
}
else
{
if (!AddressCreator.CheckPLZ(person.pplz, person.land))
{
hasFaults = true;
errors.Add(ErrorTypes.PPlzNotUsable);
}
// if ((person.pplz < 10000 && string.IsNullOrWhiteSpace(person.land)) ||
// (person.pplz < 10000 && person.land == "GER") ||
// (person.pplz < 10000 && person.land == "DE"))
@@ -224,9 +232,13 @@ public class AddressCheck
}
if (hasFaults)
lock (failed_refsids)
lock (Settings._instance.addressSets.addresses)
{
failed_refsids.Add(new KasPersonError((person.refsid, errors, warnings)));
// Directly set PersonError in the address set
var person_index = adset.KasPersons.IndexOf(person);
if (person_index >= 0)
Settings._instance.addressSets.addresses[adset_index].KasPersons[person_index].PersonError =
new KasPersonError((errors, warnings));
}
// Fortschritt aktualisieren
@@ -241,11 +253,12 @@ public class AddressCheck
});
}
});
adset.errors = failed_refsids;
Settings.Save();
return failed_refsids;
}
return null;
Settings.Save();
// Return only the persons with errors from the address set
return Settings._instance.addressSets.addresses[adset_index].KasPersons
.Where(p => p.PersonError != null)
.ToList();
}
}