GetJLinkDirectories, IsFocusPerson and start of

ignoreXMatches
This commit is contained in:
2023-08-01 00:42:53 -07:00
parent f62825d9aa
commit a95639153e
16 changed files with 250 additions and 116 deletions

@ -425,11 +425,11 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
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, $"X]{ticks}");
if (saveIndividually)
{
directory = Path.Combine(directory, mapping.MappingFromItem.Id.ToString());
results.Add(new(Path.Combine(directory, $"Z]{ticks}")));
results.Add(new(Path.Combine(directory, $"X]{ticks}")));
}
distinct.Add(mapping.MappingFromItem.Id);
distinct.Add(mapping.SortingContainer.Sorting.Id);
@ -556,23 +556,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
Stateless.MapLogic.SaveMappingShortcuts(mappingDirectory);
}
public bool Used(FaceDistance faceDistanceEncoding)
{
bool result = false;
if (faceDistanceEncoding.WholePercentages is null)
throw new NotSupportedException();
List<int>? wholePercentagesCollection;
Dictionary<int, PersonContainer[]>? wholePercentagesToPersonContainers;
if (_SkipCollection.TryGetValue(faceDistanceEncoding.Id, out wholePercentagesCollection) && wholePercentagesCollection.Contains(faceDistanceEncoding.WholePercentages.Value))
result = true;
if (!result && _IdThenWholePercentagesToPersonContainers.TryGetValue(faceDistanceEncoding.Id, out wholePercentagesToPersonContainers))
{
if (wholePercentagesToPersonContainers.ContainsKey(faceDistanceEncoding.WholePercentages.Value))
result = true;
}
return result;
}
public List<Sorting> GetSortingCollection(int i, FaceDistance faceDistanceEncoding, List<FaceDistance> faceDistanceLengths)
{
if (_Configuration is null)
@ -1107,7 +1090,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
SaveContainer? saveContainer;
bool saveIndividually = false;
List<SaveContainer> saveContainers = new();
Stateless.MapLogic.BeforeSaveFilteredOriginalImagesFromJLinks(jLinks, a2PeopleContentDirectory);
(int, FileHolder, int, string, string, string, string)[] collection = GetCollectionForSaveFilteredOriginalImagesFromJLinks(jLinks, a2PeopleContentDirectory, personContainers, mappingCollection, personKeyToIds);
foreach ((int id, FileHolder imageFileHolder, int approximateYears, string personKeyFormatted, string directory, string personDirectory, string checkFile) in collection)
{
@ -1359,6 +1341,25 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
return results;
}
public bool IsUsed(bool ignoreXMatches, int id, MappingFromLocation mappingFromLocation)
{
bool result;
PersonContainer[]? personContainers;
List<int>? wholePercentagesCollection;
Dictionary<int, PersonContainer[]>? wholePercentagesToPersonContainers;
result = _SkipCollection.TryGetValue(id, out wholePercentagesCollection) && wholePercentagesCollection.Contains(mappingFromLocation.WholePercentages);
if (!result && _IdThenWholePercentagesToPersonContainers.TryGetValue(id, out wholePercentagesToPersonContainers))
{
if (wholePercentagesToPersonContainers.TryGetValue(mappingFromLocation.WholePercentages, out personContainers))
{
result = true;
// if (!ignoreXMatches || personContainers.All(l => l.ApproximateYears is null && l.DisplayDirectoryName.First() != 'X'))
// result = true;
}
}
return result;
}
public bool InSkipCollection(int id, MappingFromLocation mappingFromLocation)
{
bool result;
@ -1366,4 +1367,30 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
return result;
}
public bool? IsFocusPerson(List<(string Directory, long PersonKey)> jLinkResolvedDirectories, int id, MappingFromLocation mappingFromLocation)
{
bool? result;
PersonContainer[]? personContainers;
Dictionary<int, PersonContainer[]>? wholePercentagesToPersonContainers;
if (jLinkResolvedDirectories.Count == 0)
result = null;
else if (!_IdThenWholePercentagesToPersonContainers.TryGetValue(id, out wholePercentagesToPersonContainers))
result = null;
else if (!wholePercentagesToPersonContainers.TryGetValue(mappingFromLocation.WholePercentages, out personContainers))
result = null;
else
{
result = false;
foreach (PersonContainer personContainer in personContainers)
{
if (jLinkResolvedDirectories.Any(l => personContainer.Key == l.PersonKey))
{
result = true;
break;
}
}
}
return result;
}
}