48 lines
2.3 KiB
C#
48 lines
2.3 KiB
C#
using System.Text.Json;
|
|
|
|
namespace View_by_Distance.Shared.Models.Stateless.Methods;
|
|
|
|
internal abstract class Person
|
|
{
|
|
|
|
// ...
|
|
|
|
internal static (Models.PersonBirthday?, string) Get(string personBirthdayFormat, string personDisplayDirectory, string personKeyDirectory, DateTime birthday)
|
|
{
|
|
Models.PersonBirthday? personBirthday = new(birthday);
|
|
string personKeyFormatted = IPersonBirthday.GetFormatted(personBirthdayFormat, personBirthday);
|
|
string convertedPersonKeyDirectory = Path.Combine(personDisplayDirectory, personKeyFormatted);
|
|
if (!Directory.Exists(convertedPersonKeyDirectory))
|
|
Directory.Move(personKeyDirectory, convertedPersonKeyDirectory);
|
|
return new(personBirthday, personKeyFormatted);
|
|
}
|
|
|
|
internal static Models.Person GetPerson(char[] personCharacters, string personDisplayDirectoryName, string[] personDisplayDirectoryAllFiles, long personKey, Models.PersonBirthday personBirthday)
|
|
{
|
|
Models.Person result;
|
|
string[] matches;
|
|
List<Models.PersonURL> urls = new();
|
|
Models.PersonId id = new(personKey);
|
|
List<Models.PersonEmail> emails = new();
|
|
List<Models.PersonNumber> numbers = new();
|
|
List<Models.PersonComment> comments = new();
|
|
List<Models.PersonAddress> addresses = new();
|
|
string checkFileName = $"{personDisplayDirectoryName.First()}.json";
|
|
string nameWithoutApproximateYears = personDisplayDirectoryName.Split(personCharacters).First();
|
|
matches = (from l in personDisplayDirectoryAllFiles where Path.GetFileName(l) == checkFileName select l).ToArray();
|
|
Models.PersonName? name;
|
|
if (!matches.Any())
|
|
name = PersonName.GetPersonName(nameWithoutApproximateYears);
|
|
else
|
|
{
|
|
string json = File.ReadAllText(matches.First());
|
|
name = JsonSerializer.Deserialize<Models.PersonName>(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
|
name ??= PersonName.GetPersonName(nameWithoutApproximateYears);
|
|
if (name.Last is null || string.IsNullOrEmpty(name.Last.Value))
|
|
name = PersonName.GetPersonName(nameWithoutApproximateYears);
|
|
}
|
|
result = new(id, personBirthday, name, comments, urls, numbers, emails, addresses);
|
|
return result;
|
|
}
|
|
|
|
} |