NonSpecificPeopleCollection now checks every hour

No longer using default if not any _NotMappedPersonContainers
This commit is contained in:
Mike Phares 2023-07-30 23:42:22 -07:00
parent 1594783c7d
commit 5b9e32bce6
2 changed files with 52 additions and 10 deletions

View File

@ -339,17 +339,14 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
return result; return result;
} }
private string GetDirectory(bool saveIndividually, int padLeft, string? segmentC, string by, MappingFromItem mappingFromItem, SortingContainer sortingContainer) private string? GetDirectory(Configuration configuration, bool saveIndividually, int padLeft, string? segmentC, string by, MappingFromItem mappingFromItem)
{ {
if (_Configuration is null) string? result = null;
throw new NullReferenceException(nameof(_Configuration));
string result;
const int zero = 0; const int zero = 0;
string mappingSegmentB; string mappingSegmentB;
string personKeyFormatted; string personKeyFormatted;
PersonBirthday personBirthday; PersonBirthday personBirthday;
PersonContainer personContainer; PersonContainer personContainer;
result = Path.Combine(_EDistanceContentTicksDirectory, by, sortingContainer.Sorting.Id.ToString(), sortingContainer.Sorting.WholePercentages.ToString());
for (int i = _NotMappedPersonContainers.Count - 1; i > 0; i--) for (int i = _NotMappedPersonContainers.Count - 1; i > 0; i--)
{ {
personContainer = _NotMappedPersonContainers[i]; personContainer = _NotMappedPersonContainers[i];
@ -357,7 +354,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
continue; continue;
personBirthday = personContainer.Birthdays[zero]; personBirthday = personContainer.Birthdays[zero];
mappingSegmentB = Stateless.MapLogic.GetMappingSegmentB(_Ticks, personBirthday, personContainer.ApproximateYears, mappingFromItem); mappingSegmentB = Stateless.MapLogic.GetMappingSegmentB(_Ticks, personBirthday, personContainer.ApproximateYears, mappingFromItem);
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personBirthday); personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personBirthday);
if (!saveIndividually || segmentC is null) if (!saveIndividually || segmentC is null)
result = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, mappingSegmentB); result = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, mappingSegmentB);
else else
@ -380,7 +377,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
bool isByMapping; bool isByMapping;
bool isBySorting; bool isBySorting;
string checkFile; string checkFile;
string directory; string? directory;
string shortcutFile; string shortcutFile;
Mapping? keyMapping; Mapping? keyMapping;
string facesDirectory; string facesDirectory;
@ -426,7 +423,9 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
if (distinct.Contains(mapping.SortingContainer.Sorting.Id)) if (distinct.Contains(mapping.SortingContainer.Sorting.Id))
continue; continue;
ticks = DateTime.Now.Ticks; ticks = DateTime.Now.Ticks;
directory = GetDirectory(saveIndividually, padLeft, mapping.SegmentC, by, mapping.MappingFromItem, mapping.SortingContainer); directory = GetDirectory(_Configuration, saveIndividually, padLeft, mapping.SegmentC, by, mapping.MappingFromItem);
if (string.IsNullOrEmpty(directory))
continue;
personDirectory = Path.Combine(directory, $"Z]{ticks}"); personDirectory = Path.Combine(directory, $"Z]{ticks}");
if (saveIndividually) if (saveIndividually)
{ {

View File

@ -501,7 +501,48 @@ internal abstract class MapLogic
return result; return result;
} }
private static List<PersonContainer> GetNotMappedPersonContainers(Configuration configuration, ReadOnlyCollection<PersonContainer> personContainers, long[] personKeyCollection) private static List<PersonContainer> GetNonSpecificPeopleCollection(Configuration configuration, long ticks, List<long> personKeys)
{
List<PersonContainer> results = new();
bool check;
Person person;
long personKey;
int? approximateYears = null;
PersonBirthday personBirthday;
PersonContainer personContainer;
string[] personDisplayDirectoryAllFiles = Array.Empty<string>();
DateTime incrementDate = new(configuration.PersonBirthdayFirstYear, 1, 1);
long oneHour = new DateTime(1, 1, 1, 1, 0, 0).Ticks - new DateTime(1, 1, 1).Ticks;
for (int i = 0; i < int.MaxValue; i++)
{
check = false;
personKey = incrementDate.Ticks;
incrementDate = incrementDate.AddDays(1);
if (incrementDate.Ticks > ticks)
break;
if (personKeys.Contains(personKey))
continue;
for (int j = 1; j < 24; j++)
{
if (personKeys.Contains(personKey + (oneHour * j)))
{
check = true;
break;
}
}
if (check)
continue;
personBirthday = IPersonBirthday.GetPersonBirthday(personKey + (oneHour * 2));
person = IPerson.GetPerson(configuration.MappingDefaultName, configuration.PersonCharacters.ToArray(), configuration.MappingDefaultName, personKey, personBirthday);
personContainer = new(approximateYears, new PersonBirthday[] { personBirthday }, personDisplayDirectoryAllFiles, configuration.MappingDefaultName, personKey, person);
results.Add(personContainer);
if (results.Count > 999)
break;
}
return results;
}
private static List<PersonContainer> GetNotMappedPersonContainers(Configuration configuration, long ticks, ReadOnlyCollection<PersonContainer> personContainers, long[] personKeyCollection)
{ {
List<PersonContainer> results = new(); List<PersonContainer> results = new();
List<PersonContainer> notMappedAndNotNamedPersonKeys = new(); List<PersonContainer> notMappedAndNotNamedPersonKeys = new();
@ -521,6 +562,8 @@ internal abstract class MapLogic
notMappedAndWithNamedPersonKeys.Add(personContainer); notMappedAndWithNamedPersonKeys.Add(personContainer);
} }
results.AddRange(notMappedAndNotNamedPersonKeys); results.AddRange(notMappedAndNotNamedPersonKeys);
if (results.Count == 0)
results.AddRange(GetNonSpecificPeopleCollection(configuration, ticks, personKeys));
return results; return results;
} }
@ -866,7 +909,7 @@ internal abstract class MapLogic
long[] personKeyCollection = (from l in nullablePersonKeyCollection where l is not null select l.Value).Distinct().ToArray(); long[] personKeyCollection = (from l in nullablePersonKeyCollection where l is not null select l.Value).Distinct().ToArray();
PossiblyRebuildPersonContainers(configuration, a2PeopleSingletonDirectory, personKeyFormattedToNewestPersonKeyFormatted, possiblyNewPersonDisplayDirectoryNamesAndPersonContainer); PossiblyRebuildPersonContainers(configuration, a2PeopleSingletonDirectory, personKeyFormattedToNewestPersonKeyFormatted, possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
SetPersonKeyToPersonContainer(configuration, personContainers, personKeyCollection, personKeyToPersonContainer, personKeyToPersonContainerCollection); SetPersonKeyToPersonContainer(configuration, personContainers, personKeyCollection, personKeyToPersonContainer, personKeyToPersonContainerCollection);
notMappedPersonContainers.AddRange(GetNotMappedPersonContainers(configuration, personContainers, personKeyCollection)); notMappedPersonContainers.AddRange(GetNotMappedPersonContainers(configuration, ticks, personContainers, personKeyCollection));
} }
private static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, long dateTimeOriginalThenMinimumDateTimeTicks, bool? isWrongYear) private static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, long dateTimeOriginalThenMinimumDateTimeTicks, bool? isWrongYear)