Exemplo 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);
            }
        }