2022-07-24 12:35:00 -07:00

74 lines
2.6 KiB
C#

using System.Text;
namespace View_by_Distance.Shared.Models.Stateless.Methods;
internal abstract class PersonName
{
// ...
internal static Models.PersonName Create(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)
_ = result.Append(personName.First.Value);
if (personName.Middle is not null)
_ = result.Append(' ').Append(personName.Middle.Value);
if (personName.Last is not null)
_ = result.Append(' ').Append(personName.Last.Value);
return result.ToString();
}
}