71 lines
2.8 KiB
C#
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();
|
|
}
|
|
|
|
} |