PersonDirectory
This commit is contained in:
parent
e5484bdcc5
commit
931f33606d
@ -834,7 +834,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer))
|
if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer))
|
||||||
continue;
|
continue;
|
||||||
if (personContainer.Char is null || !_Configuration.PersonCharacters.Contains(personContainer.Char.Value))
|
if (personContainer.PersonDirectory is null || !_Configuration.PersonCharacters.Contains(personContainer.PersonDirectory.Char))
|
||||||
continue;
|
continue;
|
||||||
if (i == 1)
|
if (i == 1)
|
||||||
{
|
{
|
||||||
@ -844,7 +844,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
}
|
}
|
||||||
else if (i == 2)
|
else if (i == 2)
|
||||||
{
|
{
|
||||||
directory = Path.Combine(a2PeopleSingletonDirectory, personContainer.Char.Value.ToString(), personContainer.DisplayDirectoryName, personKeyToCount[personKey].ToString("0000"));
|
directory = Path.Combine(a2PeopleSingletonDirectory, personContainer.PersonDirectory.Char.ToString(), personContainer.DisplayDirectoryName, personKeyToCount[personKey].ToString("0000"));
|
||||||
if (results.Contains(directory))
|
if (results.Contains(directory))
|
||||||
continue;
|
continue;
|
||||||
results.Add(directory);
|
results.Add(directory);
|
||||||
@ -917,13 +917,13 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
|||||||
continue;
|
continue;
|
||||||
if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer))
|
if (!_PersonKeyToPersonContainer.TryGetValue(personKey, out personContainer))
|
||||||
continue;
|
continue;
|
||||||
if (personContainer.Char is null || !_Configuration.PersonCharacters.Contains(personContainer.Char.Value))
|
if (personContainer.PersonDirectory is null || !_Configuration.PersonCharacters.Contains(personContainer.PersonDirectory.Char))
|
||||||
continue;
|
continue;
|
||||||
if (personContainer.DisplayDirectoryAllFiles.Any(l => l.EndsWith(faceFileName)))
|
if (personContainer.DisplayDirectoryAllFiles.Any(l => l.EndsWith(faceFileName)))
|
||||||
continue;
|
continue;
|
||||||
if (!File.Exists(faceFile))
|
if (!File.Exists(faceFile))
|
||||||
continue;
|
continue;
|
||||||
directory = Path.Combine(a2PeopleSingletonDirectory, personContainer.Char.Value.ToString(), personContainer.DisplayDirectoryName);
|
directory = Path.Combine(a2PeopleSingletonDirectory, personContainer.PersonDirectory.Char.ToString(), personContainer.DisplayDirectoryName);
|
||||||
if (!Directory.Exists(directory))
|
if (!Directory.Exists(directory))
|
||||||
continue;
|
continue;
|
||||||
fileName = Path.Combine(directory, faceFileName);
|
fileName = Path.Combine(directory, faceFileName);
|
||||||
|
@ -32,7 +32,7 @@ internal abstract class MapLogic
|
|||||||
continue;
|
continue;
|
||||||
personBirthday = IPersonBirthday.GetPersonBirthday(personKey);
|
personBirthday = IPersonBirthday.GetPersonBirthday(personKey);
|
||||||
person = IPerson.GetPerson(configuration.MappingDefaultName, configuration.PersonCharacters.ToArray(), configuration.MappingDefaultName, personKey, personBirthday);
|
person = IPerson.GetPerson(configuration.MappingDefaultName, configuration.PersonCharacters.ToArray(), configuration.MappingDefaultName, personKey, personBirthday);
|
||||||
personContainer = new(approximateYears, person, new PersonBirthday[] { personBirthday }, personDisplayDirectoryAllFiles, configuration.MappingDefaultName, personKey);
|
personContainer = new(approximateYears, new PersonBirthday[] { personBirthday }, personDisplayDirectoryAllFiles, configuration.MappingDefaultName, personKey, person);
|
||||||
results.Add(personContainer);
|
results.Add(personContainer);
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
@ -511,7 +511,7 @@ internal abstract class MapLogic
|
|||||||
if (!personKeyToPersonContainerCollection.ContainsKey(personKey))
|
if (!personKeyToPersonContainerCollection.ContainsKey(personKey))
|
||||||
personContainer = new(approximateYears, personBirthday, displayDirectoryName, personKey);
|
personContainer = new(approximateYears, personBirthday, displayDirectoryName, personKey);
|
||||||
else
|
else
|
||||||
personContainer = new(approximateYears, personBirthday, personKeyToPersonContainerCollection[personKey][zero].Char, displayDirectoryName, personKey);
|
personContainer = new(approximateYears, personBirthday, personKeyToPersonContainerCollection[personKey][zero].PersonDirectory, displayDirectoryName, personKey);
|
||||||
personKeyToPersonContainer.Add(personKey, personContainer);
|
personKeyToPersonContainer.Add(personKey, personContainer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,45 +7,45 @@ public class PersonContainer : Properties.IPersonContainer
|
|||||||
{
|
{
|
||||||
|
|
||||||
public int? ApproximateYears { init; get; }
|
public int? ApproximateYears { init; get; }
|
||||||
public Person? Person { init; get; }
|
|
||||||
public PersonBirthday[]? Birthdays { init; get; }
|
public PersonBirthday[]? Birthdays { init; get; }
|
||||||
public string[] DisplayDirectoryAllFiles { init; get; }
|
public string[] DisplayDirectoryAllFiles { init; get; }
|
||||||
public string DisplayDirectoryName { init; get; }
|
public string DisplayDirectoryName { init; get; }
|
||||||
public long? Key { init; get; }
|
public long? Key { init; get; }
|
||||||
public bool? KeyIsMaxBirthday { init; get; }
|
public bool? KeyIsMaxBirthday { init; get; }
|
||||||
public char? Char { init; get; }
|
public Person? Person { init; get; }
|
||||||
|
public PersonDirectory? PersonDirectory { init; get; }
|
||||||
|
|
||||||
[JsonConstructor]
|
[JsonConstructor]
|
||||||
public PersonContainer(int? approximateYears, char? @char, Person? person, PersonBirthday[]? birthdays, string[] displayDirectoryAllFiles, string displayDirectoryName, long? key)
|
public PersonContainer(int? approximateYears, PersonBirthday[]? birthdays, string[] displayDirectoryAllFiles, string displayDirectoryName, long? key, Person? person, PersonDirectory? personDirectory)
|
||||||
{
|
{
|
||||||
ApproximateYears = approximateYears;
|
ApproximateYears = approximateYears;
|
||||||
Char = @char;
|
|
||||||
Person = person;
|
|
||||||
Birthdays = birthdays;
|
Birthdays = birthdays;
|
||||||
DisplayDirectoryAllFiles = displayDirectoryAllFiles;
|
DisplayDirectoryAllFiles = displayDirectoryAllFiles;
|
||||||
DisplayDirectoryName = displayDirectoryName;
|
DisplayDirectoryName = displayDirectoryName;
|
||||||
Key = key;
|
Key = key;
|
||||||
|
Person = person;
|
||||||
|
PersonDirectory = personDirectory;
|
||||||
KeyIsMaxBirthday = birthdays is null || key is null ? null : key.Value == birthdays.First().Value.Ticks;
|
KeyIsMaxBirthday = birthdays is null || key is null ? null : key.Value == birthdays.First().Value.Ticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PersonContainer(string mappingDefaultName, char[] personCharacters, PersonBirthday birthday, string displayDirectoryName) :
|
public PersonContainer(string mappingDefaultName, char[] personCharacters, PersonBirthday birthday, string displayDirectoryName) :
|
||||||
this(Stateless.Methods.IAge.GetApproximateYears(personCharacters, displayDirectoryName), null, Stateless.Methods.IPerson.GetPerson(mappingDefaultName, personCharacters, displayDirectoryName, birthday.Value.Ticks, birthday), new PersonBirthday[] { birthday }, Array.Empty<string>(), displayDirectoryName, birthday.Value.Ticks)
|
this(Stateless.Methods.IAge.GetApproximateYears(personCharacters, displayDirectoryName), new PersonBirthday[] { birthday }, Array.Empty<string>(), displayDirectoryName, birthday.Value.Ticks, Stateless.Methods.IPerson.GetPerson(mappingDefaultName, personCharacters, displayDirectoryName, birthday.Value.Ticks, birthday), null)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public PersonContainer(int? approximateYears, PersonBirthday birthdays, string displayDirectoryName, long key) :
|
public PersonContainer(int? approximateYears, PersonBirthday birthdays, string displayDirectoryName, long key) :
|
||||||
this(approximateYears, null, null, new PersonBirthday[] { birthdays }, Array.Empty<string>(), displayDirectoryName, key)
|
this(approximateYears, new PersonBirthday[] { birthdays }, Array.Empty<string>(), displayDirectoryName, key, null, null)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public PersonContainer(int? approximateYears, PersonBirthday birthdays, char? @char, string displayDirectoryName, long key) :
|
public PersonContainer(int? approximateYears, PersonBirthday birthdays, PersonDirectory? personDirectory, string displayDirectoryName, long key) :
|
||||||
this(approximateYears, @char, null, new PersonBirthday[] { birthdays }, Array.Empty<string>(), displayDirectoryName, key)
|
this(approximateYears, new PersonBirthday[] { birthdays }, Array.Empty<string>(), displayDirectoryName, key, null, personDirectory)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public PersonContainer(int? approximateYears, char @char, string[] displayDirectoryAllFiles, string displayDirectoryName) :
|
public PersonContainer(int? approximateYears, string[] displayDirectoryAllFiles, string displayDirectoryName, PersonDirectory? personDirectory) :
|
||||||
this(approximateYears, @char, null, null, displayDirectoryAllFiles, displayDirectoryName, null)
|
this(approximateYears, null, displayDirectoryAllFiles, displayDirectoryName, null, null, personDirectory)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public PersonContainer(int? approximateYears, Person? person, PersonBirthday[]? birthdays, string[] displayDirectoryAllFiles, string displayDirectoryName, long? key) :
|
public PersonContainer(int? approximateYears, PersonBirthday[]? birthdays, string[] displayDirectoryAllFiles, string displayDirectoryName, long? key, Person? person) :
|
||||||
this(approximateYears, null, person, birthdays, displayDirectoryAllFiles, displayDirectoryName, key)
|
this(approximateYears, birthdays, displayDirectoryAllFiles, displayDirectoryName, key, person, null)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
|
14
Shared/Models/PersonDirectory.cs
Normal file
14
Shared/Models/PersonDirectory.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
namespace View_by_Distance.Shared.Models;
|
||||||
|
|
||||||
|
public record PersonDirectory(char Char, string Name, char Status, char Sex, char First)
|
||||||
|
{
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -4,11 +4,12 @@ public interface IPersonContainer
|
|||||||
{
|
{
|
||||||
|
|
||||||
public int? ApproximateYears { init; get; }
|
public int? ApproximateYears { init; get; }
|
||||||
public Person? Person { init; get; }
|
|
||||||
public PersonBirthday[]? Birthdays { init; get; }
|
public PersonBirthday[]? Birthdays { init; get; }
|
||||||
public string[] DisplayDirectoryAllFiles { init; get; }
|
public string[] DisplayDirectoryAllFiles { init; get; }
|
||||||
public string DisplayDirectoryName { init; get; }
|
public string DisplayDirectoryName { init; get; }
|
||||||
public long? Key { init; get; }
|
public long? Key { init; get; }
|
||||||
public bool? KeyIsMaxBirthday { init; get; }
|
public bool? KeyIsMaxBirthday { init; get; }
|
||||||
|
public Person? Person { init; get; }
|
||||||
|
public PersonDirectory? PersonDirectory { init; get; }
|
||||||
|
|
||||||
}
|
}
|
@ -251,7 +251,7 @@ internal abstract class GenealogicalDataCommunication
|
|||||||
birth = birth.Value.AddHours(hours);
|
birth = birth.Value.AddHours(hours);
|
||||||
if (age < 1)
|
if (age < 1)
|
||||||
birth = null;
|
birth = null;
|
||||||
if (death is null && (!alive || (age > 110 && !IPersonBirthday.IsCounterPersonBirthday(new(birth.Value)))))
|
if (birth is not null && death is null && (!alive || (age > 110 && !IPersonBirthday.IsCounterPersonBirthday(new(birth.Value)))))
|
||||||
death = birth;
|
death = birth;
|
||||||
}
|
}
|
||||||
death ??= !genealogicalDataCommunicationLines.Death.Any(l => l == "1 DEAT Y") ? null : birth;
|
death ??= !genealogicalDataCommunicationLines.Death.Any(l => l == "1 DEAT Y") ? null : birth;
|
||||||
|
@ -90,27 +90,14 @@ internal abstract class PersonContainer
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Models.PersonContainer> GetPersonContainersCollections(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary<string, List<string>> individuals, char @char, string innerGroupDirectory, char numberSign, string personDisplayDirectory, string personDisplayDirectoryName, bool isDefaultName, int? approximateYears, List<(string PersonKeyFormatted, Models.PersonBirthday PersonBirthday)> collection)
|
private static List<Models.PersonContainer> GetPersonContainersCollections(string mappingDefaultName, string facesFileNameExtension, char[] personCharacters, PersonDirectory personDirectory, char numberSign, string personDisplayDirectory, string personDisplayDirectoryName, bool isDefaultName, int? approximateYears, List<(string PersonKeyFormatted, Models.PersonBirthday PersonBirthday)> collection)
|
||||||
{
|
{
|
||||||
List<Models.PersonContainer> results = new();
|
List<Models.PersonContainer> results = new();
|
||||||
char sex;
|
|
||||||
bool first;
|
|
||||||
bool? male;
|
|
||||||
bool? alive;
|
|
||||||
long personKey;
|
long personKey;
|
||||||
string[] matches;
|
|
||||||
string? directory;
|
|
||||||
string[] segments;
|
|
||||||
bool verify = true;
|
|
||||||
const int zero = 0;
|
const int zero = 0;
|
||||||
Models.Person person;
|
Models.Person person;
|
||||||
string innerGroupDirectoryName;
|
|
||||||
const char exclamationPoint = '!';
|
|
||||||
List<string>? individualsLines = null;
|
|
||||||
Models.PersonContainer personContainer;
|
Models.PersonContainer personContainer;
|
||||||
Models.PersonBirthday[] orderedPersonBirthdays;
|
Models.PersonBirthday[] orderedPersonBirthdays;
|
||||||
Models.GenealogicalDataCommunication genealogicalDataCommunication;
|
|
||||||
GenealogicalDataCommunicationLines? genealogicalDataCommunicationLines;
|
|
||||||
string[] personDisplayDirectoryAllFiles = GetFiles(facesFileNameExtension, personDisplayDirectory, isDefaultName);
|
string[] personDisplayDirectoryAllFiles = GetFiles(facesFileNameExtension, personDisplayDirectory, isDefaultName);
|
||||||
foreach ((string personKeyFormatted, Models.PersonBirthday personBirthday) in collection)
|
foreach ((string personKeyFormatted, Models.PersonBirthday personBirthday) in collection)
|
||||||
{
|
{
|
||||||
@ -124,64 +111,8 @@ internal abstract class PersonContainer
|
|||||||
personKey = orderedPersonBirthdays[zero].Value.Ticks;
|
personKey = orderedPersonBirthdays[zero].Value.Ticks;
|
||||||
}
|
}
|
||||||
person = IPerson.GetPerson(mappingDefaultName, personCharacters, personDisplayDirectoryName, personDisplayDirectoryAllFiles, personKey);
|
person = IPerson.GetPerson(mappingDefaultName, personCharacters, personDisplayDirectoryName, personDisplayDirectoryAllFiles, personKey);
|
||||||
personContainer = new(approximateYears, @char, person, orderedPersonBirthdays, personDisplayDirectoryAllFiles, personDisplayDirectoryName, personKey);
|
personContainer = new(approximateYears, orderedPersonBirthdays, personDisplayDirectoryAllFiles, personDisplayDirectoryName, personKey, person, personDirectory);
|
||||||
results.Add(personContainer);
|
results.Add(personContainer);
|
||||||
if (personKeyFormatted != IPersonBirthday.GetFormatted(personBirthdayFormat, personKey))
|
|
||||||
continue;
|
|
||||||
_ = individuals.TryGetValue(personKeyFormatted, out individualsLines);
|
|
||||||
isDefaultName = IPerson.IsDefaultName(mappingDefaultName, personDisplayDirectoryName);
|
|
||||||
matches = (from l in personDisplayDirectoryAllFiles where l.Contains(personKeyFormatted) select l).ToArray();
|
|
||||||
if (!matches.Any())
|
|
||||||
continue;
|
|
||||||
directory = Path.GetDirectoryName(matches[zero]);
|
|
||||||
if (directory is null)
|
|
||||||
continue;
|
|
||||||
if (@char == exclamationPoint)
|
|
||||||
(sex, alive, male, first) = ('U', null, null, true);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
innerGroupDirectoryName = Path.GetFileName(innerGroupDirectory);
|
|
||||||
segments = innerGroupDirectoryName.Split('-');
|
|
||||||
if (segments.Length != 3)
|
|
||||||
continue;
|
|
||||||
alive = segments[zero] switch
|
|
||||||
{
|
|
||||||
"Alive" => true,
|
|
||||||
"Dead" => false,
|
|
||||||
"Unknown" => null,
|
|
||||||
_ => throw new NotImplementedException()
|
|
||||||
};
|
|
||||||
sex = segments[1] switch
|
|
||||||
{
|
|
||||||
"Male" => 'M',
|
|
||||||
"Female" => 'F',
|
|
||||||
"Unknown" => 'U',
|
|
||||||
_ => throw new NotImplementedException()
|
|
||||||
};
|
|
||||||
male = segments[1] switch
|
|
||||||
{
|
|
||||||
"Male" => true,
|
|
||||||
"Female" => false,
|
|
||||||
"Unknown" => null,
|
|
||||||
_ => throw new NotImplementedException()
|
|
||||||
};
|
|
||||||
first = segments[2] switch
|
|
||||||
{
|
|
||||||
"Yes" => true,
|
|
||||||
"No" => false,
|
|
||||||
"Unknown" => true,
|
|
||||||
_ => throw new NotImplementedException()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (alive is null)
|
|
||||||
continue;
|
|
||||||
genealogicalDataCommunicationLines = individualsLines is null ? null : GenealogicalDataCommunication.GetGenealogicalDataCommunicationLines(personBirthday, individualsLines);
|
|
||||||
if (genealogicalDataCommunicationLines is null)
|
|
||||||
continue;
|
|
||||||
genealogicalDataCommunication = GenealogicalDataCommunication.GetGenealogicalDataCommunication(genealogicalDataCommunicationLines);
|
|
||||||
if (genealogicalDataCommunication.Sex != sex)
|
|
||||||
continue;
|
|
||||||
GenealogicalDataCommunication.WriteFile(personKeyFormatted, person.Name, individualsLines, isDefaultName, directory, genealogicalDataCommunication, verify, first);
|
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
@ -217,7 +148,48 @@ internal abstract class PersonContainer
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Models.PersonContainer> GetPersonContainersGroup(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary<string, List<string>> individuals, char @char, string innerGroupDirectory, string[] personDisplayDirectories)
|
private static void MaybeGenealogicalDataCommunicationWriteFile(string mappingDefaultName, string personBirthdayFormat, Dictionary<string, List<string>> individuals, PersonDirectory personDirectory, string personDisplayDirectoryName, bool isDefaultName, List<Models.PersonContainer> personContainers)
|
||||||
|
{
|
||||||
|
bool? first;
|
||||||
|
bool? male;
|
||||||
|
string[] matches;
|
||||||
|
string? directory;
|
||||||
|
bool verify = true;
|
||||||
|
const int zero = 0;
|
||||||
|
string personKeyFormatted;
|
||||||
|
List<string>? individualsLines = null;
|
||||||
|
Models.GenealogicalDataCommunication genealogicalDataCommunication;
|
||||||
|
GenealogicalDataCommunicationLines? genealogicalDataCommunicationLines;
|
||||||
|
foreach (Models.PersonContainer personContainer in personContainers)
|
||||||
|
{
|
||||||
|
if (personContainer.Key is null || personContainer.Birthdays is null || personContainer.Person is null || !personContainer.Birthdays.Any())
|
||||||
|
continue;
|
||||||
|
male = personDirectory.Sex == 'U' ? null : personDirectory.Sex == 'M' || (personDirectory.Sex == 'F' ? false : throw new Exception());
|
||||||
|
first = personDirectory.First == 'U' ? null : personDirectory.First == 'Y' || (personDirectory.First == 'N' ? false : throw new Exception());
|
||||||
|
if (first is null)
|
||||||
|
continue;
|
||||||
|
isDefaultName = IPerson.IsDefaultName(mappingDefaultName, personDisplayDirectoryName);
|
||||||
|
personKeyFormatted = IPersonBirthday.GetFormatted(personBirthdayFormat, personContainer.Key.Value);
|
||||||
|
_ = individuals.TryGetValue(personKeyFormatted, out individualsLines);
|
||||||
|
matches = (from l in personContainer.DisplayDirectoryAllFiles where l.Contains(personKeyFormatted) select l).ToArray();
|
||||||
|
if (!matches.Any())
|
||||||
|
continue;
|
||||||
|
directory = Path.GetDirectoryName(matches[zero]);
|
||||||
|
if (directory is null)
|
||||||
|
continue;
|
||||||
|
genealogicalDataCommunicationLines = individualsLines is null ? null : GenealogicalDataCommunication.GetGenealogicalDataCommunicationLines(personContainer.Birthdays[0], individualsLines);
|
||||||
|
if (genealogicalDataCommunicationLines is null)
|
||||||
|
continue;
|
||||||
|
genealogicalDataCommunication = GenealogicalDataCommunication.GetGenealogicalDataCommunication(genealogicalDataCommunicationLines);
|
||||||
|
if (genealogicalDataCommunication.Sex != personDirectory.Sex)
|
||||||
|
continue;
|
||||||
|
if (genealogicalDataCommunication.Death is null && personDirectory.Status == 'D' || genealogicalDataCommunication.Death is not null && personDirectory.Status == 'A')
|
||||||
|
continue;
|
||||||
|
GenealogicalDataCommunication.WriteFile(personKeyFormatted, personContainer.Person.Name, individualsLines, isDefaultName, directory, genealogicalDataCommunication, verify, first.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Models.PersonContainer> GetPersonContainersGroup(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary<string, List<string>> individuals, PersonDirectory personDirectory, string[] personDisplayDirectories)
|
||||||
{
|
{
|
||||||
List<Models.PersonContainer> results = new();
|
List<Models.PersonContainer> results = new();
|
||||||
string? minusOne;
|
string? minusOne;
|
||||||
@ -229,6 +201,7 @@ internal abstract class PersonContainer
|
|||||||
string? personDisplayDirectoryName;
|
string? personDisplayDirectoryName;
|
||||||
Models.PersonContainer personContainer;
|
Models.PersonContainer personContainer;
|
||||||
string[] personDisplayDirectoryAllFiles;
|
string[] personDisplayDirectoryAllFiles;
|
||||||
|
List<Models.PersonContainer> personContainers;
|
||||||
List<(string, Models.PersonBirthday)> collection;
|
List<(string, Models.PersonBirthday)> collection;
|
||||||
foreach (string personDisplayDirectory in personDisplayDirectories)
|
foreach (string personDisplayDirectory in personDisplayDirectories)
|
||||||
{
|
{
|
||||||
@ -249,11 +222,15 @@ internal abstract class PersonContainer
|
|||||||
if (changes.Any(l => l is not null))
|
if (changes.Any(l => l is not null))
|
||||||
continue;
|
continue;
|
||||||
if (collection.Any())
|
if (collection.Any())
|
||||||
results.AddRange(GetPersonContainersCollections(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, @char, innerGroupDirectory, numberSign, personDisplayDirectory, personDisplayDirectoryName, isDefaultName, approximateYears, collection));
|
{
|
||||||
|
personContainers = GetPersonContainersCollections(mappingDefaultName, facesFileNameExtension, personCharacters, personDirectory, numberSign, personDisplayDirectory, personDisplayDirectoryName, isDefaultName, approximateYears, collection);
|
||||||
|
MaybeGenealogicalDataCommunicationWriteFile(mappingDefaultName, personBirthdayFormat, individuals, personDirectory, personDisplayDirectoryName, isDefaultName, personContainers);
|
||||||
|
results.AddRange(personContainers);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
personDisplayDirectoryAllFiles = GetFiles(facesFileNameExtension, personDisplayDirectory, isDefaultName);
|
personDisplayDirectoryAllFiles = GetFiles(facesFileNameExtension, personDisplayDirectory, isDefaultName);
|
||||||
personContainer = new(approximateYears, @char, personDisplayDirectoryAllFiles, personDisplayDirectoryName);
|
personContainer = new(approximateYears, personDisplayDirectoryAllFiles, personDisplayDirectoryName, personDirectory);
|
||||||
results.Add(personContainer);
|
results.Add(personContainer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -265,14 +242,36 @@ internal abstract class PersonContainer
|
|||||||
private static List<Models.PersonContainer> GetPersonContainersInnerGroups(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary<string, List<string>> individuals, string groupDirectory, string groupDirectoryName)
|
private static List<Models.PersonContainer> GetPersonContainersInnerGroups(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary<string, List<string>> individuals, string groupDirectory, string groupDirectoryName)
|
||||||
{
|
{
|
||||||
List<Models.PersonContainer> results = new();
|
List<Models.PersonContainer> results = new();
|
||||||
|
char @char;
|
||||||
|
string[] segments;
|
||||||
const int zero = 0;
|
const int zero = 0;
|
||||||
|
string innerGroupDirectoryName;
|
||||||
|
PersonDirectory personDirectory;
|
||||||
string[] personDisplayDirectories;
|
string[] personDisplayDirectories;
|
||||||
|
const char exclamationPoint = '!';
|
||||||
List<Models.PersonContainer> collection;
|
List<Models.PersonContainer> collection;
|
||||||
string[] innerGroupDirectories = Directory.GetDirectories(groupDirectory, "*", SearchOption.TopDirectoryOnly);
|
string[] innerGroupDirectories = Directory.GetDirectories(groupDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
foreach (string innerGroupDirectory in innerGroupDirectories)
|
foreach (string innerGroupDirectory in innerGroupDirectories)
|
||||||
{
|
{
|
||||||
|
@char = groupDirectoryName[zero];
|
||||||
|
innerGroupDirectoryName = Path.GetFileName(innerGroupDirectory);
|
||||||
|
if (@char == exclamationPoint)
|
||||||
|
personDirectory = new(@char, innerGroupDirectoryName, 'U', 'U', 'U');
|
||||||
|
else
|
||||||
|
{
|
||||||
|
segments = innerGroupDirectoryName.Split('-');
|
||||||
|
if (segments.Length != 3)
|
||||||
|
continue;
|
||||||
|
if (segments[zero] is not "Alive" and not "Dead" and not "Unknown")
|
||||||
|
continue;
|
||||||
|
if (segments[1] is not "Male" and not "Female" and not "Unknown")
|
||||||
|
continue;
|
||||||
|
if (segments[2] is not "Yes" and not "No" and not "Unknown")
|
||||||
|
continue;
|
||||||
|
personDirectory = new(@char, innerGroupDirectoryName, segments[zero][zero], segments[1][zero], segments[2][zero]);
|
||||||
|
}
|
||||||
personDisplayDirectories = Directory.GetDirectories(innerGroupDirectory, "*", SearchOption.TopDirectoryOnly);
|
personDisplayDirectories = Directory.GetDirectories(innerGroupDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
collection = GetPersonContainersGroup(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, groupDirectoryName[zero], innerGroupDirectory, personDisplayDirectories);
|
collection = GetPersonContainersGroup(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, personDirectory, personDisplayDirectories);
|
||||||
results.AddRange(collection);
|
results.AddRange(collection);
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user