81 lines
3.0 KiB
C#

using System.Text;
namespace View_by_Distance.Shared.Models.Stateless.Methods;
internal abstract class PersonName
{
// ...
internal static Models.PersonName GetPersonName(string name)
{
Models.PersonName result;
Models.PersonNameLast personNameLast;
Models.PersonNameAlias personNameAlias;
Models.PersonNameFirst personNameFirst;
Models.PersonNameMiddle personNameMiddle;
string[] segments = name.Split(' ');
if (segments.Length == 1)
{
personNameFirst = new(string.Empty);
personNameLast = new(string.Empty);
personNameMiddle = new(string.Empty);
personNameAlias = new(segments[0]);
}
else if (segments.Length == 2)
{
personNameFirst = new(segments[0]);
personNameLast = new(segments[1]);
personNameMiddle = new(string.Empty);
personNameAlias = new(string.Empty);
}
else if (segments.Length == 3 && segments[2] is "Jr." or "Jr" or "Sr")
{
personNameFirst = new(segments[0]);
personNameLast = new(segments[1]);
personNameMiddle = new(string.Empty);
personNameAlias = new(string.Join(' ', segments));
}
else
{
string[] comment = name.Split(new string[] { " (" }, StringSplitOptions.None);
if (comment.Length == 1)
{
personNameFirst = new(segments[0]);
personNameLast = new(segments[^1]);
personNameMiddle = new(string.Empty);
personNameAlias = new(string.Join(' ', segments));
}
else
{
segments = comment[0].Split(' ');
personNameFirst = new(segments[0]);
personNameLast = new(segments[^1]);
personNameMiddle = new(string.Empty);
personNameAlias = new(string.Concat(string.Join(' ', segments), " (", comment[1]));
}
}
result = new(personNameFirst, personNameMiddle, personNameLast, personNameAlias);
return result;
}
internal static string GetFullName(Models.PersonName personName)
{
StringBuilder result = new();
if (personName.First is not null && !string.IsNullOrEmpty(personName.First.Value))
_ = result.Append(personName.First.Value);
if (personName.Middle is not null && !string.IsNullOrEmpty(personName.Middle.Value))
_ = result.Append(' ').Append(personName.Middle.Value);
if (personName.Last is not null && !string.IsNullOrEmpty(personName.Last.Value))
_ = result.Append(' ').Append(personName.Last.Value);
if (personName.Alias is not null && !string.IsNullOrEmpty(personName.Alias.Value))
{
if (personName.Alias.Value.Contains(" Jr"))
_ = result.Append(" Jr");
else if (personName.Alias.Value.Contains(" Sr"))
_ = result.Append(" Sr");
}
return result.ToString();
}
}