Beispiel #1
0
 private string GetSearchTag(IErpCustomerModel cm)
 {
     return(StringUtil.NormalizeSearchText(1000, cm.Name, cm.Email, cm.Surname, cm.Phone));
 }
Beispiel #2
0
        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);
            }
        }