From ee0219f32139f6ae5f960f9b954555eb03e30057 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Sun, 29 Dec 2024 11:51:08 -0700 Subject: [PATCH] Using PersonContainer for PersonDisplayDirectoryName --- Instance/DlibDotNet.cs | 2 +- Map/Models/MapLogic.cs | 6 ------ Map/Models/Stateless/MapLogic.cs | 11 +++++++++-- Shared/Models/PersonContainer.cs | 12 ++++++++++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Instance/DlibDotNet.cs b/Instance/DlibDotNet.cs index 169b62e..7615209 100644 --- a/Instance/DlibDotNet.cs +++ b/Instance/DlibDotNet.cs @@ -944,7 +944,7 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable results = []; else { - ReadOnlyDictionary personKeyToPersonContainer = mapLogic.GetPersonKeyToPersonContainer(); + ReadOnlyDictionary personKeyToPersonContainer = PersonContainer.Extract(personContainers); results = mapLogic.GetSaveContainers(cResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, distanceLimits, onlyOne, personKeyToPersonContainer); } } diff --git a/Map/Models/MapLogic.cs b/Map/Models/MapLogic.cs index 6c4ddc4..a0f5163 100644 --- a/Map/Models/MapLogic.cs +++ b/Map/Models/MapLogic.cs @@ -359,12 +359,6 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic return new(results); } - public ReadOnlyDictionary GetPersonKeyToPersonContainer() - { - Dictionary results = []; - return new(results); - } - public ReadOnlyDictionary> GetPersonKeyToIds() { Dictionary> results = []; diff --git a/Map/Models/Stateless/MapLogic.cs b/Map/Models/Stateless/MapLogic.cs index 64d406b..7aca655 100644 --- a/Map/Models/Stateless/MapLogic.cs +++ b/Map/Models/Stateless/MapLogic.cs @@ -447,6 +447,9 @@ internal abstract class MapLogic FileHolder fileHolder; List distinct = []; PersonBirthday? personBirthday; + PersonContainer? personContainer; + string? personDisplayDirectoryName; + ReadOnlyDictionary keyValuePairs = PersonContainer.Extract(personContainers); results.AddRange(GetDisplayDirectoryAllFiles(configuration.FacesFileNameExtension, configuration.PersonBirthdayFormat, personContainers)); foreach (Record record in records) { @@ -455,9 +458,13 @@ internal abstract class MapLogic continue; if (distinct.Contains(record.MappedFaceFilePath.Name)) continue; - distinct.Add(record.MappedFaceFilePath.Name); personKey = personBirthday.Value.Ticks; - results.Add(new(personKey, record.PersonKeyFormatted, record.PersonDisplayDirectoryName, record.DirectoryNumber, record.MappedFaceFilePath)); + distinct.Add(record.MappedFaceFilePath.Name); + if (!keyValuePairs.TryGetValue(personKey, out personContainer)) + personDisplayDirectoryName = record.PersonDisplayDirectoryName; + else + personDisplayDirectoryName = personContainer.DisplayDirectoryName; + results.Add(new(personKey, record.PersonKeyFormatted, personDisplayDirectoryName, record.DirectoryNumber, record.MappedFaceFilePath)); } for (int i = results.Count - 1; i > -1; i--) { diff --git a/Shared/Models/PersonContainer.cs b/Shared/Models/PersonContainer.cs index 6dc4526..b374eb4 100644 --- a/Shared/Models/PersonContainer.cs +++ b/Shared/Models/PersonContainer.cs @@ -39,6 +39,18 @@ public record PersonContainer(int? ApproximateYears, public static bool? IsKeyIsMaxBirthday(PersonContainer personContainer) => personContainer.Birthdays is null || personContainer.Key is null ? null : personContainer.Key.Value == personContainer.Birthdays.First().Value.Ticks; + public static ReadOnlyDictionary Extract(ReadOnlyCollection personContainers) + { + Dictionary results = []; + foreach (PersonContainer personContainer in personContainers) + { + if (personContainer.Key is null || results.ContainsKey(personContainer.Key.Value)) + continue; + results.Add(personContainer.Key.Value, personContainer); + } + return results.AsReadOnly(); + } + } [JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]