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