using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public class PersonContainer : Properties.IPersonContainer { public int? ApproximateYears { init; get; } public PersonBirthday[]? Birthdays { init; get; } public string[] DisplayDirectoryAllFiles { init; get; } public string DisplayDirectoryName { init; get; } public long? Key { init; get; } public bool? KeyIsMaxBirthday { init; get; } public PersonDirectory? PersonDirectory { init; get; } [JsonConstructor] public PersonContainer(int? approximateYears, PersonBirthday[]? birthdays, string[] displayDirectoryAllFiles, string displayDirectoryName, long? key, PersonDirectory? personDirectory) { ApproximateYears = approximateYears; Birthdays = birthdays; DisplayDirectoryAllFiles = displayDirectoryAllFiles; DisplayDirectoryName = displayDirectoryName; Key = key; PersonDirectory = personDirectory; KeyIsMaxBirthday = birthdays is null || key is null ? null : key.Value == birthdays.First().Value.Ticks; } public PersonContainer(char[] personCharacters, PersonBirthday birthday, string displayDirectoryName, PersonDirectory personDirectory) : this(Stateless.Methods.IAge.GetApproximateYears(personCharacters, displayDirectoryName), [birthday], [], displayDirectoryName, birthday.Value.Ticks, personDirectory) { } public PersonContainer(int? approximateYears, PersonBirthday birthdays, string displayDirectoryName, long key) : this(approximateYears, [birthdays], [], displayDirectoryName, key, null) { } public PersonContainer(int? approximateYears, PersonBirthday birthdays, PersonDirectory? personDirectory, string displayDirectoryName, long key) : this(approximateYears, [birthdays], [], displayDirectoryName, key, personDirectory) { } public PersonContainer(int? approximateYears, string[] displayDirectoryAllFiles, string displayDirectoryName, PersonDirectory? personDirectory) : this(approximateYears, null, displayDirectoryAllFiles, displayDirectoryName, null, personDirectory) { } public PersonContainer(int? approximateYears, PersonBirthday[]? birthdays, string[] displayDirectoryAllFiles, string displayDirectoryName, long? key) : this(approximateYears, birthdays, displayDirectoryAllFiles, displayDirectoryName, key, null) { } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } }