public List <ModifiedFields> GetModifiedFields(LmsPerson lmsPerson) { List <ModifiedFields> modifiedFieldsList = null; ModifiedFields modifiedFields = null; modifiedFields = GetPersonField(modifiedFields, lmsPerson); if (modifiedFields != null) { (modifiedFieldsList ?? (modifiedFieldsList = new List <ModifiedFields>())).Add(modifiedFields); } modifiedFields = GetAddressField(modifiedFields, lmsPerson); if (modifiedFields != null) { (modifiedFieldsList ?? (modifiedFieldsList = new List <ModifiedFields>())).Add(modifiedFields); } modifiedFields = GetEmailField(modifiedFields, lmsPerson); if (modifiedFields != null) { (modifiedFieldsList ?? (modifiedFieldsList = new List <ModifiedFields>())).Add(modifiedFields); } modifiedFields = GetPhoneField(modifiedFields, lmsPerson); if (modifiedFields != null) { (modifiedFieldsList ?? (modifiedFieldsList = new List <ModifiedFields>())).Add(modifiedFields); } return(modifiedFieldsList); }
/// <summary> /// Adds a person to CCM using AddPerson behavior call. /// </summary> /// <param name="strategy"></param> /// <param name="applicant"></param> /// <returns></returns> public BaseResult AddPerson(ClientStrategy strategy, Applicant applicant) { var result = new BaseResult(); var lmsPerson = new LmsPerson() { Applicant = applicant }; var addPersonStrategyResult = strategy.AddPerson(lmsPerson); result.AppendResult(addPersonStrategyResult); if (!addPersonStrategyResult.Result) { if (applicant.ApplicantTypeId.GetValueOrDefault() == (int)Akcelerant.Lending.Lookups.Constants.Values.ApplicantType.Joint) { string applicantTypeName = LookupCodes.ApplicantType.Joint; result.AddMessage(MessageType.Warning, $"An error occured adding the {applicantTypeName} Applicant Type. {applicant.FullName} will not be added to CCM."); } else { result.AddError("An error occurred creating the credit card record for the loan. The credit card will not be created in CCM."); return(result); } } return(result); }
private PrimaryAddress GetPrimaryAddress(LmsPerson lmsPerson) { var applicant = lmsPerson.Applicant; var authorizedUser = lmsPerson.AuthorizedUser; Address currentAddress = null; if (applicant != null && authorizedUser == null) { currentAddress = applicant.Addresses.SingleOrDefault( a => a.AddressTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.AddressType, LookupCodes.AddressType.Current) ); } else if (applicant == null && authorizedUser != null) { currentAddress = authorizedUser.Addresses.SingleOrDefault( a => a.AddressTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.AddressType, LookupCodes.AddressType.Current) ); } var primaryAddress = new PrimaryAddress() { AddressLine1 = currentAddress?.Address1, AddressLine2 = currentAddress?.Address2, City = currentAddress?.City, StateProvince = _lmsRepository.GetLookupCodeById((int)currentAddress?.StateId.GetValueOrDefault(), LookupTypes.StateCode), PostalCode = currentAddress?.PostalCode, CountryCode = _lmsRepository.GetLookupCodeById((int)currentAddress?.CountryId.GetValueOrDefault(), LookupTypes.CountryCode), AddressType = GetAddressType(currentAddress) }; return(primaryAddress); }
private Card GetCard(LmsPerson lmsPerson) { var applicant = lmsPerson.Applicant; var authorizedUser = lmsPerson.AuthorizedUser; var card = new Card() { AccountNumber = _app.CreditCardNumber, CardOrderType = _app.IsInstantIssueCard ? "InstantIssue" : "Batch" }; if (applicant != null && authorizedUser == null) { card.EmbossingLine1 = applicant.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.EmbossingLine1")) ? string.Empty : null; card.EmbossingLine2 = applicant.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.EmbossingLine2")) ? string.Empty : null; card.CardholderPartyNumber = applicant.PersonNumber; card.CardholderPartyType = applicant.IsOrganization ? "Organization" : "Person"; card.PinOffset = applicant.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.PinOffset")) ? string.Empty : null; card.Reissue = applicant.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.Reissue")) ? string.Empty : null; card.CardDesignName = _lmsRepository.GetLookupCodeById(applicant.CreditCardDesignId.GetValueOrDefault(), LookupTypes.CardDesignType); } else if (applicant == null && authorizedUser != null) { card.EmbossingLine1 = authorizedUser.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.EmbossingLine1")) ? string.Empty : null; card.EmbossingLine2 = authorizedUser.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.EmbossingLine2")) ? string.Empty : null; card.CardholderPartyNumber = authorizedUser.PersonNumber; card.CardholderPartyType = "Person"; card.PinOffset = authorizedUser.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.PinOffset")) ? string.Empty : null; card.Reissue = authorizedUser.HostValues.Any(h => h.Field1.Equals("AddCard.Message.DataUpdate.Card.Reissue")) ? string.Empty : null; card.CardDesignName = _lmsRepository.GetLookupCodeById(authorizedUser.CreditCardDesignId.GetValueOrDefault(), LookupTypes.CardDesignType); } return(card); }
/// <summary> /// Creates a card for the authorized user using AddCard behavior call. Then sets the authorized user's card number in LMS. /// </summary> /// <param name="strategy"></param> /// <param name="authorizedUser"></param> /// <returns></returns> public BaseResult AddCard(ClientStrategy strategy, AuthorizedUser authorizedUser) { var result = new BaseResult(); var lmsPerson = new LmsPerson() { AuthorizedUser = authorizedUser }; string cardNumber = string.Empty; var addCardResult = strategy.AddCard(lmsPerson, out cardNumber); result.AppendResult(addCardResult); if (addCardResult.Result) { //Store the CCM AccountNumber received from the response to the authorized user CardNumber field var authUser = _app.AuthorizedUsers.SingleOrDefault(a => a.AuthorizedUserId == authorizedUser.AuthorizedUserId); authUser.CardNumber = cardNumber; } else { result.AddMessage(MessageType.Warning, $"An error occured creating the plastic card. The card will not be created on CCM for {authorizedUser.FirstName} {authorizedUser.LastName}."); result.Result = true; } return(result); }
/// <summary> /// Creates a card for the primary or joint applicant using AddCard behavior call. Then sets the applicant's card number in LMS. /// </summary> /// <param name="strategy"></param> /// <param name="primaryOrJointApplicant"></param> /// <returns></returns> public BaseResult AddCard(ClientStrategy strategy, Applicant primaryOrJointApplicant) { var result = new BaseResult(); var lmsPerson = new LmsPerson() { Applicant = primaryOrJointApplicant }; string cardNumber = string.Empty; var addCardStrategyResult = strategy.AddCard(lmsPerson, out cardNumber); result.AppendResult(addCardStrategyResult); if (addCardStrategyResult.Result) { // Store the CCM AccountNumber received from the response to the primary or joint applicant CardNumber field var applicant = _app.Applicants.SingleOrDefault(a => a.ApplicantId == primaryOrJointApplicant.ApplicantId); applicant.CardNumber = cardNumber; } else { var applicantName = (primaryOrJointApplicant.IsOrganization) ? primaryOrJointApplicant.OrganizationName : primaryOrJointApplicant.FullName; result.AddMessage(MessageType.Warning, $"An error occured creating the plastic card. The card will not be created on CCM for {applicantName}."); result.Result = true; } return(result); }
public ModifiedFields GetPhoneField(ModifiedFields modifiedFields, LmsPerson lmsPerson) { var addressFieldHVs = _app.HostValues.Where ( hv => hv.Field1.Contains("UpdatePerson.Message.DataUpdate.ModifiedFields.AddressField") ); if (addressFieldHVs.Any()) { if (modifiedFields == null) { modifiedFields = new ModifiedFields(); } var addressFields = new List <string>(); // Add AddressField host values to Dto foreach (var addressFieldHV in addressFieldHVs.ToList()) { addressFields.Add(addressFieldHV.Value); // Remove this host value from the application entity since it was already manually added // and doesn't need to be "re-added" by the host value translator. _app.HostValues.Remove(addressFieldHV); } modifiedFields.AddressField = addressFields; } return(modifiedFields); }
public override BaseResult AddCard(LmsPerson lmsPerson, out string cardNumber) { var result = AddCardBehavior.AddCard(lmsPerson); cardNumber = AddCardBehavior.MessageResponse?.CardNumber; return(result); }
public MessageResponse AddCard(AddCard card, Application app, LmsPerson lmsPerson) { MessageResponse messageResponse = null; string messageXml = string.Empty; using (var tr = new Tracer("LMS.Connector.CCM.Repositories.SoapRepository.AddCard")) { try { messageXml = card.Message?.SerializeToXmlString(); tr.Log($"AddCard: BEFORE setting host values => {messageXml}"); tr.Log("AddCard: Set Application-level host values "); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, app.HostValues.Where(hv => hv.Field1.StartsWith("AddCard.")).ToList(), card.Message?.HostValueParentNode ); tr.Log($"AddCard: AFTER Application-level host values => {messageXml}"); if (lmsPerson.Applicant != null) { tr.Log("AddCard: Set Applicant-level host values"); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, lmsPerson.Applicant.HostValues.Where(hv => hv.Field1.StartsWith("AddCard.")).ToList(), card.Message?.HostValueParentNode ); tr.Log($"AddCard: AFTER Applicant-level host values => {messageXml}"); } else if (lmsPerson.Applicant == null && lmsPerson.AuthorizedUser != null) { tr.Log("AddCard: Set Authorized User-level host values"); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, lmsPerson.AuthorizedUser.HostValues.Where(hv => hv.Field1.StartsWith("AddCard.")).ToList(), card.Message?.HostValueParentNode ); tr.Log($"AddCard: AFTER Authorized User-level host values => {messageXml}"); } tr.LogObject(CredentialsHeader); tr.Log("AddCard: Calling ISoapRepository.ProcessMessage"); messageResponse = ProcessMessage(messageXml); } catch (Exception ex) { // Handle serialization and host value translation exceptions here tr.LogException(ex); Utility.LogError(ex, "LMS.Connector.CCM.Repositories.SoapRepository.AddCard"); throw; } } return(messageResponse); }
public UpdatePerson GetDto(LmsPerson lmsPerson) { var person = new UpdatePerson() { Message = GetMessage(lmsPerson) }; return(person); }
public void AddCard_GivenAPersonThatHasAnAccountInCCM_ShouldBeAbleToCreateAPlasticCard() { // ARRANGE var applicant = GetApplicant(); var lmsPerson = new LmsPerson() { Applicant = applicant }; var credentials = new Credentials() { BaseUrl = "https://some.bank.or.cu/api", Username = "******", Password = "******", Facility = "validFacility" }; var credentialsHeader = GetCredentialsHeader(credentials); var messageXml = _card.Message?.SerializeToXmlString(); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, applicant.HostValues.Where(hv => hv.Field1.StartsWith("AddCard.")).ToList(), _card.Message?.HostValueParentNode ); var processMessageNodeRequest = new ProcessMessageNodeRequest() { CredentialsHeader = credentialsHeader, request = GetXmlNode(messageXml) }; var stubServiceRepo = Substitute.For <ISoapRepository>(); stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest); _messageResponse = GetMessageResponseSuccess(); stubServiceRepo.AddCard(_card, _app, lmsPerson).Returns(_messageResponse); var stubLmsRepo = Substitute.For <ILmsRepository>(); var mockBehavior = new AddCardBehavior(_app, _userToken, stubServiceRepo, stubLmsRepo); mockBehavior.Card = _card; // ACT var result = mockBehavior.AddCard(lmsPerson); var cardNumber = mockBehavior.MessageResponse?.CardNumber; // ASSERT Assert.AreEqual(0, result.Messages.Count(m => m.Type == MessageType.Error)); Assert.IsTrue(result.Result); Assert.AreEqual("Success", mockBehavior.MessageResponse.ResponseCode); Assert.AreEqual("4398790000000001", cardNumber); }
public AddCard GetDto(LmsPerson lmsPerson) { var card = new AddCard() { Message = GetMessage(lmsPerson) }; return(card); }
private Dto.Soap.Message GetMessage(LmsPerson lmsPerson) { var message = new Dto.Soap.Message() { DataUpdate = GetDataUpdate(lmsPerson) }; return(message); }
public AddPerson GetDto(LmsPerson lmsPerson) { var person = new AddPerson() { Message = GetMessage(lmsPerson) }; return(person); }
private PrimaryAddress GetPrimaryAddress(LmsPerson lmsPerson) { var primaryAddress = new PrimaryAddress() { AddressLine1 = ADDRESS_LINE_1 }; return(primaryAddress); }
public BaseResult UpdatePerson(LmsPerson lmsPerson) { var result = new BaseResult(); using (var tr = new Tracer("LMS.Connector.CCM.Behaviors.Soap.UpdatePersonBehavior.UpdatePerson")) { if (lmsPerson.Applicant != null) { tr.Log($"UpdatePerson for ApplicantId {lmsPerson.Applicant.ApplicantId}, PersonNumber => {lmsPerson.Applicant.PersonNumber}"); } else if (lmsPerson.AuthorizedUser != null) { tr.Log($"UpdatePerson for AuthorizedUserId {lmsPerson.AuthorizedUser.AuthorizedUserId}, PersonNumber => {lmsPerson.AuthorizedUser.PersonNumber}"); } tr.Log($"UpdatePerson _person null? => {_person == null}"); if (_person == null) { tr.Log("Call GetDto() to get new _person"); _person = GetDto(lmsPerson); } tr.LogObject(_person); try { tr.Log("Calling ISoapRepository.UpdatePerson"); _messageResponse = _soapRepository.UpdatePerson(_person, _app); tr.Log($"_messageResponse.ResponseCode = {_messageResponse?.ResponseCode}"); tr.Log($"_messageResponse.ErrorMessage = {_messageResponse?.ErrorMessage}"); } catch (Exception ex) { tr.LogException(ex); result.Result = false; result.ExceptionId = Utility.LogError(ex, "LMS.Connector.CCM.Behaviors.Soap.UpdatePersonBehavior.UpdatePerson"); result.AddMessage(MessageType.Error, $"Exception when attempting to call SOAP Repository UpdatePerson(): {ex.Message}"); } finally { // Deallocate DTO _person = null; } if (_messageResponse?.ResponseCode != "Success" && _messageResponse?.ErrorMessage?.Length > 0) { result.Result = false; result.AddMessage(MessageType.Error, _messageResponse.ErrorMessage); return(result); } } return(result); }
private Person GetPerson(LmsPerson lmsPerson) { var person = new Person() { PrimaryAddress = GetPrimaryAddress(lmsPerson) }; person.PartyNumber = PARTY_NUMBER; person.TaxIdNumber = TAX_ID_NUMBER; return(person); }
private DataUpdate GetDataUpdate(LmsPerson lmsPerson) { var dataUpdate = new DataUpdate() { TraceNumber = _app.ApplicationId.ToString(), ProcessingCode = "ExternalUpdateRequest", Source = "LoanOrigination", UpdateAction = "Add", Person = GetPerson(lmsPerson) }; return(dataUpdate); }
private DataUpdate GetDataUpdate(LmsPerson lmsPerson) { var dataUpdate = new DataUpdate() { TraceNumber = TRACE_NUMBER, ProcessingCode = "ExternalUpdateRequest", Source = "LoanOrigination", UpdateAction = "Modify", Person = GetPerson(lmsPerson), ModifiedFields = GetModifiedFields(lmsPerson) }; return(dataUpdate); }
/// <summary> /// Manually creates a collection of ModifieldFields. /// </summary> /// <param name="lmsPerson"></param> /// <remarks> /// Optionally giving it the ability to access applicant-level host values. /// </remarks> /// <returns></returns> public List <ModifiedFields> GetModifiedFields(LmsPerson lmsPerson) { List <ModifiedFields> modifiedFieldsList = new List <ModifiedFields>(); ModifiedFields modifiedFields = new ModifiedFields() { AddressField = new List <string>() }; modifiedFields = GetAddressField(modifiedFields, lmsPerson); modifiedFieldsList.Add(modifiedFields); return(modifiedFieldsList); }
private PrimaryEmail GetPrimaryEmail(LmsPerson lmsPerson) { var applicant = lmsPerson.Applicant; var authorizedUser = lmsPerson.AuthorizedUser; var primaryEmail = new PrimaryEmail(); if (applicant != null && authorizedUser == null) { primaryEmail.EmailAddress = applicant.Email; } else if (applicant == null && authorizedUser != null) { primaryEmail.EmailAddress = authorizedUser.Email; } return(primaryEmail); }
/// <summary> /// Adds an authorized user to CCM using AddPerson behavior call. /// </summary> /// <param name="strategy"></param> /// <param name="authorizedUser"></param> /// <returns></returns> public BaseResult AddAuthorizedUser(ClientStrategy strategy, AuthorizedUser authorizedUser) { var result = new BaseResult(); var lmsPerson = new LmsPerson() { AuthorizedUser = authorizedUser }; var addAuthorizedUserStrategyResult = strategy.AddPerson(lmsPerson); result.AppendResult(addAuthorizedUserStrategyResult); if (!addAuthorizedUserStrategyResult.Result) { result.AddMessage(MessageType.Warning, $"An error occured adding the AUTHORIZED USER. {authorizedUser.FirstName} {authorizedUser.LastName} will not be added to CCM."); } return(result); }
private Person GetPerson(LmsPerson lmsPerson) { var applicant = lmsPerson.Applicant; var authorizedUser = lmsPerson.AuthorizedUser; var person = new Person() { PrimaryAddress = GetPrimaryAddress(lmsPerson), PrimaryEmail = GetPrimaryEmail(lmsPerson), PrimaryPhone = GetPrimaryPhone(lmsPerson) }; if (applicant != null && authorizedUser == null) { person.PartyNumber = applicant.PersonNumber; person.TaxIdNumber = applicant.TIN; person.InstitutionRelationShipType = (applicant.IsCustomer) ? "Customer" : "Other"; person.LastName = applicant.LastName; person.FirstName = applicant.FirstName; person.MiddleName = applicant.MiddleName; person.DateOfBirth = applicant.BirthDate.HasValue ? applicant.BirthDate.Value.ToString("yyyy-MM-dd") : string.Empty; person.DateOfDeath = string.Empty; person.Title = string.Empty; person.NameSuffix = applicant.Suffix; person.MothersMaidenName = applicant.MothersMaidenName; } else if (applicant == null && authorizedUser != null) { person.PartyNumber = authorizedUser.PersonNumber; person.TaxIdNumber = authorizedUser.TIN; person.LastName = authorizedUser.LastName; person.FirstName = authorizedUser.FirstName; person.MiddleName = authorizedUser.MiddleName; person.DateOfBirth = authorizedUser.BirthDate.HasValue ? authorizedUser.BirthDate.Value.ToString("yyyy-MM-dd") : string.Empty; person.DateOfDeath = string.Empty; person.Title = string.Empty; person.NameSuffix = authorizedUser.Suffix; person.MothersMaidenName = authorizedUser.MothersMaidenName; } return(person); }
private Person GetPerson(LmsPerson lmsPerson) { var applicant = lmsPerson.Applicant; var authorizedUser = lmsPerson.AuthorizedUser; var person = new Person() { PrimaryAddress = GetPrimaryAddress(), PrimaryEmail = GetPrimaryEmail(lmsPerson), PrimaryPhone = GetPrimaryPhone() }; if (applicant != null && authorizedUser == null) { person.PartyNumber = applicant.PersonNumber; person.TaxIdNumber = applicant.TIN; person.InstitutionRelationShipType = applicant.IsCustomer ? "Customer" : "Other"; person.LastName = applicant.LastName; person.FirstName = applicant.FirstName; person.MiddleName = applicant.MiddleName; person.DateOfBirth = applicant.BirthDate.HasValue ? applicant.BirthDate.Value.ToString("yyyy-MM-dd") : string.Empty; person.Title = applicant.HostValues.Any(h => h.Field1.Equals("AddPerson.Message.DataUpdate.Person.Title")) ? string.Empty : null; person.NameSuffix = string.IsNullOrWhiteSpace(applicant.Suffix) ? null : applicant.Suffix; person.MothersMaidenName = applicant.MothersMaidenName; } else if (applicant == null && authorizedUser != null) { person.PartyNumber = authorizedUser.PersonNumber; person.TaxIdNumber = authorizedUser.TIN; person.LastName = authorizedUser.LastName; person.FirstName = authorizedUser.FirstName; person.MiddleName = authorizedUser.MiddleName; person.DateOfBirth = authorizedUser.BirthDate.HasValue ? authorizedUser.BirthDate.Value.ToString("yyyy-MM-dd") : string.Empty; person.Title = authorizedUser.HostValues.Any(h => h.Field1.Equals("AddPerson.Message.DataUpdate.Person.Title")) ? string.Empty : null; person.NameSuffix = string.IsNullOrWhiteSpace(authorizedUser.Suffix) ? null : authorizedUser.Suffix; person.MothersMaidenName = authorizedUser.MothersMaidenName; } return(person); }
/// <summary> /// Creates a Person in CCM. This Person must already exist in DNA/OSI. /// </summary> /// <param name="person"></param> /// <returns></returns> public virtual BaseResult AddPerson(LmsPerson lmsPerson) { return(AddPersonBehavior.AddPerson(lmsPerson)); }
/// <summary> /// Makes a call to create cards for the Primary /// </summary> /// <param name="person"></param> /// <param name="cardNumber"></param> /// <returns></returns> public virtual BaseResult AddCard(LmsPerson lmsPerson, out string cardNumber) { cardNumber = string.Empty; return(AddCardBehavior.AddCard(lmsPerson)); }
/// <summary> /// Manually creates a collection of AddressFields that will be added as a property of ModifiedFields. /// </summary> /// <param name="modifiedFields"></param> /// <param name="lmsPerson"></param> /// <remarks> /// This method already has access to application-level host values. /// Optionally giving it the ability to access applicant-level or authorized user-level host values. /// </remarks> /// <returns></returns> public static ModifiedFields GetAddressField(ModifiedFields modifiedFields, LmsPerson lmsPerson) { modifiedFields.AddressField.Add(ADDRESS_FIELD); return(modifiedFields); }
private PrimaryPhone GetPrimaryPhone(LmsPerson lmsPerson) { var applicant = lmsPerson.Applicant; var authorizedUser = lmsPerson.AuthorizedUser; var primaryPhone = new PrimaryPhone(); if (applicant != null && authorizedUser == null) { var phoneMobile = applicant.Phones.SingleOrDefault( p => p.PhoneTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.PhoneType, LookupCodes.PhoneType.Mobile) ); var phoneHome = applicant.Phones.SingleOrDefault( p => p.PhoneTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.PhoneType, LookupCodes.PhoneType.Home) ); if (phoneMobile != null) { primaryPhone.CountryCallingCode = string.Empty; primaryPhone.CityAreaCode = phoneMobile.PhoneNumberRaw.GetPhoneNumberAreaCode(); primaryPhone.LocalPhoneNumber = phoneMobile.PhoneNumberRaw.GetPhoneNumberMajor() + phoneMobile.PhoneNumberRaw.GetPhoneNumberMinor(); primaryPhone.Extension = phoneMobile.Extension; var textInfo = new CultureInfo("en-US", false).TextInfo; var phoneType = _lmsRepository.GetLookupCodeById(phoneMobile.PhoneTypeId, LookupTypes.PhoneType); primaryPhone.PhoneType = textInfo.ToTitleCase(phoneType); } else if (phoneHome != null && phoneMobile == null) { primaryPhone.CountryCallingCode = string.Empty; primaryPhone.CityAreaCode = phoneHome.PhoneNumberRaw.GetPhoneNumberAreaCode(); primaryPhone.LocalPhoneNumber = phoneHome.PhoneNumberRaw.GetPhoneNumberMajor() + phoneHome.PhoneNumberRaw.GetPhoneNumberMinor(); primaryPhone.Extension = phoneHome.Extension; var textInfo = new CultureInfo("en-US", false).TextInfo; var phoneType = _lmsRepository.GetLookupCodeById(phoneHome.PhoneTypeId, LookupTypes.PhoneType); primaryPhone.PhoneType = textInfo.ToTitleCase(phoneType); } else { // Set primaryPhone values via Rules } } else if (applicant == null && authorizedUser != null) { var phoneMobile = authorizedUser.Phones.SingleOrDefault( p => p.PhoneTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.PhoneType, LookupCodes.PhoneType.Mobile) ); var phoneHome = authorizedUser.Phones.SingleOrDefault(p => p.PhoneTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.PhoneType, LookupCodes.PhoneType.Home)); if (phoneMobile != null) { primaryPhone.CountryCallingCode = string.Empty; primaryPhone.CityAreaCode = phoneMobile.PhoneNumberRaw.GetPhoneNumberAreaCode(); primaryPhone.LocalPhoneNumber = phoneMobile.PhoneNumberRaw.GetPhoneNumberMajor() + phoneMobile.PhoneNumberRaw.GetPhoneNumberMinor(); primaryPhone.Extension = phoneMobile.Extension; var textInfo = new CultureInfo("en-US", false).TextInfo; var phoneType = _lmsRepository.GetLookupCodeById(phoneMobile.PhoneTypeId, LookupTypes.PhoneType); primaryPhone.PhoneType = textInfo.ToTitleCase(phoneType); } else if (phoneHome != null && phoneMobile == null) { primaryPhone.CountryCallingCode = string.Empty; primaryPhone.CityAreaCode = phoneHome.PhoneNumberRaw.GetPhoneNumberAreaCode(); primaryPhone.LocalPhoneNumber = phoneHome.PhoneNumberRaw.GetPhoneNumberMajor() + phoneHome.PhoneNumberRaw.GetPhoneNumberMinor(); primaryPhone.Extension = phoneHome.Extension; var textInfo = new CultureInfo("en-US", false).TextInfo; var phoneType = _lmsRepository.GetLookupCodeById(phoneHome.PhoneTypeId, LookupTypes.PhoneType); primaryPhone.PhoneType = textInfo.ToTitleCase(phoneType); } else { // Set primaryPhone values via Rules } } return(primaryPhone); }
public BaseResult TestConnection(string serviceUrl, string userName, string password, string facility) { var result = new BaseResult(); using (var tr = new Tracer("LMS.Connector.CCM.Behaviors.Soap.TestConnectionBehavior.TestConnection")) { _soapRepository.Credentials = new Credentials() { BaseUrl = serviceUrl, Username = userName, Password = password, Facility = facility }; tr.LogObject(_soapRepository.Credentials); // Can be any primary Applicant -- doesn't matter since we are only testing a connection. var lmsPerson = new LmsPerson() { Applicant = _app.Applicants.SingleOrDefault(a => a.ApplicantTypeId == (int)Akcelerant.Lending.Lookups.Constants.Values.ApplicantType.Primary) }; tr.Log($"UpdatePerson _person null? => {_person == null}"); if (_person == null) { tr.Log("Call GetDto() to get new _person"); _person = GetDto(lmsPerson); } tr.LogObject(_person); try { tr.Log("Calling ISoapRespository.UpdatePerson"); _messageResponse = _soapRepository.UpdatePerson(_person, _app); tr.Log($"_messageResponse.ResponseCode = {_messageResponse?.ResponseCode}"); tr.Log($"_messageResponse.ErrorMessage = {_messageResponse?.ErrorMessage}"); var isSystemMalfunction = (_messageResponse?.ResponseCode.Equals("SystemMalfunction", StringComparison.InvariantCulture) == true) ? true : false; tr.Log($"isSystemMalfunction = {isSystemMalfunction}"); var isErrorMessageModifyPartyRequestFailed = (_messageResponse?.ErrorMessage.Contains($"Modify Party request failed. Party {_person.Message?.DataUpdate?.Person?.PartyNumber} not found.") == true) ? true : false; tr.Log($"isErrorMessageModifyPartyRequestFailed = {isErrorMessageModifyPartyRequestFailed}"); //Use reponseCode and errorMessage to derive connectionEstablished according to business rules _connectionEstablished = (isSystemMalfunction && isErrorMessageModifyPartyRequestFailed) ? true : false; tr.Log($"_connectionEstablished = {_connectionEstablished}"); } catch (Exception ex) { result.Result = false; result.ExceptionId = Utility.LogError(ex, "LMS.Connector.CCM.Behaviors.Soap.TestConnectionBehavior.TestConnection"); result.AddMessage(MessageType.Error, $"Exception when attempting to get a MessageResponse from SOAP Repository UpdateAccount(): {ex.Message}"); } finally { // Deallocate DTO _person = null; } if (_connectionEstablished) { result.Result = true; } else { result.Result = false; result.AddMessage(MessageType.Error, "Connection to CCM SOAP service was not established"); } } return(result); }
public void AddOrganization_GivenAnOrganizationThatExistsInDNA_ButNotInCCM_ShouldBeAbleToAddThatOrganizationInCCM() { // ARRANGE var applicant = GetOrganization(); var lmsPerson = new LmsPerson() { Applicant = applicant }; var address = applicant.Addresses.FirstOrDefault(a => a.AddressTypeId == 311); var phone = applicant.Phones.FirstOrDefault(); var credentials = new Credentials() { BaseUrl = "https://some.bank.or.cu/api", Username = "******", Password = "******", Facility = "validFacility" }; var credentialsHeader = GetCredentialsHeader(credentials); var messageXml = _organization.Message?.SerializeToXmlString(); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, _app.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(), _organization.Message?.HostValueParentNode ); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, applicant.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(), _organization.Message?.HostValueParentNode ); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, address.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(), _organization.Message?.HostValueParentNode ); messageXml = HostValueTranslator.UpdateRequestWithHostValues( messageXml, phone.HostValues.Where(hv => hv.Field1.StartsWith("AddOrganization.")).ToList(), _organization.Message?.HostValueParentNode ); var processMessageNodeRequest = new ProcessMessageNodeRequest() { CredentialsHeader = credentialsHeader, request = GetXmlNode(messageXml) }; var stubServiceRepo = Substitute.For <ISoapRepository>(); stubServiceRepo.GetProcessMessageNodeRequest(credentialsHeader, messageXml).Returns(processMessageNodeRequest); _messageResponse = GetMessageResponseSuccess(); stubServiceRepo.AddOrganization(_organization, _app, applicant, address, phone).Returns(_messageResponse); var stubLmsRepo = Substitute.For <ILmsRepository>(); var mockBehavior = new AddOrganizationBehavior(_app, _userToken, stubServiceRepo, stubLmsRepo); mockBehavior.Organization = _organization; mockBehavior.CurrentAddress = address; mockBehavior.MainPhone = phone; // ACT var result = mockBehavior.AddOrganization(applicant); // ASSERT Assert.AreEqual(0, result.Messages.Count(m => m.Type == MessageType.Error)); Assert.IsTrue(result.Result); Assert.AreEqual("Success", mockBehavior.MessageResponse.ResponseCode); }