/// <summary> /// Convert address set /// </summary> internal List <Address> ConvertAddressSet(AddressSet addr) { List <Address> retVal = new List <Address>(); foreach (var use in Enum.GetValues(typeof(AddressSet.AddressSetUse))) { if (((int)use == 0 && addr.Use == 0) ^ ((int)use != 0 && addr.Use.HasFlag((AddressSet.AddressSetUse)use))) { Address adEntry = new Address(); // An address can have multiple uses if ((AddressSet.AddressSetUse)use != AddressSet.AddressSetUse.Search) { adEntry.Use = new PrimitiveCode <string>(HackishCodeMapping.ReverseLookup(HackishCodeMapping.ADDRESS_USE, (AddressSet.AddressSetUse)use)); if (adEntry.Use == null || adEntry.Use.Value == null) { adEntry.Use = new PrimitiveCode <string>(); adEntry.Use.Extension.Add(ExtensionUtil.CreateADUseExtension((AddressSet.AddressSetUse)use)); } } foreach (var pt in addr.Parts) { switch (pt.PartType) { case AddressPart.AddressPartType.AddressLine: case AddressPart.AddressPartType.StreetAddressLine: adEntry.Line.Add(pt.AddressValue); break; case AddressPart.AddressPartType.City: adEntry.City = pt.AddressValue; break; case AddressPart.AddressPartType.Country: adEntry.Country = pt.AddressValue; break; case AddressPart.AddressPartType.PostalCode: adEntry.Zip = pt.AddressValue; break; case AddressPart.AddressPartType.State: adEntry.State = pt.AddressValue; break; default: // Can't find a place to put it and don't want to lose data ... so stuff it into an extension adEntry.Extension.Add(ExtensionUtil.CreateADExtension(pt)); break; } } retVal.Add(adEntry); } } return(retVal); }