private string GetSearchTag(IErpCustomerModel cm) { return(StringUtil.NormalizeSearchText(1000, cm.Name, cm.Email, cm.Surname, cm.Phone)); }
private void SyncCustomer(IErpCustomerModel src, ICustomer trg) { var changed = false; if (trg.Id == 0) { changed = true; trg.FirstContactDt = GetFirstContact(src.Email); } if (string.IsNullOrWhiteSpace(trg.Email)) { trg.Email = src.Email; changed = true; } if ((trg.Phone != src.Phone) && !string.IsNullOrWhiteSpace(src.Phone)) { trg.Phone = src.Phone; changed = true; } if (trg.IsDistributor != src.IsDistributor) { trg.IsDistributor = src.IsDistributor; changed = true; } if ((trg.LastActivationDt == null) && src.IsActive) { trg.LastActivationDt = DateTime.Now; changed = true; } if ((trg.LastDeactivationDt == null) && (trg.LastActivationDt != null) && (!src.IsActive)) { trg.LastDeactivationDt = DateTime.Now; changed = true; } if (!trg.IsRegistered) { trg.IsRegistered = true; trg.RegistrationDt = DateTime.Now; changed = true; } if (trg.IsDistributor != src.IsDistributor) { trg.IsDistributor = src.IsDistributor; changed = true; } if (trg.NewsletterSubscriber != src.IsNewsletterSubscriber) { if (trg.NewsletterUnsubscribeDt == null) // If someone unsubscribed in Mailchimp, they cannot subscribe from ERP anymore // (bcs currently there is no way how to tell ERP that they unsubscribed from Mailchimp) { trg.NewsletterSubscriber = src.IsNewsletterSubscriber; if (src.IsNewsletterSubscriber) { trg.NewsletterSubscriptionDt = DateTime.Now; } else { trg.NewsletterUnsubscribeDt = DateTime.Now; } changed = true; } } var nick = GetNick(trg); if (nick != trg.Nick) { trg.Nick = nick; changed = true; } var searchTag = GetSearchTag(src); if (trg.SearchTag != searchTag) { trg.SearchTag = searchTag; changed = true; } if (changed) { trg.LastImportDt = DateTime.Now; SaveCustomer(trg); } }