using System.Text; using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public class Person : Properties.IPerson { protected readonly PersonId _Id; // {-_-}SingletonClass protected readonly PersonBirthday _Birthday; // {-_-}SingletonClass protected readonly PersonName _Name; // {{_}}JsonValueKindObject protected readonly List<PersonComment> _Comments; // <{_}>PluralClass protected readonly List<PersonURL> _URLs; // <{_}>PluralClass protected readonly List<PersonNumber> _Numbers; // <{_}>PluralClass protected readonly List<PersonEmail> _Emails; // <{_}>PluralClass protected readonly List<PersonAddress> _Addresses; // <<_>>JsonValueKindArray public PersonId Id => _Id; // {-_-}SingletonClass public PersonBirthday Birthday => _Birthday; // {-_-}SingletonClass public PersonName Name => _Name; // {{_}}JsonValueKindObject public List<PersonComment> Comments => _Comments; // <{_}>PluralClass public List<PersonURL> URLs => _URLs; // <{_}>PluralClass public List<PersonNumber> Numbers => _Numbers; // <{_}>PluralClass public List<PersonEmail> Emails => _Emails; // <{_}>PluralClass public List<PersonAddress> Addresses => _Addresses; // <<_>>JsonValueKindArray [JsonConstructor] public Person ( PersonId id, PersonBirthday birthday, PersonName name, List<PersonComment> comments, List<PersonURL> uRLs, List<PersonNumber> numbers, List<PersonEmail> emails, List<PersonAddress> addresses ) { _Id = id; // {-_-}SingletonClass _Birthday = birthday; // {-_-}SingletonClass _Name = name; // {{_}}JsonValueKindObject _Comments = comments; // <{_}>PluralClass _URLs = uRLs; // <{_}>PluralClass _Numbers = numbers; // <{_}>PluralClass _Emails = emails; // <{_}>PluralClass _Addresses = addresses; // <<_>>JsonValueKindArray } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } // ... public string GetFullName() { StringBuilder result = new(); if (_Name?.First is not null && !string.IsNullOrEmpty(_Name.First.Value)) _ = result.Append(_Name.First.Value); if (_Name?.Middle is not null && !string.IsNullOrEmpty(_Name.Middle.Value)) _ = result.Append(' ').Append(_Name.Middle.Value); if (_Name?.Last is not null && !string.IsNullOrEmpty(_Name.Last.Value)) _ = result.Append(' ').Append(_Name.Last.Value); if (_Name?.Alias is not null && !string.IsNullOrEmpty(_Name.Alias.Value)) _ = result.Append(" (").Append(_Name.Alias.Value).Append(')'); return result.ToString(); } }