diff --git a/Helpers/HelperGenealogicalDataCommunication.cs b/Helpers/HelperGenealogicalDataCommunication.cs index 751d158..cb97c5e 100644 --- a/Helpers/HelperGenealogicalDataCommunication.cs +++ b/Helpers/HelperGenealogicalDataCommunication.cs @@ -30,6 +30,11 @@ internal static partial class HelperGenealogicalDataCommunication char Sex, char First); + private record Collections(ReadOnlyDictionary IdToPersonKey, + ReadOnlyDictionary IdToName, + ReadOnlyDictionary IdToGivenName, + ReadOnlyCollection PersonExportCollection); + private record PersonExport(long Id, ReadOnlyCollection Lines, string PersonKeyFormatted, @@ -283,6 +288,8 @@ internal static partial class HelperGenealogicalDataCommunication { for (int k = j; k < lines.Count; k++) { + if (lines[k][0] == '1') + break; seven = lines[k][..7]; if (seven != "3 CONT ") break; @@ -335,6 +342,8 @@ internal static partial class HelperGenealogicalDataCommunication { for (int k = j; k < lines.Count; k++) { + if (lines[k][0] == '1') + break; seven = lines[k][..7]; if (seven != "3 CONT ") break; @@ -372,6 +381,8 @@ internal static partial class HelperGenealogicalDataCommunication { for (int k = j; k < lines.Count; k++) { + if (lines[k][0] == '1') + break; seven = lines[k][..7]; if (seven != "3 CONT ") break; @@ -708,8 +719,9 @@ internal static partial class HelperGenealogicalDataCommunication return new(results); } - private static (ReadOnlyDictionary, ReadOnlyDictionary, ReadOnlyDictionary, ReadOnlyCollection) GetCollections(AppSettings appSettings, ReadOnlyDictionary people) + private static Collections GetCollections(AppSettings appSettings, ReadOnlyDictionary people) { + Collections result; long personKey; char[] ageCollection; Dictionary idToName = new(); @@ -734,7 +746,8 @@ internal static partial class HelperGenealogicalDataCommunication idToGivenName.Add(keyValuePair.Key, string.IsNullOrEmpty(keyValuePair.Value.Name.Given) ? WindowsFileSystem().Replace(keyValuePair.Value.Name.ForwardSlashFull, "_") : WindowsFileSystem().Replace(keyValuePair.Value.Name.Given, "_")); collection.Add(new(keyValuePair.Key, new(keyValuePair.Value.Lines), keyValuePair.Value.Birth.Note, ageCollection, dateTime, personKey)); } - return (new(idToPersonKey), new(idToName), new(idToGivenName), new(collection)); + result = new(new(idToPersonKey), new(idToName), new(idToGivenName), new(collection)); + return result; } private static List GetFamilyCollection(ReadOnlyCollection> familyGroupLines, ReadOnlyDictionary people, ReadOnlyDictionary idToPersonKey, ReadOnlyDictionary idToName, ReadOnlyDictionary idToGivenName) @@ -1041,16 +1054,16 @@ internal static partial class HelperGenealogicalDataCommunication logger.LogInformation("{old} {days} day(s) => {new}", 638258293638438812, 4, new DateTime(638258293638438812).AddDays(4.0001).Ticks); GenealogicalDataCommunicationCollections genealogicalDataCommunicationCollections = GetGenealogicalDataCommunicationCollections(input); ReadOnlyDictionary people = GetPeople(input, genealogicalDataCommunicationCollections); - (ReadOnlyDictionary idToPersonKey, ReadOnlyDictionary idToName, ReadOnlyDictionary idToGivenName, ReadOnlyCollection personExportCollection) = GetCollections(appSettings, people); - if (idToPersonKey.Count != people.Count || idToPersonKey.Count != idToName.Count || idToPersonKey.Count != idToGivenName.Count) + Collections collections = GetCollections(appSettings, people); + if (collections.IdToPersonKey.Count != people.Count || collections.IdToPersonKey.Count != collections.IdToName.Count || collections.IdToPersonKey.Count != collections.IdToGivenName.Count) throw new NotSupportedException(); - List familyCollection = GetFamilyCollection(genealogicalDataCommunicationCollections.FamilyGroupLines, people, idToPersonKey, idToName, idToGivenName); + List familyCollection = GetFamilyCollection(genealogicalDataCommunicationCollections.FamilyGroupLines, people, collections.IdToPersonKey, collections.IdToName, collections.IdToGivenName); WriteJsonFiles(appSettings, input, genealogicalDataCommunicationCollections, people, familyCollection); WriteGenealogicalDataCommunicationCollections(logger, input, genealogicalDataCommunicationCollections, people); if (input.Destination is not null) ExportFamilies(appSettings, input, familyCollection); if (input.Destination is not null) - Export(input, ticks, idToName, personExportCollection); + Export(input, ticks, collections.IdToName, collections.PersonExportCollection); if (string.IsNullOrEmpty(input.GenealogicalDataCommunicationFile)) logger.LogInformation("{file} is null?", input.GenealogicalDataCommunicationDirectory); }