/// <summary> /// Fills <paramref name="contact"/> "First name", "Last name", "Middle name" fields using /// <paramref name="converter"/>. /// </summary> /// <param name="contact"><see cref="Terrasoft.Configuration.Contact"/> instance.</param> /// <param name="converter"><see cref="IContactFieldConverter"/> implementation.</param> public static void FillSgmFields(this Contact contact, IContactFieldConverter converter) { if (converter == null) { return; } ContactSgm contactSgm = converter.GetContactSgm(contact.Name); contact.Surname = contactSgm.Surname; contact.GivenName = contactSgm.GivenName; contact.MiddleName = contactSgm.MiddleName; }
/// <summary> /// <see cref="IContactFieldConverter.GetContactSgm"/> /// </summary> /// <remarks> /// After splitting <paramref name="name"/> first element will be used as <see cref="ContactSgm.Surname"/>, /// second element as <see cref="ContactSgm.GivenName"/>, everything else as <see cref="ContactSgm.MiddleName"/>. /// </remarks> ContactSgm IContactFieldConverter.GetContactSgm(string name) { var sgm = new ContactSgm(); if (string.IsNullOrEmpty(name)) { return(sgm); } var array = name.Split(Separator, StringSplitOptions.RemoveEmptyEntries); switch (array.Length) { case 0: return(sgm); case 1: sgm.Surname = array[0]; break; case 2: sgm.Surname = array[0]; sgm.GivenName = array[1]; break; default: sgm.Surname = array[0]; sgm.GivenName = array[1]; StringBuilder sb = new StringBuilder(); for (var i = 2; i <= array.Length - 1; i++) { sb.AppendFormat("{0} ", array[i]); } sgm.MiddleName += sb.ToString().Trim(); break; } return(sgm); }
/// <summary> /// <see cref="IContactFieldConverter.GetContactName"/> /// </summary> /// <remarks> /// "Full name" string will be created using "Surname Given name [Middle name]" rule. /// </remarks> public string GetContactName(ContactSgm sgm) { var concatChar = Separator.FirstOrDefault(); return(new[] { sgm.Surname, sgm.GivenName, sgm.MiddleName }.ConcatIfNotEmpty(concatChar.ToString())); }