SegmentB, personKey,
personKeyFormatted and Sorting
This commit is contained in:
@ -5,21 +5,22 @@ namespace View_by_Distance.Map.Models.Stateless;
|
||||
internal abstract class MapLogic
|
||||
{
|
||||
|
||||
internal static string GetDateKey(DateTime dateTime, Mapping mapping, DateTime minimumDateTime, bool? isWrongYear)
|
||||
internal static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, DateTime minimumDateTime, bool? isWrongYear)
|
||||
{
|
||||
int years;
|
||||
string result;
|
||||
TimeSpan? timeSpan = Shared.Models.Stateless.Methods.IPersonBirthday.GetTimeSpan(minimumDateTime, isWrongYear, mapping.PersonBirthday);
|
||||
TimeSpan? timeSpan = Shared.Models.Stateless.Methods.IPersonBirthday.GetTimeSpan(minimumDateTime, isWrongYear, personBirthday);
|
||||
if (timeSpan.HasValue && timeSpan.Value.Ticks < 0)
|
||||
result = "!---";
|
||||
else if (timeSpan.HasValue)
|
||||
{
|
||||
(years, _) = Shared.Models.Stateless.Methods.IPersonBirthday.GetAge(minimumDateTime, mapping.PersonBirthday);
|
||||
(years, _) = Shared.Models.Stateless.Methods.IPersonBirthday.GetAge(minimumDateTime, personBirthday);
|
||||
result = $"^{years:000}";
|
||||
}
|
||||
else if (mapping.ApproximateYears.HasValue)
|
||||
else if (approximateYears.HasValue)
|
||||
{
|
||||
(years, _) = Shared.Models.Stateless.Methods.IAge.GetAge(minimumDateTime, dateTime.AddYears(-mapping.ApproximateYears.Value));
|
||||
DateTime dateTime = new(ticks);
|
||||
(years, _) = Shared.Models.Stateless.Methods.IAge.GetAge(minimumDateTime, dateTime.AddYears(-approximateYears.Value));
|
||||
result = $"~{years:000}";
|
||||
}
|
||||
else
|
||||
@ -30,50 +31,40 @@ internal abstract class MapLogic
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static Dictionary<string, List<MappingContainer>> GetKeyValuePairs(string[] ignoreRelativePaths, string argZero, Container[] containers)
|
||||
internal static Dictionary<string, List<MappingContainer>> GetKeyValuePairs(Item[] items)
|
||||
{
|
||||
Dictionary<string, List<MappingContainer>> results = new();
|
||||
string key;
|
||||
string dateKey;
|
||||
bool? isWrongYear;
|
||||
string personKey;
|
||||
string personKeyFormatted;
|
||||
DateTime minimumDateTime;
|
||||
DateTime dateTime = DateTime.Now;
|
||||
MappingContainer mappingContainer;
|
||||
foreach (Container container in containers)
|
||||
foreach (Item item in items)
|
||||
{
|
||||
if (!container.Items.Any())
|
||||
if (item.Property?.Id is null || item.ImageFileHolder is null || item.ResizedFileHolder is null)
|
||||
continue;
|
||||
if (!container.SourceDirectory.StartsWith(argZero))
|
||||
if (!item.Mapping.Any())
|
||||
continue;
|
||||
if (ignoreRelativePaths.Contains(Path.GetFileName(container.SourceDirectory)))
|
||||
continue;
|
||||
foreach (Item item in container.Items)
|
||||
foreach (Face face in item.Faces)
|
||||
{
|
||||
if (item.ImageFileHolder is null || item.Property?.Id is null || !item.Mapping.Any())
|
||||
if (face.FaceEncoding is null || face.Location?.NormalizedPixelPercentage is null)
|
||||
continue;
|
||||
foreach (Face face in item.Faces)
|
||||
foreach (Mapping mapping in item.Mapping)
|
||||
{
|
||||
if (face.FaceEncoding is null || face.Location?.NormalizedPixelPercentage is null)
|
||||
if (mapping.NormalizedPixelPercentage.HasValue && mapping.NormalizedPixelPercentage.Value != face.Location.NormalizedPixelPercentage.Value)
|
||||
continue;
|
||||
foreach (Mapping mapping in item.Mapping)
|
||||
{
|
||||
if (mapping.NormalizedPixelPercentage.HasValue && mapping.NormalizedPixelPercentage.Value != face.Location.NormalizedPixelPercentage.Value)
|
||||
continue;
|
||||
// if (named.NormalizedPixelPercentage is null && (Shared.Models.Stateless.INamed.OnlyUseNamedWithNormalizedPixelPercentagePopulatedForGetKeyValuePairs || item.Named.Count != 1 || item.Faces.Count != 1))
|
||||
// continue;
|
||||
minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
||||
(isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime);
|
||||
personKey = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(mapping.PersonBirthday);
|
||||
dateKey = GetDateKey(dateTime, mapping, minimumDateTime, isWrongYear);
|
||||
key = string.Concat(personKey, dateKey);
|
||||
if (!results.ContainsKey(key))
|
||||
results.Add(key, new());
|
||||
mappingContainer = new(face, item.Property.Id.Value, isWrongYear, key, mapping, minimumDateTime);
|
||||
results[key].Add(mappingContainer);
|
||||
// if (named.NormalizedPixelPercentage is null)
|
||||
// break;
|
||||
}
|
||||
// if (named.NormalizedPixelPercentage is null && (Shared.Models.Stateless.INamed.OnlyUseNamedWithNormalizedPixelPercentagePopulatedForGetKeyValuePairs || item.Named.Count != 1 || item.Faces.Count != 1))
|
||||
// continue;
|
||||
minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
||||
(isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime);
|
||||
personKeyFormatted = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(mapping.PersonBirthday);
|
||||
key = string.Concat(personKeyFormatted, mapping.SegmentB);
|
||||
if (!results.ContainsKey(key))
|
||||
results.Add(key, new());
|
||||
mappingContainer = new(face, item.Property.Id.Value, isWrongYear, key, mapping, minimumDateTime);
|
||||
results[key].Add(mappingContainer);
|
||||
// if (named.NormalizedPixelPercentage is null)
|
||||
// break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user