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