Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        public override BaseResult AddCard(LmsPerson lmsPerson, out string cardNumber)
        {
            var result = AddCardBehavior.AddCard(lmsPerson);

            cardNumber = AddCardBehavior.MessageResponse?.CardNumber;

            return(result);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        public UpdatePerson GetDto(LmsPerson lmsPerson)
        {
            var person = new UpdatePerson()
            {
                Message = GetMessage(lmsPerson)
            };

            return(person);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        public AddCard GetDto(LmsPerson lmsPerson)
        {
            var card = new AddCard()
            {
                Message = GetMessage(lmsPerson)
            };

            return(card);
        }
Exemplo n.º 13
0
        private Dto.Soap.Message GetMessage(LmsPerson lmsPerson)
        {
            var message = new Dto.Soap.Message()
            {
                DataUpdate = GetDataUpdate(lmsPerson)
            };

            return(message);
        }
Exemplo n.º 14
0
        public AddPerson GetDto(LmsPerson lmsPerson)
        {
            var person = new AddPerson()
            {
                Message = GetMessage(lmsPerson)
            };

            return(person);
        }
Exemplo n.º 15
0
        private PrimaryAddress GetPrimaryAddress(LmsPerson lmsPerson)
        {
            var primaryAddress = new PrimaryAddress()
            {
                AddressLine1 = ADDRESS_LINE_1
            };

            return(primaryAddress);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        private Person GetPerson(LmsPerson lmsPerson)
        {
            var person = new Person()
            {
                PrimaryAddress = GetPrimaryAddress(lmsPerson)
            };

            person.PartyNumber = PARTY_NUMBER;
            person.TaxIdNumber = TAX_ID_NUMBER;

            return(person);
        }
Exemplo n.º 18
0
        private DataUpdate GetDataUpdate(LmsPerson lmsPerson)
        {
            var dataUpdate = new DataUpdate()
            {
                TraceNumber    = _app.ApplicationId.ToString(),
                ProcessingCode = "ExternalUpdateRequest",
                Source         = "LoanOrigination",
                UpdateAction   = "Add",
                Person         = GetPerson(lmsPerson)
            };

            return(dataUpdate);
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        /// <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);
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        /// <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);
        }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 24
0
        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);
        }
Exemplo n.º 25
0
 /// <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));
 }
Exemplo n.º 26
0
        /// <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));
        }
Exemplo n.º 27
0
        /// <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);
        }
Exemplo n.º 28
0
        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);
        }
Exemplo n.º 29
0
        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);
        }
Exemplo n.º 30
0
        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);
        }