71 lines
2.8 KiB
C#

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();
}
}