Ejemplo n.º 1
0
        public void SyncCrmToXdb(ICrmContact crmContact)
        {
            try
            {
                _logger.Info("Syncing CRM Contact to Tracker.Current.Contact", this);

                var xdbContact = _analytics.GetCurrentContact();

                if (xdbContact != null)
                {
                    var emailFacet    = xdbContact.GetFacet <IContactEmailAddresses>("Emails");
                    var addressFacet  = xdbContact.GetFacet <IContactAddresses>("Addresses");
                    var personalFacet = xdbContact.GetFacet <IContactPersonalInfo>("Personal");
                    var phoneFacet    = xdbContact.GetFacet <IContactPhoneNumbers>("Phone Numbers");
                    var email         = emailFacet.Entries.Contains("Work Email") ? emailFacet.Entries["Work Email"] : emailFacet.Entries.Create("Work Email");
                    var address       = addressFacet.Entries.Contains("Work Address") ? addressFacet.Entries["Work Address"] : addressFacet.Entries.Create("Work Address");
                    var workPhone     = phoneFacet.Entries.Contains("Work Phone") ? phoneFacet.Entries["Work Phone"] : phoneFacet.Entries.Create("Work Phone");

                    if (crmContact.EmailAddresses.Any())
                    {
                        email.SmtpAddress    = crmContact.EmailAddresses.First().Value;
                        emailFacet.Preferred = "Work Email";
                    }
                    if (crmContact.Addresses.Any())
                    {
                        address.StreetLine1   = crmContact.Addresses.First().StreetLine1;
                        address.StreetLine2   = crmContact.Addresses.First().StreetLine2;
                        address.StreetLine3   = crmContact.Addresses.First().StreetLine3;
                        address.City          = crmContact.Addresses.First().City;
                        address.StateProvince = crmContact.Addresses.First().StateProvince;
                        address.PostalCode    = crmContact.Addresses.First().PostalCode;
                        address.Country       = crmContact.Addresses.First().Country;
                    }
                    if (crmContact.PhoneNumbers.Any())
                    {
                        phoneFacet.Preferred = "Work Phone";
                        workPhone.Number     = crmContact.PhoneNumbers.First().Value;
                    }

                    personalFacet.Title      = crmContact.PersonalInformation.Title;
                    personalFacet.JobTitle   = crmContact.PersonalInformation.JobTitle;
                    personalFacet.FirstName  = crmContact.PersonalInformation.FirstName;
                    personalFacet.MiddleName = crmContact.PersonalInformation.MiddleName;
                    personalFacet.Surname    = crmContact.PersonalInformation.LastName;
                    personalFacet.Gender     = crmContact.PersonalInformation.Gender;
                    personalFacet.BirthDate  = crmContact.PersonalInformation.BirthDate;
                    _logger.Info("Finished syncing CRM Contact", this);
                }
                else
                {
                    _logger.Warning("The current Tracker.Contact was null", this);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("There was a problem syncing the CRM Contact", ex, this);
            }
        }
        public void SyncCrmToXdb(ICrmContact crmContact)
        {
            try
             {
            _logger.Info("Syncing CRM Contact to Tracker.Current.Contact", this);

            var xdbContact = _analytics.GetCurrentContact();

            if (xdbContact != null)
            {
               var emailFacet = xdbContact.GetFacet<IContactEmailAddresses>("Emails");
               var addressFacet = xdbContact.GetFacet<IContactAddresses>("Addresses");
               var personalFacet = xdbContact.GetFacet<IContactPersonalInfo>("Personal");
               var phoneFacet = xdbContact.GetFacet<IContactPhoneNumbers>("Phone Numbers");
               var email = emailFacet.Entries.Contains("Work Email") ? emailFacet.Entries["Work Email"] : emailFacet.Entries.Create("Work Email");
               var address = addressFacet.Entries.Contains("Work Address") ? addressFacet.Entries["Work Address"] : addressFacet.Entries.Create("Work Address");
               var workPhone = phoneFacet.Entries.Contains("Work Phone") ? phoneFacet.Entries["Work Phone"] : phoneFacet.Entries.Create("Work Phone");

               if (crmContact.EmailAddresses.Any())
               {
                  email.SmtpAddress = crmContact.EmailAddresses.First().Value;
                  emailFacet.Preferred = "Work Email";
               }
               if (crmContact.Addresses.Any())
               {
                  address.StreetLine1 = crmContact.Addresses.First().StreetLine1;
                  address.StreetLine2 = crmContact.Addresses.First().StreetLine2;
                  address.StreetLine3 = crmContact.Addresses.First().StreetLine3;
                  address.City = crmContact.Addresses.First().City;
                  address.StateProvince = crmContact.Addresses.First().StateProvince;
                  address.PostalCode = crmContact.Addresses.First().PostalCode;
                  address.Country = crmContact.Addresses.First().Country;
               }
               if (crmContact.PhoneNumbers.Any())
               {
                  phoneFacet.Preferred = "Work Phone";
                  workPhone.Number = crmContact.PhoneNumbers.First().Value;
               }

               personalFacet.Title = crmContact.PersonalInformation.Title;
               personalFacet.JobTitle = crmContact.PersonalInformation.JobTitle;
               personalFacet.FirstName = crmContact.PersonalInformation.FirstName;
               personalFacet.MiddleName = crmContact.PersonalInformation.MiddleName;
               personalFacet.Surname = crmContact.PersonalInformation.LastName;
               personalFacet.Gender = crmContact.PersonalInformation.Gender;
               personalFacet.BirthDate = crmContact.PersonalInformation.BirthDate;
               _logger.Info("Finished syncing CRM Contact", this);
            }
            else
            {
               _logger.Warning("The current Tracker.Contact was null", this);
            }
             }
             catch (Exception ex)
             {
            _logger.Error("There was a problem syncing the CRM Contact", ex, this);
             }
        }