public void UpdateOrCreateXConnectContactWithEmail(IXConnectContactWithEmail xConnectContact) { if (xConnectContact == null) { throw new ArgumentNullException(nameof(xConnectContact)); } using (var client = SitecoreXConnectClientConfiguration.GetClient()) { var contactReference = new IdentifiedContactReference(xConnectContact.IdentifierSource, xConnectContact.IdentifierValue); var contact = client.Get(contactReference, new ContactExpandOptions(PersonalInformation.DefaultFacetKey, EmailAddressList.DefaultFacetKey)); if (contact == null) { var newContact = new Sitecore.XConnect.Contact(new ContactIdentifier(contactReference.Source, contactReference.Identifier, ContactIdentifierType.Known)); SetEmail(newContact, xConnectContact, client); client.AddContact(newContact); client.Submit(); if (Tracker.Current != null && Tracker.Current.Contact != null) { SaveNewContactToCollectionDb(Tracker.Current.Contact); } } else { if (contact.Emails()?.PreferredEmail.SmtpAddress == xConnectContact.IdentifierValue) { return; } SetEmail(contact, xConnectContact, client); client.Submit(); } } }
private static void SetEmail(Sitecore.XConnect.Contact contact, IXConnectContactWithEmail xConnectContact, IXdbContext client) { if (string.IsNullOrEmpty(xConnectContact.Email)) { return; } var facet = contact.Emails(); if (facet == null) { facet = new EmailAddressList(new EmailAddress(xConnectContact.Email, false), "Preferred"); } else { if (facet.PreferredEmail?.SmtpAddress == xConnectContact.IdentifierValue) { return; } facet.PreferredEmail = new EmailAddress(xConnectContact.Email, false); } client.SetEmails(contact, facet); }
public void UpdateOrCreateContact(IXConnectContactWithEmail contact) { CheckIdentifier(contact); _xConnectContactRepository.UpdateOrCreateXConnectContactWithEmail(contact); }