コード例 #1
0
        public ICrmContact GetInformationFromCrm(string uniqueIdentifier)
        {
            CrmContact crmContact = null;

            try
            {
                _logger.Info("Attempting to find a contact where EMailAddress1 = " + uniqueIdentifier, this);
                var result = _crmService.FindContact(c => c.EMailAddress1 == uniqueIdentifier);
                if (result != null)
                {
                    _logger.Info("Found a contact in CRM.", this);
                    crmContact = Mapper.Map <Contact, CrmContact>(result);
                }
                else
                {
                    _logger.Warning("A contact could not be found for " + uniqueIdentifier, this);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("There was an error getting contact information from CRM", ex, this);
            }

            return(crmContact);
        }
コード例 #2
0
        private static SaveUpdateResponseModel Create(InvoiceCRMConatactModel contact, string memberId)
        {
            var proxy = ServiceClientProvider.GetCRMContactServiceProxy();

            try
            {
                var createCrmContactRequest = new CreateCrmContactRequest();
                createCrmContactRequest.OwnerId = memberId;
                createCrmContactRequest.IsContactInformationRequired = true;

                CrmContact crmContact = new CrmContact();
                crmContact.ContactId       = null;
                crmContact.ContactType     = CrmContactType.Customer;
                crmContact.ContactPriority = ContactPriorityType.None;
                crmContact.ContactSource   = ContactSourceType.ECommerce;
                crmContact.ContactStatus   = ContactStatusType.None;
                crmContact.OwnerMemberId   = memberId;

                crmContact.IsDuplicateNameCheckRequired = contact.IsDuplicateCheckRequire;

                crmContact.EmailAddresses = contact.EmailDetail != null && string.IsNullOrEmpty(contact.EmailDetail.EmailAddress) ? null : new List <EmailAddress_V01> {
                    new ContactEmailAddress {
                        EmailId = string.Empty, Address = contact.EmailDetail.EmailAddress, IsPrimary = true
                    }
                };

                crmContact.FollowupAppointments = new List <FollowupAppointment>()
                ;
                crmContact.Addresses = contact.Address == null
                    ? null
                    : new List <Address_V03>()
                {
                    new ContactAddress
                    {
                        AddressId = null,
                        Line1     = contact.Address.Address1,
                        City      = contact.Address.City,
                        Line2     = contact.Address.Address2,
                        StateProvinceTerritory = contact.Address.State,
                        PostalCode             = contact.Address.PostalCode,
                        Country       = contact.Address.Country,
                        IsPrimary     = true,
                        TypeOfAddress = AddressType.ShipTo
                    }
                };

                crmContact.Name = new Name_V01
                {
                    First = contact.FirstName,
                    Last  = contact.LastName,
                };

                crmContact.Phones = contact.PhoneDetail == null || string.IsNullOrEmpty(contact.PhoneDetail.PhoneNumber)
                    ? null
                    : new List <CrmContactPhone>()
                {
                    new CrmContactPhone
                    {
                        Id        = string.Empty,
                        IsPrimary = true,
                        Number    = contact.PhoneDetail.PhoneNumber,
                        PhoneType = CrmContactPhoneType.Mobile
                    }
                };
                createCrmContactRequest.Value = crmContact;

                var circuitBreaker =
                    CircuitBreakerFactory.GetFactory().GetCircuitBreaker <CreateCrmContactResponse>();
                var response = circuitBreaker.Execute(() => proxy.CreateContact(new CreateContactRequest(createCrmContactRequest)).CreateContactResult as CreateCrmContactResponse);


                if (response == null)
                {
                    LoggerHelper.Warn($"Create customer for ds {memberId} failed: response is null.");
                    return(null);
                }
                return(createContactResponseModel(response, contact));
            }
            catch (Exception ex)
            {
                LoggerHelper.Info($"ContactSaver:Create Failed. message: {ex.Message}, exception: {ex}");
                SaveUpdateResponseModel errorModel = new SaveUpdateResponseModel();
                return(errorModel);
            }
            finally
            {
                proxy.Close();
            }
        }