{"version":3,"sources":["components/preQualReview/reviewApplication.module.scss","components/employmentInformation/employmentInformation.module.scss","components/loanView/Dashboard.module.scss","components/accountCreation/accountCreation.module.scss","components/manualAssetInformation/manualAssets.module.scss","components/governmentQuestions/GovernmentQuestions.module.scss","components/loanOfficerView/LoanOfficer.module.scss","components/propertyInformation/propertyInformation.module.scss","components/documents/borrowerView/BorrowerDocument.module.scss","components/borrowerReo/borrowerReo.module.scss","components/userAccount/SignUp.module.scss","components/accountInformation/AccountInformation.module.scss","components/borrowerLiability/BorrowerLiability.module.scss","components/documents/loanOfficer/LoanOfficerDocument.module.scss","components/demographicQuestions/DemographicQuestions.module.scss","components/common/progressTracker/TaskMenu.module.scss","components/documents/documentViewers/documentViewers.module.scss","components/common/shared/zipCode.module.scss","components/common/Layout/MainLayout.module.scss","components/loanOfficerInvite/LoanOfficerInvite.module.scss","components/assetInformation/assetInformation.module.scss","components/additionalIncome/additionalIncome.module.scss","components/preApprovalLetter/preApprovalLetter.module.scss","components/milestoneProgressNavigation/milestoneNavigation.module.scss","components/common/MessageBox.module.scss","components/eConsent/document/eConsentDocument.module.scss","assets/logo/uhm-logo.png","components/common/CustomDatePicker.module.scss","components/systematicLetter/SystematicLetter.module.scss","components/documents/addDocumentSection/AddDocumentSection.module.scss","components/common/Buttons/Buttons.module.scss","components/consumerCreditAuthorization/creditAuthorization.module.scss","components/eVerificationFinicity/assets.module.scss","components/common/ChoiceQuestionButton.module.scss","components/documents/borrowerView/DocumentUpload.module.scss","components/common/ChoiceQuestion.module.scss","components/contactPreference/ContactPreference.module.scss","components/common/Input/SelectDropDown.module.scss","components/common/Layout/LoanOfficerViewLayout.module.scss","components/creditReport/CreditReport.module.scss","assets/infographics/systematicLetter/prequal-letter.svg","components/common/ModalPopup.module.scss","assets/infographics/dashboard/application.svg","assets/infographics/employmentInformation/EmployerInformation.svg","assets/infographics/propertyInformation/address.svg","assets/infographics/employmentInformation/MoreInformationRequiered.svg","assets/infographics/consumerCreditAuthorization/yes-do-not-agree.svg","assets/infographics/creditReport/pending.svg","assets/logo/uhm-logo-stacked.png","assets/icons/document/NoImage.png","assets/infographics/dashboard/documents.svg","assets/infographics/dashboard/progress.svg","assets/infographics/dashboard/LoanOfficer.svg","assets/infographics/dashboard/pre-approval.svg","SessionWatcher.module.scss","components/common/Input/LocationSearch.module.scss","assets/infographics/employmentInformation/AreYouSelfEmployed.svg","assets/infographics/employmentInformation/MonthlyLossOrIncome.svg","assets/infographics/loanOfficerView/ApplicationFeeStatus.svg","components/common/Input/Checkbox.module.scss","assets/infographics/accountCreation/2YearResidency.svg","components/common/infoIconTooltip.module.scss","assets/infographics/employmentInformation/AreYouCurrentlyEmployed.svg","assets/infographics/assetInformation/SelectFinicityorManual.svg","components/common/progressTracker/NotificationMessages.module.scss","assets/infographics/userAccount/calculator-icon.svg","assets/infographics/home.svg","assets/infographics/accountInformation/loan-type.svg","assets/icons/accountInformation/purchase.svg","assets/icons/accountInformation/refinance.svg","assets/infographics/accountInformation/primary-residence.svg","assets/infographics/accountInformation/second-home.svg","assets/infographics/accountInformation/investment.svg","assets/infographics/accountInformation/single-family.svg","assets/infographics/accountInformation/multi-unit.svg","assets/infographics/accountInformation/condo.svg","assets/infographics/accountInformation/lower-monthly-payment.svg","assets/infographics/accountInformation/pay-mortgage.svg","assets/infographics/accountInformation/cash-out.svg","assets/infographics/accountInformation/multi-unit-count.svg","assets/infographics/accountInformation/closing-date.svg","assets/infographics/accountInformation/borrower-info.svg","assets/infographics/accountInformation/account-creation.svg","assets/infographics/eConsent/girlWithPurpleFolderAndGreenPaper.svg","assets/infographics/eConsent/girlWithPurpleDressAndSpiralsAroundHer.svg","components/eConsent/main/eConsent.module.scss","assets/infographics/accountCreation/current-address.svg","assets/infographics/accountCreation/coborrowerinformationPrompt.svg","assets/infographics/accountCreation/former-address.svg","assets/infographics/propertyInformation/funds/checkingSavings.svg","assets/infographics/propertyInformation/funds/giftFunds.svg","assets/infographics/propertyInformation/funds/pendingSale.svg","assets/infographics/propertyInformation/funds/personalInvestmentAccount.svg","assets/infographics/propertyInformation/funds/retirementFunds.svg","assets/infographics/propertyInformation/funds/securedBorrowedFunds.svg","assets/infographics/propertyInformation/loanEstimate.svg","assets/infographics/employmentInformation/StartScreem.svg","assets/infographics/employmentInformation/AreYouAVeteran.svg","assets/infographics/employmentInformation/AreYouActiveDutyMilitary.svg","assets/infographics/employmentInformation/OwnMoreThan25.svg","assets/infographics/consumerCreditAuthorization/do-not-agree.svg","assets/infographics/manualAssetInformation/AccountAddition.svg","assets/infographics/manualAssetInformation/AccountsScreen.svg","assets/infographics/borrowerLiability/CoBorrower.svg","assets/infographics/borrowerLiability/Borrower.svg","assets/infographics/borrowerLiability/Both.svg","assets/infographics/borrowerReo/primary-residence.svg","assets/infographics/borrowerReo/secondary-home.svg","assets/infographics/borrowerReo/investment-property.svg","assets/infographics/borrowerReo/single-family.svg","assets/infographics/borrowerReo/condo.svg","assets/infographics/borrowerReo/multi-unit.svg","assets/infographics/borrowerReo/number-of-units.svg","assets/infographics/borrowerReo/continue-to-own.svg","assets/infographics/borrowerReo/property-address.svg","assets/infographics/borrowerReo/present-market-value.svg","assets/infographics/borrowerReo/owner.svg","assets/infographics/reviewScreen/coBorrower.png","assets/infographics/reviewScreen/realEstate.png","assets/infographics/creditReport/score.svg","assets/infographics/systematicLetter/prequal-landing.svg","assets/infographics/dashboard/appFeePayment.svg","assets/infographics/dashboard/prequalLetter.svg","assets/infographics/dashboard/signDisclosures.svg","assets/infographics/milestoneNavigation/Closed.svg","assets/infographics/milestoneNavigation/CompletingTheApplication.svg","assets/infographics/milestoneNavigation/CreditAnalysis.svg","assets/infographics/milestoneNavigation/ProcessingTheApplication.svg","assets/infographics/milestoneNavigation/ReadyForClosing.svg","assets/infographics/loanOfficerView/ItemSent.svg","assets/infographics/loanOfficerView/ViewCreditReport.svg","assets/infographics/loanOfficerView/AppFeeCollected.svg","assets/infographics/loanOfficerView/CreditReport.svg","assets/infographics/documents/requiredDocs.svg","components/userAccount/UserSignIn.module.scss","store/accountCreationStore.ts","store/WeatherForecasts.ts","reducers/accountInformationReducer.ts","common/BorrowerTypeEnum.ts","common/helper/formatHelper.ts","reducers/accountCreationReducer.ts","store/employmentInformationStore.ts","components/employmentInformation/EmploymentInformationFields.tsx","store/GovernmentQuestionStore.ts","reducers/employmentInformationReducer.ts","reducers/userAccountReducer.ts","reducers/manualAssetInformationReducer.ts","reducers/propertyInformationReducer.ts","reducers/zipCodeLookupReducer.ts","reducers/loanReducer.ts","reducers/additonalIncomeReducer.ts","reducers/navigationReducer.ts","reducers/governmentQuestionReducer.ts","components/demographicQuestions/DemographicFields.tsx","store/Enum.ts","reducers/borrowerLiabilityReducer.ts","reducers/borrowerReoReducer.ts","reducers/reviewApplicationReducer.ts","reducers/demographicQuestionsReducer.ts","store/assetInformationStore.ts","reducers/assetInformationReducer.ts","components/common/progressTracker/TaskStatus.ts","reducers/consumerCreditAuthorizationReducer.ts","reducers/creditReportReducer.ts","reducers/creditInformationReducer.ts","reducers/systematicLetterReducer.ts","reducers/documentReducer.ts","reducers/taskMenuReducer.ts","reducers/dashboardReducer.ts","reducers/milestoneNavigationReducer.ts","reducers/loanOfficerMainTabReducer.ts","reducers/loanUpdateResponseReducer.ts","reducers/countyLookupReducer.ts","reducers/interimLoanSummaryReducer.ts","store/index.ts","store/Counter.ts","common/ActionTypes.ts","components/common/Buttons/NavigationButton.tsx","components/common/Layout/FooterText.tsx","common/CommonMethods.ts","components/common/Buttons/Navigation.tsx","SessionDataTracker.tsx","common/dataFetch.ts","services/taskMenuService.ts","actions/taskMenuAction.ts","services/LoanSummaryService.ts","components/common/Currency.tsx","components/common/progressTracker/TaskMenuHeaders.tsx","components/common/progressTracker/TaskItem.tsx","components/common/progressTracker/SubTaskList.tsx","components/common/progressTracker/TaskList.tsx","components/common/progressTracker/TaskMenu.tsx","components/common/progressTracker/NotificationMessages.tsx","services/accountInformationService.ts","authConfig.ts","SessionWatcher.tsx","services/dashboardService.ts","actions/dashboardActions.ts","components/common/Loader.tsx","components/common/Layout/MainLayout.tsx","components/common/Layout/LoanOfficerViewLayout.tsx","components/common/Infographic.tsx","hooks/useInitialMount.ts","hooks/useNavigation.tsx","interfaces/accountInformationInterfaces.tsx","actions/accountInformationActions.ts","components/Home.tsx","actions/loanUpdateResponseActions.ts","components/common/Buttons/ToolTipToggle.tsx","components/common/ChoiceQuestionButton.tsx","components/common/ChoiceQuestion.tsx","components/accountInformation/LoanPurpose.tsx","components/accountInformation/OccupancyType.tsx","components/accountInformation/PropertyType.tsx","components/accountInformation/Priority.tsx","components/accountInformation/HowManyUnits.tsx","components/accountInformation/ClosingDate.tsx","components/common/Input/Checkbox.tsx","components/common/Input/withReadOnlyWrapper.tsx","components/common/BackgroundTaskTimer.tsx","components/accountInformation/AccountInformation.tsx","components/common/Input/NumberFormatInput.tsx","components/accountInformation/BorrowerInformation.tsx","actions/loanActions.ts","components/common/Enums/BorrowerTypeEnum.tsx","components/eConsent/preview/eConsentPreview.tsx","components/eConsent/document/eConsentAgreementText.tsx","components/eConsent/document/eConsentDialog.tsx","components/common/BottomScrollValidator.tsx","services/eConsentService.ts","components/eConsent/document/eConsentDocument.tsx","services/accountCreationService.ts","actions/accountCreationActions.ts","actions/userAcount.ts","services/interimLoanSummaryService.ts","actions/interimLoanSummaryActions.ts","components/eConsent/main/eConsent.tsx","components/common/useExitPrompt.tsx","components/userAccount/SignIn.tsx","components/accountCreation/AccountCreation.tsx","components/common/CustomYearMonthPicker.tsx","components/accountCreation/AddressConfirmation.tsx","components/common/Input/LocationSearch.tsx","components/common/Input/TextInput.tsx","components/common/Input/SelectDropDown.tsx","components/constants/validation.tsx","services/zipCodeLookupService.ts","actions/zipCodeLookupActions.ts","components/common/shared/ZipCodeSelectionBox.tsx","components/accountCreation/AddressFields.tsx","components/common/CustomDatePicker.tsx","components/accountCreation/BorrowerInformation.tsx","components/accountCreation/AdditionalAddressNew.tsx","components/common/MessageBox.tsx","components/common/shared/AddressFields.tsx","services/propertyInformationService.ts","actions/propertyInformationActions.ts","components/common/Layout/InfographicSideLayout.tsx","components/common/InfoIconTooltip.tsx","components/common/shared/CountySelectionBox.tsx","services/countyLookupService.ts","actions/countyLookupActions.ts","components/common/Enums/EnumManualAsset.ts","components/propertyInformation/PropertyAddress.tsx","services/assetInformationService.ts","actions/manualAssetInformationActions.ts","components/propertyInformation/PropertyInformationFundSourceComparison.tsx","components/propertyInformation/PropertyInformation.tsx","components/propertyInformation/PropertyInformationFundSource.tsx","components/propertyInformation/PropertyInformationRealtor.tsx","components/propertyInformation/TwoChoiceQuestion.tsx","components/propertyInformation/PropertyInformationCurrencyInput.tsx","components/propertyInformation/PropertyInformationPurchase.tsx","components/common/Layout/InfographicTopLayout.tsx","components/propertyInformation/PropertyInformationRefinance.tsx","hooks/useNavigationWithHistory.ts","components/additionalIncome/AdditionalIncomeFields.ts","components/common/Enums/IncomeSource.ts","services/employmentInformationService.ts","actions/employmentInformationActions.ts","components/employmentInformation/QuestionCardNew.tsx","components/employmentInformation/EmployerDetail.tsx","components/employmentInformation/IncomeDetail.tsx","components/employmentInformation/LandingScreen.tsx","components/employmentInformation/CurrentEmployerDetail.tsx","components/employmentInformation/CurrentIncomeDetail.tsx","components/employmentInformation/AdditionalInformationLanding.tsx","components/employmentInformation/ScreenDetails.tsx","components/employmentInformation/EmploymentItem.tsx","components/employmentInformation/EmploymentInformation.tsx","services/additionalIncomeService.ts","components/additionalIncome/AdditionalIncomeInformation.tsx","actions/additionalIncomeActions.ts","components/additionalIncome/OtherIncomeSourceInformationItem.tsx","components/common/NavigationWrapper.tsx","components/governmentQuestions/GovernmentQuestion.tsx","services/governmentQuestionService.ts","actions/governmentQuestionActions.ts","components/governmentQuestions/BorrowerGovernmentQuestionsSection5a.tsx","components/governmentQuestions/BorrowerGovernmentQuestionsSection5b.tsx","components/demographicQuestions/DemographicQuestionDetails.tsx","services/demographicQuestionsService.ts","actions/demographicQuestionsActions.ts","components/demographicQuestions/DemographicQuestion.tsx","actions/assetInformationActions.ts","components/assetInformation/FinicityMessage.tsx","components/assetInformation/AssetInformation.tsx","components/assetInformation/SubmitVoaModal.tsx","components/assetInformation/TrainingVideos.tsx","components/consumerCreditAuthorization/ConsumerCreditAuthorization.tsx","components/consumerCreditAuthorization/CreditAuthorizationDialog.tsx","services/consumerCreditAuthorizationService.ts","actions/consumerCreditAuthorizationActions.ts","components/consumerCreditAuthorization/CreditAuthorizationDetail.tsx","components/manualAssetInformation/ManualAssetFields.ts","common/AccountTypeEnum.ts","components/manualAssetInformation/ManualAssetDetails.tsx","components/manualAssetInformation/ManualAssetInformation.tsx","components/manualAssetInformation/ManualTotalAsset.tsx","components/manualAssetInformation/ManualAssetSummary.tsx","components/common/Enums/EnumLiability.tsx","components/borrowerLiability/BorrowerLiabilityFields.ts","services/borrowerLiabilityService.ts","components/borrowerLiability/BorrowerLiability.tsx","actions/borrowerLiabilityActions.ts","components/borrowerLiability/BorrowerLiabilityItem.tsx","components/borrowerLiability/BorrowerLiabilityList.tsx","components/borrowerReo/AddReoProperty.tsx","services/contactPreferenceService.ts","components/contactPreference/ContactPreference.tsx","services/borrowerReoService.ts","actions/borrowerReoActions.ts","components/borrowerReo/ReoPropertyOwner.tsx","components/common/Enums/MaritalStatusEnum.tsx","components/borrowerReo/ReoPropertiesSummary.tsx","components/borrowerReo/ReoPropertyLanding.tsx","components/eVerificationFinicity/AssetDetails.tsx","components/common/Enums/EnumOccupency.tsx","components/preQualReview/ReviewBorrowerInformation.tsx","components/preQualReview/ReviewAddressInformation.tsx","components/preQualReview/ReviewEmploymentInformation.tsx","components/preQualReview/ReviewAdditionalIncome.tsx","components/preQualReview/ReviewPropertyInformation.tsx","components/preQualReview/ReviewReoInformation.tsx","services/documentService.ts","services/systematicLetterService.ts","actions/reviewApplicationActions.ts","components/preQualReview/ReviewApplication.tsx","components/creditReport/CreditReportScores.tsx","components/creditReport/CreditReportPending.tsx","components/creditReport/CreditReportError.tsx","services/creditReportService.ts","components/creditReport/CreditReport.tsx","components/systematicLetter/SystematicLetter.tsx","actions/creditReportActions.ts","hooks/useInterval.ts","actions/systematicLetterActions.ts","components/systematicLetter/SystematicLetterContent.tsx","components/systematicLetter/SystematicLetterDisplay.tsx","components/documents/models/DocumentStatus.ts","components/documents/loanOfficer/Document.tsx","components/documents/models/DocumentSectionStatus.ts","actions/documentActions.ts","components/documents/models/FileFormat.ts","components/common/ModalPopup.tsx","components/documents/loanOfficer/DocumentSection.tsx","components/documents/loanOfficer/DocumentGroup.tsx","components/documents/loanOfficer/LoanOfficerDocuments.tsx","components/documents/addDocumentSection/AddDocumentSectionOptionList.tsx","components/documents/addDocumentSection/AddDocumentSection.tsx","components/documents/documentViewers/PdfDocumentViewer.tsx","components/documents/documentViewers/WordDocumentViewer.tsx","components/documents/documentViewers/ImageViewer.tsx","components/documents/documentViewers/DocumentViewerActions.tsx","components/documents/documentViewers/DocumentViewer.tsx","actions/milestoneNavigationActions.ts","services/milestoneNavigationService.ts","components/EncompassDown.tsx","components/loanView/LoanViewHeader.tsx","components/loanView/DashboardDetails.tsx","components/common/Enums/EnumMilestoneNavigation.ts","components/milestoneProgressNavigation/DefaultMilestoneDescription.tsx","components/loanOfficerView/LoanOfficerMainTab.tsx","components/milestoneProgressNavigation/LoadScript.tsx","components/milestoneProgressNavigation/MilestoneDescription.tsx","components/milestoneProgressNavigation/MilestoneNavigation.tsx","components/Invitation.tsx","services/loanOfficerMainTabService.ts","actions/loanOfficerMainTabActions.ts","components/loanOfficerView/LOMainTabDocumentViewer.tsx","components/loanOfficerView/LoanOfficerMainTabMessage.tsx","components/loanOfficerView/LoanOfficerPreQualLetterContent.tsx","components/loanOfficerView/LoanOfficerPreQualLetterDisplay.tsx","components/loanOfficerView/MissingAuthorizationAlert.tsx","components/loanOfficerView/MissingPreQualLetter.tsx","components/loanOfficerView/PreApprovalLetterFields.tsx","components/loanOfficerView/LoanOfficerView.tsx","components/loanOfficerView/PreApprovalLetter.tsx","components/preApprovalLetter/BorrowerPreApprovalLetter.tsx","components/documents/borrowerView/Document.tsx","components/documents/borrowerView/DocumentUpload.tsx","components/documents/borrowerView/DocumentSection.tsx","components/documents/borrowerView/DocumentGroup.tsx","components/documents/borrowerView/BorrowerDocuments.tsx","components/documents/EmConsumerConnect.tsx","components/documents/SignDocument.tsx","components/userAccount/UserSignIn.tsx","components/userAccount/UserSignUp.tsx","components/loanOfficerInvite/LoanOfficerInvite.tsx","services/loanOfficerInviteService.ts","components/loanView/MultipleLoanView.tsx","App.tsx","registerServiceWorker.ts","index.tsx","store/configureStore.ts"],"names":["module","exports","BorrowerType","AddressType","unloadedState","forecasts","isLoading","loanPurposeChoice","undefined","userId","occupancyTypeChoice","propertyTypeChoice","closingDateChoice","priorityChoice","howManyUnitsChoice","borrowerFirstName","borrowerMiddleName","borrowerLastName","borrowerNameSuffix","borrowerEmail","borrowerPhoneNumber","initialAccountInformationSubmitted","loanGuid","accountInformationCheck","borrowerType","BorrowerTypeEnum","isNullOrWhiteSpace","value","trim","validateBirthDate","dateString","today","Date","Object","prototype","toString","call","isNaN","getTime","format","isValid","isValidDate","birthDate","age","getFullYear","m","getMonth","getDate","date","test","parts","split","map","p","parseInt","d","toDate","dateDiff","startingDate","endingDate","startDate","toISOString","substr","endDate","swap","startYear","daysInMonth","yearDiff","monthDiff","dayDiff","borrower","firstName","middleName","lastName","suffixToName","phoneNumber","phoneType","emailAddressText","maritalStatusType","currentAddress","formerAddress","taxIdentificationIdentifier","totalMonths","isCoBorrowerSelectionAllowed","borrowerComplete","coBorrower","coBorrowerComplete","oktaNameResult","validation","errorMessage","calculateTotalDuration","additionalAddressList","moveInYear","moveInMonth","totalResidencyMonths","filter","x","residencyType","length","lastAddress","lastAddressDate","currentAddressDate","EmploymentInformationFields","EmploymentInformationQuestions","EmploymentScreensNew","DummyData","id","employmentId","owner","employerName","positionDescription","employmentStartDate","addressCity","addressState","addressPostalCode","timeOnJobTermYears","timeOnJobTermMonths","basePayAmount","overtimeAmount","bonusAmount","commissionsAmount","otherAmount","needAdditionalEmployment","militaryEntitlement","urlA2020StreetAddress","totalAmount","selfEmployedIndicator","currentEmploymentIndicator","borrowerField","Veteran","ActiveMilitaryDuty","CurrentEmploymentDoesNotApply","AdditionalEmploymentDoesNotApply","SelfDeclaredMilitaryServiceIndicator","PreviousGrossMonthlyIncome","PreviousEmploymentDoesNotApply","BasePayAmount","OvertimeAmount","BonusAmount","CommissionsAmount","OtherAmount","employments","name","submittedBorrower","submittedCoBorrower","hasCoBorrower","previousId","getNewEmployment","employmentDetail","index","employmentItemId","currentEmploymentYears","currentEmploymentMonths","totalEmploymnetInMonths","currentEmployer","find","Math","floor","months","tempIndex","currentEmployers","slice","sort","a","b","parse","findIndex","i","item","addNewEmployment","email","hasConsent","initialUserAccountRegistrationInformation","isLoancreated","data","assetType","holderName","accountIdentifier","urla2020CashOrMarketValueAmount","details","assets","systematicAssets","purposeType","city","state","zip","county","workingWithRealtor","realtorCompany","realtorName","realtorPhoneNumber","realtorEmailAddress","buyExistingHome","ownLand","landValue","securedConstructionFinancing","totalAvailableToSpendOnNewHome","downPayment","downPaymentSource","downPaymentPercentage","estimatedLoanAmount","loanTermInYears","address","unitNumber","estimatedCurrentValue","yearPropertyBuilt","taxesPerYear","homeOwnersInsurancePerYear","currentMortgageBalance","estimatedClosingDate","propertyUsageType","monthlyTax","isLoanCompleted","isLoanFromEncompassFlag","interimLoanStagingId","otherIncomeSourceDetails","back","disabled","message","show","onClick","continue","lastResetFromRoute","DemographicFields","UserAccountFields","BorrowerInformation","ReportStatus","intentToOccupyIndicator","homeownerPastThreeYearsIndicator","priorPropertyUsageType","priorPropertyTitleType","urla2020CitizenshipResidencyType","specialBorrowerSellerRelationshipIndicator","undisclosedBorrowedFundsIndicator","undisclosedMortgageApplicationIndicator","undisclosedCreditApplicationIndicator","propertyProposedCleanEnergyLienIndicator","undisclosedComakerOfNoteIndicator","outstandingJudgementsIndicator","presentlyDelinquentIndicatorURLA","partyToLawsuitIndicatorURLA","priorPropertyDeedInLieuConveyedIndicator","priorPropertyShortSaleCompletedIndicator","priorPropertyForeclosureCompletedIndicator","bankruptcyIndicator","isPermanentResidentAlienChecked","isNonPermanentResidentAlienChecked","loanPurpose","submitBorrower","submitCoBorrower","hasAdditionalProperties","currentReoProperty","occupancyType","propertyType","noOfUnits","willContinueToOwnPropertyAfterTransaction","street","marketValue","reoProperties","realEstateDoesNotApply","section","submitCheckFlag","loanFromEncompassMessageFlag","hmdaEthnicityHispanicLatinoIndicator","hmdaEthnicityNotHispanicLatinoIndicator","hmdaEthnicityDoNotWishIndicator","hmdaAmericanIndianIndicator","hmdaAfricanAmericanIndicator","hmdaWhiteIndicator","hmdaRaceDoNotWishProvideIndicator","hmdaGendertypeFemaleIndicator","hmdaGendertypeMaleIndicator","hmdaGendertypeDoNotWishIndicator","borrowerloading","coborrowerloading","TaskStatus","TaskStatusId","TaskItem","SubTaskItem","ProgressNavigationEnum","coBorrowerAssetStatus","authorizedCreditReportIndicator","dateAuthorizedCreditReport","creditReportAuthorizationMethod","showSpinner","status","reportId","borrowerScore","coBorrowerScore","birthday","ssn","showCoBorrower","inputDisabled","selectedTab","expandedSections","loanSummary","isDirty","isPopupFlag","dashboardInformation","loanOfficerFirstName","loanOfficerLastName","loanOfficerEmail","loanOfficerPhone","loanOfficerHeadshot","applicationDate","isPreQualInitiate","borrowerIntendToContinueDate","appFeeComplete","isPreQualComplete","isLoanComplete","documentSubmitted","documentRequested","isEncompassDown","loanOriginationDate","preApprovalLetterFlag","propertyEstimatedValueAmount","actualClosingDate","creditAnalysis","closed","completingTheApplication","processingTheApplication","readyForClosing","posLoanIdentifier","appFeeCollectedStatus","appFeePendingStatus","contactChoices","loanType","creditReports","preApproval","letterStyle","posMaxPurchasePrice","letterName","posAlterPurchasePriceIndicator","timeStamp","preApprovalLetterId","posPreApprovalLetterComments","isRequestedPreApproval","loPreApprovalLetterComments","currentLoanSummary","loanNumber","loanAmount","loanTerm","loanOfficerId","loanPercentage","loanStatus","loanOfficerDetail","phone","slugId","reducers","counter","incomingAction","count","type","weatherForecasts","action","startDateIndex","accountInformation","closingDate","priority","howManyUnits","nameSuffix","userAccountInformation","zipCodeLookUp","accountCreation","PrimaryBorrower","addressType","CurrentAddress","addresses","propertyName","printOnAdditionalBorrowerPage","copyItems","push","splice","CoBorrower","addressStreetLine1","applicantType","mailingAddressIndicator","coBorrowerAddressChecked","adddres","forEach","copyValidation","validationError","field","propertyInformation","parseFloat","downPaymentAmount","Number","toFixed","fieldValue","isNumericalValue","streetValue","cityValue","stateValue","zipValue","estimatedLoanValue","employmentInformation","val","includes","copyItem","currentEmployment","StartDate","tempEmployments","newItem","lastId","from","lastOrDefault","activeMilitaryDuty","additionalEmploymentDoesNotApply","previousEmploymentDoesNotApply","currentEmploymentDoesNotApply","previousGrossMonthlyIncome","selfDeclaredMilitaryServiceIndicator","veteran","defualtData","navigation","newState","onBackClick","isDisabled","backwardString","forwardString","loan","additionalIncome","description","isNew","additionaIIncome","otherIncomeSource","otherIncomeSourceId","list","manualAssetInformation","Assets","copyData","governmentQuestions","result","borrowerLiability","newLiability","liabilityDetails","liability","liabilityId","borrowerReo","loading","reoType","allReoProperties","reo","demographicQuestions","SectionEthnicity","SectionRace","hmdaPacificIslanderIndicator","SectionSex","assetInformation","creditReport","InProgress","consumerCreditAuthorization","authorizedMethod","creditInformation","borrowerSSN","coBorrowerLastName","borrowerBirthday","coBorrowerFirstName","coBorrowerBirthday","coBorrowerSSN","isBorrower","reviewApplication","copySection","document","isOpen","sectionId","distinct","toArray","tabIndex","systematicLetter","taskMenu","propertyCity","propertyState","propertyZip","loadingType","dashboard","milestoneNavigation","Completed","loanOfficerMainTab","reports","countyLookUp","loanUpdateResponse","interimLoanSummary","ArrowDirection","Footer","IsNarrator","JSON","localStorage","getItem","NavigationButton","props","useSpeechSynthesis","speak","cancel","className","styles","navigationButton","arrowDirection","Left","icon","faArrowCircleLeft","onMouseOut","onMouseOver","text","Right","faArrowCircleRight","Navigation","isDashboardPage","useLocation","pathname","indexOf","backMsg","isMultipleLoan","getBackText","spacer","SessionDataTracker","expireTime","countDownTime","oktaTokens","loEmail","intervalId","callBackFunction","stopTimer","clearInterval","config","tokens","startTimer","nextExpireTime","currentTime","round","setInterval","setTimerCallback","callBack","clear","http","request","fetch","response","ok","json","parsedBody","getHeaders","contentType","headers","Authorization","SessionInfo","accessToken","clientId","get","path","args","method","Request","getBlob","responseType","axios","post","body","stringify","submissionData","getSubTaskMenuLoanStatus","updateNavigationStatus","taskItemId","subTaskItemId","taskStatusId","subTaskStatusId","getLoanCompletedStatus","TaskMenuCreators","GetSubTaskItemLoanStatus","dispatch","taskMenuService","then","Error","receive","borrowerLoanSummary","guid","loanSummaryService","receiveBorrowerInfo","catch","setLoanIsDirty","setDocumentPopupFlag","deleteNavigationStatus","console","error","Currency","displayType","thousandSeparator","decimalSeparator","decimalScale","fixedDecimalScale","prefix","connect","mapStateToProps","TaskMenuActions","React","menuBorrowerDetails","application","listDetails","location","history","useHistory","useSelector","getStatusConst","NotStarted","faExclamationCircle","faSpinner","faCheckCircle","Failed","faExclamation","assignClass","notStated","inProgress","completed","failed","currentRootNav","rootNav","currentQueryString","rootQueryString","isTaskSelected","isSubTaskSelected","isMultipleSubtasks","isSubtask","ManualAssetInformation","AssetDetails","Asset","AddReoProperty","ReoPropertiesSummary","ReoProperties","CreditReport","CreditAuthorization","CreditInformation","navigateRoute","routeName","isClicked","isEnabled","active","inactive","subTaskStatus","taskStatus","SubTaskList","div","subtaskContainer","subtaskList","taskItem","subTasks","subTaskItem","key","subTaskName","queryParameter","taskMenuItems","TaskItemEnum","AccountInformation","open","singleTaskItem","tasklist","backtodashboard","event","preventDefault","to","parentli","multiTaskItem","TaskMenu","this","setState","isNavigationClicked","setNavigationClicked","native","opacity","transform","duration","nav","uhmTaskMenu","toggleButton","toggleMenu","tasklistmenuBg","taskListMenu","style","NotificationMessages","notificationMessages","messages","msg","notification","create","account","signIn","borrowerTypeEnumVal","createUserLoanDetailInformationEntry","validateLoanGuid","checkIsEncompassDown","signOut","readIsLoanFromEncompass","UpdateUserOktaAccount","emailAddress","oktaConfigAsync","appConfigAsync","cfg","OktaWidget","SessionWatcher","displayWarning","setDisplayWarning","timer","setTimer","useOktaAuth","authState","oktaAuth","displayWarningRef","current","refreshTokens","tokenManager","setTokens","renew","setAuthStateSessionData","expiresAt","logout","accountInformationService","log","authStateManager","unsubscribe","window","reload","handleSessionTimeout","timeRemain","secondsSinceActive","getLastActiveTime","subscribe","isAuthenticated","useIdleTimer","timeout","idleTimeOut","onIdle","onActive","onAction","debounce","getRemainingTime","Modal","centered","ModalHeader","ModalBody","modalBody","ModalFooter","button","dashboardActionCreators","getState","dashboardService","res","receiveNotificationMessages","Loading","getUserNotificationMessages","showUserInfo","setShowUserInfo","showNotifications","setShowNotifications","url","setUrl","percentage","setPercentage","completedItems","totalItems","setTotalItems","userProfileUrl","setUserProfileUrl","useDispatch","isUserAuthenticated","setLoading","actions","bindActionCreators","useEffect","profileUrl","issuer","replace","PosConstant","OpenRefinanceCalculator","showNavigationAndHeaders","isMultipleLoanExist","tasks","completedTasks","percentageCalc","toggleNotifications","isMultipleLoanPage","secured","classList","remove","appContainer","afterLogin","topHeader","loanViewHeader","defaultTopHeader","add","menuButton","menuVisibility","logo","src","UhmLogo","alt","headerProgress","progressBox","progressDiv","width","progress","CalculatorIcon","cursor","title","profileDetail","notificationList","noNotification","dropDownMenu","signout","borderedBackground","contentContainer","children","goBack","footer","FooterText","LoanOfficerViewLayout","Infographic","useInitialMount","isFirst","useRef","useNavigation","onInitialized","isInitialMount","useState","onResetFromRoute","setOnReset","hasCalledInit","setHasCalledInit","ClearBackOnClick","ResetContinue","ResetNavigation","SetBackOnClick","SetContinueDisabled","ShowContinue","OnResetFromRoute","HideNavigation","RenameNavigation","AccountInformationInterfaces","LoanPurposeChoices","OccupancyTypeChoices","PropertyTypeChoices","ClosingDateChoices","PriorityChoices","HowManyUnitsChoices","accountInformationActionCreators","updateBorrowerFirstName","AccountInformationActions","updateBorrowerLastName","updateBorrowerEmail","setLoanGuid","setBorrowerType","toggleValue","setToggleValue","search","queryStringValues","queryString","values","isUndefined","login","textToSpeech","stopSpeech","setItem","postLogoutRedirectUri","isNullOrUndefined","defaultChecked","icons","onChange","e","target","checked","homeIllustration","loanUpdateResponseActionCreators","setIsEncompassDown","ToolTipToggle","toggleContainer","isToggled","tooltipToggle","isActive","noTooltip","ChoiceQuestionButton","toggle","setToggle","showFront","setShowFront","useSpring","mass","tension","friction","cardStyle","card","choice","noIcon","toolTipText","hasNoTooltip","cardMain","cardContent","iconContainer","cardContTitle","cardBack","display","interpolate","o","t","setTimeout","stopPropagation","toggleToolTip","ChoiceQuestion","scrollTo","choices","infographic","intro","isIntroRequired","requiredMsg","question","isQuesRequired","full","LoanPurpose","loanPurposeChoices","setLoanPurposeChoices","loadSvg","purchaseIcon","refinanceIcon","updateLoanPurposeChoice","selected","loanTypeGraphic","OccupancyType","occupancyTypeChoices","setOccupancyTypeChoices","primaryResidenceGraphic","secondHomeGraphic","investmentGraphic","updateOccupancyTypeChoice","PropertyType","propertyTypeChoices","setPropertyTypeChoices","singleFamilyGraphic","multiUnitGraphic","condoGraphic","updatePropertyTypeChoice","Priority","priorityChoices","setPriorityChoices","lowerMonthlyPaymentGraphic","payOffMortgageFasterGraphic","takeCashOutOfMyHomeGraphic","updatePriorityChoice","HowManyUnits","howmanyUnits","Two","updateHowManyUnitsChoice","accountInfoStyles","Three","Four","ClosingDate","closingDateChoices","setClosingDateChoices","updateClosingDateChoice","closingDateGraphic","Checkbox","setChecked","checkBoxLabel","customCheckbox","ref","reference","label","AccountInformationStep","withReadOnlyWrapper","compose","isReadOnly","Component","rest","NumberFormatInput","htmlFor","placeholder","ErrorMessage","invalidField","useForm","register","handleSubmit","errors","isEmailDuplicate","setEmailDuplicate","numbers","setNumbers","modal","setModal","accountInfo","pattern","phoneNumberPattern","inputField","click","returnDisabled","updateFirstName","updateMiddleName","updateBorrowerMiddleName","updateLastName","updateNameSuffix","updateBorrowerNameSuffix","updateEmail","returnFocusAfterClose","onSubmit","submitInitialAccountInformation","noValidate","basicInfo","formGg","splitCol","defaultValue","required","maxLength","labelWithSubText","subText","input","onValueChange","formattedValue","updateBorrowerPhoneNumber","errmsg","consentContainer","consentFlexContainer","consentText","authCheck","borrowerInfoGraphic","loanActionCreators","callExecuteTask","TriggerOnceImmediate","Initialize","_loanGuid","BackgroundEngine","InitializeAndRun","updateUserId","IsLoading","LoanUpdateResponseActions","setInterimLoanStagingId","setIsLoanFromEncompassFlag","setIsLoanCompleted","isSuccessfullySubmitted","setSuccessfullySubmitted","loanPurposeParam","currentStep","changeStep","isError","setIsError","setIsLoading","getLookups","change","step","PriorityChoice","onContinue","escapeBorrowerInfoAndCreateLoan","borrowerEmailAddress","purchaseClosingDate","refinancePriority","isUserLoggedIn","loanOfficerLoginId","loanPurposes","occupancyTypes","propertyTypes","purchaseClosingDates","refinancePriorities","renderTemplate","accountInfoPage","backPage","accountCreationInfographic","EConsentPreview","advance","largeIcon","EConsentAgreementText","ConsentDialog","closeModal","doNotWantToConsent","hasClosedDialog","eConsentModal","contentClassName","eConsentModalContent","modalIcon","Button","NoButton","BottomScrollValidator","listInnerRef","reachedBottom","setReachedBottom","hasReachedBottom","onScroll","scrollTop","scrollHeight","clientHeight","eConsent","hasConsented","LoanGuid","UserHasConsented","InterimLoanStagingId","UpdateSsnFields","EConsentDocument","isEConsented","setEConsent","readAgreement","setReadAgreement","showDialog","setShowDialog","showLoading","setShowLoading","saveEConsent","hasError","setUserConsent","dialogResponse","updateSsnFieldInEncomapss","consentQuestionLabel","docContainer","docText","buttons","borrowerDto","userType","userTypeEnum","updateBorrowerInformationAsync","accountCreationActionCreators","updateAddressMoveInDate","year","month","updateBorrowerProperty","updateBorrowerAddressProperty","AddAddressProperty","EditAddressProperty","DeleteAddressProperty","UpdateOktaResult","SetAddressSameAsBorrower","getBorrowerInformation","accountCreationService","UpdateBorrowerInformation","borrowerInformation","setValidation","ResetFormerAddress","updateBorrowerCurrentState","userAcountActionCreators","readLoanSummary","ReadLoanOfficerDetailByInterimLoanStagingAsync","interimId","interimLoanSummaryActionCreators","stateData","coborrowerInformation","interimLoanSummaryList","getDashboardDetails","updateUserConsent","userAcountActions","getInterimLoanSummary","setCurrentInterimLoanSummary","updateUserFirstName","updateUserLastName","accountCreationActions","setStep","showPreview","setShowPreview","showDoc","setShowDoc","navigateToNextStep","nextStep","eConsentContainer","initBeforeUnLoad","showExitPrompt","onbeforeunload","shouldPrompt","returnValue","useExitPrompt","setShowExitPrompt","setValue","setPromptValue","enablePrompt","onload","onunload","delay","start","sleep","AccountCreationStep","updateUserBorrowerType","updateUserEmail","setInterimLoanSummary","signInError","setSignInError","signInErrorMsg","setSignInErrorMsg","prompt","navigateToeConsent","returnBorrowerTypeEnum","param","setCookie","cookies","Cookies","endOfTimeDate","set","expires","loanCreation","signInAndNavigateToNextStep","payload","userInfo","firstname","lastname","invitation","qs","registerNewLoan","IsLoginLoanCreation","userInfoFromDb","loanId","consentStatus","Borrower","isLoanLocked","lockedBy","retrySignIn","processLogIn","getUser","user","CustomYearMonthPicker","Array","keys","reverse","years","setIsOpen","datePickerStyles","customDatepicker","customYearMonthpicker","focusSelectedMonth","placeholderText","dateFormat","popperPlacement","renderCustomHeader","changeYear","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","datePickerHeader","aria-hidden","dropDownStyles","selectDropDown","datepickerYears","getYear","handleChange","yearChange","option","maxDate","showMonthYearPicker","calendarIcon","ownProps","AccountCreationStore","setMonthValid","birhtDay","AccountCreationActions","updateErrorMessage","setDate","selectedDate","heading","addressConfirmation","color","defaultYear","defaultMonth","currentAddressInfographic","LocationSearchInput","setAddress","setStoreAddress","addresssFieldName","customType","setFullAddress","onSelect","placeID","geocodeByPlaceId","results","correctAddress","addressComponents","address_components","streetNumber","types","long_name","streetName","short_name","onError","getInputProps","suggestions","getSuggestionItemProps","locationSearch","sugg","suggestionBg","suggestion","backgroundColor","formattedSuggestion","mainText","secondaryText","TextInput","rule","handleValidation","trigger","triggerChange","errorInfo","onBlur","invalidclass","SelectDropDown","noArrow","ValidationMessage","Rule","EmailValidation","NumberValidation","PasswordValidation","SpaceValidation","DecimalValidation","SsnValidation","getZipCodeDetail","zipCode","getZipCodeByCityState","zipdetail","handleError","zipCodeLookupActionCreators","ZipCodeLookupService","zipDetail","ZipCodeSelection","selection","changeSelection","rows","zipDetails","c","cityTable","activeCity","cityName","stateCode","zipSelectionBox","tableContainer","Table","saveButton","onSelection","onCancel","clearZipDetails","showCitySelectionBox","cityBoxToggle","showZipSelectionBox","zipBoxToggle","setZipCode","setCity","enteredField","setFieldName","onCityBlur","toUpperCase","inputGroupMedium","FormGroup","Label","inputGroupSmall","onStateBlur","join","onZipBlur","CustomDatePicker","range","changeMonth","datepickerMonth","onDateChange","onClickOutside","customInput","guide","mask","onInput","setBorrowerValid","currentBorrower","birthdatemsg","setBirthdatemsg","validateBorrower","borrowerForm","minLength","invalidInput","optionalMsg","formattedPhoneNumber","AsYouType","handlePhoneInput","inputGroupLarge","seprator","inputGroupXLarge","coBorrowerCheckbox","customCheckBox","CoBorrlocationSearch","LocationSearch","convertedDate","isValidBirthDate","setComplete","priorAddresses","getAddressChecked","selectData","_uniqueId","indexId","editMode","durationTermYears","durationTermMonths","selectPriorData","currentFormerAddress","updateEditMode","updateCurrentFormerAddress","priorFormerAddress","updatePriorFormerAddress","setMonth","setYear","addNewAddress","priorDate","currentDate","validateAdditionalAddress","currentAddressMoveIn","previousAddressMoveIn","resetAddress","inputGroup","AdditionalAddressLocation","addressMove","addResetMonthYear","addResetBG","data1","resetAddressClick","infographicSidePanel","formerAddressBG","customCheckBoxAdditionalDiv","customlabelAdditionalDiv","customCheckBoxAdditional","FormerAddress","totalMonth","tableBG","tableRow","addressColumn","dateColumn","buttonColumn","alert","editAddress","deleteAddress","formerAddressImages","formerAddressInfographic","MessageBox","closeMsgBox","close","modalHeader","now","Fields","borrowerValid","isborrowerComplete","setborrowerComplete","isCoborrowerComplete","setCoborrowerComplete","monthValid","showResetEConsentMessage","setShowResetEConsentMessage","isBack","needAddtionalCoBorrowerAddress","CoBorrowerAdditionalAddress","CoBorrowerAddressConfirmation","CoBorrowerInformation","CoBorrowerPrompt","needAddtionalAddress","AdditionalAddress","AddressConfirmation","needAdditionalAddress","resetFormerAddress","borrType","durationCalculation","updateNavigation","saveBorrowerInformation","Finished","CoborrowerFinished","borrowerData","eConsentResponse","prev","currentBorrowerType","onBack","previousStep","showContinue","callNextStep","AskAdditionalAddress","AskCoBorrowerAdditionalAddress","gotoEConsent","accountCreationPage","landingContainer","additionalAddressInfographic","coBorrowerLandingInfographic","save","propertyInformationActionCreators","updatePropertyInformationField","updateAddressFields","calculateEstimatedLoanAmount","getPropertyInformation","propertyInformationService","updatePropertyInformationState","InfographicSideLayout","Tooltip","tooltip","data-has-tooltip","aria-describedby","iconClass","data-tooltip","tooltipText","CountySelection","countyDetails","countyDetail","countyCity","countyName","countyStateCode","getCountyDetail","countyLookupActionCreators","CountyLookupService","EnumManualAsset","cityStateSelectionModalEntries","setCityStateSelectionModalEntries","postalCodeSelectionModalEntries","setPostalCodeSelectionModalEntries","cityStateCountySelectionModalEntries","setCityStateCountySelectionModalEntries","postalCode","lastValidCity","setLastValidCity","lastValidState","setLastValidState","lastValidPostalCode","setLastValidPostalCode","setLastValidCounty","isCityStateValid","setIsCityStateValid","isPostalCodeValid","setIsPostalCodeValid","lastModifiedField","setLastModifiedField","handleOnValidChange","onValidChange","fetchZipCodeByCityState","cityQuery","stateQuery","ZipCodeLookUpService","fetchZipCodeDetail","postalCodeQuery","fetchCountyDetail","CountyLookUpService","validateCityState","validatePostalCode","validatePostalCodeforCounty","isNullOrEmpty","isAddressValid","allFieldsEmpty","allFieldsNotEmpty","validateAddress","City","State","PostalCode","cityFieldName","stateFieldName","postalCodeFieldName","validateAddressCounty","isCountyFlag","countyZipCode","onModalSelection","onLoading","newValues","onPostalCodeBlur","countydetail","zipCodeDetails","isloanCompleted","countyFieldName","County","onCountyModalSelection","PropertyAddress","isAddressSameAsBorrower","isSameAsBorrower","setIsSameAsBorrower","includeAddress","setIncludeAddress","showSameAsBorrowerCheckbox","setShowSameAsBorrowerCheckbox","setFormat","borrowerCurrentAddress","handleZipCode","updatePropertyInformationValue","isValidAddress","onValidateAddressChange","addressDetails","addressFieldContainer","grid","setFromLocationSearch","numberFormat","addressUnitIdentifier","getAll","updateAsset","manualAsset","updateProgressTracker","hasCoborrower","getAssetFinicityInformation","requestEncompassAsset","createAsset","ManualAssetInformationActionCreators","updateManualAssetProprty","removeManualAssetFromState","GetManualAssetFromState","getAssetInformation","interimLoanStagingid","assetInformationService","setAssetsInformation","getAssetInformationFromEncompass","createManualAssetInformation","responseValue","removeAssetFromInterim","removeAsset","isSuccessful","getSystematicAsset","PropertyInformationStep","PropertyInformationFundSourceComparison","showMessage","setShowMessage","finicityInfo","setFinicityInfo","assetTypes","setAssetTypes","ManualAssetCreators","getFinicity","select","returnAssetTypes","selectedType","CheckingSavings","RetirementFund","EquityOnPendingSale","SecuredBorrowedFunds","StocksAndBonds","GiftFunds","getApplicableAssetTypesForSource","source","onModalClose","applicableTypes","borrowerUsedFinicity","coBorrowerUsedFinicity","any","noValidAssetsForDownPaymentSource","modalFooter","PropertyInformationFundSource","selectedValue","setSelectedValue","cardClicked","downPaymentSourceChoices","checkingSavings","RetirementFunds","retirementFunds","pendingSale","securedBorrowedFunds","personalInvestmentAccount","giftFunds","fundSourceContainer","emitValueSelection","PropertyInformationRealtor","PropertyInformationActions","isInvalid","String","toLowerCase","disabledRealtor","realtorRow","TwoChoiceQuestion","twoChoiceButtonContainer","optionOne","optionTwo","PropertyInformationCurrencyInput","largerInputText","parameterName","PropertyInformationPurchase","propertyAddressValid","setPropertyAddressValid","setDisabledRealtor","PropertyLocation","RealtorQuestion","DownPaymentSource","LoanValueAndTerm","propertyInformationMarkup","addressInfographic","homeOptionButtonRow","errmsgRefinance","inputRangeQuestionRow","questionItem","sliderAnswerItem","sliderAndInput","inputRangeItem","slider","min","max","or","inputRangeValue","errorMSG","loanEstimateInfographic","estimatedLoanContainer","largeText","InfographicTopLayout","PropertyInformationRefinance","EPSILON","Address","RefinanceQuestions","setSaveOnContinue","setContinueDisabled","useNavigationWithHistory","initalValue","stepHistory","changeStepHistory","isAtInitialStep","setIsAtInitialStep","previous","ChangeStep","CurrentStep","StepHistory","IsAtInitialStep","OtherIncomeSourceFields","IncomeSource","PropertyInformation","saveTriggered","setSaveTriggered","isReadyToSave","setIsReadyToSave","savePropertyInformation","startSaveProcess","resetContinue","getEmploymentInformation","updateEmploymentInformation","borrowerEmploymentInformationDto","updateEmploymentQuestionnaireToInterimLoanStaging","SubmittedEmploymentInformation","employmentInformationActionCreators","employmentInformationService","UpdateEmploymentInformationProperty","AddEmploymentItem","DeleteEmploymentItem","SubmitEmploymentInformation","BorrowerEmploymentStore","ResetEmploymentItem","updateEmploymentInformationState","ReIndexingEmployment","QuestionCard","disableContinueButton","info","updateProperty","fieldName","CurrentEmploymentIndicator","currentScreen","AdditonalSelfEmployment1","Owner","keyword","OwnershipInterestType","SelfEmployedIndicator","EmploymentMonthlyIncomeAmount","SelfEmployed","moveFrwdBackwrd","getPreviousEmployment","UpdateBackClick","CurrentlyEmployed","OwnerShipShare","MonthlyIncome","changeScreen","Landing","AdditionalGrossMonthlyIncome","PreviousGrossMonthlyIncome1","AdditionalEmployment","AdditonalSelfEmployment","currentEmploymentList","employmentData","perviousEmployer","PastIncomeDetail1","prevScreen","IncomeDetail","skipScreen","employerIndex","perviousEmployer1","EmployerDetail","PastEmployerDetail1","nextScreen","PastEmployerDetail","employementinfo","header","incomeInput","zipFormat","setZipFormat","setMaxDate","maxCurrentDate","setMaxCurrentDate","invalidDate","setInvalidDate","fieldname","emp","form","EmployerName","PositionDescription","StreetAddress","cityStateZip","AddressState","AddressCity","AddressPostalCode","howlongQuestion","yearsMonthRow","TimeOnJobTermYears","floatValue","total","updateTotal","TotalAmount","incomeDetailBg","infographicSideLayoutContainer","incomeDetailRow","borrowerName","StartScreenSvg","setDisabled","content","empList","MoreInformationRequiredSvg","infographics","AreYouAVeteran","ActiveMilitaryDutySvg","CurrentEmployment","CurrentlyEmployedSvg","SelfEmployedSvg","OwnerShipShareSvg","MonthlyIncomeAmount","MonthlyIncomeSvg","EmployerDetailSvg","PreviousAdditionalInformationLanding","AdditionalSelfEmployment","PastIncomeDetail","AdditionalInformationLanding","GetScreenDetail","screen","EmploymentInformationActions","memo","updateEmploymentItemId","employmentIndex","setEmploymentIndex","updateHeader","previousEmployment","isBackClick","veteranInfo","activeMilitaryDutyInfo","currentlyEmployedInfo","selfEmployedInfo","ownerShipShareInfo","monthlyIncomeInfo","additonalSelfEmploymentInfo","additionalGrossMonthlyIncomeInfo","additonalSelfEmployment1Info","previousGrossMonthlyIncome1Info","setValidationMessage","updateBorrowerComplete","updateCoBorrowerComplete","currentEmployerData","isRequiredPriorEmployment","isRequired","addNewItem","currentEmployment1","validateCurrentEmploymentData","deleteCurrentEmployer","SetInfo","currentEmploymentDetails","employment","vquestionContainer","employerFormbox","hide","deleteButton","employerFormContainer","addCurrentEmployer","addMoreBtn","currentEmploymentIncomeDetails","updateBorrowerType","updateCurrentBorrower","GetDetails","fetchEmpData","saveBorrowerEmployment","saveCoBorrowerEmployment","w100","AdditionalIncomeStep","upsertAsync","updateAdditionalIncomeStatus","AdditionalIncomeActionCreators","additionalIncomeService","addOtherIncomeSourceToState","updateOtherIncomeSourceField","removeOtherIncomeSourceItemList","appState","handleAdditionalIncomeFieldChange","OtherIncomeSourceId","removeOtherIncomeSourceFromState","handleInputChange","otherIncomeSourceDetail","incomeSourceCard","additionaIIncomeInfo","closeButton","twoColsGrid","Description","dropdownclass","entries","MonthlyAmount","monthlyAmount","NavigationWrapper","OnInitialize","OnBackClick","OnContinueClick","IsContinueDisabled","GovernmentQuestionsStep","AdditionalIncomeInformation","unlisten","speakText","textToSpeak","SpeechSynthesisUtterance","speechSynthesis","stopSpeaking","moveToEmployment","IsCoborrowerPresent","moveToAsset","setOwner","BorrowerAdditonalIncomeStatus","CoBorrowerAdditonalIncomeStatus","isContinueDisableBorrower","borrowerAdditionalIncomeStatus","validateOtherIncomeSoureList","isContinueDisableCoBorrower","coBorrowerAdditionalIncomeStatus","addEmptyOtherIncomeSource","additionalIncomeDetail","validateAdditionalData","additionalIncomeValid","addOtherIncomeSourceItembtnClick","EmptyOtherIncomeSourceDetail","setBorrowerAdditionalIncomeStatus","setCoBorrowerAdditionalIncomeStatus","moveBack","tt","bind","listen","isLoadingAdditionalIncome","emptyaddOtherIncomeSourceDetail","SetBackClick","removeOtherIncomeSourceItemListFromState","otherIncomeSourceDetailList","navigateToPropertyInfo","additionalIncomePage","additionalIncomeCardRow","display_table","display_cell","income_source","addmoreButtonRow","coborrowerName","textAlingLeft","hasData","getAdditionalIncomeInformation","getGovernmentQuestion","updateGovernmentQuestion","govermentQuestionDto","submitGovernmentQuestions","governmentQuestionActionCreators","updateGovernmentQuestions","updateGovernmentAdditionalQuestions","updateBorrowerCompleted","submittedGovernmentQuestions","governmentQuestionService","GovernmentQuestionStore","getGovernmentQuestions","setGovernmentQuestions","updateToInterim","GovernmentQuestionActions","getGovernmnetQuestions","setCheckbox","textCenter","borrowerQueForm","borrowerQuecontainer","answerButton","greenBoxBtn","borrowerGovtActiveContainer","selectOption","gvtQuecheck","setBorrowerSection5bValid","DemographicQuestionStep","isCoBorrowerPresent","BorrowerGovermentQuestionSection5a","coBorrowerValid","setCoBorrowerValid","borrowerSection5bValid","coBorrowerSection5bValid","setCoBorrowerSection5bValid","CoBorrowerGovermentQuestionSection5a","BorrowerGovermentQuestionSection5b","CoBorrowerGovermentQuestionSection5b","setBorrowerCompleted","saveBorrowerQuestions","saveCoBorrowerQuestions","changeStepAfterSaveBorrowerQuestion","updateGovernmentQuestionInterim","governmentQuestionsPage","updateDemographicQuestions","demographicQuestionsActionCreators","demographicQuestionsService","setValid","DemographicQuestionsActions","getDemographicQuestions","validateData","valid","mb0","demographicQuestionForm","greenlable","questionContainer","questionCheck","HispanicLatino","NotHispanicLatino","ethnicityDoNotWishProvide","AmericanIndianIndicator","AfricanAmericanIndicator","PacificIslanderIndicator","WhiteIndicator","RaceDoNotWishProvideIndicator","GendertypeFemale","GendertypeMale","GendertypeDoNotWishProvide","submitDemographicQuestions","CoBorrowerDemographicQuestion","BorrowerDemographicQuestion","saveDemographicQuestionDetails","demographicQuestionsPage","Step","demographicQuestionService","assetInformationActionCreators","FinicityMessage","AssetInformationStep","finicity","SubmitVoaModal","showLoader","setShowLoader","popupBlocker","borrowerAsset","submitted","finicityConnectUrl","videos","TrainingVideos","popoverOpen","setPopoverOpen","Popover","placement","popover","PopoverBody","popoverbody","closButton","ConsumerCreditAuthorizationStep","updateBorrowerAssetProperty","assetInformationAction","SubmitBorrowerAssetInformation","UpsertAsyncsystematicInformation","updateCoBorrowerAssetStatus","SystematicOrManualEntry","assetInformationStore","showConfirmation","setShowConfirmation","showError","setShowError","errorMessages","setErrorMessages","assetInfo","loanInfo","setLoader","BorrowerWishQuestion","CoBorrowerSystematicOrManualEntry","updateCoBorrowerAssetStatusByBorrower","BorrowerREO","AssetInformation","CoBorrowerAssetInformation","assetInformationPage","manualInfo","entertheInfo","connectUrl","errMsgs","CreditAuthorizationDialog","eConsumerCreditAuthModal","eConsumerCreditAuthModalContent","doNotAgreeInfoGraphic","buttonWidth","updateConsumerCreditAuthorization","creditAuthorizationDto","updateConsumerCreditAuthLoanDetailData","createAndSubmitAuthorizationFile","getConsumerCreditAuthorizationStatus","consumerCreditAuthorizationActionCreators","consumerCreditAuthorizationService","loding","updateCreditAuthorizationProperty","ConsumerCreditAuthorizationActions","getConsumerCreditAuthorization","updateCreditReportIndicator","saveCreditAuthorization","Promise","all","verifyCreditInformation","landingTitle","verificationResult","BorrowerAuthorizationPage","CoBorrowerAuthorizationPage","creditAuth","ManualAssetFields","AccountTypeEnum","VerifyCreditAuthorization","creditAuthorizationPage","yesNotAgreeGraphic","ManualAssetStep","isDisable","isLoanComplated","HolderName","AccountIdentifier","Urla2020CashOrMarketValueAmount","manualAssetsDetails","inputRow","AssetType","Other","disabledInput","marginAuto","otherAssset","manualAssetsImg","AccountAddition","total2","summaryContainer","allassets","manualtotalContainer","summaryRow","entryData","entryDataCustomize","entryContainer","asset","editIcons","pr0","manualTotalImg","AccountsScreen","editAsset","deleteAsset","systematicAsset","manualasset","summaryRowAsset","depositoryRequestDate","padEnd","faEdit","faTrash","systematicasset","EnumLiability","BorrowerLiabilityFields","manualAssetInfo","manualAssetList","manualAssetInformationdetail","ManualTotal","ManualAssetForm","ManualSummary","manualAssetPage","addCartBtn","BorrowerLiabilityStep","additionalLiabliltiy","deleteLiability","borrowerLiabilityActionCreators","borrowerLiabilityService","emptyliabilityDetail","liabilityType","monthlyPaymentAmount","unpaidBalanceAmount","detail","addLiabilityToState","updateBorrowerLiabilityField","handleLiabilityFieldChange","isChildSupport","setChildSupport","activeIndex","setActiveIndex","liabilityDetail","checkValid","LiabilityType","returnInfographic","borrowerInfographic","coBorrowerInfographic","Both","bothInfographic","newLiabilitycard","newLiabilityRow","rowColumn","marketValueInput","UnpaidBalanceAmount","MonthlyPaymentAmount","verticalAlignMiddle","cursorPointer","boxActive","box","BorrowerLiabilityList","returnLiabilityType","ChildCare","ChildSupport","HomeEquityLineofCredit","Installment","LeasePayments","MortgageLoan","Open30DayChargeAccount","OtherLiability","Revolving","cardTile","borrowerLiabilityList","closeTile","tileInfo","editLiability","tilePriceInfo","AddReoPropertyStep","BorrowerLiability","addLiabilityItem","editId","isEdit","BorrowerLiabilityEdit","removeLiabilityFromState","borrowerLiabilityDetail","getBorrowerLiabilityInformation","deleteLiabilityFromCache","updateBorrowerLiability","additionalLiability","getLiabilities","updateAdditionalLiabilityAsync","isContinueDisabled","setBackClick","onContinueClick","editItem","borrowerLiabilityPage","backgroundImage","borrowerLiabilityContainer","cardRow","addAccountBtn","additionalLiabilityRow","handleAdditionalLiability","setIsDisabled","newBorrowerLiability","loanContainer","updateCache","saveContactPreference","preference1","preference2","preference3","getContactPreference","ContactPreference","firstChoice","setFirstChoice","secondChoice","setSecondChoice","thirdChoice","setThirdChoice","saveUserPreference","getUserPreference","preferanceStyles","choiceRow","choicebg","selectDdl","update","HasAdditionalProperties","AdditionalProperties","BorrowerReoActionCreators","updateHasAdditionalProperties","addReoProperty","updateReoInformationField","removeProperty","updateReoAddressField","getBorrowerReo","borrowerReoService","reos","additionalProperties","reoProperty","reoState","updateReoDataToEncompass","updateReoToInitialState","initialReoInfo","ReoPropertyOwner","valueChange","OwnerInfographic","ownerDropdown","coBorrowerName","MaritalStatusEnum","newReoProperty","changeNewReoProperty","saveReoProperty","ContinueToOwn","NoOfUnits","PresentMarketValue","addReoPropertyMarkup","PrimaryResidenceInfographic","SecondaryHomeInfographic","InvestmentPropertyInfographic","SingleFamilyInfographic","CondoInfographic","MultiUnitInfographic","NumberOfUnitsInfographic","continueToOwnChoices","yesornoselected","yesNoQuestion","ContinueToOwnInfographic","PropertyAddressInfographic","reoInputGroup","updatedReoProperty","PresentMarketValueInfographic","LineItem","propertyDetails","PropertyCard","property","startsWith","summaryCard","returnOccupency","returnProperty","formatAddress","propertySummaryCardRow","ReoPropertyLanding","setDisable","showNoProperties","setShowNoProperties","Liability","reoPropertyMain","summaryHeading","totalAssets","assetContainer","assetRow","EnumOccupency","setBorrowerInformationValid","readOnly","inputContainer","inputLabel","moment","borrowerAddress","setAddressInformationValid","addressBox","updateAdditionalAddresses","militryIndicator","setEmploymentInformationValid","employmentList","setTotal","setAdditionalInformationValid","returnAdditionalIncome","Alimony","Disability","Pension","Retirement","SocialSecurity","Trust","borrowerPropertyInformation","setPropertyValid","PrimaryResidence","SecondHome","Investor","propertyDatePicker","reoData","setReoValid","BorrowerReoActions","Seprate","getSectionsByLoanguid","getDocumentContents","documentId","updateDocumentStatus","dto","uploadAttachment","formData","postForm","deleteAttachment","documentDto","getSystematicLetterData","generateSystematicInvoicePdf","reviewApplicationActionCreators","borrowerEmploymentInformation","coborrowerEmploymentInformation","additionalIncomeList","reoInformation","AditionalIncomeActions","setLoanFromEncompassMessageFlag","isBorrowerExpand","setBorrowerExpand","isCoBorrowerExpand","setCoBorrowerExpand","isReoExpand","setReoExpand","isPropertyExpand","setPropertyExpand","initialBorrower","setBorrowerInfo","initialCoBorrower","setCoBorrowerInfo","reoValid","isBorrowerValid","isCoBorrowerValid","borrowerInformationValid","addressInformationValid","employmentInformationValid","additionalInformationValid","setReoInformationValid","setAddressValid","borrowerInfo","validList","setEmploymentValid","EmploymentInformationStore","setAdditionalIncomeValid","totalIncomeList","validIncomeList","borrowerGeneralInformation","borrowerAddressInformation","borrowerAdditionalIncomeInformation","coBorrowerGeneralInformation","coBorrowerAddressInformation","coBorrowerEmploymentInformation","coBorrowerAdditionalIncomeInformation","editSection","setEditSection","discardChanges","saveInformation","AccountCreationService","borrowerGeneralResponse","goToDashboard","borrowerResponse","EmploymentInformationService","empResponse","borrowerIncome","AdditionalIncomeService","borrowerincomeResponse","coBorrowerGeneralResponse","coBorrowerResponse","incomeResponse","ReoService","reoResponse","Property","propertyResponse","updatePreQualLetterStatus","emailResponse","PreQualReviewScreen","addRequiredDocuments","accordion","accordion__button","dropdown","accordion__content_active","topHeading","editSaveIcon","disable","discardButton","readonly","formContainer","realEstate","propertyAccordion","reviewAppLoaderBg","CreditReportScores","GetText","HasCoBorrower","scoreInfographic","CreditReportPending","pendingInfographic","pendingContainer","getCreditReportStatus","getCreditReportValues","SystematicLetterStep","isPolling","setIsPolling","isComplete","setIsComplete","queryForCreditScores","scoresResult","borrowerCreditScore","Complete","coBorrowerCreditScore","StartCreditReport","creditReportId","QueryCreditReportStatus","QueryCreditValues","useCreditReportActions","callback","savedCallback","useInterval","ValuesProcessed","CreditReportError","systematicLetterActionCreators","systematicLetterService","getData","SystematicLetterContent","canvasEl","setRef","ctx","getContext","beginPath","stroke","pageScroll","logoContainer","addressStreetLine","subjectPropertyAddress","occupancy","maybe","additionalAddress","SystematicLetterActions","componentRef","handlePrint","useReactToPrint","downloadData","fileURL","fileName","createElement","download","href","dispatchEvent","MouseEvent","headingAlign","printDownloadBTN","size","file","Blob","URL","createObjectURL","loaderBg","preQualLetternfographic","DocumentStatus","isEnable","SetEnable","SystematicLetterDisplay","SystematicLetterNotFound","handleButton","systematicLetterPage","selectActive","preQualLandingInfographic","DocumentSectionStatus","Document","viewerActions","documentList","Rejected","documentStatus","rejectedStatus","statusText","Accepted","accepted","Replaced","discarded","rejected","Submitted","received","getStatus","rejectionComment","useDocumentActions","AlterSectionExpandedStatus","AlterSelectedTab","FileFormat","ModalPopup","modalContent","DocumentSection","showDocuments","setShowDocuments","hasDocuments","setHasDocuments","canDelete","setCanDelete","openConfirmationModalPopup","setOpenConfirmationModalPopup","flipShow","documentSectionId","sectionInExpandedArray","documents","Requested","Outstanding","isUploadedToEncompass","deleteDocumentSection","confirmDelete","onRemoveClick","sectionLabel","deletIcon","documentContainer","DocumentGroup","groupHeader","category","sections","onRemoveSectionClick","LoanOfficerDocuments","setSections","selectedSections","setSelectedSections","groupings","setGroupings","setShowSpinner","setIsDisable","requested","outstanding","splitUpSections","setSplitUpSections","callRemoveSection","where","isOutstanding","categoryGroupings","groupBy","isActiveStyle","activeTab","toggleModle","approveAllDocument","y","j","updateStatus","doc","comment","tabList","disabledLink","link","documentGroupingContainer","ListItem","AddDocumentSectionOptionList","anythingSet","setAnythingSet","optionClick","onSelectionMade","addDocumentSectionOptionContainer","addDocumentSectionOptionList","AddDocumentSection","setDocumentList","documentTypes","setDocumentTypes","setSelectedType","selectedDocument","setSelectedDocument","allOptions","setAllOptions","notes","setNotes","getOptions","addSection","distinctTypes","documentType","addDocumentSection","documentTypeSelector","headerLabel","addDocumentSectionDialog","btnContainer","basicBtn","warningBtn","PdfDocumentViewer","blobString","setBlobString","setData","getBlobUrl","encodedByteString","documentContentType","byteString","atob","arrayBuffer","ArrayBuffer","byteArray","Uint8Array","charCodeAt","blob","PDFdisplayPage","isMobile","downloadPDF","downloadButton","isSafari","PDFSection","height","WordDocumentViewer","linkRef","wordDownloadButton","ImageViewer","image","DocumentViewerActions","hasBeenRejected","setHasBeenRejected","setisOpen","checkEligibilityToMarkDocumentAsReplace","onStatusUpdate","len","countReplace","commonPopup","grayBtn","notesContainer","loadingAnimation","DocumentViewer","setDocumentDto","setDocumentDtoList","setViewerActions","loadingSection","documentViewerPage","noDocAction","fileFormat","Jpeg","Png","Pdf","Word","docFileViewer","NoImage","previewText","MilestoneNavigationServiceActionCreators","milestoneNavigationService","setpercentage","dashboardCardbg","loanInfoCard","closedLoancard","cardTop","cardLeft","cardRight","tileIcons","loanOfficerInfographic","progressInfographic","applicationInfographic","BorrowerDocuments","documentsInfographic","LoanViewHeader","responsive","setResponsive","welcome","loanViewWelcome","showLoanOfficerDetail","loanOfficerDetailInfo","LoanOfficerDetails","displayFlex","profilePic","profileDetails","namePhoneEmail","loName","urls","dashboardTooltipText","stratNewApp","accordionDetails","isResponsive","EnumMilestoneNavigation","userAccountInformationObj","submitFlag","loanFromEncompassMsgFlag","interimLoanStagingIdOfLoan","milestoneStatus","userFirstName","userLastName","userEmail","getMilestoneDetails","submit","setSubmit","releaseDate","setReleaseDate","currentLoan","setCurrentLoan","hideDocumentTileFlag","setLoanOfficerDetail","userMessage","setUseMessage","isOpenUserMessage","setIsOpenUserMessage","isLoanFromEncompassMessage","setIsLoanFromEncompassMessage","isModal","setIsModal","currentStagId","setCurrentStagId","stagginId","staggingId","loInfo","dashboardPage","dashboardBorrowerDetails","loanDetails","propertyAddress","MilestoneProgress","isDisclosureAuthenticated","signDisclosuresInfographic","SystematicLetter","prequalLetterInfographic","BorrowerPreApprovalLetter","paymentUrl","PaymentDashboardUrl","appFeePaymentInfographic","DefaultMilestoneDescription","defaultDescription","LoanOfficerMainTabStep","MilestoneDetails","keyDate","LoadScripts","js","getElementsByTagName","sfjs","parentNode","insertBefore","html","MilestoneDescription","modalScript","setModalScript","milestone","flex_row","estimatedRow","textDetails","LoadScript","data-dynamic-video","data-user-email","data-first-name","data-last-name","data-street","renderSwitch","renderModal","MilestoneNavigationActions","setMilestone","Closed","ClosedInfographic","CompletingTheApplication","CompletingTheApplicationInfographic","CreditAnalysis","CreditAnalysisInfographic","ProcessingTheApplication","ProcessingTheApplicationInfographic","ReadyForClosing","ReadyForClosingInfographic","handleClick","returnMilestoneDetail","returnMilestoneEnableStatus","whiteSpace","milestoneContent","milestoneImage","milestoneSideContent","setisloading","setloanGuid","seterror","getApplicationFee","CreatePreApprovalLetterAsync","preApprovalLetterDto","GeneratePreApprovalLetterAndUploadToEncompassAsync","preApprovalId","UncheckInactivePreApprovalLettersIntoEncompass","GeneratePreApprovalInvoicePdf","loanOfficerMainTabActionCreators","setCreditReports","setApplicationFee","setLoanOfficerViewLoanGuid","setSelectedTab","updatePreApproval","loanOfficerMainTabService","sendSecureInvitation","LoanOfficerMainTabActions","setDocument","pdfLinkContainer","pdfBox","linkBox","creditDocument","setPdfData","LoanOfficerMainTabMessage","LoanOfficerPreQualLetterContent","MissingAuthorizationAlert","missCreditAuth","creditReportInfographic","MissingPreQualLetter","PreApprovalFields","appFeeData","preQualData","LoanOfficerMainTab","isCreditLoading","setCreditLoading","viewCreditReport","setViewCreditReport","viewPreQual","setPreQualLetter","setLiveChatUrl","setEncompassDown","LiveChatDashboardUrl","getCreditAuthorizationStatus","MissingAuthorization","getCreditReports","LoanOfficerCreditReportViewer","LoanOfficerPreQualLetter","backToTab","tab","loanOfficerMainPage","textcolor","selectedIndex","commonGrid2Cols","leftCols","loanIdentifier","feePendingBG","imageBox","appFeeCollected","applicationFeeStatusInfographic","rightCols","welcomeBox","flexRow","viewCreditReportInfographic","viewPreQualLetter","itemSentInfographic","some","choiceType","contactChoices1","choiceValue","accountInformationActions","ts","em","ePochTime","fn","ln","lo","timeSpan","setList","setIschange","chars_left","max_char","commentChar","setCommentChar","updateComment","LoPreApprovalLetterComments","ReadPreApprovalLetters","LetterStyle","LoanType","PosAlterPurchasePriceIndicator","posPurchasePrice","PosMaxPurchasePrice","preApprovalLetter","flexItem","preApprovalFormRow","ConventionalPreApproval","commentsBox","commentTopRow","charactorMax","textareaRow","spellCheck","charLength","handleCommentCharCount","charCount","pricePrefix","maxPriceEdit","UHMRadioCheck","preApprovalList","price","idx","setShowComment","posPreApprovalLetterTo","setPosPreApprovalLetterTo","posPreApprovalLetterCc","setPosPreApprovalLetterCc","additionalNotes","setAdditionalNotes","viewButtonDisabled","setViewButtonDisabled","unSuccessfully","setUnsuccessfully","preApprovalIssueDate","setPreApprovalIssueDate","successfully","setSuccessfully","setNotification","sendButtonDisabled","setSendButtonDisabled","isValidEmail","setIsValidEmail","isCcValidEmail","setIsCcValidEmail","invalidEmails","setInvalidEmails","_invalidEmails","PreApprovalLetterBaseTemplate","preApprovalLetterEmailTemplate","preApprovalLetterTo","preApprovalLetterCc","preApprovalLetterAdditionalNotes","preApprovalLetterEmailTemplateDto","sendRequestNewPreApprovalLetterEmail","buttonrow","posMaxPurchasePriceText","purchasePrice","purchasePriceText","flexrow","emailFormRow","emails","_emails","validateEmail","getLabel","removeEmail","data-tag","data-tag-handle","setOpen","openDocument","documentDelete","deleteDocument","docPreviewBody","closeIcon","previewDiv","DocumentUpload","files","newFormData","FormData","fileData","append","modalDialog","borrowerDocumentStyles","loader","dropzonebg","accept","LayoutComponent","previews","dropzoneProps","submitButton","extra","defaultClassNames","buttonDisable","buttonActive","filePreview","maxFiles","PreviewComponent","metaData","meta","fileWithMeta","canRemove","submitButtonContent","maxSizeBytes","InputComponent","onFiles","getFilesFromEvent","fileSelected","multiple","chosenFiles","f","openModel","setModalState","setSectionId","isDeleteddocument","setDeletedDocument","isLoanOriginatedFromEnc","statusTile","itemOne","statusIcons","itemTwo","headingTitle","detailsRow","itemThree","tooltiptext","documentService","BoxContainer","borrowerDocumentBG","gridContainer","gridItem","gridItem1","RequiredDocumentInfographics","borrowerDocumentRightBox","EmConsumerConnect","siteId","setSiteId","ConsumerConnectSiteId","script","async","head","appendChild","data-width","data-height","data-min-height","data-site-id","data-name","SignDocument","UserSignIn","loginHint","setLoginHint","openModal","setOpenModal","setSsn","setUser","scopes","redirectUri","widget","OktaSignIn","baseUrl","username","i18n","en","colors","brand","authParams","useInteractionCodeFlow","useInteractionCode","features","rememberMe","showPasswordToggleOnSignInPage","registration","oktaWidget","oktaAuthClient","authClient","session","exists","token","getWithoutPrompt","autoLaunchDisclosureTile","autoLaunch","renderEl","el","handleLoginRedirect","isSharedEmail","err","on","context","checkValidSsn","validateSocialSecurityNumber","userSignInStyles","signInModal","reducer","mobile","password","confirmPassword","verificationCode","resetQuestion","resetAnswer","deliveryMethod","useReducer","mode","reValidateMode","showPassword","setShowPassword","showConfirmPassword","setShowConfirmPassword","setMessage","codeVerified","setCodeVerified","passwordValid","setPasswordValid","passwordMatched","setPasswordMatched","emailCheck","setEmailCheck","resetQuestions","setResetQuestions","setResult","isValidMobile","setValidMobile","userAlreadyVerified","setUserAlreadyVerified","emailRegExp","RegExp","Validation","signUp","requestState","readVerificationData","userKey","emailVerificationData","emailVerification","accountInformationData","verified","sendVerificationCode","userData","verifyEmailCode","isVerificationCodeValid","isVerificationButtonDisabled","questions","pop","sessionBox","sessionExpired","backSignIn","autoComplete","FirstName","LastName","Email","MobileNumber","deliveryMethodRow","VerificationCode","Password","passwordShow","prevState","passwordFormat","rules","specialChar","number","capital","lowercase","ConfirmPassword","valueAgain","match","ResetQuestion","ResetAnswer","actionButton","showBackToLogin","showContent","LoanOfficerInvite","setBorrowerData","borrowers","setBorrowers","coborrowers","setCoBorrowers","isDisclosureDateEmpty","setDisclosureDate","borrowerCheckBox","coBorrowerCheckBox","checkBox","setCheckBox","responseMessage","setResponseMessage","successMessage","loanOfficerInviteService","borrowerDetails","disclosureProvidedDate","handleOnCheck","selectRecipientsModal","recipientsModalDialog","recipientsModalContent","recipientsModalHeader","recipientsModalBody","formGroup","formTitle","formRow","coborrower","success","recipientsModalFooter","borrowerDetailsDto","defaultLoanSummary","validLoanStatus","loanTemplate","progressRing","buildStyles","pathColor","trailColor","textColor","textSize","twoColGrid","gotoDashboard","closedLoan","AppRouting","SignInContainer","component","SignIn","Invitation","DefaultContainer","exact","Home","EncompassDown","LoanOfficerContainer","PreApprovalLetter","NoLayoutContainer","LoanOfficerLauncher","UserSignUp","Ecc","AccountCreation","EmploymentInformation","AdditionalIncome","GovernmentQuestion","ConsumerCreditAuthorization","DemographicQuestionDetails","ReviewApplication","BorrowerDocumentView","DashboardDetails","MilestoneNavigation","MultipleLoanView","App","isLocalhost","Boolean","hostname","navigator","process","origin","addEventListener","swUrl","serviceWorker","ready","unregister","registerValidSW","checkValidServiceWorker","onupdatefound","installingWorker","installing","onstatechange","controller","getAttribute","createBrowserHistory","basename","store","initialState","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","applyMiddleware","configureStore","oktaConfig","OktaAuth","ReactDOM","onAuthRequired","restoreOriginalUri","auth","originalUri","getElementById","registerServiceWorker"],"mappings":"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e,6C,oBCDjCD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,kC,iBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,mD,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,+D,gBCA3CD,EAAOC,QAAU,IAA0B,oE,gBCC3CD,EAAOC,QAAU,CAAC,kBAAoB,sC,gBCDtCD,EAAOC,QAAU,IAA0B,6C,iBCA3CD,EAAOC,QAAU,IAA0B,yD,kBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,uD,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,kD,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,sD,gBCA3CD,EAAOC,QAAU,IAA0B,2C,iBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC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","file":"static/js/main.0b462070.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"disable\":\"reviewApplication_disable__2eNTt\",\"accordion\":\"reviewApplication_accordion__1XzpA\",\"accordion__button\":\"reviewApplication_accordion__button__21Ylm\",\"dropdown\":\"reviewApplication_dropdown__3Uh7-\",\"accordion__content_active\":\"reviewApplication_accordion__content_active__1XFH7\",\"propertyAccordion\":\"reviewApplication_propertyAccordion__1Ed1w\",\"formContainer\":\"reviewApplication_formContainer__2zoHD\",\"inputLabel\":\"reviewApplication_inputLabel__12usi\",\"addressBox\":\"reviewApplication_addressBox__USJ9g\",\"inputGroup\":\"reviewApplication_inputGroup__3aseS\",\"inputContainer\":\"reviewApplication_inputContainer__2inyJ\",\"invalidInput\":\"reviewApplication_invalidInput__1F7wi\",\"readonly\":\"reviewApplication_readonly__1ASEa\",\"selectDdl\":\"reviewApplication_selectDdl__3t7fJ\",\"dob\":\"reviewApplication_dob__3s_7S\",\"topHeading\":\"reviewApplication_topHeading__1ZAcZ\",\"editSaveIcon\":\"reviewApplication_editSaveIcon__1EI4X\",\"saveButton\":\"reviewApplication_saveButton__2lUSi\",\"discardButton\":\"reviewApplication_discardButton__Jf_ET\",\"Seprate\":\"reviewApplication_Seprate__z3h_9\",\"reviewAppLoaderBg\":\"reviewApplication_reviewAppLoaderBg__dA4Kj\",\"requiredMsg\":\"reviewApplication_requiredMsg__zO5C8\",\"optionalMsg\":\"reviewApplication_optionalMsg__3xwTT\",\"birthDateValidation\":\"reviewApplication_birthDateValidation__16Djf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"choices\":\"employmentInformation_choices__cnvAY\",\"full\":\"employmentInformation_full__1WOAO\",\"no-icon\":\"employmentInformation_no-icon__2haRA\",\"form\":\"employmentInformation_form__2zMFe\",\"inputGroup\":\"employmentInformation_inputGroup__1ToWM\",\"select\":\"employmentInformation_select__3DUQG\",\"employerDetail\":\"employmentInformation_employerDetail__1fk9_\",\"clearfix\":\"employmentInformation_clearfix__2wB6m\",\"infographicSideLayoutContainer\":\"employmentInformation_infographicSideLayoutContainer__nGWsh\",\"incomeDetailRow\":\"employmentInformation_incomeDetailRow__1S6sd\",\"incomeDetailColoumn\":\"employmentInformation_incomeDetailColoumn__2FRlC\",\"vquestionContainer\":\"employmentInformation_vquestionContainer__3Oik3\",\"display-table\":\"employmentInformation_display-table__2_f-Z\",\"cityStateZip\":\"employmentInformation_cityStateZip__22BM2\",\"employementinfo\":\"employmentInformation_employementinfo__1jiRZ\",\"startDate\":\"employmentInformation_startDate__3LsFN\",\"addressField\":\"employmentInformation_addressField__3JRI3\",\"address\":\"employmentInformation_address__2zrIv\",\"state\":\"employmentInformation_state__2UTnx\",\"buttonList\":\"employmentInformation_buttonList__1UBSY\",\"backButton\":\"employmentInformation_backButton__YJ5Jb\",\"incomeDetailBg\":\"employmentInformation_incomeDetailBg__2_fQ4\",\"content\":\"employmentInformation_content__1MMqu\",\"selectActive\":\"employmentInformation_selectActive__2mSaV\",\"w100\":\"employmentInformation_w100__1otk6\",\"w50\":\"employmentInformation_w50__1gfUn\",\"mr0\":\"employmentInformation_mr0__1jmXQ\",\"right\":\"employmentInformation_right__1CKCF\",\"landingContainer\":\"employmentInformation_landingContainer__2yUKU\",\"hide\":\"employmentInformation_hide__IYU-s\",\"requiredMsg\":\"employmentInformation_requiredMsg__sy13d\",\"optionalMsg\":\"employmentInformation_optionalMsg__3WG7k\",\"howlongQuestion\":\"employmentInformation_howlongQuestion__VpS4O\",\"yearsMonthRow\":\"employmentInformation_yearsMonthRow__1RgE0\",\"numberFields\":\"employmentInformation_numberFields__17MVk\",\"employmentInformation\":\"employmentInformation_employmentInformation__1xzdT\",\"employerFormContainer\":\"employmentInformation_employerFormContainer__2AZpw\",\"employerFormbox\":\"employmentInformation_employerFormbox__28pgn\",\"deleteButton\":\"employmentInformation_deleteButton__39md9\",\"addCurrentEmployer\":\"employmentInformation_addCurrentEmployer__377KP\",\"addMoreBtn\":\"employmentInformation_addMoreBtn__OtLkk\",\"invalidField\":\"employmentInformation_invalidField__1shZb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"shadow\":\"Dashboard_shadow__9fISR\",\"dashboardCardbg\":\"Dashboard_dashboardCardbg__3ARKi\",\"card\":\"Dashboard_card__3x-pW\",\"dashboardPage\":\"Dashboard_dashboardPage__2xcHn\",\"dashboardBorrowerDetails\":\"Dashboard_dashboardBorrowerDetails__gnB2E\",\"welcome\":\"Dashboard_welcome__18Fay\",\"loanViewWelcome\":\"Dashboard_loanViewWelcome__AxtOE\",\"LoanOfficerDetails\":\"Dashboard_LoanOfficerDetails__3AIku\",\"profilePic\":\"Dashboard_profilePic__1XbNL\",\"namePhoneEmail\":\"Dashboard_namePhoneEmail__3TiX-\",\"loName\":\"Dashboard_loName__1uWvR\",\"stratNewApp\":\"Dashboard_stratNewApp__i5V2n\",\"accordionDetails\":\"Dashboard_accordionDetails__1i6Wv\",\"displayFlex\":\"Dashboard_displayFlex__QI9HM\",\"loanDetails\":\"Dashboard_loanDetails__35IN-\",\"propertyAddress\":\"Dashboard_propertyAddress__1BGdC\",\"recentLoan\":\"Dashboard_recentLoan__2ozX7\",\"closedLoancard\":\"Dashboard_closedLoancard__1-EAb\",\"cardTop\":\"Dashboard_cardTop__2gcvd\",\"loanProgress\":\"Dashboard_loanProgress__2rDSP\",\"progressRing\":\"Dashboard_progressRing__3oEZB\",\"twoColGrid\":\"Dashboard_twoColGrid__KJelL\",\"gotoDashboard\":\"Dashboard_gotoDashboard__2CJ7y\",\"loanInfoCard\":\"Dashboard_loanInfoCard__q4Xwv\",\"tileIcons\":\"Dashboard_tileIcons__10cMN\",\"closedLoan\":\"Dashboard_closedLoan__yomGb\",\"dashboardTooltipText\":\"Dashboard_dashboardTooltipText__QYcl7\",\"modal\":\"Dashboard_modal__3_lNY\",\"modalHeader\":\"Dashboard_modalHeader__34Kwn\",\"modalBody\":\"Dashboard_modalBody__2xfA5\",\"currentStep\":\"Dashboard_currentStep__1uYqw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"borrowerInformation\":\"accountCreation_borrowerInformation__MkqlF\",\"selectActive\":\"accountCreation_selectActive__ftnK9\",\"locationSearch\":\"accountCreation_locationSearch__VBtDA\",\"suggestionBg\":\"accountCreation_suggestionBg__1SAPe\",\"borrowerForm\":\"accountCreation_borrowerForm__2hCsa\",\"inputGroupXLarge\":\"accountCreation_inputGroupXLarge__3ieV0\",\"coBorrowerCheckbox\":\"accountCreation_coBorrowerCheckbox__20AAC\",\"CoBorrlocationSearch\":\"accountCreation_CoBorrlocationSearch__3IU3E\",\"inputGroupLarge\":\"accountCreation_inputGroupLarge__1lQTy\",\"inputGroupMedium\":\"accountCreation_inputGroupMedium__2kq9E\",\"inputGroupSmall\":\"accountCreation_inputGroupSmall__1oNNR\",\"heading\":\"accountCreation_heading__2M6iF\",\"addressConfirmation\":\"accountCreation_addressConfirmation__z2lV9\",\"customlabelAdditionalDiv\":\"accountCreation_customlabelAdditionalDiv__2uTiF\",\"customCheckBoxAdditional\":\"accountCreation_customCheckBoxAdditional__2g_3K\",\"customCheckBox\":\"accountCreation_customCheckBox__2iMQk\",\"optionalMsg\":\"accountCreation_optionalMsg__3JD39\",\"additionAddressFields\":\"accountCreation_additionAddressFields__1ky8G\",\"inputGroup\":\"accountCreation_inputGroup__19Eir\",\"seprator\":\"accountCreation_seprator__2PUkl\",\"AboutOurLoanProcess\":\"accountCreation_AboutOurLoanProcess__3eQ2q\",\"addressMove\":\"accountCreation_addressMove__1z153\",\"addResetMonthYear\":\"accountCreation_addResetMonthYear__1n_HV\",\"addResetBG\":\"accountCreation_addResetBG__3a77W\",\"infographicSidePanel\":\"accountCreation_infographicSidePanel__4tYpp\",\"formerAddressBG\":\"accountCreation_formerAddressBG__2EMoD\",\"totalMonth\":\"accountCreation_totalMonth__3uIf9\",\"tableBG\":\"accountCreation_tableBG__RmMWr\",\"tableRow\":\"accountCreation_tableRow__fXZdv\",\"addressColumn\":\"accountCreation_addressColumn__e_Xjx\",\"dateColumn\":\"accountCreation_dateColumn__2ENSR\",\"buttonColumn\":\"accountCreation_buttonColumn__1AZMS\",\"formerAddressImages\":\"accountCreation_formerAddressImages__xWPAK\",\"monthYear\":\"accountCreation_monthYear__fZLH3\",\"errmsg\":\"accountCreation_errmsg__UHjGi\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pr0\":\"manualAssets_pr0__1Mx6C\",\"manualAssetsInfo\":\"manualAssets_manualAssetsInfo__1tSRC\",\"manualAssetsContainer\":\"manualAssets_manualAssetsContainer__21w2k\",\"backButton\":\"manualAssets_backButton__3YJxn\",\"optionalMsg\":\"manualAssets_optionalMsg__oYBVM\",\"requiredMsg\":\"manualAssets_requiredMsg__3JwST\",\"manualAssetsDetails\":\"manualAssets_manualAssetsDetails__3bmkn\",\"basicInfo\":\"manualAssets_basicInfo__19BP9\",\"manualAssetsImg\":\"manualAssets_manualAssetsImg__1GjvI\",\"inputRow\":\"manualAssets_inputRow__14zFt\",\"inputGroup\":\"manualAssets_inputGroup__MvHUX\",\"summaryContainer\":\"manualAssets_summaryContainer__1XKfA\",\"allassets\":\"manualAssets_allassets__rtDhF\",\"manualtotalContainer\":\"manualAssets_manualtotalContainer__1fDDB\",\"manualTotalImg\":\"manualAssets_manualTotalImg__1JHiq\",\"finicity\":\"manualAssets_finicity__2kYTW\",\"summaryRow\":\"manualAssets_summaryRow__2XWJm\",\"entryDataCustomize\":\"manualAssets_entryDataCustomize__14eOl\",\"addCartBtn\":\"manualAssets_addCartBtn__1b60Z\",\"entryData\":\"manualAssets_entryData__3RPNT\",\"entryContainer\":\"manualAssets_entryContainer__3VHfF\",\"editIcons\":\"manualAssets_editIcons__UfqqC\",\"summaryRowAsset\":\"manualAssets_summaryRowAsset__2ZRzc\",\"icons\":\"manualAssets_icons__2va3B\",\"faEdit\":\"manualAssets_faEdit__1-8A9\",\"faTrash\":\"manualAssets_faTrash__2cQr1\",\"marginAuto\":\"manualAssets_marginAuto__2Urye\",\"w100\":\"manualAssets_w100__nPqJi\",\"otherAssset\":\"manualAssets_otherAssset__VJ6b5\",\"disabledInput\":\"manualAssets_disabledInput__1YuHB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"basicInfo\":\"GovernmentQuestions_basicInfo__ePkk1\",\"textCenter\":\"GovernmentQuestions_textCenter__IiTlq\",\"borrowerQueForm\":\"GovernmentQuestions_borrowerQueForm__2hoz3\",\"borrowerQuecontainer\":\"GovernmentQuestions_borrowerQuecontainer__2K776\",\"borrowerGovtActiveContainer\":\"GovernmentQuestions_borrowerGovtActiveContainer__1PazV\",\"inputGroup\":\"GovernmentQuestions_inputGroup__2Ff46\",\"answerButton\":\"GovernmentQuestions_answerButton__1jLiO\",\"select\":\"GovernmentQuestions_select__1Kmm_\",\"gvtQuecheck\":\"GovernmentQuestions_gvtQuecheck__3qK9P\",\"customCheckBox\":\"GovernmentQuestions_customCheckBox__1yBZH\",\"mb0\":\"GovernmentQuestions_mb0__ReHRh\",\"govtBackBtn\":\"GovernmentQuestions_govtBackBtn__3l42M\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"shadow\":\"LoanOfficer_shadow__2dwiF\",\"welcomeBox\":\"LoanOfficer_welcomeBox__2d-9B\",\"flexRow\":\"LoanOfficer_flexRow__p9xgh\",\"borderRadius\":\"LoanOfficer_borderRadius__rdmlS\",\"disable\":\"LoanOfficer_disable__3xlMH\",\"imageBox\":\"LoanOfficer_imageBox__Dddlm\",\"CongratsImage\":\"LoanOfficer_CongratsImage__2SDPM\",\"first\":\"LoanOfficer_first__12q8S\",\"last\":\"LoanOfficer_last__lTUt7\",\"progressStatus\":\"LoanOfficer_progressStatus__2HMuN\",\"loanOfficerMainPage\":\"LoanOfficer_loanOfficerMainPage__3QbjH\",\"commonGrid2Cols\":\"LoanOfficer_commonGrid2Cols__3UON-\",\"leftCols\":\"LoanOfficer_leftCols__3NMqA\",\"feePendingBG\":\"LoanOfficer_feePendingBG__1xECs\",\"rightCols\":\"LoanOfficer_rightCols__1PRlD\",\"contactChoices\":\"LoanOfficer_contactChoices__vKxMZ\",\"contactChoices1\":\"LoanOfficer_contactChoices1__26F--\",\"pdfLinkContainer\":\"LoanOfficer_pdfLinkContainer__1_gFh\",\"pdfBox\":\"LoanOfficer_pdfBox__2ckg_\",\"linkBox\":\"LoanOfficer_linkBox__1oGPD\",\"missCreditAuth\":\"LoanOfficer_missCreditAuth__1H_WD\",\"basicInfo\":\"LoanOfficer_basicInfo__2kpuJ\",\"textCenter\":\"LoanOfficer_textCenter__kZANl\",\"headingAlign\":\"LoanOfficer_headingAlign__fgkNN\",\"borrowerQueForm\":\"LoanOfficer_borrowerQueForm__3KUuE\",\"borrowerQuecontainer\":\"LoanOfficer_borrowerQuecontainer__8lPyu\",\"borrowerGovtActiveContainer\":\"LoanOfficer_borrowerGovtActiveContainer__1m7ZM\",\"pageScroll\":\"LoanOfficer_pageScroll__CHFqo\",\"content\":\"LoanOfficer_content__ZaeqE\",\"logoContainer\":\"LoanOfficer_logoContainer__3x56R\",\"maybe\":\"LoanOfficer_maybe__1UCo_\",\"additionalAddress\":\"LoanOfficer_additionalAddress__nlDDH\",\"printDownloadBTN\":\"LoanOfficer_printDownloadBTN__1mE_J\",\"loaderBg\":\"LoanOfficer_loaderBg__32fFt\",\"selectActive\":\"LoanOfficer_selectActive__3qZGm\",\"customCheckBox\":\"LoanOfficer_customCheckBox__1PzUW\",\"chatIconBG\":\"LoanOfficer_chatIconBG__1AXGd\",\"loanIdentifier\":\"LoanOfficer_loanIdentifier__3OKa5\",\"preApprovalLetter\":\"LoanOfficer_preApprovalLetter__2DKsU\",\"flexItem\":\"LoanOfficer_flexItem__25oPC\",\"select\":\"LoanOfficer_select__2CsvY\",\"selectDropDown\":\"LoanOfficer_selectDropDown__i2Js2\",\"currentLoanType\":\"LoanOfficer_currentLoanType__3MQ9y\",\"purchasePrice\":\"LoanOfficer_purchasePrice__13OxT\",\"pricePrefix\":\"LoanOfficer_pricePrefix__3a4s4\",\"prefixIcon\":\"LoanOfficer_prefixIcon__3g9ZL\",\"numberValue\":\"LoanOfficer_numberValue__2-QEu\",\"maxPriceEdit\":\"LoanOfficer_maxPriceEdit__1OGpR\",\"loanType\":\"LoanOfficer_loanType__5CVYH\",\"comments\":\"LoanOfficer_comments__1BwgL\",\"preApprovalList\":\"LoanOfficer_preApprovalList__33ZTn\",\"price\":\"LoanOfficer_price__GAKh-\",\"UHMRadioCheck\":\"LoanOfficer_UHMRadioCheck__3q6KF\",\"preApprovalFormRow\":\"LoanOfficer_preApprovalFormRow__2hm_g\",\"commentsBox\":\"LoanOfficer_commentsBox__3ExzG\",\"commentTopRow\":\"LoanOfficer_commentTopRow__9Rfa6\",\"textareaRow\":\"LoanOfficer_textareaRow__3zmOr\",\"charCount\":\"LoanOfficer_charCount__KI6bv\",\"charactorMax\":\"LoanOfficer_charactorMax__3YQGD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectActive\":\"propertyInformation_selectActive__2hcDi\",\"selected\":\"propertyInformation_selected__qGOz0\",\"inputGroup\":\"propertyInformation_inputGroup__k39zA\",\"twoChoiceButtonContainer\":\"propertyInformation_twoChoiceButtonContainer__YNegd\",\"realtorInfo\":\"propertyInformation_realtorInfo__fRlpJ\",\"addressDetails\":\"propertyInformation_addressDetails__2-iLN\",\"coBorrowerCheckbox\":\"propertyInformation_coBorrowerCheckbox__1_FFz\",\"label\":\"propertyInformation_label__3zdmo\",\"addressFieldContainer\":\"propertyInformation_addressFieldContainer__1Xuf4\",\"grid\":\"propertyInformation_grid__3KQz4\",\"slider\":\"propertyInformation_slider__1VbO-\",\"largerInputText\":\"propertyInformation_largerInputText__14Kwo\",\"estimatedLoanContainer\":\"propertyInformation_estimatedLoanContainer__MN-8A\",\"fundSourceContainer\":\"propertyInformation_fundSourceContainer__2dXGp\",\"locationSearch\":\"propertyInformation_locationSearch__3ySKw\",\"modal\":\"propertyInformation_modal__1Zwhm\",\"modalHeader\":\"propertyInformation_modalHeader__3cJ0I\",\"modalBody\":\"propertyInformation_modalBody__3Uyek\",\"modalFooter\":\"propertyInformation_modalFooter__2bPnt\",\"errmsg\":\"propertyInformation_errmsg__1KTVm\",\"optionalMsg\":\"propertyInformation_optionalMsg__Omsna\",\"requiredMsg\":\"propertyInformation_requiredMsg__3A1lk\",\"currencyAmount\":\"propertyInformation_currencyAmount__1uNUG\",\"labelCenter\":\"propertyInformation_labelCenter__2PtHH\",\"errmsgRefinance\":\"propertyInformation_errmsgRefinance__3Yaht\",\"realtorRow\":\"propertyInformation_realtorRow__1W5N6\",\"homeOptionButtonRow\":\"propertyInformation_homeOptionButtonRow__X8EVN\",\"inputRangeQuestionRow\":\"propertyInformation_inputRangeQuestionRow__3zTzB\",\"questionItem\":\"propertyInformation_questionItem__3ZzU0\",\"sliderAndInput\":\"propertyInformation_sliderAndInput__1rN5Y\",\"inputRangeItem\":\"propertyInformation_inputRangeItem__1Pwfk\",\"inputRangeValue\":\"propertyInformation_inputRangeValue__8Rqi-\",\"or\":\"propertyInformation_or__33nCA\",\"errorMSG\":\"propertyInformation_errorMSG__1XhpQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"gridContainer\":\"BorrowerDocument_gridContainer__frlOC\",\"gridItem\":\"BorrowerDocument_gridItem__1hX7W\",\"gridItem1\":\"BorrowerDocument_gridItem1__1TMKq\",\"BoxContainer\":\"BorrowerDocument_BoxContainer__2g7FY\",\"statusTile\":\"BorrowerDocument_statusTile__1ZAa-\",\"itemOne\":\"BorrowerDocument_itemOne__2YJ-B\",\"itemTwo\":\"BorrowerDocument_itemTwo__1KCx5\",\"itemThree\":\"BorrowerDocument_itemThree__2ILdQ\",\"statusIcons\":\"BorrowerDocument_statusIcons__54pu-\",\"accepted\":\"BorrowerDocument_accepted__2mPWA\",\"submitted\":\"BorrowerDocument_submitted__gVLDE\",\"rejected\":\"BorrowerDocument_rejected__LY3o2\",\"headingTitle\":\"BorrowerDocument_headingTitle__1XS2r\",\"statusText\":\"BorrowerDocument_statusText__3AQV3\",\"outstanding\":\"BorrowerDocument_outstanding__3LiU3\",\"received\":\"BorrowerDocument_received__bjZn-\",\"requested\":\"BorrowerDocument_requested__Km8oC\",\"discarded\":\"BorrowerDocument_discarded__1r3rq\",\"detailsRow\":\"BorrowerDocument_detailsRow__26k3j\",\"borrowerDocumentRightBox\":\"BorrowerDocument_borrowerDocumentRightBox__v3xhM\",\"fileName\":\"BorrowerDocument_fileName__2lg72\",\"tooltip\":\"BorrowerDocument_tooltip__2esYq\",\"tooltiptext\":\"BorrowerDocument_tooltiptext__1N9LG\",\"documentStatus\":\"BorrowerDocument_documentStatus__11BJk\",\"documentContainer\":\"BorrowerDocument_documentContainer__3Kscu\",\"documentDelete\":\"BorrowerDocument_documentDelete__16qsg\",\"loader\":\"BorrowerDocument_loader__TipH_\",\"loaderBg\":\"BorrowerDocument_loaderBg__3ToYX\",\"previewText\":\"BorrowerDocument_previewText__2IVCd\",\"docPreviewBody\":\"BorrowerDocument_docPreviewBody__DurMM\",\"closeIcon\":\"BorrowerDocument_closeIcon__1TDri\",\"borrowerDocumentBG\":\"BorrowerDocument_borrowerDocumentBG__1eEe4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"yesNoQuestion\":\"borrowerReo_yesNoQuestion__2nb_c\",\"yesornoselected\":\"borrowerReo_yesornoselected__AUDM7\",\"selected\":\"borrowerReo_selected__3RNqX\",\"cardContent\":\"borrowerReo_cardContent__2qG5n\",\"marketValue\":\"borrowerReo_marketValue__wbv2P\",\"marketValueInput\":\"borrowerReo_marketValueInput__kPRNN\",\"cardContTitle\":\"borrowerReo_cardContTitle__3MDlA\",\"choices\":\"borrowerReo_choices__2ChlW\",\"card\":\"borrowerReo_card__1XKZb\",\"closeTile\":\"borrowerReo_closeTile__P6gNj\",\"cardBG\":\"borrowerReo_cardBG__3M82x\",\"greenBorder\":\"borrowerReo_greenBorder__2ks19\",\"cardLine\":\"borrowerReo_cardLine__3LIRi\",\"name\":\"borrowerReo_name__3yWjl\",\"value\":\"borrowerReo_value__1EeKm\",\"addPropertyButtonContainer\":\"borrowerReo_addPropertyButtonContainer__Vh72K\",\"addButton\":\"borrowerReo_addButton__3lzHy\",\"addReoProperty\":\"borrowerReo_addReoProperty__lUY16\",\"summaryHeading\":\"borrowerReo_summaryHeading__2a-Ph\",\"reoPropertiesSummary\":\"borrowerReo_reoPropertiesSummary__1qOTo\",\"ownerDropdown\":\"borrowerReo_ownerDropdown__1w0ZG\",\"numberFormat\":\"borrowerReo_numberFormat__vq577\",\"reoInputGroup\":\"borrowerReo_reoInputGroup__3si2n\",\"inputGroupSmall\":\"borrowerReo_inputGroupSmall__12CcM\",\"input\":\"borrowerReo_input__2bdvf\",\"locationSearch\":\"borrowerReo_locationSearch__3qb61\",\"suggestionBg\":\"borrowerReo_suggestionBg__1WBPR\",\"requiredMsg\":\"borrowerReo_requiredMsg__23GT3\",\"reoPropertyMain\":\"borrowerReo_reoPropertyMain__2ElgN\",\"propertySummaryCardRow\":\"borrowerReo_propertySummaryCardRow__73dQu\",\"summaryCard\":\"borrowerReo_summaryCard__IReYG\",\"closeButton\":\"borrowerReo_closeButton__2E5mz\",\"propertyDetails\":\"borrowerReo_propertyDetails__3V5C_\",\"twoColsGrid\":\"borrowerReo_twoColsGrid__34zbL\",\"addmoreButtonRow\":\"borrowerReo_addmoreButtonRow__3BuEs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"signUp\":\"SignUp_signUp__5EmzA\",\"logoContainer\":\"SignUp_logoContainer__1QF7D\",\"formContainer\":\"SignUp_formContainer__2a-p-\",\"backSignIn\":\"SignUp_backSignIn__17zc7\",\"inputGroup\":\"SignUp_inputGroup__1NqYm\",\"disabledInput\":\"SignUp_disabledInput__1m6uY\",\"passwordShow\":\"SignUp_passwordShow__2nGj4\",\"invalidField\":\"SignUp_invalidField__11Lwb\",\"passwordFormat\":\"SignUp_passwordFormat__1fJ1g\",\"resetQuestion\":\"SignUp_resetQuestion__2NWBa\",\"inputicons\":\"SignUp_inputicons__2_BTH\",\"icon\":\"SignUp_icon__3JfzD\",\"inputfield\":\"SignUp_inputfield__YSs9V\",\"deliveryMethodRow\":\"SignUp_deliveryMethodRow__13wZz\",\"deliveryMethod\":\"SignUp_deliveryMethod__1QgCp\",\"sessionBox\":\"SignUp_sessionBox__2JVx9\",\"sessionExpired\":\"SignUp_sessionExpired__2roq9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"basicInfo\":\"AccountInformation_basicInfo__yfavZ\",\"accountInformation\":\"AccountInformation_accountInformation__MQEsu\",\"formGg\":\"AccountInformation_formGg__1Mn7m\",\"splitCol\":\"AccountInformation_splitCol__7LvKM\",\"labelWithSubText\":\"AccountInformation_labelWithSubText__3GwsR\",\"subText\":\"AccountInformation_subText__UfXI9\",\"requiredMsg\":\"AccountInformation_requiredMsg__30Cic\",\"invalidField\":\"AccountInformation_invalidField__2fBmT\",\"consentContainer\":\"AccountInformation_consentContainer__2A6t1\",\"consentFlexContainer\":\"AccountInformation_consentFlexContainer__1UQb3\",\"consentText\":\"AccountInformation_consentText__11qpC\",\"selected\":\"AccountInformation_selected__29nzq\",\"notSelected\":\"AccountInformation_notSelected__1u8TU\",\"errmsg\":\"AccountInformation_errmsg__2V4B5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loanInfo\":\"BorrowerLiability_loanInfo__O_Os7\",\"borrowerContainer\":\"BorrowerLiability_borrowerContainer__30fU_\",\"borrowerLiabilityContainer\":\"BorrowerLiability_borrowerLiabilityContainer__1OXCn\",\"card\":\"BorrowerLiability_card__2rMfk\",\"cardRow\":\"BorrowerLiability_cardRow__3KKkR\",\"addAccountBtn\":\"BorrowerLiability_addAccountBtn__1Xf-r\",\"cardTile\":\"BorrowerLiability_cardTile__WJAcU\",\"closeTile\":\"BorrowerLiability_closeTile__1mxps\",\"tileInfo\":\"BorrowerLiability_tileInfo__2Hnbs\",\"tilePriceInfo\":\"BorrowerLiability_tilePriceInfo__3ORU-\",\"newBorrowerLiability\":\"BorrowerLiability_newBorrowerLiability__2IM4f\",\"newLiabilitycard\":\"BorrowerLiability_newLiabilitycard__1RUP2\",\"newLiabilityRow\":\"BorrowerLiability_newLiabilityRow__Zb4g0\",\"rowColumn\":\"BorrowerLiability_rowColumn__1XcDg\",\"invalidInput\":\"BorrowerLiability_invalidInput__1frP9\",\"select\":\"BorrowerLiability_select__2KaFr\",\"boxActive\":\"BorrowerLiability_boxActive__zeb8w\",\"box\":\"BorrowerLiability_box__33CPT\",\"customCheckBox\":\"BorrowerLiability_customCheckBox__1FeiX\",\"loanContainer\":\"BorrowerLiability_loanContainer__2XAsi\",\"w100\":\"BorrowerLiability_w100__2ITIm\",\"textCenter\":\"BorrowerLiability_textCenter__2vGNz\",\"verticalAlignMiddle\":\"BorrowerLiability_verticalAlignMiddle__3eD-o\",\"cursorPointer\":\"BorrowerLiability_cursorPointer__ubtKM\",\"optionalMsg\":\"BorrowerLiability_optionalMsg__37vQW\",\"additionalLiabilityRow\":\"BorrowerLiability_additionalLiabilityRow__HiZ3v\",\"selectActive\":\"BorrowerLiability_selectActive__1WJyG\",\"backgroundImage\":\"BorrowerLiability_backgroundImage__2lFeK\",\"loaderBg\":\"BorrowerLiability_loaderBg__1E92i\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tabList\":\"LoanOfficerDocument_tabList__1hHAf\",\"activeTab\":\"LoanOfficerDocument_activeTab__1iR9V\",\"link\":\"LoanOfficerDocument_link__1s38c\",\"documentGroupingContainer\":\"LoanOfficerDocument_documentGroupingContainer__2FEjE\",\"groupHeader\":\"LoanOfficerDocument_groupHeader__3TDLG\",\"documentContainer\":\"LoanOfficerDocument_documentContainer__ANMo8\",\"document\":\"LoanOfficerDocument_document__1lkFd\",\"status\":\"LoanOfficerDocument_status__2FEoW\",\"rejectedStatus\":\"LoanOfficerDocument_rejectedStatus__2O9cj\",\"documentStatus\":\"LoanOfficerDocument_documentStatus__13mnC\",\"section\":\"LoanOfficerDocument_section__ja4L8\",\"sectionLabel\":\"LoanOfficerDocument_sectionLabel__1hb0i\",\"icon\":\"LoanOfficerDocument_icon__o8j1O\",\"customCheckBox\":\"LoanOfficerDocument_customCheckBox__qVhLl\",\"deletIcon\":\"LoanOfficerDocument_deletIcon__BmHDI\",\"statusText\":\"LoanOfficerDocument_statusText__1nfVZ\",\"rejected\":\"LoanOfficerDocument_rejected__Lnte5\",\"outstanding\":\"LoanOfficerDocument_outstanding__1mIxb\",\"accepted\":\"LoanOfficerDocument_accepted__3BmoU\",\"received\":\"LoanOfficerDocument_received__35_1D\",\"requested\":\"LoanOfficerDocument_requested__3PFgA\",\"submitted\":\"LoanOfficerDocument_submitted__C2W6k\",\"discarded\":\"LoanOfficerDocument_discarded__1U-S-\",\"modal\":\"LoanOfficerDocument_modal__1c4VQ\",\"modalHeader\":\"LoanOfficerDocument_modalHeader__2kqxS\",\"modalBody\":\"LoanOfficerDocument_modalBody__2JBAF\",\"content\":\"LoanOfficerDocument_content__tXOo2\",\"button\":\"LoanOfficerDocument_button__28l6V\",\"disabledLink\":\"LoanOfficerDocument_disabledLink__1ShaU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"basicInfo\":\"DemographicQuestions_basicInfo__2pScZ\",\"textCenter\":\"DemographicQuestions_textCenter__3wRYh\",\"demographicQuestionForm\":\"DemographicQuestions_demographicQuestionForm__2bqsh\",\"inputGroup\":\"DemographicQuestions_inputGroup__16rvB\",\"answerButton\":\"DemographicQuestions_answerButton__cSAnv\",\"selectActive\":\"DemographicQuestions_selectActive__3zUQv\",\"questionCheck\":\"DemographicQuestions_questionCheck__lD2wU\",\"customCheckBox\":\"DemographicQuestions_customCheckBox__HsLCV\",\"mb0\":\"DemographicQuestions_mb0__2U_3n\",\"greenlable\":\"DemographicQuestions_greenlable__3J4ew\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"uhmTaskMenu\":\"TaskMenu_uhmTaskMenu__2ldCp\",\"open\":\"TaskMenu_open__2oZcx\",\"toggleButton\":\"TaskMenu_toggleButton__3WXmh\",\"tasklistmenuBg\":\"TaskMenu_tasklistmenuBg__2-Y7t\",\"subtaskList\":\"TaskMenu_subtaskList__1vQ-4\",\"menuBorrowerDetails\":\"TaskMenu_menuBorrowerDetails__PLm3X\",\"application\":\"TaskMenu_application__1YxPi\",\"listDetails\":\"TaskMenu_listDetails__1gOn7\",\"taskListMenu\":\"TaskMenu_taskListMenu__2K-1p\",\"tasklist\":\"TaskMenu_tasklist__oaf83\",\"parentli\":\"TaskMenu_parentli__3w8g-\",\"subtaskContainer\":\"TaskMenu_subtaskContainer__2KY31\",\"completed\":\"TaskMenu_completed__vTBfb\",\"inProgress\":\"TaskMenu_inProgress__TX3Ut\",\"notStated\":\"TaskMenu_notStated__d3CId\",\"failed\":\"TaskMenu_failed__3ZdIZ\",\"active\":\"TaskMenu_active__2UO8G\",\"sweetAlert\":\"TaskMenu_sweetAlert__3u5Pa\",\"signout\":\"TaskMenu_signout__1YJ_M\",\"closeIcon\":\"TaskMenu_closeIcon__2twTE\",\"icon\":\"TaskMenu_icon__itxW7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"documentViewerPage\":\"documentViewers_documentViewerPage__3w7v-\",\"PDFdisplayPage\":\"documentViewers_PDFdisplayPage__pi8BB\",\"PDFSection\":\"documentViewers_PDFSection__sfgQO\",\"downloadPDF\":\"documentViewers_downloadPDF__3-psG\",\"downloadButton\":\"documentViewers_downloadButton__2T3Cc\",\"image\":\"documentViewers_image__2dAfZ\",\"wordDownloadButton\":\"documentViewers_wordDownloadButton__1OiSD\",\"notesContainer\":\"documentViewers_notesContainer__1miWF\",\"loadingAnimation\":\"documentViewers_loadingAnimation__1ShoV\",\"btnContainer\":\"documentViewers_btnContainer__2od-6\",\"warningBtn\":\"documentViewers_warningBtn__2dH73\",\"grayBtn\":\"documentViewers_grayBtn__3vix2\",\"icon\":\"documentViewers_icon__2FyZE\",\"docFileViewer\":\"documentViewers_docFileViewer__16PNW\",\"noDocAction\":\"documentViewers_noDocAction__1w2Qd\",\"commonPopup\":\"documentViewers_commonPopup__8Ct7J\",\"modalHeader\":\"documentViewers_modalHeader__3yJP1\",\"modalBody\":\"documentViewers_modalBody__BZnkX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cityTable\":\"zipCode_cityTable__3Gyc-\",\"activeCity\":\"zipCode_activeCity__18UT_\",\"zipSelectionBox\":\"zipCode_zipSelectionBox__24ydP\",\"modal-body\":\"zipCode_modal-body__1Rgby\",\"table\":\"zipCode_table__3uDw9\",\"zip-selection-box\":\"zipCode_zip-selection-box__12Qvv\",\"modal-title\":\"zipCode_modal-title__82VP6\",\"modal-footer\":\"zipCode_modal-footer__deng6\",\"saveButton\":\"zipCode_saveButton__1Mc2P\",\"tableContainer\":\"zipCode_tableContainer__m83cL\",\"requiredMsg\":\"zipCode_requiredMsg__2fnl3\",\"errorMessage\":\"zipCode_errorMessage__3o09s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"appContainer\":\"MainLayout_appContainer__24qbp\",\"borderedBackground\":\"MainLayout_borderedBackground__2JvLz\",\"contentContainer\":\"MainLayout_contentContainer__22mCb\",\"afterLogin\":\"MainLayout_afterLogin__1NLHY\",\"infographic-side-layout-container\":\"MainLayout_infographic-side-layout-container__3Bu2h\",\"defaultTopHeader\":\"MainLayout_defaultTopHeader__3aHlx\",\"logo\":\"MainLayout_logo__3JMjq\",\"topHeader\":\"MainLayout_topHeader__3gg9Y\",\"menuButton\":\"MainLayout_menuButton__2PqNG\",\"noNotification\":\"MainLayout_noNotification__qeOto\",\"notificationList\":\"MainLayout_notificationList__LgU9P\",\"profile\":\"MainLayout_profile__3yVQH\",\"menuVisibility\":\"MainLayout_menuVisibility__4uu56\",\"loanViewHeader\":\"MainLayout_loanViewHeader__ovLYS\",\"dropDownMenu\":\"MainLayout_dropDownMenu__1Xdxn\",\"show\":\"MainLayout_show__2gRLD\",\"application\":\"MainLayout_application__1PjVo\",\"name\":\"MainLayout_name__3wQMu\",\"listDetails\":\"MainLayout_listDetails__Chbjk\",\"left\":\"MainLayout_left__qjt81\",\"right\":\"MainLayout_right__3sY99\",\"profileDetail\":\"MainLayout_profileDetail__3FIi_\",\"bgview\":\"MainLayout_bgview__MHb2m\",\"footer\":\"MainLayout_footer__17U9m\",\"signout\":\"MainLayout_signout__1ppe4\",\"profileImgCursor\":\"MainLayout_profileImgCursor__3ZFUW\",\"headerProgress\":\"MainLayout_headerProgress__1c8Fz\",\"progressBox\":\"MainLayout_progressBox__2CfMx\",\"progressDiv\":\"MainLayout_progressDiv__1IOkw\",\"progress\":\"MainLayout_progress__20Rux\",\"smallLink\":\"MainLayout_smallLink__YhjuS\",\"profileList\":\"MainLayout_profileList__y32C7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"formTitle\":\"LoanOfficerInvite_formTitle__31tFB\",\"selectRecipientsModal\":\"LoanOfficerInvite_selectRecipientsModal__2MC9A\",\"recipientsModalDialog\":\"LoanOfficerInvite_recipientsModalDialog__3LSKW\",\"recipientsModalHeader\":\"LoanOfficerInvite_recipientsModalHeader__1x-Lw\",\"recipientsModalBody\":\"LoanOfficerInvite_recipientsModalBody__3nxM2\",\"formRow\":\"LoanOfficerInvite_formRow__3vfOH\",\"borrowerName\":\"LoanOfficerInvite_borrowerName__2AEBJ\",\"formGroup\":\"LoanOfficerInvite_formGroup__3OEgJ\",\"message\":\"LoanOfficerInvite_message__4CUbc\",\"success\":\"LoanOfficerInvite_success__3WU7F\",\"error\":\"LoanOfficerInvite_error__2uhj-\",\"recipientsModalFooter\":\"LoanOfficerInvite_recipientsModalFooter__epkiX\",\"secondary\":\"LoanOfficerInvite_secondary__1Gbb2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"verificationAssets\":\"assetInformation_verificationAssets__1tpb-\",\"inputGroup\":\"assetInformation_inputGroup__2E-Gn\",\"finicity\":\"assetInformation_finicity__hWSF_\",\"entertheInfo\":\"assetInformation_entertheInfo__3g79u\",\"manualInfo\":\"assetInformation_manualInfo__2v0DE\",\"container\":\"assetInformation_container__1hcdj\",\"accountInfoContainer\":\"assetInformation_accountInfoContainer__32VXv\",\"accountCardContainer\":\"assetInformation_accountCardContainer__qOaa5\",\"accountCard\":\"assetInformation_accountCard__U7lY_\",\"modal\":\"assetInformation_modal__1tftR\",\"modalHeader\":\"assetInformation_modalHeader__2m5np\",\"modalBody\":\"assetInformation_modalBody__1kChh\",\"search\":\"assetInformation_search__2hyDY\",\"institutionIcon\":\"assetInformation_institutionIcon__1zK45\",\"image\":\"assetInformation_image__2PwZP\",\"popover\":\"assetInformation_popover__284f5\",\"popoverbody\":\"assetInformation_popoverbody__3T0Cm\",\"list\":\"assetInformation_list__33dXQ\",\"closButton\":\"assetInformation_closButton__2YIFX\",\"errmsg\":\"assetInformation_errmsg__1RCZ9\",\"button\":\"assetInformation_button__TPxtZ\",\"popupBlocker\":\"assetInformation_popupBlocker__13Jw_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"choices\":\"additionalIncome_choices__3cPxe\",\"full\":\"additionalIncome_full__2Toyq\",\"no-icon\":\"additionalIncome_no-icon__16y2I\",\"form\":\"additionalIncome_form__h_8q0\",\"inputGroup\":\"additionalIncome_inputGroup__3l0o8\",\"vquestionContainer\":\"additionalIncome_vquestionContainer__3nsGL\",\"display_table\":\"additionalIncome_display_table__NPlkR\",\"display_cell\":\"additionalIncome_display_cell__2hdOP\",\"additionalIncomeBg\":\"additionalIncome_additionalIncomeBg__3mPT5\",\"infographic-container\":\"additionalIncome_infographic-container__3NkT5\",\"income_source\":\"additionalIncome_income_source__d6g4K\",\"addmoreButtonRow\":\"additionalIncome_addmoreButtonRow__3Bjvx\",\"additionalIncomeCardRow\":\"additionalIncome_additionalIncomeCardRow__Vl93a\",\"incomeSourceCard\":\"additionalIncome_incomeSourceCard__HjriT\",\"closeButton\":\"additionalIncome_closeButton__1TTnA\",\"twoColsGrid\":\"additionalIncome_twoColsGrid__3FhK2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"purchasePrice\":\"preApprovalLetter_purchasePrice__F6-gf\",\"purchasePriceText\":\"preApprovalLetter_purchasePriceText__3DXp7\",\"flexrow\":\"preApprovalLetter_flexrow__f6kUf\",\"pricePrefix\":\"preApprovalLetter_pricePrefix__1dXgv\",\"prefixIcon\":\"preApprovalLetter_prefixIcon__2251C\",\"numberValue\":\"preApprovalLetter_numberValue__1DluO\",\"buttonrow\":\"preApprovalLetter_buttonrow__34DWi\",\"errmsg\":\"preApprovalLetter_errmsg__2ZTlA\",\"posMaxPurchasePriceText\":\"preApprovalLetter_posMaxPurchasePriceText__Z0O_v\",\"requiredMsg\":\"preApprovalLetter_requiredMsg__2f_eY\",\"optionalMsg\":\"preApprovalLetter_optionalMsg__rThJp\",\"emailFormRow\":\"preApprovalLetter_emailFormRow__2ft5S\",\"closeButton\":\"preApprovalLetter_closeButton__2ADdn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"milestone\":\"milestoneNavigation_milestone__2J6Rn\",\"milestoneContent\":\"milestoneNavigation_milestoneContent__myAbp\",\"milestoneImage\":\"milestoneNavigation_milestoneImage__1Sdpd\",\"infographic\":\"milestoneNavigation_infographic__1YOuq\",\"completed\":\"milestoneNavigation_completed__1cWXF\",\"inProgress\":\"milestoneNavigation_inProgress__38rhW\",\"disabled\":\"milestoneNavigation_disabled__3k6VN\",\"active\":\"milestoneNavigation_active__fGk7R\",\"milestoneSideContent\":\"milestoneNavigation_milestoneSideContent__2cwMx\",\"flex_row\":\"milestoneNavigation_flex_row__n534L\",\"textDetails\":\"milestoneNavigation_textDetails__Zb5oK\",\"estimatedRow\":\"milestoneNavigation_estimatedRow__3_f8K\",\"defaultDescription\":\"milestoneNavigation_defaultDescription__34T4i\",\"cursor\":\"milestoneNavigation_cursor__-EY9O\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"MessageBox_modal__1uyjk\",\"modalHeader\":\"MessageBox_modalHeader__20ULQ\",\"modalBody\":\"MessageBox_modalBody__1973c\",\"title\":\"MessageBox_title__abD63\",\"errmsg\":\"MessageBox_errmsg__3DqVT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NoButton\":\"eConsentDocument_NoButton__Bm57b\",\"Button\":\"eConsentDocument_Button__2JXXX\",\"consentQuestionLabel\":\"eConsentDocument_consentQuestionLabel__36tzj\",\"docContainer\":\"eConsentDocument_docContainer__3tFf-\",\"docText\":\"eConsentDocument_docText__OVzmt\",\"modalIcon\":\"eConsentDocument_modalIcon__2w0WQ\",\"eConsentModal\":\"eConsentDocument_eConsentModal__HDRRw\",\"eConsentModalContent\":\"eConsentDocument_eConsentModalContent__3giKn\",\"modalBody\":\"eConsentDocument_modalBody__2_FwZ\"};","module.exports = __webpack_public_path__ + \"static/media/uhm-logo.920c8dcb.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"CustomDatePicker_input__29Dje\",\"customDatepicker\":\"CustomDatePicker_customDatepicker__1BOGb\",\"calendarIcon\":\"CustomDatePicker_calendarIcon__3p9xm\",\"datePickerHeader\":\"CustomDatePicker_datePickerHeader__30Wa7\",\"datepickerYears\":\"CustomDatePicker_datepickerYears__2hJAY\",\"datepickerMonth\":\"CustomDatePicker_datepickerMonth__1AWwl\",\"customYearMonthpicker\":\"CustomDatePicker_customYearMonthpicker__2B00Z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"basicInfo\":\"SystematicLetter_basicInfo__MuYYn\",\"textCenter\":\"SystematicLetter_textCenter__XjGXX\",\"headingAlign\":\"SystematicLetter_headingAlign__2YToS\",\"borrowerQueForm\":\"SystematicLetter_borrowerQueForm__1ZERW\",\"borrowerQuecontainer\":\"SystematicLetter_borrowerQuecontainer__e3bCT\",\"borrowerGovtActiveContainer\":\"SystematicLetter_borrowerGovtActiveContainer__2PsJK\",\"pageScroll\":\"SystematicLetter_pageScroll__Y5fxe\",\"content\":\"SystematicLetter_content__1wBk-\",\"logoContainer\":\"SystematicLetter_logoContainer__2Z9L2\",\"maybe\":\"SystematicLetter_maybe__QKlxL\",\"additionalAddress\":\"SystematicLetter_additionalAddress__4_Dth\",\"printDownloadBTN\":\"SystematicLetter_printDownloadBTN__js80W\",\"loaderBg\":\"SystematicLetter_loaderBg__R_QPb\",\"selectActive\":\"SystematicLetter_selectActive__4GTE1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"addDocumentSection\":\"AddDocumentSection_addDocumentSection__1_aqQ\",\"documentTypeSelector\":\"AddDocumentSection_documentTypeSelector__1XMW_\",\"addDocumentSectionOptionContainer\":\"AddDocumentSection_addDocumentSectionOptionContainer__1jQfU\",\"addDocumentSectionDialog\":\"AddDocumentSection_addDocumentSectionDialog__wkIG1\",\"warningBtn\":\"AddDocumentSection_warningBtn__3nmXf\",\"grayBtn\":\"AddDocumentSection_grayBtn__2vUqQ\",\"basicBtn\":\"AddDocumentSection_basicBtn__2Oymd\",\"headerLabel\":\"AddDocumentSection_headerLabel__3Qzxx\",\"addDocumentSectionOptionList\":\"AddDocumentSection_addDocumentSectionOptionList__3Mxk-\",\"btnContainer\":\"AddDocumentSection_btnContainer__3n7uc\",\"select\":\"AddDocumentSection_select__1E9cd\",\"customNotes\":\"AddDocumentSection_customNotes___iWK8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"goBack\":\"Buttons_goBack__i-J9_\",\"text\":\"Buttons_text__1KhGz\",\"tooltipToggle\":\"Buttons_tooltipToggle__1gua0\",\"noTooltip\":\"Buttons_noTooltip__3LziC\",\"toggleContainer\":\"Buttons_toggleContainer__1R1EY\",\"icon\":\"Buttons_icon__3DMxx\",\"navigationButton\":\"Buttons_navigationButton__1ZZQO\",\"navigation\":\"Buttons_navigation__1eWS-\",\"spacer\":\"Buttons_spacer__3g6gj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"creditAuthorization_content__2Vr7a\",\"modalIcon\":\"creditAuthorization_modalIcon__2OurD\",\"eConsumerCreditAuthModal\":\"creditAuthorization_eConsumerCreditAuthModal__3rwYa\",\"eConsumerCreditAuthModalContent\":\"creditAuthorization_eConsumerCreditAuthModalContent__3b6Oy\",\"modalBody\":\"creditAuthorization_modalBody__2WbM1\",\"buttonWidth\":\"creditAuthorization_buttonWidth__FBggf\",\"answerButton\":\"creditAuthorization_answerButton__13YCK\",\"selectActive\":\"creditAuthorization_selectActive__3cXnk\",\"creditAuth\":\"creditAuthorization_creditAuth__3ktws\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"assetContainer\":\"assets_assetContainer__2fkpz\",\"allassets\":\"assets_allassets__2o-_0\",\"basicInfo\":\"assets_basicInfo__3KPE_\",\"assetRow\":\"assets_assetRow__1ATAl\",\"entryDataCustomize\":\"assets_entryDataCustomize__3abzI\",\"entryData\":\"assets_entryData__3EhLD\",\"entryContainer\":\"assets_entryContainer__2yHrc\",\"inputGroup\":\"assets_inputGroup__2qGNo\",\"marginAuto\":\"assets_marginAuto__-CvRn\",\"w100\":\"assets_w100__2pdNS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"ChoiceQuestionButton_card__2Tjw6\",\"noIcon\":\"ChoiceQuestionButton_noIcon__3uJE6\",\"cardContent\":\"ChoiceQuestionButton_cardContent__V5DQu\",\"hasNoTooltip\":\"ChoiceQuestionButton_hasNoTooltip__1qBt9\",\"iconContainer\":\"ChoiceQuestionButton_iconContainer__3Bmcd\",\"icon\":\"ChoiceQuestionButton_icon__fLpZ0\",\"cardContTitle\":\"ChoiceQuestionButton_cardContTitle__30YKF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Dropzone\":\"DocumentUpload_Dropzone__1xgaT\",\"Highlight\":\"DocumentUpload_Highlight__2TCmW\",\"FileInput\":\"DocumentUpload_FileInput__2MAck\",\"FontColor\":\"DocumentUpload_FontColor__KeJ6N\",\"uploadImgWrapper\":\"DocumentUpload_uploadImgWrapper__18H3v\",\"h4\":\"DocumentUpload_h4__WQwZx\",\"span\":\"DocumentUpload_span__17y36\",\"uploadButton\":\"DocumentUpload_uploadButton__1m7Cj\",\"cardTile\":\"DocumentUpload_cardTile__30b7p\",\"closeTile\":\"DocumentUpload_closeTile__2aY4H\",\"dropbox\":\"DocumentUpload_dropbox__bX4w0\",\"modalDialog\":\"DocumentUpload_modalDialog__2QlB5\",\"modalHeader\":\"DocumentUpload_modalHeader__2s4zI\",\"closeButton\":\"DocumentUpload_closeButton__30w2w\",\"dropzonebg\":\"DocumentUpload_dropzonebg__CMMHD\",\"fileSelected\":\"DocumentUpload_fileSelected__2VQ9j\",\"filePreview\":\"DocumentUpload_filePreview__1mlai\",\"buttonActive\":\"DocumentUpload_buttonActive__2TRDG\",\"buttonDisable\":\"DocumentUpload_buttonDisable__3KgJY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"choices\":\"ChoiceQuestion_choices__1keEn\",\"full\":\"ChoiceQuestion_full__32T-E\",\"noIcon\":\"ChoiceQuestion_noIcon__HR8Xe\",\"howmanyUnits\":\"ChoiceQuestion_howmanyUnits__11CHS\",\"requiredMsg\":\"ChoiceQuestion_requiredMsg__2mulf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"choiceRow\":\"ContactPreference_choiceRow__2Fkd4\",\"choicebg\":\"ContactPreference_choicebg__ujAHt\",\"requiredMsg\":\"ContactPreference_requiredMsg__G6cvn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectDropDown\":\"SelectDropDown_selectDropDown__yH3im\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"appContainer\":\"LoanOfficerViewLayout_appContainer__2Jak4\",\"borderedBackground\":\"LoanOfficerViewLayout_borderedBackground__2Y_Fk\",\"contentContainer\":\"LoanOfficerViewLayout_contentContainer__2F5IU\",\"topHeader\":\"LoanOfficerViewLayout_topHeader__3QYmk\",\"menuButton\":\"LoanOfficerViewLayout_menuButton__32ksJ\",\"logo\":\"LoanOfficerViewLayout_logo__182_F\",\"notificationList\":\"LoanOfficerViewLayout_notificationList__2Xeyv\",\"notify\":\"LoanOfficerViewLayout_notify__16R2d\",\"profile\":\"LoanOfficerViewLayout_profile__3iFQH\",\"dropDownMenu\":\"LoanOfficerViewLayout_dropDownMenu__3YGs2\",\"show\":\"LoanOfficerViewLayout_show__34gbz\",\"application\":\"LoanOfficerViewLayout_application__3A_6z\",\"name\":\"LoanOfficerViewLayout_name__2wJ_6\",\"listDetails\":\"LoanOfficerViewLayout_listDetails__1Ih5r\",\"left\":\"LoanOfficerViewLayout_left__3XK1j\",\"right\":\"LoanOfficerViewLayout_right__12umi\",\"profileDetail\":\"LoanOfficerViewLayout_profileDetail__1-ctG\",\"bgview\":\"LoanOfficerViewLayout_bgview__3Ciaq\",\"footer\":\"LoanOfficerViewLayout_footer__3dnD7\",\"signout\":\"LoanOfficerViewLayout_signout__1wi1z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pendingContainer\":\"CreditReport_pendingContainer__2xtUP\",\"spin\":\"CreditReport_spin__YbWLg\"};","module.exports = __webpack_public_path__ + \"static/media/prequal-letter.6405ac33.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"NoButton\":\"ModalPopup_NoButton__cREC7\",\"Button\":\"ModalPopup_Button__1UYZl\",\"modalBody\":\"ModalPopup_modalBody__2dwcE\",\"modalContent\":\"ModalPopup_modalContent__2Oe9s\"};","module.exports = __webpack_public_path__ + \"static/media/application.6b91bfdd.svg\";","module.exports = __webpack_public_path__ + \"static/media/EmployerInformation.ed4256ba.svg\";","module.exports = __webpack_public_path__ + \"static/media/address.52a2bbf6.svg\";","module.exports = __webpack_public_path__ + \"static/media/MoreInformationRequiered.8df7f05f.svg\";","module.exports = __webpack_public_path__ + \"static/media/yes-do-not-agree.a094da9b.svg\";","module.exports = __webpack_public_path__ + \"static/media/pending.20721efb.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYAAAAIACAYAAACLn7v6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmRhYmFjYmIsIDIwMjEvMDQvMTQtMDA6Mzk6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMi41IChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RDk0M0RBMTJBODYxMUVDQUI2REY5NzgyNkI0NjJERCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RDk0M0RBMjJBODYxMUVDQUI2REY5NzgyNkI0NjJERCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjREOTQzRDlGMkE4NjExRUNBQjZERjk3ODI2QjQ2MkREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjREOTQzREEwMkE4NjExRUNBQjZERjk3ODI2QjQ2MkREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIsxvQAAC29JREFUeNrs3b9u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\"","module.exports = __webpack_public_path__ + \"static/media/documents.7b05b158.svg\";","module.exports = __webpack_public_path__ + \"static/media/progress.89f641bc.svg\";","module.exports = __webpack_public_path__ + \"static/media/LoanOfficer.dbd2a83b.svg\";","module.exports = __webpack_public_path__ + \"static/media/pre-approval.08cff4cf.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"SessionWatcher_modal__c9Xt-\",\"modalHeader\":\"SessionWatcher_modalHeader__2ynXg\",\"modalBody\":\"SessionWatcher_modalBody__xp33a\",\"closButton\":\"SessionWatcher_closButton__33WvJ\",\"button\":\"SessionWatcher_button__2YgR-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"locationSearch\":\"LocationSearch_locationSearch__mRjN8\",\"suggestionBg\":\"LocationSearch_suggestionBg__10s7h\",\"searchResult\":\"LocationSearch_searchResult__2MAhy\"};","module.exports = __webpack_public_path__ + \"static/media/AreYouSelfEmployed.622b4d7c.svg\";","module.exports = __webpack_public_path__ + \"static/media/MonthlyLossOrIncome.c9962f6b.svg\";","module.exports = __webpack_public_path__ + \"static/media/ApplicationFeeStatus.3d916f6f.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkBoxLabel\":\"Checkbox_checkBoxLabel__2782t\",\"customCheckbox\":\"Checkbox_customCheckbox__3uij7\"};","module.exports = __webpack_public_path__ + \"static/media/2YearResidency.7dfbc203.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tooltip\":\"infoIconTooltip_tooltip__3yucC\",\"tooltipText\":\"infoIconTooltip_tooltipText__2nvSj\"};","module.exports = __webpack_public_path__ + \"static/media/AreYouCurrentlyEmployed.41eb52ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/SelectFinicityorManual.4b5b91eb.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notification\":\"NotificationMessages_notification__16NUd\"};","module.exports = __webpack_public_path__ + \"static/media/calculator-icon.51006abd.svg\";","module.exports = __webpack_public_path__ + \"static/media/home.e3d435ec.svg\";","module.exports = __webpack_public_path__ + \"static/media/loan-type.56d9bd9e.svg\";","module.exports = __webpack_public_path__ + \"static/media/purchase.860e4276.svg\";","module.exports = __webpack_public_path__ + \"static/media/refinance.a00cc04c.svg\";","module.exports = __webpack_public_path__ + \"static/media/primary-residence.860e4276.svg\";","module.exports = __webpack_public_path__ + \"static/media/second-home.84bad685.svg\";","module.exports = __webpack_public_path__ + \"static/media/investment.ea35f0db.svg\";","module.exports = __webpack_public_path__ + \"static/media/single-family.860e4276.svg\";","module.exports = __webpack_public_path__ + \"static/media/multi-unit.783b52eb.svg\";","module.exports = __webpack_public_path__ + \"static/media/condo.45f54241.svg\";","module.exports = __webpack_public_path__ + \"static/media/lower-monthly-payment.ff73a508.svg\";","module.exports = __webpack_public_path__ + \"static/media/pay-mortgage.f43cab71.svg\";","module.exports = __webpack_public_path__ + \"static/media/cash-out.9f6218f1.svg\";","module.exports = __webpack_public_path__ + \"static/media/multi-unit-count.d7983ac1.svg\";","module.exports = __webpack_public_path__ + \"static/media/closing-date.56bdd390.svg\";","module.exports = __webpack_public_path__ + \"static/media/borrower-info.73f04770.svg\";","module.exports = __webpack_public_path__ + \"static/media/account-creation.8726e796.svg\";","module.exports = __webpack_public_path__ + \"static/media/girlWithPurpleFolderAndGreenPaper.8e14ee30.svg\";","module.exports = __webpack_public_path__ + \"static/media/girlWithPurpleDressAndSpiralsAroundHer.6c17133d.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"eConsentContainer\":\"eConsent_eConsentContainer__1ChFf\"};","module.exports = __webpack_public_path__ + \"static/media/current-address.1585dc87.svg\";","module.exports = __webpack_public_path__ + \"static/media/coborrowerinformationPrompt.98227529.svg\";","module.exports = __webpack_public_path__ + \"static/media/former-address.e4986260.svg\";","module.exports = __webpack_public_path__ + \"static/media/checkingSavings.a8fb4d2f.svg\";","module.exports = __webpack_public_path__ + \"static/media/giftFunds.db9c5845.svg\";","module.exports = __webpack_public_path__ + \"static/media/pendingSale.c14b2541.svg\";","module.exports = __webpack_public_path__ + \"static/media/personalInvestmentAccount.65be4cf4.svg\";","module.exports = __webpack_public_path__ + \"static/media/retirementFunds.f4498294.svg\";","module.exports = __webpack_public_path__ + \"static/media/securedBorrowedFunds.f0cbec9f.svg\";","module.exports = __webpack_public_path__ + \"static/media/loanEstimate.7ed7d819.svg\";","module.exports = __webpack_public_path__ + \"static/media/StartScreem.10f0f3f3.svg\";","module.exports = __webpack_public_path__ + \"static/media/AreYouAVeteran.9ce96acd.svg\";","module.exports = __webpack_public_path__ + \"static/media/AreYouActiveDutyMilitary.e08c26ef.svg\";","module.exports = __webpack_public_path__ + \"static/media/OwnMoreThan25.bbfa02b1.svg\";","module.exports = __webpack_public_path__ + \"static/media/do-not-agree.6f2c6a87.svg\";","module.exports = __webpack_public_path__ + \"static/media/AccountAddition.eac4c633.svg\";","module.exports = __webpack_public_path__ + \"static/media/AccountsScreen.667ae762.svg\";","module.exports = __webpack_public_path__ + \"static/media/CoBorrower.beb87cc1.svg\";","module.exports = __webpack_public_path__ + \"static/media/Borrower.67f55d9e.svg\";","module.exports = __webpack_public_path__ + \"static/media/Both.07f329bf.svg\";","module.exports = __webpack_public_path__ + \"static/media/primary-residence.860e4276.svg\";","module.exports = __webpack_public_path__ + \"static/media/secondary-home.84bad685.svg\";","module.exports = __webpack_public_path__ + \"static/media/investment-property.ea35f0db.svg\";","module.exports = __webpack_public_path__ + \"static/media/single-family.860e4276.svg\";","module.exports = __webpack_public_path__ + \"static/media/condo.45f54241.svg\";","module.exports = __webpack_public_path__ + \"static/media/multi-unit.783b52eb.svg\";","module.exports = __webpack_public_path__ + \"static/media/number-of-units.dcf0cd60.svg\";","module.exports = __webpack_public_path__ + \"static/media/continue-to-own.dbde862b.svg\";","module.exports = __webpack_public_path__ + \"static/media/property-address.1585dc87.svg\";","module.exports = __webpack_public_path__ + \"static/media/present-market-value.bb635240.svg\";","module.exports = __webpack_public_path__ + \"static/media/owner.ccb02402.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAWCAYAAADXYyzPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF8WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDUgNzkuMTY0NTkwLCAyMDIwLzEyLzA5LTExOjU3OjQ0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTAzLTAzVDE3OjQyOjE2KzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTAzLTAzVDE3OjQyOjE2KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wMy0wM1QxNzo0MjoxNiswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Mzc4NTAwYi0zNDE4LTFjNGItOWIzYi02NWQ4YTNlNDVlMWYiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5MzAxNDdlNS0zOTFmLWM5NDItYjE4Yi00NDBkMTkyNmEwZTkiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5OTI1OTdlNi05MzFhLWQzNDYtYTgyYy03NjIwYmUzNjBmNjIiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk5MjU5N2U2LTkzMWEtZDM0Ni1hODJjLTc2MjBiZTM2MGY2MiIgc3RFdnQ6d2hlbj0iMjAyMS0wMy0wM1QxNzo0MjoxNiswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjEgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2Mzc4NTAwYi0zNDE4LTFjNGItOWIzYi02NWQ4YTNlNDVlMWYiIHN0RXZ0OndoZW49IjIwMjEtMDMtMDNUMTc6NDI6MTYrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6aj8cDAAAC0klEQVRIicWWbUhTURjH//dOt1FqS5spii5rqLQ0zXQorNSymEJUVoJQJhUIfSms0A+BUJQkRVCSBYWEhoiZJfhuokPTIv0QvVB9CMPStem8czvly+lDdO22e1eTYufTOc/zP+d37rnP85zDUErhjcZ6hQrAR8pBCKGUUgx2D6OzsQ+cbQZRMRHIyd+GME0IAECpVDJLBTNSR+1wOOil4hvoemAS2H3lPjhbeQIpGQk8mBBCAcA+PYPHD/thnZhCdPxaJKdvBMuyohuUBNdVNdHrZdWiPrnCF7X91xAcqubBr0feoeTQRcxwDl6n2xyN87fPYGWQygUs+Y+bazulXPj2dRbtDb38eH5uHmVFVwRQAHjx9A3uVNSJriEJ/jxqlgT/8E/w/ZGBl7CMT4rqOhtNonZJ8KrQQLdgdWgQ33c6iKSOOMV9kmBjXobkYjIfGbbvNfDjuJRYyBW+otokQ7xn4N0FO6HPTHSdwDI4XVGEQLWKtwWo/FB4Ks9F66/yw+HiA6LrS0Y1IYTOzc6hp3kAHff7wE3ZERUbiV0Hs6DVrQEAl3Qa7B7Go5oOPp1yj2QjTBPiWTr97yaoXIQQ6rA70VTdhraGXnCTHPSZiYhN0EK5TIHJLzb0tQxh9P0YtDoN9hQasTU7lTF1DNGqc3dhNdug1WngF7AcYx/GMf7RjPVJ0dh3NAcbkmMALJ6S4IstZistLSjHq+G3f73zYyX52LF/CwrST4KbsotqWBmL0qvHYTDqebAguO5VNnkEBYCbF2pgs3DIyjVIahbmF3C55JYg7QTgtvoej6A/W2t9D9JzUt1qHJwT/e3PxME2K7cksPmTBSuC/P+os08vltR/ch8zDAMG7m/IiHVhMBhT+LEgqvWZiXjS9dxjaFpWEgKDVahqKRfVyGQsVoeroVDKF+f9GtXTNo6aWofc1t7foZHacGxKi/P4QeC1AuK1N9d3gl4NgyxfVkQAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAWCAYAAADXYyzPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF8WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDUgNzkuMTY0NTkwLCAyMDIwLzEyLzA5LTExOjU3OjQ0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTAzLTAzVDE3OjQyOjQxKzA1OjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTAzLTAzVDE3OjQyOjQyKzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wMy0wM1QxNzo0Mjo0MiswNTozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4ZmEwZDEzZi0xMGYzLThlNDktOTNkMi01ZGU2MjkzYjI2OGYiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjZTQyODhmNy0xYmM4LTVhNDEtOWZkNS0wZGY5NjU3YjBjOTciIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2MzE3NTJmZS1mNjgwLWI3NGMtOWQwOC1jNTVkMzBjMmRjOGEiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzMTc1MmZlLWY2ODAtYjc0Yy05ZDA4LWM1NWQzMGMyZGM4YSIgc3RFdnQ6d2hlbj0iMjAyMS0wMy0wM1QxNzo0Mjo0MSswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjEgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4ZmEwZDEzZi0xMGYzLThlNDktOTNkMi01ZGU2MjkzYjI2OGYiIHN0RXZ0OndoZW49IjIwMjEtMDMtMDNUMTc6NDI6NDIrMDU6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6MW3VrAAADFElEQVRIicWWX2gcVRSHv7lz78xuNrsmTZbamEpJS0u1EgNtCelDrbZFmiiR4kM12gf1RYrgSxWx6ENLoRVBUCiF2qKCf4IgaUGKqA99CAWDYitBozYlaxpCaptNdndmZ+69Pmitf5rsJAT6e5wzfB/nzJmZ61hruR2RtW64ODRsPzt1Fh1rHCFqAsNKlU0PtPNQ7xayuayzaPHQuQu89/anNDU1Yo0himKssXgpD8eBONLEsUZKF6kkQTmgMHqF9s57yOayc3JrioUr8JWHVC6elyLf0oRUksKlKxhtyK9oprE5x7Wpaa5OXkf5CqUkzpy9/sWtJb6RKIxoXd3Ci4ef4+CJ/dRl0rjSpXfvTg6d2M+uPQ9SKpaT4mp3fCPGWOoyKVatW8nyFXmEK3AcWN6ap7XtLvItzcSxxkMtrdhPefz8wygv9R1CKUmpWMIYw8k3PmHg/S+YmvidXGM9cRQn4iUetdaaO5bl2NbTRfcT21G+whGCDRvX8mjfDtZ3rCEKq0lxycVxpLlzZZ5HntpB79MP46d8hBB07dxI957tbN7WQaUUJhYnHrVUkt9GJ+g/foZsQz1hJUTHmq9PD3L96gzfnPuedH1q6cWuKygVKwx/O4LyFXGssdYy9ss4OJbCpXGklGitE/ESjzoMqqy9bxUvv7WPox8coC6bRirJk/se4/C7r/D4sz3MTJeS4pJ37AiH8mzA5R8LBLMhJjZYa5kYm+TySIHJ8SmkdJde7Kc8frr4K68+cwSLpTwTYK3h5Jv9fHRsgKASkmuoJwiSLVhiMYAQgnIpAGtpaMriSknxWpHZ6RJCCBxR4zu5WDH8uWRxFPP8a3vJZDP0Hx/gu8HhBUlhAcv1zxhj2drdydaeTlrbWjDGLJhRU+ynfeY6LDg4/LdkLbiuSzoz/zs976gHvxqyn3/4JVJJqmH093WtDe+8fgrlKS6cH0Zrc7NuLaMjY3x8bIC+F3bbZc2Nt3wG84rLsxXa1t/NuvY1/6u5rsBoQ8eWDdzfde+/asYaXOkSV+f+YTi368y1qOVaivwBWRslA+1/nrkAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/score.cfebd402.svg\";","module.exports = __webpack_public_path__ + \"static/media/prequal-landing.f346b71e.svg\";","module.exports = __webpack_public_path__ + \"static/media/appFeePayment.205ffae6.svg\";","module.exports = __webpack_public_path__ + \"static/media/prequalLetter.9e92e4ce.svg\";","module.exports = __webpack_public_path__ + \"static/media/signDisclosures.5418bac2.svg\";","module.exports = __webpack_public_path__ + \"static/media/Closed.7e8c636e.svg\";","module.exports = __webpack_public_path__ + \"static/media/CompletingTheApplication.0aae7d52.svg\";","module.exports = __webpack_public_path__ + \"static/media/CreditAnalysis.02694f9a.svg\";","module.exports = __webpack_public_path__ + \"static/media/ProcessingTheApplication.82abbc9f.svg\";","module.exports = __webpack_public_path__ + \"static/media/ReadyForClosing.2fedd3f3.svg\";","module.exports = __webpack_public_path__ + \"static/media/ItemSent.b9ea6959.svg\";","module.exports = __webpack_public_path__ + \"static/media/ViewCreditReport.079e1549.svg\";","module.exports = __webpack_public_path__ + \"static/media/AppFeeCollected.f8ac56e6.svg\";","module.exports = __webpack_public_path__ + \"static/media/CreditReport.24f3ff47.svg\";","module.exports = __webpack_public_path__ + \"static/media/requiredDocs.99122083.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"signInModal\":\"UserSignIn_signInModal__3eIgk\"};","import * as ActionTypes from \"../common/ActionTypes\";\r\n\r\n// STATE\r\nexport interface AccountCreationState {\r\n borrower: Borrower;\r\n borrowerComplete: boolean;\r\n coBorrower: Borrower;\r\n coBorrowerComplete: boolean;\r\n isLoading: boolean;\r\n errorMessage?: string;\r\n validation: any;\r\n oktaNameResult?: boolean;\r\n}\r\n\r\n// MODEL\r\nexport interface Borrower {\r\n loanGuid?: string;\r\n borrowerType?: number;\r\n firstName?: string;\r\n middleName?: string;\r\n lastName?: string;\r\n suffixToName?: string;\r\n phoneNumber?: string;\r\n phoneType?: string;\r\n emailAddressText?: string;\r\n maritalStatusType?: string;\r\n printOnAdditionalBorrowerPage?: boolean;\r\n addresses?: Address[];\r\n currentAddress?: Address;\r\n formerAddress?: Address;\r\n birthDate?: string;\r\n taxIdentificationIdentifier?: string;\r\n realEstateDoesNotApply?: boolean;\r\n totalMonths?: number;\r\n needAdditionalAddress?: boolean;\r\n isCoBorrowerSelectionAllowed?: boolean;\r\n interimLoanStagingId?: number;\r\n}\r\n\r\nexport enum BorrowerType {\r\n PrimaryBorrower = 1,\r\n CoBorrower = 2\r\n}\r\n\r\nexport interface Address {\r\n id?: string;\r\n indexId?: string;\r\n editMode?: boolean;\r\n residencyType?: string;\r\n addressStreetLine1?: string;\r\n addressCity?: string;\r\n addressState?: string;\r\n addressPostalCode?: string;\r\n moveInYear?: number;\r\n moveInMonth?: number;\r\n durationTermYears?: number;\r\n durationTermMonths?: number;\r\n applicantType?: string;\r\n mailingAddressIndicator?: boolean;\r\n coBorrowerAddressChecked?: boolean;\r\n isValid?: boolean;\r\n}\r\n\r\nexport enum AddressType {\r\n CurrentAddress = 1,\r\n FormerAddress = 2\r\n}\r\n\r\n// ACTIONS\r\ninterface UpdateAddressMoveInDate {\r\n type: typeof ActionTypes.UpdateAddressMoveInDate,\r\n moveInYear: number,\r\n moveInMonth: number,\r\n borrowerType: BorrowerType,\r\n addressType: AddressType\r\n}\r\n\r\ninterface UpdateBorrowerProperty {\r\n type: typeof ActionTypes.UpdateBorrowerProperty,\r\n value: any,\r\n propertyName: string,\r\n borrowerType: BorrowerType\r\n}\r\n\r\ninterface UpdateBorrowerAddressProperty {\r\n type: typeof ActionTypes.UpdateBorrowerAddressProperty,\r\n value: string,\r\n propertyName: string,\r\n borrowerType: BorrowerType,\r\n addressType: AddressType\r\n}\r\n\r\ninterface AddAddressProperty {\r\n type: typeof ActionTypes.AddAddressProperty,\r\n address: Address,\r\n borrowerType: BorrowerType,\r\n}\r\n\r\ninterface EditAddressProperty {\r\n type: typeof ActionTypes.EditAddressProperty,\r\n address: Address,\r\n borrowerType: BorrowerType,\r\n}\r\n\r\ninterface DeleteAddressProperty {\r\n type: typeof ActionTypes.DeleteAddressProperty,\r\n id: string,\r\n borrowerType: BorrowerType,\r\n}\r\n\r\ninterface SetAddressSameAsBorrower {\r\n type: typeof ActionTypes.SetAddressSameAsBorrower,\r\n addressType: AddressType,\r\n value: boolean\r\n}\r\n\r\ninterface SetValidation {\r\n type: typeof ActionTypes.SetBorrowerValidation;\r\n validationError: any;\r\n field: string;\r\n}\r\n\r\ninterface ResetFormerAddress {\r\n type: typeof ActionTypes.ResetFormerAddress,\r\n borrowerType: BorrowerType\r\n}\r\n\r\ninterface GetBorrowerInformation {\r\n type: typeof ActionTypes.GetBorrowerInformation,\r\n data: Borrower,\r\n borrowerType: string\r\n}\r\ninterface UpdateOktaResult {\r\n type: typeof ActionTypes.UpdateOktaResult,\r\n oktaNameResult: boolean\r\n}\r\n\r\nexport type KnownAction =\r\n UpdateAddressMoveInDate |\r\n UpdateBorrowerProperty |\r\n UpdateBorrowerAddressProperty |\r\n SetAddressSameAsBorrower |\r\n SetValidation |\r\n ResetFormerAddress |\r\n GetBorrowerInformation |\r\n AddAddressProperty |\r\n EditAddressProperty |\r\n DeleteAddressProperty|\r\nUpdateOktaResult;","import { Action, Reducer } from 'redux';\r\nimport { AppThunkAction } from './';\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface WeatherForecastsState {\r\n isLoading: boolean;\r\n startDateIndex?: number;\r\n forecasts: WeatherForecast[];\r\n}\r\n\r\nexport interface WeatherForecast {\r\n date: string;\r\n temperatureC: number;\r\n temperatureF: number;\r\n summary: string;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n\r\ninterface RequestWeatherForecastsAction {\r\n type: 'REQUEST_WEATHER_FORECASTS';\r\n startDateIndex: number;\r\n}\r\n\r\ninterface ReceiveWeatherForecastsAction {\r\n type: 'RECEIVE_WEATHER_FORECASTS';\r\n startDateIndex: number;\r\n forecasts: WeatherForecast[];\r\n}\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\ntype KnownAction = RequestWeatherForecastsAction | ReceiveWeatherForecastsAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n requestWeatherForecasts: (startDateIndex: number): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n const appState = getState();\r\n if (appState && appState.weatherForecasts && startDateIndex !== appState.weatherForecasts.startDateIndex) {\r\n fetch(`weatherforecast`)\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_WEATHER_FORECASTS', startDateIndex: startDateIndex, forecasts: data });\r\n });\r\n\r\n dispatch({ type: 'REQUEST_WEATHER_FORECASTS', startDateIndex: startDateIndex });\r\n }\r\n }\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\n\r\nconst unloadedState: WeatherForecastsState = { forecasts: [], isLoading: false };\r\n\r\nexport const reducer: Reducer = (state: WeatherForecastsState | undefined, incomingAction: Action): WeatherForecastsState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'REQUEST_WEATHER_FORECASTS':\r\n return {\r\n startDateIndex: action.startDateIndex,\r\n forecasts: state.forecasts,\r\n isLoading: true\r\n };\r\n case 'RECEIVE_WEATHER_FORECASTS':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.startDateIndex === state.startDateIndex) {\r\n return {\r\n startDateIndex: action.startDateIndex,\r\n forecasts: action.forecasts,\r\n isLoading: false\r\n };\r\n }\r\n break;\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { AccountInformationState, KnownAction } from \"../store/accountInformationStore\";\r\n\r\nconst unloadedState: AccountInformationState = {\r\n loanPurposeChoice: undefined,\r\n userId: undefined,\r\n occupancyTypeChoice: undefined,\r\n propertyTypeChoice: undefined,\r\n closingDateChoice: undefined,\r\n priorityChoice: undefined,\r\n howManyUnitsChoice: undefined,\r\n borrowerFirstName: undefined,\r\n borrowerMiddleName: undefined,\r\n borrowerLastName: undefined,\r\n borrowerNameSuffix: undefined,\r\n borrowerEmail: undefined,\r\n borrowerPhoneNumber: undefined,\r\n initialAccountInformationSubmitted: false,\r\n loanGuid: \"\",\r\n isLoading: false,\r\n accountInformationCheck: false,\r\n borrowerType: \"\"\r\n}\r\n\r\nexport const accountInformationReducer: Reducer = (state: AccountInformationState | undefined, incomingAction: Action): AccountInformationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.UpdateLoanPurposeChoice:\r\n return {\r\n ...state,\r\n loanPurposeChoice: action.loanPurpose\r\n };\r\n case ActionTypes.UpdateUserId:\r\n return {\r\n ...state,\r\n userId: action.userId\r\n };\r\n case ActionTypes.UpdateOccupancyTypeChoice:\r\n return {\r\n ...state,\r\n occupancyTypeChoice: action.occupancyType\r\n };\r\n case ActionTypes.UpdatePropertyTypeChoice:\r\n return {\r\n ...state,\r\n propertyTypeChoice: action.propertyType\r\n };\r\n case ActionTypes.UpdateClosingDateChoice:\r\n return {\r\n ...state,\r\n closingDateChoice: action.closingDate\r\n };\r\n case ActionTypes.UpdatePriorityChoice:\r\n return {\r\n ...state,\r\n priorityChoice: action.priority\r\n };\r\n case ActionTypes.UpdateHowManyUnitsChoice:\r\n return {\r\n ...state,\r\n howManyUnitsChoice: action.howManyUnits\r\n };\r\n case ActionTypes.UpdateBorrowerFirstName:\r\n return {\r\n ...state,\r\n borrowerFirstName: action.firstName\r\n };\r\n case ActionTypes.UpdateBorrowerMiddleName:\r\n return {\r\n ...state,\r\n borrowerMiddleName: action.middleName\r\n };\r\n case ActionTypes.UpdateBorrowerLastName:\r\n return {\r\n ...state,\r\n borrowerLastName: action.lastName\r\n };\r\n case ActionTypes.UpdateBorrowerNameSuffix:\r\n return {\r\n ...state,\r\n borrowerNameSuffix: action.nameSuffix\r\n };\r\n case ActionTypes.UpdateBorrowerEmail:\r\n return {\r\n ...state,\r\n borrowerEmail: action.email\r\n };\r\n case ActionTypes.UpdateBorrowerPhoneNumber:\r\n return {\r\n ...state,\r\n borrowerPhoneNumber: action.phoneNumber\r\n };\r\n case ActionTypes.SubmitInitialAccountInformation:\r\n return {\r\n ...state,\r\n initialAccountInformationSubmitted: action.value\r\n };\r\n case ActionTypes.SetLoanGuid:\r\n return {\r\n ...state,\r\n loanGuid: action.loanGuid\r\n };\r\n case ActionTypes.IsLoading:\r\n return {\r\n ...state,\r\n isLoading: action.isLoading\r\n };\r\n case ActionTypes.AccountInformationCheck: {\r\n return { ...state, accountInformationCheck: action.accountInformationCheck };\r\n };\r\n case ActionTypes.SetBorrowerType: {\r\n return { ...state, borrowerType: action.borrowerType };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","export enum BorrowerTypeEnum {\r\n Borrower = \"Borrower\",\r\n CoBorrower = \"CoBorrower\",\r\n Both = \"Both\"\r\n}","import { format } from \"date-fns\";\r\n\r\nexport const dollarFormat = (value?: string): string => {\r\n if (value) {\r\n return `$${value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\")}`;\r\n }\r\n return \"$0.00\";\r\n};\r\n\r\nexport const threeDecimalFormat = (value?: string): string => {\r\n if (value) {\r\n const num = parseFloat(value).toFixed(3);\r\n return num.toString();\r\n }\r\n return \"0.000\";\r\n};\r\n\r\nexport const percentageFormat = (value?: string): string => {\r\n return `${threeDecimalFormat(value)}%`;\r\n};\r\n\r\nexport const isExpired = (lockExpiration?: string): boolean => {\r\n if (lockExpiration) {\r\n const currentDate = new Date();\r\n const lockExpirationDate = new Date(lockExpiration);\r\n if (lockExpirationDate <= currentDate) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const wordSpace = (value?: string): string => {\r\n if (value) {\r\n return value.replace(/([A-Z]+)/g, \" $1\").trim();\r\n }\r\n return \"\";\r\n};\r\n\r\nexport const inputDateFormat = (value: string | Date | null): string => {\r\n if (value == null) {\r\n return \"\";\r\n }\r\n\r\n if (value instanceof Date) {\r\n if (isNaN(value.getTime())) {\r\n return \"\";\r\n }\r\n return value.toISOString().substring(0, 10)\r\n }\r\n\r\n if (Date.parse(value)) {\r\n return new Date(value).toISOString().substring(0, 10);\r\n }\r\n return \"\";\r\n};\r\n\r\n\r\nexport const standardDateFormat = (value: string): string => {\r\n if (Date.parse(value)) {\r\n return new Date(value).toLocaleDateString();\r\n }\r\n return \"\";\r\n};\r\n\r\nexport const isNullOrWhiteSpace = (value: string | undefined): boolean => {\r\n return !value || !value.trim();\r\n};\r\n\r\nexport const validateBirthDate = (dateString: any) => {\r\n var today = new Date();\r\n if (Object.prototype.toString.call(dateString) === \"[object Date]\") {\r\n if (!isNaN(dateString.getTime())) {\r\n dateString = format(dateString, \"MM/dd/yyyy\");\r\n }\r\n } else {\r\n let isValid = isValidDate(dateString);\r\n if (!isValid) {\r\n return isValid;\r\n }\r\n }\r\n\r\n var birthDate = new Date(dateString);\r\n\r\n var age = today.getFullYear() - birthDate.getFullYear();\r\n var m = today.getMonth() - birthDate.getMonth();\r\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\r\n age--;\r\n }\r\n if (age >= 18 && age < 100) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n\r\nexport const isValidDate = (date: any) => {\r\n // Assumes date is \"mm/dd/yyyy\"\r\n if (! /^\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d$/.test(date)) {\r\n return false;\r\n }\r\n if (isNullOrWhiteSpace(date)) {\r\n return false;\r\n }\r\n const parts = date.split('/').map((p: any) => parseInt(p, 10));\r\n parts[0] -= 1;\r\n const d = new Date(parts[2], parts[0], parts[1]);\r\n return d.getMonth() === parts[0] && d.getDate() === parts[1] && d.getFullYear() === parts[2];\r\n}\r\n\r\nexport const toDate = (date: any) => {\r\n if (Object.prototype.toString.call(date) === \"[object Date]\") {\r\n if (!isNaN(date.getTime())) {\r\n date = format(date, \"MM/dd/yyyy\");\r\n }\r\n }\r\n return date;\r\n}\r\n\r\nexport const dateDiff = (startingDate: any, endingDate?: any) => {\r\n if (startingDate) {\r\n var startDate = new Date(new Date(startingDate).toISOString().substr(0, 10));\r\n if (!endingDate) {\r\n endingDate = new Date().toISOString().substr(0, 10); // need date in YYYY-MM-DD format\r\n }\r\n var endDate = new Date(endingDate);\r\n if (startDate > endDate) {\r\n var swap = startDate;\r\n startDate = endDate;\r\n endDate = swap;\r\n }\r\n var startYear = startDate.getFullYear();\r\n var february = (startYear % 4 === 0 && startYear % 100 !== 0) || startYear % 400 === 0 ? 29 : 28;\r\n var daysInMonth = [31, february, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n var yearDiff = endDate.getFullYear() - startYear;\r\n var monthDiff = endDate.getMonth() - startDate.getMonth();\r\n if (monthDiff < 0) {\r\n yearDiff--;\r\n monthDiff += 12;\r\n }\r\n var dayDiff = endDate.getDate() - startDate.getDate();\r\n if (dayDiff < 0) {\r\n if (monthDiff > 0) {\r\n monthDiff--;\r\n } else {\r\n yearDiff--;\r\n monthDiff = 11;\r\n }\r\n dayDiff += daysInMonth[startDate.getMonth()];\r\n }\r\n\r\n let totalMonths = yearDiff * 12 + monthDiff;\r\n return totalMonths;\r\n }\r\n return 0;\r\n}\r\n\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { AccountCreationState, AddressType, BorrowerType, KnownAction, Address } from \"../store/accountCreationStore\";\r\nimport { dateDiff } from '../common/helper/formatHelper';\r\nimport { BorrowerTypeEnum } from '../common/BorrowerTypeEnum';\r\n\r\nconst unloadedState: AccountCreationState = {\r\n borrower: {\r\n firstName: undefined,\r\n middleName: undefined,\r\n lastName: undefined,\r\n suffixToName: undefined,\r\n phoneNumber: undefined,\r\n phoneType: undefined,\r\n emailAddressText: undefined,\r\n maritalStatusType: undefined,\r\n currentAddress: undefined,\r\n formerAddress: undefined,\r\n birthDate: undefined,\r\n taxIdentificationIdentifier: undefined,\r\n totalMonths: 0,\r\n isCoBorrowerSelectionAllowed: undefined\r\n },\r\n borrowerComplete: false,\r\n coBorrower: {},\r\n coBorrowerComplete: false,\r\n oktaNameResult: false,\r\n isLoading: false,\r\n validation: undefined,\r\n errorMessage: ''\r\n}\r\n\r\nconst calculateTotalDuration = (currentAddress: Address | undefined, additionalAddressList: Address[], moveInYear: number | undefined, moveInMonth: number | undefined) => {\r\n let totalResidencyMonths = 0;\r\n \r\n if (additionalAddressList && additionalAddressList.filter(x => x.residencyType === \"Prior\").length > 0) {\r\n let lastAddress = additionalAddressList[additionalAddressList.length - 1];\r\n if (lastAddress && lastAddress.moveInMonth != undefined && lastAddress.moveInYear) {\r\n let lastAddressDate = new Date(lastAddress.moveInYear ?? 0, lastAddress.moveInMonth - 1);\r\n totalResidencyMonths = dateDiff(lastAddressDate);\r\n }\r\n }\r\n else {\r\n if (currentAddress && currentAddress.moveInYear && currentAddress.moveInMonth != undefined) {\r\n let currentAddressDate = new Date(currentAddress.moveInYear ?? 0, currentAddress.moveInMonth - 1);\r\n if (currentAddressDate > new Date()) {\r\n totalResidencyMonths = -1;\r\n }\r\n else {\r\n totalResidencyMonths = dateDiff(currentAddressDate);\r\n }\r\n }\r\n }\r\n return totalResidencyMonths;\r\n}\r\n\r\nexport const accountCreationReducer: Reducer = (state: AccountCreationState | undefined, incomingAction: Action): AccountCreationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.UpdateAddressMoveInDate:\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n if (action.addressType === AddressType.CurrentAddress) {\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n currentAddress: {\r\n ...state.borrower.currentAddress,\r\n moveInYear: action.moveInYear,\r\n moveInMonth: action.moveInMonth\r\n },\r\n totalMonths: calculateTotalDuration(state.borrower.currentAddress, state.borrower.addresses ?? [], action.moveInYear, action.moveInMonth)\r\n }\r\n };\r\n }\r\n } else {\r\n if (action.addressType === AddressType.CurrentAddress) {\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n currentAddress: {\r\n ...state.coBorrower?.currentAddress,\r\n moveInYear: action.moveInYear,\r\n moveInMonth: action.moveInMonth\r\n },\r\n totalMonths: calculateTotalDuration(state.coBorrower.currentAddress, state.coBorrower.addresses ?? [], action.moveInYear, action.moveInMonth)\r\n },\r\n };\r\n }\r\n }\r\n return { ...state }\r\n case ActionTypes.UpdateBorrowerProperty:\r\n if (action.propertyName == \"printOnAdditionalBorrowerPage\") {\r\n state.borrower.printOnAdditionalBorrowerPage = action.value;\r\n }\r\n return action.borrowerType === BorrowerType.PrimaryBorrower ?\r\n {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value\r\n }\r\n } :\r\n {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value\r\n }\r\n };\r\n case ActionTypes.UpdateBorrowerAddressProperty:\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n if (action.addressType === AddressType.CurrentAddress) {\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n currentAddress: {\r\n ...state.borrower.currentAddress,\r\n [action.propertyName]: action.value,\r\n residencyType: \"Current\",\r\n applicantType: \"Borrower\",\r\n mailingAddressIndicator: false\r\n },\r\n },\r\n\r\n };\r\n }\r\n else {\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n formerAddress: {\r\n ...state.borrower.formerAddress,\r\n [action.propertyName]: action.value,\r\n residencyType: \"Prior\",\r\n applicantType: \"Borrower\",\r\n mailingAddressIndicator: false\r\n }\r\n }\r\n };\r\n }\r\n }\r\n else {\r\n if (action.addressType === AddressType.CurrentAddress) {\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n currentAddress: {\r\n ...state.coBorrower?.currentAddress,\r\n [action.propertyName]: action.value,\r\n residencyType: \"Current\",\r\n applicantType: \"CoBorrower\",\r\n mailingAddressIndicator: false\r\n }\r\n }\r\n };\r\n }\r\n else {\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n formerAddress: {\r\n ...state.coBorrower?.formerAddress,\r\n [action.propertyName]: action.value,\r\n residencyType: \"Prior\",\r\n applicantType: \"CoBorrower\",\r\n mailingAddressIndicator: false\r\n }\r\n }\r\n };\r\n }\r\n }\r\n case ActionTypes.AddAddressProperty:\r\n {\r\n let borrower = state.borrower;\r\n let coBorrower = state.coBorrower;\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower && borrower && borrower.addresses) {\r\n const copyItems = borrower.addresses;\r\n if (borrower && (borrower.addresses == undefined || (borrower.addresses && borrower.addresses.length < 1))) {\r\n borrower.addresses = [];\r\n borrower.addresses.push(action.address);\r\n borrower.totalMonths = calculateTotalDuration(borrower.currentAddress, borrower.addresses, state.borrower.currentAddress?.moveInYear, state.borrower.currentAddress?.moveInMonth)\r\n }\r\n else if (borrower && borrower.addresses && copyItems) {\r\n copyItems.splice(copyItems.length, 0, action.address);\r\n borrower.addresses = copyItems;\r\n borrower.totalMonths = calculateTotalDuration(borrower.currentAddress, borrower.addresses, state.borrower.currentAddress?.moveInYear, state.borrower.currentAddress?.moveInMonth)\r\n }\r\n }\r\n else if (action.borrowerType === BorrowerType.CoBorrower && coBorrower && coBorrower.addresses) {\r\n const copyItems = coBorrower.addresses;\r\n if (coBorrower && (coBorrower.addresses == undefined || (coBorrower.addresses && coBorrower.addresses.length < 1))) {\r\n coBorrower.addresses = [];\r\n coBorrower.addresses.push(action.address);\r\n coBorrower.totalMonths = calculateTotalDuration(coBorrower.currentAddress, coBorrower.addresses, state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth)\r\n }\r\n else if (coBorrower && coBorrower.addresses && copyItems) {\r\n copyItems.splice(copyItems.length, 0, action.address);\r\n coBorrower.addresses = copyItems;\r\n coBorrower.totalMonths = calculateTotalDuration(coBorrower.currentAddress, coBorrower.addresses, state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth)\r\n }\r\n }\r\n return {\r\n ...state,\r\n borrower: {\r\n ...borrower\r\n },\r\n coBorrower: {\r\n ...coBorrower\r\n }\r\n }\r\n }\r\n case ActionTypes.EditAddressProperty: {\r\n let borrower = state.borrower;\r\n let coBorrower = state.coBorrower;\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower && borrower && borrower.addresses) {\r\n let index = borrower.addresses.findIndex(x => x.id == action.address.id);\r\n if (index > -1) {\r\n borrower.addresses[index] = action.address;\r\n borrower.totalMonths = calculateTotalDuration(borrower.currentAddress, borrower.addresses, state.borrower.currentAddress?.moveInYear, state.borrower.currentAddress?.moveInMonth)\r\n }\r\n }\r\n else if (action.borrowerType === BorrowerType.CoBorrower && coBorrower && coBorrower.addresses) {\r\n let index = coBorrower.addresses.findIndex(x => x.id == action.address.id);\r\n if (index > -1) {\r\n coBorrower.addresses[index] = action.address;\r\n coBorrower.totalMonths = calculateTotalDuration(coBorrower.currentAddress, coBorrower.addresses, state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth)\r\n }\r\n }\r\n return {\r\n ...state,\r\n borrower: {\r\n ...borrower\r\n },\r\n coBorrower: {\r\n ...coBorrower\r\n }\r\n }\r\n }\r\n case ActionTypes.DeleteAddressProperty:\r\n if (action.borrowerType == BorrowerType.PrimaryBorrower && state.borrower && state.borrower.addresses) {\r\n \r\n if (state.borrower.addresses.length == 1) {\r\n let borrower = state.borrower;\r\n borrower.addresses = [];\r\n borrower.totalMonths = calculateTotalDuration(state.borrower.currentAddress, state.borrower.addresses, state.borrower.currentAddress?.moveInYear, state.borrower.currentAddress?.moveInMonth)\r\n return {\r\n ...state, borrower: { ...borrower }\r\n }\r\n }\r\n else {\r\n let copyItems = state.borrower.addresses.slice();\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n let borrower = state.borrower;\r\n borrower.addresses = copyItems;\r\n borrower.totalMonths = calculateTotalDuration(state.borrower.currentAddress, state.borrower.addresses,state.borrower.currentAddress?.moveInYear, state.borrower.currentAddress?.moveInMonth)\r\n return {\r\n ...state, borrower: { ...borrower }\r\n }\r\n }\r\n }\r\n else if (action.borrowerType == BorrowerType.CoBorrower && state.coBorrower && state.coBorrower.addresses) {\r\n if (state.coBorrower.addresses.length == 1) {\r\n let coBorrower = state.coBorrower;\r\n coBorrower.addresses = [];\r\n coBorrower.totalMonths = calculateTotalDuration(state.coBorrower.currentAddress, state.coBorrower.addresses, state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth)\r\n return {\r\n ...state, coBorrower: { ...coBorrower }\r\n }\r\n }\r\n else {\r\n let copyItems = state.coBorrower.addresses.slice();\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n let coBorrower = state.coBorrower;\r\n coBorrower.addresses = copyItems;\r\n coBorrower.totalMonths = calculateTotalDuration(state.coBorrower.currentAddress, state.coBorrower.addresses, state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth)\r\n return {\r\n ...state, coBorrower: { ...coBorrower }\r\n }\r\n }\r\n }\r\n else {\r\n return {\r\n ...state\r\n }\r\n }\r\n case ActionTypes.SetAddressSameAsBorrower:\r\n if (action.addressType == AddressType.CurrentAddress) {\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n currentAddress: {\r\n addressCity: action.value ? state.borrower.currentAddress?.addressCity : \"\",\r\n addressPostalCode: action.value ? state.borrower.currentAddress?.addressPostalCode : \"\",\r\n addressState: action.value ? state.borrower.currentAddress?.addressState : \"\",\r\n addressStreetLine1: action.value ? state.borrower.currentAddress?.addressStreetLine1 : \"\",\r\n residencyType: \"Current\",\r\n applicantType: BorrowerTypeEnum.CoBorrower,\r\n mailingAddressIndicator: false,\r\n coBorrowerAddressChecked: action.value\r\n },\r\n totalMonths: calculateTotalDuration(state.coBorrower.currentAddress, state.coBorrower.addresses ?? [], state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth)\r\n }\r\n };\r\n }\r\n else {\r\n state.coBorrower.addresses = [];\r\n let adddres = state.borrower.addresses?.filter(x => x.residencyType == \"Prior\");\r\n adddres?.forEach((item: Address) => {\r\n item.applicantType = BorrowerTypeEnum.CoBorrower;\r\n item.coBorrowerAddressChecked = action.value;\r\n });\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n addresses: action.value ? adddres : [],\r\n formerAddress: {\r\n addressCity: action.value ? state.borrower.formerAddress?.addressCity : \"\",\r\n addressPostalCode: action.value ? state.borrower.formerAddress?.addressPostalCode : \"\",\r\n addressState: action.value ? state.borrower.formerAddress?.addressState : \"\",\r\n addressStreetLine1: action.value ? state.borrower.formerAddress?.addressStreetLine1 : \"\",\r\n residencyType: \"Prior\",\r\n applicantType: BorrowerTypeEnum.CoBorrower,\r\n mailingAddressIndicator: false,\r\n coBorrowerAddressChecked: action.value\r\n },\r\n totalMonths: calculateTotalDuration(state.coBorrower.currentAddress, action.value ? adddres ?? [] : [], state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth)\r\n }\r\n };\r\n }\r\n case ActionTypes.SetBorrowerValidation:\r\n\r\n let copyValidation = { ...state.validation };\r\n if (action.validationError) {\r\n copyValidation[action.field] = action.validationError;\r\n }\r\n else {\r\n if (copyValidation[action.field]) {\r\n delete copyValidation[action.field];\r\n }\r\n }\r\n return {\r\n ...state,\r\n validation: copyValidation\r\n }\r\n case ActionTypes.ResetFormerAddress:\r\n if (action.borrowerType == BorrowerType.PrimaryBorrower) {\r\n state?.borrower?.addresses?.filter(x => x.residencyType == 'Prior').map((item, index) => {\r\n if (state && state.borrower && state.borrower.addresses)\r\n state.borrower.addresses.splice(index, 1);\r\n });\r\n }\r\n else if (action.borrowerType == BorrowerType.CoBorrower) {\r\n state.coBorrower.addresses?.filter(x => x.residencyType == 'Prior').map((item, index) => {\r\n if (state && state.coBorrower && state.coBorrower.addresses)\r\n state.coBorrower.addresses.splice(index, 1);\r\n });\r\n }\r\n return { ...state };\r\n case ActionTypes.GetBorrowerInformation: {\r\n if (action.borrowerType) {\r\n switch (action.borrowerType) {\r\n case \"Borrower\": {\r\n action.data.addresses = action.data.addresses ?? [];\r\n const index = action.data.addresses.findIndex((i: any) => i.residencyType === \"Current\");\r\n action.data.currentAddress = action.data.addresses[index];\r\n action.data.addresses.splice(index, 1);\r\n return {\r\n ...state,\r\n borrower: {\r\n ...action.data,\r\n totalMonths: calculateTotalDuration(action.data.currentAddress, action.data.addresses ?? [], state.borrower.currentAddress?.moveInYear, state.borrower.currentAddress?.moveInMonth),\r\n }\r\n\r\n }\r\n }\r\n case \"CoBorrower\": {\r\n action.data.addresses = action.data.addresses ?? [];\r\n const index = action.data.addresses.findIndex((i: any) => i.residencyType === \"Current\");\r\n action.data.currentAddress = action.data.addresses[index];\r\n action.data.addresses.splice(index, 1);\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...action.data,\r\n totalMonths: calculateTotalDuration(action.data.currentAddress, action.data.addresses ?? [], state.coBorrower.currentAddress?.moveInYear, state.coBorrower.currentAddress?.moveInMonth),\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return { ...state };\r\n };\r\n case ActionTypes.UpdateOktaResult: {\r\n return { ...state, oktaNameResult: action.oktaNameResult };\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import * as ActionTypes from \"../common/ActionTypes\";\r\n\r\n// STATE\r\n\r\nexport interface EmploymentInformationState {\r\n borrower: Borrower;\r\n borrowerComplete: boolean;\r\n submittedBorrower: boolean;\r\n hasCoBorrower: boolean;\r\n coBorrower: Borrower;\r\n coBorrowerComplete?: boolean;\r\n submittedCoBorrower: boolean;\r\n previousId: string;\r\n previousBorrower?: BorrowerType;\r\n}\r\n\r\nexport interface Borrower {\r\n name?: string;\r\n loanGuid?: string;\r\n borrowerType?: BorrowerType;\r\n veteran?: boolean;\r\n activeMilitaryDuty?: boolean;\r\n currentEmploymentDoesNotApply?: boolean;\r\n selfDeclaredMilitaryServiceIndicator?: boolean;\r\n additionalEmploymentDoesNotApply?: boolean;\r\n previousGrossMonthlyIncome?: string;\r\n printOnAdditionalBorrowerPage?: boolean;\r\n previousEmploymentDoesNotApply?: boolean;\r\n employments: Employment[];\r\n interimLoanStagingId?: number;\r\n}\r\n\r\nexport enum BorrowerType {\r\n PrimaryBorrower = 0,\r\n CoBorrower = 1\r\n}\r\n\r\nexport interface Employment {\r\n id: string;\r\n currentEmploymentIndicator?: boolean;\r\n owner: string;\r\n selfEmployedIndicator?: boolean;\r\n ownershipInterestType?: string;\r\n employmentMonthlyIncomeAmount?: number;\r\n employerName: string;\r\n positionDescription: string;\r\n employmentStartDate: string;\r\n endDate?: Date;\r\n addressCity: string;\r\n addressState: string;\r\n addressPostalCode: string;\r\n timeOnJobTermYears?: number;\r\n timeOnJobTermMonths?: number;\r\n basePayAmount: string;\r\n overtimeAmount: string;\r\n bonusAmount: string;\r\n commissionsAmount: string;\r\n otherAmount: string;\r\n militaryEntitlement?: number;\r\n urlA2020StreetAddress: string;\r\n employmentId: number;\r\n totalAmount: number;\r\n needAdditionalEmployment: boolean;\r\n}\r\n\r\n// ACTIONS\r\ninterface UpdateEmploymentInformationProperty {\r\n type: typeof ActionTypes.UpdateEmploymentInformationProperty,\r\n value: any,\r\n propertyName: string,\r\n borrowerType: BorrowerType,\r\n employmentItemId: string\r\n}\r\n\r\ninterface SubmitEmploymentInformation {\r\n type: typeof ActionTypes.SubmitEmploymentInformation,\r\n borrowerData: Borrower\r\n}\r\n\r\ninterface SubmittedEmploymentInformation {\r\n type: typeof ActionTypes.SubmittedEmploymentInformation,\r\n borrowerType: BorrowerType,\r\n value: boolean\r\n}\r\n\r\ninterface AddEmploymentItem {\r\n type: typeof ActionTypes.AddEmploymentItem,\r\n data: Employment,\r\n borrowerType: BorrowerType,\r\n id: string\r\n}\r\n\r\ninterface DeleteEmploymentItem {\r\n type: typeof ActionTypes.DeleteEmploymentItem,\r\n id: string,\r\n borrowerType: BorrowerType,\r\n}\r\n\r\ninterface ResetEmploymentItem {\r\n type: typeof ActionTypes.ResetEmploymentItem,\r\n employmentItemId: string,\r\n borrowerType: BorrowerType,\r\n}\r\n\r\ninterface GetEmploymentInformation {\r\n type: typeof ActionTypes.GetEmploymentInformation,\r\n data: Borrower,\r\n borrowerType: string\r\n}\r\n\r\ninterface ReIndexingEmployment {\r\n type: typeof ActionTypes.ReIndexingEmployment,\r\n data: Employment[],\r\n borrowerType: BorrowerType\r\n}\r\n\r\nexport type KnownAction =\r\n UpdateEmploymentInformationProperty |\r\n SubmitEmploymentInformation |\r\n AddEmploymentItem |\r\n SubmittedEmploymentInformation |\r\n DeleteEmploymentItem |\r\n ResetEmploymentItem |\r\n GetEmploymentInformation |\r\n ReIndexingEmployment;","import * as EmploymentInformationStore from \"../../store/employmentInformationStore\"\r\n\r\nexport const DummyData: EmploymentInformationStore.Employment = {\r\n id: \"Employment/0\",\r\n employmentId: 0,\r\n owner: \"\",\r\n employerName: \"\",\r\n positionDescription: \"\",\r\n employmentStartDate: \"\",\r\n addressCity: \"\",\r\n addressState: \"\",\r\n addressPostalCode: \"\",\r\n timeOnJobTermYears: 0,\r\n timeOnJobTermMonths: 0,\r\n basePayAmount: \"\",\r\n overtimeAmount: \"\",\r\n bonusAmount: \"\",\r\n commissionsAmount: \"\",\r\n otherAmount: \"\",\r\n needAdditionalEmployment: false,\r\n militaryEntitlement: undefined,\r\n urlA2020StreetAddress: \"\",\r\n totalAmount: 0,\r\n selfEmployedIndicator: undefined,\r\n currentEmploymentIndicator: undefined\r\n};\r\n\r\nexport enum EmploymentInformationFields {\r\n Veteran = \"veteran\",\r\n ActiveMilitaryDuty = \"activeMilitaryDuty\",\r\n CurrentEmploymentDoesNotApply = \"currentEmploymentDoesNotApply\",\r\n SelfEmployedIndicator = \"selfEmployedIndicator\",\r\n SelfDeclaredMilitaryServiceIndicator = \"selfDeclaredMilitaryServiceIndicator\",\r\n AdditionalEmploymentDoesNotApply = \"additionalEmploymentDoesNotApply\",\r\n PreviousGrossMonthlyIncome = \"previousGrossMonthlyIncome\",\r\n PreviousEmploymentDoesNotApply = \"previousEmploymentDoesNotApply\",\r\n\r\n //employment\r\n TimeOnJobTermYears = \"timeOnJobTermYears\",\r\n TimeOnJobTermMonths = \"timeOnJobTermMonths\",\r\n CurrentEmploymentIndicator = \"currentEmploymentIndicator\",\r\n OwnershipInterestType = \"ownershipInterestType\",\r\n MonthlyIncomeAmount = \"monthlyIncomeAmount\",\r\n BasePayAmount = \"basePayAmount\",\r\n OvertimeAmount = \"overtimeAmount\",\r\n BonusAmount = \"bonusAmount\",\r\n CommissionsAmount = \"commissionsAmount\",\r\n OtherAmount = \"otherAmount\",\r\n TotalAmount = \"totalAmount\",\r\n EmployerName = \"employerName\",\r\n PositionDescription = \"positionDescription\",\r\n StartDate = \"employmentStartDate\",\r\n StreetAddress = \"urlA2020StreetAddress\",\r\n AddressState = \"addressState\",\r\n AddressCity = \"addressCity\",\r\n AddressPostalCode = \"addressPostalCode\",\r\n EmploymentMonthlyIncomeAmount = \"employmentMonthlyIncomeAmount\",\r\n Owner = \"owner\",\r\n IncomeDetail = \"incomeDetail\"\r\n};\r\n\r\nexport enum EmploymentInformationQuestions {\r\n Veteran = \"Are You a Veteran?\",\r\n ActiveMilitaryDuty = \"Are you in the active duty military?\",\r\n CurrentEmployment = \"Are you currently employed?\",\r\n AdditionalEmployment = \"Do you have past additional employment?\",\r\n SelfEmployed = \"Are you self-employed?\",\r\n AdditionalSelfEmployment = \"Were you self-employed?\",\r\n OwnershipInterestType = \"In your business do you have an ownership share of more than 25%?\",\r\n MonthlyIncomeAmount = \"What is your monthly income (or loss)?\",\r\n AdditionalMonthlyIncomeAmount = \"What was your previous gross monthly income (or loss)?\",\r\n Finished = \"We need information from the past two years.Please take the time to fill out a few more fields\"\r\n};\r\n\r\nexport enum EmploymentScreensNew {\r\n Landing = 0,\r\n Veteran = 1,\r\n ActiveMilitaryDuty = 2,\r\n CurrentlyEmployed = 3,\r\n SelfEmployed = 4,\r\n OwnerShipShare = 5,\r\n MonthlyIncome = 6,\r\n EmployerDetail = 7,\r\n IncomeDetail = 8,\r\n AdditionalEmployment = 11,\r\n AdditonalSelfEmployment = 12,\r\n AdditionalGrossMonthlyIncome = 13,\r\n PastEmployerDetail = 14,\r\n PastIncomeDetail = 15,\r\n AdditonalSelfEmployment1 = 21,\r\n PreviousGrossMonthlyIncome1 = 22,\r\n PastEmployerDetail1 = 23,\r\n Finished = 31,\r\n PreviousEmployment = 32,\r\n PreviousAdditionalInformationLanding = 33,\r\n PastIncomeDetail1 = 34\r\n};\r\n\r\nexport interface ScreenDetails {\r\n header?: string\r\n infographics?: any\r\n fieldName: EmploymentInformationFields[]\r\n borrowerType?: EmploymentInformationStore.BorrowerType\r\n nextScreen?: EmploymentScreensNew\r\n skipScreen?: EmploymentScreensNew\r\n prevScreen?: EmploymentScreensNew\r\n currentScreen?: EmploymentScreensNew\r\n value?: any\r\n id?: string\r\n tooltip?: string\r\n};\r\n\r\nexport const borrowerField = [EmploymentInformationFields.Veteran,\r\nEmploymentInformationFields.ActiveMilitaryDuty,\r\nEmploymentInformationFields.CurrentEmploymentDoesNotApply,\r\nEmploymentInformationFields.AdditionalEmploymentDoesNotApply,\r\nEmploymentInformationFields.SelfDeclaredMilitaryServiceIndicator,\r\nEmploymentInformationFields.PreviousGrossMonthlyIncome,\r\nEmploymentInformationFields.PreviousEmploymentDoesNotApply\r\n]\r\n\r\nexport const fieldsForTotal = [EmploymentInformationFields.BasePayAmount, EmploymentInformationFields.OvertimeAmount,\r\nEmploymentInformationFields.BonusAmount, EmploymentInformationFields.CommissionsAmount, EmploymentInformationFields.OtherAmount];\r\n\r\nexport const reverseNameFields = [EmploymentInformationFields.AdditionalEmploymentDoesNotApply, EmploymentInformationFields.CurrentEmploymentDoesNotApply,\r\nEmploymentInformationFields.BonusAmount, EmploymentInformationFields.CommissionsAmount, EmploymentInformationFields.OtherAmount\r\n , EmploymentInformationFields.PreviousEmploymentDoesNotApply];","import * as ActionTypes from \"../common/ActionTypes\";\r\n\r\n// STATE\r\nexport interface GovernmentQuestionState {\r\n borrower: GovernmentQuestion;\r\n borrowerComplete: boolean;\r\n submitBorrower: boolean;\r\n coBorrower: GovernmentQuestion;\r\n coBorrowerComplete?: boolean;\r\n submitCoBorrower: boolean;\r\n isLoading: boolean;\r\n errorMessage?: string;\r\n}\r\n// MODEL\r\nexport interface GovernmentQuestion {\r\n loanGuid: string;\r\n borrowerType?: number;\r\n intentToOccupyIndicator?: boolean;\r\n homeownerPastThreeYearsIndicator?: boolean;\r\n priorPropertyUsageType?: string;\r\n priorPropertyTitleType?: string;\r\n urla2020CitizenshipResidencyType?: string;\r\n specialBorrowerSellerRelationshipIndicator?: boolean;\r\n undisclosedBorrowedFundsIndicator?: boolean;\r\n undisclosedMortgageApplicationIndicator?: boolean;\r\n undisclosedCreditApplicationIndicator?: boolean;\r\n propertyProposedCleanEnergyLienIndicator?: boolean;\r\n // section 5b\r\n undisclosedComakerOfNoteIndicator?: boolean;\r\n outstandingJudgementsIndicator?: boolean;\r\n presentlyDelinquentIndicatorURLA?: boolean;\r\n partyToLawsuitIndicatorURLA?: boolean;\r\n priorPropertyDeedInLieuConveyedIndicator?: boolean;\r\n priorPropertyShortSaleCompletedIndicator?: boolean;\r\n priorPropertyForeclosureCompletedIndicator?: boolean;\r\n bankruptcyIndicator?: boolean;\r\n isPermanentResidentAlienChecked?: boolean;\r\n isNonPermanentResidentAlienChecked?: boolean;\r\n loanPurpose: string;\r\n interimLoanStagingId?: number;\r\n}\r\n\r\nexport enum BorrowerType {\r\n PrimaryBorrower = 0,\r\n CoBorrower = 1\r\n}\r\n\r\n// ACTIONS\r\ninterface UpdateGovernmentQuestions {\r\n type: typeof ActionTypes.UpdateGovernmentQuestions,\r\n value: string,\r\n propertyName: string,\r\n borrowerType: BorrowerType\r\n}\r\n\r\ninterface SubmitGovernmentQuestions {\r\n type: typeof ActionTypes.SubmitGovernmentQuestions,\r\n borrowerType: BorrowerType,\r\n value: boolean\r\n}\r\n\r\ninterface UpdateGovernmentAdditionalQuestions {\r\n type: typeof ActionTypes.UpdateGovernmentAdditionalQuestions,\r\n value: boolean,\r\n propertyName: string,\r\n borrowerType: BorrowerType\r\n}\r\n\r\ninterface UpdateBorrowerCompleted {\r\n type: typeof ActionTypes.UpdateBorrowerCompleted,\r\n borrowerType: BorrowerType,\r\n value: boolean\r\n}\r\n\r\ninterface SubmittedGovernmentQuestions {\r\n type: typeof ActionTypes.SubmittedGovernmentQuestions,\r\n borrowerData: GovernmentQuestion\r\n}\r\n\r\ninterface RequestGovernmentQuestions {\r\n type: typeof ActionTypes.RequestGovernmentQuestions;\r\n borrowerType: string;\r\n interimLoanStagingId: number;\r\n}\r\n\r\ninterface ReceiveGovernmentQuestions {\r\n type: typeof ActionTypes.ReceiveGovernmentQuestions;\r\n data: GovernmentQuestion;\r\n borrowerType: BorrowerType;\r\n}\r\n\r\ninterface UpdateToInterim {\r\n type: typeof ActionTypes.UpdateToInterim,\r\n borrowerData: GovernmentQuestion\r\n}\r\n\r\nexport type KnownAction =\r\n UpdateGovernmentQuestions |\r\n SubmitGovernmentQuestions |\r\n UpdateGovernmentAdditionalQuestions |\r\n UpdateBorrowerCompleted |\r\n SubmittedGovernmentQuestions |\r\n RequestGovernmentQuestions |\r\n ReceiveGovernmentQuestions |\r\n UpdateToInterim;","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { EmploymentInformationState, BorrowerType, KnownAction, Employment } from \"../store/employmentInformationStore\";\r\nimport { EmploymentInformationFields, borrowerField, DummyData } from \"../components/employmentInformation/EmploymentInformationFields\";\r\nimport { from } from \"linq\"\r\nimport { dateDiff, isValidDate, toDate } from '../common/helper/formatHelper';\r\n\r\nconst unloadedState: EmploymentInformationState = {\r\n borrower: {\r\n loanGuid: \"\",\r\n employments: [],\r\n name: \"\"\r\n },\r\n coBorrower: {\r\n loanGuid: \"\",\r\n employments: [],\r\n name: \"\"\r\n },\r\n borrowerComplete: false,\r\n coBorrowerComplete: false,\r\n submittedBorrower: false,\r\n submittedCoBorrower: false,\r\n hasCoBorrower: false,\r\n previousId: \"\"\r\n}\r\n\r\nconst getNewEmployment = (employmentDetail: Employment[], value: string, index: number, employmentItemId: string) => {\r\n\r\n let addNewEmployment = false;\r\n let totalEmploymnetInMonths: number = 0;\r\n let currentEmploymentYears: number = 0;\r\n let currentEmploymentMonths: number = 0;\r\n let endDate = new Date();\r\n let currentEmployer = employmentDetail.find(x => x.id === employmentItemId);\r\n\r\n if (index > 0) {\r\n if ((employmentDetail[index - 1].employmentStartDate) && !currentEmployer?.currentEmploymentIndicator) {\r\n endDate = new Date(employmentDetail[index - 1].employmentStartDate);\r\n } else {\r\n new Date();\r\n }\r\n if (value)\r\n totalEmploymnetInMonths = dateDiff(value, endDate ?? new Date());\r\n } else {\r\n if (employmentDetail.length > 0 && value) {\r\n totalEmploymnetInMonths = dateDiff(value);\r\n }\r\n }\r\n\r\n currentEmploymentYears = Math.floor(totalEmploymnetInMonths / 12);\r\n currentEmploymentMonths = totalEmploymnetInMonths % 12;\r\n let months = 0;\r\n let tempIndex = index;\r\n if (index > 0) {\r\n let currentEmployers = employmentDetail.filter(x => x.currentEmploymentIndicator == true).slice()\r\n .sort((a, b) => Date.parse(a.employmentStartDate) - Date.parse(b.employmentStartDate));\r\n if (currentEmployers.length > 1) {\r\n employmentDetail = employmentDetail.filter(x => x.employmentStartDate != currentEmployers[0].employmentStartDate);\r\n tempIndex = employmentDetail.findIndex(i => i.id === employmentItemId) > -1 ?\r\n employmentDetail.findIndex(i => i.id === employmentItemId) : index - 1;\r\n }\r\n\r\n employmentDetail.map((item, i) => {\r\n if (i <= (tempIndex)) {\r\n months += ((item?.timeOnJobTermYears ?? 0) * 12) + (item?.timeOnJobTermMonths ?? 0);\r\n }\r\n });\r\n }\r\n else {\r\n months = currentEmploymentYears * 12 + currentEmploymentMonths;\r\n }\r\n\r\n if (months < 24) {\r\n addNewEmployment = true;\r\n }\r\n else {\r\n addNewEmployment = false;\r\n }\r\n\r\n return {\r\n addNewEmployment: addNewEmployment,\r\n currentEmploymentYears: currentEmploymentYears,\r\n currentEmploymentMonths: currentEmploymentMonths,\r\n endDate: endDate\r\n };\r\n}\r\n\r\nexport const employmentInformationReducer: Reducer = (state: EmploymentInformationState | undefined, incomingAction: Action): EmploymentInformationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.UpdateEmploymentInformationProperty: {\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower && state.borrower && state.borrower.employments) {\r\n if (borrowerField.filter((val) => val.includes(action.propertyName))[0] == action.propertyName) {\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value\r\n }\r\n }\r\n }\r\n else {\r\n let copyItem = state.borrower.employments;\r\n const index = copyItem.findIndex(i => i.id === action.employmentItemId);\r\n let currentEmployment = copyItem[index];\r\n if (EmploymentInformationFields.StartDate === action.propertyName) {\r\n if (action.value && isValidDate(toDate(action.value))) {\r\n\r\n let data = getNewEmployment(copyItem, action.value, index, action.employmentItemId);\r\n\r\n if (data) {\r\n\r\n currentEmployment.timeOnJobTermMonths = data.currentEmploymentMonths;\r\n currentEmployment.timeOnJobTermYears = data.currentEmploymentYears;\r\n currentEmployment.endDate = data.endDate;\r\n currentEmployment.needAdditionalEmployment = data.addNewEmployment;\r\n currentEmployment.employmentStartDate = action.value;\r\n }\r\n } else {\r\n currentEmployment.employmentStartDate = action.value;\r\n }\r\n }\r\n else {\r\n currentEmployment = {\r\n ...currentEmployment,\r\n [action.propertyName]: action.value\r\n }\r\n let months = 0;\r\n if (index > 0) {\r\n\r\n let tempEmployments: Employment[];\r\n tempEmployments = state.borrower.employments;\r\n let currentEmployers = tempEmployments.filter(x => x.currentEmploymentIndicator == true).slice()\r\n .sort((a, b) => Date.parse(a.employmentStartDate) - Date.parse(b.employmentStartDate));\r\n let tempIndex = index;\r\n if (currentEmployers.length > 1) {\r\n tempEmployments = tempEmployments.filter(x => x.employmentStartDate != currentEmployers[0].employmentStartDate);\r\n tempIndex = tempEmployments.findIndex(i => i.id === action.employmentItemId);\r\n }\r\n\r\n tempEmployments.map((item, i) => {\r\n if (i <= (tempIndex)) {\r\n months += ((item?.timeOnJobTermYears ?? 0) * 12) + (item?.timeOnJobTermMonths ?? 0);\r\n }\r\n });\r\n } else {\r\n months = dateDiff(currentEmployment?.employmentStartDate);\r\n }\r\n\r\n currentEmployment.needAdditionalEmployment = false;\r\n if (months < 24) {\r\n currentEmployment.needAdditionalEmployment = true;\r\n }\r\n }\r\n\r\n copyItem[index] = currentEmployment;\r\n let borrower = state.borrower;\r\n return {\r\n ...state,\r\n borrower: {\r\n ...borrower,\r\n employments: copyItem\r\n }\r\n }\r\n }\r\n }\r\n else if (action.borrowerType === BorrowerType.CoBorrower && state.coBorrower && state.coBorrower.employments) {\r\n if (borrowerField.filter((val) => val.includes(action.propertyName))[0] == action.propertyName) {\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value\r\n }\r\n }\r\n }\r\n else {\r\n let copyItem = state.coBorrower.employments;\r\n const index = copyItem.findIndex(i => i.id === action.employmentItemId);\r\n let currentEmployment = copyItem[index];\r\n if (EmploymentInformationFields.StartDate === action.propertyName) {\r\n if (action.value && isValidDate(toDate(action.value))) {\r\n let data = getNewEmployment(copyItem, action.value, index, action.employmentItemId);\r\n\r\n if (data) {\r\n currentEmployment.timeOnJobTermMonths = data.currentEmploymentMonths;\r\n currentEmployment.timeOnJobTermYears = data.currentEmploymentYears;\r\n currentEmployment.endDate = data.endDate;\r\n currentEmployment.needAdditionalEmployment = data.addNewEmployment;\r\n currentEmployment.employmentStartDate = action.value;\r\n }\r\n }\r\n else {\r\n currentEmployment.employmentStartDate = action.value;\r\n }\r\n }\r\n else {\r\n currentEmployment = {\r\n ...currentEmployment,\r\n [action.propertyName]: action.value\r\n }\r\n let months = 0;\r\n if (index > 0) {\r\n let tempEmployments: Employment[];\r\n tempEmployments = state.coBorrower.employments;\r\n let currentEmployers = tempEmployments.filter(x => x.currentEmploymentIndicator == true).slice()\r\n .sort((a, b) => Date.parse(a.employmentStartDate) - Date.parse(b.employmentStartDate));\r\n let tempIndex = index;\r\n if (currentEmployers.length > 1) {\r\n tempEmployments = tempEmployments.filter(x => x.employmentStartDate != currentEmployers[0].employmentStartDate);\r\n tempIndex = tempEmployments.findIndex(i => i.id === action.employmentItemId);\r\n }\r\n\r\n\r\n tempEmployments.map((item, i) => {\r\n if (i <= (tempIndex)) {\r\n months += ((item?.timeOnJobTermYears ?? 0) * 12) + (item?.timeOnJobTermMonths ?? 0);\r\n }\r\n });\r\n } else {\r\n months = dateDiff(currentEmployment?.employmentStartDate);\r\n }\r\n\r\n currentEmployment.needAdditionalEmployment = false;\r\n if (months < 24) {\r\n currentEmployment.needAdditionalEmployment = true;\r\n }\r\n }\r\n\r\n copyItem[index] = currentEmployment;\r\n let coBorrower = state.coBorrower;\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...coBorrower,\r\n employments: copyItem\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return { ...state };\r\n case ActionTypes.AddEmploymentItem: {\r\n\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower && state.borrower && state.borrower.employments) {\r\n let newItem = action.data;\r\n if (state.borrower.employments.length < 1) {\r\n state.borrower.employments.push(newItem);\r\n state.borrower.borrowerType = BorrowerType.PrimaryBorrower;\r\n return { ...state };\r\n }\r\n else {\r\n let lastId = (from(state.borrower.employments).lastOrDefault()?.employmentId ?? 0) + 1;\r\n let id = `Employment/${lastId}`;\r\n newItem.id = id;\r\n newItem.employmentId = lastId;\r\n //newItem.currentEmploymentIndicator = false;\r\n newItem.owner = \"Borrower\";\r\n const copyItems = state.borrower.employments;\r\n copyItems.splice(copyItems.length, 0, newItem);\r\n let borrower = { ...state.borrower };\r\n borrower.employments = copyItems;\r\n return {\r\n ...state,\r\n borrower: {\r\n ...borrower,\r\n borrowerType: BorrowerType.PrimaryBorrower\r\n }\r\n }\r\n }\r\n }\r\n else if (action.borrowerType === BorrowerType.CoBorrower && state.coBorrower && state.coBorrower.employments) {\r\n let newItem = action.data;\r\n if (state.coBorrower.employments.length < 1) {\r\n //append id by 1 for coborrower\r\n newItem.employmentId = newItem.employmentId + 1;\r\n newItem.id = `Employment/${newItem.employmentId}`;\r\n\r\n state.coBorrower.employments.push(newItem);\r\n state.borrower.borrowerType = BorrowerType.CoBorrower;\r\n return { ...state };\r\n }\r\n else {\r\n let lastId = (from(state.coBorrower.employments).lastOrDefault()?.employmentId ?? 0) + 1;\r\n let id = `Employment/${lastId}`;\r\n newItem.id = id;\r\n newItem.employmentId = lastId;\r\n //newItem.currentEmploymentIndicator = false;\r\n newItem.owner = \"CoBorrower\";\r\n const copyItems = state.coBorrower.employments;\r\n copyItems.splice(copyItems.length, 0, newItem);\r\n let coBorrower = { ...state.coBorrower };\r\n coBorrower.employments = copyItems;\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...coBorrower,\r\n borrowerType: BorrowerType.CoBorrower\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n return { ...state };\r\n }\r\n };\r\n case ActionTypes.DeleteEmploymentItem: {\r\n\r\n if (action.borrowerType == BorrowerType.PrimaryBorrower && state.borrower && state.borrower.employments) {\r\n const copyItems = [...state.borrower.employments];\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n let borrower = state.borrower;\r\n borrower.employments = copyItems;\r\n return {\r\n ...state, borrower: { ...borrower }\r\n }\r\n }\r\n else if (action.borrowerType == BorrowerType.CoBorrower && state.coBorrower && state.coBorrower.employments) {\r\n const copyItems = [...state.coBorrower.employments];\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n let coBorrower = state.coBorrower;\r\n coBorrower.employments = copyItems;\r\n return {\r\n ...state, coBorrower: { ...coBorrower }\r\n }\r\n }\r\n else { return { ...state }; }\r\n };\r\n case ActionTypes.SubmittedEmploymentInformation:\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n return {\r\n ...state,\r\n submittedBorrower: action.value\r\n };\r\n }\r\n else {\r\n return {\r\n ...state,\r\n submittedCoBorrower: action.value\r\n };\r\n }\r\n\r\n\r\n case ActionTypes.GetEmploymentInformation: {\r\n switch (action.borrowerType) {\r\n\r\n case \"Borrower\": {\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n employments: action.data?.employments,\r\n borrowerType: BorrowerType.PrimaryBorrower,\r\n activeMilitaryDuty: action.data.activeMilitaryDuty,\r\n additionalEmploymentDoesNotApply: action.data.additionalEmploymentDoesNotApply,\r\n previousEmploymentDoesNotApply: action.data.previousEmploymentDoesNotApply,\r\n currentEmploymentDoesNotApply: action.data.currentEmploymentDoesNotApply,\r\n loanGuid: action.data.loanGuid,\r\n name: action.data.name,\r\n previousGrossMonthlyIncome: action.data.previousGrossMonthlyIncome,\r\n printOnAdditionalBorrowerPage: action.data.printOnAdditionalBorrowerPage,\r\n selfDeclaredMilitaryServiceIndicator: action.data.selfDeclaredMilitaryServiceIndicator,\r\n veteran: action.data.veteran,\r\n interimLoanStagingId: action.data.interimLoanStagingId\r\n }\r\n }\r\n }\r\n case \"CoBorrower\": {\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n employments: action.data?.employments,\r\n borrowerType: BorrowerType.CoBorrower,\r\n activeMilitaryDuty: action.data.activeMilitaryDuty,\r\n additionalEmploymentDoesNotApply: action.data.additionalEmploymentDoesNotApply,\r\n previousEmploymentDoesNotApply: action.data.previousEmploymentDoesNotApply,\r\n currentEmploymentDoesNotApply: action.data.currentEmploymentDoesNotApply,\r\n loanGuid: action.data.loanGuid,\r\n name: action.data.name,\r\n previousGrossMonthlyIncome: action.data.previousGrossMonthlyIncome,\r\n printOnAdditionalBorrowerPage: action.data.printOnAdditionalBorrowerPage,\r\n selfDeclaredMilitaryServiceIndicator: action.data.selfDeclaredMilitaryServiceIndicator,\r\n veteran: action.data.veteran,\r\n interimLoanStagingId: action.data.interimLoanStagingId\r\n\r\n }\r\n }\r\n }\r\n }\r\n return { ...state }\r\n };\r\n\r\n case ActionTypes.ResetEmploymentItem: {\r\n if (action.borrowerType == BorrowerType.PrimaryBorrower) {\r\n let copyItem = state.borrower.employments;\r\n if (copyItem) {\r\n const index = copyItem.findIndex(i => i.id === action.employmentItemId);\r\n let currentEmployment = copyItem[index];\r\n let defualtData = currentEmployment;\r\n defualtData.employmentId = currentEmployment.employmentId;\r\n defualtData.id = currentEmployment.id;\r\n defualtData.selfEmployedIndicator = currentEmployment.selfEmployedIndicator;\r\n copyItem[index] = defualtData;\r\n }\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n employments: copyItem\r\n }\r\n }\r\n }\r\n else if (action.borrowerType == BorrowerType.CoBorrower) {\r\n let copyItem = state.coBorrower.employments;\r\n if (copyItem) {\r\n const index = copyItem.findIndex(i => i.id === action.employmentItemId);\r\n let currentEmployment = copyItem[index];\r\n let defualtData = DummyData;\r\n defualtData.employmentId = currentEmployment.employmentId;\r\n defualtData.id = currentEmployment.id;\r\n defualtData.selfEmployedIndicator = currentEmployment.selfEmployedIndicator;\r\n copyItem[index] = defualtData;\r\n }\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.coBorrower,\r\n employments: copyItem\r\n }\r\n }\r\n }\r\n return { ...state };\r\n };\r\n\r\n case ActionTypes.ReIndexingEmployment: {\r\n\r\n let index = 0;\r\n let copyItems = action.data;\r\n\r\n const borrowerCurrentEmployer = copyItems.filter(x => x.currentEmploymentIndicator == true);\r\n borrowerCurrentEmployer.map((item, i) => {\r\n item.employmentId = index;\r\n item.id = `Employment/${index}`;\r\n index++;\r\n });\r\n const borrowerPriorEmployer = copyItems.filter(x => x.currentEmploymentIndicator !== true);\r\n borrowerPriorEmployer.map((item, i) => {\r\n item.employmentId = index;\r\n item.id = `Employment/${index}`;\r\n index++;\r\n });\r\n if (state.borrower.printOnAdditionalBorrowerPage == true) {\r\n const coborrowerCurrentEmployer = copyItems.filter(x => x.currentEmploymentIndicator == true);\r\n coborrowerCurrentEmployer.map((item, i) => {\r\n item.employmentId = index;\r\n item.id = `Employment/${index}`;\r\n index++;\r\n }); const coborrowerPriorEmployer = copyItems.filter(x => x.currentEmploymentIndicator !== true);\r\n coborrowerPriorEmployer.map((item, i) => {\r\n item.employmentId = index;\r\n item.id = `Employment/${index}`;\r\n index++;\r\n });\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n employments: copyItems.slice()\r\n .sort((a, b) => a.employmentId - b.employmentId)\r\n }\r\n }\r\n }\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n employments: copyItems.slice()\r\n .sort((a, b) => a.employmentId - b.employmentId)\r\n }\r\n }\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from \"redux\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { UserAccountState, KnownAction } from \"../store/userAccountStore\";\r\n\r\nconst unloadedState: UserAccountState = {\r\n firstName: undefined,\r\n lastName: undefined,\r\n email: undefined,\r\n borrowerType: undefined,\r\n hasConsent: undefined,\r\n initialUserAccountRegistrationInformation: false,\r\n isLoancreated: false\r\n}\r\n\r\nexport const userAccountReducer: Reducer = (state: UserAccountState | undefined, incomingAction: Action): UserAccountState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.UpdateUserFirstName:\r\n return {\r\n ...state,\r\n firstName: action.firstName\r\n };\r\n case ActionTypes.UpdateUserLastName:\r\n return {\r\n ...state,\r\n lastName: action.lastName\r\n };\r\n case ActionTypes.UpdateUserEmail:\r\n return {\r\n ...state,\r\n email: action.email\r\n };\r\n case ActionTypes.UpdateUserBorrowerType:\r\n return {\r\n ...state,\r\n borrowerType: action.borrowerType\r\n };\r\n case ActionTypes.UpdateUserConsent:\r\n return {\r\n ...state,\r\n hasConsent: action.hasConsent\r\n };\r\n case ActionTypes.IsLoancreated: {\r\n return { ...state, isLoancreated: action.isLoancreated };\r\n };\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { ManualAssetInformationState, KnownAction, ManualAssetInformation } from \"../store/ManualAssetInformationStore\";\r\n\r\nconst unloadedState: ManualAssetInformationState = {\r\n data: {\r\n id: \"\",\r\n assetType: \"\",\r\n holderName: \"\",\r\n accountIdentifier: \"\",\r\n urla2020CashOrMarketValueAmount: \"\",\r\n owner: \"\"\r\n },\r\n details: [] as ManualAssetInformation[],\r\n assets: [] as ManualAssetInformation[],\r\n systematicAssets: [] as ManualAssetInformation[],\r\n validation: undefined,\r\n errorMessage: ''\r\n}\r\n\r\nexport const manualAssetInformationReducer: Reducer = (state: ManualAssetInformationState | undefined, incomingAction: Action): ManualAssetInformationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.UpdateManualAssetProperty: {\r\n return {\r\n ...state,\r\n data: {\r\n ...state.data,\r\n [action.propertyName]: action.value\r\n }\r\n };\r\n };\r\n case ActionTypes.CreateManualAssetInformation: {\r\n if (state.data) {\r\n let Assets = action.details;\r\n return {\r\n ...state,\r\n data: unloadedState.data,\r\n details: Assets\r\n }\r\n }\r\n return state;\r\n };\r\n case ActionTypes.RemoveManualAssetItem: {\r\n if (state.details) {\r\n let copyItems = state.details.slice();\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n return {\r\n ...state,\r\n details: copyItems\r\n }\r\n }\r\n return { ...state };\r\n };\r\n case ActionTypes.GetManualAssetItem: {\r\n if (state.details) {\r\n const copyItems = state.details;\r\n let copyData: any;\r\n copyData = copyItems.find(i => i.id === action.id);\r\n return {\r\n ...state,\r\n details: copyItems,\r\n data: copyData\r\n }\r\n }\r\n return { ...state };\r\n };\r\n case ActionTypes.SetManualAssetValidation: {\r\n let copyValidation = { ...state.validation };\r\n if (action.validationError) {\r\n copyValidation[action.field] = action.validationError;\r\n }\r\n else {\r\n if (copyValidation[action.field]) {\r\n delete copyValidation[action.field];\r\n }\r\n }\r\n return {\r\n ...state,\r\n validation: copyValidation\r\n };\r\n }\r\n case ActionTypes.RequestAsset:\r\n return {\r\n ...state\r\n };\r\n case ActionTypes.ReceiveAsset:\r\n return {\r\n ...state,\r\n details: action.details\r\n };\r\n case ActionTypes.ReceiveEncompassAsset:\r\n return {\r\n ...state,\r\n assets: action.assets\r\n };\r\n case ActionTypes.HandleErrorAsset:\r\n return {\r\n ...state,\r\n errorMessage: action.errorMessage\r\n };\r\n case ActionTypes.ReceiveSystematicAsset:\r\n return {\r\n\r\n ...state,\r\n systematicAssets: action.systematicAssets\r\n };\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { PropertyInformationState, KnownAction } from \"../store/propertyInformationStore\";\r\n\r\nconst unloadedState: PropertyInformationState = {\r\n loanGuid: undefined,\r\n\r\n purposeType: undefined,\r\n city: undefined,\r\n state: undefined,\r\n zip: undefined,\r\n county: undefined,\r\n\r\n workingWithRealtor: undefined,\r\n realtorCompany: undefined,\r\n realtorName: undefined,\r\n realtorPhoneNumber: undefined,\r\n realtorEmailAddress: undefined,\r\n\r\n buyExistingHome: undefined,\r\n\r\n ownLand: undefined,\r\n landValue: undefined,\r\n securedConstructionFinancing: undefined,\r\n totalAvailableToSpendOnNewHome: undefined,\r\n\r\n downPayment: undefined,\r\n downPaymentSource: undefined,\r\n downPaymentPercentage: undefined,\r\n estimatedLoanAmount: undefined,\r\n loanTermInYears: undefined,\r\n\r\n // Refinance\r\n address: undefined,\r\n unitNumber: undefined,\r\n estimatedCurrentValue: undefined,\r\n yearPropertyBuilt: undefined,\r\n taxesPerYear: undefined,\r\n homeOwnersInsurancePerYear: undefined,\r\n currentMortgageBalance: undefined,\r\n estimatedClosingDate: undefined,\r\n propertyUsageType: undefined,\r\n monthlyTax: undefined\r\n}\r\n\r\nexport const propertyInformationReducer: Reducer = (state: PropertyInformationState | undefined, incomingAction: Action): PropertyInformationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.UPDATE_PROPERTY_INFORMATION_FIELD: {\r\n if (action.propertyName === \"downPaymentPercentage\") {\r\n let downPaymentPercentage = parseFloat(action.value);\r\n let downPaymentAmount = (Number(state.totalAvailableToSpendOnNewHome) * (downPaymentPercentage / 100)).toFixed(2);\r\n\r\n return {\r\n ...state,\r\n downPaymentPercentage: downPaymentPercentage,\r\n downPayment: downPaymentAmount\r\n };\r\n }\r\n\r\n if (action.propertyName === \"downPayment\") {\r\n let downPaymentPercentage = (Number(action.value) * 100) / (Number(state.totalAvailableToSpendOnNewHome));\r\n return {\r\n ...state,\r\n downPaymentPercentage: parseFloat(downPaymentPercentage.toFixed(0)),\r\n downPayment: action.value\r\n };\r\n }\r\n\r\n if (action.propertyName === \"totalAvailableToSpendOnNewHome\") {\r\n let downPaymentPercentage = (Number(state.downPayment) * 100) / (Number(action.value));\r\n return {\r\n ...state,\r\n downPaymentPercentage: parseFloat(downPaymentPercentage.toFixed(0)),\r\n totalAvailableToSpendOnNewHome: action.value\r\n };\r\n }\r\n\r\n let fieldValue = action.value;\r\n\r\n if (action.isNumericalValue) {\r\n if (typeof action.value === \"number\") {\r\n fieldValue = action.value;\r\n } else {\r\n fieldValue = action.value.trim() !== \"\" ? parseFloat(action.value) : undefined;\r\n }\r\n }\r\n\r\n return {\r\n ...state,\r\n [action.propertyName]: fieldValue\r\n };\r\n };\r\n case ActionTypes.UpdateAddressFields: {\r\n return {\r\n ...state,\r\n address: action.streetValue,\r\n city: action.cityValue,\r\n state: action.stateValue,\r\n zip: action.zipValue\r\n }\r\n };\r\n case ActionTypes.CalculateEstimatedLoanAmount: {\r\n let estimatedLoanValue = 0;\r\n if (state.totalAvailableToSpendOnNewHome && state.downPayment) {\r\n estimatedLoanValue = Number(state.totalAvailableToSpendOnNewHome) - Number(state.downPayment);\r\n }\r\n return {\r\n ...state,\r\n estimatedLoanAmount: estimatedLoanValue.toString()\r\n }\r\n };\r\n case ActionTypes.ReceivePropertyInformation: {\r\n let data = { ...state };\r\n data = action.data;\r\n let downPaymentPercentage = 0;\r\n if (data.downPayment && data.totalAvailableToSpendOnNewHome) {\r\n downPaymentPercentage = (Number(data.downPayment) / Number(data.totalAvailableToSpendOnNewHome)) * 100;\r\n }\r\n return {\r\n ...data,\r\n downPaymentPercentage: downPaymentPercentage\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { ZipCodeLookUpState, KnownAction } from \"../store/ZipCodeLookUpStore\";\r\n\r\nconst unloadedState: ZipCodeLookUpState = {\r\n data: undefined,\r\n isLoading: false,\r\n errorMessage: \"\"\r\n}\r\n\r\nexport const zipCodeLookupReducer: Reducer = (state: ZipCodeLookUpState | undefined, incomingAction: Action): ZipCodeLookUpState => {\r\n \r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.RequestZipCodeLookup:\r\n \r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.ReceiveZipCodeLookup:\r\n \r\n return {\r\n ...state,\r\n data: [...action.data],\r\n isLoading: false\r\n };\r\n case ActionTypes.HandleErrorZipCodeLookup:\r\n \r\n return {\r\n ...state,\r\n isLoading: false,\r\n errorMessage: action.errorMessage\r\n };\r\n case ActionTypes.ClearExceptionZipCodeLookup:\r\n \r\n return {\r\n ...state,\r\n errorMessage: \"\"\r\n };\r\n case ActionTypes.ClearZipDetails:\r\n \r\n return {\r\n ...state,\r\n data: undefined\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { loanState, KnownAction } from \"../store/loanStore\";\r\n\r\nconst unloadedState: loanState = {\r\n loanGuid: undefined,\r\n isLoanCompleted: false,\r\n isLoanFromEncompassFlag: false,\r\n interimLoanStagingId: undefined\r\n\r\n}\r\n\r\nexport const loanReducer: Reducer = (state: loanState | undefined, incomingAction: Action): loanState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.SetLoanGuid:\r\n return {\r\n ...state,\r\n loanGuid: action.loanGuid\r\n };\r\n case ActionTypes.SetIsLoanCompleted:\r\n return {\r\n ...state,\r\n isLoanCompleted: action.isLoanCompleted\r\n };\r\n case ActionTypes.SetIsLoanFromEncompassFlag:\r\n return {\r\n ...state,\r\n isLoanFromEncompassFlag: action.isLoanFromEncompassFlag\r\n };\r\n case ActionTypes.SetInterimLoanStagingId:\r\n return {\r\n ...state,\r\n interimLoanStagingId: action.interimLoanStagingId\r\n };\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { AdditionalIncomeState, KnownAction, OtherIncomeSourceDetail } from \"../store/additionalIncomeStore\"\r\n\r\nconst unloadedState: AdditionalIncomeState = {\r\n data: {\r\n otherIncomeSourceDetails: [],\r\n },\r\n isLoading: false,\r\n errorMessage: '',\r\n validation: undefined\r\n}\r\n\r\nexport const additionalIncomeReducer: Reducer = (state: AdditionalIncomeState | undefined, incomingAction: Action): AdditionalIncomeState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.IsLoading: {\r\n return {\r\n ...state,\r\n isLoading: action.isLoading\r\n }\r\n };\r\n case ActionTypes.CreateOtherIncomeSourceItem: {\r\n if (state.data) {\r\n let details = state.data.otherIncomeSourceDetails.filter(x => x.owner == action.data.owner && x.description == \"\");\r\n if (details.length < 1) {\r\n const copyItems = [...state.data.otherIncomeSourceDetails];\r\n let additionalIncome = action.data;\r\n additionalIncome.isNew = true;\r\n copyItems.splice(copyItems.length, 0, additionalIncome);\r\n\r\n let additionaIIncome = { ...state.data };\r\n additionaIIncome.otherIncomeSourceDetails = copyItems;\r\n\r\n return {\r\n ...state, data: additionaIIncome\r\n }\r\n }\r\n }\r\n return { ...state };\r\n };\r\n case ActionTypes.UpdateOtherIncomeSourceInformation: {\r\n if (state.data) {\r\n const otherIncomeSourceDetails = [...state.data.otherIncomeSourceDetails];\r\n otherIncomeSourceDetails.map((otherIncomeSource: any) => {\r\n if (action.otherIncomeSourceId === otherIncomeSource.id) {\r\n otherIncomeSource[action.field] = action.value;\r\n otherIncomeSource.isNew = action.isNew;\r\n }\r\n return otherIncomeSource;\r\n });\r\n let additionaIIncome = { ...state.data };\r\n additionaIIncome.otherIncomeSourceDetails = otherIncomeSourceDetails;\r\n return {\r\n ...state,\r\n data: additionaIIncome\r\n }\r\n }\r\n return state;\r\n };\r\n case ActionTypes.DeleteOtherIncomeSourceItem: {\r\n\r\n if (state.data && state.data.otherIncomeSourceDetails) {\r\n const copyItems = [...state.data.otherIncomeSourceDetails];\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n\r\n let additionaIIncome = state.data;\r\n additionaIIncome.otherIncomeSourceDetails = copyItems;\r\n\r\n return {\r\n ...state, data: { ...additionaIIncome },\r\n\r\n\r\n }\r\n }\r\n return { ...state };\r\n };\r\n case ActionTypes.SetOtherIncomeSourceValidation: {\r\n let copyValidation = { ...state.validation };\r\n if (action.validationError) {\r\n copyValidation[action.field] = action.validationError;\r\n }\r\n else {\r\n if (copyValidation[action.field]) {\r\n delete copyValidation[action.field];\r\n }\r\n }\r\n return {\r\n ...state,\r\n validation: copyValidation\r\n };\r\n }\r\n case ActionTypes.RemoveOtherIncomeSourceItemList: {\r\n if (state.data && state.data.otherIncomeSourceDetails) {\r\n let copyItems = state.data.otherIncomeSourceDetails.filter(x => x.owner !== action.owner).slice();\r\n let additionaIIncome = state.data;\r\n additionaIIncome.otherIncomeSourceDetails = copyItems;\r\n return {\r\n ...state,\r\n data: { ...additionaIIncome },\r\n\r\n\r\n }\r\n }\r\n return { ...state };\r\n };\r\n\r\n case ActionTypes.ReceiveAdditionalIncomeSource: {\r\n if (state.data) {\r\n let additionalIncome = action.data as OtherIncomeSourceDetail[];\r\n\r\n let list = { ...state.data }\r\n list.otherIncomeSourceDetails = additionalIncome;\r\n\r\n return {\r\n ...state, data: list\r\n }\r\n }\r\n return { ...state };\r\n };\r\n case ActionTypes.UpdateIncomeState: {\r\n if (state.data && state.data.otherIncomeSourceDetails) {\r\n let list = { ...state.data }\r\n list.otherIncomeSourceDetails.filter(x => x.owner === action.borrowerType).slice();\r\n list.otherIncomeSourceDetails = action.data;\r\n\r\n return {\r\n ...state,\r\n data: list\r\n }\r\n }\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from \"redux\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { NavigationState, KnownAction } from \"../store/navigationStore\";\r\n\r\nconst unloadedState: NavigationState = {\r\n back: {\r\n disabled: false,\r\n message: \"Back\",\r\n show: true,\r\n onClick: null,\r\n },\r\n continue: {\r\n disabled: true,\r\n message: \"Save/Continue\",\r\n show: false,\r\n onClick: null,\r\n },\r\n lastResetFromRoute: new Date()\r\n};\r\n\r\nexport const navigationReducer: Reducer = (\r\n state: NavigationState | undefined,\r\n incomingAction: Action\r\n): NavigationState => {\r\n\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.ResetNavigation: {\r\n return {\r\n ...state,\r\n back: {\r\n disabled: false,\r\n message: \"Back\",\r\n show: true,\r\n onClick: null,\r\n },\r\n continue: {\r\n disabled: true,\r\n message: \"Save/Continue\",\r\n show: false,\r\n onClick: null,\r\n }\r\n };\r\n }\r\n case ActionTypes.ResetNavigationFromRoute: {\r\n return {\r\n ...state,\r\n back: {\r\n disabled: false,\r\n message: \"Back\",\r\n show: true,\r\n onClick: null,\r\n },\r\n continue: {\r\n disabled: true,\r\n message: \"Save/Continue\",\r\n show: false,\r\n onClick: null,\r\n },\r\n lastResetFromRoute: new Date()\r\n };\r\n }\r\n case ActionTypes.SetContinue: {\r\n var newState = {\r\n ...state,\r\n };\r\n newState.continue.show = action.show;\r\n return newState;\r\n }\r\n case ActionTypes.SetBackOnClick: {\r\n var newState = {\r\n ...state,\r\n };\r\n newState.back.onClick = action.onBackClick;\r\n return newState;\r\n }\r\n case ActionTypes.ShowContinue: {\r\n var newState = {\r\n ...state,\r\n };\r\n newState.continue.onClick = action.onClick;\r\n newState.continue.disabled = action.isDisabled ?? false;\r\n newState.continue.show = true;\r\n return newState;\r\n }\r\n case ActionTypes.SetContinueDisabled: {\r\n var newState = {\r\n ...state,\r\n };\r\n newState.continue.disabled = action.isDisabled;\r\n return newState;\r\n }\r\n case ActionTypes.ResetContinue: {\r\n var newState = {\r\n ...state,\r\n };\r\n newState.continue.onClick = null;\r\n newState.continue.disabled = false;\r\n newState.continue.show = false;\r\n return newState;\r\n }\r\n case ActionTypes.HideNavigation: {\r\n return {\r\n ...state,\r\n back: {\r\n disabled: false,\r\n message: \"Back\",\r\n show: false,\r\n onClick: null,\r\n },\r\n continue: {\r\n disabled: false,\r\n message: \"Save/Continue\",\r\n show: false,\r\n onClick: null,\r\n }\r\n };\r\n }\r\n case ActionTypes.RenameNavigation: {\r\n return {\r\n ...state,\r\n back: {\r\n disabled: false,\r\n message: action.backwardString,\r\n show: true,\r\n onClick: null,\r\n },\r\n continue: {\r\n disabled: false,\r\n message: action.forwardString,\r\n show: false,\r\n onClick: null,\r\n }\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { GovernmentQuestionState, BorrowerType, KnownAction } from \"../store/GovernmentQuestionStore\";\r\n\r\nconst unloadedState: GovernmentQuestionState = {\r\n borrower: {\r\n loanGuid: '',\r\n intentToOccupyIndicator: undefined,\r\n homeownerPastThreeYearsIndicator: undefined,\r\n priorPropertyUsageType: undefined,\r\n priorPropertyTitleType: undefined,\r\n urla2020CitizenshipResidencyType: undefined,\r\n specialBorrowerSellerRelationshipIndicator: undefined,\r\n undisclosedBorrowedFundsIndicator: undefined,\r\n undisclosedMortgageApplicationIndicator: undefined,\r\n undisclosedCreditApplicationIndicator: undefined,\r\n propertyProposedCleanEnergyLienIndicator: undefined,\r\n undisclosedComakerOfNoteIndicator: undefined,\r\n outstandingJudgementsIndicator: undefined,\r\n presentlyDelinquentIndicatorURLA: undefined,\r\n partyToLawsuitIndicatorURLA: undefined,\r\n priorPropertyDeedInLieuConveyedIndicator: undefined,\r\n priorPropertyShortSaleCompletedIndicator: undefined,\r\n priorPropertyForeclosureCompletedIndicator: undefined,\r\n bankruptcyIndicator: undefined,\r\n isPermanentResidentAlienChecked: undefined,\r\n isNonPermanentResidentAlienChecked: undefined,\r\n loanPurpose: '',\r\n interimLoanStagingId: undefined\r\n },\r\n borrowerComplete: false,\r\n coBorrower: {\r\n loanGuid: '',\r\n loanPurpose:''\r\n },\r\n coBorrowerComplete: false,\r\n submitBorrower: false,\r\n submitCoBorrower: false,\r\n isLoading: false,\r\n errorMessage: ''\r\n}\r\n\r\nexport const governmentQuestionReducer: Reducer = (state: GovernmentQuestionState | undefined, incomingAction: Action): GovernmentQuestionState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.UpdateGovernmentQuestions: {\r\n let result;\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n if (action.propertyName === \"urla2020CitizenshipResidencyType\" && action.value === \"NonPermanentResidentAlien\") {\r\n state.borrower.isPermanentResidentAlienChecked = false;\r\n state.borrower.isNonPermanentResidentAlienChecked = true;\r\n }\r\n else if (action.propertyName === \"urla2020CitizenshipResidencyType\" && action.value === \"PermanentResidentAlien\") {\r\n state.borrower.isPermanentResidentAlienChecked = true;\r\n state.borrower.isNonPermanentResidentAlienChecked = false;\r\n }\r\n\r\n result = {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value\r\n }\r\n }\r\n }\r\n else {\r\n if (action.propertyName === \"urla2020CitizenshipResidencyType\" && action.value === \"NonPermanentResidentAlien\") {\r\n state.coBorrower.isPermanentResidentAlienChecked = false;\r\n state.coBorrower.isNonPermanentResidentAlienChecked = true;\r\n }\r\n else if (action.propertyName === \"urla2020CitizenshipResidencyType\" && action.value === \"PermanentResidentAlien\") {\r\n state.coBorrower.isPermanentResidentAlienChecked = true;\r\n state.coBorrower.isNonPermanentResidentAlienChecked = false;\r\n }\r\n result = {\r\n\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n case ActionTypes.UpdateGovernmentAdditionalQuestions:\r\n return action.borrowerType === BorrowerType.PrimaryBorrower ?\r\n {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value,\r\n\r\n }\r\n } :\r\n {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value\r\n }\r\n };\r\n case ActionTypes.SubmitGovernmentQuestions:\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n return {\r\n ...state,\r\n submitBorrower: action.value\r\n }\r\n }\r\n else {\r\n return {\r\n ...state,\r\n submitCoBorrower: action.value\r\n }\r\n }\r\n case ActionTypes.UpdateBorrowerCompleted:\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n return {\r\n ...state,\r\n borrowerComplete: action.value\r\n }\r\n }\r\n else {\r\n return {\r\n ...state,\r\n coBorrowerComplete: action.value\r\n }\r\n }\r\n case ActionTypes.RequestGovernmentQuestions:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.ReceiveGovernmentQuestions:\r\n {\r\n let result;\r\n let data = action.data;\r\n if (data.urla2020CitizenshipResidencyType === \"NonPermanentResidentAlien\") {\r\n data.isPermanentResidentAlienChecked = false;\r\n data.isNonPermanentResidentAlienChecked = true;\r\n }\r\n else if (data.urla2020CitizenshipResidencyType === \"PermanentResidentAlien\") {\r\n data.isPermanentResidentAlienChecked = true;\r\n data.isNonPermanentResidentAlienChecked = false;\r\n }\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n result = {\r\n\r\n ...state,\r\n borrower: data,\r\n isLoading: false\r\n }\r\n return result;\r\n }\r\n else if (action.borrowerType === BorrowerType.CoBorrower) {\r\n result = {\r\n\r\n ...state,\r\n coBorrower: data,\r\n isLoading: false\r\n }\r\n return result;\r\n }\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","export enum DemographicFields {\r\n SectionEthnicity = \"Ethnicity\",\r\n SectionRace=\"Race\",\r\n SectionSex=\"Sex\",\r\n\r\n HispanicLatino = \"hmdaEthnicityHispanicLatinoIndicator\",\r\n NotHispanicLatino = \"hmdaEthnicityNotHispanicLatinoIndicator\",\r\n ethnicityDoNotWishProvide = \"hmdaEthnicityDoNotWishIndicator\",\r\n\r\n AmericanIndianIndicator=\"hmdaAmericanIndianIndicator\",\r\n AfricanAmericanIndicator = \"hmdaAfricanAmericanIndicator\",\r\n PacificIslanderIndicator = \"hmdaPacificIslanderIndicator\",\r\n WhiteIndicator =\"hmdaWhiteIndicator\",\r\n RaceDoNotWishProvideIndicator =\"hmdaRaceDoNotWishProvideIndicator\",\r\n\r\n GendertypeFemale = \"hmdaGendertypeFemaleIndicator\",\r\n GendertypeMale = \"hmdaGendertypeMaleIndicator\",\r\n GendertypeDoNotWishProvide = \"hmdaGendertypeDoNotWishIndicator\"\r\n};","export enum UserAccountFields {\r\n FirstName = \"FirstName\",\r\n LastName = \"LastName\",\r\n Email = \"Email\",\r\n MobileNumber = \"MobileNumber\",\r\n VerificationCode =\"VerificationCode\",\r\n Password=\"Password\",\r\n ConfirmPassword = \"ConfirmPassword\",\r\n ResetQuestion = \"ResetQuestion\",\r\n ResetAnswer = \"ResetAnswer\"\r\n}\r\n\r\nexport enum BorrowerInformation {\r\n firstName = \"firstName\",\r\n middleName = \"middleName\",\r\n lastName = \"lastName\",\r\n suffixToName = \"suffixToName\",\r\n phoneNumber = \"phoneNumber\",\r\n phoneType = \"phoneType\",\r\n emailAddressText = \"emailAddressText\",\r\n maritalStatusType = \"maritalStatusType\",\r\n Password = \"Password\",\r\n ConfirmPassword = \"ConfirmPassword\",\r\n}\r\n\r\nexport enum BorrowerType {\r\n PrimaryBorrower = 0,\r\n CoBorrower = 1\r\n}\r\n\r\nexport enum ReportStatus {\r\n Pending,\r\n InProgress,\r\n ReadyToBeProcessed,\r\n ValuesProcessed,\r\n Complete,\r\n Error\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { BorrowerLiabilityState, KnownAction } from '../store/borrowerLiabilityStore';\r\n\r\nconst unloadedState: BorrowerLiabilityState = {\r\n data: undefined,\r\n validation: undefined\r\n}\r\n\r\nexport const borrowerLiabilityReducer: Reducer = (state: BorrowerLiabilityState | undefined, incomingAction: Action): BorrowerLiabilityState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.ReceiveBorrowerLiability:\r\n return {\r\n ...state,\r\n data: action.data,\r\n };\r\n \r\n case ActionTypes.CreateBorrowerLiability: {\r\n if (state.data) {\r\n const copyItems = [...state.data];\r\n let newLiability = action.data;\r\n newLiability.isNew = true;\r\n copyItems.splice(copyItems.length, 0, newLiability);\r\n\r\n let borrowerLiability = { ...state.data };\r\n borrowerLiability = copyItems;\r\n\r\n return {\r\n ...state, data: borrowerLiability\r\n }\r\n }\r\n return { ...state };\r\n };\r\n\r\n case ActionTypes.UpdateBorrowerLiabilityInformation: {\r\n if (state.data) {\r\n const liabilityDetails = [...state.data];\r\n liabilityDetails.map((liability: any) => {\r\n if (action.liabilityId === liability.id) {\r\n liability[action.field] = action.value;\r\n liability.isNew = action.isNew;\r\n }\r\n return liability;\r\n });\r\n let borrowerLiability = { ...state.data };\r\n borrowerLiability = liabilityDetails;\r\n return {\r\n ...state,\r\n data: borrowerLiability\r\n }\r\n }\r\n return state;\r\n };\r\n\r\n case ActionTypes.DeleteBorrowerLiability: {\r\n if (state.data) {\r\n const copyItems = [...state.data];\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n return {\r\n ...state, data: copyItems\r\n }\r\n }\r\n return { ...state };\r\n };\r\n\r\n case ActionTypes.SetBorrowerLiabilityValidation: {\r\n let copyValidation = { ...state.validation };\r\n if (action.validationError) {\r\n copyValidation[action.field] = action.validationError;\r\n }\r\n else {\r\n if (copyValidation[action.field]) {\r\n delete copyValidation[action.field];\r\n }\r\n }\r\n return {\r\n ...state,\r\n validation: copyValidation\r\n };\r\n };\r\n default:\r\n return state;\r\n };\r\n}\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { BorrowerReoState, KnownAction, ReoProperty } from \"../store/borrowerReoStore\";\r\n\r\nconst unloadedState: BorrowerReoState = {\r\n hasAdditionalProperties: undefined,\r\n currentReoProperty: {\r\n id: \"\",\r\n owner: \"\",\r\n occupancyType: \"\",\r\n propertyType: \"\",\r\n noOfUnits: 0,\r\n willContinueToOwnPropertyAfterTransaction: undefined,\r\n street: \"\",\r\n city: \"\",\r\n state: \"\",\r\n zip: \"\",\r\n marketValue: \"\",\r\n propertyUsageType: \"\"\r\n\r\n },\r\n reoProperties: [] as ReoProperty[],\r\n realEstateDoesNotApply: undefined,\r\n isLoading: false\r\n}\r\n\r\nexport const borrowerReoReducer: Reducer = (state: BorrowerReoState | undefined, incomingAction: Action): BorrowerReoState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.IsLoading: {\r\n return { ...state, isLoading: action.loading };\r\n };\r\n\r\n case ActionTypes.RemoveProperty: {\r\n if (state.reoProperties) {\r\n const copyItems = [...state.reoProperties];\r\n const index = copyItems.findIndex(i => i.id === action.id);\r\n copyItems.splice(index, 1);\r\n return {\r\n ...state, reoProperties: copyItems\r\n }\r\n }\r\n return { ...state };\r\n };\r\n\r\n case ActionTypes.UpdateHasAdditionalProperties: {\r\n if (action.reoType === \"HasAdditionalProperties\") {\r\n return {\r\n ...state,\r\n hasAdditionalProperties: action.value,\r\n realEstateDoesNotApply: !action.value\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n hasAdditionalProperties: !action.value,\r\n realEstateDoesNotApply: action.value\r\n };\r\n }\r\n };\r\n case ActionTypes.AddReoProperty: {\r\n if (action.data) {\r\n let allReoProperties = [...state.reoProperties];\r\n\r\n let reo = allReoProperties.filter(x => x.id === action.data?.id);\r\n if (reo.length > 0) {\r\n let index = allReoProperties.findIndex(x => x.id === action.data?.id);\r\n\r\n reo[0].city = action.data.city;\r\n reo[0].marketValue = action.data.marketValue;\r\n reo[0].noOfUnits = action.data.noOfUnits;\r\n reo[0].occupancyType = action.data.occupancyType;\r\n reo[0].owner = action.data.owner;\r\n reo[0].propertyType = action.data.propertyType;\r\n reo[0].willContinueToOwnPropertyAfterTransaction = action.data.willContinueToOwnPropertyAfterTransaction;\r\n reo[0].street = action.data.street;\r\n reo[0].state = action.data.state;\r\n reo[0].zip = action.data.zip;\r\n\r\n allReoProperties[index] = reo[0];\r\n } else {\r\n allReoProperties.push(action.data);\r\n }\r\n\r\n return {\r\n ...state,\r\n currentReoProperty: action.data,\r\n reoProperties: allReoProperties\r\n };\r\n }\r\n return { ...state };\r\n };\r\n case ActionTypes.UpdateReoInformationField: {\r\n const list = [...state.reoProperties];\r\n list.map((reo: any) => {\r\n if (action.id === reo.id) {\r\n reo[action.field] = action.value;\r\n }\r\n return reo;\r\n });\r\n return {\r\n ...state,\r\n reoProperties: list\r\n }\r\n };\r\n case ActionTypes.UpdateReoAddressField: {\r\n const list = [...state.reoProperties];\r\n list.map((reo: ReoProperty) => {\r\n if (action.id === reo.id) {\r\n reo.city = action.cityValue;\r\n reo.state = action.stateValue;\r\n reo.street = action.streetValue;\r\n reo.zip = action.zipValue;\r\n }\r\n return reo;\r\n });\r\n return {\r\n ...state,\r\n reoProperties: list\r\n }\r\n };\r\n case ActionTypes.GetReoDetails: {\r\n if (action.data) {\r\n return {\r\n ...state,\r\n reoProperties: action.data.reoProperties,\r\n hasAdditionalProperties: action.data?.reoProperties && action.data.reoProperties.length > 0,\r\n realEstateDoesNotApply: action.data.realEstateDoesNotApply\r\n }\r\n }\r\n };\r\n\r\n\r\n default:\r\n return state;\r\n }\r\n}","import * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction, ReviewApplicationState } from \"../store/reviewApplicationStore\"\r\nimport { Action, Reducer } from 'redux';\r\n\r\nconst unloadedState: any = {\r\n validation: undefined,\r\n section: undefined,\r\n submitCheckFlag: false,\r\n loanFromEncompassMessageFlag: false\r\n}\r\n\r\nexport const reviewApplicationReducer: Reducer =\r\n (state: ReviewApplicationState | undefined, incomingAction: Action): ReviewApplicationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.SetReviewScreenValidation: {\r\n\r\n let copyValidation = { ...state.validation };\r\n let copySection = { ...state.section };\r\n if (action.validationError) {\r\n copyValidation[action.field] = action.validationError;\r\n copySection[action.section] = action.section;\r\n }\r\n else {\r\n if (copyValidation[action.field]) {\r\n delete copyValidation[action.field];\r\n delete copySection[action.section];\r\n }\r\n }\r\n return {\r\n ...state,\r\n validation: copyValidation,\r\n section: copySection\r\n };\r\n };\r\n case ActionTypes.SubmitCheckFlag: {\r\n return { ...state, submitCheckFlag: action.submitCheckFlag };\r\n };\r\n case ActionTypes.SetLoanFromEncompassMessageFlag: {\r\n return { ...state, loanFromEncompassMessageFlag: action.loanFromEncompassMessageFlag };\r\n };\r\n default:\r\n return state;\r\n }\r\n }","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { DemographicQuestionsState, KnownAction } from \"../store/demographicQuestionsStore\";\r\nimport { DemographicFields } from \"components/demographicQuestions/DemographicFields\";\r\nimport { BorrowerType } from \"../store/Enum\";\r\n\r\nconst unloadedState: DemographicQuestionsState = {\r\n borrower: {\r\n loanGuid: '',\r\n borrowerType: undefined,\r\n hmdaEthnicityHispanicLatinoIndicator: undefined,\r\n hmdaEthnicityNotHispanicLatinoIndicator: undefined,\r\n hmdaEthnicityDoNotWishIndicator: undefined,\r\n hmdaAmericanIndianIndicator: undefined,\r\n hmdaAfricanAmericanIndicator: undefined,\r\n hmdaWhiteIndicator: undefined,\r\n hmdaRaceDoNotWishProvideIndicator: undefined,\r\n hmdaGendertypeFemaleIndicator: undefined,\r\n hmdaGendertypeMaleIndicator: undefined,\r\n hmdaGendertypeDoNotWishIndicator: undefined,\r\n interimLoanStagingId: undefined\r\n },\r\n coBorrower: { loanGuid: '' },\r\n isLoading: false,\r\n errorMessage: '',\r\n borrowerloading: undefined,\r\n coborrowerloading: undefined\r\n}\r\n\r\nexport const demographicQuestionsStateReducer: Reducer = (state: DemographicQuestionsState | undefined, incomingAction: Action): DemographicQuestionsState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n\r\n case ActionTypes.RequestDemographicQuestions:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.RecieveDemographicQuestions:\r\n return action.borrowerType === BorrowerType.PrimaryBorrower ?\r\n {\r\n ...state,\r\n borrowerloading: true,\r\n borrower: action.data,\r\n isLoading: false\r\n } :\r\n {\r\n ...state,\r\n coborrowerloading: true,\r\n coBorrower: action.data,\r\n isLoading: false\r\n }\r\n\r\n case ActionTypes.UpdateDemographicQuestions: {\r\n let result;\r\n if (action.section === DemographicFields.SectionEthnicity) {\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n state.borrower.hmdaEthnicityHispanicLatinoIndicator = false;\r\n state.borrower.hmdaEthnicityNotHispanicLatinoIndicator = false;\r\n state.borrower.hmdaEthnicityDoNotWishIndicator = false;\r\n result = {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value,\r\n }\r\n }\r\n }\r\n else {\r\n state.coBorrower.hmdaEthnicityHispanicLatinoIndicator = false;\r\n state.coBorrower.hmdaEthnicityNotHispanicLatinoIndicator = false;\r\n state.coBorrower.hmdaEthnicityDoNotWishIndicator = false;\r\n result = {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value,\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n else if (action.section === DemographicFields.SectionRace) {\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n state.borrower.hmdaAmericanIndianIndicator = false;\r\n state.borrower.hmdaAfricanAmericanIndicator = false;\r\n state.borrower.hmdaPacificIslanderIndicator = false;\r\n state.borrower.hmdaWhiteIndicator = false;\r\n state.borrower.hmdaRaceDoNotWishProvideIndicator = false;\r\n\r\n result = {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value,\r\n }\r\n }\r\n }\r\n else {\r\n state.coBorrower.hmdaAmericanIndianIndicator = false;\r\n state.coBorrower.hmdaAfricanAmericanIndicator = false;\r\n state.coBorrower.hmdaPacificIslanderIndicator = false;\r\n state.coBorrower.hmdaWhiteIndicator = false;\r\n state.coBorrower.hmdaRaceDoNotWishProvideIndicator = false;\r\n result = {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value,\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n else if (action.section === DemographicFields.SectionSex) {\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n state.borrower.hmdaGendertypeFemaleIndicator = false;\r\n state.borrower.hmdaGendertypeMaleIndicator = false;\r\n state.borrower.hmdaGendertypeDoNotWishIndicator = false;\r\n result = {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value,\r\n }\r\n }\r\n }\r\n else {\r\n state.coBorrower.hmdaGendertypeFemaleIndicator = false;\r\n state.coBorrower.hmdaGendertypeMaleIndicator = false;\r\n state.coBorrower.hmdaGendertypeDoNotWishIndicator = false;\r\n result = {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value,\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n\r\n \r\n default:\r\n return state;\r\n }\r\n}","import * as ActionTypes from \"../common/ActionTypes\";\r\n\r\n// STATE\r\nexport interface AssetInformationState {\r\n coBorrowerAssetStatus?: boolean;\r\n borrower: BorrowerAsset;\r\n borrowerComplete: boolean;\r\n submitBorrower: boolean;\r\n coBorrower: BorrowerAsset;\r\n coBorrowerComplete: boolean;\r\n submitCoBorrower: boolean;\r\n}\r\n\r\n// MODEL\r\nexport interface BorrowerAsset {\r\n loanGuid?: string;\r\n borrowerType?: number;\r\n birthDate?: string;\r\n taxIdentificationIdentifier?: string;\r\n}\r\n\r\nexport enum BorrowerType {\r\n PrimaryBorrower = 0,\r\n CoBorrower = 1\r\n}\r\n\r\n// ACTIONS\r\ninterface SubmitBorrowerAssetInformation {\r\n type: typeof ActionTypes.SUBMIT_BORROWER_ASSET_INFORMATION,\r\n borrowerType: number,\r\n}\r\n\r\ninterface UpdateBorrowerAssetProperty {\r\n type: typeof ActionTypes.UPDATE_BORROWER_ASSET_PROPERTY,\r\n value: string,\r\n propertyName: string,\r\n borrowerType: BorrowerType\r\n}\r\n\r\ninterface UpdateSystematicAsset {\r\n type: typeof ActionTypes.UpdateSystematicAsset,\r\n borrowerData: BorrowerAsset\r\n}\r\n\r\ninterface ReadSystematicAsset {\r\n type: typeof ActionTypes.ReadSystematicAsset;\r\n data: BorrowerAsset;\r\n borrowerType: BorrowerType;\r\n}\r\n\r\ninterface UpdateCoBorrowerAssetStatus {\r\n type: typeof ActionTypes.UpdateCoBorrowerAssetStatus,\r\n value: boolean,\r\n}\r\n\r\nexport type KnownAction =\r\n UpdateCoBorrowerAssetStatus\r\n | SubmitBorrowerAssetInformation |\r\n UpdateBorrowerAssetProperty |\r\n UpdateSystematicAsset |\r\n ReadSystematicAsset;","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { AssetInformationState, BorrowerType, KnownAction } from \"../store/assetInformationStore\";\r\n\r\nconst unloadedState: AssetInformationState = {\r\n coBorrowerAssetStatus: undefined,\r\n borrower: {\r\n birthDate: undefined,\r\n taxIdentificationIdentifier: undefined,\r\n },\r\n coBorrower: {},\r\n borrowerComplete: false,\r\n coBorrowerComplete: false,\r\n submitBorrower: false,\r\n submitCoBorrower: false\r\n}\r\nexport const assetInformationReducer: Reducer = (state: AssetInformationState | undefined, incomingAction: Action): AssetInformationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n\r\n case ActionTypes.UPDATE_BORROWER_ASSET_PROPERTY:\r\n return action.borrowerType === BorrowerType.PrimaryBorrower ?\r\n {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n [action.propertyName]: action.value\r\n }\r\n } :\r\n {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n [action.propertyName]: action.value\r\n }\r\n };\r\n\r\n case ActionTypes.SUBMIT_BORROWER_ASSET_INFORMATION:\r\n if (action.borrowerType === 1) {\r\n return {\r\n ...state,\r\n submitBorrower: true\r\n }\r\n }\r\n else if (action.borrowerType === 2) {\r\n return {\r\n ...state,\r\n submitCoBorrower: true\r\n }\r\n }\r\n else {\r\n return {\r\n ...state,\r\n submitCoBorrower: false,\r\n submitBorrower: false\r\n }\r\n };\r\n\r\n\r\n\r\n case ActionTypes.UpdateCoBorrowerAssetStatus: {\r\n return {\r\n ...state,\r\n coBorrowerAssetStatus: action.value\r\n };\r\n };\r\n case ActionTypes.ReadSystematicAsset:\r\n {\r\n let result;\r\n let data = action.data;\r\n\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n result = {\r\n\r\n ...state,\r\n borrower: data,\r\n }\r\n return result;\r\n }\r\n else if (action.borrowerType === BorrowerType.CoBorrower) {\r\n result = {\r\n\r\n ...state,\r\n coBorrower: data,\r\n }\r\n return result;\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n}","export enum TaskStatus {\r\n NotStarted = \"Not Started\",\r\n InProgress = \"In Progress\",\r\n Completed = \"Completed\",\r\n Failed = \"Failed\"\r\n}\r\n\r\nexport enum TaskStatusId {\r\n NotStarted = 1,\r\n InProgress = 2,\r\n Completed = 3,\r\n Failed = 4\r\n}\r\n\r\nexport enum TaskItem {\r\n AccountInformation = 1,\r\n BorrowerInformation = 2,\r\n CoBorrowerInformation = 3,\r\n EmploymentAndIncomeInformation = 4,\r\n AdditionalIncome = 5,\r\n AssetInformation = 6,\r\n BorrowerREO = 7,\r\n Liability = 8,\r\n PropertyInformation = 9,\r\n GovernmentQuestions = 10,\r\n DemographicQuestions = 11,\r\n CreditInformation = 12,\r\n ContactPreference = 13,\r\n PreQualReviewScreen = 14\r\n}\r\n\r\nexport enum SubTaskItem {\r\n AccountInformation = 1,\r\n BorrowerInformation = 2,\r\n CoBorrowerInformation = 3,\r\n BorrowerEmployment = 4,\r\n CoBorrowerEmployment = 5,\r\n BorrowerAdditionalIncome = 6,\r\n CoBorrowerAdditionalIncome = 7,\r\n AssetInformation = 8,\r\n BorrowerREO = 9,\r\n Liability = 10,\r\n PropertyInformation = 11,\r\n BorrowerGovernmentQuestions = 12,\r\n CoBorrowerGovernmentQuestions = 13,\r\n BorrowerDemographicQuestions = 14,\r\n CoBorrowerDemographicQuestions = 15,\r\n CreditInformation = 16,\r\n ContactPreference = 17,\r\n PreQualReviewScreen = 18,\r\n CoBorrowerAssetInformation = 19\r\n}\r\n\r\nexport enum ProgressNavigationEnum {\r\n ManualAssetInformation = \"manual-asset-information\",\r\n AssetDetails = \"asset-details\",\r\n Asset = \"asset\",\r\n ReoProperties = \"reo-properties\",\r\n ReoPropertiesSummary = \"reo-properties-summary\",\r\n AddReoProperty = \"add-reo-property\",\r\n CreditInformation = \"credit-information\",\r\n CreditAuthorization = \"credit-authorization\",\r\n CreditReport = \"credit-report\",\r\n MilestoneProgress = \"milestone-progress\",\r\n SystematicLetter = \"systematic-letter\",\r\n BorrowerDocuments = \"borrower-document-view\",\r\n LoanOfficerDocumentView = \"loan-officer-documents\",\r\n BorrowerPreApprovalLetter = \"Borrower-PreApproval-Letter\"\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { ConsumerCreditAuthorizationState, KnownAction } from \"../store/consumerCreditAuthorizationStore\";\r\nimport { BorrowerType } from \"../store/Enum\";\r\n\r\nconst unloadedState: ConsumerCreditAuthorizationState = {\r\n borrower: {\r\n loanGuid: undefined,\r\n borrowerType: undefined,\r\n authorizedCreditReportIndicator: undefined,\r\n dateAuthorizedCreditReport: undefined,\r\n creditReportAuthorizationMethod: undefined,\r\n interimLoanStagingId: undefined\r\n },\r\n isLoading: false,\r\n errorMessage: '',\r\n coBorrower: {},\r\n}\r\n\r\nexport const consumerCreditAuthorizationReducer: Reducer = (state: ConsumerCreditAuthorizationState | undefined, incomingAction: Action): ConsumerCreditAuthorizationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n \r\n case ActionTypes.UpdateCreditAuthorizationProperty: {\r\n let authorizedMethod;\r\n authorizedMethod = action.value ? \"Internet\" : \"\";\r\n return action.borrowerType === BorrowerType.PrimaryBorrower ?\r\n {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n loanGuid: action.loanGuid,\r\n borrowerType: action.borrowerType,\r\n authorizedCreditReportIndicator: action.value,\r\n dateAuthorizedCreditReport: new Date(),\r\n creditReportAuthorizationMethod: authorizedMethod,\r\n interimLoanStagingId: action.interimLoanStagingId\r\n },\r\n } :\r\n {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n loanGuid: action.loanGuid,\r\n borrowerType: action.borrowerType,\r\n authorizedCreditReportIndicator: action.value,\r\n dateAuthorizedCreditReport: new Date(),\r\n creditReportAuthorizationMethod: authorizedMethod,\r\n interimLoanStagingId: action.interimLoanStagingId\r\n },\r\n };\r\n }\r\n case ActionTypes.UpdateCreditReportIndicator: {\r\n return action.borrowerType === BorrowerType.PrimaryBorrower ?\r\n {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n authorizedCreditReportIndicator: action.value,\r\n },\r\n } :\r\n {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n authorizedCreditReportIndicator: action.value,\r\n },\r\n };\r\n }\r\n case ActionTypes.RequestConsumerCreditAuthorization:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.ReceiveConsumerCreditAuthorization:\r\n {\r\n let result;\r\n let data = action.data;\r\n if (action.borrowerType === BorrowerType.PrimaryBorrower) {\r\n result = {\r\n\r\n ...state,\r\n borrower: data,\r\n isLoading: false\r\n }\r\n return result;\r\n }\r\n else if (action.borrowerType === BorrowerType.CoBorrower) {\r\n result = {\r\n\r\n ...state,\r\n coBorrower: data,\r\n isLoading: false\r\n }\r\n return result;\r\n }\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from \"redux\";\r\nimport { CreditReportState, KnownAction } from \"../store/creditReportStore\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { ReportStatus } from \"store/Enum\";\r\n\r\nconst unloadedState: CreditReportState = {\r\n showSpinner: true,\r\n status: null,\r\n reportId: null,\r\n borrowerScore: null,\r\n coBorrowerScore: null,\r\n};\r\n\r\nexport const creditReportReducer: Reducer = (\r\n state: CreditReportState | undefined,\r\n incomingAction: Action\r\n): CreditReportState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.SetCreditReportStatus: {\r\n return {\r\n ...state,\r\n status: action.status,\r\n };\r\n }\r\n\r\n case ActionTypes.StartCreditReport: {\r\n return {\r\n ...state,\r\n reportId: action.reportId,\r\n showSpinner: true,\r\n status: ReportStatus.InProgress\r\n };\r\n }\r\n case ActionTypes.CompleteCreditReport: {\r\n return {\r\n ...state,\r\n status: action.status,\r\n borrowerScore: action.borrowerScore,\r\n coBorrowerScore: action.coBorrowerScore,\r\n showSpinner: false,\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { Action, Reducer } from \"redux\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { CreditInformationState, KnownAction } from \"../store/creditInformationStore\";\r\n\r\nconst unloadedState: CreditInformationState = {\r\n borrower: {\r\n firstName: \"\",\r\n lastName: \"\",\r\n birthday: new Date(),\r\n ssn: \"\",\r\n },\r\n coBorrower: {\r\n firstName: \"\",\r\n lastName: \"\",\r\n birthday: new Date(),\r\n ssn: \"\",\r\n },\r\n showCoBorrower: false,\r\n inputDisabled: true\r\n};\r\n\r\nexport const creditInformationReducer: Reducer = (\r\n state: CreditInformationState | undefined,\r\n incomingAction: Action\r\n): CreditInformationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.SetCreditInformationModel: {\r\n const inputDisabled = action.borrowerSSN != undefined && action.borrowerSSN.length > 0;\r\n const showCoBorrower = action.coBorrowerLastName != undefined && action.coBorrowerLastName.length > 0;\r\n return {\r\n ...state,\r\n borrower: {\r\n firstName: action.borrowerFirstName,\r\n lastName: action.borrowerLastName,\r\n birthday: action.borrowerBirthday,\r\n ssn: action.borrowerSSN,\r\n },\r\n coBorrower: {\r\n firstName: action.coBorrowerFirstName ?? \"\",\r\n lastName: action.coBorrowerLastName ?? \"\",\r\n birthday: action.coBorrowerBirthday ?? new Date(),\r\n ssn: action.coBorrowerSSN ?? \"\",\r\n },\r\n showCoBorrower: showCoBorrower,\r\n inputDisabled: inputDisabled\r\n };\r\n }\r\n\r\n case ActionTypes.SetBorrowerDetail: {\r\n if (action.isBorrower) {\r\n return {\r\n ...state,\r\n borrower: {\r\n ...state.borrower,\r\n birthday: action.birthday,\r\n ssn: action.ssn,\r\n }\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n coBorrower: {\r\n ...state.coBorrower,\r\n birthday: action.birthday,\r\n ssn: action.ssn,\r\n }\r\n };\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { SystematicLetterState, KnownAction } from \"../store/systematicLetterStore\";\r\n\r\nconst unloadedState: SystematicLetterState = {\r\n data: {},\r\n isLoading: false,\r\n errorMessage: \"\"\r\n}\r\n\r\nexport const systematicLetterReducer: Reducer = (state: SystematicLetterState | undefined, incomingAction: Action): SystematicLetterState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.RequestSystematicLetter:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.ReceiveSystematicLetter:\r\n {\r\n let result;\r\n let data = action.data;\r\n result = {\r\n\r\n ...state,\r\n data: data,\r\n isLoading: false\r\n }\r\n return result;\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from \"redux\";\r\nimport { DocumentState, KnownAction } from \"../store/documentStore\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { from } from \"linq\";\r\n\r\nconst unloadedState: DocumentState = {\r\n selectedTab: 0,\r\n expandedSections: [],\r\n};\r\n\r\nexport const documentReducer: Reducer = (\r\n state: DocumentState | undefined,\r\n incomingAction: Action\r\n): DocumentState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.AlterSectionExpandedStatus: {\r\n if (action.isOpen) {\r\n return {\r\n ...state,\r\n expandedSections: from([...state.expandedSections, action.sectionId])\r\n .distinct()\r\n .toArray(),\r\n };\r\n } else {\r\n return {\r\n ...state,\r\n expandedSections:\r\n state.expandedSections?.filter((x) => x !== action.sectionId) ?? null,\r\n };\r\n }\r\n }\r\n case ActionTypes.AlterSelectedTab: {\r\n return {\r\n ...state,\r\n selectedTab: action.tabIndex,\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction, TaskMenuState } from \"../store/taskMenuStore\"\r\n\r\nconst unloadedState: TaskMenuState = {\r\n isLoading: false,\r\n errorMessage: \"\",\r\n data: [],\r\n loanSummary: undefined,\r\n isDirty: undefined,\r\n isPopupFlag: false\r\n}\r\n\r\nexport const taskMenuReducer: Reducer = (state: TaskMenuState | undefined, incomingAction: Action): TaskMenuState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.SetPopupFlag: {\r\n return { ...state, isPopupFlag: action.isPopupFlag };\r\n };\r\n case ActionTypes.SetLoanIsDirty: {\r\n return { ...state, isDirty: action.isDirty };\r\n };\r\n case ActionTypes.ReceiveTaskMenu: {\r\n if (action.data) {\r\n return {\r\n ...state,\r\n data: action.data,\r\n isLoading: false\r\n };\r\n }\r\n return { ...state }\r\n };\r\n\r\n case ActionTypes.ReceiveBorrowerInformation: {\r\n if (action.data) {\r\n return {\r\n ...state,\r\n loanSummary: {\r\n firstName: action.data.firstName,\r\n lastName: action.data.lastName,\r\n loanAmount: action.data.loanAmount,\r\n loanNumber: action.data.loanNumber,\r\n loanPurpose: action.data.loanPurpose,\r\n propertyCity: action.data.propertyCity,\r\n propertyState: action.data.propertyState,\r\n propertyZip: action.data.propertyZip,\r\n isLoading: false\r\n }\r\n };\r\n }\r\n return { ...state }\r\n };\r\n\r\n case ActionTypes.RequestTaskMenu: {\r\n if (action.loadingType === \"menu\") {\r\n return {\r\n ...state,\r\n isLoading: action.isLoading\r\n };\r\n }\r\n\r\n return {\r\n ...state,\r\n loanSummary: {\r\n isLoading: action.isLoading\r\n }\r\n };\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { DashboardState, KnownAction } from \"../store/dashboardStore\";\r\n\r\nconst unloadedState: DashboardState = {\r\n dashboardInformation: {\r\n loanOfficerFirstName: undefined,\r\n loanOfficerLastName: undefined,\r\n loanOfficerEmail: undefined,\r\n loanOfficerPhone: undefined,\r\n loanOfficerHeadshot: undefined,\r\n applicationDate: undefined,\r\n isPreQualInitiate: undefined,\r\n borrowerIntendToContinueDate: undefined,\r\n appFeeComplete: undefined,\r\n isPreQualComplete: undefined,\r\n isLoanComplete: undefined,\r\n documentSubmitted: undefined,\r\n documentRequested: undefined,\r\n loanPurpose: undefined,\r\n firstName: undefined,\r\n lastName: undefined,\r\n isEncompassDown: undefined,\r\n loanOriginationDate: undefined,\r\n preApprovalLetterFlag: undefined,\r\n propertyEstimatedValueAmount: undefined,\r\n },\r\n isLoading: false,\r\n errorMessage: '',\r\n data: []\r\n}\r\n\r\nexport const dashboardReducer: Reducer = (state: DashboardState | undefined, incomingAction: Action): DashboardState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n\r\n case ActionTypes.IsLoading: {\r\n return { ...state, isLoading: action.loading };\r\n };\r\n\r\n case ActionTypes.GetDashboardDetails: {\r\n if (action.data) {\r\n\r\n return {\r\n ...state,\r\n isLoading: false,\r\n dashboardInformation: action.data\r\n }\r\n }\r\n };\r\n case ActionTypes.ReceiveNotificationMessages: {\r\n return {\r\n ...state,\r\n data: action.data as string[]\r\n }\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { MilestoneNavigationState, KnownAction, } from \"../store/MilestoneNavigationStore\";\r\nimport { TaskStatus } from '../components/common/progressTracker/TaskStatus';\r\n\r\nconst unloadedState: MilestoneNavigationState = {\r\n estimatedClosingDate: \"\",\r\n actualClosingDate: \"\",\r\n creditAnalysis: \"\",\r\n closed: \"\",\r\n completingTheApplication: \"\",\r\n processingTheApplication: \"\",\r\n readyForClosing: \"\"\r\n}\r\n\r\nexport const milestoneNavigationReducer: Reducer = (state: MilestoneNavigationState | undefined, incomingAction: Action): MilestoneNavigationState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.ReceiveMilestoneDetails: {\r\n if (action.closed === \"True\") {\r\n action.closed = TaskStatus.InProgress;\r\n action.readyForClosing = TaskStatus.Completed;\r\n action.creditAnalysis = TaskStatus.Completed;\r\n action.completingTheApplication = TaskStatus.Completed;\r\n action.processingTheApplication = TaskStatus.Completed;\r\n } else if (action.readyForClosing === \"True\") {\r\n action.readyForClosing = TaskStatus.InProgress;\r\n action.creditAnalysis = TaskStatus.Completed;\r\n action.completingTheApplication = TaskStatus.Completed;\r\n action.processingTheApplication = TaskStatus.Completed;\r\n } else if (action.creditAnalysis === \"True\") {\r\n action.creditAnalysis = TaskStatus.InProgress;\r\n action.completingTheApplication = TaskStatus.Completed;\r\n action.processingTheApplication = TaskStatus.Completed;\r\n } else if (action.processingTheApplication === \"True\") {\r\n action.completingTheApplication = TaskStatus.Completed;\r\n action.processingTheApplication = TaskStatus.InProgress;\r\n } else {\r\n action.completingTheApplication = TaskStatus.InProgress;\r\n }\r\n\r\n return {\r\n ...state,\r\n estimatedClosingDate: action.estimatedClosingDate,\r\n actualClosingDate: action.actualClosingDate,\r\n closed: action.closed,\r\n completingTheApplication: action.completingTheApplication,\r\n creditAnalysis: action.creditAnalysis,\r\n readyForClosing: action.readyForClosing,\r\n processingTheApplication: action.processingTheApplication,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { LoanOfficerMainTabState, KnownAction } from \"../store/LoanOfficerMainTabStore\";\r\n\r\nconst unloadedState: LoanOfficerMainTabState = {\r\n data: {\r\n posLoanIdentifier: false,\r\n appFeeCollectedStatus: undefined,\r\n appFeePendingStatus: undefined,\r\n loanPurpose:\"\",\r\n contactChoices: [],\r\n loanOriginationDate: undefined,\r\n loanType: undefined,\r\n propertyEstimatedValueAmount: undefined\r\n },\r\n creditReports: [],\r\n loanGuid: '',\r\n isLoading: false,\r\n selectedTab: 0,\r\n preApproval: {\r\n letterStyle: undefined,\r\n loanType: undefined,\r\n posMaxPurchasePrice: undefined,\r\n letterName: undefined,\r\n posAlterPurchasePriceIndicator: undefined,\r\n timeStamp: new Date(),\r\n preApprovalLetterId: 0,\r\n posPreApprovalLetterComments: undefined,\r\n isRequestedPreApproval: false,\r\n loPreApprovalLetterComments: \"\"\r\n },\r\n}\r\n\r\nexport const loanOfficerMainTabReducer: Reducer = (state: LoanOfficerMainTabState | undefined, incomingAction: Action): LoanOfficerMainTabState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.RequestApplicationFee:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.ReceiveApplicationFee:\r\n {\r\n let result;\r\n let data = action.data;\r\n \r\n result = {\r\n\r\n ...state,\r\n data: data,\r\n isLoading: false\r\n }\r\n return result;\r\n };\r\n case ActionTypes.ReceiveCreditReports:\r\n {\r\n let result;\r\n let reports = action.creditReports;\r\n\r\n result = {\r\n ...state,\r\n creditReports: reports,\r\n isLoading: false\r\n }\r\n return result;\r\n };\r\n case ActionTypes.SetLoanOfficerViewLoanGuid:\r\n return {\r\n ...state,\r\n loanGuid: action.loanGuid\r\n };\r\n case ActionTypes.SetSelectedTab:\r\n return {\r\n ...state,\r\n selectedTab: action.selectedTab\r\n };\r\n case ActionTypes.UpdatePreApproval:\r\n return {\r\n\r\n ...state,\r\n preApproval: {\r\n ...state.preApproval,\r\n [action.propertyName]: action.value\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { LoanUpdateResponseState, KnownAction } from \"../store/loanUpdateResponseStore\";\r\n\r\nconst unloadedState: LoanUpdateResponseState = {\r\n loanGuid: undefined,\r\n isEncompassDown: false\r\n}\r\n\r\nexport const loanUpdateResponseReducer: Reducer = (state: LoanUpdateResponseState | undefined, incomingAction: Action): LoanUpdateResponseState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.SetIsEncompassDown:\r\n return {\r\n ...state,\r\n isEncompassDown: action.isEncompassDown,\r\n };\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { CountyLookUpState, KnownAction } from \"../store/CountyLookUpStore\";\r\n\r\nconst unloadedState: CountyLookUpState = {\r\n data: undefined,\r\n isLoading: false,\r\n errorMessage: \"\"\r\n}\r\n\r\nexport const countyLookupReducer: Reducer = (state: CountyLookUpState | undefined, incomingAction: Action): CountyLookUpState => {\r\n\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case ActionTypes.RequestCountyLookup:\r\n\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.ReceiveCountyLookup:\r\n\r\n return {\r\n ...state,\r\n data: [...action.data],\r\n isLoading: false\r\n };\r\n case ActionTypes.HandleErrorCountyLookup:\r\n\r\n return {\r\n ...state,\r\n isLoading: false,\r\n errorMessage: action.errorMessage\r\n };\r\n case ActionTypes.ClearExceptionCountyLookup:\r\n\r\n return {\r\n ...state,\r\n errorMessage: \"\"\r\n };\r\n case ActionTypes.ClearCountyDetails:\r\n\r\n return {\r\n ...state,\r\n data: undefined\r\n };\r\n default:\r\n return state;\r\n }\r\n}","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { LoanSummaryState, KnownAction, InterimLoanSummary, LoanOfficerDetail } from \"../store/interimLoanSummaryStore\";\r\n\r\nconst unloadedState: LoanSummaryState = {\r\n loanSummary: [] as InterimLoanSummary[],\r\n isLoading: false,\r\n currentLoanSummary: {\r\n interimLoanStagingId: 0,\r\n address: \"\",\r\n city: \"\",\r\n state: \"\",\r\n zip: 0,\r\n loanNumber: \"\",\r\n loanAmount: 0,\r\n loanTerm: 0,\r\n loanType: \"\",\r\n loanOfficerId: 0,\r\n loanPercentage: 0,\r\n loanStatus: \"\"\r\n },\r\n loanOfficerDetail: {\r\n firstName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n loanOfficerHeadshot: \"\",\r\n slugId: \"\",\r\n },\r\n}\r\n\r\nexport const interimLoanSummaryReducer: Reducer = (state: LoanSummaryState | undefined, incomingAction: Action): LoanSummaryState => {\r\n\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n const action = incomingAction as KnownAction;\r\n\r\n switch (action.type) {\r\n\r\n\r\n case ActionTypes.ReceiveInterimLoanSummary: {\r\n if (action.data) {\r\n\r\n return {\r\n ...state,\r\n isLoading: false,\r\n loanSummary: action.data.loanSummary,\r\n currentLoanSummary: action.data.loanSummary[0],\r\n loanOfficerDetail: action.data.loanOfficerDetail\r\n }\r\n }\r\n };\r\n\r\n case ActionTypes.ReceiveUpdatedInterimLoanSummary: {\r\n if (action.data) {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n loanSummary: action.data.loanSummary,\r\n loanOfficerDetail: action.data.loanOfficerDetail\r\n }\r\n }\r\n };\r\n\r\n case ActionTypes.SetCurrentInterimLoanSummary: {\r\n if (action.data) {\r\n return {\r\n ...state,\r\n currentLoanSummary: action.data as InterimLoanSummary\r\n }\r\n }\r\n\r\n };\r\n case ActionTypes.ReceiveLoanOfficerDetail: {\r\n if (action.data) {\r\n\r\n return {\r\n ...state,\r\n loanOfficerDetail: action.data as LoanOfficerDetail\r\n }\r\n }\r\n };\r\n\r\n case ActionTypes.GetInterimLoanSummary: {\r\n if (action.data) {\r\n\r\n return {\r\n ...state,\r\n loanSummary: action.data as InterimLoanSummary[]\r\n }\r\n }\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}","import * as WeatherForecasts from './WeatherForecasts';\r\nimport * as Counter from './Counter';\r\n\r\nimport * as AccountInformation from \"./accountInformationStore\";\r\nimport { accountInformationReducer } from \"../reducers/accountInformationReducer\";\r\nimport * as AccountCreation from \"./accountCreationStore\";\r\nimport { accountCreationReducer } from \"../reducers/accountCreationReducer\";\r\nimport * as EmploymentInformation from \"./employmentInformationStore\";\r\nimport { employmentInformationReducer } from \"../reducers/employmentInformationReducer\";\r\n\r\nimport * as UserAccountInformation from \"./userAccountStore\";\r\nimport { userAccountReducer } from \"../reducers/userAccountReducer\";\r\nimport * as ManualAssetInformation from \"./ManualAssetInformationStore\";\r\nimport { manualAssetInformationReducer } from \"../reducers/manualAssetInformationReducer\";\r\n\r\nimport * as PropertyInformation from \"./propertyInformationStore\";\r\nimport { propertyInformationReducer } from \"../reducers/propertyInformationReducer\";\r\n\r\nimport * as ZipCodeLookUp from \"./ZipCodeLookUpStore\";\r\nimport { zipCodeLookupReducer } from \"../reducers/zipCodeLookupReducer\";\r\n\r\nimport { loanReducer } from \"../reducers/loanReducer\";\r\nimport * as Loan from \"./loanStore\";\r\n\r\nimport * as additionalIncome from \"./additionalIncomeStore\";\r\nimport { additionalIncomeReducer } from \"../reducers/additonalIncomeReducer\";\r\n\r\nimport * as Navigation from \"./navigationStore\";\r\nimport { navigationReducer } from \"../reducers/navigationReducer\";\r\n\r\nimport * as GovernmentQuestion from \"./GovernmentQuestionStore\";\r\nimport { governmentQuestionReducer } from \"../reducers/governmentQuestionReducer\";\r\n\r\nimport * as BorrowerLiability from \"./borrowerLiabilityStore\";\r\nimport { borrowerLiabilityReducer } from \"../reducers/borrowerLiabilityReducer\";\r\n\r\nimport * as BorrowerReo from \"./borrowerReoStore\";\r\nimport { borrowerReoReducer } from \"../reducers/borrowerReoReducer\";\r\nimport * as ReviewApplication from \"./reviewApplicationStore\";\r\nimport { reviewApplicationReducer } from \"../reducers/reviewApplicationReducer\";\r\n\r\nimport * as DemographicQuestions from \"./demographicQuestionsStore\";\r\nimport { demographicQuestionsStateReducer } from \"../reducers/demographicQuestionsReducer\";\r\n\r\nimport * as assetInformation from \"./assetInformationStore\";\r\nimport { assetInformationReducer } from \"../reducers/assetInformationReducer\";\r\n\r\nimport * as ConsumerCreditAuthorization from \"./consumerCreditAuthorizationStore\";\r\nimport { consumerCreditAuthorizationReducer } from \"../reducers/consumerCreditAuthorizationReducer\";\r\n\r\nimport * as CreditReport from \"./creditReportStore\";\r\nimport { creditReportReducer } from \"../reducers/creditReportReducer\";\r\n\r\nimport * as CreditInformation from \"./creditInformationStore\";\r\nimport { creditInformationReducer } from \"../reducers/creditInformationReducer\";\r\n\r\nimport * as SystematicLetter from \"./systematicLetterStore\";\r\nimport { systematicLetterReducer } from \"../reducers/systematicLetterReducer\";\r\n\r\nimport * as Document from \"./documentStore\";\r\nimport { documentReducer } from \"../reducers/documentReducer\";\r\n\r\nimport * as taskMenu from \"./taskMenuStore\";\r\nimport { taskMenuReducer } from \"../reducers/taskMenuReducer\";\r\n\r\nimport * as Dashboard from \"./dashboardStore\";\r\nimport { dashboardReducer } from \"../reducers/dashboardReducer\";\r\n\r\nimport { MilestoneNavigationState } from './MilestoneNavigationStore';\r\nimport { milestoneNavigationReducer } from \"../reducers/milestoneNavigationReducer\";\r\n\r\nimport { LoanOfficerMainTabState } from './LoanOfficerMainTabStore';\r\nimport { loanOfficerMainTabReducer } from \"../reducers/loanOfficerMainTabReducer\";\r\n\r\nimport { LoanUpdateResponseState } from './loanUpdateResponseStore';\r\nimport { loanUpdateResponseReducer } from \"../reducers/loanUpdateResponseReducer\";\r\n\r\nimport * as CountyLookUp from \"./CountyLookUpStore\";\r\nimport { countyLookupReducer } from \"../reducers/countyLookupReducer\";\r\n\r\nimport * as interimLoanSummary from \"./interimLoanSummaryStore\";\r\nimport { interimLoanSummaryReducer } from \"../reducers/interimLoanSummaryReducer\";\r\n\r\n// The top-level state object\r\nexport interface ApplicationState {\r\n counter: Counter.CounterState | undefined;\r\n weatherForecasts: WeatherForecasts.WeatherForecastsState | undefined;\r\n accountInformation: AccountInformation.AccountInformationState | undefined;\r\n userAccountInformation: UserAccountInformation.UserAccountState | undefined;\r\n zipCodeLookUp: ZipCodeLookUp.ZipCodeLookUpState | undefined;\r\n accountCreation: AccountCreation.AccountCreationState | undefined;\r\n propertyInformation: PropertyInformation.PropertyInformationState | undefined;\r\n employmentInformation: EmploymentInformation.EmploymentInformationState | undefined;\r\n loan: Loan.loanState | undefined;\r\n additionalIncome: additionalIncome.AdditionalIncomeState | undefined;\r\n consumerCreditAuthorization: ConsumerCreditAuthorization.ConsumerCreditAuthorizationState | undefined;\r\n navigation: Navigation.NavigationState | undefined;\r\n assetInformation: assetInformation.AssetInformationState | undefined;\r\n creditInformation: CreditInformation.CreditInformationState | undefined;\r\n manualAssetInformation: ManualAssetInformation.ManualAssetInformationState | undefined;\r\n governmentQuestions: GovernmentQuestion.GovernmentQuestionState | undefined;\r\n borrowerLiability: BorrowerLiability.BorrowerLiabilityState | undefined;\r\n borrowerReo: BorrowerReo.BorrowerReoState | undefined;\r\n creditReport: CreditReport.CreditReportState | undefined;\r\n demographicQuestions: DemographicQuestions.DemographicQuestionsState | undefined;\r\n reviewApplication: ReviewApplication.ReviewApplicationState | undefined;\r\n document: Document.DocumentState | undefined;\r\n taskMenu: taskMenu.TaskMenuState | undefined;\r\n dashboard: Dashboard.DashboardState | undefined;\r\n systematicLetter: SystematicLetter.SystematicLetterState | undefined;\r\n milestoneNavigation: MilestoneNavigationState | undefined;\r\n loanOfficerMainTab: LoanOfficerMainTabState | undefined;\r\n loanUpdateResponse: LoanUpdateResponseState | undefined;\r\n countyLookUp: CountyLookUp.CountyLookUpState | undefined;\r\n interimLoanSummary: interimLoanSummary.LoanSummaryState | undefined;\r\n\r\n}\r\n// Whenever an action is dispatched, Redux will update each top-level application state property using\r\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\r\n// acts on the corresponding ApplicationState property type.\r\nexport const reducers = {\r\n counter: Counter.reducer,\r\n weatherForecasts: WeatherForecasts.reducer,\r\n accountInformation: accountInformationReducer,\r\n userAccountInformation: userAccountReducer,\r\n zipCodeLookUp: zipCodeLookupReducer,\r\n accountCreation: accountCreationReducer,\r\n propertyInformation: propertyInformationReducer,\r\n employmentInformation: employmentInformationReducer,\r\n navigation: navigationReducer,\r\n loan: loanReducer,\r\n additionalIncome: additionalIncomeReducer,\r\n manualAssetInformation: manualAssetInformationReducer,\r\n governmentQuestions: governmentQuestionReducer,\r\n borrowerLiability: borrowerLiabilityReducer,\r\n borrowerReo: borrowerReoReducer,\r\n demographicQuestions: demographicQuestionsStateReducer,\r\n assetInformation: assetInformationReducer,\r\n creditReport: creditReportReducer,\r\n consumerCreditAuthorization: consumerCreditAuthorizationReducer,\r\n creditInformation: creditInformationReducer,\r\n reviewApplication: reviewApplicationReducer,\r\n document: documentReducer,\r\n systematicLetter: systematicLetterReducer,\r\n taskMenu: taskMenuReducer,\r\n dashboard: dashboardReducer,\r\n milestoneNavigation: milestoneNavigationReducer,\r\n loanOfficerMainTab: loanOfficerMainTabReducer,\r\n countyLookUp: countyLookupReducer,\r\n loanUpdateResponse: loanUpdateResponseReducer,\r\n interimLoanSummary: interimLoanSummaryReducer\r\n};\r\n\r\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\r\n// correctly typed to match your store.\r\nexport interface AppThunkAction {\r\n (dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\r\n}","import { Action, Reducer } from 'redux';\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface CounterState {\r\n count: number;\r\n}\r\n\r\n// -----------------\r\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\r\n// They do not themselves have any side-effects; they just describe something that is going to happen.\r\n// Use @typeName and isActionType for type detection that works even after serialization/deserialization.\r\n\r\nexport interface IncrementCountAction { type: 'INCREMENT_COUNT' }\r\nexport interface DecrementCountAction { type: 'DECREMENT_COUNT' }\r\n\r\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\r\n// declared type strings (and not any other arbitrary string).\r\nexport type KnownAction = IncrementCountAction | DecrementCountAction;\r\n\r\n// ----------------\r\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\r\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\r\n\r\nexport const actionCreators = {\r\n increment: () => ({ type: 'INCREMENT_COUNT' } as IncrementCountAction),\r\n decrement: () => ({ type: 'DECREMENT_COUNT' } as DecrementCountAction)\r\n};\r\n\r\n// ----------------\r\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\r\n\r\nexport const reducer: Reducer = (state: CounterState | undefined, incomingAction: Action): CounterState => {\r\n if (state === undefined) {\r\n return { count: 0 };\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'INCREMENT_COUNT':\r\n return { count: state.count + 1 };\r\n case 'DECREMENT_COUNT':\r\n return { count: state.count - 1 };\r\n default:\r\n return state;\r\n }\r\n};\r\n","// ACCOUNT INFORMATION\r\nexport const UpdateLoanPurposeChoice = \"UPDATE_LOAN_PURPOSE_CHOICE\";\r\nexport const UpdateUserId = \"UPDATE_USER_ID\";\r\nexport const UpdateOccupancyTypeChoice = \"UPDATE_OCCUPANCY_TYPE_CHOICE\";\r\nexport const UpdatePropertyTypeChoice = \"UPDATE_PROPERTY_TYPE_CHOICE\";\r\nexport const UpdateClosingDateChoice = \"UPDATE_CLOSING_DATE_CHOICE\";\r\nexport const UpdatePriorityChoice = \"UPDATE_PRIORITY_CHOICE\";\r\nexport const UpdateHowManyUnitsChoice = \"UPDATE_HOW_MANY_UNITS_CHOICE\";\r\nexport const UpdateBorrowerFirstName = \"UPDATE_BORROWER_FIRST_NAME\";\r\nexport const UpdateBorrowerMiddleName = \"UPDATE_BORROWER_MIDDLE_NAME\";\r\nexport const UpdateBorrowerLastName = \"UPDATE_BORROWER_LAST_NAME\";\r\nexport const UpdateBorrowerNameSuffix = \"UPDATE_BORROWER_NAME_SUFFIX\";\r\nexport const UpdateBorrowerPhoneNumber = \"UPDATE_BORROWER_PHONE_NUMBER\";\r\nexport const UpdateBorrowerEmail = \"UPDATE_BORROWER_EMAIL\";\r\nexport const SubmitInitialAccountInformation = \"SUBMIT_INITIAL_ACCOUNT_INFORMATION\";\r\nexport const AccountInformationCheck = \"ACCOUNT_INFORMATION_CHECK\";\r\nexport const SetBorrowerType = \"SET_BORROWER_TYPE\";\r\n\r\n// LOAN INFORMATION\r\nexport const SetLoanGuid = \"SET_LOAN_GUID\";\r\nexport const SetIsLoanCompleted = \"SET_IS_LOAN_COMPLETED\";\r\nexport const SetIsEncompassDown = \"SET_IS_ENCOMPASS_DOWN\";\r\nexport const SetIsLoanFromEncompassFlag = \"SET_IS_LOAN_FROM_ENCOMPASS_FLAG\";\r\nexport const SetInterimLoanStagingId = \"SET_INTERIM_LOAN_STAGING_ID\";\r\n\r\n// USER ACCOUNT INFORMATION\r\nexport const UpdateUserFirstName = \"UPDATE_USER_FIRST_NAME\";\r\nexport const UpdateUserLastName = \"UPDATE_USER_LAST_NAME\";\r\nexport const UpdateUserEmail = \"UPDATE_USER_EMAIL\";\r\nexport const UpdateUserBorrowerType = \"UPDATE_USER_BORROWER_TYPE\";\r\nexport const UpdateUserConsent = \"UPDATE_USER_CONSENT\";\r\nexport const IsLoancreated = \"IS_LOAN_CREATED\";\r\n\r\n// LOAN ACCOUNT CREATION\r\nexport const UpdateAddressMoveInDate = \"UPDATE_ADDRESS_MOVE_IN_DATE\";\r\nexport const UpdateBorrowerProperty = \"UPDATE_BORROWER_PROPERTY\";\r\nexport const UpdateBorrowerAddressProperty = \"UPDATE_BORROWER_ADDRESS_PROPERTY\";\r\nexport const SetAddressSameAsBorrower = \"SET_ADDRESS_SAME_AS_BORROWER\";\r\nexport const ResetFormerAddress = \"RESET_FORMER_ADDRESS\";\r\nexport const SetBorrowerValidation = \"SET_BORROWER_VALIDATION\"\r\nexport const AddAddressProperty = \"ADD_ADDRESS_PROPERTY\";\r\nexport const EditAddressProperty = \"EDIT_ADDRESS_PROPERTY\";\r\nexport const DeleteAddressProperty = \"DELETE_ADDRESS_PROPERTY\";\r\nexport const GetBorrowerInformation = \"GET_BORROWER_INFORMATION\";\r\nexport const UpdateOktaResult = \"UPDATE_OKTA_RESULT\";\r\n\r\n// PROPERTY INFORMATION\r\nexport const UPDATE_PROPERTY_INFORMATION_FIELD = \"UPDATE_PROPERTY_INFORMATION_FIELD\";\r\nexport const ReceivePropertyInformation = \"RECEIVE_PROPERTY_INFORMATION\";\r\n\r\n\r\n// EMPLOYMENT INFORMATION\r\nexport const UpdateEmploymentInformationProperty = \"UPDATE_EMPLOYMENT_INFORMATION_PROPERTY\";\r\nexport const SubmitEmploymentInformation = \"SUBMIT_EMPLOYMENT_INFORMATION\";\r\nexport const SubmittedEmploymentInformation = \"SUBMITTED_EMPLOYMENT_INFORMATION\";\r\nexport const AddEmploymentItem = \"ADD_EMPLOYMENT_ITEM\";\r\nexport const DeleteEmploymentItem = \"DELETE_EMPLOYMENT_ITEM\";\r\nexport const ResetEmploymentItem = \"RESET_EMPLOYMENT_ITEM\";\r\nexport const GetEmploymentInformation = \"GET_EMPLOYMENT_IFORMATION\";\r\nexport const ReIndexingEmployment = \"RE_INDEXING_EMPLOYMENT\";\r\n\r\n// ASSET INFORMATION\r\nexport const SUBMIT_BORROWER_ASSET_INFORMATION = \"SUBMIT_BORROWER_ASSET_INFORMATION\";\r\nexport const UPDATE_BORROWER_ASSET_PROPERTY = \"UPDATE_BORROWER_ASSET_PROPERTY\";\r\nexport const UpdateSystematicAsset = \"UPDATE_Systematic_ASSET\";\r\nexport const ReadSystematicAsset = \"READ_SYSTEMATIC_ASSET\";\r\nexport const UpdateCoBorrowerAssetStatus = \"UPDATE_COBORROWER_ASSET_STATUS\";\r\n\r\n// NAVIGATION\r\nexport const ResetNavigation = \"RESET_NAVIGATION\";\r\nexport const ResetNavigationFromRoute = \"RESET_NAVIGATION_FROM_ROUTE\";\r\nexport const SetContinue = \"SET_CONTINUE\";\r\nexport const SetBackOnClick = \"SET_BACK_ONCLICK\";\r\nexport const ShowContinue = \"SHOW_CONTINUE\";\r\nexport const SetContinueDisabled = \"SET_CONTINUE_DISABLED\";\r\nexport const ResetContinue = \"RESET_CONTINUE\";\r\nexport const HideNavigation = \"HIDE_NAVIGATION\";\r\nexport const RenameNavigation = \"RENAME_NAVIGATION\";\r\n\r\n// ADDITIONALINCOME INFORMATION\r\nexport const CreateOtherIncomeSourceItem = \"CREATE_OTHER_INCOME_SOURCE_ITEM\";\r\nexport const DeleteOtherIncomeSourceItem = \"DELETE_OTHER_INCOME_SOURCE_ITEM\";\r\nexport const RemoveOtherIncomeSourceItemList = \"REMOVE_OTHER_INCOME_SOURCE_ITEM_LIST\";\r\nexport const UpdateOtherIncomeSourceInformation = \"UPDATE_OTHER_INCOME_SOURCE_INFORMATION\";\r\nexport const UpdateAdditionalIncomeInfo = \"UPDATE_ADDITIONAL_INCOME_INFO\";\r\nexport const SetOtherIncomeSourceValidation = \"SET_OTHER_INCOME_SOURCE_VALIDATION\";\r\nexport const HandleErrorAdditional_incomeSource = \"HANDLE_ERROR_ADDITIONAL_INCOME_SOURCE\";\r\nexport const ClearExceptionAdditionalIncomeSource = \"CLEAR_EXCEPTION_ADDITIONAL_INCOME_SOURCE\";\r\nexport const RequestAdditionalIncomeSource = \"REQUEST_ADDITIONAL_INCOME_SOURCE\";\r\nexport const ReceiveAdditionalIncomeSource = \"RECEIVE_ADDITIONAL_INCOME_SOURCE\";\r\nexport const UpdateIncomeState = \"UPDATE_INCOME_STATE\";\r\n\r\n//Zip code lookup\r\nexport const RequestZipCodeLookup = \"REQUEST_ZIP_CODE_LOOKUP\";\r\nexport const ReceiveZipCodeLookup = \"RECEIVE_ZIP_CODE_LOOKUP\";\r\nexport const HandleErrorZipCodeLookup = \"HANDLE_ERROR_ZIP_CODE_LOOKUP\";\r\nexport const ClearExceptionZipCodeLookup = \"CLEAR_EXCEPTION_ZIP_CODE_LOOKUP\";\r\nexport const ClearZipDetails = \"CLEAR_ZIP_DETAILS\";\r\n// Asset\r\nexport const CreateManualAssetInformation = \"CREATE_MANUAL_ASSET_INFORMATION\";\r\nexport const UpdateManualAssetProperty = \"UPDATE_MANUAL_ASSET_PROPERTY\";\r\nexport const RemoveManualAssetItem = \"REMOVE_MANUAL_ASSET_ITEM\";\r\nexport const GetManualAssetItem = \"GET_MANUAL_ASSET_ITEM\";\r\nexport const SetManualAssetValidation = \"SET_MANUAL_ASSET_VALIDATION\";\r\nexport const RequestAsset = \"REQUEST_ASSET\";\r\nexport const ReceiveAsset = \"RECEIVE_ASSET\";\r\nexport const HandleErrorAsset = \"HANDLE_ERROR_ASSET\";\r\nexport const RemoveManualAssetItemFromInterim = \"REMOVE_MANUAL_ASSET_ITEM_From_INTERIM\";\r\nexport const ReceiveEncompassAsset = \"RECEIVE_ENCOMPASS_ASSET\";\r\nexport const ReceiveSystematicAsset = \"RECEIVE_SYSTEMATIC_ASSET\";\r\nexport const RequestEncompassAsset = \"REQUEST_ENCOMPASS_ASSET\";\r\n\r\n\r\n// GOVERNMENT QUESTIONS\r\nexport const UpdateGovernmentQuestions = \"UPDATE_GOVERNMENT_QUESTIONS\";\r\nexport const SubmitGovernmentQuestions = \"SUBMIT_GOVERNMENT_QUESTIONS\";\r\nexport const UpdateGovernmentAdditionalQuestions = \"UPDATE_GOVERNMENT_ADDITIONAL_QUESTIONS\";\r\nexport const UpdateBorrowerCompleted = \"UPDATE_BORROWER_COMPLETED\";\r\nexport const SubmittedGovernmentQuestions = \"SUBMITTED_GOVERNMENT_QUESTIONS\";\r\nexport const RequestGovernmentQuestions = \"REQUEST_GOVERNMENT_QUESTIONS\";\r\nexport const ReceiveGovernmentQuestions = \"RECEIVE_GOVERNMENT_QUESTIONS\";\r\nexport const UpdateToInterim = \"UPDATE_TO_INTERIM\";\r\n\r\n// BORROWER REO\r\nexport const UpdateHasAdditionalProperties = \"UPDATE_HAS_ADDITIONAL_PROPERTIES\";\r\nexport const AddReoProperty = \"ADD_REO_PROPERTY\";\r\nexport const UpdateToCache = \"UPDATE_TO_CACHE\";\r\nexport const GetReoDetails = \"GET_REO_DETAILS\";\r\nexport const UpdateReoInformationField = \"UPDATE_REO_FIELD\";\r\nexport const RemoveProperty = \"REMOVE_PROPERTY\";\r\n\r\n//BORROWER LIABILITY\r\nexport const CreateBorrowerLiability = \"CREATE_BORROWER_LIABILITY\";\r\nexport const DeleteBorrowerLiability = \"DELETE_BORROWER_LIABILITY\";\r\nexport const UpdateBorrowerLiabilityInformation = \"UPDATE_BORROWER_LIABILITY_INFORMATION\";\r\nexport const SetBorrowerLiabilityValidation = \"SET_BORROWER_LIABILITY_VALIDATION\";\r\nexport const ReceiveBorrowerLiability = \"RECEIVE_BORROWER_LIABILITY\";\r\n\r\n// DEMOGRAPHIC QUESTIONS\r\nexport const GetDemographicQuestions = \"GetDemographicQuestions\";\r\nexport const UpdateDemographicQuestions = \"UPDATE_DEMOGRAPHIC_QUESTIONS\";\r\nexport const SubmitDemographicQuestions = \"SUBMIT_DEMOGRAPHIC_QUESTIONS\";\r\nexport const RequestDemographicQuestions = \"REQUEST_DEMOGRAPHIC_QUESTIONS\";\r\nexport const RecieveDemographicQuestions = \"RECEIVE_DEMOGRAPHIC_QUESTIONS\";\r\n\r\n// CREDIT AUTHORIZATION\r\nexport const UpdateCreditAuthorizationProperty = \"UPDATE_CREDIT_AUTHORIZATION_PROPERTY\";\r\nexport const SubmitConsumerCreditAuthorization = \"SUBMIT_CONSUMER_CREDIT_AUTHORIZATION\";\r\nexport const RequestConsumerCreditAuthorization = \"REQUEST_CONSUMER_CREDIT_AUTHORIZATION\";\r\nexport const ReceiveConsumerCreditAuthorization = \"RECEIVE_CONSUMER_CREDIT_AUTHORIZATION\";\r\nexport const UpdateCreditReportIndicator = \"UPDATE_CREDIT_REPORT_INDICATOR\";\r\n\r\n// Credit Information\r\nexport const SetCreditInformationModel = \"SET_CREDIT_INFORMATION_MODEL\";\r\nexport const SetBorrowerDetail = \"SET_CREDIT_INFORMATION_BORROWER_DETAIL\";\r\nexport const SetCreditInformationValid = \"SET_CREDIT_INFORMATION_VALID\";\r\n\r\n\r\n// REVIEW SCREEN\r\nexport const SetReviewScreenValidation = \"SET_REVIEW_SCREEN_VALIDATION\";\r\nexport const UpdateAddressFields = \"UPDATE_ADDRESS_FIELD\";\r\nexport const CalculateEstimatedLoanAmount = \"CALCULATE_ESTIMATED_LOANAMOUNT\";\r\nexport const UpdateReoAddressField = \"UPDATE_REO_ADDRESS_FIELD\";\r\nexport const SubmitCheckFlag = \"SUBMIT_CHECK_Flag\";\r\nexport const SetLoanFromEncompassMessageFlag = \"SET_LOAN_FROM_ENCOMPASS_MESSAGE_Flag\";\r\n\r\n// Credit Report\r\nexport const CompleteCreditReport = \"COMPLETE_CREDIT_REPORT\";\r\nexport const StartCreditReport = \"START_CREDIT_REPORT\";\r\nexport const SetCreditReportStatus = \"SET_CREDIT_REPORT_STATUS\";\r\n\r\n// Pre-Qual Systematic Letter\r\nexport const RequestSystematicLetter = \"REQUEST_SYSTEMATIC_LETTER\";\r\nexport const ReceiveSystematicLetter = \"RECEIVE_SYSTEMATIC_LETTER\";\r\n\r\n//Loader \r\nexport const IsLoading = \"ISLOADING\";\r\n\r\n// Documents\r\nexport const AlterSectionExpandedStatus = \"ALTER_SECTION_EXPANDED_STATUS\";\r\nexport const AlterSelectedTab = \"ALTER_SELECTED_TAB\";\r\n\r\n\r\n// Progress Tracker\r\nexport const GetSubTaskItemLoanStatus = \"GET_SUB_TASK_ITEM_LOAN_STATUS\";\r\nexport const ReceiveTaskMenu = \"RECEIVE_TASK_MENU\";\r\nexport const RequestTaskMenu = \"REQUEST_TASK_MENU\";\r\nexport const ReceiveBorrowerInformation = \"RECEIVE_BORROWER_INFO\";\r\nexport const SetLoanIsDirty = \"SET_LOAN_IS_DIRTY\";\r\nexport const SetPopupFlag = \"SET_POPUP_FLAG\";\r\n\r\n//Dashboard\r\nexport const GetDashboardDetails = \"GET_DASHBOARD_DETAILS\";\r\nexport const HandleErrorDashboard = \"HANDLE_ERROR_DASHBOARD\";\r\nexport const ReceiveNotificationMessages = \"RECEIVE_NOTIFICATION_MESSAGES\";\r\n\r\n//Milestone navigation\r\nexport const ReceiveMilestoneDetails = \"RECEIVE_MILESTONE_DETAILS\";\r\n\r\n// Loan Officer Main Tab \r\nexport const RequestApplicationFee = \"REQUEST_APPLICATION_FEE\";\r\nexport const ReceiveApplicationFee = \"RECEIVE_APPLICATION_FEE\";\r\nexport const RequestCreditReports = \"REQUEST_CREDIT_REPORTS\";\r\nexport const ReceiveCreditReports = \"RECEIVE_CREDIT_REPORTS\";\r\nexport const SetLoanOfficerViewLoanGuid = \"SET_LOAN_OFFICER_VIEW_LOAN_GUID\";\r\nexport const SetSelectedTab = \"SET_SELECTED_TAB\";\r\nexport const UpdatePreApproval = \"UPDATE_PREAPPROVAL\";\r\nexport const SetPreApprovalValidation = \"SET_PREAPPROVAL_VALIDATION\"\r\n\r\n//County lookup\r\nexport const RequestCountyLookup = \"REQUEST_County_LOOKUP\";\r\nexport const ReceiveCountyLookup = \"RECEIVE_County_LOOKUP\";\r\nexport const HandleErrorCountyLookup = \"HANDLE_ERROR_County_LOOKUP\";\r\nexport const ClearExceptionCountyLookup = \"CLEAR_EXCEPTION_County_LOOKUP\";\r\nexport const ClearCountyDetails = \"CLEAR_County_DETAILS\";\r\n\r\n//InterimLoanSummary\r\nexport const ReceiveLoanOfficerDetail = \"RECEIVE_LOAN_OFFICER_DETAIL\";\r\nexport const GetInterimLoanSummary = \"GET_INTERIM_LOAN_SUMMARY\";\r\nexport const ReceiveInterimLoanSummary = \"RECEIVE_INTERIM_LOAN_SUMMARY\";\r\nexport const ReceiveUpdatedInterimLoanSummary = \"RECEIVE_UPDATED_INTERIM_LOAN_SUMMARY\";\r\nexport const ReadLoanOfficerDetail = \"READ_LOAN_OFFICER_DETAIL\";\r\nexport const SetCurrentInterimLoanSummary = \"SET_CURRENT_INTERIM_LOAN_SUMMARY\";\r\nexport const ReadActiveLoanUserDetail = \"RECEIVE_ACTIVE_LOAN_USER_DETAIL\";\r\n\r\n\r\n\r\n","import * as React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowCircleLeft, faArrowCircleRight } from \"@fortawesome/free-solid-svg-icons\";\r\nimport styles from \"./Buttons.module.scss\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype NavigationButtonProps = {\r\n onClick: () => void;\r\n text: string;\r\n disabled: boolean;\r\n arrowDirection?: ArrowDirection;\r\n className?: string;\r\n};\r\n\r\nexport enum ArrowDirection {\r\n Left = \"Left\",\r\n Right = \"Right\",\r\n}\r\n\r\nconst NavigationButton = (props: NavigationButtonProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n \r\n {props.arrowDirection && props.arrowDirection === ArrowDirection.Left && (\r\n \r\n )}\r\n stopSpeech()} onMouseOver={() => textToSpeech('Press button to ' + props.text)}>{props.text}\r\n {props.arrowDirection && props.arrowDirection === ArrowDirection.Right && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default NavigationButton;\r\n","import React from \"react\";\r\n\r\nconst Footer = () => (\r\n <>Copyright © {new Date().getFullYear()} Union Home Mortgage Corporation\r\n);\r\n\r\nexport default Footer;\r\n","export const IsNarrator = (): boolean => {\r\n return JSON.parse(localStorage.getItem('isNarrator') || '{}');\r\n};\r\n","import React from \"react\";\r\nimport NavigationButton, { ArrowDirection } from \"./NavigationButton\";\r\nimport styles from \"./Buttons.module.scss\";\r\nimport { useLocation } from \"react-router\";\r\n\r\ninterface NavigationProps {\r\n back: ButtonProps;\r\n continue: ButtonProps;\r\n isMultipleLoan?: boolean;\r\n}\r\n\r\ninterface ButtonProps {\r\n show?: boolean;\r\n disabled?: boolean;\r\n message?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst Navigation = (props: NavigationProps) => {\r\n const location = useLocation();\r\n const isDashboardPage = location.pathname.indexOf(\"dashboard\") > -1 ? true : false;\r\n\r\n const getBackText = (): string => {\r\n \r\n let backMsg = props.back.message ?? \"Back\";\r\n if (props.isMultipleLoan && isDashboardPage) {\r\n backMsg = \"BACK TO ALL LOANS\";\r\n } \r\n return backMsg;\r\n }\r\n\r\n\r\n return (\r\n
\r\n {\r\n (props.back.show === undefined ? true : props.back.show) && (\r\n {}}\r\n text={getBackText()}\r\n disabled={props.back.disabled || false}\r\n arrowDirection={ArrowDirection.Left}\r\n />\r\n )}\r\n
\r\n {(props.continue.show === undefined ? true : props.continue.show) && (\r\n {}}\r\n text={props.continue.message ?? \"Save/Continue\"}\r\n disabled={props.continue.disabled || false}\r\n arrowDirection={ArrowDirection.Right}\r\n />\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Navigation;\r\n","const SessionDataTracker = (() => {\r\n const leadTime = 60; //Seconds\r\n let expireTime = 0;\r\n let countDownTime = 0;\r\n let oktaTokens: any = {};\r\n let oktaConfig: any = {};\r\n let loEmail = \"\";\r\n let intervalId: any = null;\r\n let callBackFunction: (timer: number) => void = () => {};\r\n\r\n const stopTimer = () => {\r\n if (intervalId) {\r\n clearInterval(intervalId);\r\n intervalId = null;\r\n }\r\n }\r\n\r\n const startTimer = () => {\r\n stopTimer();\r\n intervalId = setInterval(() => {\r\n if (countDownTime > 0) {\r\n countDownTime = countDownTime - 1;\r\n if (callBackFunction) {\r\n callBackFunction(countDownTime);\r\n }\r\n }\r\n }, 1000);\r\n }\r\n\r\n const setExpireTime = (nextExpireTime: number | null) => {\r\n if (nextExpireTime) {\r\n expireTime = nextExpireTime;\r\n\r\n let currentTime = (new Date()).getTime();\r\n if (expireTime.toString().length < currentTime.toString().length) {\r\n currentTime = Number(currentTime.toString().substr(0, expireTime.toString().length));\r\n countDownTime = Math.round((expireTime - currentTime));\r\n } else {\r\n countDownTime = Math.round((expireTime - currentTime) / 1000);\r\n }\r\n countDownTime = countDownTime - leadTime;\r\n startTimer();\r\n }\r\n };\r\n\r\n const setTimerCallbackFunction = ((callBack: any) => {\r\n callBackFunction = callBack;\r\n });\r\n\r\n const clearInfo = () => {\r\n stopTimer();\r\n expireTime = 0;\r\n oktaTokens = {};\r\n loEmail = \"\";\r\n }\r\n\r\n return {\r\n config: oktaConfig,\r\n tokens: oktaTokens,\r\n startTimer: setExpireTime,\r\n stopTimer: stopTimer,\r\n setTimerCallback: setTimerCallbackFunction,\r\n loEmail: loEmail,\r\n clear: clearInfo\r\n };\r\n})();\r\nexport default SessionDataTracker;","import axios, { AxiosRequestConfig } from \"axios\";\r\nimport SessionInfo from \"../SessionDataTracker\";\r\n\r\ninterface HttpResponse extends Response {\r\n parsedBody?: T;\r\n}\r\n\r\nexport async function http(request: RequestInfo): Promise> {\r\n const response: HttpResponse = await fetch(request);\r\n\r\n if (!response.ok) {\r\n return response;\r\n }\r\n\r\n try {\r\n response.parsedBody = await response.json();\r\n } catch (ex) { }\r\n return response;\r\n}\r\n\r\nconst getHeaders = ((contentType: string) => {\r\n let headers: any = {\r\n Authorization: `Bearer ${SessionInfo.tokens?.accessToken?.accessToken}`,\r\n \"ClientKey\": SessionInfo.config?.clientId, \r\n \"lo\": SessionInfo.loEmail ?? \"\"\r\n }\r\n\r\n \r\n if (contentType !== \"\") {\r\n headers = {\r\n \"Content-Type\": contentType,\r\n ...headers\r\n }\r\n }\r\n\r\n return headers;\r\n});\r\n\r\nexport async function get(\r\n path: string,\r\n args: RequestInit = { method: \"get\", headers: getHeaders(\"\") }\r\n): Promise> {\r\n return await http(new Request(path, args));\r\n};\r\n\r\nexport async function getBlob(path: string) {\r\n const config: AxiosRequestConfig = { responseType: \"blob\", headers: getHeaders(\"\") };\r\n const result = axios.get(path, config);\r\n return await result;\r\n};\r\n\r\nexport async function post(\r\n path: string,\r\n body: any,\r\n args: RequestInit = { method: \"post\", body: JSON.stringify(body), headers: getHeaders(\"application/json\") }\r\n): Promise> {\r\n return await http(new Request(path, args));\r\n};\r\n\r\nexport async function postForm(path: string, submissionData: any) {\r\n const config = { headers: getHeaders(\"multipart/form-data\") };\r\n const result = axios.post(path, submissionData, config);\r\n return (await result).data;\r\n};\r\n","import { get, post } from \"../common/dataFetch\";\r\n\r\nexport const getSubTaskMenuLoanStatus = (loanGuid: string) => {\r\n return get(`SubTaskItemLoanStatus/ReadSubTaskItemLoanStatus?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const updateNavigationStatus = (taskItemId: any, subTaskItemId: any, taskStatusId: any, subTaskStatusId: any, loanGuid: any) => {\r\n return post(`SubTaskItemLoanStatus/UpdateSubTaskItemLoanStatus?taskItemId=${taskItemId}&subTaskItemId=${subTaskItemId}&taskStatusId=${taskStatusId}&subTaskStatusId=${subTaskStatusId}&loanGuid=${loanGuid}`, null);\r\n};\r\n\r\nexport const getLoanCompletedStatus = (loanGuid: string) => {\r\n return get(`SubTaskItemLoanStatus/ReadLoanFileSubmittedStatus?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const deleteNavigationStatus = (subTaskItemId: any, loanGuid: any) => {\r\n return post(`SubTaskItemLoanStatus/DeleteAsync?subTaskItemId=${subTaskItemId}&loanGuid=${loanGuid}`, null);\r\n};","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as TaskMenuStore from \"../store/taskMenuStore\";\r\nimport * as taskMenuService from \"../services/taskMenuService\";\r\nimport * as loanSummaryService from \"../services/LoanSummaryService\";\r\n\r\nconst receive = (data: TaskMenuStore.TaskMenuItem[]): TaskMenuStore.KnownAction => {\r\n return { type: ActionTypes.ReceiveTaskMenu, data };\r\n};\r\n\r\nconst receiveBorrowerInfo = (data: TaskMenuStore.LoanSummaryDto): TaskMenuStore.KnownAction => {\r\n return { type: ActionTypes.ReceiveBorrowerInformation, data };\r\n};\r\n\r\nconst request = (isLoading: boolean, type: string): TaskMenuStore.KnownAction => {\r\n return { type: ActionTypes.RequestTaskMenu, isLoading: isLoading, loadingType: type };\r\n};\r\n\r\nexport const TaskMenuCreators = {\r\n GetSubTaskItemLoanStatus: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n dispatch(request(true, \"menu\"));\r\n taskMenuService.getSubTaskMenuLoanStatus(loanGuid)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem while fetching progress tracker information\");\r\n }\r\n return response.parsedBody as TaskMenuStore.TaskMenuItem[];\r\n })\r\n .then((data) => {\r\n dispatch(receive(data));\r\n })\r\n },\r\n\r\n borrowerLoanSummary: (loanGuid: string,interimLoanStagingId:number): AppThunkAction => (dispatch) => {\r\n dispatch(request(true, \"loanInfo\"));\r\n loanSummaryService.LoanSummary(loanGuid, interimLoanStagingId)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem while fetching borrower details\");\r\n }\r\n return response.parsedBody as any;\r\n })\r\n .then((data: any) => {\r\n if (data.body) {\r\n dispatch(receiveBorrowerInfo(data?.body));\r\n }\r\n }).catch(() => {\r\n throw new Error(\"There was a problem.\");\r\n })\r\n },\r\n\r\n updateNavigationStatus: (taskItemId: any, subTaskItemId: any, taskStatusId: any, subTaskStatusId: any, loanGuid: any): AppThunkAction => (dispatch) => {\r\n taskMenuService.updateNavigationStatus(taskItemId, subTaskItemId, taskStatusId, subTaskStatusId, loanGuid)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"Something went wrong!\");\r\n }\r\n return response.parsedBody as any;\r\n })\r\n },\r\n\r\n setLoanIsDirty: (isDirty: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetLoanIsDirty, isDirty: isDirty });\r\n },\r\n setDocumentPopupFlag: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetPopupFlag, isPopupFlag: value });\r\n },\r\n deleteNavigationStatus: (subTaskItemId: any, loanGuid: any): AppThunkAction => (dispatch) => {\r\n taskMenuService.deleteNavigationStatus(subTaskItemId, loanGuid)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(\"Something went wrong while deleteNavigationStatus method\");\r\n }\r\n return response.parsedBody as any;\r\n })\r\n },\r\n}","import { get } from \"../common/dataFetch\";\r\nimport { LoanSummaryDto } from \"../store/taskMenuStore\";\r\nimport { ResponseDto } from \"../common/models/ResponseDto\";\r\n\r\nexport const LoanSummary = (guid: string, interimLoanStagingId:number) => {\r\n return get>(\r\n `api/LoanSummary/ReadByLoanGuidAsync?loanGuid=${guid}&interimLoanStagingId=${interimLoanStagingId}` \r\n );\r\n};\r\n","import React from \"react\";\r\nimport NumberFormat from \"react-number-format\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst Currency = (props: { value: number; decimalScale?: number }) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n <>\r\n stopSpeech()} onMouseOver={() => textToSpeech('$' + props.value)}/>\r\n \r\n );\r\n};\r\n\r\nexport default Currency;\r\n","import * as React from \"react\";\r\nimport { ApplicationState } from \"store\";\r\nimport { connect } from \"react-redux\";\r\nimport styles from \"./TaskMenu.module.scss\";\r\nimport * as TaskMenuActions from \"../../../actions/taskMenuAction\";\r\nimport Currency from \"../Currency\";\r\nimport { LoanSummaryDto } from \"../../../store/taskMenuStore\";\r\nimport { InterimLoanSummary } from \"../../../store/interimLoanSummaryStore\";\r\nimport { interimLoanSummaryActionCreators } from \"../../../actions/interimLoanSummaryActions\";\r\n\r\ntype TaskMenuHeaderProps = {\r\n loanGuid: string;\r\n isLoading: boolean;\r\n loanSummary: LoanSummaryDto;\r\n interimLoanStagingId: number;\r\n currentLoanSummary: InterimLoanSummary;\r\n} & typeof TaskMenuActions.TaskMenuCreators\r\n & typeof interimLoanSummaryActionCreators;\r\n\r\nconst TaskMenuHeaders = (props: TaskMenuHeaderProps) => {\r\n\r\n React.useEffect(() => {\r\n if (props.loanGuid ) {\r\n props.borrowerLoanSummary(props.loanGuid, props.interimLoanStagingId);\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n
\r\n {props.isLoading ?\r\n
\r\n
\r\n
:\r\n <>\r\n
My {props.loanSummary?.loanPurpose} Application
\r\n
{props.loanSummary?.firstName} {props.loanSummary?.lastName}
\r\n
\r\n
\r\n Loan Number: {props.currentLoanSummary.loanNumber}\r\n
\r\n
\r\n Loan Amount:\r\n \r\n {props.currentLoanSummary.loanAmount ?\r\n \r\n : \"TBD\"\r\n }\r\n \r\n
\r\n
\r\n Subject Property:\r\n \r\n {\r\n (props.currentLoanSummary?.city && props.currentLoanSummary?.state && props.currentLoanSummary?.zip) ?\r\n props.currentLoanSummary?.city + \", \" + props.currentLoanSummary?.state + \" \" + props.currentLoanSummary?.zip\r\n : \"TBD\"\r\n }\r\n \r\n
\r\n
\r\n \r\n }\r\n
\r\n\r\n \r\n );\r\n};\r\n\r\nfunction mapStateToProps(state: ApplicationState) {\r\n let { accountInformation, taskMenu, interimLoanSummary } = state;\r\n let loanGuid;\r\n let isLoading;\r\n let loanSummary;\r\n let interimLoanStagingId;\r\n\r\n let currentLoanSummary;\r\n\r\n if (accountInformation?.loanGuid) {\r\n loanGuid = accountInformation?.loanGuid;\r\n }\r\n\r\n if (interimLoanSummary?.currentLoanSummary) {\r\n interimLoanStagingId = interimLoanSummary.currentLoanSummary.interimLoanStagingId;\r\n currentLoanSummary = { ...interimLoanSummary.currentLoanSummary }\r\n }\r\n\r\n if (taskMenu?.loanSummary) {\r\n loanSummary = taskMenu?.loanSummary;\r\n isLoading = taskMenu?.loanSummary?.isLoading;\r\n }\r\n\r\n //if (state.loan) {\r\n // interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n //}\r\n return {\r\n loanGuid,\r\n isLoading,\r\n loanSummary,\r\n interimLoanStagingId,\r\n currentLoanSummary\r\n };\r\n}\r\n\r\nexport default connect((state: ApplicationState) => mapStateToProps(state), TaskMenuActions.TaskMenuCreators)(TaskMenuHeaders as any) as any;\r\n\r\n","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { RouteComponentProps, useHistory } from \"react-router\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSpinner, faCheckCircle, faExclamationCircle, faExclamation } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { ApplicationState } from \"../../../store\";\r\nimport styles from \"./TaskMenu.module.scss\";\r\nimport * as TaskMenuActions from \"../../../actions/taskMenuAction\";\r\nimport { TaskStatusId, ProgressNavigationEnum } from \"./TaskStatus\";\r\nimport { loanState } from \"../../../store/loanStore\";\r\n\r\n\r\ninterface TaskItemInterface {\r\n key: string;\r\n name: string;\r\n path: string;\r\n args: string;\r\n subTaskStatus: any;\r\n taskStatus: any;\r\n isEnabled: boolean;\r\n isSubtask: boolean;\r\n}\r\n\r\ntype TaskItemProps = {\r\n isDirty: boolean,\r\n loanGuid: any,\r\n isMultipleSubtasks: boolean;\r\n} & TaskItemInterface & RouteComponentProps<{}> & typeof TaskMenuActions.TaskMenuCreators;\r\n\r\nconst TaskItem = (props: TaskItemProps) => {\r\n const location = useLocation();\r\n const history = useHistory();\r\n const { isLoanFromEncompassFlag } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n const getStatusConst = (status: number) => {\r\n switch (status) {\r\n case TaskStatusId.NotStarted:\r\n return ;\r\n case TaskStatusId.InProgress:\r\n return ;\r\n case TaskStatusId.Completed:\r\n return ;\r\n case TaskStatusId.Failed:\r\n return ;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n const assignClass = (status: number) => {\r\n switch (status) {\r\n case TaskStatusId.NotStarted:\r\n return `${styles.notStated}`;\r\n case TaskStatusId.InProgress:\r\n return `${styles.inProgress}`;\r\n case TaskStatusId.Completed:\r\n return `${styles.completed}`;\r\n case TaskStatusId.Failed:\r\n return `${styles.failed}`;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n const currentRootNav = location.pathname.split(\"/\")[1];\r\n const rootNav = props.path.split(\"/\")[1];\r\n const currentQueryString = location.state?.args ?? \"\";\r\n const rootQueryString = props.args;\r\n\r\n let isTaskSelected = false;\r\n let isSubTaskSelected = false;\r\n\r\n if (props.isMultipleSubtasks || props.isSubtask) {\r\n isTaskSelected = currentRootNav === rootNav;\r\n isSubTaskSelected = currentRootNav === rootNav && currentQueryString === rootQueryString;\r\n } else {\r\n isTaskSelected = (currentRootNav === rootNav && currentQueryString === rootQueryString);\r\n }\r\n\r\n if ((currentRootNav === ProgressNavigationEnum.ManualAssetInformation || currentRootNav === ProgressNavigationEnum.AssetDetails) && rootNav === ProgressNavigationEnum.Asset) {\r\n isTaskSelected = true;\r\n } else if ((currentRootNav === ProgressNavigationEnum.AddReoProperty || currentRootNav === ProgressNavigationEnum.ReoPropertiesSummary) && rootNav === ProgressNavigationEnum.ReoProperties) {\r\n isTaskSelected = true;\r\n } else if ((currentRootNav === ProgressNavigationEnum.CreditReport || currentRootNav === ProgressNavigationEnum.CreditAuthorization) && rootNav === ProgressNavigationEnum.CreditInformation) {\r\n isTaskSelected = true;\r\n }\r\n\r\n const navigateRoute = (routeName: string, args: string) => {\r\n history.push({ pathname: routeName, state: { args: args, isClicked: true } })\r\n }\r\n \r\n return (\r\n <>\r\n {props.isEnabled && !isLoanFromEncompassFlag ? (!props.isSubtask ?\r\n navigateRoute(props.path, props.args)} >\r\n\r\n \r\n {isTaskSelected ? getStatusConst(TaskStatusId.InProgress) : getStatusConst(props.taskStatus)}\r\n {props.name}\r\n \r\n \r\n :\r\n navigateRoute(props.path, props.args)}>\r\n\r\n \r\n {isSubTaskSelected ? getStatusConst(TaskStatusId.InProgress) : getStatusConst(props.subTaskStatus)}\r\n {props.name}\r\n \r\n \r\n ) : {props.name}}\r\n \r\n );\r\n};\r\n\r\nfunction mapStateToProps(state: ApplicationState) {\r\n const { taskMenu, accountInformation } = state;\r\n const isDirty = taskMenu?.isDirty;\r\n const loanGuid = accountInformation?.loanGuid;\r\n\r\n return {\r\n loanGuid,\r\n isDirty\r\n };\r\n}\r\n\r\nexport default connect((state: ApplicationState) => mapStateToProps(state), TaskMenuActions.TaskMenuCreators)(TaskItem as any) as any;","import * as React from \"react\";\r\nimport { TaskMenuItem, SubTaskItem } from \"../../../store/taskMenuStore\";\r\nimport TaskItem from \"./TaskItem\";\r\nimport { animated } from \"react-spring\";\r\nimport styles from \"./TaskMenu.module.scss\";\r\n\r\ntype SubTaskListProps = {\r\n taskItem: TaskMenuItem;\r\n};\r\n\r\nconst SubTaskList = (props: SubTaskListProps) => {\r\n return (\r\n \r\n
\r\n {props.taskItem.subTasks.map((subTaskItem: SubTaskItem, index: number) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SubTaskList;\r\n","import * as React from \"react\";\r\nimport { TaskMenuItem } from \"../../../store/taskMenuStore\";\r\nimport SubTaskList from \"./SubTaskList\";\r\nimport { ApplicationState } from \"store\";\r\nimport { connect } from \"react-redux\";\r\nimport TaskItem from \"./TaskItem\";\r\nimport * as TaskMenuActions from \"../../../actions/taskMenuAction\";\r\nimport styles from \"./TaskMenu.module.scss\";\r\nimport { useLocation } from \"react-router\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { TaskItem as TaskItemEnum } from \"./TaskStatus\";\r\n\r\ntype TaskListProps = {\r\n taskMenuItems: TaskMenuItem[];\r\n loanGuid: string;\r\n isLoading: boolean;\r\n open: string;\r\n} & typeof TaskMenuActions.TaskMenuCreators;\r\n\r\nconst TaskList = (props: TaskListProps) => {\r\n const location = useLocation();\r\n\r\n React.useEffect(() => {\r\n if (props.loanGuid && props.open) {\r\n props.GetSubTaskItemLoanStatus(props.loanGuid);\r\n }\r\n }, [props.open, location, location.state?.args]);\r\n\r\n const singleTaskItem = (taskItem: TaskMenuItem, index: number) => {\r\n\r\n var args = taskItem.subTasks[0].queryParameter ? taskItem.subTasks[0].queryParameter : \"\";\r\n return (\r\n
  • \r\n 1 ? true : false}\r\n />\r\n
  • \r\n );\r\n };\r\n\r\n const multiTaskItem = (taskItem: TaskMenuItem, index: number) => {\r\n return (\r\n
  • \r\n
    \r\n
      \r\n {singleTaskItem(taskItem, index)}\r\n
    \r\n \r\n
    \r\n
  • \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n

    Where Am I?

    \r\n {!props.isLoading ?\r\n
      \r\n
    • \r\n {\r\n if (location.pathname === \"/dashboard\") {\r\n event.preventDefault();\r\n }\r\n }\r\n } className=\"Nav_dashboard_link\" to=\"/dashboard\">Back to dashboard\r\n
    • \r\n {props.taskMenuItems.map((taskItem: TaskMenuItem, index: number) => {\r\n if (!taskItem?.hasCoBorrower) {\r\n return singleTaskItem(taskItem, index);\r\n } else {\r\n if (taskItem.subTasks.length > 1) {\r\n return multiTaskItem(taskItem, index);\r\n }\r\n else {\r\n return singleTaskItem(taskItem, index);\r\n }\r\n }\r\n })}\r\n
    :\r\n
    \r\n
    \r\n
    \r\n }\r\n )\r\n};\r\n\r\n\r\nfunction mapStateToProps(state: ApplicationState) {\r\n let { accountInformation, taskMenu } = state;\r\n let loanGuid;\r\n let taskMenuItems;\r\n let isLoading;\r\n\r\n if (accountInformation?.loanGuid) {\r\n loanGuid = accountInformation?.loanGuid;\r\n }\r\n\r\n if (taskMenu?.data) {\r\n taskMenuItems = taskMenu?.data.filter(x => x.taskItemId !== TaskItemEnum.AccountInformation);\r\n }\r\n\r\n if (taskMenu) {\r\n isLoading = taskMenu?.isLoading;\r\n }\r\n\r\n return {\r\n loanGuid,\r\n taskMenuItems,\r\n isLoading\r\n };\r\n}\r\n\r\nexport default connect((state: ApplicationState) => mapStateToProps(state), TaskMenuActions.TaskMenuCreators)(TaskList as any) as any;","import * as React from \"react\";\r\nimport TaskMenuHeaders from \"./TaskMenuHeaders\";\r\nimport { Spring, animated } from \"react-spring/renderprops\";\r\nimport TaskList from \"./TaskList\";\r\nimport styles from \"./TaskMenu.module.scss\";\r\n\r\ntype TaskMenuLocalState = {\r\n isOpen: boolean;\r\n};\r\n\r\ntype TaskMenuProps = {\r\n isNavigationClicked: boolean;\r\n setNavigationClicked: (value: boolean) => void;\r\n}\r\n\r\nclass TaskMenu extends React.PureComponent {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n isOpen: false\r\n };\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(props: any) {\r\n this.setState({ isOpen: props.isNavigationClicked });\r\n }\r\n\r\n toggleMenu() {\r\n this.setState({ isOpen: !this.state.isOpen });\r\n this.props.setNavigationClicked(!this.state.isOpen);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n {({ opacity, transform }) => (\r\n \r\n \r\n
    \r\n {this.state.isOpen &&\r\n \r\n }\r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default TaskMenu;","import * as React from \"react\";\r\nimport styles from \"./NotificationMessages.module.scss\";\r\n\r\nconst NotificationMessages = (props: { messages: string[] }) => {\r\n const notificationMessages = props.messages?.map((msg, i) => (\r\n
    \r\n
    \r\n
    {msg}
    \r\n
    \r\n ));\r\n\r\n return (\r\n
    \r\n
    Notifications
    \r\n {notificationMessages?.length > 0\r\n ?
    {notificationMessages}
    \r\n :
    You don't have any notifications right now
    \r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport default NotificationMessages as any;\r\n\r\n","import { get, post } from \"../common/dataFetch\";\r\nimport { AccountInformation } from \"../components/accountInformation/AccountInformation\";\r\nimport { IAccountInformationProps } from \"../store/accountInformationStore\";\r\n\r\nexport const getAccountinfoData = (loanGuid: string) => {\r\n return get(`AccountInformation/ReadByLoanGuid?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const getAll = (loanOfficerLoginId: string) => {\r\n return get(`AccountInformation/GetDropdownAsync?loanOfficerLoginId=${loanOfficerLoginId}`);\r\n};\r\n\r\nexport const getSingle = (id: number) => {\r\n return get(`AccountInformation/${id}`);\r\n};\r\n\r\nexport const create = (account: AccountInformation, loanGuid?: string) => {\r\n return post(`AccountInformation/UpsertAsync?loanGuid=${loanGuid}`, account);\r\n};\r\n\r\nexport const assignLoanOfficer = (loanGuid: string, loUserId?: string) => {\r\n return get(`AccountInformation/assignLoanOfficer?loanGuid=${loanGuid}&loUserId=${loUserId}`);\r\n};\r\n\r\nexport const updateTemplate = (loanGuid: string, loanPurpose?: string) => {\r\n return get(`AccountInformation/UpdateTemplate?loanGuid=${loanGuid}&loanPurpose=${loanPurpose}`);\r\n};\r\n\r\nexport const createLeadEntry = (loanGuid: string) => {\r\n return get(`AccountInformation/CreateLeadEntry?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const createInterimLoanStagingData = (loanGuid: string) => {\r\n return get(`AccountInformation/CreateInterimLoanStagingData?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const createLoanDetailInformationEntry = (loanGuid: string) => {\r\n return get(`AccountInformation/CreateLoanDetailInformationEntry?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const sendNewLeadNotificationToLoanOfficer = (loanGuid: string) => {\r\n return get(`AccountInformation/SendNewLeadNotificationToLoanOfficer?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const updateProgressTracker = (loanGuid: string) => {\r\n return get(`AccountInformation/UpdateProgressTracker?loanGuid=${loanGuid}`);\r\n};\r\n\r\n\r\nexport const signIn = (email: string, borrowerType: string, firstName: string, lastName: string, loanGuid: string) => {\r\n const borrowerTypeEnumVal = borrowerType === \"Borrower\"\r\n ? 1\r\n : borrowerType === \"CoBorrower\"\r\n ? 2\r\n : 0; // Unknown (borrowerType will be determined from DB)\r\n return get(`AccountInformation/SignIn?email=${email}&borrowerType=${borrowerTypeEnumVal}&firstName=${firstName}&lastName=${lastName}&loanGuid=${loanGuid}`);\r\n};\r\nexport const createUserLoanDetailInformationEntry = (email: any, firstName: any, lastName: any, loanGuid: string, borrowerType: string) => {\r\n return post(`AccountInformation/CreateUserLoanDetailInformationEntry?email=${email}&firstName=${firstName}&lastName=${lastName}&loanGuid=${loanGuid}&borrowerType=${borrowerType}`, null);\r\n};\r\n\r\nexport const validateLoanGuid = (loanGuid: string) => {\r\n return get(`AccountInformation/ValidateLoanGuid?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const sendEmailVerificationCode = (deliveryMethod: string, userData: IAccountInformationProps, loanGuid?: string) => {\r\n return post(`AccountInformation/SendEmailVerificationCode?deliveryMethod=${deliveryMethod}&loanGuid=${loanGuid}`, userData);\r\n}\r\n\r\nexport const readVerificationData = (userKey: string) => {\r\n return get(`AccountInformation/ReadVerificationData?userKey=${userKey}`);\r\n}\r\n\r\nexport const verifyEmailVerificationCode = (emailAddress: string) => {\r\n return get(`AccountInformation/VerifyEmailVerificationCode?emailAddress=${emailAddress}`);\r\n}\r\n\r\nexport const accountSignUp = (signUp: any) => {\r\n return post(`AccountInformation/SignUp`, signUp);\r\n}\r\n\r\nexport const passwordResetQuestions = () => {\r\n return get(\"AccountInformation/PasswordResetQuestions\");\r\n}\r\n\r\nexport const checkIsEncompassDown = () => {\r\n return get(\"AccountInformation/CheckIsEncompassDown\");\r\n}\r\n\r\n\r\nexport const duplicateEmail = (emailAddress: string) => {\r\n return get(`AccountInformation/VerifySharedEmail?emailAddress=${emailAddress}`);\r\n}\r\n\r\nexport const validateSocialSecurityNumber = (ssn: string, email: string) => {\r\n return get(`AccountInformation/ValidateSocialSecurityNumber?ssn=${ssn}&emailAddress=${email}`);\r\n}\r\n\r\nexport const signOut = (borrowerType: string, loanGuid: string,interimLoanStagingId:number) => {\r\n return get(`AccountInformation/SignOut?borrowerType=${borrowerType}&loanGuid=${loanGuid}&interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const duplicateEmailCheck = (emailAddress: string) => {\r\n return get(`AccountInformation/duplicateEmailCheck?emailAddress=${emailAddress}`);\r\n}\r\n\r\nexport const updatePosIdentifier = (loanGuid: string) => {\r\n return post(\"AccountInformation/updatePosIdentifier\", loanGuid);\r\n};\r\n\r\nexport const loanOfficerIdentifier = (loanGuid: string) => {\r\n return get(`AccountInformation/LoanOfficerIdentifier?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const updateInterimDataFromEncompass = (loanGuid: string) => {\r\n return post(`InterimLoanStaging/UpdateInterimDataFromEncompass?loanGuid=${loanGuid}`, null);\r\n};\r\n\r\n\r\nexport const readIsLoanFromEncompass = (loanGuid: string) => {\r\n return get(`AccountInformation/ReadIsLoanFromEncompass?loanGuid=${loanGuid}`);\r\n};\r\n\r\n\r\nexport const UpdateUserOktaAccount = (emailAddress: string, firstName: string, lastName: string) => {\r\n return get(`AccountInformation/UpdateUserOktaAccount?emailAddress=${emailAddress}&firstName=${firstName}&lastName=${lastName}`);\r\n};\r\n","import { get } from \"./common/dataFetch\";\r\n\r\nexport async function oktaConfigAsync() {\r\n const cfg = await appConfigAsync();\r\n return cfg.OktaWidget;\r\n};\r\n\r\nexport async function appConfigAsync() {\r\n const response = await get(\"api/config\");\r\n const cfg = response.parsedBody as any;\r\n return cfg;\r\n};","import * as React from \"react\";\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\r\nimport SessionInfo from \"./SessionDataTracker\";\r\nimport { useHistory } from \"react-router\"\r\nimport { useIdleTimer } from \"react-idle-timer\"\r\nimport { useOktaAuth } from \"@okta/okta-react\";\r\nimport styles from \"./SessionWatcher.module.scss\";\r\nimport * as accountInformationService from \"./services/accountInformationService\";\r\n\r\nexport default function SessionWatcher(props: { borrowerType: string, loanGuid: string,interimLoanStagingId :number}) {\r\n const idleTimeOut = 10; //Minutes\r\n const secondsToWarning = 120;\r\n const [displayWarning, setDisplayWarning] = React.useState(false);\r\n const [timer, setTimer] = React.useState(0);\r\n const history = useHistory();\r\n const { authState, oktaAuth } = useOktaAuth();\r\n const displayWarningRef = React.useRef(false);\r\n displayWarningRef.current = displayWarning;\r\n\r\n const refreshTokens = () => {\r\n SessionInfo.stopTimer();\r\n oktaAuth.tokenManager.setTokens(SessionInfo.tokens);\r\n oktaAuth.tokenManager.renew(\"accessToken\").then((accessToken: any) => {\r\n oktaAuth.tokenManager.renew(\"idToken\");\r\n });\r\n }\r\n\r\n const setAuthStateSessionData = ((tokens: any) => {\r\n SessionInfo.tokens = tokens;\r\n SessionInfo.startTimer(tokens?.accessToken?.expiresAt);\r\n });\r\n\r\n const logout = async () => {\r\n //Unlock loan from db and log out user.\r\n var response = await accountInformationService.signOut(props.borrowerType, props.loanGuid, props.interimLoanStagingId);\r\n if (response.body && response.parsedBody) {\r\n console.log(\"Lock has been released from loan by {0}.\", props.borrowerType);\r\n }\r\n\r\n SessionInfo.stopTimer();\r\n oktaAuth.authStateManager.unsubscribe(setAuthStateSessionData);\r\n setDisplayWarning(false);\r\n\r\n //redirect to home page.\r\n history.push(\"/\");\r\n window.location.reload();\r\n }\r\n\r\n const stayLoggedIn = () => {\r\n setDisplayWarning(false);\r\n refreshTokens();\r\n }\r\n\r\n const handleSessionTimeout = (timeRemain: number) => {\r\n if (timeRemain <= secondsToWarning) {\r\n const secondsSinceActive = Math.round(((new Date()).getTime() - getLastActiveTime()) / 1000);\r\n if (!displayWarningRef.current && secondsSinceActive < 60 * idleTimeOut) {\r\n refreshTokens();\r\n } else {\r\n setTimer(timeRemain);\r\n setDisplayWarning(true);\r\n }\r\n }\r\n\r\n if (timeRemain === 0) {\r\n logout();\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n oktaAuth.authStateManager.subscribe(setAuthStateSessionData);\r\n\r\n if (authState?.isAuthenticated) {\r\n SessionInfo.setTimerCallback(handleSessionTimeout);\r\n setAuthStateSessionData(authState);\r\n }\r\n }, []);\r\n\r\n const handleOnIdle = (event: any) => {\r\n console.log(\"user is idle\", getLastActiveTime());\r\n }\r\n\r\n const handleOnActive = (event: any) => {\r\n console.log(\"user is active\");\r\n }\r\n\r\n const handleOnAction = (event: any) => {\r\n //console.log(\"user did something\", getRemainingTime());\r\n }\r\n\r\n const { getRemainingTime, getLastActiveTime } = useIdleTimer({\r\n timeout: idleTimeOut * 1000 * 60,\r\n onIdle: handleOnIdle,\r\n onActive: handleOnActive,\r\n onAction: handleOnAction,\r\n debounce: 500\r\n });\r\n\r\n return (\r\n
    \r\n {displayWarning &&\r\n \r\n \r\n Your session is about to expire\r\n \r\n \r\n Your session will expire in {timer} seconds
    \r\n To keep working, select Continue to stay logged in.\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}","import { get, post } from \"../common/dataFetch\";\r\nimport { oktaConfigAsync } from \"../authConfig\";\r\n\r\nexport const getDashboardDetails = (loanGuid: string, borrowerType: string) => {\r\n return get(`Dashboard/ReadByLoanGuidAsync?loanGuid=${loanGuid}&borrowerType=${borrowerType}`);\r\n};\r\n\r\nexport const getUserNotificationMessages = (loanGuid: string) => {\r\n return get(`Dashboard/ReadUserNotificationMessages?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const isUserPasswordRecoveryAvailable = (emailAddress: string) => {\r\n return get(`AccountInformation/passwordRecoveryAvailable?emailAddress=${emailAddress}`);\r\n}","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as DashboardStore from \"../store/dashboardStore\";\r\nimport { KnownAction } from '../store/dashboardStore';\r\nimport * as dashboardService from \"../services/dashboardService\";\r\n\r\nconst receive = (data: DashboardStore.DashboardInformation): KnownAction => {\r\n return { type: ActionTypes.GetDashboardDetails, data };\r\n}\r\nconst handleError = (errorMessage: string): KnownAction => {\r\n return { type: ActionTypes.HandleErrorDashboard, errorMessage: errorMessage };\r\n}\r\nconst receiveNotificationMessages = (data: string[]): DashboardStore.KnownAction => {\r\n return { type: ActionTypes.ReceiveNotificationMessages, data };\r\n}\r\n\r\nexport const dashboardActionCreators = {\r\n\r\n setIsLoading: (loading: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.IsLoading, loading: loading });\r\n },\r\n getDashboardDetails: (loanGuid: string, borrowerType: string): AppThunkAction => (dispatch, getState) => {\r\n var state = getState();\r\n if (state.dashboard) {\r\n state.dashboard.isLoading = true;\r\n }\r\n dashboardService.getDashboardDetails(loanGuid, borrowerType)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem while getting information.\");\r\n }\r\n return response.parsedBody as DashboardStore.DashboardInformation;\r\n }).then((data: any) => {\r\n dispatch(receive(data));\r\n if (state.dashboard) {\r\n state.dashboard.isLoading = false;\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (state.dashboard) {\r\n state.dashboard.isLoading = false;\r\n }\r\n dispatch(handleError(error.message));\r\n });\r\n },\r\n getUserNotificationMessages: (loanGuid: string): AppThunkAction => (dispatch, getState) => {\r\n var state = getState();\r\n dashboardService.getUserNotificationMessages(loanGuid).then((res: any) => {\r\n if (!res.ok) {\r\n throw new Error(\"There was a problem while getting information.\");\r\n }\r\n return res.parsedBody as DashboardStore.DashboardInformation;\r\n }).then((data: any) => {\r\n dispatch(receiveNotificationMessages(data));\r\n if (state.dashboard) {\r\n state.dashboard.isLoading = false;\r\n }\r\n })\r\n },\r\n}","import * as React from \"react\";\r\n\r\nconst Loading = () => {\r\n return (<>\r\n
    \r\n );\r\n}\r\nexport default Loading;","import * as React from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link, useHistory, useLocation } from \"react-router-dom\";\r\nimport FooterText from \"./FooterText\";\r\nimport UhmLogo from \"assets/logo/uhm-logo.png\";\r\nimport styles from \"./MainLayout.module.scss\";\r\nimport Navigation from \"../Buttons/Navigation\";\r\nimport { ApplicationState } from \"store\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { NavigationState } from \"store/navigationStore\";\r\nimport * as ActionTypes from \"common/ActionTypes\";\r\nimport TaskMenu from \"../progressTracker/TaskMenu\";\r\nimport NotificationMessages from \"components/common/progressTracker/NotificationMessages\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../../actions/taskMenuAction\";\r\nimport * as accountInformationService from \"../../../services/accountInformationService\";\r\nimport \"react-circular-progressbar/dist/styles.css\";\r\nimport * as taskMenuService from \"../../../services/taskMenuService\";\r\nimport { TaskStatusId, TaskItem } from \"../progressTracker/TaskStatus\";\r\nimport { isNullOrWhiteSpace } from \"../../../common/helper/formatHelper\";\r\nimport { useOktaAuth } from \"@okta/okta-react\";\r\nimport { appConfigAsync, oktaConfigAsync } from \"authConfig\";\r\nimport SessionWatcher from \"../../../SessionWatcher\";\r\nimport { loanState } from \"../../../store/loanStore\";\r\nimport { dashboardActionCreators } from \"../../../actions/dashboardActions\";\r\nimport CalculatorIcon from \"assets/infographics/userAccount/calculator-icon.svg\";\r\nimport Loading from \"../Loader\";\r\nimport { LoanSummaryState, InterimLoanSummary } from \"../../../store/interimLoanSummaryStore\";\r\nimport { interimLoanSummaryActionCreators } from \"../../../actions/interimLoanSummaryActions\";\r\n\r\ntype IMainLayoutProps = {\r\n children?: React.ReactNode;\r\n loanGuid: string;\r\n firstName: string;\r\n lastName: string;\r\n hasConsent: boolean;\r\n secured: boolean;\r\n borrowerType: string;\r\n messages: [];\r\n interimLoanStagingId: number;\r\n interimLoanSummary: InterimLoanSummary[]\r\n}\r\n & typeof dashboardActionCreators\r\n & typeof interimLoanSummaryActionCreators;\r\n\r\nconst MainLayout = (props: IMainLayoutProps) => {\r\n const [isNavigationClicked, setNavigationClicked] = React.useState(false);\r\n const [showUserInfo, setShowUserInfo] = React.useState(false);\r\n const [showNotifications, setShowNotifications] = React.useState(false);\r\n const [url, setUrl] = React.useState(\"\");\r\n const navigation = useSelector((state: ApplicationState) => state.navigation) as NavigationState;\r\n const [percentage, setPercentage] = React.useState(0);\r\n const [totalItems, setTotalItems] = React.useState({ completedItems: 0, totalItems: 0 });\r\n const [userProfileUrl, setUserProfileUrl] = React.useState(\"\");\r\n\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const { authState, oktaAuth } = useOktaAuth();\r\n const isUserAuthenticated = authState && authState.isAuthenticated;\r\n const { isLoanFromEncompassFlag, isLoanCompleted } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n const [isLoading, setLoading] = React.useState(false);\r\n const actions = {\r\n ...bindActionCreators({ ...TaskMenuCreators }, useDispatch())\r\n };\r\n\r\n const logout = async () => {\r\n setLoading(true);\r\n if (!isNullOrWhiteSpace(props.loanGuid)) {\r\n await accountInformationService.signOut(props.borrowerType, props.loanGuid, props.interimLoanStagingId)\r\n .then((response: any) => {\r\n let result = response as any;\r\n setLoading(false);\r\n }).catch((error: Error) => {\r\n console.error(\"Error occurred during sign out \", error);\r\n setLoading(false);\r\n });\r\n }\r\n history.push(\"/\");\r\n window.location.reload();\r\n }\r\n\r\n const toggleShowUserInfo = () => {\r\n setShowUserInfo(!showUserInfo);\r\n }\r\n\r\n const handleClickOutside = () => {\r\n\r\n if (showUserInfo) {\r\n setShowUserInfo(false);\r\n }\r\n\r\n if (showNotifications) {\r\n setShowNotifications(false);\r\n }\r\n\r\n if (isNavigationClicked) {\r\n document.body.classList.remove(\"menu-open\");\r\n setNavigationClicked(false);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n oktaConfigAsync().then((config: any) => {\r\n var profileUrl = config.issuer.replace(\"/oauth2/default\", \"/enduser/settings\");\r\n setUserProfileUrl(profileUrl);\r\n });\r\n appConfigAsync().then(async (config: any) => {\r\n setUrl(config?.PosConstant?.OpenRefinanceCalculator)\r\n });\r\n }, []);\r\n\r\n const openUserProfile = () => {\r\n window.open(userProfileUrl, \"_blank\", \"noopener\");\r\n }\r\n\r\n const showNavigationAndHeaders = props.loanGuid !== undefined &&\r\n props.loanGuid !== \"\" &&\r\n location.pathname !== \"/\" &&\r\n location.pathname !== \"/account-information\" &&\r\n location.pathname !== \"/econsent\" &&\r\n location.pathname !== \"/sign-in\";\r\n\r\n const isMultipleLoanExist = props.loanGuid !== undefined && location.pathname === \"/loan-view\";\r\n\r\n\r\n useEffect(() => {\r\n dispatch({ type: ActionTypes.ResetNavigationFromRoute });\r\n\r\n //block call for Multiple Loan Application for 'loan-view' route\r\n if (showNavigationAndHeaders && !isMultipleLoanExist && props.loanGuid) {\r\n taskMenuService.getSubTaskMenuLoanStatus(props.loanGuid)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem while fetching progress tracker information\");\r\n }\r\n if (response.parsedBody) {\r\n const tasks = response.parsedBody.filter((x: { taskItemId: any; }) => x.taskItemId !== TaskItem.AccountInformation);\r\n const completedTasks = tasks.filter((x: { taskStatusId: TaskStatusId; }) => x.taskStatusId === TaskStatusId.Completed);\r\n const percentageCalc = ((completedTasks.length / tasks.length) * 100);\r\n if (percentageCalc) {\r\n if (isLoanFromEncompassFlag && isLoanCompleted) {\r\n setPercentage(100);\r\n }\r\n else {\r\n let loanPercentage = Math.round(percentageCalc);\r\n\r\n if (loanPercentage != undefined) {\r\n setPercentage(loanPercentage);\r\n } else {\r\n setPercentage(0);\r\n }\r\n }\r\n }\r\n else {\r\n setPercentage(0);\r\n }\r\n\r\n if (isLoanFromEncompassFlag && isLoanCompleted) {\r\n setTotalItems((state) => ({ ...state, completedItems: tasks?.length }));\r\n\r\n }\r\n else {\r\n setTotalItems({ completedItems: completedTasks?.length, totalItems: tasks?.length });\r\n }\r\n }\r\n });\r\n\r\n props.getUserNotificationMessages(props.loanGuid);\r\n }\r\n }, [props.loanGuid, location]);\r\n\r\n const goHome = () => {\r\n actions.setLoanIsDirty(false);\r\n if (location.pathname !== \"/\") {\r\n history.push({ pathname: \"/\" });\r\n }\r\n }\r\n\r\n const toggleNotifications = () => {\r\n setShowNotifications(!showNotifications);\r\n }\r\n\r\n const openModal = () => {\r\n document.body.classList.add(\"menu-open\");\r\n setNavigationClicked(true);\r\n }\r\n const openRefinanceCalculator = () => {\r\n window.open(url)\r\n }\r\n\r\n const isMultipleLoanPage = location.pathname.indexOf(\"loan-view\") > -1 ? true : false;\r\n\r\n useEffect(() => {\r\n if (props.interimLoanSummary.length < 1 && props.secured) {\r\n logout();\r\n }\r\n }, [props.loanGuid]);\r\n\r\n return (\r\n <>\r\n { isLoading ? :
    \r\n\r\n {!isUserAuthenticated && props.secured && goHome}\r\n\r\n \r\n\r\n
    \r\n {showNavigationAndHeaders &&\r\n <>\r\n {\r\n }\r\n \r\n }\r\n\r\n
    \r\n \"Union\r\n
    \r\n\r\n {showNavigationAndHeaders &&\r\n <>\r\n \r\n\r\n {!isMultipleLoanExist &&
    \r\n
    \r\n
    {percentage}% Complete
    \r\n

    Completed {totalItems.completedItems} of {totalItems.totalItems}

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    }\r\n\r\n
      \r\n {!isMultipleLoanExist &&
    • \r\n \r\n
    • }\r\n\r\n\r\n
    • \r\n
      \r\n {!isMultipleLoanExist && <>\r\n {props.messages?.length > 0\r\n ? \r\n : \r\n }\r\n }\r\n\r\n {props?.firstName} {props?.lastName}\r\n \r\n
      \r\n\r\n {showNotifications &&\r\n
      \r\n \r\n
      \r\n }\r\n\r\n {showUserInfo &&\r\n
      \r\n
      \r\n User Profile\r\n Sign Out\r\n
      \r\n
      \r\n }\r\n
    • \r\n\r\n
    \r\n \r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n {props.children}\r\n
    \r\n 1 ? true : false}\r\n back={{\r\n show: navigation.back.show,\r\n disabled: navigation.back.disabled,\r\n message: navigation.back.message,\r\n onClick: () => {\r\n if (navigation.back.onClick) {\r\n navigation.back.onClick();\r\n } else {\r\n history.goBack();\r\n }\r\n },\r\n }}\r\n continue={{\r\n show: navigation.continue.show,\r\n disabled: navigation.continue.disabled,\r\n message: navigation.continue.message,\r\n onClick: () => {\r\n if (navigation.continue.onClick) {\r\n navigation.continue.onClick();\r\n }\r\n },\r\n }} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getUserNotificationMessages: (loanGuid: string) => {\r\n dispatch(dashboardActionCreators.getUserNotificationMessages(loanGuid));\r\n }\r\n});\r\n\r\nfunction mapStateToProps(state: ApplicationState) {\r\n const loanGuid = state.accountInformation?.loanGuid;\r\n const firstName = state.userAccountInformation?.firstName;\r\n const lastName = state.userAccountInformation?.lastName;\r\n const borrowerType = state.userAccountInformation?.borrowerType;\r\n const hasConsent = state.userAccountInformation?.hasConsent;\r\n const messages = state.dashboard?.data;\r\n const interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n const interimLoanSummary = state.interimLoanSummary?.loanSummary;\r\n return {\r\n loanGuid,\r\n firstName,\r\n lastName,\r\n hasConsent,\r\n borrowerType,\r\n messages,\r\n interimLoanSummary,\r\n interimLoanStagingId\r\n };\r\n}\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MainLayout as any) as any;","import * as React from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link, useHistory, useLocation } from \"react-router-dom\";\r\nimport FooterText from \"./FooterText\";\r\nimport UhmLogo from \"assets/logo/uhm-logo.png\";\r\nimport styles from \"./LoanOfficerViewLayout.module.scss\";\r\nimport Navigation from \"../Buttons/Navigation\";\r\nimport { ApplicationState } from \"store\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { NavigationState } from \"store/navigationStore\";\r\nimport * as ActionTypes from \"common/ActionTypes\";\r\n\r\nconst LoanOfficerViewLayout = (props: { children?: React.ReactNode }) => {\r\n const navigation = useSelector((state: ApplicationState) => state.navigation) as NavigationState;\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n dispatch({ type: ActionTypes.ResetNavigationFromRoute });\r\n }, [location]);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \"Union\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {props.children}\r\n
    \r\n {\r\n if (navigation.back.onClick) {\r\n navigation.back.onClick();\r\n } else {\r\n history.goBack();\r\n }\r\n },\r\n }}\r\n continue={{\r\n show: navigation.continue.show,\r\n disabled: navigation.continue.disabled,\r\n message: navigation.continue.message,\r\n onClick: () => {\r\n if (navigation.continue.onClick) {\r\n navigation.continue.onClick();\r\n }\r\n },\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default LoanOfficerViewLayout;","import * as React from \"react\";\r\n\r\nconst Infographic = (props: { src: string }) => {\r\n return ;\r\n};\r\n\r\nexport default Infographic;\r\n","import { useRef } from 'react'\r\n\r\n/**\r\n * The useInitialMount hook allows us to run an effect the very first time a component renters; \r\n * \r\n * Original Source: [8 helpful custom React Hooks - Ben Ilegbodu](https://www.benmvp.com/blog/8-helpful-custom-react-hooks/)\r\n */\r\nexport function useInitialMount() {\r\n // refs exist across component re-renders, so\r\n // we can use it to store a value for the\r\n // subsequent renders. We're tracking if it's\r\n // the first render, which is initially `true`\r\n const isFirst = useRef(true)\r\n\r\n // the very first render, the ref will be\r\n // `true`. but we immediately set it to `false`\r\n // so that every render after will be `false`\r\n if (isFirst.current) {\r\n isFirst.current = false\r\n\r\n // return true the very first render\r\n return true\r\n }\r\n\r\n // return false every following render\r\n return false\r\n}","import { useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport { useInitialMount } from \"./useInitialMount\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { useState, useEffect } from \"react\";\r\n\r\nexport interface NavigationActions {\r\n /**\r\n * Removes the back button onClick method. This will restore the back button logic to execute the browser back button action when clicked\r\n */\r\n ClearBackOnClick: () => void;\r\n /**\r\n * Sets the Continue button back to its initial hidden state\r\n */\r\n ResetContinue: () => void;\r\n /**\r\n * Resets both the back and continue button back to their inital states. This includes removing the back button onclick method\r\n */\r\n ResetNavigation: () => void;\r\n /**\r\n * Makes the Continue button visible, binds its onClick method, and optionally sets its disabled property. By default, the button will be enabled.\r\n */\r\n ShowContinue: (onClick: () => any, isDisabled?: boolean) => void;\r\n /**\r\n * Binds the method passed as a paramter to the back button onClick event. Calling this will prevent the back button from performing the browser back button action unless no parameter is passed. If no parameter is passed, then the default brower action will be performed when back clicked.\r\n */\r\n SetBackOnClick: (onClick?: () => any) => void;\r\n /**\r\n * Alters the disabled property of the continue button\r\n */\r\n SetContinueDisabled: (isDisabled: boolean) => void;\r\n /**\r\n * This value will be updated after reset occurs because of a route change. This value will be `undefined` from when the component first renders until that reset occurs\r\n */\r\n OnResetFromRoute: any;\r\n /**\r\n * Removes click handlers and hides both the back and continue button\r\n */\r\n HideNavigation: () => void;\r\n /**\r\n * Rename back and continue button\r\n */\r\n RenameNavigation: (forwardString: string, backwardString: string) => void;\r\n}\r\n/**\r\n * Hook to enable modification of global Navigation buttons\r\n * @param onInitialized A Function that will only be executed the first time a route changes occurs\r\n */\r\n\r\nexport function useNavigation(onInitialized?: () => void): NavigationActions {\r\n const dispatch = useDispatch();\r\n const isInitialMount = useInitialMount();\r\n const [onResetFromRoute, setOnReset] = useState(undefined);\r\n const [hasCalledInit, setHasCalledInit] = useState(false);\r\n\r\n const lastResetFromRoute = useSelector(\r\n (state: ApplicationState) => state.navigation?.lastResetFromRoute\r\n );\r\n useEffect(() => {\r\n // Prevents emitting a value change with the previous last reset time when the component first renders\r\n if (!isInitialMount) {\r\n setOnReset(lastResetFromRoute);\r\n }\r\n }, [isInitialMount, lastResetFromRoute]);\r\n\r\n useEffect(() => {\r\n if (onInitialized && onResetFromRoute && !hasCalledInit) {\r\n onInitialized();\r\n setHasCalledInit(true);\r\n }\r\n }, [onResetFromRoute]);\r\n\r\n var actions: NavigationActions = {\r\n ClearBackOnClick: () => {\r\n dispatch({\r\n type: ActionTypes.SetBackOnClick,\r\n onBackClick: null,\r\n });\r\n },\r\n ResetContinue: () => {\r\n dispatch({\r\n type: ActionTypes.ResetContinue,\r\n });\r\n },\r\n ResetNavigation: () => {\r\n dispatch({\r\n type: ActionTypes.ResetNavigation,\r\n });\r\n },\r\n SetBackOnClick: (onClick?: () => any) => {\r\n dispatch({\r\n type: ActionTypes.SetBackOnClick,\r\n onBackClick: onClick,\r\n });\r\n },\r\n SetContinueDisabled: (isDisabled: boolean) => {\r\n dispatch({\r\n type: ActionTypes.SetContinueDisabled,\r\n isDisabled: isDisabled,\r\n });\r\n },\r\n ShowContinue: (onClick: () => any, isDisabled?: boolean) => {\r\n dispatch({\r\n type: ActionTypes.ShowContinue,\r\n onClick: onClick,\r\n isDisabled: isDisabled,\r\n });\r\n },\r\n OnResetFromRoute: onResetFromRoute,\r\n HideNavigation: () => {\r\n dispatch({\r\n type: ActionTypes.HideNavigation,\r\n });\r\n },\r\n RenameNavigation: (forwardString: string, backwardString: string) => {\r\n dispatch({\r\n type: ActionTypes.RenameNavigation,\r\n forwardString: forwardString,\r\n backwardString: backwardString\r\n });\r\n },\r\n };\r\n return actions;\r\n}","export enum AccountInformationInterfaces {\r\n LoanPurpose = 1,\r\n OccupancyType = 2,\r\n PropertyType = 3,\r\n ClosingDate = 4,\r\n Priority = 5,\r\n BorrowerInformation = 6,\r\n HowManyUnits = 7\r\n}\r\n\r\nexport enum LoanPurposeChoices {\r\n Purchase = \"Purchase\",\r\n Refinance = \"Refinance\"\r\n}\r\n\r\nexport enum OccupancyTypeChoices {\r\n PrimaryResidence = \"Primary Residence\",\r\n SecondHome = \"Second Home\",\r\n Investment = \"Investment\"\r\n}\r\n\r\nexport enum PropertyTypeChoices {\r\n SingleFamily = \"Single Family\",\r\n MultiUnit = \"Multi-Unit\",\r\n Condominium = \"Condominium\"\r\n}\r\n\r\nexport enum ClosingDateChoices {\r\n Asap = \"ASAP\",\r\n WithinThirtyDays = \"Within 30 Days\",\r\n TwoToThreeMonths = \"2 - 3 Months\",\r\n ThreeToSixMonths = \"3 - 6 Months\",\r\n NotSure = \"Not Sure\",\r\n JustBeginningToLook = \"Just Beginning To Look\"\r\n}\r\n\r\nexport enum PriorityChoices {\r\n LowerMonthlyPayment = \"Lower Monthly Payment\",\r\n PayOffMortgageFaster = \"Pay Off Mortgage Faster\",\r\n TakeCashOutOfMyHome = \"Take Cash Out Of My Home\"\r\n}\r\n\r\nexport enum HowManyUnitsChoices {\r\n Two = 2,\r\n Three = 3,\r\n Four = 4\r\n}","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as AccountInformationInterfaces from \"../interfaces/accountInformationInterfaces\";\r\nimport * as AccountInformationStore from \"../store/accountInformationStore\";\r\nimport { KnownAction } from '../store/accountInformationStore';\r\nimport * as accountInformationService from '../services/accountInformationService';\r\n\r\nexport const accountInformationActionCreators = {\r\n updateLoanPurposeChoice: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateLoanPurposeChoice, loanPurpose: value });\r\n },\r\n updateUserId: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateUserId, userId: value });\r\n },\r\n updateOccupancyTypeChoice: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateOccupancyTypeChoice, occupancyType: value });\r\n },\r\n updatePropertyTypeChoice: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdatePropertyTypeChoice, propertyType: value });\r\n },\r\n updateClosingDateChoice: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateClosingDateChoice, closingDate: value });\r\n },\r\n updatePriorityChoice: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdatePriorityChoice, priority: value });\r\n },\r\n updateHowManyUnitsChoice: (value?: AccountInformationInterfaces.HowManyUnitsChoices): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateHowManyUnitsChoice, howManyUnits: value });\r\n },\r\n updateBorrowerFirstName: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerFirstName, firstName: value });\r\n },\r\n updateBorrowerMiddleName: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerMiddleName, middleName: value });\r\n },\r\n updateBorrowerLastName: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerLastName, lastName: value });\r\n },\r\n updateBorrowerNameSuffix: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerNameSuffix, nameSuffix: value });\r\n dispatch({ type: ActionTypes.UpdateBorrowerNameSuffix, nameSuffix: value });\r\n },\r\n updateBorrowerEmail: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerEmail, email: value });\r\n },\r\n updateBorrowerPhoneNumber: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerPhoneNumber, phoneNumber: value });\r\n },\r\n\r\n submitInitialAccountInformation: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SubmitInitialAccountInformation, value: value });\r\n },\r\n setLoanGuid: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetLoanGuid, loanGuid: value });\r\n },\r\n IsLoading: (value?: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.IsLoading, isLoading: value });\r\n },\r\n accountInformationCheck: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.AccountInformationCheck, accountInformationCheck: value });\r\n },\r\n setBorrowerType: (value: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetBorrowerType, borrowerType: value });\r\n }\r\n}","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { Link, useHistory, useLocation } from \"react-router-dom\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport homeIllustration from \"assets/infographics/home.svg\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { useOktaAuth } from \"@okta/okta-react\";\r\nimport SessionInfo from \"../SessionDataTracker\";\r\nimport queryString from \"query-string\";\r\nimport * as AccountInformationActions from \"../actions/accountInformationActions\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport { ApplicationState } from \"../store\";\r\nimport { isNullOrWhiteSpace } from \"../common/helper/formatHelper\";\r\nimport { isUndefined } from \"lodash\";\r\nimport { IsNarrator } from \"../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n// @ts-ignore\r\nimport Toggle from 'react-toggle'\r\n\r\ntype HomeProps = {\r\n updateBorrowerEmail: (value: string) => any;\r\n updateBorrowerFirstName: (value: string) => any;\r\n updateBorrowerLastName: (value: string) => any;\r\n setLoanGuid: (value: string) => any;\r\n accountInformationCheck: (value: boolean) => any;\r\n setBorrowerType: (value: string) => any;\r\n};\r\n\r\nconst Home = (props: HomeProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [toggleValue, setToggleValue] = React.useState(false);\r\n const { authState, oktaAuth } = useOktaAuth();\r\n const history = useHistory();\r\n const navigation = useNavigation(() => {\r\n navigation.HideNavigation();\r\n });\r\n\r\n const { search } = useLocation();\r\n const queryStringValues = queryString.parse(search);\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state?.accountInformation?.loanGuid ?? null\r\n );\r\n const borrowerType = useSelector(\r\n (state: ApplicationState) => state?.accountInformation?.borrowerType ?? \"\"\r\n );\r\n\r\n React.useEffect(() => {\r\n const values = queryStringValues as any;\r\n if (values && values.loanNumber) {\r\n const email = values.email as string;\r\n const firstName = values.firstName as string;\r\n const lastName = values.lastName as string;\r\n const loanGuid = values.loanGuid as string;\r\n const borrowerType = values.borrowerType as string;\r\n\r\n props.updateBorrowerEmail(email);\r\n props.updateBorrowerFirstName(firstName);\r\n props.updateBorrowerLastName(lastName);\r\n props.setLoanGuid(loanGuid);\r\n props.setBorrowerType(borrowerType ?? \"\");\r\n\r\n if (!isNullOrWhiteSpace(loanGuid) && !isUndefined(loanGuid)) {\r\n props.accountInformationCheck(true);\r\n }\r\n history.push({ pathname: \"/\" });\r\n return;\r\n }\r\n }, [queryStringValues]);\r\n\r\n const login = async () => {\r\n history.push({ pathname: \"/id\", state: { action: \"sign-in\", borrowerType: \"Unknown\" } });\r\n }\r\n\r\n React.useEffect(() => {\r\n localStorage.setItem('isNarrator', \"false\");\r\n SessionInfo.clear();\r\n\r\n if (authState?.isAuthenticated) {\r\n oktaAuth.signOut({ postLogoutRedirectUri: \"\" });\r\n }\r\n }, []);\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n const handleChange = (event: any) => {\r\n setToggleValue(event.target.checked);\r\n localStorage.setItem('isNarrator', event.target.checked);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Welcome')}>Welcome!

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Let's walk you through the steps of getting you started with your loan.\")}>\r\n Let's walk you through the steps of getting you started with your\r\n loan.\r\n

    \r\n {isNullOrUndefined(loanGuid) || loanGuid == \"\" ?
    \r\n \r\n \r\n \r\n
    :\r\n
    \r\n\r\n \r\n\r\n
    }\r\n

    \r\n stopSpeech()} onMouseOver={() => textToSpeech('Returning Customer?')}>Returning Customer?\r\n stopSpeech()} onMouseOver={() => textToSpeech('Click here to sign in')} onClick={login}> Click here to sign in.\r\n

    \r\n
    \r\n If you have difficulty in reading the content, start the narration on the website\r\n handleChange(e)} />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateBorrowerFirstName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerFirstName(value));\r\n },\r\n updateBorrowerLastName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerLastName(value));\r\n },\r\n updateBorrowerEmail: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerEmail(value));\r\n },\r\n setLoanGuid: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.setLoanGuid(value));\r\n },\r\n accountInformationCheck: (value: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.accountInformationCheck(value));\r\n },\r\n setBorrowerType: (value: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.setBorrowerType(value));\r\n }\r\n});\r\n\r\nexport default connect(null, mapDispatchToProps)(Home);","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction } from '../store/loanUpdateResponseStore';\r\n\r\nexport const loanUpdateResponseActionCreators = {\r\n setIsEncompassDown: (isEncompassDown?: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetIsEncompassDown, isEncompassDown: isEncompassDown});\r\n }\r\n}","import React from \"react\";\r\nimport styles from \"./Buttons.module.scss\";\r\n\r\ninterface ToolTipToggleProps {\r\n isToggled?: boolean;\r\n isActive: boolean;\r\n onClick: (event: React.MouseEvent) => void;\r\n}\r\n\r\nconst ToolTipToggle = (props: ToolTipToggleProps) => (\r\n
    \r\n \r\n
    \r\n);\r\n\r\nexport default ToolTipToggle;\r\n","import * as React from \"react\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport ToolTipToggle from \"./Buttons/ToolTipToggle\";\r\nimport { useSpring, animated } from \"react-spring\";\r\nimport styles from \"./ChoiceQuestionButton.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface ChoiceQuestionButtonProps {\r\n choice: Choice;\r\n disabled: boolean | undefined;\r\n}\r\n\r\nconst ChoiceQuestionButton = (props: ChoiceQuestionButtonProps) => {\r\n const [toggle, setToggle] = React.useState(false);\r\n const [showFront, setShowFront] = React.useState(true);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n const { transform, opacity } = useSpring({\r\n opacity: toggle ? 1 : 0,\r\n transform: `perspective(600px) rotateY(${toggle ? 180 : 0}deg)`,\r\n config: { mass: 5, tension: 500, friction: 80 },\r\n });\r\n\r\n const toggleToolTip = (event: React.MouseEvent) => {\r\n setToggle(!toggle);\r\n setTimeout(() => setShowFront(!showFront), 600);\r\n event.stopPropagation();\r\n };\r\n\r\n const cardStyle = (val: ChoiceQuestionButtonProps) => {\r\n return (\r\n styles.card +\r\n \" \" +\r\n (val.choice.icon ? \"\" : styles.noIcon) +\r\n \" \" +\r\n (val.choice.toolTipText !== undefined ? \"\" : styles.hasNoTooltip) +\r\n \" \" +\r\n (val.choice.className ? val.choice.className : \"\")\r\n );\r\n };\r\n\r\n let cardMain = (\r\n
    \r\n\r\n {props.choice.icon && (\r\n
    \r\n {props.choice.text}\r\n
    \r\n )}\r\n\r\n stopSpeech()} onMouseOver={() => textToSpeech(props.choice.text.replace('/', '/\\n'))} className={styles.cardContTitle}>{props.choice.text.replace('/','/\\n')}\r\n
    \r\n );\r\n\r\n let cardBack = (\r\n
    \r\n {props.choice.toolTipText &&

    {props.choice.toolTipText}

    }\r\n
    \r\n );\r\n\r\n let card = <>;\r\n if (props.choice.toolTipText) {\r\n card = (\r\n
    \r\n 1 - o),\r\n transform,\r\n }}\r\n onClick={props.choice.onClick}\r\n >\r\n {/* toggleToolTip(event)} />*/}\r\n {cardMain}\r\n \r\n `${t} rotateY(180deg)`),\r\n }}\r\n onClick={(event) => toggleToolTip(event)}\r\n >\r\n { }} isToggled />\r\n {cardBack}\r\n \r\n
    \r\n );\r\n } else {\r\n card = (\r\n \r\n );\r\n }\r\n\r\n return card;\r\n};\r\n\r\nexport default ChoiceQuestionButton;\r\n","import * as React from \"react\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport Infographic from \"./Infographic\";\r\nimport ChoiceQuestionButton from \"./ChoiceQuestionButton\";\r\nimport styles from \"./ChoiceQuestion.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface ChoiceQuestionProps {\r\n intro: string;\r\n question: string;\r\n choices: Choice[];\r\n infographic?: string;\r\n isIntroRequired?: boolean;\r\n isQuesRequired?: boolean;\r\n disabled: boolean | undefined;\r\n}\r\n\r\nconst ChoiceQuestion = (props: ChoiceQuestionProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n React.useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [props.choices]);\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.intro)}>{props.intro} {props.isIntroRequired && * }

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.question)}>{props.question}{props.isQuesRequired && * }

    \r\n 0 &&\r\n props.choices[0].icon === undefined &&\r\n props.infographic\r\n ? styles.noIcon\r\n : \"\"\r\n }`}\r\n >\r\n {props.choices.map((choice, index) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n {props.infographic && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ChoiceQuestion;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport loanTypeGraphic from \"assets/infographics/accountInformation/loan-type.svg\";\r\nimport purchaseIcon from \"assets/icons/accountInformation/purchase.svg\";\r\nimport refinanceIcon from \"assets/icons/accountInformation/refinance.svg\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport styles from \"./AccountInformation.module.scss\";\r\n\r\nconst LoanPurpose = (props: {\r\n updateLoanPurposeChoice: (value: string) => any, data: any, loanPurpose: any,\r\n loanPurposeParam: boolean\r\n}) => {\r\n const [loanPurposeChoices, setLoanPurposeChoices] = useState([]);\r\n\r\n useEffect(() => {\r\n if (props.data.length > 0) {\r\n setLoanPurposeChoices(props.data);\r\n }\r\n }, [props.data]);\r\n\r\n const loadSvg = (name: string) => {\r\n switch (name) {\r\n case 'purchase':\r\n return purchaseIcon\r\n case 'refinance':\r\n return refinanceIcon\r\n }\r\n };\r\n const choices: Choice[] = [];\r\n loanPurposeChoices.map((res: any) => {\r\n let choice: Choice = {\r\n text: res.name,\r\n icon: loadSvg(res.icon),\r\n onClick: () => props.updateLoanPurposeChoice(res.name),\r\n toolTipText: res.description,\r\n className: props.loanPurpose === res.name ? styles.selected : \"\"\r\n };\r\n\r\n choices.push(choice);\r\n })\r\n\r\n\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default LoanPurpose;\r\n\r\n","import React, { useState, useEffect } from \"react\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport primaryResidenceGraphic from \"assets/infographics/accountInformation/primary-residence.svg\";\r\nimport secondHomeGraphic from \"assets/infographics/accountInformation/second-home.svg\";\r\nimport investmentGraphic from \"assets/infographics/accountInformation/investment.svg\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport styles from \"./AccountInformation.module.scss\";\r\n\r\nconst OccupancyType = (props: {\r\n updateOccupancyTypeChoice: (value: string) => any, data: any, occupancyType: any\r\n}) => {\r\n const [occupancyTypeChoices, setOccupancyTypeChoices] = useState([]);\r\n\r\n useEffect(() => {\r\n if (props.data.length > 0) {\r\n setOccupancyTypeChoices(props.data);\r\n }\r\n }, [props.data]);\r\n\r\n const loadSvg = (name: string) => {\r\n\r\n switch (name) {\r\n case 'primary-residence':\r\n return primaryResidenceGraphic\r\n case 'second-home':\r\n return secondHomeGraphic\r\n case 'investment':\r\n return investmentGraphic\r\n }\r\n };\r\n const choices: Choice[] = [];\r\n occupancyTypeChoices.map((res: any) => {\r\n let choice: Choice = {\r\n text: res.name,\r\n icon: loadSvg(res.icon),\r\n onClick: () => props.updateOccupancyTypeChoice(res.name),\r\n toolTipText: res.description,\r\n className: props.occupancyType === res.name ? styles.selected : \"\"\r\n };\r\n choices.push(choice);\r\n })\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default OccupancyType;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport singleFamilyGraphic from \"assets/infographics/accountInformation/single-family.svg\";\r\nimport multiUnitGraphic from \"assets/infographics/accountInformation/multi-unit.svg\";\r\nimport condoGraphic from \"assets/infographics/accountInformation/condo.svg\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport styles from \"./AccountInformation.module.scss\";\r\n\r\nconst PropertyType = (props: {\r\n updatePropertyTypeChoice: (value: string) => any, data: any, propertyType: any, loanPurpose: any\r\n}) => {\r\n const [propertyTypeChoices, setPropertyTypeChoices] = useState([]);\r\n\r\n useEffect(() => {\r\n if (props.data.length > 0) {\r\n setPropertyTypeChoices(props.data);\r\n }\r\n }, [props.data]);\r\n\r\n const loadSvg = (name: string) => {\r\n\r\n switch (name) {\r\n case 'single-family':\r\n return singleFamilyGraphic\r\n case 'multi-unit':\r\n return multiUnitGraphic\r\n case 'condo':\r\n return condoGraphic\r\n }\r\n };\r\n\r\n const choices: Choice[] = [];\r\n propertyTypeChoices.map((res: any) => {\r\n let choice: Choice = {\r\n text: res.name,\r\n icon: loadSvg(res.icon),\r\n onClick: () => props.updatePropertyTypeChoice(res.name),\r\n toolTipText: res.description,\r\n className: props.propertyType === res.name ? styles.selected : \"\"\r\n };\r\n choices.push(choice);\r\n })\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default PropertyType;","import React, { useState, useEffect } from \"react\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport lowerMonthlyPaymentGraphic from \"assets/infographics/accountInformation/lower-monthly-payment.svg\";\r\nimport payOffMortgageFasterGraphic from \"assets/infographics/accountInformation/pay-mortgage.svg\";\r\nimport takeCashOutOfMyHomeGraphic from \"assets/infographics/accountInformation/cash-out.svg\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport styles from \"./AccountInformation.module.scss\";\r\n\r\nconst Priority = (props: {\r\n updatePriorityChoice: (value: string) => any, data: any, priorityChoice: any\r\n}) => {\r\n const [priorityChoices, setPriorityChoices] = useState([]);\r\n useEffect(() => {\r\n if (props.data.length > 0) {\r\n setPriorityChoices(props.data);\r\n }\r\n }, [props.data]);\r\n\r\n const loadSvg = (name: string) => {\r\n\r\n switch (name) {\r\n case 'lower-monthly-payment':\r\n return lowerMonthlyPaymentGraphic\r\n case 'pay-mortgage':\r\n return payOffMortgageFasterGraphic\r\n case 'cash-out':\r\n return takeCashOutOfMyHomeGraphic\r\n }\r\n };\r\n const choices: Choice[] = [];\r\n priorityChoices.map((res: any) => {\r\n let choice: Choice = {\r\n text: res.name,\r\n icon: loadSvg(res.icon),\r\n onClick: () => props.updatePriorityChoice(res.name),\r\n toolTipText: res.description,\r\n className: props.priorityChoice === res.name ? styles.selected : \"\"\r\n };\r\n choices.push(choice);\r\n })\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default Priority;\r\n","import React from \"react\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport { HowManyUnitsChoices } from \"interfaces/accountInformationInterfaces\";\r\nimport multiUnitGraphic from \"assets/infographics/accountInformation/multi-unit-count.svg\";\r\nimport styles from \"../common/ChoiceQuestion.module.scss\";\r\nimport accountInfoStyles from \"./AccountInformation.module.scss\";\r\n\r\nconst HowManyUnits = (props: {\r\n updateHowManyUnitsChoice: (value: HowManyUnitsChoices) => any, howManyUnits: any, loanPurpose: any\r\n}) => (\r\n
    \r\n props.updateHowManyUnitsChoice(HowManyUnitsChoices.Two),\r\n className: props.howManyUnits === HowManyUnitsChoices.Two ? accountInfoStyles.selected : \"\"\r\n },\r\n {\r\n text: HowManyUnitsChoices.Three.toString(),\r\n onClick: () => props.updateHowManyUnitsChoice(HowManyUnitsChoices.Three),\r\n className: props.howManyUnits === HowManyUnitsChoices.Three ? accountInfoStyles.selected : \"\"\r\n },\r\n {\r\n text: HowManyUnitsChoices.Four.toString(),\r\n onClick: () => props.updateHowManyUnitsChoice(HowManyUnitsChoices.Four),\r\n className: props.howManyUnits === HowManyUnitsChoices.Four ? accountInfoStyles.selected : \"\"\r\n },\r\n ]}\r\n\r\n infographic={multiUnitGraphic}\r\n />\r\n
    \r\n );\r\n\r\nexport default HowManyUnits;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport closingDateGraphic from \"assets/infographics/accountInformation/closing-date.svg\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport styles from \"./AccountInformation.module.scss\";\r\n\r\nconst ClosingDate = (props: {\r\n updateClosingDateChoice: (value: string) => any, data: any, closingDate: any\r\n}) => {\r\n const [closingDateChoices, setClosingDateChoices] = useState([]);\r\n useEffect(() => {\r\n if (props.data.length > 0) {\r\n setClosingDateChoices(props.data);\r\n }\r\n }, [props.data]);\r\n\r\n const choices: Choice[] = [];\r\n closingDateChoices.map((res: any) => {\r\n let choice: Choice = {\r\n text: res.name,\r\n onClick: () => props.updateClosingDateChoice(res.name),\r\n toolTipText: res.description,\r\n className: props.closingDate === res.name ? styles.selected : \"\"\r\n };\r\n choices.push(choice);\r\n })\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default ClosingDate;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styles from \"./Checkbox.module.scss\";\r\n\r\ninterface CheckboxProps {\r\n onChange?: (checked: boolean) => void;\r\n onClick?: (checked: boolean) => any;\r\n name?: string;\r\n checked?: boolean;\r\n className?: string;\r\n reference?: any;\r\n label?: any;\r\n disabled?: boolean;\r\n}\r\n\r\nconst Checkbox = (props: CheckboxProps) => {\r\n const [checked, setChecked] = useState(false);\r\n\r\n useEffect(() => {\r\n if (props.onChange)\r\n props.onChange(checked);\r\n }, [checked]);\r\n\r\n useEffect(() => {\r\n if (props.checked !== undefined) {\r\n setChecked(props.checked);\r\n }\r\n }, [props.checked]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Checkbox;\r\n","import * as React from \"react\";\r\nimport { compose } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../../store/index\";\r\n\r\ninterface ReadOnlyProps {\r\n disabled: boolean;\r\n isReadOnly: boolean;\r\n onChange: (event: React.ChangeEvent) => void;\r\n dispatch: undefined;\r\n}\r\n\r\nfunction withReadOnlyWrapperComponent(Component: React.ComponentType) {\r\n\r\n return (props: T) => {\r\n let disabled = props.isReadOnly;\r\n if (props.disabled === true) {\r\n disabled = true;\r\n }\r\n let onChange = (event: React.ChangeEvent) => { };\r\n if (!disabled) {\r\n onChange = props.onChange;\r\n }\r\n const { isReadOnly, dispatch, ...rest } = props;\r\n return (\r\n <>\r\n \r\n );\r\n };\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n let isReadOnly = false;\r\n return {\r\n isReadOnly\r\n };\r\n};\r\n\r\nexport const withReadOnlyWrapper = compose(\r\n connect(mapStateToProps, null),\r\n withReadOnlyWrapperComponent\r\n);","import * as React from \"react\";\r\nimport { post } from \"../../common/dataFetch\";\r\n\r\nlet loanGuid: string;\r\n\r\nconst callExecuteTask = function () {\r\n\r\n // may check here if user session is alive otherwise return.\r\n\r\n if (!loanGuid) { return; }\r\n\r\n post(`LoanApplicationBackgroundTask/ExecuteNext?LoanGuid=${loanGuid}`, {})\r\n .then(response => {\r\n var haveMoreTasksToRun = response.parsedBody;\r\n if (haveMoreTasksToRun) { //if have more tasks in the bucket,\r\n TriggerOnceImmediate(); //then call again almost immediately.\r\n }\r\n });\r\n}\r\n\r\nconst TriggerOnceImmediate = () => {\r\n setTimeout(callExecuteTask, 200);\r\n}\r\n\r\nconst Initialize = (_loanGuid: string) => {\r\n loanGuid = _loanGuid;\r\n TriggerOnceImmediate(); //call once, upon initialization\r\n setInterval(callExecuteTask, 30000); //keep triggering on retular intervals.\r\n};\r\n\r\nclass backgroundEngine {\r\n InitializeAndRun = Initialize;\r\n TriggerOnceImmediate = TriggerOnceImmediate;\r\n}\r\n\r\nexport var BackgroundEngine = new backgroundEngine();","import React, { useEffect, useState } from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { UserAccountState } from \"../../store/userAccountStore\";\r\nimport { AccountInformationState, IAccountInformationProps } from \"../../store/accountInformationStore\";\r\nimport * as AccountInformationActions from \"../../actions/accountInformationActions\";\r\nimport * as LoanUpdateResponseActions from \"../../actions/loanUpdateResponseActions\";\r\nimport LoanPurpose from \"./LoanPurpose\";\r\nimport OccupancyType from \"./OccupancyType\";\r\nimport PropertyType from \"./PropertyType\";\r\nimport Priority from \"./Priority\";\r\nimport HowManyUnits from \"./HowManyUnits\";\r\nimport ClosingDate from \"./ClosingDate\";\r\nimport BorrowerInformation from \"./BorrowerInformation\";\r\nimport * as accountInformationService from \"../../services/accountInformationService\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport accountCreationInfographic from \"assets/infographics/accountInformation/account-creation.svg\";\r\nimport { useLocation, useHistory } from \"react-router-dom\";\r\nimport styles from \"./AccountInformation.module.scss\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { Modal, ModalBody } from \"reactstrap\";\r\nimport queryString from 'query-string';\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport * as AccountInformationInterfaces from \"../../interfaces/accountInformationInterfaces\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanActionCreators } from \"../../actions/loanActions\";\r\nimport { BackgroundEngine } from \"../common/BackgroundTaskTimer\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nexport enum AccountInformationStep {\r\n LoanPurpose = 1,\r\n OccupancyType = 2,\r\n PropertyType = 3,\r\n HowManyUnits = 4,\r\n ClosingDate = 5,\r\n PriorityChoice = 6,\r\n BorrowerInformation = 7\r\n}\r\n\r\ntype AccountInformationProps =\r\n {\r\n accountInformation: any,\r\n userAccountInformation: UserAccountState\r\n }\r\n & typeof AccountInformationActions.accountInformationActionCreators\r\n & typeof LoanUpdateResponseActions.loanUpdateResponseActionCreators\r\n & typeof loanActionCreators;\r\n\r\nexport interface AccountInformation {\r\n noOfUnits?: number;\r\n loanPurpose?: string;\r\n userId?: string;\r\n occupancyType?: string;\r\n propertyType?: string;\r\n purchaseClosingDate?: string;\r\n refinancePriority?: string;\r\n borrowerFirstName?: string;\r\n borrowerMiddleName?: string;\r\n borrowerLastName?: string;\r\n borrowerNameSuffix?: string;\r\n borrowerEmailAddress?: string;\r\n borrowerPhoneNumber?: string;\r\n}\r\n\r\nconst AccountInformation = (props: AccountInformationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [loanPurposeChoices, setLoanPurposeChoices] = useState([]);\r\n const [occupancyTypeChoices, setOccupancyTypeChoices] = useState([]);\r\n const [propertyTypeChoices, setPropertyTypeChoices] = useState([]);\r\n const [closingDateChoices, setClosingDateChoices] = useState([]);\r\n const [priorityChoices, setPriorityChoices] = useState([]);\r\n const [isSuccessfullySubmitted, setSuccessfullySubmitted] = useState(false);\r\n const [loanPurposeParam, setLoanPurposeParam] = React.useState(false);\r\n const [currentStep, changeStep] = React.useState(AccountInformationStep.LoanPurpose);\r\n const navigation = useNavigation();\r\n const { search } = useLocation();\r\n const history = useHistory();\r\n const [isError, setIsError] = React.useState(false);\r\n\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n\r\n const accountInfo = useSelector((state: ApplicationState) => state.accountInformation as AccountInformationState);\r\n const signUp = () => {\r\n history.push({ pathname: \"/account\", state: { action: \"create-account\", borrowerType: \"Borrower\", accountInfo: accountInfo } });\r\n }\r\n\r\n useEffect(() => {\r\n const values = queryString.parse(search);\r\n if (!isNullOrWhiteSpace(values.userId as string)) {\r\n props.updateUserId(values.userId as string);\r\n getLookups(values.userId as string);\r\n }\r\n else {\r\n getLookups();\r\n }\r\n\r\n }, []);\r\n\r\n const change = (step: string) => {\r\n if (step === 'updateLoanPurposeChoice')\r\n changeStep(AccountInformationStep.LoanPurpose);\r\n else if (step === 'updateOccupancyTypeChoice')\r\n changeStep(AccountInformationStep.OccupancyType);\r\n else if (step === 'updatePropertyTypeChoice')\r\n changeStep(AccountInformationStep.PropertyType);\r\n else if (step === 'updateHowManyUnitsChoice')\r\n changeStep(AccountInformationStep.HowManyUnits);\r\n else if (step === 'updateClosingDateChoice')\r\n changeStep(AccountInformationStep.ClosingDate);\r\n else if (step === 'updatePriorityChoice')\r\n changeStep(AccountInformationStep.PriorityChoice);\r\n };\r\n\r\n const onContinue = async () => {\r\n if (currentStep === AccountInformationStep.LoanPurpose) {\r\n changeStep(AccountInformationStep.OccupancyType)\r\n }\r\n else if (currentStep === AccountInformationStep.OccupancyType) {\r\n changeStep(AccountInformationStep.PropertyType)\r\n }\r\n else if (currentStep === AccountInformationStep.PropertyType) {\r\n if (props.accountInformation.propertyTypeChoice === \"Multi-Unit\") {\r\n changeStep(AccountInformationStep.HowManyUnits)\r\n }\r\n if (props.accountInformation.loanPurposeChoice === \"Purchase\" && props.accountInformation.propertyTypeChoice !== \"Multi-Unit\") {\r\n changeStep(AccountInformationStep.ClosingDate)\r\n }\r\n else if (props.accountInformation.loanPurposeChoice === \"Refinance\" && props.accountInformation.propertyTypeChoice !== \"Multi-Unit\") {\r\n changeStep(AccountInformationStep.PriorityChoice)\r\n }\r\n }\r\n else if (currentStep === AccountInformationStep.HowManyUnits) {\r\n if (props.accountInformation.loanPurposeChoice === \"Purchase\") {\r\n changeStep(AccountInformationStep.ClosingDate)\r\n }\r\n else if (props.accountInformation.loanPurposeChoice === \"Refinance\") {\r\n changeStep(AccountInformationStep.PriorityChoice)\r\n }\r\n }\r\n else if (currentStep === AccountInformationStep.ClosingDate) {\r\n console.log(\"IN CLOSING DATE\", props)\r\n if (!props.accountInformation.borrowerEmail) {\r\n changeStep(AccountInformationStep.BorrowerInformation)\r\n } else {\r\n escapeBorrowerInfoAndCreateLoan();\r\n }\r\n }\r\n else if (currentStep === AccountInformationStep.PriorityChoice && !props.accountInformation.borrowerEmail) {\r\n changeStep(AccountInformationStep.BorrowerInformation)\r\n } else {\r\n escapeBorrowerInfoAndCreateLoan();\r\n }\r\n }\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n const escapeBorrowerInfoAndCreateLoan = async () => {\r\n \r\n props.updateBorrowerEmail(props.userAccountInformation.email);\r\n props.updateBorrowerFirstName(props.userAccountInformation.firstName);\r\n props.updateBorrowerLastName(props.userAccountInformation.lastName);\r\n\r\n //Create Loan for existing user\r\n\r\n let accountInformation: IAccountInformationProps = {\r\n noOfUnits: props.accountInformation.howManyUnitsChoice,\r\n borrowerEmailAddress: props.accountInformation.borrowerEmail,\r\n loanPurpose: props.accountInformation.loanPurposeChoice,\r\n userId: props.accountInformation.userId,\r\n occupancyType: props.accountInformation.occupancyTypeChoice,\r\n propertyType: props.accountInformation.propertyTypeChoice,\r\n purchaseClosingDate: props.accountInformation.closingDateChoice,\r\n refinancePriority: props.accountInformation.priorityChoice,\r\n borrowerFirstName: props.userAccountInformation.firstName,\r\n borrowerLastName: props.userAccountInformation.lastName,\r\n borrowerPhoneNumber: \"\",\r\n borrowerMiddleName: \"\",\r\n borrowerNameSuffix: \"\",\r\n borrowerType: props.accountInformation.borrowerType ?? \"\"\r\n };\r\n\r\n props.IsLoading(true);\r\n setIsLoading(true);\r\n\r\n props.setLoanGuid(\"\");\r\n props.setIsLoanCompleted(false);\r\n props.setIsLoanFromEncompassFlag(false);\r\n props.setInterimLoanStagingId(0);\r\n\r\n await accountInformationService.create(accountInformation, \"\")\r\n .then((response: any) => {\r\n if (response.status != 200) {\r\n return;\r\n } \r\n\r\n let result = response.parsedBody as LoanUpdateResponseState;\r\n\r\n if (result.isEncompassDown || result.loanGuid === null || result.loanGuid === \"\") {\r\n console.log(\"Encompass service is down or loanGuid not present\");\r\n history.push({ pathname: \"/system-unavailable\" });\r\n return;\r\n }\r\n\r\n if (accountInformation.userId == undefined) {\r\n accountInformation.userId = \"\";\r\n }\r\n\r\n props.IsLoading(false);\r\n\r\n setIsLoading(false);\r\n\r\n props.setLoanGuid(result.loanGuid);\r\n props.setInterimLoanStagingId(result.interimLoanStagingId);\r\n\r\n if (result.loanGuid) {\r\n BackgroundEngine.InitializeAndRun(result.loanGuid);\r\n }\r\n\r\n history.push({ pathname: \"/econsent\", state: { isUserLoggedIn: true } });\r\n\r\n return result;\r\n })\r\n .catch((error: Error) => {\r\n console.error(\"Error occurred during loan creation: \", error);\r\n });\r\n }\r\n\r\n const getLookups = async (userId?: string) => {\r\n await accountInformationService\r\n .getAll(userId ?? \"\")\r\n .then((response) => {\r\n return response.parsedBody as any;\r\n })\r\n .then((data: any) => {\r\n if (data !== undefined) {\r\n setLoanPurposeChoices(data.loanPurposes);\r\n setOccupancyTypeChoices(data.occupancyTypes);\r\n setPropertyTypeChoices(data.propertyTypes);\r\n setClosingDateChoices(data.purchaseClosingDates);\r\n setPriorityChoices(data.refinancePriorities);\r\n }\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.accountInformation.initialAccountInformationSubmitted) {\r\n\r\n setSuccessfullySubmitted(true);\r\n props.accountInformationCheck(true);\r\n }\r\n }, [props.accountInformation.initialAccountInformationSubmitted])\r\n\r\n const redirectToHome = () => {\r\n setIsError(false);\r\n history.push({ pathname: \"/\" });\r\n window.location.reload();\r\n };\r\n\r\n let renderTemplate = <>;\r\n let accountInfoPage = <>;\r\n\r\n if (currentStep === AccountInformationStep.LoanPurpose) {\r\n accountInfoPage = (<>\r\n \r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !props.accountInformation.loanPurposeChoice\r\n )}\r\n );\r\n } else if (currentStep === AccountInformationStep.OccupancyType) {\r\n accountInfoPage = (\r\n <>\r\n \r\n {navigation.SetBackOnClick(() => change('updateLoanPurposeChoice'))}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !props.accountInformation.occupancyTypeChoice\r\n )}\r\n \r\n );\r\n } else if (currentStep === AccountInformationStep.PropertyType) {\r\n accountInfoPage = (\r\n <>\r\n \r\n {navigation.SetBackOnClick(() => change('updateOccupancyTypeChoice'))}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !props.accountInformation.propertyTypeChoice\r\n )}\r\n \r\n );\r\n } else if (currentStep === AccountInformationStep.HowManyUnits && props.accountInformation.propertyTypeChoice === \"Multi-Unit\") {\r\n accountInfoPage = (\r\n <>\r\n \r\n {navigation.SetBackOnClick(() => change('updatePropertyTypeChoice'))}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !props.accountInformation.howManyUnitsChoice\r\n )}\r\n \r\n );\r\n } else if (props.accountInformation.loanPurposeChoice === \"Purchase\" && currentStep === AccountInformationStep.ClosingDate) {\r\n var backPage =\r\n props.accountInformation.howManyUnitsChoice === undefined ? (\r\n navigation.SetBackOnClick(() => change('updatePropertyTypeChoice'))) :\r\n (navigation.SetBackOnClick(() => change('updateHowManyUnitsChoice')));\r\n accountInfoPage = (\r\n <>\r\n \r\n {backPage}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !props.accountInformation.closingDateChoice\r\n )}\r\n \r\n );\r\n } else if (props.accountInformation.loanPurposeChoice === \"Refinance\" && currentStep === AccountInformationStep.PriorityChoice) {\r\n var backPage =\r\n props.accountInformation.howManyUnitsChoice === undefined ? (\r\n navigation.SetBackOnClick(() => change('updatePropertyTypeChoice'))) :\r\n (navigation.SetBackOnClick(() => change('updateHowManyUnitsChoice')));\r\n accountInfoPage = (\r\n <>\r\n \r\n {backPage}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !props.accountInformation.priorityChoice\r\n )}\r\n \r\n );\r\n } else if (!props.accountInformation.initialAccountInformationSubmitted || (props.accountInformation.initialAccountInformationSubmitted && !isSuccessfullySubmitted)) {\r\n let backPage = props.accountInformation.priorityChoice === undefined ? (navigation.SetBackOnClick(() => change('updateClosingDateChoice'))) : (navigation.SetBackOnClick(() => change('updatePriorityChoice')));\r\n accountInfoPage = (\r\n <>\r\n {isError &&\r\n \r\n \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Error\")}>Error

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"An unexpected error occurred.\")}>An unexpected error occurred.

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n {props.accountInformation.isLoading &&\r\n (
    \r\n
    \r\n
    \r\n )}\r\n {backPage}\r\n \r\n );\r\n } else if (props.accountInformation.initialAccountInformationSubmitted && isSuccessfullySubmitted) {\r\n accountInfoPage = (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Account Creation\")}>Account Creation

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Thank you! Please follow the link below to finish setting up your account.\")}>Thank you! Please follow the link below to finish setting up your account.

    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {navigation.HideNavigation()}\r\n
    \r\n );\r\n }\r\n\r\n renderTemplate =
    {accountInfoPage}
    ;\r\n \r\n return (\r\n <>\r\n {isLoading ?
    : renderTemplate}\r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n\r\n updateLoanPurposeChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateLoanPurposeChoice(value));\r\n },\r\n updateUserId: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateUserId(value));\r\n },\r\n updateOccupancyTypeChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateOccupancyTypeChoice(value));\r\n },\r\n updatePropertyTypeChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updatePropertyTypeChoice(value));\r\n },\r\n updateClosingDateChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateClosingDateChoice(value));\r\n },\r\n updatePriorityChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updatePriorityChoice(value));\r\n },\r\n updateHowManyUnitsChoice: (value?: AccountInformationInterfaces.HowManyUnitsChoices) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateHowManyUnitsChoice(value));\r\n },\r\n updateBorrowerFirstName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerFirstName(value));\r\n },\r\n updateBorrowerMiddleName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerMiddleName(value));\r\n },\r\n updateBorrowerLastName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerLastName(value));\r\n },\r\n updateBorrowerNameSuffix: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerNameSuffix(value));\r\n },\r\n updateBorrowerEmail: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerEmail(value));\r\n },\r\n updateBorrowerPhoneNumber: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerPhoneNumber(value));\r\n },\r\n submitInitialAccountInformation: (value: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.submitInitialAccountInformation(value));\r\n },\r\n setLoanGuid: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.setLoanGuid(value));\r\n },\r\n IsLoading: (value?: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.IsLoading(value));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(LoanUpdateResponseActions.loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n accountInformationCheck: (value: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.accountInformationCheck(value));\r\n },\r\n setInterimLoanStagingId: (value?: number) => {\r\n dispatch(loanActionCreators.setInterimLoanStagingId(value));\r\n },\r\n setIsLoanFromEncompassFlag: (value?: boolean) => {\r\n dispatch(loanActionCreators.setIsLoanFromEncompassFlag(value));\r\n },\r\n setIsLoanCompleted: (value?: boolean) => {\r\n dispatch(loanActionCreators.setIsLoanCompleted(value));\r\n }\r\n});\r\n\r\nfunction mapStateToProps(state: ApplicationState) {\r\n\r\n const userAccountInformation: UserAccountState | undefined = state.userAccountInformation;\r\n\r\n const accountInformation: AccountInformationState | undefined = state.accountInformation;\r\n\r\n return {\r\n accountInformation,\r\n userAccountInformation\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AccountInformation as any);","import * as React from \"react\";\r\nimport NumberFormat from 'react-number-format';\r\nimport { withReadOnlyWrapper } from \"./withReadOnlyWrapper\";\r\n\r\ntype NumberFormatInputProps = {\r\n label?: string;\r\n value: number;\r\n id?: string;\r\n disabled?: boolean;\r\n placeholder?: string;\r\n};\r\n\r\nconst NumberFormatInputComponent = (props: NumberFormatInputProps) => {\r\n\r\n const label = (\r\n <>\r\n \r\n  \r\n \r\n );\r\n return (\r\n
    \r\n {props.label && label}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport const NumberFormatInput = withReadOnlyWrapper(NumberFormatInputComponent) as any;","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { debounce } from \"lodash\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport borrowerInfoGraphic from \"assets/infographics/accountInformation/borrower-info.svg\";\r\nimport styles from \"./AccountInformation.module.scss\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport Checkbox from \"components/common/Input/Checkbox\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { AccountInformationState } from \"../../store/accountInformationStore\";\r\nimport * as accountInformationService from \"../../services/accountInformationService\";\r\nimport { Modal, ModalBody } from \"reactstrap\";\r\nimport { AsYouType } from \"libphonenumber-js\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ninterface BorrowerInformationProps {\r\n updateBorrowerFirstName: (value: string) => any;\r\n updateBorrowerMiddleName: (value: string) => any;\r\n updateBorrowerLastName: (value: string) => any;\r\n updateBorrowerNameSuffix: (value: string) => any;\r\n updateBorrowerEmail: (value: string) => any;\r\n updateBorrowerPhoneNumber: (value: string) => any;\r\n submitInitialAccountInformation: (value: boolean) => any;\r\n borrowerFirstName?: string;\r\n borrowerMiddleName?: string;\r\n borrowerLastName?: string;\r\n borrowerNameSuffix?: string;\r\n borrowerEmail?: string;\r\n borrowerPhoneNumber?: string;\r\n}\r\n\r\nconst BorrowerInformation = (props: BorrowerInformationProps) => {\r\n const { register, handleSubmit, errors } = useForm();\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const navigation = useNavigation();\r\n const [checked, setChecked] = useState(false);\r\n const [isEmailDuplicate, setEmailDuplicate] = useState(false);\r\n const [numbers, setNumbers] = React.useState(\"\");\r\n const [modal, setModal] = React.useState(false);\r\n const accountInfo = useSelector((state: ApplicationState) => state.accountInformation as AccountInformationState);\r\n let pattern = /^[0-9=?A-Z^a-z`{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n let phoneNumberPattern = /^\\(?(\\d{3})\\)?[-\\. ]?(\\d{3})[-\\. ]?(\\d{4})$/;\r\n\r\n const returnDisabled = () => {\r\n let isDisabled = false;\r\n if (isNullOrUndefined(props.borrowerFirstName) || props.borrowerFirstName == \"\" || isEmailDuplicate ||\r\n isNullOrUndefined(props.borrowerLastName) || props.borrowerLastName == \"\" ||\r\n isNullOrUndefined(props.borrowerPhoneNumber) || props.borrowerPhoneNumber == \"\" ||\r\n !phoneNumberPattern.test(props.borrowerPhoneNumber) ||\r\n isNullOrUndefined(props.borrowerEmail) || props.borrowerEmail == \"\" || !pattern.test(props.borrowerEmail) || !checked || accountInfo.isLoading\r\n ) {\r\n isDisabled = true;\r\n }\r\n return isDisabled;\r\n }\r\n useEffect(() => {\r\n navigation.ShowContinue(() => {\r\n inputField.current?.click();\r\n }, returnDisabled());\r\n }, [props.borrowerFirstName, props.borrowerLastName, props.borrowerEmail, props.borrowerPhoneNumber, checked, accountInfo.isLoading]);\r\n\r\n const inputField = useRef(null);\r\n\r\n const updateFirstName = debounce(\r\n (firstName: string) => props.updateBorrowerFirstName(firstName),\r\n 1000\r\n );\r\n const updateMiddleName = debounce(\r\n (middleName: string) => props.updateBorrowerMiddleName(middleName),\r\n 1000\r\n );\r\n const updateLastName = debounce(\r\n (lastName: string) => props.updateBorrowerLastName(lastName),\r\n 1000\r\n );\r\n const updateNameSuffix = debounce(\r\n (nameSuffix: string) => props.updateBorrowerNameSuffix(nameSuffix),\r\n 1000\r\n );\r\n const updateBorrowerPhoneNumber = (phoneNumber: string) => {\r\n setNumbers(phoneNumber.replace(\"(\", \"\").replace(\")\", \"\").replace(\"-\", \"\").replace(\" \", \"\"))\r\n props.updateBorrowerPhoneNumber(phoneNumber)\r\n }\r\n\r\n\r\n const updateEmail = (email: string) => {\r\n props.updateBorrowerEmail(email)\r\n accountInformationService.duplicateEmailCheck(email ?? \"\").then((res) => {\r\n setEmailDuplicate(res.parsedBody ? true : false);\r\n setModal(res.parsedBody ? true : false);\r\n });\r\n };\r\n\r\n const onSubmit = (data: any) => {\r\n props.submitInitialAccountInformation(true);\r\n };\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n <>\r\n { isEmailDuplicate &&\r\n \r\n \r\n
    \r\n

    Duplicate email found..

    \r\n

    This email is already registered with us, Please try to login or register with another different email.

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Borrower Information')}>Borrower Information

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Tell us a little more about yourself')}>Tell us a little more about yourself.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n updateFirstName(e.target.value)}\r\n name=\"firstName\"\r\n ref={register({\r\n required: \"First name is required.\",\r\n maxLength: { value: 30, message: \"The value entered exceeds the maximum length requirement.\" },\r\n })}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n updateMiddleName(e.target.value)}\r\n name=\"middleName\"\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n updateLastName(e.target.value)}\r\n name=\"lastName\"\r\n ref={register({\r\n required: \"Last name is required.\",\r\n maxLength: { value: 30, message: \"The value entered exceeds the maximum length requirement.\" },\r\n })}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n updateNameSuffix(e.target.value)}\r\n name=\"nameSuffix\"\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { updateBorrowerPhoneNumber(values.formattedValue.trim()) }}\r\n />\r\n {\r\n (props.borrowerPhoneNumber === \"\" || numbers.length > 1 && numbers.length < 10) && Invalid number.\r\n \r\n }\r\n
    \r\n
    \r\n \r\n updateEmail(e.target.value)}\r\n name=\"email\"\r\n ref={register({\r\n required: \"Email is required.\",\r\n pattern: {\r\n value: /^[0-9=?A-Z^a-z`{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/,\r\n message: \"The email address is invalid. Please enter a valid email address.\",\r\n },\r\n })}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n setChecked(e);\r\n }}\r\n checked={checked}\r\n name=\"authCheck\"\r\n reference={register({\r\n required:\r\n \"You must select the authorization check box before you can continue.\",\r\n })}\r\n />\r\n stopSpeech()} onMouseOver={() => textToSpeech('By clicking CONTINUE, you are authorizing Union Home Mortgage Corp and its affiliates to deliver to you telemarketing promotions for products and /or services in addition to those for which you are applying. Such telemarketing may include automatic telephone dialing system or an artificial or prerecorded voice and text messages to the phone numbers you provided above. You are not required to sign this agreement as a condition of purchasing any property, goods or services')}>\r\n By clicking “CONTINUE”, you are authorizing Union Home Mortgage Corp and\r\n its affiliates to deliver to you telemarketing promotions for products\r\n and/or services in addition to those for which you are applying. Such\r\n telemarketing may include automatic telephone dialing system or an\r\n artificial or prerecorded voice and text messages to the phone numbers\r\n you provided above. You are not required to sign this agreement as a\r\n condition of purchasing any property, goods or services.\r\n \r\n
    \r\n \r\n
    \r\n\r\n {/* Hidden button for form submission on continue click */}\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\ninterface ErrorMessageProps {\r\n message: string | undefined | null;\r\n}\r\n\r\nconst ErrorMessage = (props: ErrorMessageProps) => {\r\n return (\r\n <>{props.message &&
    {props.message}
    }\r\n );\r\n};\r\n\r\nexport default BorrowerInformation;","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction } from '../store/loanStore';\r\n\r\nexport const loanActionCreators = {\r\n setLoanGuid: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetLoanGuid, loanGuid: value });\r\n },\r\n setIsLoanCompleted: (value?: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetIsLoanCompleted, isLoanCompleted: value });\r\n },\r\n setIsLoanFromEncompassFlag: (value?: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetIsLoanFromEncompassFlag, isLoanFromEncompassFlag: value });\r\n },\r\n setInterimLoanStagingId: (value?: number): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetInterimLoanStagingId, interimLoanStagingId: value });\r\n }\r\n}","export enum BorrowerTypeEnum {\r\n Borrower = \"Borrower\",\r\n CoBorrower = \"CoBorrower\",\r\n Both = \"Both\"\r\n}","import React from \"react\";\r\nimport largeIcon from \"assets/infographics/eConsent/girlWithPurpleFolderAndGreenPaper.svg\";\r\n\r\nimport Infographic from \"components/common/Infographic\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst EConsentPreview = (props: { borrowerFirstName: string; advance: () => void }) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Hi' + props.borrowerFirstName + '! Please review and accept the Electronic Consent Agreement to view or sign documents electronically')}>\r\n Hi {props.borrowerFirstName}! Please review and accept the Electronic Consent\r\n Agreement to view or sign documents electronically.\r\n

    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default EConsentPreview;\r\n","import React from \"react\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\nconst EConsentAgreementText = () => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n } \r\n return (\r\n
    \r\n
    \r\n stopSpeech()} onMouseOver={() => textToSpeech(\"Your Consent To Do Business Electronically (the eDisclosure Agreement)\")}>\r\n Your Consent To Do Business Electronically (the eDisclosure Agreement)\r\n \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Your loan(s) involve various disclosures, records, and documents ('Loan Documents'), including this eBusiness Agreement. This eBusiness Agreement allows (1) Union Home Mortgage Corp. ('UHM', 'Our', 'Us', or 'We') to send Your Loan Documents in electronic rather than in paper form, (2) You to sign and authorize Your Loan Documents electronically, rather than on paper, and (3) Us and Our affiliated companies ('Partner Providers') to communicate, advertise and Market Our product and/or servicing offerings with You (collectively, 'Share Products')\")}>\r\n Your loan(s) involve various disclosures, records, and documents (\"Loan\r\n Documents\"), including this eBusiness Agreement. This eBusiness Agreement allows\r\n (1) Union Home Mortgage Corp. (\"UHM\", \"Our\", \"Us\", or \"We\") to send Your Loan\r\n Documents in electronic rather than in paper form, (2) You to sign and authorize\r\n Your Loan Documents electronically, rather than on paper, and (3) Us and Our\r\n affiliated companies (\"Partner Providers\") to communicate, advertise and Market\r\n Our product and/or servicing offerings with You (collectively, \"Share Products\").\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"For purposes of this eBusiness Agreement, 'eDocuments' means the Loan Documents related to this transaction that We may provide electronically and at all stages of Your mortgage loan, including pre - approval, pre - qualification, application, origination, closing and servicing. 'You' and 'Your' means any and all individuals who are financially liable on the mortgage loan, including applicants and those who can revoke consent\")}>\r\n For purposes of this eBusiness Agreement, \"eDocuments\" means the Loan Documents\r\n related to this transaction that We may provide electronically and at all stages\r\n of Your mortgage loan, including pre-approval, pre-qualification, application,\r\n origination, closing and servicing. \"You\" and \"Your\" means any and all individuals\r\n who are financially liable on the mortgage loan, including applicants and those\r\n who can revoke consent.\r\n

    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"YOUR CONSENT\")}>YOUR CONSENT
    \r\n
      \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"'Market' means You expressly allow Us and / or Partner Providers to contact You (1) about Your mortgage loan(s) and(2) to share information about products and services offered by Partner Providers.You agree that UHM and Partner Providers may provide such information through and including, but not limited to, mail, email, and phone(including calls or text messages to a cellular or mobile device)\")}>\r\n \"Market\" means You expressly allow Us and/or Partner Providers to contact You\r\n (1) about Your mortgage loan(s) and (2) to share information about products and\r\n services offered by Partner Providers. You agree that UHM and Partner Providers\r\n may provide such information through and including, but not limited to, mail,\r\n email, and phone (including calls or text messages to a cellular or mobile\r\n device).\r\n
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"Your Consent applies to all loans for which You made an application with Us. Your Consent (1) extends to all individuals on this loan and account ('All Users'), (2) affirms you can consent for All Users, and (3) allows All Users to access each other’s related loan information\")}>\r\n Your Consent applies to all loans for which You made an application with Us.\r\n Your Consent (1) extends to all individuals on this loan and account (\"All\r\n Users\"), (2) affirms you can consent for All Users, and (3) allows All Users to\r\n access each other’s related loan information.\r\n
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"If a document related to Your loan is not available in electronic form, a paper copy will be provided to You free of charge\")}>\r\n If a document related to Your loan is not available in electronic form, a paper\r\n copy will be provided to You free of charge.\r\n
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"If You do not consent to this eBusiness Agreement, or wish to Withdraw Your Consent, UHM will provide Your future Loan Documents in paper form\")}>\r\n If You do not consent to this eBusiness Agreement, or wish to Withdraw Your\r\n Consent, UHM will provide Your future Loan Documents in paper form. \r\n
    • \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"PAPER COPIES, HOW TO WITHDRAW YOUR CONSENT, CHANGE OF CONTACT INFORMATION\")}>PAPER COPIES, HOW TO WITHDRAW YOUR CONSENT, CHANGE OF CONTACT INFORMATION
    \r\n
      \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"You can withdraw Your Consent, request paper copies, or change Your Contact Information by notifying Us. Your request to withdraw Your Consent should identify you and your account, and should let us know which Contact Methods you would prefer Us to stop using\")}>\r\n You can withdraw Your Consent, request paper copies, or change Your Contact\r\n Information by notifying Us. Your request to withdraw Your Consent should\r\n identify you and your account, and should let us know which Contact Methods you\r\n would prefer Us to stop using:\r\n
        \r\n
      • \r\n
        stopSpeech()} onMouseOver={() => textToSpeech(\"Phone: 440-234-4300\")}>Phone: 440-234-4300
        \r\n
        stopSpeech()} onMouseOver={() => textToSpeech(\"Address: 8241 Dow Circle W, Strongsville, OH 44136\")}>Address: 8241 Dow Circle W, Strongsville, OH 44136
        \r\n
      • \r\n
      • \r\n
        stopSpeech()} onMouseOver={() => textToSpeech(\"Telephone: 440-234-4300; or\")}>Telephone: 440-234-4300; or
        \r\n
        stopSpeech()} onMouseOver={() => textToSpeech(\"In Writing: 8241 Dow Circle W, Strongsville, OH 44136\")}>In Writing: 8241 Dow Circle W, Strongsville, OH 44136
        \r\n
      • \r\n
      \r\n
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"Please be sure to notify Us right away if Your Contact Information has changed. We are not responsible for Your inability to access Your Loan Documents unless you ensure that Your Contact Information is accurate at all times\")}>\r\n Please be sure to notify Us right away if Your Contact Information has changed.\r\n We are not responsible for Your inability to access Your Loan Documents unless\r\n you ensure that Your Contact Information is accurate at all times.\r\n
    • \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"You will not be required to pay a fee for withdrawing consent and receiving paper copies of the Loan Documents\")}>\r\n You will not be required to pay a fee for withdrawing consent and receiving paper\r\n copies of the Loan Documents.\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Phone: 440-234-4300, Address: 8241 Dow Circle W, Strongsville, OH 44136\")}>\r\n Phone: 440-234-4300
    \r\n Address: 8241 Dow Circle W, Strongsville, OH 44136\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"You will not be required to pay a fee for receiving paper copies of the Loan Documents\")}>You will not be required to pay a fee for receiving paper copies of the Loan Documents.

    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"SOFTWARE OR HARDWARE REQUIREMENTS\")}>SOFTWARE OR HARDWARE REQUIREMENTS
    \r\n
      \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"A computer with Internet access\")}>A computer with Internet access
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"An email account\")}>An email account
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"An Internet browser using 128-bit encryption or higher\")}>An Internet browser using 128-bit encryption or higher
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"A PDF reader (such as Adobe Acrobat DC, available for free)\")}>A PDF reader (such as Adobe Acrobat DC, available for free)
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"SSL encryption\")}>SSL encryption
    • \r\n
    • stopSpeech()} onMouseOver={() => textToSpeech(\"Printer access\")}>Printer access
    • \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"If Software or Hardware Requirements change, We will notify You\")}>If Software or Hardware Requirements change, We will notify You.

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"If you click 'I agree', You Consent to do business with Us electronically and accept this eBusiness Agreement.Otherwise, click 'I Decline'\")}>\r\n If you click \"I agree\", You Consent to do business with Us electronically and\r\n accept this eBusiness Agreement. Otherwise, click \"I Decline\"\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default EConsentAgreementText;\r\n","import { Modal, ModalBody } from \"reactstrap\";\r\nimport styles from \"./eConsentDocument.module.scss\";\r\nimport React, { useState } from \"react\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport largeIcon from \"assets/infographics/eConsent/girlWithPurpleDressAndSpiralsAroundHer.svg\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface ConsentDialogProps {\r\n hasClosedDialog: (value: boolean) => any;\r\n}\r\n\r\nconst ConsentDialog = (props: ConsentDialogProps) => {\r\n const [modal, setModal] = useState(true);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n const closeModal = (doNotWantToConsent: boolean) => {\r\n setModal(false);\r\n props.hasClosedDialog(doNotWantToConsent);\r\n };\r\n\r\n return (\r\n closeModal(false)}\r\n centered={true}\r\n className={styles.eConsentModal}\r\n contentClassName={styles.eConsentModalContent}\r\n returnFocusAfterClose={false}\r\n >\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Are you sure')}>Are you sure?

    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('If you do not provide eConsent, you will not be able to continue applying for a Loan Application.Are you sure you do not want to eConsent')}>\r\n If you do not provide eConsent, you will not be able to continue applying for\r\n a Loan Application. Are you sure you do not want to eConsent?\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ConsentDialog;\r\n","import React, { useRef, useState, useEffect } from \"react\";\r\n\r\ninterface BottomScrollValidatorProps {\r\n hasReachedBottom: () => any;\r\n className?: string;\r\n children?: any;\r\n}\r\n\r\nconst BottomScrollValidator = (props: BottomScrollValidatorProps) => {\r\n const listInnerRef = useRef(null);\r\n\r\n const [reachedBottom, setReachedBottom] = useState(false);\r\n\r\n const hasReachedBottom = () => setReachedBottom(true);\r\n\r\n useEffect(() => {\r\n if (reachedBottom) {\r\n props.hasReachedBottom();\r\n }\r\n }, [reachedBottom]);\r\n\r\n const onScroll = () => {\r\n if (listInnerRef.current) {\r\n const { scrollTop, scrollHeight, clientHeight } = listInnerRef.current as any;\r\n if (scrollTop + clientHeight > scrollHeight - 1) {\r\n hasReachedBottom();\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
    onScroll()} ref={listInnerRef}>\r\n {props.children}\r\n
    \r\n );\r\n};\r\n\r\nexport default BottomScrollValidator;\r\n","import { ResponseDto } from \"common/models/ResponseDto\";\r\nimport { post, get } from \"../common/dataFetch\";\r\nimport { BorrowerTypeEnum } from \"../components/common/Enums/BorrowerTypeEnum\";\r\n\r\nexport const eConsent = (guid: any, borrowerType: any, hasConsented: boolean, interimLoanStagingId:number) => {\r\n\treturn post>(\"api/EConsent/SetLoanEConsent\", {\r\n\t\tLoanGuid: guid,\r\n\t\tBorrowerType: borrowerType === BorrowerTypeEnum.CoBorrower ? 2 : 1,\r\n\t\tUserHasConsented: hasConsented,\r\n\t\tInterimLoanStagingId: interimLoanStagingId\r\n\t});\r\n};\r\n\r\nexport const generateSignedEConsentDocument = (guid: any, borrowerType: any, currentTimestamp: any) => {\r\n\treturn post>(\"api/EConsent/GenerateSignedEConsentDocument\", {\r\n\t\tLoanGuid: guid,\r\n\t\tBorrowerType: borrowerType === BorrowerTypeEnum.CoBorrower ? 2 : 1,\r\n\t\tCurrentTimestamp: currentTimestamp\r\n\t});\r\n};\r\nexport const UpdateSsnFields = (loanGuid: any) => {\r\n\treturn get>(`api/EConsent/UpdateSsnFields?loanGuid=${loanGuid}`);\r\n};","import React, { useState } from \"react\";\r\nimport styles from \"./eConsentDocument.module.scss\";\r\nimport AgreementText from \"./eConsentAgreementText\";\r\nimport Dialog from \"./eConsentDialog\";\r\nimport BottomScrollValidator from \"components/common/BottomScrollValidator\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { eConsent, generateSignedEConsentDocument, UpdateSsnFields } from \"services/eConsentService\";\r\nimport { ApplicationState } from \"store\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { AccountInformationState } from \"store/accountInformationStore\";\r\nimport { UserAccountState } from \"store/userAccountStore\";\r\nimport { BackgroundEngine } from \"../../common/BackgroundTaskTimer\";\r\nimport { loanState } from \"../../../store/loanStore\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst EConsentDocument = (props: { advance: () => void, setUserConsent: (value: boolean) => void }) => {\r\n const [isEConsented, setEConsent] = useState<{ value: null | boolean }>({ value: null });\r\n\r\n const [readAgreement, setReadAgreement] = useState(false);\r\n const [showDialog, setShowDialog] = useState(false);\r\n const [showLoading, setShowLoading] = useState(false);\r\n const hasReadAgreement = () => setReadAgreement(true);\r\n const { loanGuid } = useSelector((state: ApplicationState) => state.accountInformation as AccountInformationState);\r\n const { borrowerType } = useSelector((state: ApplicationState) => state.userAccountInformation as UserAccountState);\r\n const { isLoanFromEncompassFlag } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n const { interimLoanStagingId } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n const history = useHistory();\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n const saveEConsent = async (hasConsented: boolean) => {\r\n setShowLoading(true);\r\n await eConsent(loanGuid, borrowerType, hasConsented, interimLoanStagingId??0).then((response: any) => {\r\n if (!response.hasError && response.parsedBody != null && response.parsedBody.body != null) {\r\n\r\n setShowLoading(false);\r\n if (response.parsedBody?.body === null) {\r\n history.push(\"/system-unavailable\");\r\n }\r\n else if (hasConsented == false || response.parsedBody?.body == null) {\r\n history.push(\"/\");\r\n }\r\n else {\r\n //generateSignedEConsentDocument(loanGuid, borrowerType, response.parsedBody.body?.item2);\r\n BackgroundEngine.TriggerOnceImmediate();\r\n\r\n props.setUserConsent(true);\r\n props.advance();\r\n }\r\n }\r\n else {\r\n console.error(\"Error in eConsent: \", eConsent);\r\n }\r\n });\r\n };\r\n\r\n const dialogResponse = async (doNotWantToConsent: boolean) => {\r\n setShowDialog(false);\r\n if (doNotWantToConsent) {\r\n await saveEConsent(false);\r\n }\r\n };\r\n\r\n const updateSsnFieldInEncomapss = async () => {\r\n if (!isNullOrUndefined(isLoanFromEncompassFlag) && isLoanFromEncompassFlag) {\r\n UpdateSsnFields(loanGuid ?? \"\");\r\n history.push({ pathname: \"/contact-preference\" })\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {showDialog && }\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Thanks! You're Almost Set\")}>Thanks! You're Almost Set.

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Please fully review the eConsent agreement below')} className={styles.consentQuestionLabel}>\r\n Please fully review the eConsent agreement below.\r\n

    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Electronic Consent Agreement')} className=\"align-center\">Electronic Consent Agreement

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {showLoading && (\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default EConsentDocument;\r\n","import { get, post } from \"../common/dataFetch\";\r\nimport { Borrower } from \"../store/accountCreationStore\";\r\nimport { BorrowerTypeEnum } from \"../common/BorrowerTypeEnum\";\r\n\r\nexport const getStates = () => {\r\n return get(\"BorrowerInformation/getStates\");\r\n};\r\n\r\nexport const create = (borrowerDto: Borrower, userType: any) => {\r\n const userTypeEnum = userType === BorrowerTypeEnum.CoBorrower ? 2 : 1;\r\n return post(`BorrowerInformation/UpsertAsync?userType=${userTypeEnum}`, borrowerDto);\r\n};\r\n\r\nexport const getBorrowerInformation = (borrowerType: string, interimLoanStagingId:number) => {\r\n return get(`BorrowerInformation/ReadByInterimIdAsync?borrowerType=${borrowerType}&&interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const checkIsEConsentResetRequired = (loanGuid: string, userType: any) => {\r\n const userTypeEnum = userType === BorrowerTypeEnum.CoBorrower ? 2 : 1;\r\n return post(`BorrowerInformation/CheckIsEConsentResetRequiredAsync?loanGuid=${loanGuid}&&userType=${userTypeEnum}`, null);\r\n};\r\n\r\nexport const createBorrowerLoanDetailAsync = (borrowerDto: Borrower) => {\r\n return post(`BorrowerInformation/CreateBorrowerLoanDetailAsync`, borrowerDto);\r\n};\r\n\r\nexport const updateBorrowerInformationAsync = (borrowerDto: Borrower) => {\r\n return post(`BorrowerInformation/UpdateBorrowerInformationAsync`, borrowerDto);\r\n};\r\n","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as AccountCreationStore from \"../store/accountCreationStore\";\r\nimport { KnownAction } from '../store/accountCreationStore';\r\nimport * as accountCreationService from \"../services/accountCreationService\";\r\n\r\nconst setValidation = (validationError: any, field: string): AccountCreationStore.KnownAction => {\r\n return { type: ActionTypes.SetBorrowerValidation, validationError, field };\r\n}\r\n\r\nexport const accountCreationActionCreators = {\r\n updateAddressMoveInDate: (year: number, month: number, borrowerType: AccountCreationStore.BorrowerType, addressType: AccountCreationStore.AddressType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateAddressMoveInDate, moveInYear: year, moveInMonth: month, borrowerType: borrowerType, addressType: addressType });\r\n },\r\n updateBorrowerProperty: (value: any, propertyName: string, borrowerType: AccountCreationStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerProperty, value: value, propertyName: propertyName, borrowerType: borrowerType });\r\n },\r\n updateBorrowerAddressProperty: (value: string, propertyName: string, borrowerType: AccountCreationStore.BorrowerType, addressType: AccountCreationStore.AddressType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerAddressProperty, value: value, propertyName: propertyName, borrowerType: borrowerType, addressType: addressType });\r\n },\r\n AddAddressProperty: (address: AccountCreationStore.Address, borrowerType: AccountCreationStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.AddAddressProperty, address: address, borrowerType: borrowerType });\r\n },\r\n EditAddressProperty: (address: AccountCreationStore.Address, borrowerType: AccountCreationStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.EditAddressProperty, address: address, borrowerType: borrowerType });\r\n },\r\n DeleteAddressProperty: (id: string, borrowerType: AccountCreationStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.DeleteAddressProperty, id: id, borrowerType: borrowerType });\r\n },\r\n UpdateOktaResult: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateOktaResult, oktaNameResult: value});\r\n },\r\n SetAddressSameAsBorrower: (addressType: AccountCreationStore.AddressType, value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetAddressSameAsBorrower, addressType: addressType, value: value });\r\n },\r\n getBorrowerInformation: (borrowerType: string, interimLoanStagingId:number): AppThunkAction => (dispatch) => {\r\n accountCreationService.getBorrowerInformation(borrowerType, interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem.\");\r\n }\r\n return response.parsedBody as AccountCreationStore.Borrower;\r\n }).then((data: any) => {\r\n dispatch({ type: ActionTypes.GetBorrowerInformation, data: data, borrowerType: borrowerType });\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n },\r\n\r\n UpdateBorrowerInformation: (borrowerInformation: AccountCreationStore.Borrower, userType: any): AppThunkAction => (dispatch) => {\r\n accountCreationService.create(borrowerInformation, userType)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem.\");\r\n }\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n },\r\n\r\n setValidation: (error: any, field: string): AppThunkAction => (dispatch) => {\r\n dispatch(setValidation(error, field));\r\n },\r\n\r\n ResetFormerAddress: (borrowerType: AccountCreationStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.ResetFormerAddress, borrowerType: borrowerType });\r\n },\r\n\r\n updateBorrowerCurrentState: (borrowerInformation: AccountCreationStore.Borrower, borrowerType: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.GetBorrowerInformation, data: borrowerInformation, borrowerType });\r\n },\r\n}","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction } from '../store/userAccountStore';\r\n\r\nexport const userAcountActionCreators = {\r\n updateUserFirstName: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateUserFirstName, firstName: value });\r\n },\r\n updateUserLastName: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateUserLastName, lastName: value });\r\n },\r\n updateUserEmail: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateUserEmail, email: value });\r\n },\r\n updateUserBorrowerType: (value?: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateUserBorrowerType, borrowerType: value });\r\n },\r\n updateUserConsent: (value?: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateUserConsent, hasConsent: value });\r\n },\r\n isLoancreated: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.IsLoancreated, isLoancreated: value });\r\n }\r\n}","import { get } from \"../common/dataFetch\";\r\n\r\nexport const readLoanSummary = (email: string) => {\r\n return get(`api/InterimLoanSummary/ReadInterimLoanSummary?email=${email}`);\r\n};\r\nexport const ReadLoanOfficerDetailByInterimLoanStagingAsync = (interimId: any) => {\r\n return get(`api/InterimLoanSummary/ReadLoanOfficerDetailByInterimLoanStagingAsync?interimId=${interimId}`);\r\n};\r\nexport const ReadActiveLoanUserDetail = (interimLoanStagingId: number) => {\r\n return get(`api/InterimLoanSummary/ReadActiveLoanUserDetail?interimLoanStagingId=${interimLoanStagingId}`);\r\n};","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { LoanSummaryState, KnownAction, InterimLoanSummary, LoanOfficerDetail } from \"../store/interimLoanSummaryStore\";\r\nimport * as loanSummaryService from \"../services/interimLoanSummaryService\";\r\n\r\nexport const interimLoanSummaryActionCreators = {\r\n\r\n\r\n setInterimLoanSummary: (data: LoanSummaryState): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.ReceiveInterimLoanSummary, data: data });\r\n },\r\n\r\n setCurrentInterimLoanSummary: (data: InterimLoanSummary): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetCurrentInterimLoanSummary, data: data });\r\n },\r\n\r\n getLoanOfficerDetail: (id: number): AppThunkAction => async (dispatch) => {\r\n await loanSummaryService.ReadLoanOfficerDetailByInterimLoanStagingAsync(id)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting interimLoanSummary .\");\r\n }\r\n return response.parsedBody as LoanOfficerDetail;\r\n })\r\n .then((data: any) => {\r\n dispatch({ type: ActionTypes.ReceiveLoanOfficerDetail, data: data });\r\n });\r\n },\r\n\r\n\r\n getInterimLoanSummary: (email: string): AppThunkAction => async (dispatch) => {\r\n\r\n await loanSummaryService.readLoanSummary(email).then((response: any) => {\r\n if (response.status != 200) {\r\n return;\r\n }\r\n return response.parsedBody as InterimLoanSummary[];\r\n }).then((data: any) => {\r\n\r\n let stateData: LoanSummaryState = {\r\n loanSummary: data,\r\n currentLoanSummary: data[0],\r\n }\r\n dispatch({ type: ActionTypes.ReceiveUpdatedInterimLoanSummary, data: stateData });\r\n \r\n });\r\n \r\n }\r\n\r\n};","import React, { useState, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport Preview from \"../preview/eConsentPreview\";\r\nimport DocumentForm from \"../document/eConsentDocument\";\r\nimport styles from \"./eConsent.module.scss\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { ApplicationState } from \"store\";\r\nimport * as TaskMenuActions from \"../../../actions/taskMenuAction\";\r\nimport { LoanSummaryDto } from \"../../../store/taskMenuStore\";\r\nimport { dashboardActionCreators } from \"../../../actions/dashboardActions\";\r\nimport * as accountCreationActions from \"../../../actions/accountCreationActions\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { DashboardInformation } from \"../../../store/dashboardStore\";\r\nimport * as userAcountActions from \"../../../actions/userAcount\";\r\nimport { UserAccountState } from \"../../../store/userAccountStore\";\r\nimport { loanState } from \"../../../store/loanStore\";\r\nimport { interimLoanSummaryActionCreators } from \"../../../actions/interimLoanSummaryActions\";\r\nimport { InterimLoanSummary } from \"../../../store/interimLoanSummaryStore\";\r\n\r\ntype EConsentProps = {\r\n loanGuid: string;\r\n loanSummary: LoanSummaryDto;\r\n dashboardInformation: DashboardInformation;\r\n userAccountInformation: UserAccountState;\r\n updateUserConsent: (value: boolean) => any;\r\n borrowerType: any;\r\n isLoading: false;\r\n interimLoanStagingId: number;\r\n interimLoanSummaryList: InterimLoanSummary[];\r\n oktaNameResult: any;\r\n borrowerInformation: any;\r\n coborrowerInformation: any;\r\n} & typeof TaskMenuActions.TaskMenuCreators & typeof dashboardActionCreators & typeof interimLoanSummaryActionCreators\r\n & typeof userAcountActions.userAcountActionCreators & typeof accountCreationActions.accountCreationActionCreators;\r\n\r\nconst EConsent = (props: EConsentProps) => {\r\n const [step, setStep] = useState(0);\r\n const [showPreview, setShowPreview] = useState(false);\r\n const [showDoc, setShowDoc] = useState(false);\r\n const history = useHistory();\r\n const { isLoanFromEncompassFlag } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.HideNavigation();\r\n });\r\n\r\n React.useEffect(() => {\r\n if (props.loanGuid && props.interimLoanStagingId && props.interimLoanStagingId > 0) {\r\n props.getDashboardDetails(props.loanGuid, props.borrowerType);\r\n props.borrowerLoanSummary(props.loanGuid, props.interimLoanStagingId);\r\n }\r\n if (props.oktaNameResult) {\r\n if (props.borrowerType === \"Borrower\") {\r\n props.updateUserFirstName(props.borrowerInformation.firstName)\r\n props.updateUserLastName(props.borrowerInformation.lastName)\r\n } else {\r\n props.updateUserFirstName(props.coborrowerInformation.firstName);\r\n props.updateUserLastName(props.coborrowerInformation.lastName);\r\n }\r\n props.UpdateOktaResult(false);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (step === 1) {\r\n navigation.SetBackOnClick(() => {\r\n setStep(0);\r\n navigation.ResetNavigation();\r\n });\r\n }\r\n setShowPreview(step === 0);\r\n setShowDoc(step === 1);\r\n }, [step]);\r\n\r\n const navigateToNextStep = async (nextStep: number) => {\r\n\r\n //Update loan summary data first\r\n if (props.userAccountInformation.email) {\r\n await props.getInterimLoanSummary(props.userAccountInformation.email);\r\n }\r\n\r\n if (nextStep === 2 && props.borrowerType === \"CoBorrower\" && !isLoanFromEncompassFlag) {\r\n history.push({ pathname: \"/dashboard\" });\r\n }\r\n else if (nextStep == 2 && props.borrowerType === \"Borrower\" && !isLoanFromEncompassFlag) {\r\n if (props.interimLoanSummaryList.length > 0) {\r\n console.log(\"IN eConsent.tsx for step 2 and Borrower\");\r\n props.setCurrentInterimLoanSummary(props.interimLoanSummaryList[0]);\r\n }\r\n history.push({ pathname: \"/create-account\", state: { args: \"borrower\" } });\r\n }\r\n else {\r\n setStep(nextStep);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {(showPreview && !props.isLoading) && (\r\n { navigateToNextStep(1); }} />\r\n )}\r\n {showDoc && (\r\n { navigateToNextStep(2); }}\r\n setUserConsent={props.updateUserConsent}\r\n />\r\n )}\r\n
    \r\n {props.isLoading &&
    }\r\n\r\n
    \r\n );\r\n};\r\n\r\n\r\nfunction mapStateToProps(state: ApplicationState) {\r\n const { accountInformation, taskMenu, dashboard, userAccountInformation, interimLoanSummary, accountCreation } = state;\r\n const loanGuid = accountInformation?.loanGuid;\r\n const dashboardInformation = dashboard?.dashboardInformation;\r\n const borrowerInformation = accountCreation?.borrower;\r\n const coborrowerInformation = accountCreation?.coBorrower;\r\n const loanSummary = taskMenu?.loanSummary;\r\n const borrowerType = userAccountInformation?.borrowerType;\r\n const isLoading = dashboard?.isLoading;\r\n const interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n const interimLoanSummaryList = interimLoanSummary?.loanSummary;\r\n const oktaNameResult = state.accountCreation?.oktaNameResult;\r\n return {\r\n loanGuid,\r\n loanSummary,\r\n dashboardInformation,\r\n userAccountInformation,\r\n borrowerType,\r\n isLoading,\r\n interimLoanStagingId,\r\n interimLoanSummaryList,\r\n oktaNameResult, borrowerInformation,\r\n coborrowerInformation\r\n };\r\n}\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getDashboardDetails: (loanGuid: string, borrowerType: string) => {\r\n dispatch(dashboardActionCreators.getDashboardDetails(loanGuid, borrowerType));\r\n },\r\n borrowerLoanSummary: (loanGuid: string, interimLoanStagingId: number) => {\r\n dispatch(TaskMenuActions.TaskMenuCreators.borrowerLoanSummary(loanGuid, interimLoanStagingId));\r\n },\r\n updateUserConsent: (value?: boolean) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserConsent(value));\r\n },\r\n getInterimLoanSummary: async (email: string) => {\r\n dispatch(interimLoanSummaryActionCreators.getInterimLoanSummary(email));\r\n },\r\n setCurrentInterimLoanSummary: (data: InterimLoanSummary) => {\r\n dispatch(interimLoanSummaryActionCreators.setCurrentInterimLoanSummary(data));\r\n },\r\n updateUserFirstName: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserFirstName(value));\r\n },\r\n updateUserLastName: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserLastName(value));\r\n },\r\n UpdateOktaResult: (value: boolean) => {\r\n dispatch(accountCreationActions.accountCreationActionCreators.UpdateOktaResult(value));\r\n }\r\n});\r\n\r\nexport default connect((state: ApplicationState) => mapStateToProps(state),\r\n mapDispatchToProps)(EConsent as any) as any;\r\n","import { useState, useEffect } from 'react';\r\nimport * as accountInformationService from \"../../services/accountInformationService\";\r\n\r\nconst initBeforeUnLoad = (showExitPrompt: boolean) => {\r\n window.onbeforeunload = (event: any) => {\r\n const shouldPrompt =\r\n window.location.pathname !== \"/\" &&\r\n window.location.pathname !== \"/account-information\" &&\r\n window.location.pathname !== \"/sign-in\";\r\n\r\n if (showExitPrompt && shouldPrompt) {\r\n const e = event || window.event;\r\n e.preventDefault();\r\n if (e) {\r\n e.returnValue = '';\r\n }\r\n return '';\r\n }\r\n };\r\n};\r\n\r\nexport interface PromptActions {\r\n setPromptValue: (borrowerType: any, loanGuid: any,interimLoanStagingId:number) => void;\r\n enablePrompt: (value: boolean) => void;\r\n}\r\n\r\nexport function useExitPrompt(): PromptActions {\r\n const [showExitPrompt, setShowExitPrompt] = useState(false);\r\n const [value, setValue] = useState({ loanGuid: \"\", borrowerType: \"\", interimLoanStagingId:0 });\r\n\r\n var actions: PromptActions = {\r\n setPromptValue: (borrowerType: any, loanGuid: any, interimLoanStagingId:number) => {\r\n setValue({ borrowerType: borrowerType, loanGuid: loanGuid, interimLoanStagingId: interimLoanStagingId });\r\n },\r\n enablePrompt: (value: boolean) => {\r\n setShowExitPrompt(value);\r\n }\r\n }\r\n window.onload = function () {\r\n initBeforeUnLoad(showExitPrompt);\r\n };\r\n\r\n window.onunload = function () {\r\n const response = accountInformationService.signOut(value.borrowerType, value.loanGuid, value.interimLoanStagingId);\r\n sleep(5000);\r\n if (response) {\r\n console.log(\"Logged out from system!\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n initBeforeUnLoad(showExitPrompt);\r\n }, [showExitPrompt]);\r\n\r\n return actions;\r\n}\r\n\r\nfunction sleep(delay: any) {\r\n var start = new Date().getTime();\r\n while (new Date().getTime() < start + delay);\r\n}\r\n","import * as React from \"react\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { loanState } from \"../../store/loanStore\";\r\nimport * as userAcountActions from \"../../actions/userAcount\";\r\nimport { accountInformationActionCreators } from \"../../actions/accountInformationActions\";\r\nimport { signIn, checkIsEncompassDown, createUserLoanDetailInformationEntry, readIsLoanFromEncompass } from '../../services/accountInformationService';\r\nimport { updateNavigationStatus } from '../../services/taskMenuService';\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport * as AccountInformationActions from \"../../actions/accountInformationActions\";\r\nimport { loanActionCreators } from \"../../actions/loanActions\";\r\nimport * as AccountInformationStore from \"../../store/accountInformationStore\";\r\nimport { Cookies } from 'react-cookie';\r\nimport { useOktaAuth } from \"@okta/okta-react\";\r\nimport Loading from \"../common/Loader\";\r\nimport { getLoanCompletedStatus } from '../../services/taskMenuService';\r\nimport { useExitPrompt } from 'components/common/useExitPrompt';\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport * as LoanUpdateResponseActions from \"../../actions/loanUpdateResponseActions\";\r\nimport * as accountInformationService from \"../../services/accountInformationService\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { appConfigAsync } from \"../../authConfig\";\r\nimport { TaskItem, SubTaskItem, TaskStatusId } from \"../common/progressTracker/TaskStatus\";\r\nimport { BackgroundEngine } from \"../common/BackgroundTaskTimer\";\r\nimport { IAccountInformationProps } from \"../../store/accountInformationStore\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport * as loanSummaryService from \"../../services/interimLoanSummaryService\";\r\nimport { InterimLoanSummary, LoanOfficerDetail, LoanSummaryState } from \"../../store/interimLoanSummaryStore\";\r\nimport { interimLoanSummaryActionCreators } from \"../../actions/interimLoanSummaryActions\";\r\n\r\n\r\ninterface IRegistrationProps {\r\n updateUserBorrowerType: (value: string) => any,\r\n updateUserConsent: (value: boolean) => any,\r\n updateUserEmail: (value: string) => any;\r\n updateUserFirstName: (value: string) => any;\r\n updateUserLastName: (value: string) => any;\r\n setLoanGuid: (value: any) => any;\r\n setIsLoanCompleted: (value: any) => any;\r\n setIsLoanFromEncompassFlag: (value: any) => any;\r\n}\r\n\r\ntype SignInProps = AccountInformationStore.AccountInformationState\r\n & typeof AccountInformationActions.accountInformationActionCreators & typeof LoanUpdateResponseActions.loanUpdateResponseActionCreators\r\n & typeof loanActionCreators & typeof userAcountActions.userAcountActionCreators & typeof interimLoanSummaryActionCreators\r\n & IRegistrationProps;\r\n\r\nconst SignIn = (props: SignInProps) => {\r\n const { authState, oktaAuth } = useOktaAuth();\r\n const navigation = useNavigation(() => { navigation.HideNavigation(); });\r\n const history = useHistory();\r\n const location = useLocation();\r\n const [signInError, setSignInError] = React.useState(false);\r\n const [signInErrorMsg, setSignInErrorMsg] = React.useState({});\r\n const loan = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n const [isEncompassDown, setEncompassDown] = React.useState(false);\r\n\r\n const [isLoading, setLoading] = React.useState(false);\r\n const account = useSelector((state: ApplicationState) => state.accountInformation as AccountInformationStore.AccountInformationState);\r\n let prompt = useExitPrompt();\r\n\r\n const signOut = () => {\r\n setSignInError(false);\r\n prompt.enablePrompt(false);\r\n oktaAuth.signOut();\r\n }\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n prompt.enablePrompt(true);\r\n }\r\n });\r\n const navigateToeConsent = () => {\r\n history.push({ pathname: \"/econsent\" });\r\n }\r\n\r\n const returnBorrowerTypeEnum = (param: any) => {\r\n switch (param) {\r\n case BorrowerTypeEnum.CoBorrower:\r\n return 'Co-Borrower';\r\n default:\r\n return param;\r\n }\r\n }\r\n\r\n const setCookie = (key: string, value: any) => {\r\n const cookies = new Cookies();\r\n var endOfTime = \"Fri, 31 Dec 9999 23:59:59 GMT\";\r\n var endOfTimeDate = new Date(endOfTime);\r\n cookies.set(key, value, { expires: endOfTimeDate });\r\n }\r\n\r\n const loanCreation = async () => {\r\n let accountInformation: IAccountInformationProps = {\r\n noOfUnits: account.howManyUnitsChoice,\r\n borrowerEmailAddress: account.borrowerEmail,\r\n loanPurpose: account.loanPurposeChoice,\r\n userId: account.userId,\r\n occupancyType: account.occupancyTypeChoice,\r\n propertyType: account.propertyTypeChoice,\r\n purchaseClosingDate: account.closingDateChoice,\r\n refinancePriority: account.priorityChoice,\r\n borrowerFirstName: account.borrowerFirstName,\r\n borrowerLastName: account.borrowerLastName,\r\n borrowerPhoneNumber: account.borrowerPhoneNumber,\r\n borrowerMiddleName: account.borrowerMiddleName,\r\n borrowerNameSuffix: account.borrowerNameSuffix\r\n };\r\n\r\n props.IsLoading(true);\r\n await accountInformationService.create(accountInformation, account.loanGuid)\r\n .then((response: any) => {\r\n if (response.status != 200) {\r\n return;\r\n }\r\n let result = response.parsedBody as LoanUpdateResponseState;\r\n if (result.isEncompassDown || result.loanGuid === null || result.loanGuid === \"\") {\r\n console.log(\"Encompass service is down or loanGuid not present\");\r\n history.push({ pathname: \"/system-unavailable\" });\r\n return;\r\n }\r\n\r\n if (accountInformation.userId == undefined) {\r\n accountInformation.userId = \"\";\r\n }\r\n\r\n props.IsLoading(false);\r\n\r\n if (result.loanGuid === \"Email id already registered\" || result.isEncompassDown) {\r\n props.submitInitialAccountInformation(false);\r\n }\r\n else {\r\n props.setLoanGuid(result.loanGuid);\r\n props.setInterimLoanStagingId(result.interimLoanStagingId);\r\n }\r\n\r\n return result;\r\n })\r\n .catch((error: Error) => {\r\n console.error(\"Error occurred during loan creation: \", error);\r\n });\r\n }\r\n\r\n const signInAndNavigateToNextStep = async (payload: any) => {\r\n const userInfo = payload.userInfo as any;\r\n const email = userInfo[\"email\"];\r\n if (email) {\r\n const firstname = userInfo[\"given_name\"];\r\n const lastname = userInfo[\"family_name\"];\r\n props.updateUserEmail(email);\r\n\r\n props.updateBorrowerEmail(email);\r\n\r\n props.updateUserFirstName(firstname);\r\n props.updateUserLastName(lastname);\r\n props.updateUserBorrowerType(payload.borrowerType);\r\n\r\n //Save borrower info for live-chat\r\n setCookie(\"BorrowerFirstName\", firstname);\r\n setCookie(\"BorrowerLastName\", lastname);\r\n\r\n let loanGuid = loan.loanGuid ?? \"\";\r\n let interimLoanStagingId = loan.interimLoanStagingId ?? 0;\r\n if ((payload.action === \"invitation\" ||payload.invitation === \"invitation\") && payload.borrowerType === BorrowerTypeEnum.CoBorrower) {\r\n await createUserLoanDetailInformationEntry(email, firstname, lastname, payload.loanGuid, payload.borrowerType);\r\n }\r\n\r\n if (payload.action === \"invitation\" || !isNullOrWhiteSpace(payload.loanGuid)) {\r\n loanGuid = payload.loanGuid;\r\n props.setLoanGuid(loanGuid);\r\n props.setInterimLoanStagingId(interimLoanStagingId);\r\n }\r\n else if (payload.action === \"SSO\") {\r\n history.push({ pathname: \"/ecc\", search: location.state.qs, state: location.state });\r\n return;\r\n }\r\n\r\n let isMultipleLoanExist = false;\r\n await loanSummaryService.readLoanSummary(email).then((response: any) => {\r\n if (response.status != 200) {\r\n return;\r\n }\r\n return response.parsedBody as InterimLoanSummary[];\r\n }).then(async (result: any) => {\r\n\r\n if (result.length < 1) {\r\n\r\n const msg =
    \r\n

    No loan found for the signed in account

    \r\n

    Click HERE to apply for a Loan Application.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n\r\n return;\r\n }\r\n\r\n\r\n if (result.length > 1) {\r\n isMultipleLoanExist = true;\r\n }\r\n\r\n let stateData: LoanSummaryState = {\r\n loanSummary: result,\r\n currentLoanSummary: result[0],\r\n loanOfficerDetail: {}\r\n }\r\n props.setInterimLoanSummary(stateData);\r\n\r\n }).catch((error: Error) => {\r\n console.error(\"Error occurred while reading InterimLoanSummary data\", error);\r\n });\r\n\r\n\r\n checkIsEncompassDown().then(async res => {\r\n if (res.ok) {\r\n\r\n let result = res.parsedBody as boolean;\r\n if (!result) {\r\n await appConfigAsync().then(async (config: any) => {\r\n if (config?.PosConstant?.IsLoginLoanCreation && account.accountInformationCheck && !props.isLoancreated) {\r\n await loanCreation();\r\n }\r\n });\r\n\r\n let loanId;\r\n let consentStatus: any;\r\n let isLoanCompleted: any;\r\n\r\n await signIn(email, payload.borrowerType, firstname, lastname, loanGuid).then(async res => {\r\n setLoading(false);\r\n if (res.ok && res.body) {\r\n const userInfoFromDb = res.parsedBody as any;\r\n loanId = userInfoFromDb.loanGuid;\r\n consentStatus = userInfoFromDb.consentStatus;\r\n\r\n BackgroundEngine.InitializeAndRun(userInfoFromDb.loanGuid);\r\n updateNavigationStatus(TaskItem.BorrowerInformation, SubTaskItem.BorrowerInformation, TaskStatusId.InProgress, TaskStatusId.InProgress, userInfoFromDb.loanGuid);\r\n\r\n\r\n prompt.setPromptValue(userInfoFromDb.borrowerType === 2 ? BorrowerTypeEnum.CoBorrower : BorrowerTypeEnum.Borrower, userInfoFromDb.loanGuid, userInfoFromDb.interimLoanStagingId);\r\n if (userInfoFromDb.isLoanLocked) {\r\n const msg =
    \r\n

    **Loan locked: {returnBorrowerTypeEnum(userInfoFromDb.lockedBy)} is already working on the loan. Please wait a few minutes before trying again.

    \r\n

    Click {\r\n retrySignIn();\r\n setLoading(true);\r\n }}>HERE to retry.

    \r\n\r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n return;\r\n }\r\n\r\n if (payload.action === \"create-account\") {\r\n history.push({ pathname: \"/econsent\" });\r\n return;\r\n }\r\n\r\n if (payload.action === \"sign-in\" || payload.action === \"invitation\") {\r\n if (userInfoFromDb.loanGuid) {\r\n props.setLoanGuid(userInfoFromDb.loanGuid);\r\n props.setInterimLoanStagingId(userInfoFromDb.interimLoanStagingId);\r\n props.updateUserEmail(userInfoFromDb.email);\r\n props.updateUserFirstName(userInfoFromDb.firstName);\r\n props.updateUserLastName(userInfoFromDb.lastName);\r\n props.updateUserBorrowerType(userInfoFromDb.borrowerType === 2 ? \"CoBorrower\" : \"Borrower\");\r\n props.updateUserConsent(userInfoFromDb.consentStatus === \"Accepted\");\r\n\r\n if (isMultipleLoanExist) {\r\n history.push({ pathname: \"/loan-view\" });\r\n return;\r\n }\r\n\r\n //IN case of single loan\r\n if (userInfoFromDb.consentStatus === \"Rejected\") {\r\n const msg =
    \r\n

    You have rejected the eConsent, you cannot continue applying for a Loan Application until you have agreed to the eConsent. Please contact your loan officer for further assistance

    \r\n

    Click HERE to continue for eConsent.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n return;\r\n }\r\n\r\n if (userInfoFromDb.consentStatus === \"PrimaryRejected\") {\r\n const msg =
    \r\n

    The primary borrower has rejected the eConsent, you cannot continue applying for a Loan Application until the primary borrower has agreed to the eConsent. Please contact your loan officer for further assistance

    \r\n

    Click HERE to continue.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n return;\r\n }\r\n\r\n \r\n\r\n //getLoanCompletedStatus(userInfoFromDb.loanGuid).then(response => {\r\n // isLoanCompleted = response.parsedBody;\r\n // props.setIsLoanCompleted(response.parsedBody);\r\n //});\r\n\r\n if (userInfoFromDb.consentStatus === \"Accepted\") {\r\n history.push({ pathname: \"/dashboard\" });\r\n return;\r\n }\r\n\r\n history.push({ pathname: \"/econsent\" });\r\n return;\r\n }\r\n\r\n const msg =
    \r\n

    No loan found for the signed in account

    \r\n

    Click HERE to apply for a Loan Application.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n }\r\n } else {\r\n console.error(`An unexpected error has occurred: ${res}`);\r\n const msg =
    \r\n

    An unexpected error has occurred

    \r\n

    Click HERE to retry.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n }\r\n })\r\n\r\n //To check whether loan is already created from the encompass\r\n if (!isNullOrUndefined(loanId) && !isMultipleLoanExist) {\r\n readIsLoanFromEncompass(loanId)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"Unable to fetch loan from encompass flag.\");\r\n }\r\n return response.parsedBody as any;\r\n })\r\n .then(data => {\r\n props.setIsLoanFromEncompassFlag(data);\r\n\r\n if (!isNullOrUndefined(isLoanCompleted) && data) {\r\n if (!isNullOrUndefined(consentStatus) && consentStatus !== \"Accepted\") {\r\n history.push({ pathname: \"/econsent\" });\r\n }\r\n else if (!isLoanCompleted) {\r\n history.push({ pathname: \"/contact-preference\" });\r\n }\r\n else if (isLoanCompleted) {\r\n history.push({ pathname: \"/dashboard\" });\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n console.log(error.message);\r\n });\r\n }\r\n }\r\n else {\r\n console.error(\"SignIn.tsx -> Encompass is down\");\r\n props.setIsEncompassDown(true);\r\n history.push({ pathname: \"/system-unavailable\" });\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n const isUserAuthenticated = authState && authState.isAuthenticated;\r\n\r\n const processLogIn = () => {\r\n if (isUserAuthenticated) {\r\n //Clear borrower info for live-chat\r\n setCookie(\"BorrowerFirstName\", \"\");\r\n setCookie(\"BorrowerLastName\", \"\");\r\n\r\n oktaAuth.getUser().then((user) => {\r\n const payload = { ...location.state, userInfo: user };\r\n signInAndNavigateToNextStep(payload);\r\n }).catch((error: Error) => {\r\n console.error(\"getUser\", error);\r\n signOut();\r\n });\r\n }\r\n }\r\n\r\n const retrySignIn = () => {\r\n processLogIn();\r\n }\r\n\r\n const registerNewLoan = () => {\r\n setSignInError(false);\r\n history.push({ pathname: \"/account-information\" });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (location.state == undefined) {\r\n signOut();\r\n return;\r\n }\r\n\r\n if (location.state.action === \"password-reset\") {\r\n const msg =
    \r\n

    A password reset instruction was sent to your email address.

    \r\n

    Click HERE to continue.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n return;\r\n }\r\n\r\n processLogIn();\r\n }, [authState]);\r\n\r\n return (\r\n
    \r\n {isUserAuthenticated && !signInError && !isEncompassDown &&\r\n \r\n }\r\n\r\n {signInError &&\r\n
    \r\n {signInErrorMsg}\r\n {isLoading &&
    }\r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateUserBorrowerType: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserBorrowerType(value));\r\n },\r\n updateUserConsent: (value?: boolean) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserConsent(value));\r\n },\r\n updateUserEmail: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserEmail(value));\r\n },\r\n updateUserFirstName: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserFirstName(value));\r\n },\r\n updateUserLastName: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserLastName(value));\r\n },\r\n setLoanGuid: (value?: string) => {\r\n dispatch(accountInformationActionCreators.setLoanGuid(value));\r\n },\r\n setInterimLoanStagingId: (value?: number) => {\r\n dispatch(loanActionCreators.setInterimLoanStagingId(value));\r\n },\r\n setIsLoanCompleted: (value?: boolean) => {\r\n dispatch(loanActionCreators.setIsLoanCompleted(value));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(LoanUpdateResponseActions.loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n submitInitialAccountInformation: (value: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.submitInitialAccountInformation(value));\r\n },\r\n IsLoading: (value?: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.IsLoading(value));\r\n },\r\n setIsLoanFromEncompassFlag: (value?: boolean) => {\r\n dispatch(loanActionCreators.setIsLoanFromEncompassFlag(value));\r\n },\r\n setInterimLoanSummary: async (data: LoanSummaryState) => {\r\n await dispatch(interimLoanSummaryActionCreators.setInterimLoanSummary(data));\r\n },\r\n updateBorrowerEmail: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerEmail(value));\r\n },\r\n});\r\n\r\n\r\nexport default connect((state: ApplicationState) => state.userAccountInformation, mapDispatchToProps)(SignIn as any);\r\n","import * as React from \"react\";\r\nimport { connect, useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as AccountCreationActions from \"../../actions/accountCreationActions\";\r\nimport * as UserAcountActions from \"../../actions/userAcount\";\r\nimport * as AccountCreationStore from \"../../store/accountCreationStore\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport AddressConfirmation from \"components/accountCreation/AddressConfirmation\";\r\nimport additionalAddressInfographic from \"../../assets/infographics/accountCreation/2YearResidency.svg\";\r\nimport coBorrowerLandingInfographic from \"../../assets/infographics/accountCreation/coborrowerinformationPrompt.svg\";\r\nimport BorrowerInformation from \"components/accountCreation/BorrowerInformation\";\r\nimport AdditionalAddress from \"./AdditionalAddressNew\";\r\nimport * as accountCreationService from \"../../services/accountCreationService\";\r\nimport { UpdateUserOktaAccount } from \"../../services/accountInformationService\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport styles from \"./accountCreation.module.scss\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskItem, TaskStatusId, SubTaskItem } from \"../common/progressTracker/TaskStatus\";\r\nimport { dateDiff } from \"../../common/helper/formatHelper\";\r\nimport MessageBox from \"../common/MessageBox\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { BorrowerTypeEnum } from \"../../common/BorrowerTypeEnum\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype AccountCreationProps = AccountCreationStore.AccountCreationState & {\r\n loanGuid?: string,\r\n validation: any;\r\n history: any;\r\n isLoanCompleted: boolean;\r\n userType: any;\r\n interimLoanStagingId: number;\r\n} & typeof AccountCreationActions.accountCreationActionCreators & typeof UserAcountActions.userAcountActionCreators;\r\n\r\nexport enum AccountCreationStep {\r\n BorrowerInformation = 1,\r\n AddressConfirmation = 2,\r\n AskAdditionalAddress = 3,\r\n AdditionalAddress = 4,\r\n CoBorrowerPrompt = 5,\r\n CoBorrowerInformation = 6,\r\n CoBorrowerAddressConfirmation = 7,\r\n AskCoBorrowerAdditionalAddress = 8,\r\n CoBorrowerAdditionalAddress = 9,\r\n Finished = 10,\r\n CoborrowerFinished = 11\r\n}\r\nconst AccountCreation = (props: AccountCreationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [currentStep, changeStep] = React.useState(AccountCreationStep.BorrowerInformation);\r\n const [borrowerValid, setBorrowerValid] = React.useState(false);\r\n const [isborrowerComplete, setborrowerComplete] = React.useState(false);\r\n const [isCoborrowerComplete, setCoborrowerComplete] = React.useState(false);\r\n const [monthValid, setMonthValid] = React.useState(false);\r\n const [isLoading, setLoading] = React.useState(false);\r\n const [borrowerType, setBorrowerType] = React.useState(\"\");\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const navigation = useNavigation();\r\n const { history } = props;\r\n const [showResetEConsentMessage, setShowResetEConsentMessage] = React.useState(false);\r\n\r\n const actions = {\r\n ...bindActionCreators({ ...TaskMenuCreators, ...loanUpdateResponseActionCreators }, useDispatch())\r\n };\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n if (history.location.state?.args == \"coborrower\") {\r\n if (!history.location.state?.isBack) {\r\n changeStep(AccountCreationStep.CoBorrowerInformation);\r\n } else {\r\n changeStep(needAddtionalCoBorrowerAddress() ?\r\n AccountCreationStep.CoBorrowerAdditionalAddress : AccountCreationStep.CoBorrowerAddressConfirmation);\r\n }\r\n setBorrowerType(BorrowerTypeEnum.CoBorrower);\r\n }\r\n else if (history.location.state?.args == \"borrower\") {\r\n if (!history.location.state?.isBack) {\r\n changeStep(AccountCreationStep.BorrowerInformation);\r\n } else {\r\n changeStep(props.borrower.isCoBorrowerSelectionAllowed == true ? AccountCreationStep.CoBorrowerPrompt :\r\n (needAddtionalAddress() ? AccountCreationStep.AdditionalAddress : AccountCreationStep.AddressConfirmation));\r\n }\r\n setBorrowerType(BorrowerTypeEnum.Borrower);\r\n }\r\n }, [history.location]);\r\n\r\n React.useEffect(() => {\r\n if (props.loanGuid && borrowerType && props.interimLoanStagingId) {\r\n props.getBorrowerInformation(borrowerType, props.interimLoanStagingId);\r\n }\r\n }, [borrowerType]);\r\n\r\n const needAddtionalAddress = (): boolean => {\r\n let needAdditionalAddress = false;\r\n if (props.borrower.currentAddress &&\r\n props.borrower.currentAddress.moveInYear &&\r\n props.borrower.currentAddress.moveInMonth != undefined) {\r\n const currentAddressMoveIn = new Date(props.borrower.currentAddress.moveInYear, props.borrower.currentAddress.moveInMonth);\r\n const months = dateDiff(currentAddressMoveIn);\r\n\r\n if (months < 24) {\r\n needAdditionalAddress = true;\r\n }\r\n }\r\n return needAdditionalAddress;\r\n }\r\n\r\n const needAddtionalCoBorrowerAddress = (): boolean => {\r\n let needAdditionalAddress = false;\r\n if (props.coBorrower &&\r\n props.coBorrower?.currentAddress &&\r\n props.coBorrower.currentAddress.moveInYear &&\r\n props.coBorrower.currentAddress.moveInMonth != undefined) {\r\n let currentAddressMoveIn = new Date(props.coBorrower.currentAddress.moveInYear, props.coBorrower.currentAddress.moveInMonth);\r\n let months = dateDiff(currentAddressMoveIn);\r\n\r\n if (months < 24) {\r\n needAdditionalAddress = true;\r\n }\r\n }\r\n return needAdditionalAddress;\r\n }\r\n\r\n const resetFormerAddress = (borrType: AccountCreationStore.BorrowerType) => {\r\n props.ResetFormerAddress(borrType);\r\n changeStep(AccountCreationStep.BorrowerInformation);\r\n }\r\n\r\n const durationCalculation = (address: AccountCreationStore.Address): (AccountCreationStore.Address) => {\r\n if (address.moveInMonth != undefined && address.moveInYear) {\r\n let currentAddressMoveIn = new Date(address.moveInYear, address.moveInMonth - 1);\r\n let totalMonths = dateDiff(currentAddressMoveIn);\r\n\r\n address.durationTermYears = Math.floor(totalMonths / 12);\r\n address.durationTermMonths = totalMonths % 12;\r\n }\r\n return address;\r\n }\r\n\r\n const updateNavigation = (nav: string) => {\r\n if (!props.isLoanCompleted) {\r\n if (nav === BorrowerTypeEnum.CoBorrower) {\r\n actions.updateNavigationStatus(TaskItem.BorrowerInformation, SubTaskItem.BorrowerInformation, TaskStatusId.Completed,\r\n TaskStatusId.Completed, props.loanGuid);\r\n actions.updateNavigationStatus(TaskItem.CoBorrowerInformation, SubTaskItem.CoBorrowerInformation, TaskStatusId.InProgress,\r\n TaskStatusId.InProgress, props.loanGuid);\r\n } else if (nav === \"CreditInformation\") {\r\n actions.updateNavigationStatus(TaskItem.CoBorrowerInformation, SubTaskItem.CoBorrowerInformation, TaskStatusId.Completed,\r\n TaskStatusId.Completed, props.loanGuid);\r\n actions.updateNavigationStatus(TaskItem.CreditInformation, SubTaskItem.CreditInformation, TaskStatusId.InProgress,\r\n TaskStatusId.InProgress, props.loanGuid);\r\n }\r\n else if (nav === \"No\") {\r\n actions.updateNavigationStatus(TaskItem.BorrowerInformation, SubTaskItem.BorrowerInformation, TaskStatusId.Completed,\r\n TaskStatusId.Completed, props.loanGuid);\r\n actions.updateNavigationStatus(TaskItem.CreditInformation, SubTaskItem.CreditInformation, TaskStatusId.InProgress,\r\n TaskStatusId.InProgress, props.loanGuid);\r\n }\r\n }\r\n }\r\n\r\n const saveBorrowerInformation = (step: AccountCreationStep) => {\r\n if (props.isLoanCompleted) {\r\n if (props.borrower.printOnAdditionalBorrowerPage !== true && step == AccountCreationStep.Finished) {\r\n history.push({ pathname: \"/credit-authorization\" });\r\n }\r\n else if (step == AccountCreationStep.CoborrowerFinished) {\r\n history.push({ pathname: \"/credit-authorization\" });\r\n }\r\n changeStep(step);\r\n if (step === AccountCreationStep.CoBorrowerInformation) {\r\n history.replace({ state: { args: \"coborrower\" } });\r\n }\r\n return true;\r\n }\r\n\r\n setLoading(true);\r\n let borrowerData: AccountCreationStore.Borrower;\r\n actions.setLoanIsDirty(false);\r\n if (borrowerType === BorrowerTypeEnum.Borrower) {\r\n borrowerData = props.borrower;\r\n borrowerData.loanGuid = props.loanGuid;\r\n borrowerData.interimLoanStagingId = props.interimLoanStagingId;\r\n borrowerData.addresses = borrowerData.addresses?.filter(x => x.residencyType == \"Prior\");\r\n if (props.borrower?.currentAddress) {\r\n borrowerData.addresses?.push(durationCalculation(props.borrower?.currentAddress))\r\n }\r\n }\r\n else {\r\n borrowerData = props.coBorrower;\r\n borrowerData.loanGuid = props.loanGuid;\r\n borrowerData.interimLoanStagingId = props.interimLoanStagingId;\r\n borrowerData.addresses = borrowerData.addresses?.filter(x => x.residencyType == \"Prior\");\r\n if (props.coBorrower?.currentAddress) {\r\n borrowerData.addresses?.push(durationCalculation(props.coBorrower?.currentAddress))\r\n }\r\n }\r\n accountCreationService.create(borrowerData, props.userType)\r\n .then(async (response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating user information.\");\r\n }\r\n\r\n let result = response.parsedBody as boolean;\r\n\r\n if (borrowerType === BorrowerTypeEnum.CoBorrower) {\r\n accountCreationService.createBorrowerLoanDetailAsync(borrowerData);\r\n } else {\r\n if (props.borrower.isCoBorrowerSelectionAllowed == true) {\r\n if (props.borrower.printOnAdditionalBorrowerPage == true) {\r\n actions.deleteNavigationStatus(SubTaskItem.CreditInformation, props.loanGuid);\r\n } else if (props.borrower.printOnAdditionalBorrowerPage == false) {\r\n actions.deleteNavigationStatus(SubTaskItem.CoBorrowerInformation, props.loanGuid);\r\n }\r\n }\r\n }\r\n\r\n accountCreationService.updateBorrowerInformationAsync(borrowerData);\r\n return result;\r\n })\r\n .then((result: any) => {\r\n if (result != undefined && result != false && !result.isEncompassDown && borrowerData.loanGuid != undefined) {\r\n accountCreationService.checkIsEConsentResetRequired(borrowerData.loanGuid, borrowerType).then((eConsentResponse: any) => {\r\n if (eConsentResponse.parsedBody) {\r\n console.log(`eConsentResponse to loanGuid: ${result.loanGuid} and response: ${eConsentResponse.parsedBody}`);\r\n }\r\n\r\n if (step === AccountCreationStep.AddressConfirmation ||\r\n step === AccountCreationStep.CoBorrowerAddressConfirmation) {\r\n if (eConsentResponse.parsedBody === true && borrowerType == props.userType) {\r\n setShowResetEConsentMessage(prev => true);\r\n setLoading(false);\r\n return true;\r\n }\r\n }\r\n\r\n const currentBorrowerType = borrowerData.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? BorrowerTypeEnum.Borrower : BorrowerTypeEnum.CoBorrower;\r\n if (props.interimLoanStagingId) {\r\n props.getBorrowerInformation(currentBorrowerType, props.interimLoanStagingId);\r\n if (borrowerType == BorrowerTypeEnum.CoBorrower) {\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n }\r\n }\r\n\r\n if (step == AccountCreationStep.Finished || step == AccountCreationStep.CoborrowerFinished) {\r\n if (step == AccountCreationStep.CoborrowerFinished) {\r\n updateNavigation(\"CreditInformation\");\r\n }\r\n history.push({ pathname: \"/credit-authorization\" });\r\n }\r\n else {\r\n changeStep(step);\r\n }\r\n if (step === AccountCreationStep.CoBorrowerInformation) {\r\n history.replace({ state: { args: \"coborrower\" } });\r\n }\r\n setLoading(false);\r\n return result;\r\n })\r\n }\r\n })\r\n .catch((error: Error) => {\r\n setLoading(false);\r\n throw new Error(`Following error message occurred ${error.message}`);\r\n });\r\n\r\n return false;\r\n }\r\n\r\n const onBack = (currentStep: any, previousStep: any) => {\r\n if (currentStep === AccountCreationStep.BorrowerInformation) {\r\n resetFormerAddress(AccountCreationStore.BorrowerType.PrimaryBorrower);\r\n resetFormerAddress(AccountCreationStore.BorrowerType.CoBorrower);\r\n actions.setLoanIsDirty(false);\r\n history.push('/dashboard');\r\n } else if (previousStep === AccountCreationStep.CoBorrowerPrompt || currentStep === AccountCreationStep.CoBorrowerInformation) {\r\n history.replace({ state: { args: \"borrower\", isBack: true } });\r\n }\r\n changeStep(previousStep);\r\n };\r\n\r\n const showContinue = (currentStep: any) => {\r\n if (currentStep === AccountCreationStep.AddressConfirmation) {\r\n if ((props.borrower?.totalMonths ?? -1) < 0) {\r\n return true;\r\n } return false;\r\n }\r\n else if (currentStep === AccountCreationStep.CoBorrowerAddressConfirmation) {\r\n if ((props.coBorrower?.totalMonths ?? -1) < 0) {\r\n return true;\r\n } return false;\r\n }\r\n }\r\n\r\n const onContinue = (currentStep: any, nextStep: any) => {\r\n let callNextStep = true;\r\n if (nextStep === AccountCreationStep.CoborrowerFinished) {\r\n callNextStep = false;\r\n updateNavigation(\"CreditInformation\");\r\n saveBorrowerInformation(AccountCreationStep.CoborrowerFinished);\r\n }\r\n else if (currentStep === AccountCreationStep.BorrowerInformation && nextStep === AccountCreationStep.AddressConfirmation) {\r\n callNextStep = false;\r\n saveBorrowerInformation(AccountCreationStep.AddressConfirmation);\r\n }\r\n else if (currentStep === AccountCreationStep.AdditionalAddress) {\r\n if (props.borrower.isCoBorrowerSelectionAllowed == true) {\r\n nextStep = AccountCreationStep.CoBorrowerPrompt;\r\n } else {\r\n callNextStep = false;\r\n saveBorrowerInformation(props.borrower.printOnAdditionalBorrowerPage === true ?\r\n AccountCreationStep.CoBorrowerInformation : AccountCreationStep.Finished);\r\n }\r\n }\r\n else if (currentStep === AccountCreationStep.AddressConfirmation) {\r\n if (!needAddtionalAddress()) {\r\n if (props.borrower.isCoBorrowerSelectionAllowed == true) {\r\n nextStep = AccountCreationStep.CoBorrowerPrompt;\r\n } else {\r\n callNextStep = false;\r\n saveBorrowerInformation(props.borrower.printOnAdditionalBorrowerPage === true ?\r\n AccountCreationStep.CoBorrowerInformation : AccountCreationStep.Finished);\r\n }\r\n }\r\n else {\r\n nextStep = AccountCreationStep.AskAdditionalAddress;\r\n }\r\n }\r\n else if (currentStep === AccountCreationStep.CoBorrowerInformation && nextStep === AccountCreationStep.CoBorrowerAddressConfirmation) {\r\n saveBorrowerInformation(AccountCreationStep.CoBorrowerAddressConfirmation);\r\n callNextStep = false;\r\n }\r\n else if (currentStep == AccountCreationStep.CoBorrowerAddressConfirmation) {\r\n if (!needAddtionalCoBorrowerAddress()) {\r\n callNextStep = false;\r\n nextStep = AccountCreationStep.CoborrowerFinished;\r\n saveBorrowerInformation(AccountCreationStep.CoborrowerFinished);\r\n updateNavigation(\"CreditInformation\");\r\n }\r\n else\r\n nextStep = AccountCreationStep.AskCoBorrowerAdditionalAddress;\r\n }\r\n else if (currentStep === AccountCreationStep.Finished || currentStep === AccountCreationStep.CoborrowerFinished) {\r\n history.push({ pathname: \"/credit-authorization\" });\r\n }\r\n if (callNextStep) {\r\n changeStep(nextStep);\r\n }\r\n };\r\n\r\n const gotoEConsent = async () => {\r\n setShowResetEConsentMessage(false);\r\n if (props.userType === BorrowerTypeEnum.Borrower) {\r\n var result = await UpdateUserOktaAccount(props.borrower.emailAddressText ?? \"\", props.borrower.firstName ?? \"\", props.borrower.lastName ?? \"\")\r\n if (result.parsedBody) {\r\n props.UpdateOktaResult(result.parsedBody);\r\n }\r\n }\r\n else if (props.userType === BorrowerTypeEnum.CoBorrower) {\r\n var result = await UpdateUserOktaAccount(props.coBorrower.emailAddressText ?? \"\", props.coBorrower.firstName ?? \"\", props.coBorrower.lastName ?? \"\")\r\n if (result.parsedBody) {\r\n props.UpdateOktaResult(result.parsedBody);\r\n }\r\n } \r\n \r\n history.push({ pathname: \"/econsent\" });\r\n }\r\n\r\n let accountCreationPage = <>;\r\n\r\n if (currentStep === AccountCreationStep.BorrowerInformation) {\r\n accountCreationPage =\r\n <>\r\n \r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.BorrowerInformation, AccountCreationStep.AddressConfirmation),\r\n (props?.validation && Object.keys(props?.validation).length > 0) || !borrowerValid || isLoading || isEncompassDown\r\n )}\r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.BorrowerInformation, null)\r\n )}\r\n ;\r\n }\r\n else if (currentStep === AccountCreationStep.AddressConfirmation) {\r\n accountCreationPage =\r\n <>\r\n\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.AddressConfirmation, AccountCreationStep.BorrowerInformation)\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.AddressConfirmation, AccountCreationStep.AddressConfirmation),\r\n (showContinue(AccountCreationStep.AddressConfirmation) || !monthValid || isLoading || isEncompassDown)\r\n )}\r\n ;\r\n }\r\n else if (currentStep === AccountCreationStep.AskAdditionalAddress) {\r\n accountCreationPage =\r\n <>\r\n\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('We Need A Little More Information')}>We Need A Little More Information.

    \r\n\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('We need information from the past two years. Please take the time to fill out a few more fields.')}>We need information\r\n from the past two\r\n years. Please take the\r\n time to fill out a few\r\n more fields.\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.AskAdditionalAddress, AccountCreationStep.AddressConfirmation)\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.AskAdditionalAddress, AccountCreationStep.AdditionalAddress),\r\n isEncompassDown\r\n )}\r\n
    \r\n ;\r\n }\r\n else if (currentStep === AccountCreationStep.AdditionalAddress) {\r\n accountCreationPage =\r\n <>\r\n\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.AdditionalAddress, AccountCreationStep.AskAdditionalAddress)\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.AdditionalAddress,\r\n (props.borrower.printOnAdditionalBorrowerPage === undefined || props.borrower.printOnAdditionalBorrowerPage === null) ?\r\n AccountCreationStep.CoBorrowerPrompt : AccountCreationStep.CoBorrowerInformation),\r\n !isborrowerComplete || isLoading || isEncompassDown\r\n )}\r\n ;\r\n }\r\n else if (currentStep === AccountCreationStep.CoBorrowerPrompt) {\r\n accountCreationPage =\r\n <>\r\n\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Thank you for the information')}>Thank you for the information!

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Will you have a Co-Borrower on this loan')}>Will you have a Co-Borrower on this loan?

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ;\r\n {\r\n navigation.SetBackOnClick(\r\n () => {\r\n onBack(AccountCreationStep.AddressConfirmation,\r\n needAddtionalAddress() ? AccountCreationStep.AdditionalAddress : AccountCreationStep.AddressConfirmation)\r\n }\r\n )\r\n navigation.ShowContinue(() => {\r\n saveBorrowerInformation(props.borrower.printOnAdditionalBorrowerPage ? AccountCreationStep.CoBorrowerInformation :\r\n AccountCreationStep.Finished);\r\n updateNavigation(props.borrower.printOnAdditionalBorrowerPage ? \"CoBorrower\" : \"No\");\r\n }, props.borrower?.printOnAdditionalBorrowerPage === undefined || props.borrower?.printOnAdditionalBorrowerPage === null || isLoading || isEncompassDown)\r\n }\r\n }\r\n else if (currentStep === AccountCreationStep.CoBorrowerInformation) {\r\n accountCreationPage =\r\n <>\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.CoBorrowerInformation, props.borrower.isCoBorrowerSelectionAllowed == true ? AccountCreationStep.CoBorrowerPrompt :\r\n (needAddtionalAddress() ? AccountCreationStep.AdditionalAddress : AccountCreationStep.AddressConfirmation))\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.CoBorrowerInformation, AccountCreationStep.CoBorrowerAddressConfirmation),\r\n (props?.validation && Object.keys(props?.validation).length > 0) || !borrowerValid || isLoading || isEncompassDown\r\n )}\r\n ;\r\n }\r\n else if (currentStep === AccountCreationStep.CoBorrowerAddressConfirmation) {\r\n accountCreationPage =\r\n <>\r\n\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.CoBorrowerAddressConfirmation, AccountCreationStep.CoBorrowerInformation),\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.CoBorrowerAddressConfirmation, AccountCreationStep.CoBorrowerAddressConfirmation),\r\n (showContinue(AccountCreationStep.CoBorrowerAddressConfirmation) ||\r\n !monthValid || isLoading || isEncompassDown)\r\n )}\r\n ;\r\n }\r\n else if (currentStep === AccountCreationStep.AskCoBorrowerAdditionalAddress) {\r\n accountCreationPage =\r\n <>\r\n\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('We Need A Little More Information')}>We Need A Little More Information.

    \r\n\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('We need information from the past two years.Please take the time to fill out a few more fields')}>We need information\r\n from the past two\r\n years. Please take the\r\n time to fill out a few\r\n more fields.\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.AskCoBorrowerAdditionalAddress, AccountCreationStep.CoBorrowerInformation)\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.AskCoBorrowerAdditionalAddress, AccountCreationStep.CoBorrowerAdditionalAddress),\r\n isEncompassDown\r\n )}\r\n
    \r\n ;\r\n }\r\n else if (currentStep === AccountCreationStep.CoBorrowerAdditionalAddress) {\r\n accountCreationPage =\r\n <>\r\n\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack(AccountCreationStep.CoBorrowerAdditionalAddress, AccountCreationStep.CoBorrowerAddressConfirmation),\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(AccountCreationStep.CoBorrowerAdditionalAddress, AccountCreationStep.CoborrowerFinished),\r\n !isCoborrowerComplete || isLoading || isEncompassDown\r\n )}\r\n ;\r\n }\r\n\r\n return
    \r\n {accountCreationPage}\r\n {isLoading &&
    }\r\n {showResetEConsentMessage &&\r\n gotoEConsent()}\r\n >\r\n }\r\n\r\n
    ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const isLoanCompleted = state.loan?.isLoanCompleted;\r\n const userType = state.userAccountInformation?.borrowerType;\r\n let validation = state.accountCreation?.validation;\r\n if (state && state.accountCreation?.borrower) {\r\n validation = state.accountCreation?.validation;\r\n }\r\n return state.accountInformation ?\r\n {\r\n ...state.accountCreation,\r\n loanGuid: state.accountInformation.loanGuid ?? \"\",\r\n interimLoanStagingId: state.loan?.interimLoanStagingId ?? 0,\r\n validation,\r\n isLoanCompleted,\r\n userType\r\n } :\r\n state.accountCreation;\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n (AccountCreationActions.accountCreationActionCreators)\r\n)(AccountCreation as any);","import * as React from \"react\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport datePickerStyles from \"./CustomDatePicker.module.scss\";\r\nimport { getMonth, getYear } from 'date-fns';\r\nimport dropDownStyles from \"../common/Input/SelectDropDown.module.scss\";\r\n\r\nconst CustomYearMonthPicker = (props: {\r\n handleChange: (month: number, year: number) => void,\r\n fieldValue: Date | null | undefined,\r\n className?: string,\r\n popperPlacement: boolean,\r\n maxDate?: Date,\r\n disabled: boolean,\r\n defaultYear?: number,\r\n defaultMonth?: number,\r\n format: string,\r\n placeholderText: string\r\n}) => {\r\n const [years] = React.useState([...Array(51).keys()].map(i => i + new Date().getFullYear() - 50).reverse());\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const dateChange = (value: any) => {\r\n props.handleChange(getMonth(value ? value : props.fieldValue), getYear((value ? value : props.fieldValue)));\r\n }\r\n const yearChange = (value: any) => {\r\n props.handleChange(getMonth(value), value);\r\n }\r\n\r\n return (\r\n
    \r\n (\r\n
    \r\n \r\n
    \r\n { yearChange(Number(value)); changeYear(Number(value)) }}>\r\n {years.map((option: any) => (\r\n \r\n ))}\r\n \r\n
    \r\n \r\n
    \r\n )}\r\n className={`${datePickerStyles.input}`}\r\n onChange={(date: any, e: any) => {\r\n dateChange(e.target.value ? e.target.value : date);\r\n setIsOpen(false);\r\n }}\r\n open={isOpen}\r\n maxDate={props.maxDate}\r\n showMonthYearPicker\r\n />\r\n !props.disabled ? setIsOpen(!isOpen) : setIsOpen(isOpen)}\r\n >\r\n
    \r\n );\r\n};\r\nexport default CustomYearMonthPicker;","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as AccountCreationActions from \"../../actions/accountCreationActions\";\r\nimport * as AccountCreationStore from \"../../store/accountCreationStore\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport currentAddressInfographic from \"../../assets/infographics/accountCreation/current-address.svg\";\r\nimport CustomYearMonthPicker from \"../common/CustomYearMonthPicker\";\r\nimport styles from \"./accountCreation.module.scss\";\r\nimport { dateDiff } from \"../../common/helper/formatHelper\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype AddressConfirmationProps = AccountCreationStore.AccountCreationState & {\r\n currentAddress: AccountCreationStore.Address,\r\n borrowerType: AccountCreationStore.BorrowerType,\r\n setMonthValid: React.Dispatch>,\r\n birhtDay: Date,\r\n disabled: boolean\r\n} & typeof AccountCreationActions.accountCreationActionCreators;\r\nconst AddressConfirmation = (props: AddressConfirmationProps) => {\r\n const [errorMessage, updateErrorMessage] = React.useState(\"\");\r\n const [date, setDate] = React.useState(new Date());\r\n const handleDateChange = (month: number, year: number) => {\r\n let selectedDate = new Date(year ?? 0, month - 1);\r\n setDate(new Date(year ?? 0, month + 1, 0));\r\n let todaysDate = new Date();\r\n if (selectedDate > todaysDate || (new Date(props.birhtDay) > selectedDate)) {\r\n updateErrorMessage(\"Please select valid date.\");\r\n }\r\n else {\r\n updateErrorMessage(\"\");\r\n }\r\n\r\n if (year && month) {\r\n let months = dateDiff(selectedDate);\r\n props.updateBorrowerProperty(months < 24 ? true : false, \"needAdditionalAddress\", props.borrowerType);\r\n }\r\n props.updateAddressMoveInDate(year, month, props.borrowerType, AccountCreationStore.AddressType.CurrentAddress);\r\n }\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n props.setMonthValid(false);\r\n let selectedDate = new Date(props.currentAddress?.moveInYear ?? 0, props.currentAddress?.moveInMonth ?? 0 - 1);\r\n if ((props.currentAddress?.moveInYear !== undefined && props.currentAddress?.moveInYear !== 0) &&\r\n (props.currentAddress?.moveInMonth !== undefined) && (!(new Date(props.birhtDay) > selectedDate) || (new Date(props.birhtDay).getMonth() === props.currentAddress?.moveInMonth))) {\r\n props.setMonthValid(true);\r\n }\r\n }, [props.currentAddress?.moveInMonth, props.currentAddress?.moveInYear]);\r\n React.useEffect(() => {\r\n if (props.currentAddress?.moveInYear !== undefined && (new Date(props.birhtDay) > date)) {\r\n updateErrorMessage(\"Move in month and year should not be less than Birth date.\");\r\n props.setMonthValid(false)\r\n }\r\n else {\r\n updateErrorMessage(\"\");\r\n }\r\n }, [props.currentAddress?.moveInMonth, props.currentAddress?.moveInYear])\r\n\r\n return (\r\n <>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? \"Address Confirmation\" : \"Co-Borrower Address Confirmation\")} className={styles.heading}>\r\n {props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n \"Address Confirmation\" : \"Co-Borrower Address Confirmation\"}\r\n

    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? \"You've entered the following as your current address:\" : \"You've entered the following as your Co-Borrower's current address:\")}>\r\n {props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n \"You've entered the following as your current address:\" :\r\n \"You've entered the following as your Co-Borrower's current address:\"}\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.currentAddress?.addressStreetLine1 + \" \" + props.currentAddress?.addressCity + \" \" + props.currentAddress?.addressState)}>{`${props.currentAddress?.addressStreetLine1} ${props.currentAddress?.addressCity} ${props.currentAddress?.addressState}`}

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? \"When did you move into this address?\" : \"When did your Co-Borrower move into this address?\")}>\r\n {props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n \"When did you move into this address?\" :\r\n \"When did your Co-Borrower move into this address?\"\r\n }\r\n * \r\n

    \r\n 0 && props.currentAddress?.moveInMonth !== undefined ? new Date(props.currentAddress?.moveInYear, props?.currentAddress.moveInMonth) : undefined}\r\n handleChange={handleDateChange}\r\n popperPlacement={false}\r\n maxDate={new Date()}\r\n defaultYear={props.currentAddress?.moveInYear}\r\n defaultMonth={props.currentAddress?.moveInMonth}\r\n />\r\n

    {errorMessage}

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { borrowerType: AccountCreationStore.BorrowerType, setMonthValid: React.Dispatch>, disabled: boolean }): any => {\r\n return state.accountCreation ? {\r\n currentAddress: ownProps.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? state.accountCreation.borrower.currentAddress : state.accountCreation.coBorrower?.currentAddress,\r\n borrowerType: ownProps.borrowerType,\r\n setMonthValid: ownProps.setMonthValid,\r\n birhtDay: ownProps.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? state.accountCreation.borrower.birthDate : state.accountCreation.coBorrower.birthDate,\r\n disabled: ownProps.disabled\r\n } : state;\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n AccountCreationActions.accountCreationActionCreators\r\n)(AddressConfirmation as any);","import React from \"react\";\r\nimport PlacesAutocomplete, { geocodeByPlaceId, } from \"react-places-autocomplete\";\r\nimport styles from \"./LocationSearch.module.scss\";\r\n\r\ntype LocationAutofillProps = {\r\n addressStreetLine1: string,\r\n addresssFieldName: string,\r\n borrowerType: any,\r\n customType?: any,\r\n isDisabled?: boolean,\r\n setStoreAddress?: (value: string, name: string, borrowerType: any, customType: any) => void,\r\n styles: any,\r\n setFullAddress?: (street: string, city: string, state: string, zip: string) => void\r\n}\r\n\r\nconst LocationSearchInput = (props: LocationAutofillProps) => {\r\n const [addressStreetLine1, setAddress] = React.useState(props.addressStreetLine1);\r\n\r\n React.useEffect(() => {\r\n if (props.addressStreetLine1 === \"undefined\") {\r\n setAddress(\"\");\r\n }\r\n else {\r\n setAddress(props.addressStreetLine1);\r\n }\r\n }, [props.addressStreetLine1]);\r\n\r\n const handleSelect = (address: string, placeID: string) => {\r\n geocodeByPlaceId(placeID)\r\n .then(results => {\r\n\r\n let correctAddress = address;\r\n let addressComponents = results[0]?.address_components;\r\n let city = \"\";\r\n let state = \"\";\r\n let zip = \"\";\r\n let street = \"\";\r\n\r\n if (addressComponents) {\r\n let streetNumber = addressComponents.find(a => a.types.includes(\"street_number\"))?.long_name ?? \"\";\r\n let streetName = addressComponents.find(a => a.types.includes(\"route\"))?.long_name ?? \"\";\r\n street = (streetNumber !== \"\" && streetName !== \"\") ? `${streetNumber} ${streetName}` : \"\";\r\n\r\n city = addressComponents.find(a => a.types.includes(\"locality\"))?.long_name ?? \"\";\r\n state = addressComponents.find(a => a.types.includes(\"administrative_area_level_1\"))?.short_name ?? \"\";\r\n zip = addressComponents.find(a => a.types.includes(\"postal_code\"))?.long_name ?? \"\";\r\n\r\n if (props.setStoreAddress) {\r\n props.setStoreAddress(street ? street : city, props.addresssFieldName, props.borrowerType, props.customType);\r\n props.setStoreAddress(city, \"addressCity\", props.borrowerType, props.customType);\r\n props.setStoreAddress(state, \"addressState\", props.borrowerType, props.customType);\r\n props.setStoreAddress(zip, \"addressPostalCode\", props.borrowerType, props.customType);\r\n }\r\n else if (props.setFullAddress) {\r\n props.setFullAddress(street ? street : city, city, state, zip);\r\n }\r\n correctAddress = street ? street : city;\r\n }\r\n setAddress(correctAddress);\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n\r\n if (props.setStoreAddress) {\r\n props.setStoreAddress(addressStreetLine1 ? addressStreetLine1 : address, props.addresssFieldName, props.borrowerType, props.customType);\r\n } else if (props.setFullAddress) {\r\n props.setFullAddress(addressStreetLine1 ? addressStreetLine1 : address, \"\", \"\", \"\");\r\n }\r\n }\r\n\r\n const handleInput = (event: any) => {\r\n if (props.setStoreAddress) {\r\n props.setStoreAddress(event, props.addresssFieldName, props.borrowerType, props.customType);\r\n } else if (props.setFullAddress) {\r\n props.setFullAddress(event, \"\", \"\", \"\");\r\n }\r\n setAddress(event);\r\n }\r\n\r\n const handleError = (status: any) => {\r\n console.error(\"Error from Google Maps API\", status);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {({ getInputProps, suggestions, getSuggestionItemProps }) => (\r\n
    \r\n \r\n
    0 ? styles.suggestionBg : ''}>\r\n {suggestions.map(suggestion => {\r\n suggestion.id = suggestion.index.toString(); //to resolve missing key prop error for undefined id\r\n const style = {\r\n backgroundColor: suggestion.active ? \"\" : \"\"\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {suggestion.formattedSuggestion.mainText}\r\n {\" \"}\r\n \r\n {suggestion.formattedSuggestion.secondaryText}\r\n \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default LocationSearchInput;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import * as React from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { withReadOnlyWrapper } from \"../Input/withReadOnlyWrapper\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ninterface TextInputProps {\r\n rule: {};\r\n onChange: any;\r\n name: string;\r\n handleValidation?: (error: any, field: string) => {};\r\n invalidclass: string;\r\n}\r\n\r\nconst TextInputComponent = (props: TextInputProps) => {\r\n const { onChange, rule, handleValidation, ...rest } = props;\r\n const { register, errors, trigger } = useForm();\r\n const triggerChange = (e: any) => {\r\n props.onChange(e);\r\n trigger(props.name);\r\n };\r\n const error = errors[props.name];\r\n\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n if (props.handleValidation) {\r\n if (error) {\r\n error.message = error.message.replace('field', props.name);\r\n const { ref, ...errorInfo } = error;\r\n props.handleValidation(errorInfo, props.name);\r\n } else {\r\n props.handleValidation(null, props.name);\r\n }\r\n }\r\n return (<>\r\n \r\n {error && ( stopSpeech()} onMouseOver={() => textToSpeech(error.message)}>{error.message})}\r\n );\r\n};\r\n\r\nconst TextInput = withReadOnlyWrapper(TextInputComponent);\r\n\r\nexport default TextInput as any;","import * as React from \"react\";\r\nimport { withReadOnlyWrapper } from \"./withReadOnlyWrapper\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport styles from \"./SelectDropDown.module.scss\";\r\n\r\ninterface SelectDropDownProps {\r\n children?: React.ReactNode;\r\n label?: string;\r\n noArrow?: boolean;\r\n rule: {};\r\n onChange: any;\r\n name: string;\r\n invalidclass: string;\r\n dropdownclass: string;\r\n handleValidation?: (error: any, field: string) => {};\r\n}\r\n\r\nconst SelectDropDownComponent = (props: SelectDropDownProps) => {\r\n const { onChange, rule, handleValidation, noArrow, ...rest } = props;\r\n const { register, errors, trigger } = useForm();\r\n\r\n const triggerChange = (e: any) => {\r\n props.onChange(e);\r\n trigger(props.name);\r\n };\r\n const error = errors[props.name];\r\n\r\n if (props.handleValidation) {\r\n if (error) {\r\n error.message = error.message.replace('field', props.name);\r\n\r\n const { ref, ...errorInfo } = error;\r\n props.handleValidation(errorInfo, props.name);\r\n } else {\r\n props.handleValidation(null, props.name);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {props.label && ()}\r\n \r\n {error && ({error.message})}\r\n
    \r\n );\r\n};\r\n\r\nconst SelectDropDown = withReadOnlyWrapper(SelectDropDownComponent) as any;\r\n\r\nexport default SelectDropDown;\r\n","export const ValidationMessage = {\r\n Required: \"Field is required.\",\r\n EmailFormat: \"Invalid Email\",\r\n Number: \"Invalid Number.\",\r\n MinLength: \"The value entered does not meet the minimum length requirement.\",\r\n MaxLength: \"The value entered exceeds the maximum length requirement.\",\r\n Max: \"The value entered is greater than the maximum value allowed.\",\r\n Min: \"The value entered is less than the minimum value allowed.\",\r\n PasswordFormat: \"Passwords must contain at least eight characters, including uppercase, lowercase,symbol and numbers\",\r\n SpaceFormat: \"Spaces are not allowed\",\r\n DecimalFormat: \"Invalid input provided\",\r\n SsnFormat: \"Invalid SSN provided\"\r\n}\r\n\r\nexport const Rule = {\r\n EmailValidation: {\r\n value: /^[0-9=?A-Z^a-z`{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/,\r\n message: ValidationMessage.EmailFormat\r\n },\r\n NumberValidation: {\r\n value: /^\\(?(\\d{3})\\)?[-\\. ]?(\\d{3})[-\\. ]?(\\d{4})$/,\r\n message: ValidationMessage.Number\r\n },\r\n PasswordValidation: {\r\n value: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,64}$/,\r\n message: ValidationMessage.PasswordFormat\r\n },\r\n SpaceValidation: {\r\n value: /[^\\s]/,\r\n message: ValidationMessage.SpaceFormat\r\n },\r\n DecimalValidation: {\r\n value: /^\\d{1,}(\\.\\d{0,4})?$/,\r\n message: ValidationMessage.DecimalFormat\r\n },\r\n SsnValidation: {\r\n //https://www.geeksforgeeks.org/how-to-validate-ssn-social-security-number-using-regular-expression/\r\n value: /^(?!666|000|9\\d{2})\\d{3}[-]*(?!00)\\d{2}[-]*(?!0{4})\\d{4}$/,\r\n message: ValidationMessage.SsnFormat\r\n }\r\n}\r\n","import { get, post } from \"../common/dataFetch\";\r\nimport { ZipDetail } from \"../store/ZipCodeLookUpStore\";\r\n \r\nexport const getZipCodeDetail = (zipCode: string) => post(`ZipCodeLookup/ReadExtendedByZipCode?zipCode=${zipCode}`, null);\r\n \r\nexport const getZipCodeByCityState = (zipdetail: ZipDetail) => post(`ZipCodeLookup/ReadExtendedByCityState`, { ...zipdetail });\r\n\r\n","import { AppThunkAction } from \"../store\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as ZipCodeLookup from \"../store/ZipCodeLookUpStore\";\r\nimport { KnownAction } from \"../store/ZipCodeLookUpStore\";\r\nimport * as ZipCodeLookupService from \"../services/zipCodeLookupService\";\r\n\r\nconst request = (loanGuid: string): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestZipCodeLookup\r\n };\r\n};\r\n\r\nconst clear = (): KnownAction => {\r\n return { type: ActionTypes.ClearExceptionZipCodeLookup };\r\n};\r\n\r\nconst handleError = (errorMessage: string): KnownAction => {\r\n return { type: ActionTypes.HandleErrorZipCodeLookup, errorMessage: errorMessage };\r\n};\r\n\r\nconst receive = (data: ZipCodeLookup.ZipDetail[]): KnownAction => {\r\n \r\n return { type: ActionTypes.ReceiveZipCodeLookup, data };\r\n};\r\n\r\nconst clearZipDetail = (): KnownAction => {\r\n return { type: ActionTypes.ClearZipDetails };\r\n};\r\n\r\nexport const zipCodeLookupActionCreators = {\r\n getZipCodeDetail: (zipCode: string): AppThunkAction => (dispatch, getState) => {\r\n var state = getState();\r\n if (state.zipCodeLookUp) {\r\n state.zipCodeLookUp.isLoading = true;\r\n }\r\n dispatch(clear());\r\n dispatch(request(zipCode));\r\n \r\n ZipCodeLookupService.getZipCodeDetail(zipCode)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`There was a problem getting Zip code details.`);\r\n }\r\n return response.parsedBody as ZipCodeLookup.ZipDetail[];\r\n })\r\n .then((data) => {\r\n dispatch(receive(data));\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n \r\n });\r\n if (state.zipCodeLookUp) {\r\n state.zipCodeLookUp.isLoading = false;\r\n }\r\n },\r\n getZipCodeByCityState: (zipDetail: ZipCodeLookup.ZipDetail): AppThunkAction => (dispatch) => {\r\n dispatch(clear());\r\n \r\n dispatch(request(zipDetail.city));\r\n ZipCodeLookupService.getZipCodeByCityState(zipDetail)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`There was a problem getting Zip code details.`);\r\n }\r\n return response.parsedBody as ZipCodeLookup.ZipDetail[];\r\n })\r\n .then((data) => {\r\n dispatch(receive(data));\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n });\r\n },\r\n handleError: (errorMessage: string): AppThunkAction => (dispatch) => {\r\n dispatch(handleError(errorMessage));\r\n },\r\n clearZipDetails: (): AppThunkAction => (dispatch) => {\r\n dispatch(clearZipDetail());\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Table } from 'reactstrap';\r\nimport { ZipDetail } from '../../../store/ZipCodeLookUpStore';\r\nimport styles from \"../../common/shared/zipCode.module.scss\";\r\n\r\ninterface ZipCodeModelProps {\r\n zipDetails: ZipDetail[];\r\n zipCode: string;\r\n cityName: string;\r\n stateCode: string;\r\n isOpen: boolean;\r\n onSelection: (zipDetail: ZipDetail) => void;\r\n onCancel: () => void;\r\n isLoading: boolean;\r\n};\r\n\r\ninterface selectedCity {\r\n zipDetail: ZipDetail;\r\n index: number;\r\n}\r\n\r\nconst ZipCodeSelection = (props: ZipCodeModelProps) => {\r\n const [selection, changeSelection] = React.useState();\r\n const [isOpen] = React.useState(props.isOpen);\r\n const rows: any[] = [];\r\n\r\n props.zipDetails.map((c, i) => {\r\n rows.push(\r\n changeSelection({ ...selection, zipDetail: c, index: i })}\r\n className={selection && selection.index === i ? `${styles.cityTable} ${styles.activeCity}` : styles.cityTable}>\r\n {props.zipCode && < td > {c.city}}\r\n {props.cityName && < td > {c.zipCode}}\r\n {c.stateCode}\r\n );\r\n });\r\n const handleShow = () => {\r\n props.onCancel()\r\n }\r\n const onSelect = () => {\r\n if (selection !== undefined) {\r\n props.onSelection(selection.zipDetail);\r\n }\r\n }\r\n return (\r\n \r\n {props.zipCode ? \"SELECT A CITY\" : \"SELECT A ZIP CODE\"}\r\n \r\n {props.zipCode\r\n ? <>

    Several cities are located in this Zip Code.

    \r\n

    Select a city from the list.

    \r\n :

    Select a Zip code from the list.

    }\r\n
    \r\n \r\n \r\n \r\n {props.zipCode && }\r\n {props.cityName && }\r\n \r\n \r\n \r\n \r\n {rows}\r\n \r\n
    City NameZip CodeState
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ZipCodeSelection as any;","import * as React from \"react\";\r\nimport { connect } from 'react-redux';\r\nimport { ZipDetail } from '../../store/ZipCodeLookUpStore';\r\nimport { zipCodeLookupActionCreators } from '../../actions/zipCodeLookupActions';\r\nimport { ApplicationState } from '../../store';\r\nimport { Borrower, Address } from \"../../store/accountCreationStore\";\r\nimport { FormGroup, Label } from \"reactstrap\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\nimport ZipCodeSelection from \"../../components/common/shared/ZipCodeSelectionBox\";\r\nimport styles from \"./accountCreation.module.scss\";\r\nimport { setTimeout } from \"timers\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype AddressFieldProps = AddressFieldModel & typeof zipCodeLookupActionCreators\r\n\r\ninterface AddressFieldModel {\r\n zipDetails: ZipDetail[];\r\n borrowerInformation: Borrower;\r\n addressType: any,\r\n borrowerType: any,\r\n isLoading: any,\r\n onChange: (value: any, name: string, borrowerType: any, addressType: any) => void;\r\n isLoanComplted: boolean;\r\n disabled: boolean;\r\n}\r\n\r\nconst AddressFields = (props: AddressFieldProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [showCitySelectionBox, cityBoxToggle] = React.useState(false);\r\n const [showZipSelectionBox, zipBoxToggle] = React.useState(false);\r\n const [zipCode, setZipCode] = React.useState(props.borrowerInformation?.currentAddress?.addressPostalCode || \"\");\r\n const [city, setCity] = React.useState(props.borrowerInformation?.currentAddress?.addressCity || \"\");\r\n const [state, setState] = React.useState(props.borrowerInformation?.currentAddress?.addressState || \"\");\r\n const [enteredField, setFieldName] = React.useState(undefined || \"\");\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n\r\n if (props.borrowerInformation.currentAddress?.addressCity != \"\" && props.borrowerInformation.currentAddress?.addressState != \"\") {\r\n zipBoxToggle(true);\r\n onCityBlur(props.borrowerInformation.currentAddress?.addressCity);\r\n\r\n }\r\n\r\n }, [props.borrowerInformation.currentAddress?.addressCity, props.borrowerInformation.currentAddress?.addressState])\r\n\r\n const zipFormat = (value: string) => {\r\n if (value.length > 5) {\r\n value = [value.slice(0, 5), '-', value.slice(5)].join('');\r\n\r\n if (value.length >= 10) {\r\n return value.slice(0, 10);\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n const onSelection = (data: ZipDetail) => {\r\n\r\n if (showZipSelectionBox) {\r\n zipBoxToggle(false);\r\n props.onChange(data.zipCode, \"addressPostalCode\", props.borrowerType, props.addressType);\r\n props.onChange(data.stateCode, \"addressState\", props.borrowerType, props.addressType);\r\n setZipCode(data.zipCode);\r\n setState(data.stateCode);\r\n }\r\n\r\n if (showCitySelectionBox) {\r\n cityBoxToggle(false);\r\n props.onChange(data.city, \"addressCity\", props.borrowerType, props.addressType);\r\n props.onChange(data.stateCode, \"addressState\", props.borrowerType, props.addressType);\r\n setCity(data.city);\r\n setState(data.stateCode);\r\n }\r\n\r\n setTimeout(() => { props.onChange(true, \"isValid\", props.borrowerType, props.addressType); }, 50);\r\n props.clearZipDetails();\r\n };\r\n\r\n const onZipBlur = (value: any) => {\r\n\r\n if (zipCode && zipCode.length > 4 && props.borrowerInformation?.currentAddress?.addressPostalCode !== zipCode) {\r\n cityBoxToggle(true);\r\n props.onChange(value, \"addressPostalCode\", props.borrowerType, props.addressType);\r\n props.getZipCodeDetail(zipCode);\r\n setFieldName(\"addressPostalCode\");\r\n }\r\n if (value === \"\") {\r\n props.onChange(value, \"addressPostalCode\", props.borrowerType, props.addressType);\r\n }\r\n }\r\n\r\n const onCityBlur = (value: any) => {\r\n\r\n if (city.toUpperCase() !== \"\" && props.borrowerInformation?.currentAddress?.addressCity?.toUpperCase() !== city.toUpperCase()) {//props.borrowerInformation.city\r\n zipBoxToggle(true);\r\n let zipDetail: ZipDetail = {\r\n city: city,\r\n zipCode: props.borrowerInformation?.currentAddress?.addressPostalCode ?? \"\",\r\n stateCode: JSON.stringify(props.borrowerInformation?.currentAddress?.addressState)\r\n }\r\n props.onChange(city, \"addressCity\", props.borrowerType, props.addressType);\r\n\r\n props.getZipCodeByCityState(zipDetail);\r\n setFieldName(\"addressCity\");\r\n }\r\n else if (city.toUpperCase() !== \"\" && props.borrowerInformation?.currentAddress?.addressCity?.toUpperCase() === city.toUpperCase()) {\r\n\r\n let zipDetail: ZipDetail = {\r\n city: city,\r\n zipCode: props.borrowerInformation?.currentAddress?.addressPostalCode ?? \"\",\r\n stateCode: JSON.stringify(props.borrowerInformation?.currentAddress?.addressState)\r\n }\r\n\r\n props.onChange(city, \"addressCity\", props.borrowerType, props.addressType);\r\n props.getZipCodeByCityState(zipDetail);\r\n setFieldName(\"addressCity\");\r\n }\r\n\r\n if (value === \"\") {\r\n props.onChange(value, \"addressCity\", props.borrowerType, props.addressType);\r\n }\r\n }\r\n\r\n const onStateBlur = (value: any) => {\r\n\r\n if (state && props.borrowerInformation?.currentAddress?.addressState !== state) {\r\n zipBoxToggle(true);\r\n let zipDetail: ZipDetail = {\r\n city: city,\r\n zipCode: JSON.stringify(props.borrowerInformation?.currentAddress?.addressPostalCode),\r\n stateCode: state\r\n }\r\n props.onChange(state, \"addressState\", props.borrowerType, props.addressType);\r\n\r\n props.getZipCodeByCityState(zipDetail);\r\n setFieldName(\"addressState\");\r\n }\r\n if (value === \"\") {\r\n props.onChange(value, \"addressState\", props.borrowerType, props.addressType);\r\n }\r\n }\r\n\r\n if (props.zipDetails && props.zipDetails?.length === 1 && enteredField !== undefined) {\r\n let zipDetail: ZipDetail = {\r\n city: props.zipDetails[0].city,\r\n zipCode: props.zipDetails[0].zipCode,\r\n stateCode: props.zipDetails[0].stateCode\r\n }\r\n onSelection(zipDetail);\r\n }\r\n\r\n else if (enteredField !== undefined && props.zipDetails?.length === 0 && props.borrowerInformation?.currentAddress?.isValid) {\r\n\r\n props.onChange(false, \"isValid\", props.borrowerType, props.addressType);\r\n }\r\n\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n { setCity(e.target.value) }}\r\n value={city || ''}\r\n onBlur={(e: any) => onCityBlur(e.target.value)}\r\n />\r\n\r\n {enteredField === \"addressCity\" && props.zipDetails?.length === 0\r\n && Invalid city '{city}' for state '{state}'.}\r\n \r\n
    \r\n
    \r\n \r\n \r\n onStateBlur(e.target.value.toUpperCase())}\r\n onChange={(e: any) => { setState(e.target.value.toUpperCase()) }}\r\n value={state || ''}\r\n />\r\n {enteredField === \"addressState\" && props.zipDetails?.length === 0\r\n && Invalid state '{state}' for city '{city}'.}\r\n \r\n
    \r\n
    \r\n \r\n \r\n { onZipBlur(value.target.value); }}\r\n onValueChange={(values: NumberFormatValues) => { setZipCode(values.formattedValue.trim()); }}\r\n\r\n />\r\n {enteredField === \"addressPostalCode\" && props.zipDetails?.length === 0\r\n && Invalid Zip code.}\r\n \r\n\r\n
    \r\n\r\n {showCitySelectionBox && zipCode && props.zipDetails?.length > 1 && enteredField === \"addressPostalCode\" &&\r\n onSelection(data)}\r\n onCancel={() => cityBoxToggle(false)}\r\n />\r\n }\r\n {\r\n showZipSelectionBox && city && props.zipDetails?.length > 1 &&\r\n (enteredField === \"addressCity\" || enteredField === \"addressState\") &&\r\n onSelection(data)}\r\n onCancel={() => zipBoxToggle(false)}\r\n />\r\n }\r\n {(props.isLoading &&
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n\r\n );\r\n\r\n\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n\r\n let isLoading = state.zipCodeLookUp?.isLoading\r\n let zipDetails;\r\n\r\n if (state && state.zipCodeLookUp?.data !== undefined) {\r\n zipDetails = state.zipCodeLookUp?.data;\r\n\r\n }\r\n return {\r\n zipDetails,\r\n isLoading\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getZipCodeDetail: (zipCode: string) => {\r\n dispatch(zipCodeLookupActionCreators.getZipCodeDetail(zipCode));\r\n },\r\n getZipCodeByCityState: (zipDetail: ZipDetail) => {\r\n dispatch(zipCodeLookupActionCreators.getZipCodeByCityState(zipDetail));\r\n },\r\n clearZipDetails: () => {\r\n dispatch(zipCodeLookupActionCreators.clearZipDetails());\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AddressFields as any) as any;","import * as React from \"react\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport datePickerStyles from \"./CustomDatePicker.module.scss\";\r\nimport { getMonth, getYear } from 'date-fns';\r\nimport range from \"lodash/range\";\r\nimport dropDownStyles from \"../common/Input/SelectDropDown.module.scss\";\r\nimport MaskedInput from \"react-text-mask\";\r\n\r\nconst CustomDatePicker = (props: {\r\n fieldValue: Date | null | undefined,\r\n onDateChange: React.Dispatch>,\r\n className?: string,\r\n popperPlacement: boolean,\r\n maxDate?: Date,\r\n disabled: boolean\r\n}) => {\r\n const years = range(1900, getYear(new Date()) + 100, 1);\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n return (\r\n
    \r\n (\r\n
    \r\n \r\n
    \r\n changeYear(Number(value))}\r\n >\r\n {years.map((option: any) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n changeMonth(months.indexOf(value))}\r\n >\r\n {months.map((option) => (\r\n \r\n ))}\r\n \r\n
    \r\n \r\n
    \r\n )}\r\n selected={props.fieldValue}\r\n className={`${datePickerStyles.input}`}\r\n onChange={(date: any, e: any) => {\r\n props.onDateChange(e.target.value ? e.target.value : date);\r\n setIsOpen(false);\r\n }}\r\n open={isOpen}\r\n onClickOutside={() => setTimeout(() => {\r\n setIsOpen(false)\r\n }, 100)}\r\n customInput={\r\n {\r\n if (e.target.value) {\r\n if (e.target.value.split(\"/\").length <= 2 ||\r\n (e.target.value.split(\"/\").length === 3 && e.target.value.split(\"/\")[2].length <= 4)) {\r\n props.onDateChange(e.target.value);\r\n }\r\n }\r\n }}\r\n />\r\n }\r\n maxDate={props.maxDate}\r\n />\r\n !props.disabled ? setIsOpen(!isOpen) : setIsOpen(isOpen)}\r\n >\r\n
    \r\n );\r\n};\r\n\r\nexport default CustomDatePicker;","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as AccountCreationActions from \"../../actions/accountCreationActions\";\r\nimport * as TaskMenuActions from \"../../actions/taskMenuAction\";\r\nimport * as AccountCreationStore from \"../../store/accountCreationStore\";\r\nimport { AsYouType } from 'libphonenumber-js';\r\nimport LocationSearch from \"../common/Input/LocationSearch\";\r\nimport styles from \"./accountCreation.module.scss\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport { Rule, ValidationMessage } from \"../constants/validation\";\r\nimport AddressFields from \"./AddressFields\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport CustomDatePicker from \"../common/CustomDatePicker\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\nimport { isNullOrWhiteSpace, validateBirthDate, toDate, isValidDate } from \"../../common/helper/formatHelper\";\r\n\r\ntype BorrowerInformationProps =\r\n AccountCreationStore.AccountCreationState &\r\n {\r\n validation?: undefined;\r\n isError: any;\r\n borrowerFirstName: string,\r\n borrowerLastName: string,\r\n borrowerEmail: string,\r\n borrowerType: AccountCreationStore.BorrowerType,\r\n setBorrowerValid: React.Dispatch>,\r\n disabled: boolean\r\n }\r\n & typeof AccountCreationActions.accountCreationActionCreators\r\n & typeof TaskMenuActions.TaskMenuCreators;\r\n\r\nconst BorrowerInformation = (props: BorrowerInformationProps) => {\r\n let currentBorrower = props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower;\r\n const [coBorrowerAddressChecked, toggle] = React.useState(false);\r\n const [birthdatemsg, setBirthdatemsg] = React.useState(false);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n if (props.coBorrower?.currentAddress) {\r\n if (props.coBorrower?.currentAddress?.coBorrowerAddressChecked !== undefined) {\r\n toggle(props.coBorrower?.currentAddress?.coBorrowerAddressChecked);\r\n }\r\n }\r\n }, [props.coBorrower?.currentAddress]);\r\n\r\n React.useEffect(() => {\r\n if (!isNullOrWhiteSpace(props.borrowerFirstName) && isNullOrWhiteSpace(props.borrower.firstName)) {\r\n props.updateBorrowerProperty(props.borrowerFirstName, \"firstName\", props.borrowerType);\r\n }\r\n if (!isNullOrWhiteSpace(props.borrowerLastName) && isNullOrWhiteSpace(props.borrower.lastName)) {\r\n props.updateBorrowerProperty(props.borrowerLastName, \"lastName\", props.borrowerType);\r\n }\r\n if (!isNullOrWhiteSpace(props.borrowerEmail) && isNullOrWhiteSpace(props.borrower.emailAddressText)) {\r\n props.updateBorrowerProperty(props.borrowerEmail, \"emailAddressText\", props.borrowerType);\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower) {\r\n props.setBorrowerValid(validateBorrower(props.borrower));\r\n } else if (props.coBorrower) {\r\n props.setBorrowerValid(validateBorrower(props.coBorrower));\r\n }\r\n }, [props.borrower, props.coBorrower]);\r\n\r\n const coBorrowerAddressCheckedChange = (checked: any) => {\r\n toggle(checked);\r\n props.SetAddressSameAsBorrower(AccountCreationStore.AddressType.CurrentAddress, checked);\r\n }\r\n\r\n const validateBorrower = (borrower: AccountCreationStore.Borrower): boolean => {\r\n let isValid = true;\r\n let isValidDate = borrower?.birthDate && validateBirthDate(borrower?.birthDate);\r\n if (isNullOrWhiteSpace(borrower?.firstName) ||\r\n isNullOrWhiteSpace(borrower?.lastName) ||\r\n isNullOrWhiteSpace(borrower?.phoneNumber) ||\r\n isNullOrWhiteSpace(borrower?.maritalStatusType) ||\r\n isNullOrWhiteSpace(borrower?.phoneType) ||\r\n isNullOrWhiteSpace(borrower?.emailAddressText) ||\r\n !isValidDate ||\r\n borrower.currentAddress === undefined ||\r\n isNullOrWhiteSpace(borrower.currentAddress?.addressStreetLine1) ||\r\n isNullOrWhiteSpace(borrower.currentAddress?.addressCity) ||\r\n isNullOrWhiteSpace(borrower.currentAddress?.addressState) ||\r\n isNullOrWhiteSpace(borrower.currentAddress?.addressPostalCode) ||\r\n (borrower.currentAddress?.addressPostalCode && (borrower.currentAddress?.addressPostalCode.length < 5)) ||\r\n (borrower?.taxIdentificationIdentifier && borrower?.taxIdentificationIdentifier.length < 9) ||\r\n isNullOrWhiteSpace(borrower?.taxIdentificationIdentifier) || props.borrower.emailAddressText === props.coBorrower.emailAddressText) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n };\r\n\r\n const handlePhoneInput = (value: string) => {\r\n let numbers = value.replace(\"(\", \"\").replace(\")\", \"\").replace(\"-\", \"\").replace(\" \", \"\");\r\n if (numbers.length <= 3) {\r\n props.updateBorrowerProperty(numbers, \"phoneNumber\", props.borrowerType);\r\n } else {\r\n let formattedPhoneNumber = new AsYouType(\"US\").input(numbers);\r\n props.updateBorrowerProperty(formattedPhoneNumber, \"phoneNumber\", props.borrowerType);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? \"Borrower Information\" : \"Co-Borrower Information\")}>\r\n {props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n \"Borrower Information\" :\r\n \"Co-Borrower Information\"}\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Please fill out the following information')}>Please fill out the following information.

    \r\n
    \r\n
    \r\n \r\n ) => props.updateBorrowerProperty(e.target.value, \"firstName\", props.borrowerType)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n pattern: Rule.SpaceValidation,\r\n minLength: {\r\n value: 1,\r\n message: ValidationMessage.MinLength,\r\n },\r\n maxLength: {\r\n value: 50,\r\n message: ValidationMessage.MaxLength,\r\n },\r\n }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n
    \r\n
    \r\n \r\n props.updateBorrowerProperty(e.target.value, e.target.name, props.borrowerType)} />\r\n
    \r\n
    \r\n \r\n ) => props.updateBorrowerProperty(e.target.value, \"lastName\", props.borrowerType)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n pattern: Rule.SpaceValidation,\r\n minLength: {\r\n value: 1,\r\n message: ValidationMessage.MinLength,\r\n },\r\n maxLength: {\r\n value: 50,\r\n message: ValidationMessage.MaxLength,\r\n },\r\n }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n
    \r\n
    \r\n \r\n props.updateBorrowerProperty(e.target.value, e.target.name, props.borrowerType)} />\r\n
    \r\n
    \r\n \r\n ) => handlePhoneInput(e.target.value)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n pattern: Rule.NumberValidation,\r\n }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n
    \r\n
    \r\n \r\n\r\n ) => props.updateBorrowerProperty(e.target.value, \"phoneType\", props.borrowerType)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n }} noArrow={false}\r\n handleValidation={() => props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n ) => props.updateBorrowerProperty(e.target.value, \"emailAddressText\", props.borrowerType)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n pattern: Rule.EmailValidation,\r\n }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n {\r\n props.borrower.emailAddressText === props.coBorrower.emailAddressText &&\r\n The co-borrower email can not be same as the primary borrower. Please enter a different email address\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n ) => props.updateBorrowerProperty(e.target.value, \"maritalStatusType\", props.borrowerType)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n }} noArrow={false}\r\n handleValidation={props.setValidation}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n {\r\n props.borrowerType && props.borrowerType === AccountCreationStore.BorrowerType.CoBorrower &&\r\n
    \r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech(\"Same as Borrower\")}>Same as Borrower\r\n
    \r\n }\r\n\r\n
    \r\n {!coBorrowerAddressChecked &&\r\n \r\n }\r\n {coBorrowerAddressChecked &&\r\n \r\n }\r\n
    \r\n
    \r\n {currentBorrower?.currentAddress?.addressCity === \"\" || currentBorrower?.currentAddress?.addressPostalCode === \"\"\r\n || currentBorrower?.currentAddress?.addressCity === undefined || currentBorrower?.currentAddress?.addressPostalCode === undefined\r\n ?\r\n (\r\n \r\n ) :\r\n (\r\n <>\r\n\r\n
    \r\n \r\n ) => props.updateBorrowerAddressProperty(e.target.value, \"addressCity\", props.borrowerType,\r\n AccountCreationStore.AddressType.CurrentAddress)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n\r\n
    \r\n
    \r\n \r\n ) => props.updateBorrowerAddressProperty(e.target.value, \"addressState\", props.borrowerType, AccountCreationStore.AddressType.CurrentAddress)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n maxLength=\"2\"\r\n />\r\n
    \r\n
    \r\n \r\n ) => props.updateBorrowerAddressProperty(e.target.value, \"addressPostalCode\", props.borrowerType, AccountCreationStore.AddressType.CurrentAddress)}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n
    \r\n \r\n )}\r\n
    \r\n \r\n {\r\n let convertedDate = toDate(date);\r\n if (isValidDate(convertedDate)) {\r\n let isValidBirthDate = validateBirthDate(convertedDate);\r\n setBirthdatemsg(isValidBirthDate ? false : true);\r\n } else {\r\n setBirthdatemsg(true);\r\n }\r\n props.updateBorrowerProperty(convertedDate, \"birthDate\", props.borrowerType);\r\n }}\r\n popperPlacement={false}\r\n maxDate={new Date()}\r\n />\r\n {birthdatemsg ? Invalid Birthday Date : <>}\r\n
    \r\n\r\n
    \r\n \r\n {\r\n props.updateBorrowerProperty(values.value, \"taxIdentificationIdentifier\", props.borrowerType);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { borrowerType: AccountCreationStore.BorrowerType, setBorrowerValid: React.Dispatch>, disabled: boolean }): any => {\r\n let borrowerFirstName = \"\";\r\n let borrowerLastName;\r\n let borrowerEmail;\r\n let borrowerType;\r\n let setBorrowerValid;\r\n let borrower = state.accountCreation?.borrower;\r\n let coBorrower = state.accountCreation?.coBorrower;\r\n let disabled;\r\n\r\n if (state.accountInformation !== undefined) {\r\n borrowerFirstName = state.accountInformation?.borrowerFirstName ?? \"\";\r\n borrowerLastName = state.accountInformation?.borrowerLastName ?? \"\";\r\n borrowerEmail = state.accountInformation?.borrowerEmail ?? \"\";\r\n borrowerType = ownProps.borrowerType;\r\n setBorrowerValid = ownProps.setBorrowerValid;\r\n disabled = ownProps.disabled;\r\n }\r\n return {\r\n borrowerFirstName,\r\n borrowerLastName,\r\n borrowerEmail,\r\n borrowerType,\r\n setBorrowerValid,\r\n borrower,\r\n coBorrower,\r\n disabled\r\n };\r\n}\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateBorrowerProperty: (value: string, propertyName: string, borrowerType: AccountCreationStore.BorrowerType) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.updateBorrowerProperty(value, propertyName, borrowerType));\r\n dispatch(TaskMenuActions.TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n updateBorrowerAddressProperty: (value: string, propertyName: string, borrowerType: AccountCreationStore.BorrowerType, addressType: AccountCreationStore.AddressType) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.updateBorrowerAddressProperty(value, propertyName, borrowerType, addressType));\r\n dispatch(TaskMenuActions.TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n SetAddressSameAsBorrower: (addressType: AccountCreationStore.AddressType, value: boolean) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.SetAddressSameAsBorrower(addressType, value));\r\n dispatch(TaskMenuActions.TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n setValidation: (error: any, field: string) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.setValidation(error, field));\r\n }\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(BorrowerInformation as any);","import * as React from \"react\";\r\nimport { connect, useDispatch } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as AccountCreationActions from \"../../actions/accountCreationActions\";\r\nimport * as AccountCreationStore from \"../../store/accountCreationStore\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport formerAddressInfographic from \"../../assets/infographics/accountCreation/former-address.svg\";\r\nimport CustomYearMonthPicker from \"../common/CustomYearMonthPicker\";\r\nimport LocationSearch from \"../common/Input/LocationSearch\";\r\nimport styles from \"./accountCreation.module.scss\";\r\nimport _uniqueId from 'lodash/uniqueId';\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { dateDiff, isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype AdditionalAddressProps =\r\n AccountCreationStore.AccountCreationState &\r\n {\r\n currentAddress: AccountCreationStore.Address,\r\n borrowerType: AccountCreationStore.BorrowerType,\r\n setComplete: React.Dispatch>,\r\n disabled: boolean\r\n } &\r\n typeof AccountCreationActions.accountCreationActionCreators;\r\n\r\nconst AdditionalAddress = (props: AdditionalAddressProps) => {\r\n let currentBorrower = props.borrowerType == AccountCreationStore.BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower;\r\n let additionalAddressList = currentBorrower?.addresses;\r\n\r\n const getAddressChecked = () => {\r\n let priorAddresses = props.coBorrower?.addresses?.filter(x => x.residencyType === \"Prior\");\r\n if (priorAddresses && priorAddresses?.length > 0) {\r\n if (priorAddresses[0].coBorrowerAddressChecked !== undefined) {\r\n return priorAddresses[0].coBorrowerAddressChecked;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n const [coBorrowerAddressChecked, toggle] = React.useState(getAddressChecked());\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n if (props.borrowerType == AccountCreationStore.BorrowerType.PrimaryBorrower) {\r\n props.setComplete((props.borrower && props.borrower.totalMonths && props.borrower.totalMonths > 23) ? true : false);\r\n }\r\n else {\r\n props.setComplete((props.coBorrower && props.coBorrower.totalMonths && props.coBorrower.totalMonths > 23) ? true : false);\r\n }\r\n }, [props.borrower.totalMonths, props.coBorrower.totalMonths]);\r\n\r\n const selectData = () => {\r\n let id = _uniqueId('Residence/');\r\n let data: AccountCreationStore.Address = {\r\n id: id,\r\n indexId: id,\r\n residencyType: \"Prior\",\r\n editMode: undefined,\r\n addressStreetLine1: \"\",\r\n addressCity: undefined,\r\n addressState: undefined,\r\n addressPostalCode: undefined,\r\n moveInYear: 0,\r\n moveInMonth: 0,\r\n durationTermYears: 0,\r\n durationTermMonths: 0,\r\n applicantType: \"\",\r\n mailingAddressIndicator: false\r\n };\r\n return data;\r\n }\r\n\r\n const selectPriorData = () => {\r\n let data = props.currentAddress;\r\n if (additionalAddressList && additionalAddressList.length == 0 && currentFormerAddress && currentFormerAddress.addressStreetLine1) {\r\n data = currentFormerAddress;\r\n }\r\n else if (additionalAddressList && additionalAddressList.length > 0) {\r\n let addresses = additionalAddressList.filter(x => x.residencyType !== null && x.addressStreetLine1 !== null);\r\n if (addresses.length > 0) {\r\n data = addresses[addresses.length - 1];\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n const [errorMessage, updateErrorMessage] = React.useState(\"\");\r\n const [editMode, updateEditMode] = React.useState(false);\r\n const [currentFormerAddress, updateCurrentFormerAddress] = React.useState(() => selectData());\r\n const [priorFormerAddress, updatePriorFormerAddress] = React.useState(() => selectPriorData());\r\n const coBorrowerAddressCheckedChange = (checked: any) => {\r\n toggle(checked);\r\n actions.setLoanIsDirty(true);\r\n props.SetAddressSameAsBorrower(AccountCreationStore.AddressType.FormerAddress, checked);\r\n resetAddress();\r\n }\r\n const [month, setMonth] = React.useState(0);\r\n const [year, setYear] = React.useState(0);\r\n\r\n const actions = {\r\n ...bindActionCreators({ ...TaskMenuCreators }, useDispatch())\r\n };\r\n\r\n React.useEffect(() => {\r\n updateCurrentFormerAddress(selectData());\r\n }, [props.borrowerType]);\r\n\r\n if (currentFormerAddress === undefined) {\r\n updateCurrentFormerAddress(selectData());\r\n }\r\n if (priorFormerAddress === undefined) {\r\n updatePriorFormerAddress(selectPriorData());\r\n }\r\n\r\n const handleDateChange = (month: number, year: number) => {\r\n currentFormerAddress.moveInMonth = month + 1;\r\n currentFormerAddress.moveInYear = year;\r\n setMonth(month);\r\n setYear(year);\r\n }\r\n\r\n const validateAdditionalAddress = (): boolean => {\r\n let isValid = true;\r\n if (currentFormerAddress === undefined ||\r\n isNullOrWhiteSpace(currentFormerAddress?.addressStreetLine1) ||\r\n isNullOrWhiteSpace(currentFormerAddress?.addressCity) ||\r\n isNullOrWhiteSpace(currentFormerAddress?.addressState) ||\r\n isNullOrWhiteSpace(currentFormerAddress?.addressPostalCode)\r\n || currentFormerAddress?.addressPostalCode === undefined || currentFormerAddress?.addressPostalCode?.length < 5) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n };\r\n\r\n const addNewAddress = () => {\r\n let priorDate = new Date();\r\n let currentDate = new Date();\r\n if (priorFormerAddress && priorFormerAddress.moveInYear && priorFormerAddress.moveInMonth != undefined) {\r\n priorDate = new Date(priorFormerAddress.moveInYear ?? 0, priorFormerAddress.moveInMonth - 1);\r\n }\r\n if (currentFormerAddress && currentFormerAddress.moveInYear && currentFormerAddress.moveInMonth != undefined) {\r\n currentDate = new Date(currentFormerAddress.moveInYear ?? 0, currentFormerAddress.moveInMonth - 1);\r\n }\r\n if (!validateAdditionalAddress()) {\r\n updateErrorMessage(\"Please enter valid adddress\");\r\n }\r\n else if ((currentFormerAddress.moveInYear == 0 && currentFormerAddress.moveInMonth == 0)\r\n || (currentFormerAddress.moveInYear == undefined && currentFormerAddress.moveInMonth == undefined)\r\n || currentDate >= priorDate) {\r\n updateErrorMessage(\"Please select valid date\");\r\n }\r\n else {\r\n actions.setLoanIsDirty(true);\r\n updateErrorMessage(\"\");\r\n updateEditMode(false);\r\n let durationTermYears = 0;\r\n let durationTermMonths = 0;\r\n\r\n if (currentFormerAddress &&\r\n priorFormerAddress &&\r\n currentFormerAddress.moveInMonth != undefined &&\r\n currentFormerAddress.moveInYear &&\r\n priorFormerAddress.moveInMonth != undefined &&\r\n priorFormerAddress.moveInYear\r\n ) {\r\n let currentAddressMoveIn = new Date(priorFormerAddress.moveInYear, priorFormerAddress.moveInMonth - 1);\r\n let previousAddressMoveIn = new Date(currentFormerAddress.moveInYear, currentFormerAddress.moveInMonth - 1);\r\n let totalMonths = dateDiff(previousAddressMoveIn, currentAddressMoveIn);\r\n durationTermYears = Math.floor(totalMonths / 12);\r\n durationTermMonths = totalMonths % 12;\r\n }\r\n\r\n let id = _uniqueId('Residence/');\r\n let data: AccountCreationStore.Address = {\r\n id: currentFormerAddress.editMode ? currentFormerAddress.id : id,\r\n indexId: currentFormerAddress.editMode ? currentFormerAddress.id : id,\r\n residencyType: \"Prior\",\r\n editMode: currentFormerAddress.editMode,\r\n addressStreetLine1: currentFormerAddress.addressStreetLine1,\r\n addressCity: currentFormerAddress.addressCity,\r\n addressState: currentFormerAddress.addressState,\r\n addressPostalCode: currentFormerAddress.addressPostalCode,\r\n moveInYear: currentFormerAddress.moveInYear,\r\n moveInMonth: currentFormerAddress.moveInMonth,\r\n durationTermYears: durationTermYears,\r\n durationTermMonths: durationTermMonths,\r\n applicantType: props.borrowerType == AccountCreationStore.BorrowerType.PrimaryBorrower ? \"Borrower\" : \"CoBorrower\",\r\n mailingAddressIndicator: false\r\n };\r\n if (data.editMode) {\r\n data.editMode = false;\r\n data.addressStreetLine1 = data.addressStreetLine1?.replace(data.addressPostalCode ?? '', '')\r\n props.EditAddressProperty(data, props.borrowerType);\r\n resetAddress();\r\n }\r\n else {\r\n data.editMode = false;\r\n data.addressStreetLine1 = data.addressStreetLine1?.replace(data.addressPostalCode ?? '', '')\r\n props.AddAddressProperty(data, props.borrowerType);\r\n resetAddress();\r\n }\r\n }\r\n }\r\n\r\n const deleteAddress = (id: string | undefined) => {\r\n actions.setLoanIsDirty(true);\r\n updateErrorMessage(\"\");\r\n if (id !== undefined) {\r\n props.DeleteAddressProperty(id, props.borrowerType);\r\n if (priorFormerAddress.id == id && additionalAddressList) {\r\n const index = additionalAddressList?.findIndex(x => x.id == id);\r\n if (index ?? 0 > 0) {\r\n updatePriorFormerAddress(additionalAddressList[index - 1]);\r\n }\r\n else {\r\n updatePriorFormerAddress(props.currentAddress);\r\n }\r\n }\r\n }\r\n else {\r\n alert(\"something went wrong!\");\r\n }\r\n }\r\n\r\n const editAddress = (id: string | undefined) => {\r\n actions.setLoanIsDirty(true);\r\n updateErrorMessage(\"\");\r\n updateEditMode(true);\r\n if (id != undefined && additionalAddressList) {\r\n const index = additionalAddressList.findIndex(x => x.id == id);\r\n additionalAddressList[index].editMode = true;\r\n updateCurrentFormerAddress(additionalAddressList[index]);\r\n if (index ?? 0 > 0) {\r\n updatePriorFormerAddress(additionalAddressList[index - 1])\r\n }\r\n else {\r\n updatePriorFormerAddress(props.currentAddress)\r\n }\r\n }\r\n else {\r\n alert(\"something went wrong.\")\r\n }\r\n }\r\n\r\n const addAddressFields = (value: string, name: string, borrowerType: any, customType: any) => {\r\n actions.setLoanIsDirty(true);\r\n if (name == \"addressCity\") {\r\n currentFormerAddress.addressCity = value;\r\n }\r\n if (name == \"addressStreetLine1\") {\r\n currentFormerAddress.addressStreetLine1 = value;\r\n }\r\n if (name == \"addressPostalCode\") {\r\n currentFormerAddress.addressStreetLine1 = currentFormerAddress.addressStreetLine1 + \" \" + value;\r\n currentFormerAddress.addressPostalCode = value;\r\n }\r\n if (name == \"addressState\") {\r\n currentFormerAddress.addressState = value;\r\n }\r\n }\r\n\r\n const resetAddressClick = () => {\r\n updateErrorMessage(\"\");\r\n updateEditMode(false);\r\n updatePriorFormerAddress(selectPriorData());\r\n let id = _uniqueId('Residence/');\r\n let data1: AccountCreationStore.Address = {\r\n id: id,\r\n indexId: id,\r\n residencyType: \"Prior\",\r\n editMode: false,\r\n addressStreetLine1: \"undefined\",\r\n addressCity: \"\",\r\n addressState: \"\",\r\n addressPostalCode: \"\",\r\n moveInYear: 0,\r\n moveInMonth: 0,\r\n durationTermYears: undefined,\r\n durationTermMonths: undefined,\r\n applicantType: props.borrowerType == AccountCreationStore.BorrowerType.PrimaryBorrower ? \"Borrower\" : \"CoBorrower\",\r\n mailingAddressIndicator: false\r\n }\r\n updateCurrentFormerAddress(data1);\r\n setMonth(0);\r\n setYear(0);\r\n }\r\n\r\n\r\n const resetAddress = () => {\r\n updateErrorMessage(\"\");\r\n updateEditMode(false);\r\n setTimeout(() => {\r\n updatePriorFormerAddress(selectPriorData());\r\n updateCurrentFormerAddress({ ...selectData });\r\n }, 100);\r\n setYear(0);\r\n setMonth(0);\r\n }\r\n\r\n const getMonth = (month: number) => {\r\n switch (month) {\r\n case 1:\r\n return 'January';\r\n case 2:\r\n return 'February';\r\n case 3:\r\n return 'March';\r\n case 4:\r\n return 'April';\r\n case 5:\r\n return 'May';\r\n case 6:\r\n return 'June';\r\n case 7:\r\n return 'July';\r\n case 8:\r\n return 'August';\r\n case 9:\r\n return 'September';\r\n case 10:\r\n return 'October';\r\n case 11:\r\n return 'November';\r\n case 12:\r\n return 'December';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? \"Additional Address Information\" : \"Co-Borrower Additional Address Information\")}>\r\n {props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n \"Additional Address Information\" :\r\n \"Co-Borrower Additional Address Information\"}\r\n

    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? \"What is your former address?\" : \"What is your co-borrower's former address?\")}>\r\n {props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n \"What is your former address?\" :\r\n \"What is your co-borrower's former address?\"}\r\n

    \r\n\r\n
    \r\n \r\n \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? \"When did you move in?\" : \"When did your co-borrower move in?\")}>\r\n {props.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n \"When did you move in?\" :\r\n \"When did your co-borrower move in?\"}\r\n

    \r\n
    \r\n 0 ? new Date(year, month) : undefined}\r\n handleChange={handleDateChange}\r\n popperPlacement={false}\r\n maxDate={new Date()}\r\n defaultYear={currentFormerAddress.moveInYear ?? 0}\r\n defaultMonth={currentFormerAddress.moveInMonth ?? 0}\r\n className={styles.addResetMonthYear}\r\n />\r\n
    \r\n {\r\n !editMode &&\r\n \r\n }\r\n {\r\n editMode &&\r\n \r\n }\r\n \r\n
    \r\n
    \r\n {errorMessage}\r\n
    \r\n
    \r\n
    \r\n {\r\n props.borrowerType && props.borrowerType === AccountCreationStore.BorrowerType.CoBorrower && props.borrower.addresses &&\r\n
    \r\n \r\n \r\n
    \r\n }\r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Total months\")}>\r\n Total months:\r\n stopSpeech()} onMouseOver={() => textToSpeech(currentBorrower.totalMonths)}>{currentBorrower.totalMonths}\r\n
    \r\n
    \r\n\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Address\")}>Address
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Date\")}>Date
    \r\n
    \r\n
    \r\n
    \r\n {\r\n additionalAddressList?.filter(x => x.residencyType === \"Prior\")?.map(item => (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(item.addressStreetLine1 + \" \" + item.addressPostalCode)}> {item.addressStreetLine1 + \" \" + item.addressPostalCode}
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(getMonth(item.moveInMonth ?? 0) + \" \" + item.moveInYear ?? \"\")}>{getMonth(item.moveInMonth ?? 0) + \" \" + item.moveInYear ?? \"\"}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ))\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { borrowerType: AccountCreationStore.BorrowerType, setComplete: React.Dispatch>, disabled: React.Dispatch> }): any => {\r\n return state.accountCreation ? {\r\n ...state.accountCreation,\r\n currentAddress: ownProps.borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ? state.accountCreation.borrower.currentAddress : state.accountCreation.coBorrower?.currentAddress,\r\n borrowerType: ownProps.borrowerType,\r\n setComplete: ownProps.setComplete,\r\n disabled: ownProps.disabled\r\n } : state;\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n AccountCreationActions.accountCreationActionCreators\r\n)(React.memo(AdditionalAddress) as any) as any;","import * as React from \"react\";\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\r\nimport styles from \"./MessageBox.module.scss\";\r\n\r\ninterface MessageBoxProps {\r\n title: any;\r\n messages: string[];\r\n show: boolean;\r\n close: () => void;\r\n login?: () => void;\r\n}\r\n\r\nconst MessageBox = (props: MessageBoxProps) => {\r\n const closeMsgBox = () => {\r\n props.close();\r\n };\r\n\r\n return (\r\n \r\n \r\n
    {props.title}
    \r\n
    \r\n \r\n
      \r\n {props.messages.map(m =>
    • {m}
    • )}\r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n props.messages.includes(\"An account already exists with this email address. Please go back to login page and try to sign in with your credentials.\")\r\n || props.messages.includes(\"User already verified. Please go back to login page and try to sign in with your credentials.\") &&\r\n <>\r\n \r\n \r\n }\r\n\r\n  \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MessageBox;\r\n","import * as React from \"react\";\r\nimport { connect } from 'react-redux';\r\nimport { ZipDetail } from '../../../store/ZipCodeLookUpStore';\r\nimport { CountyDetail } from '../../../store/CountyLookUpStore';\r\nimport { zipCodeLookupActionCreators } from '../../../actions/zipCodeLookupActions';\r\nimport { ApplicationState } from '../../../store';\r\nimport { FormGroup, Label } from \"reactstrap\";\r\nimport TextInput from \"../../common/Input/TextInput\";\r\nimport { NumberFormatInput } from \"../../common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\nimport CountySelection from \"../../common/shared/CountySelectionBox\";\r\nimport ZipCodeSelection from \"../../common/shared/ZipCodeSelectionBox\";\r\nimport * as ZipCodeLookUpService from \"services/zipCodeLookupService\"\r\nimport { countyLookupActionCreators } from '../../../actions/countyLookupActions';\r\nimport * as CountyLookUpService from \"services/countyLookupService\"\r\nimport styles from \"../../common/shared/zipCode.module.scss\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype AddressFieldProps = AddressFieldModel & typeof zipCodeLookupActionCreators & typeof countyLookupActionCreators\r\n\r\nenum Fields {\r\n City = \"city\",\r\n State = \"state\",\r\n PostalCode = \"postalCode\",\r\n County = \"county\"\r\n};\r\n\r\nexport interface AddressFieldsChange {\r\n city: string;\r\n state: string;\r\n postalCode: string;\r\n county?: string;\r\n}\r\n\r\ninterface AddressFieldModel {\r\n zipDetails?: ZipDetail[];\r\n countyDetails?: CountyDetail[];\r\n city: string;\r\n cityFieldName: string;\r\n state: string;\r\n stateFieldName: string;\r\n postalCode: string;\r\n postalCodeFieldName: string;\r\n county?: string;\r\n countyFieldName?: string;\r\n isCountyFlag: boolean;\r\n onChange: (value: any, name: string) => void;\r\n onValidChange?: (values: AddressFieldsChange) => void;\r\n onLoading: (values: boolean) => void;\r\n isDisabled?: boolean,\r\n isloanCompleted: boolean | undefined,\r\n};\r\n\r\nconst AddressFields = (props: AddressFieldProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [cityStateSelectionModalEntries, setCityStateSelectionModalEntries] = React.useState(null);\r\n const [postalCodeSelectionModalEntries, setPostalCodeSelectionModalEntries] = React.useState(null);\r\n const [cityStateCountySelectionModalEntries, setCityStateCountySelectionModalEntries] = React.useState(null);\r\n\r\n const [city, setCity] = React.useState(props.city);\r\n const [state, setState] = React.useState(props.state);\r\n const [postalCode, setPostalCode] = React.useState(props.postalCode);\r\n const [county, setCounty] = React.useState(props.county);\r\n\r\n const [lastValidCity, setLastValidCity] = React.useState(props.city);\r\n const [lastValidState, setLastValidState] = React.useState(props.state);\r\n const [lastValidPostalCode, setLastValidPostalCode] = React.useState(props.postalCode);\r\n const [lastValidCounty, setLastValidCounty] = React.useState(props.county);\r\n\r\n const [isCityStateValid, setIsCityStateValid] = React.useState(true);\r\n const [isPostalCodeValid, setIsPostalCodeValid] = React.useState(true);\r\n\r\n const [lastModifiedField, setLastModifiedField] = React.useState();\r\n\r\n const handleOnValidChange = (values: AddressFieldsChange) => {\r\n setLastValidCity(values.city);\r\n setLastValidState(values.state);\r\n setLastValidPostalCode(values.postalCode);\r\n setLastValidCounty(values.county);\r\n\r\n if (props.onValidChange) {\r\n props.onValidChange(values);\r\n }\r\n }\r\n\r\n const fetchZipCodeByCityState = async (cityQuery: string, stateQuery: string) => {\r\n const response = await ZipCodeLookUpService.getZipCodeByCityState({ city: cityQuery, stateCode: stateQuery, zipCode: \"\" });\r\n if (!response.ok || !response.parsedBody) {\r\n throw new Error(\"There was a problem getting zip code detail.\");\r\n }\r\n return response.parsedBody;\r\n }\r\n\r\n const fetchZipCodeDetail = async (postalCodeQuery: string) => {\r\n const response = await ZipCodeLookUpService.getZipCodeDetail(postalCodeQuery);\r\n if (!response.ok || !response.parsedBody) {\r\n throw new Error(\"There was a problem getting zip code detail.\");\r\n }\r\n return response.parsedBody;\r\n }\r\n\r\n const fetchCountyDetail = async (postalCodeQuery: string) => {\r\n const response = await CountyLookUpService.getCountyDetail(postalCodeQuery);\r\n if (!response.ok || !response.parsedBody) {\r\n console.log(\"There was a problem getting county detail.\");\r\n }\r\n return response.parsedBody;\r\n }\r\n\r\n const validateCityState = async (cityQuery: string, stateQuery: string): Promise<[boolean, ZipDetail[] | undefined]> => {\r\n let isValid = true;\r\n let zipDetails: ZipDetail[] | undefined;\r\n\r\n if (cityQuery === null || stateQuery === null) {\r\n isValid = false;\r\n } else if (cityQuery === lastValidCity && stateQuery === lastValidState) {\r\n isValid = isCityStateValid;\r\n } else {\r\n zipDetails = await fetchZipCodeByCityState(cityQuery, stateQuery);\r\n isValid = zipDetails.length !== 0;\r\n }\r\n\r\n return [isValid, zipDetails];\r\n }\r\n\r\n const validatePostalCode = async (postalCodeQuery: string): Promise<[boolean, ZipDetail[] | undefined]> => {\r\n let isValid = true;\r\n let zipDetails: ZipDetail[] | undefined;\r\n\r\n if (postalCodeQuery.length < 5) {\r\n isValid = false;\r\n } else if (postalCodeQuery === lastValidPostalCode && props.county != \"\") {\r\n isValid = isPostalCodeValid;\r\n } else {\r\n zipDetails = await fetchZipCodeDetail(postalCodeQuery);\r\n isValid = zipDetails.length !== 0;\r\n }\r\n return [isValid, zipDetails];\r\n }\r\n\r\n const validatePostalCodeforCounty = async (postalCodeQuery: string): Promise<[boolean, CountyDetail[] | undefined]> => {\r\n let isValid = true;\r\n let countyDetails: CountyDetail[] | undefined;\r\n\r\n if (postalCodeQuery.length < 5) {\r\n isValid = false;\r\n } else if (postalCodeQuery === lastValidPostalCode && county != \"\") {\r\n isValid = isPostalCodeValid;\r\n } else {\r\n countyDetails = await fetchCountyDetail(postalCodeQuery);\r\n isValid = countyDetails != undefined && countyDetails.length !== 0;\r\n }\r\n return [isValid, countyDetails];\r\n }\r\n\r\n const isNullOrEmpty = (value?: string | null) => {\r\n return value === undefined || value === null || value.length === 0;\r\n }\r\n\r\n const isAddressValid = (city: string, state: string, postalCode: string, isCityStateValid: boolean, isPostalCodeValid: boolean) => {\r\n const allFieldsEmpty = isNullOrEmpty(city) && isNullOrEmpty(state) && isNullOrEmpty(postalCode);\r\n const allFieldsNotEmpty = !isNullOrEmpty(city) && !isNullOrEmpty(state) && !isNullOrEmpty(postalCode);\r\n\r\n return allFieldsEmpty || (isCityStateValid && isPostalCodeValid && allFieldsNotEmpty);\r\n }\r\n\r\n const validateAddress = async (city: string, state: string, postalCode: string, lastModifiedField: Fields): Promise<[boolean, ZipDetail | undefined]> => {\r\n let isValid = false;\r\n let zipDetails: ZipDetail[] | undefined;\r\n\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n [isValid, zipDetails] = await validateCityState(city, state);\r\n break;\r\n case Fields.PostalCode:\r\n [isValid, zipDetails] = await validatePostalCode(postalCode);\r\n break;\r\n }\r\n\r\n if ((zipDetails && zipDetails.length === 1)) {\r\n const zipDetail = zipDetails[0];\r\n\r\n if (zipDetail != undefined) {\r\n props.onChange(zipDetail.city, props.cityFieldName);\r\n props.onChange(zipDetail.stateCode, props.stateFieldName);\r\n props.onChange(zipDetail.zipCode, props.postalCodeFieldName);\r\n }\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n setIsCityStateValid(true);\r\n return [isAddressValid(zipDetail.city, zipDetail.stateCode, zipDetail.zipCode, true, isPostalCodeValid), zipDetail,];\r\n case Fields.PostalCode:\r\n setIsPostalCodeValid(true);\r\n return [isAddressValid(zipDetail.city, zipDetail.stateCode, zipDetail.zipCode, isCityStateValid, true), zipDetail];\r\n }\r\n }\r\n\r\n else if (zipDetails && zipDetails.length > 1) {\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n setPostalCodeSelectionModalEntries(zipDetails);\r\n break;\r\n case Fields.PostalCode:\r\n setCityStateSelectionModalEntries(zipDetails);\r\n break;\r\n }\r\n return [false, undefined];\r\n }\r\n else {\r\n\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n setIsCityStateValid(isValid);\r\n return [isAddressValid(city, state, postalCode, false, isPostalCodeValid), undefined];\r\n case Fields.PostalCode:\r\n setIsPostalCodeValid(isValid);\r\n return [isAddressValid(city, state, postalCode, isCityStateValid, false), undefined];\r\n }\r\n return [isValid, undefined];\r\n }\r\n return [false, undefined];\r\n }\r\n\r\n const validateAddressCounty = async (city: string, state: string, postalCode: string, lastModifiedField: Fields): Promise<[boolean, CountyDetail | undefined]> => {\r\n let isValid = false;\r\n let countyDetails: CountyDetail[] | undefined;\r\n\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n case Fields.PostalCode:\r\n [isValid, countyDetails] = await validatePostalCodeforCounty(postalCode);\r\n break;\r\n }\r\n\r\n if ((props.isCountyFlag && countyDetails && countyDetails.length === 1)) {\r\n const countyDetail = countyDetails[0];\r\n\r\n props.onChange(countyDetail.countyCity, props.cityFieldName);\r\n props.onChange(countyDetail.countyStateCode, props.stateFieldName);\r\n props.onChange(countyDetail.countyZipCode, props.postalCodeFieldName);\r\n props.onChange(countyDetail.countyName, \"county\");\r\n\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n case Fields.PostalCode:\r\n setIsPostalCodeValid(true);\r\n return [isAddressValid(countyDetail.countyCity, countyDetail.countyStateCode, countyDetail.countyZipCode, isCityStateValid, true), countyDetail];\r\n }\r\n }\r\n else if (props.isCountyFlag && countyDetails && countyDetails.length > 1) {\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n case Fields.PostalCode:\r\n setCityStateCountySelectionModalEntries(countyDetails);\r\n break;\r\n }\r\n return [false, undefined];\r\n }\r\n else {\r\n switch (lastModifiedField) {\r\n case Fields.City:\r\n case Fields.State:\r\n case Fields.PostalCode:\r\n setIsPostalCodeValid(isValid);\r\n return [isAddressValid(city, state, postalCode, isCityStateValid, false), undefined];\r\n }\r\n return [isValid, undefined];\r\n }\r\n return [false, undefined];\r\n }\r\n\r\n const onModalSelection = (data: ZipDetail) => {\r\n if (postalCodeSelectionModalEntries) {\r\n setPostalCodeSelectionModalEntries(null);\r\n props.onChange(data.stateCode, props.stateFieldName)\r\n props.onChange(data.zipCode, props.postalCodeFieldName);\r\n }\r\n\r\n if (cityStateSelectionModalEntries) {\r\n setCityStateSelectionModalEntries(null);\r\n props.onChange(data.city, props.cityFieldName)\r\n props.onChange(data.stateCode, props.stateFieldName);\r\n }\r\n\r\n setIsCityStateValid(true);\r\n setIsPostalCodeValid(true);\r\n setLastModifiedField(undefined);\r\n\r\n handleOnValidChange({ city: data.city, state: data.stateCode, postalCode: data.zipCode });\r\n };\r\n\r\n const onCountyModalSelection = (data: CountyDetail) => {\r\n\r\n if (cityStateCountySelectionModalEntries) {\r\n setCityStateCountySelectionModalEntries(null);\r\n\r\n props.onChange(data.countyCity, props.cityFieldName);\r\n props.onChange(data.countyStateCode, props.stateFieldName);\r\n props.onChange(data.countyName, \"county\");\r\n }\r\n setIsCityStateValid(true);\r\n setIsPostalCodeValid(true);\r\n setLastModifiedField(undefined);\r\n\r\n handleOnValidChange({ city: data.countyCity, state: data.countyStateCode, postalCode: data.countyZipCode, county: data.countyName });\r\n };\r\n\r\n const onCityBlur = async (value: any) => {\r\n props.onLoading(true);\r\n const [isValid, zipDetail] = await validateAddress(value, state, postalCode, Fields.City);\r\n if (isValid) {\r\n const newValues = zipDetail\r\n ? { city: value, state: zipDetail.stateCode, postalCode: zipDetail.zipCode }\r\n : { city: value, state, postalCode };\r\n handleOnValidChange(newValues);\r\n }\r\n if (city) {\r\n setLastModifiedField(Fields.City);\r\n }\r\n\r\n props.onChange(value, props.cityFieldName);\r\n props.onChange(value, props.cityFieldName);\r\n props.onLoading(false);\r\n }\r\n\r\n const onStateBlur = async (value: any) => {\r\n props.onLoading(true);\r\n\r\n const [isValid, zipDetail] = await validateAddress(city, value, postalCode, Fields.State);\r\n if (isValid) {\r\n const newValues = zipDetail\r\n ? { city: zipDetail.city, state: value, postalCode: zipDetail.zipCode }\r\n : { city, state: value, postalCode };\r\n handleOnValidChange(newValues);\r\n }\r\n if (state) {\r\n setLastModifiedField(Fields.State);\r\n }\r\n props.onChange(value, props.stateFieldName);\r\n props.onLoading(false);\r\n }\r\n\r\n const onPostalCodeBlur = async (value: any) => {\r\n props.onLoading(true);\r\n if (props.isCountyFlag) {\r\n const [isValid, countydetail] = await validateAddressCounty(city, state, value, Fields.PostalCode);\r\n if (isValid) {\r\n const newValues = countydetail\r\n ? { city: countydetail.countyCity, state: countydetail.countyStateCode, postalCode: value, county: countydetail.countyName }\r\n : { city, state, postalCode: value };\r\n handleOnValidChange(newValues);\r\n }\r\n }\r\n else {\r\n const [isValid, zipCodeDetails] = await validateAddress(city, state, value, Fields.PostalCode);\r\n if (isValid) {\r\n const newValues = zipCodeDetails\r\n ? { city: zipCodeDetails.city, state: zipCodeDetails.stateCode, postalCode: value }\r\n : { city, state, postalCode: value };\r\n handleOnValidChange(newValues);\r\n }\r\n }\r\n props.onChange(value, props.postalCodeFieldName);\r\n\r\n if (props.postalCode) {\r\n setLastModifiedField(Fields.PostalCode);\r\n }\r\n props.onLoading(false);\r\n }\r\n const zipCodeFormat = (value: string) => {\r\n if (value.length > 5) {\r\n value = [value.slice(0, 5), '-', value.slice(5)].join('');\r\n\r\n if (value.length >= 10) {\r\n return value.slice(0, 10);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.isCountyFlag && !props.isloanCompleted) {\r\n if ((props.county == \"\") && (props.postalCode)) {\r\n onPostalCodeBlur(props.postalCode);\r\n }\r\n }\r\n }, [props.postalCode]);\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n { props.onChange(e.target.value, props.cityFieldName) }}\r\n onBlur={(e: any) => !props.isCountyFlag ? onCityBlur(e.target.value) : \"\"}\r\n />\r\n {!isCityStateValid && lastModifiedField === Fields.City && state !== \"\" && city !== \"\"\r\n && Invalid city '{city}' for state '{state}'.}\r\n \r\n
    \r\n
    \r\n \r\n \r\n { props.onChange(e.target.value.toUpperCase(), props.stateFieldName) }}\r\n onBlur={(e: any) => !props.isCountyFlag ? onStateBlur(e.target.value.toUpperCase()) : \"\"}\r\n />\r\n {!isCityStateValid && lastModifiedField === Fields.State && state !== \"\" && city !== \"\"\r\n && Invalid state '{state}' for city '{city}'.}\r\n \r\n
    \r\n
    \r\n \r\n \r\n { props.onChange(values.formattedValue.trim(), props.postalCodeFieldName) }}\r\n onChange={(value: any) => { onPostalCodeBlur(value.target.value); }}\r\n />\r\n {!isPostalCodeValid && lastModifiedField === Fields.PostalCode\r\n && Invalid Zip code.}\r\n \r\n
    \r\n {props.isCountyFlag &&\r\n
    \r\n \r\n \r\n { props.onChange(e.target.value, \"county\") }}\r\n />\r\n \r\n
    \r\n }\r\n\r\n {!props.isDisabled && !props.isCountyFlag && postalCode !== \"\" && cityStateSelectionModalEntries && cityStateSelectionModalEntries.length > 1 && lastModifiedField === Fields.PostalCode &&\r\n onModalSelection(data)}\r\n onCancel={() => setCityStateSelectionModalEntries(null)}\r\n />\r\n }\r\n\r\n {!props.isDisabled && !props.isCountyFlag && city !== \"\" && state !== \"\" && postalCodeSelectionModalEntries && postalCodeSelectionModalEntries.length > 1 &&\r\n (lastModifiedField === Fields.City || lastModifiedField === Fields.State) &&\r\n onModalSelection(data)}\r\n onCancel={() => setPostalCodeSelectionModalEntries(null)}\r\n />\r\n }\r\n {/*-- Showing modal for county selection --*/}\r\n {props.isCountyFlag && (!props.isloanCompleted) && props.postalCode !== \"\" && cityStateCountySelectionModalEntries && cityStateCountySelectionModalEntries.length > 1\r\n && lastModifiedField === Fields.PostalCode &&\r\n onCountyModalSelection(data)}\r\n onCancel={() => setCityStateCountySelectionModalEntries(null)}\r\n />\r\n }\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { zipCodeLookUp, countyLookUp } = state;\r\n let zipDetails: any = [];\r\n let countyDetails: any = [];\r\n\r\n if (zipCodeLookUp && zipCodeLookUp.data !== undefined) {\r\n zipDetails = zipCodeLookUp.data;\r\n }\r\n\r\n if (countyLookUp && countyLookUp.data !== undefined) {\r\n countyDetails = countyLookUp.data;\r\n }\r\n\r\n return {\r\n zipDetails,\r\n countyDetails\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getZipCodeDetail: (zipCode: string) => {\r\n dispatch(zipCodeLookupActionCreators.getZipCodeDetail(zipCode));\r\n },\r\n getZipCodeByCityState: (zipDetail: ZipDetail) => {\r\n dispatch(zipCodeLookupActionCreators.getZipCodeByCityState(zipDetail));\r\n },\r\n clearZipDetails: () => {\r\n dispatch(zipCodeLookupActionCreators.clearZipDetails());\r\n },\r\n getCountyDetail: (zipCode: string) => {\r\n dispatch(countyLookupActionCreators.getCountyDetail(zipCode));\r\n }\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AddressFields as any) as React.FC;","import { post, get } from \"../common/dataFetch\";\r\nimport { PropertyInformationState } from \"../store/propertyInformationStore\";\r\nimport { ResponseDto } from \"../common/models/ResponseDto\";\r\n\r\nexport const save = (state: PropertyInformationState, purposeType: string, loanGuid?: string) => {\r\n return post>(\"api/PropertyInformation/UpdateAsync\", {\r\n ...state,\r\n loanGuid: loanGuid,\r\n purposeType: purposeType,\r\n });\r\n};\r\n\r\nexport const getAll = (interimLoanStagingId:number) => {\r\n return get(`api/PropertyInformation/ReadByInterimIdAsync?interimLoanStagingId=${interimLoanStagingId}`);\r\n};","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction, PropertyInformationState } from '../store/propertyInformationStore';\r\nimport * as propertyInformationService from \"../services/propertyInformationService\";\r\n\r\nconst receive = (data: PropertyInformationState): KnownAction => {\r\n return { type: ActionTypes.ReceivePropertyInformation, data };\r\n}\r\n\r\nexport const propertyInformationActionCreators = {\r\n updatePropertyInformationField: (value: any, propertyName: any, isNumericalValue = false): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UPDATE_PROPERTY_INFORMATION_FIELD, value: value, propertyName: propertyName, isNumericalValue: isNumericalValue });\r\n },\r\n\r\n updateAddressFields: (streetValue: string, cityValue: string, stateValue: any, zipValue: any): AppThunkAction => (dispatch) => {\r\n dispatch({\r\n type: ActionTypes.UpdateAddressFields, streetValue: streetValue, cityValue: cityValue,\r\n stateValue: stateValue, zipValue: zipValue\r\n });\r\n },\r\n\r\n calculateEstimatedLoanAmount: (): AppThunkAction => (dispatch) => {\r\n dispatch({\r\n type: ActionTypes.CalculateEstimatedLoanAmount\r\n });\r\n },\r\n\r\n getPropertyInformation: (interimLoanStagingId:number): AppThunkAction => (dispatch) => {\r\n propertyInformationService.getAll(interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n console.error(response);\r\n }\r\n return response.parsedBody as PropertyInformationState;\r\n })\r\n .then((data: any) => {\r\n if (data?.body) {\r\n dispatch(receive(data.body));\r\n }\r\n })\r\n .catch((error: Error) => {\r\n throw new Error(error.message);\r\n });\r\n },\r\n\r\n updatePropertyInformationState: (data: PropertyInformationState): AppThunkAction => (dispatch) => {\r\n dispatch(receive(data));\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport Infographic from \"../Infographic\";\r\n\r\ninterface InfographicSideLayoutProps {\r\n children?: React.ReactNode;\r\n infographic?: string;\r\n}\r\n\r\nconst InfographicSideLayout = (props: InfographicSideLayoutProps) => {\r\n return (\r\n
    \r\n
    {props.children}
    \r\n {props.infographic && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default InfographicSideLayout;\r\n","import React from \"react\";\r\nimport styles from \"./infoIconTooltip.module.scss\";\r\n\r\nconst Tooltip = (props: { children?: React.ReactNode; iconClass?: string }) => (\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n);\r\nexport default Tooltip;","import * as React from 'react';\r\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Table } from 'reactstrap';\r\nimport { CountyDetail } from '../../../store/CountyLookUpStore';\r\nimport styles from \"../../common/shared/zipCode.module.scss\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface CountyModelProps {\r\n countyDetails: CountyDetail[];\r\n cityName: string;\r\n stateCode: string;\r\n county: string;\r\n isOpen: boolean;\r\n onSelection: (countyDetail: CountyDetail) => void;\r\n onCancel: () => void;\r\n isLoading: boolean;\r\n};\r\n\r\ninterface selectedCity {\r\n countyDetail: CountyDetail;\r\n index: number;\r\n}\r\n\r\nconst CountySelection = (props: CountyModelProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [selection, changeSelection] = React.useState();\r\n const [isOpen] = React.useState(props.isOpen);\r\n const rows: any[] = [];\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n props.countyDetails.map((c, i) => {\r\n rows.push(\r\n changeSelection({ ...selection, countyDetail: c, index: i })}\r\n className={selection && selection.index === i ? `${styles.cityTable} ${styles.activeCity}` : styles.cityTable}>\r\n stopSpeech()} onMouseOver={() => textToSpeech(c.countyCity)}> {c.countyCity}\r\n stopSpeech()} onMouseOver={() => textToSpeech(c.countyName)}> {c.countyName}\r\n stopSpeech()} onMouseOver={() => textToSpeech(c.countyStateCode)}> {c.countyStateCode}\r\n );\r\n });\r\n const handleShow = () => {\r\n props.onCancel()\r\n }\r\n const onSelect = () => {\r\n if (selection !== undefined) {\r\n props.onSelection(selection.countyDetail);\r\n }\r\n }\r\n return (\r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech('Select a City')}>{\"Select a City\"}\r\n \r\n <>

    stopSpeech()} onMouseOver={() => textToSpeech('Several cities are located in this Zip Code.Select a city from the list')}>Several cities are located in this Zip Code.Select a city from the list.

    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {rows}\r\n \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('City Name')}>City Name stopSpeech()} onMouseOver={() => textToSpeech('County')}>County stopSpeech()} onMouseOver={() => textToSpeech('State')}>State
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\nexport default CountySelection as any;","\r\nimport { get, post } from \"../common/dataFetch\";\r\nimport { CountyDetail } from \"../store/CountyLookUpStore\";\r\n \r\nexport const getCountyDetail = (zipCode: string) => post(`CountyLookup/ReadByZipCode?zipCode=${zipCode}`, null);","import { AppThunkAction } from \"../store\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as CountyLookup from \"../store/CountyLookUpStore\";\r\nimport { KnownAction } from \"../store/CountyLookUpStore\";\r\nimport * as CountyLookupService from \"../services/countyLookupService\";\r\n\r\nconst request = (loanGuid: string): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestCountyLookup\r\n };\r\n};\r\n\r\nconst clear = (): KnownAction => {\r\n return { type: ActionTypes.ClearExceptionCountyLookup };\r\n};\r\n\r\nconst handleError = (errorMessage: string): KnownAction => {\r\n return { type: ActionTypes.HandleErrorCountyLookup, errorMessage: errorMessage };\r\n};\r\n\r\nconst receive = (data: CountyLookup.CountyDetail[]): KnownAction => {\r\n return { type: ActionTypes.ReceiveCountyLookup, data };\r\n};\r\n\r\nconst clearCountyDetail = (): KnownAction => {\r\n return { type: ActionTypes.ClearCountyDetails };\r\n};\r\n\r\nexport const countyLookupActionCreators = {\r\n getCountyDetail: (zipCode: string): AppThunkAction => (dispatch, getState) => {\r\n var state = getState();\r\n if (state.countyLookUp) {\r\n state.countyLookUp.isLoading = true;\r\n }\r\n dispatch(clear());\r\n dispatch(request(zipCode));\r\n\r\n CountyLookupService.getCountyDetail(zipCode)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.log(`There was a problem getting County details.`);\r\n }\r\n return response.parsedBody as CountyLookup.CountyDetail[];\r\n })\r\n .then((data) => {\r\n dispatch(receive(data));\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n\r\n });\r\n if (state.countyLookUp) {\r\n state.countyLookUp.isLoading = false;\r\n }\r\n },\r\n handleError: (errorMessage: string): AppThunkAction => (dispatch) => {\r\n dispatch(handleError(errorMessage));\r\n },\r\n clearCountyDetails: (): AppThunkAction => (dispatch) => {\r\n dispatch(clearCountyDetail());\r\n }\r\n};","export enum EnumManualAsset {\r\n CheckingSavings = \"Checking/Savings\",\r\n RetirementFunds = \"Retirement Funds\",\r\n RetirementFund = \"Retirement Fund\",\r\n EquityOnPendingSale = \"Pending Sale\",\r\n SecuredBorrowedFunds = \"Secured Borrower Funds\",\r\n StocksAndBonds = \"Personal Investment Account\",\r\n GiftFunds = \"Gift Funds\"\r\n}","import Checkbox from \"components/common/Input/Checkbox\";\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport Tooltip from \"../common/InfoIconTooltip\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { PropertyInformationState } from \"../../store/propertyInformationStore\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport AddressFields, { AddressFieldsChange } from \"../common/shared/AddressFields\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ninterface PropertyAddressProps {\r\n question: string;\r\n address?: string;\r\n city?: string;\r\n state?: string;\r\n zip?: string;\r\n county?: string;\r\n addressUnitIdentifier?: string;\r\n isAddressSameAsBorrower?: boolean;\r\n updatePropertyInformationValue: (value: any, propertyName: any) => any;\r\n onValidateAddressChange: (isValid: boolean) => any;\r\n disabled: boolean | undefined\r\n}\r\n\r\nconst PropertyAddress = (props: PropertyAddressProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [isSameAsBorrower, setIsSameAsBorrower] = useState(props.isAddressSameAsBorrower);\r\n const [includeAddress, setIncludeAddress] = useState(false);\r\n const [showSameAsBorrowerCheckbox, setShowSameAsBorrowerCheckbox] = useState(false);\r\n const [format, setFormat] = React.useState(\"#########\");\r\n\r\n const borrowerCurrentAddress = useSelector((state: ApplicationState) => state.accountCreation?.borrower?.currentAddress ?? undefined);\r\n const state: PropertyInformationState = useSelector((state: ApplicationState) => state.propertyInformation as PropertyInformationState);\r\n const [isLoading, setIsLoading] = useState(false);\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n useEffect(() => {\r\n setShowSameAsBorrowerCheckbox(state.purposeType === \"Refinance\");\r\n setIncludeAddress(state.purposeType === \"Refinance\");\r\n handleZipCode(state.zip ?? \"\");\r\n }, [state.purposeType]);\r\n\r\n const handleZipCode = (zip: string) => {\r\n // remove all non digit characters\r\n let value = zip.replace(/\\D/g, '');\r\n\r\n if (value.length > 5) {\r\n setFormat(\"#####-####\");\r\n }\r\n else {\r\n setFormat(\"#########\");\r\n }\r\n props.updatePropertyInformationValue(zip.trim(), \"zip\")\r\n }\r\n\r\n useEffect(() => {\r\n if (isSameAsBorrower) {\r\n let address = borrowerCurrentAddress?.addressStreetLine1 ?? \"\";\r\n let city = borrowerCurrentAddress?.addressCity ?? \"\";\r\n let state = borrowerCurrentAddress?.addressState ?? \"\";\r\n let zip = borrowerCurrentAddress?.addressPostalCode ?? \"\";\r\n\r\n props.updatePropertyInformationValue(address, \"address\");\r\n props.updatePropertyInformationValue(city, \"city\");\r\n props.updatePropertyInformationValue(state, \"state\");\r\n props.updatePropertyInformationValue(zip, \"zip\");\r\n }\r\n }, [isSameAsBorrower]);\r\n\r\n useEffect(() => {\r\n let isValidAddress = false;\r\n if (!isNullOrWhiteSpace(props.city) &&\r\n !isNullOrWhiteSpace(props.state) &&\r\n !isNullOrWhiteSpace(props.zip) &&\r\n (props.zip && props.zip?.length >= 5) &&\r\n !isNullOrWhiteSpace(props.county) &&\r\n !isLoading) {\r\n isValidAddress = true;\r\n }\r\n\r\n if (includeAddress) {\r\n isValidAddress = isValidAddress ? !isNullOrWhiteSpace(props.address) : isValidAddress;\r\n }\r\n\r\n props.onValidateAddressChange(isValidAddress);\r\n }, [props.address, props.city, props.state, props.zip, props.county, isLoading]);\r\n\r\n const setFromLocationSearch = (\r\n street: string,\r\n city: string,\r\n state: string,\r\n zip: string\r\n ) => {\r\n onLoading(true);\r\n props.updatePropertyInformationValue(city, \"city\");\r\n props.updatePropertyInformationValue(state, \"state\");\r\n props.updatePropertyInformationValue(zip, \"zip\");\r\n props.updatePropertyInformationValue(street, \"address\");\r\n props.updatePropertyInformationValue(\"\", \"county\");\r\n onLoading(false);\r\n };\r\n\r\n const handleAddressFieldsChange = ({ city, state, postalCode, county }: AddressFieldsChange) => {\r\n if (city !== props.city) {\r\n props.updatePropertyInformationValue(city, \"city\");\r\n }\r\n if (state !== props.state) {\r\n props.updatePropertyInformationValue(state, \"state\");\r\n }\r\n if (postalCode !== props.zip) {\r\n props.updatePropertyInformationValue(postalCode, \"zip\");\r\n }\r\n if (county !== props.county) {\r\n props.updatePropertyInformationValue(county, \"county\");\r\n }\r\n }\r\n\r\n const onLoading = (value: boolean) => {\r\n setIsLoading(value);\r\n }\r\n \r\n return (\r\n <>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.question)}>{props.question} {\"Please fill out the address information.\"}

    \r\n
    \r\n \r\n {includeAddress && (\r\n
    \r\n \r\n
    \r\n {\r\n setFromLocationSearch(street, city, state, zip);\r\n }}\r\n />\r\n
    \r\n
    \r\n )}\r\n \r\n {includeAddress && (\r\n
    \r\n \r\n\r\n {\r\n props.updatePropertyInformationValue(values.value, \"addressUnitIdentifier\")\r\n }}\r\n />\r\n
    \r\n )}\r\n\r\n
    \r\n {showSameAsBorrowerCheckbox && (\r\n
    \r\n \r\n {\r\n setIsSameAsBorrower(checked);\r\n props.updatePropertyInformationValue(checked, \"isAddressSameAsBorrower\");\r\n }}\r\n disabled={props.disabled}\r\n >\r\n
    \r\n )}\r\n
    \r\n {isLoading &&
    }\r\n \r\n );\r\n};\r\n\r\nexport default PropertyAddress;\r\n","import { get, post } from \"../common/dataFetch\";\r\nimport { ManualAssetInformation } from \"../store/ManualAssetInformationStore\";\r\nimport { BorrowerAsset, BorrowerType } from \"../store/assetInformationStore\";\r\nimport { ResponseDto } from \"common/models/ResponseDto\";\r\n\r\nexport const getAll = (borrowerType:string,interimLoanStagingId:number) => {\r\n return get(`AssetInformation/ReadByInterimIdAsync?borrowerType=${borrowerType}&interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\nexport const getAssetDetailsFromEncompass = (loanGuid: string) => {\r\n return get(`AssetInformation/ReadEncompassLoanAsync?loanGuid=${loanGuid}`);\r\n};\r\nexport const updateAsset = (manualAsset: ManualAssetInformation, interimLoanStagingId:number) => {\r\n return post(`AssetInformation/UpdateAsset?interimLoanStagingId=${interimLoanStagingId}`, manualAsset);\r\n};\r\nexport const deleteAssetFromInterim = (id: string, interimLoanStagingId:number) => {\r\n return post(`AssetInformation/DeleteAsset?id=${id}&interimLoanStagingId=${interimLoanStagingId}`,null);\r\n};\r\n\r\nexport const readCoBorrowerAssetsStatus = (interimLoanStagingId: number) => {\r\n return get(`AssetInformation/ReadCoBorrowerAssetsStatus?interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const updateCoBorrowerAssetStatus = (interimLoanStagingId:number,coBorrowerAssetStatus ?: boolean) => {\r\n return post(`AssetInformation/UpdateCoBorrowerAssetStatus?interimLoanStagingId=${interimLoanStagingId}`, coBorrowerAssetStatus);\r\n};\r\nexport const updateProgressTracker = (borrowerType: string, loanGuid: string, hasCoborrower: boolean) => {\r\n return post(`AssetInformation/UpdateProgressTracker?borrowerType=${borrowerType}&loanGuid=${loanGuid}&hasCoborrower=${hasCoborrower}`, null);\r\n};\r\n\r\n// fincity services\r\nexport const getSystematicAsset = (loanGuid: string) => {\r\n return get(`AssetInformation/ReadSystematicAssetActionName?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const getAssetFinicityInformation = (loanGuid: string) => {\r\n return get>(`AssetInformation/ReadAssetFinicityInformationAsync?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const updateBorrowerInfo = (borrowerAsset: BorrowerAsset) => {\r\n return post(`AssetInformation/UpsertAsync`, borrowerAsset);\r\n};\r\n\r\nexport const submitVoa = (assetInformation: BorrowerAsset) => {\r\n return post(`AssetInformation/SubmitVoa`, assetInformation);\r\n};\r\nexport const UpsertAsyncsystematicInformation = (assetInformation: BorrowerAsset) => {\r\n return post(`AssetInformation/SaveSystematicAssetInformation`, assetInformation);\r\n};\r\n\r\nexport const getsystematicAssetInformation = (loanGuid: string, borrowerType: string) => {\r\n return get(`AssetInformation/ReadByLoanGuidAsync?loanGuid=${loanGuid}&borrowerType=${borrowerType}`);\r\n};","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction, ManualAssetInformation } from '../store/ManualAssetInformationStore';\r\nimport * as assetInformationService from \"../services/assetInformationService\";\r\n\r\nconst setValidation = (validationError: any, field: string): KnownAction => {\r\n return { type: ActionTypes.SetManualAssetValidation, validationError, field };\r\n}\r\nconst request = (interimLoanStagingid: number): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestAsset,\r\n interimLoanStagingid\r\n };\r\n}\r\nconst requestEncompassAsset = (loanGuid: string): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestEncompassAsset,\r\n loanGuid\r\n };\r\n}\r\nconst receive = (details: ManualAssetInformation[]): KnownAction => {\r\n return { type: ActionTypes.ReceiveAsset, details };\r\n}\r\nconst receiveEncompassAsset = (assets: ManualAssetInformation[]): KnownAction => {\r\n return { type: ActionTypes.ReceiveEncompassAsset, assets };\r\n}\r\nconst handleError = (errorMessage: string): KnownAction => {\r\n return { type: ActionTypes.HandleErrorAsset, errorMessage: errorMessage };\r\n}\r\nconst createAsset = (details: ManualAssetInformation[]): KnownAction => {\r\n return { type: ActionTypes.CreateManualAssetInformation, details: details };\r\n}\r\nconst removeAsset = (id: string): KnownAction => {\r\n return { type: ActionTypes.RemoveManualAssetItemFromInterim, id };\r\n}\r\nconst receiveSystematicAsset = (systematicAssets: ManualAssetInformation[]): KnownAction => {\r\n return { type: ActionTypes.ReceiveSystematicAsset, systematicAssets };\r\n};\r\n\r\nexport const ManualAssetInformationActionCreators = {\r\n updateManualAssetProprty: (value: string, propertyName: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateManualAssetProperty, value: value, propertyName: propertyName });\r\n },\r\n removeManualAssetFromState: (id: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.RemoveManualAssetItem, id });\r\n },\r\n GetManualAssetFromState: (id: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.GetManualAssetItem, id });\r\n },\r\n setValidation: (error: any, field: string): AppThunkAction => (dispatch) => {\r\n dispatch(setValidation(error, field));\r\n },\r\n getAssetInformation: (borrowerType:string,interimLoanStagingid:number): AppThunkAction => (dispatch) => {\r\n dispatch(request(interimLoanStagingid));\r\n dispatch(handleError(\"\"));\r\n assetInformationService.getAll(borrowerType, interimLoanStagingid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem fetching loan information for loanGuid\" + interimLoanStagingid + \" .\");\r\n }\r\n return response.parsedBody as ManualAssetInformation;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data));\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n });\r\n },\r\n setAssetsInformation: (assets: ManualAssetInformation[]): AppThunkAction => (dispatch) => {\r\n dispatch(receive(assets));\r\n },\r\n\r\n getAssetInformationFromEncompass: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n dispatch(requestEncompassAsset(loanGuid));\r\n dispatch(handleError(\"\"));\r\n assetInformationService.getAssetDetailsFromEncompass(loanGuid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem fetching loan information for loanGuid\" + loanGuid + \".\");\r\n }\r\n return response.parsedBody as ManualAssetInformation[];\r\n })\r\n .then((data: any) => {\r\n dispatch(receiveEncompassAsset(data));\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n });\r\n },\r\n\r\n createManualAssetInformation: (interimLoanStagingId:number,data: ManualAssetInformation,borrowerType:string): AppThunkAction => (dispatch) => {\r\n dispatch(handleError(\"\"));\r\n if (interimLoanStagingId != null) {\r\n assetInformationService.updateAsset(data, interimLoanStagingId)\r\n .then((response: any) => {\r\n if (response.parsedBody === \"\") {\r\n throw new Error(\"There was a problem on saving loan information data..\");\r\n }\r\n else {\r\n assetInformationService.getAll(borrowerType, interimLoanStagingId)\r\n .then((responseValue: any) => {\r\n if (!responseValue.ok) {\r\n throw new Error(\"There was a problem fetching loan information for interimLoanStagingId\" + interimLoanStagingId + \".\");\r\n }\r\n return responseValue.parsedBody as ManualAssetInformation;\r\n })\r\n .then((data: any) => {\r\n if (data.length > 0) {\r\n dispatch(createAsset(data));\r\n }\r\n })\r\n }\r\n return response.parsedBody as boolean;\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n });\r\n }\r\n },\r\n\r\n removeAssetFromInterim: (id: string, interimLoanStagingid: number): AppThunkAction => (dispatch) => {\r\n dispatch(handleError(\"\"));\r\n if (interimLoanStagingid != undefined && interimLoanStagingid >0) {\r\n assetInformationService.deleteAssetFromInterim(id, interimLoanStagingid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating Asset for interimLoanStagingid\" + interimLoanStagingid + \".\");\r\n }\r\n dispatch(removeAsset(id));\r\n return response.parsedBody as boolean;\r\n })\r\n .then((isSuccessful: any) => {\r\n if (!isSuccessful) {\r\n dispatch(handleError(\"There was a problem updating Asset for interimLoanStagingid\" + interimLoanStagingid + \".\"));\r\n }\r\n });\r\n }\r\n },\r\n\r\n getSystematicAsset: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n dispatch(requestEncompassAsset(loanGuid));\r\n dispatch(handleError(\"\"));\r\n assetInformationService.getSystematicAsset(loanGuid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem fetching loan information for loanGuid\" + loanGuid + \" .\");\r\n }\r\n return response.parsedBody as ManualAssetInformation[];\r\n })\r\n .then((data: any) => {\r\n dispatch(receiveSystematicAsset(data));\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n });\r\n },\r\n\r\n createAsset: (borrowerType: string, interimLoanStagingid:number): AppThunkAction => (dispatch) => {\r\n assetInformationService.getAll(borrowerType, interimLoanStagingid)\r\n .then((responseValue: any) => {\r\n if (!responseValue.ok) {\r\n throw new Error(\"There was a problem fetching loan information for interimLoanStagingid\" + interimLoanStagingid + \".\");\r\n }\r\n return responseValue.parsedBody as ManualAssetInformation;\r\n })\r\n .then((data: any) => {\r\n if (data.length > 0) {\r\n dispatch(createAsset(data));\r\n }\r\n })\r\n } \r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { getAssetFinicityInformation } from \"../../services/assetInformationService\";\r\nimport * as ManualAssetCreators from \"../../actions/manualAssetInformationActions\";\r\nimport { EnumManualAsset } from \"../common/Enums/EnumManualAsset\";\r\nimport { from } from \"linq\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport { useHistory } from \"react-router\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface PropertyInformationFundSourceComparisonProps {\r\n selectedType: string;\r\n onContinue: () => void;\r\n disabled: boolean | undefined;\r\n}\r\ninterface AssetFinicityInformation {\r\n borrowerUsedFinicity: boolean;\r\n coBorrowerUsedFinicity: boolean;\r\n}\r\n\r\nconst PropertyInformationFundSourceComparison = (\r\n props: PropertyInformationFundSourceComparisonProps\r\n) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [showMessage, setShowMessage] = useState(false);\r\n const [finicityInfo, setFinicityInfo] = useState({} as AssetFinicityInformation);\r\n const [assetTypes, setAssetTypes] = useState([]);\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...ManualAssetCreators.ManualAssetInformationActionCreators,\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n const history = useHistory();\r\n\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.accountInformation?.loanGuid ?? undefined\r\n );\r\n const interimLoanStagingId = useSelector(\r\n (state: ApplicationState) => state.loan?.interimLoanStagingId ?? undefined\r\n );\r\n const assets = useSelector(\r\n (state: ApplicationState) => state.manualAssetInformation?.details\r\n );\r\n\r\n const getFinicity = async () => {\r\n var result = await getAssetFinicityInformation(loanGuid ?? \"\");\r\n if (result.ok && !result.parsedBody?.hasError) {\r\n setFinicityInfo(result.parsedBody?.body);\r\n }\r\n };\r\n\r\n\r\n useEffect(() => {\r\n setAssetTypes(\r\n from(assets ?? [])\r\n .select((x) => x.assetType ?? \"\")\r\n .distinct()\r\n .toArray()\r\n );\r\n }, [assets]);\r\n\r\n useEffect(() => {\r\n if (interimLoanStagingId && interimLoanStagingId >0) {\r\n actions.getAssetInformation(\"Both\", interimLoanStagingId);\r\n getFinicity();\r\n }\r\n }, [loanGuid]);\r\n\r\n const noValidAssetsForDownPaymentSource = (source: string): boolean => {\r\n let applicableTypes = getApplicableAssetTypesForSource(source);\r\n\r\n const usedFinicity =\r\n finicityInfo?.borrowerUsedFinicity || finicityInfo?.coBorrowerUsedFinicity;\r\n if (!usedFinicity && applicableTypes.length > 0) {\r\n applicableTypes = from(applicableTypes)\r\n .select((x) => x.replace(/\\s/g, \"\"))\r\n .toArray();\r\n return !from(assetTypes).any((x) => applicableTypes.includes(x));\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const returnAssetTypes = (selectedType: string) => {\r\n switch (selectedType) {\r\n case \"CheckingSavings\":\r\n return EnumManualAsset.CheckingSavings;\r\n case \"RetirementFunds\":\r\n return EnumManualAsset.RetirementFund;\r\n case \"EquityOnPendingSale\":\r\n return EnumManualAsset.EquityOnPendingSale;\r\n case \"SecuredBorrowedFunds\":\r\n return EnumManualAsset.SecuredBorrowedFunds;\r\n case \"StocksAndBonds\":\r\n return EnumManualAsset.StocksAndBonds;\r\n case \"GiftFunds\":\r\n return EnumManualAsset.GiftFunds;\r\n default:\r\n return selectedType;\r\n }\r\n };\r\n\r\n const getApplicableAssetTypesForSource = (source: string): string[] => {\r\n switch (source) {\r\n case \"StocksAndBonds\":\r\n return [\"Money Market Fund\", \"Mutual Fund\", \"Stock\", \"Stock Options\", \"Bond\"];\r\n\r\n case \"CheckingSavings\":\r\n return [\"Checking Account\", \"Savings Account\"];\r\n\r\n case \"RetirementFunds\":\r\n return [\"Retirement Fund\"];\r\n }\r\n\r\n return [];\r\n };\r\n\r\n const onModalClose = () => {\r\n setShowMessage(false);\r\n };\r\n\r\n const navigateToManualAssets = () => {\r\n history.push(\"/manual-asset-information\");\r\n };\r\n\r\n useEffect(() => {\r\n setShowMessage(false);\r\n if (props.selectedType) {\r\n const shouldShowMessage = noValidAssetsForDownPaymentSource(props.selectedType);\r\n if (shouldShowMessage) {\r\n setShowMessage(true);\r\n } else {\r\n props.onContinue();\r\n }\r\n }\r\n }, [props.selectedType]);\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech('Asset Type Mismatch')}>\r\n Asset Type Mismatch\r\n \r\n \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('The Source of down payment you selected was' + returnAssetTypes(props.selectedType))}>The Source of down payment you selected was {returnAssetTypes(props.selectedType)} .
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(' One of your manual Asset Types needs to be')}>\r\n One of your manual Asset Types needs to be {getApplicableAssetTypesForSource(props.selectedType)?.map((item) => (\r\n stopSpeech()} onMouseOver={() => textToSpeech(item)}> {item}, \r\n ))}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PropertyInformationFundSourceComparison;","import React, { useEffect, useState } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport PropertyInformationPurchase from \"./PropertyInformationPurchase\";\r\nimport PropertyInformationRefinance from \"./PropertyInformationRefinance\";\r\nimport { useNavigationWithHistory } from \"hooks/useNavigationWithHistory\";\r\nimport { save } from \"../../services/propertyInformationService\";\r\nimport { useHistory } from \"react-router\";\r\nimport { PropertyInformationState } from \"store/propertyInformationStore\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { propertyInformationActionCreators } from \"../../actions/propertyInformationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\n\r\nexport enum PropertyInformationStep {\r\n // Purchase\r\n PropertyLocation = 1,\r\n RealtorQuestion = 2,\r\n DownPaymentSource = 3,\r\n LoanValueAndTerm = 4,\r\n\r\n // Refinance\r\n Address = 5,\r\n RefinanceQuestions = 6,\r\n Finished = 7\r\n}\r\n\r\nconst PropertyInformation = () => {\r\n const [showLoading, setShowLoading] = useState(false);\r\n const [saveTriggered, setSaveTriggered] = useState(false);\r\n const [isReadyToSave, setIsReadyToSave] = useState(false);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const history = useHistory();\r\n\r\n const actions = { ...bindActionCreators({ ...propertyInformationActionCreators, ...TaskMenuCreators, ...loanUpdateResponseActionCreators }, useDispatch()), };\r\n const state: PropertyInformationState = useSelector((state: ApplicationState) => state.propertyInformation as PropertyInformationState);\r\n const loanGuid = useSelector((state: ApplicationState) => state.accountInformation?.loanGuid ?? undefined);\r\n const isLoanCompleted = useSelector((state: ApplicationState) => state.loan?.isLoanCompleted ?? undefined);\r\n const interimLoanStagingId = useSelector((state: ApplicationState) => state.loan?.interimLoanStagingId ?? undefined);\r\n\r\n useEffect(() => {\r\n if (interimLoanStagingId) {\r\n actions.getPropertyInformation(interimLoanStagingId);\r\n }\r\n }, []);\r\n \r\n\r\n const { CurrentStep, ChangeStep,StepHistory, Navigation, IsAtInitialStep } =\r\n useNavigationWithHistory(state.purposeType === \"Purchase\" ? PropertyInformationStep.PropertyLocation\r\n : PropertyInformationStep.Address);\r\n\r\n useEffect(() => {\r\n if (IsAtInitialStep) {\r\n Navigation.SetBackOnClick(() => {\r\n actions.setLoanIsDirty(false);\r\n history.push(\"liability\");\r\n })\r\n }\r\n }, [IsAtInitialStep]);\r\n\r\n useEffect(() => {\r\n if (state.purposeType === \"Refinance\") {\r\n ChangeStep(PropertyInformationStep.Address);\r\n } else if (state.purposeType === \"Purchase\") {\r\n ChangeStep(PropertyInformationStep.PropertyLocation);\r\n }\r\n }, [state.purposeType]);\r\n\r\n // To ensure that the final redux action has finished, we need to\r\n // monitor the values associated with the last step in each process and once they\r\n // are set, then we actually call the API\r\n useEffect(() => {\r\n if (state.purposeType === \"Refinance\") {\r\n setIsReadyToSave(state.currentMortgageBalance !== undefined || state.estimatedCurrentValue !== undefined || state.yearPropertyBuilt !== undefined ||\r\n state.taxesPerYear !== undefined || state.homeOwnersInsurancePerYear !== undefined);\r\n } else {\r\n setIsReadyToSave(state.loanTermInYears !== undefined);\r\n }\r\n }, [state.purposeType, state.loanTermInYears, state.currentMortgageBalance]);\r\n\r\n useEffect(() => {\r\n if (isReadyToSave && saveTriggered) {\r\n setSaveTriggered(false);\r\n if (!isLoanCompleted) {\r\n savePropertyInformation();\r\n }\r\n else {\r\n history.push({ pathname: \"/government-questions\", state: { args: \"borrower\" } });\r\n }\r\n }\r\n }, [isReadyToSave, saveTriggered]);\r\n\r\n useEffect(() => {\r\n Navigation.SetContinueDisabled(showLoading);\r\n }, [showLoading]);\r\n\r\n const startSaveProcess = async () => {\r\n if (!isLoanCompleted) {\r\n setShowLoading(true);\r\n }\r\n setSaveTriggered(true);\r\n };\r\n\r\n const savePropertyInformation = async () => {\r\n if (state.purposeType) {\r\n setShowLoading(true);\r\n var response = await save(state, state.purposeType, loanGuid);\r\n if (!response.ok) {\r\n console.log(\"error\");\r\n }\r\n else {\r\n let result = response.parsedBody as LoanUpdateResponseState;\r\n if (response.ok && result.isEncompassDown) {\r\n actions.setIsEncompassDown(true);\r\n history.push(\"/dashboard\");\r\n }\r\n else {\r\n actions.setLoanIsDirty(false);\r\n history.push({ pathname: \"/government-questions\", state: { args: \"borrower\" } });\r\n }\r\n }\r\n\r\n setShowLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n\r\n {StepHistory.includes(PropertyInformationStep.PropertyLocation) && (\r\n {\r\n Navigation.ShowContinue(() => {\r\n if (nextStep === PropertyInformationStep.Finished) {\r\n startSaveProcess();\r\n } else {\r\n ChangeStep(nextStep);\r\n }\r\n }, isDisabled || showLoading || isEncompassDown);\r\n }}\r\n currentStep={CurrentStep}\r\n disabled={isLoanCompleted}\r\n />\r\n )}\r\n {StepHistory.includes(PropertyInformationStep.Address) && (\r\n Navigation.ResetContinue()}\r\n setContinueDisabled={(isDisabled) => {\r\n Navigation.SetContinueDisabled(isDisabled);\r\n }}\r\n showContinue={(nextStep, isDisabled) => {\r\n Navigation.ShowContinue(() => ChangeStep(nextStep), isDisabled || isEncompassDown);\r\n }}\r\n setSaveOnContinue={() => {\r\n Navigation.ShowContinue(() => startSaveProcess());\r\n }}\r\n currentStep={CurrentStep}\r\n disabled={isLoanCompleted}\r\n />\r\n )}\r\n {showLoading && (\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default PropertyInformation;\r\n","import React, { useState } from \"react\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport PropertyInformationFundSourceComparison from \"./PropertyInformationFundSourceComparison\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport checkingSavings from \"assets/infographics/propertyInformation/funds/checkingSavings.svg\";\r\nimport giftFunds from \"assets/infographics/propertyInformation/funds/giftFunds.svg\";\r\nimport pendingSale from \"assets/infographics/propertyInformation/funds/pendingSale.svg\";\r\nimport personalInvestmentAccount from \"assets/infographics/propertyInformation/funds/personalInvestmentAccount.svg\";\r\nimport retirementFunds from \"assets/infographics/propertyInformation/funds/retirementFunds.svg\";\r\nimport securedBorrowedFunds from \"assets/infographics/propertyInformation/funds/securedBorrowedFunds.svg\";\r\nimport { EnumManualAsset } from \"../common/Enums/EnumManualAsset\";\r\n\r\nexport interface PropertyInformationFundSourceProps {\r\n emitValueSelection: (value: string, propertyName: string) => void;\r\n value?: string;\r\n disabled: boolean | undefined;\r\n}\r\n\r\nconst PropertyInformationFundSource = (props: PropertyInformationFundSourceProps) => {\r\n const [selectedValue, setSelectedValue] = useState(\"\");\r\n\r\n const cardClicked = (value: string) => {\r\n setSelectedValue(value);\r\n };\r\n\r\n let downPaymentSourceChoices: Choice[] = [\r\n {\r\n text: EnumManualAsset.CheckingSavings,\r\n onClick: () => {\r\n cardClicked(\"CheckingSavings\");\r\n },\r\n icon: checkingSavings,\r\n toolTipText: EnumManualAsset.CheckingSavings,\r\n className: props.value === \"CheckingSavings\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: EnumManualAsset.RetirementFunds,\r\n onClick: () => {\r\n cardClicked(\"RetirementFunds\");\r\n },\r\n icon: retirementFunds,\r\n toolTipText: EnumManualAsset.RetirementFunds,\r\n className: props.value === \"RetirementFunds\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: EnumManualAsset.EquityOnPendingSale,\r\n onClick: () => {\r\n cardClicked(\"EquityOnPendingSale\");\r\n },\r\n icon: pendingSale,\r\n toolTipText: EnumManualAsset.EquityOnPendingSale,\r\n className: props.value === \"EquityOnPendingSale\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: EnumManualAsset.SecuredBorrowedFunds,\r\n onClick: () => {\r\n cardClicked(\"SecuredBorrowedFunds\");\r\n },\r\n icon: securedBorrowedFunds,\r\n toolTipText: EnumManualAsset.SecuredBorrowedFunds,\r\n className: props.value === \"SecuredBorrowedFunds\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: EnumManualAsset.StocksAndBonds,\r\n onClick: () => {\r\n cardClicked(\"StocksAndBonds\");\r\n },\r\n icon: personalInvestmentAccount,\r\n toolTipText: EnumManualAsset.StocksAndBonds,\r\n className: props.value === \"StocksAndBonds\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: EnumManualAsset.GiftFunds,\r\n onClick: () => {\r\n cardClicked(\"GiftFunds\");\r\n },\r\n icon: giftFunds,\r\n toolTipText: EnumManualAsset.GiftFunds,\r\n className: props.value === \"GiftFunds\" ? styles.selected : \"\"\r\n },\r\n ];\r\n return (\r\n
    \r\n \r\n props.emitValueSelection(selectedValue, \"downPaymentSource\")}\r\n disabled={props.disabled}\r\n >\r\n
    \r\n );\r\n};\r\n\r\nexport default PropertyInformationFundSource;\r\n","import React, { useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as PropertyInformationActions from \"../../actions/propertyInformationActions\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport { PropertyInformationState } from \"../../store/propertyInformationStore\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport { Rule } from \"../constants/validation\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ninterface PropertyInformationRealtorProps {\r\n disabledRealtor: (isValid: boolean) => any;\r\n disabled: boolean | undefined;\r\n}\r\n\r\nconst PropertyInformationRealtor = (props: PropertyInformationRealtorProps) => {\r\n const [numbers, setNumbers] = React.useState(\"\");\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...PropertyInformationActions.propertyInformationActionCreators, ...TaskMenuCreators\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n\r\n const state: PropertyInformationState = useSelector(\r\n (state: ApplicationState) => state.propertyInformation as PropertyInformationState\r\n );\r\n\r\n const handlePhoneInput = (value: string) => {\r\n setNumbers(value.replace(/-/g, \"\").replace(/ /, \"\"))\r\n actions.updatePropertyInformationField(value, \"realtorPhoneNumber\")\r\n actions.setLoanIsDirty(true);\r\n };\r\n\r\n useEffect(() => {\r\n let isInvalid = false;\r\n if ((!isNullOrWhiteSpace(state.realtorEmailAddress) && !Rule.EmailValidation.value.test(String(state.realtorEmailAddress).toLowerCase()))\r\n || (!isNullOrWhiteSpace(state.realtorPhoneNumber) && state.realtorPhoneNumber && state.realtorPhoneNumber.length < 10)\r\n ) {\r\n isInvalid = true;\r\n } else {\r\n isInvalid = false;\r\n }\r\n props.disabledRealtor(isInvalid);\r\n }, [state.realtorEmailAddress, state.realtorPhoneNumber]);\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Tell us about this realtor optional')}>Tell us about this realtor (Optional)
    \r\n
    \r\n
    \r\n \r\n {\r\n actions.updatePropertyInformationField(e.target.value, e.target.name);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n actions.updatePropertyInformationField(e.target.value, e.target.name);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n\r\n handlePhoneInput(values.value)}\r\n />\r\n {(numbers.length > 1 && numbers.length < 10) && stopSpeech()} onMouseOver={() => textToSpeech('Invalid Number')}>Invalid number.\r\n }\r\n
    \r\n
    \r\n \r\n\r\n {\r\n actions.updatePropertyInformationField(e.target.value, e.target.name);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n rule={{\r\n pattern: Rule.EmailValidation\r\n }}\r\n />\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PropertyInformationRealtor;\r\n","import InfographicSideLayout from \"components/common/Layout/InfographicSideLayout\";\r\nimport React from \"react\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\nexport interface TwoChoiceQuestionProps {\r\n optionOne: ButtonProps;\r\n optionTwo: ButtonProps;\r\n children?: React.ReactNode;\r\n infographic?: string;\r\n value?: any;\r\n disabled: boolean | undefined;\r\n}\r\n\r\ninterface ButtonProps {\r\n message?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst TwoChoiceQuestion = (props: TwoChoiceQuestionProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n <>\r\n \r\n {props.children}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default TwoChoiceQuestion;\r\n","import React, { } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport * as PropertyInformationActions from \"../../actions/propertyInformationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { NumberFormatInput } from \"components/common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\n\r\nexport interface PropertyInformationCurrencyInputProps {\r\n value: any | undefined;\r\n parameterName: string;\r\n disabled: boolean | undefined;\r\n}\r\n\r\nconst PropertyInformationCurrencyInput = (\r\n props: PropertyInformationCurrencyInputProps\r\n) => {\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...PropertyInformationActions.propertyInformationActionCreators, ...TaskMenuCreators\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n return (\r\n
    \r\n {\r\n\r\n actions.updatePropertyInformationField(\r\n values.value,\r\n props.parameterName,\r\n false\r\n );\r\n actions.setLoanIsDirty(true);\r\n }}\r\n placeholder=\"$00.00\"\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={0}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default PropertyInformationCurrencyInput;\r\n","import React, { useEffect } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as PropertyInformationActions from \"../../actions/propertyInformationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport InfographicSideLayout from \"../common/Layout/InfographicSideLayout\";\r\nimport PropertyAddress from \"./PropertyAddress\";\r\nimport PropertyInformationFundSource from \"./PropertyInformationFundSource\";\r\nimport PropertyInformationRealtor from \"./PropertyInformationRealtor\";\r\nimport TwoChoiceQuestion from \"./TwoChoiceQuestion\";\r\nimport addressInfographic from \"../../assets/infographics/propertyInformation/address.svg\";\r\nimport loanEstimateInfographic from \"../../assets/infographics/propertyInformation/loanEstimate.svg\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport { PropertyInformationState } from \"../../store/propertyInformationStore\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { PropertyInformationStep } from \"./PropertyInformation\";\r\nimport Currency from \"components/common/Currency\";\r\nimport PropertyInformationCurrencyInput from \"./PropertyInformationCurrencyInput\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport NumberFormat from 'react-number-format';\r\nimport { NumberFormatValues } from \"react-number-format\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype PropertyInformationProps = {\r\n changeStep: (step: PropertyInformationStep) => void;\r\n showContinue: (nextStep: PropertyInformationStep, isDisabled?: boolean) => void;\r\n currentStep: PropertyInformationStep;\r\n disabled: boolean | undefined;\r\n};\r\n\r\nconst PropertyInformationPurchase = (props: PropertyInformationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [propertyAddressValid, setPropertyAddressValid] = React.useState(false);\r\n const [disabledRealtor, setDisabledRealtor] = React.useState(false);\r\n\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...PropertyInformationActions.propertyInformationActionCreators, ...TaskMenuCreators\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n\r\n const state: PropertyInformationState = useSelector(\r\n (state: ApplicationState) => state.propertyInformation as PropertyInformationState\r\n );\r\n\r\n useEffect(() => {\r\n switch (props.currentStep) {\r\n case PropertyInformationStep.PropertyLocation: {\r\n props.showContinue(PropertyInformationStep.RealtorQuestion, !propertyAddressValid);\r\n break;\r\n }\r\n case PropertyInformationStep.DownPaymentSource: {\r\n props.showContinue(PropertyInformationStep.LoanValueAndTerm, (isNullOrWhiteSpace(state.downPaymentSource)));\r\n break;\r\n }\r\n case PropertyInformationStep.RealtorQuestion: {\r\n if (state.downPayment && state.totalAvailableToSpendOnNewHome) {\r\n props.showContinue(PropertyInformationStep.DownPaymentSource, (disabledRealtor || (state.buyExistingHome === undefined || state.buyExistingHome === null) ||\r\n isNullOrWhiteSpace(state.downPayment) || Number(state.downPayment) > Number(state.totalAvailableToSpendOnNewHome) || state.downPaymentPercentage === 0 ||\r\n ((!state.buyExistingHome && (state.ownLand === undefined || state.ownLand === null)) && (state.ownLand && isNullOrWhiteSpace(state.landValue)) && (state.landValue && state.landValue?.length > 14) && (state.securedConstructionFinancing === undefined || state.securedConstructionFinancing === null)) ||\r\n (!state.buyExistingHome && state.ownLand && isNullOrWhiteSpace(state.landValue)) ||\r\n isNullOrWhiteSpace(state.totalAvailableToSpendOnNewHome)));\r\n } else {\r\n props.showContinue(PropertyInformationStep.DownPaymentSource, (isNullOrWhiteSpace(state.downPayment) || isNullOrWhiteSpace(state.totalAvailableToSpendOnNewHome) ||\r\n ((!state.buyExistingHome && (state.ownLand === undefined || state.ownLand === null)) && (state.ownLand && isNullOrWhiteSpace(state.landValue)) && (state.landValue && state.landValue?.length > 14) && (state.securedConstructionFinancing === undefined || state.securedConstructionFinancing === null))));\r\n }\r\n break;\r\n }\r\n case PropertyInformationStep.LoanValueAndTerm: {\r\n props.showContinue(PropertyInformationStep.Finished, isNullOrWhiteSpace(state.loanTermInYears));\r\n break;\r\n }\r\n\r\n }\r\n });\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n useEffect(() => {\r\n switch (props.currentStep) {\r\n case PropertyInformationStep.PropertyLocation: {\r\n props.showContinue(PropertyInformationStep.RealtorQuestion, !propertyAddressValid);\r\n break;\r\n }\r\n case PropertyInformationStep.DownPaymentSource: {\r\n props.showContinue(PropertyInformationStep.LoanValueAndTerm, (isNullOrWhiteSpace(state.downPaymentSource)));\r\n break;\r\n }\r\n case PropertyInformationStep.RealtorQuestion: {\r\n if (state.downPayment && state.totalAvailableToSpendOnNewHome) {\r\n props.showContinue(PropertyInformationStep.DownPaymentSource, (disabledRealtor || (state.buyExistingHome === undefined || state.buyExistingHome === null) ||\r\n isNullOrWhiteSpace(state.downPayment) || Number(state.downPayment) > Number(state.totalAvailableToSpendOnNewHome) || state.downPaymentPercentage === 0 ||\r\n ((!state.buyExistingHome && (state.ownLand === undefined || state.ownLand === null)) && (state.ownLand && isNullOrWhiteSpace(state.landValue)) && (state.landValue && state.landValue?.length > 14) && (state.securedConstructionFinancing === undefined || state.securedConstructionFinancing === null)) ||\r\n (!state.buyExistingHome && state.ownLand && isNullOrWhiteSpace(state.landValue)) ||\r\n isNullOrWhiteSpace(state.totalAvailableToSpendOnNewHome)));\r\n } else {\r\n props.showContinue(PropertyInformationStep.DownPaymentSource, (isNullOrWhiteSpace(state.downPayment) || isNullOrWhiteSpace(state.totalAvailableToSpendOnNewHome) ||\r\n ((!state.buyExistingHome && (state.ownLand === undefined || state.ownLand === null)) && (state.ownLand && isNullOrWhiteSpace(state.landValue)) && (state.landValue && state.landValue?.length > 14) && (state.securedConstructionFinancing === undefined || state.securedConstructionFinancing === null))));\r\n }\r\n break;\r\n }\r\n case PropertyInformationStep.LoanValueAndTerm: {\r\n props.showContinue(PropertyInformationStep.Finished, isNullOrWhiteSpace(state.loanTermInYears));\r\n break;\r\n }\r\n\r\n }\r\n }, [state, props.currentStep, propertyAddressValid, disabledRealtor]);\r\n\r\n useEffect(() => {\r\n actions.calculateEstimatedLoanAmount();\r\n }, [state.totalAvailableToSpendOnNewHome, state.downPayment]);\r\n\r\n useEffect(() => {\r\n if (!state.ownLand) {\r\n actions.updatePropertyInformationField(\"\", \"landValue\");\r\n }\r\n }, [state.ownLand]);\r\n\r\n let propertyInformationMarkup = <>;\r\n\r\n switch (props.currentStep) {\r\n case PropertyInformationStep.PropertyLocation: {\r\n propertyInformationMarkup = (\r\n \r\n {\r\n setPropertyAddressValid(isValid);\r\n actions.setLoanIsDirty(true); //loan state dirty as city state zip changes\r\n }}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n break;\r\n }\r\n case PropertyInformationStep.RealtorQuestion: {\r\n propertyInformationMarkup = (\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Are you working with a realtor?\")}>Are you working with a realtor? *
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n {state.workingWithRealtor && (\r\n \r\n )}\r\n\r\n {(state.workingWithRealtor != undefined || state.workingWithRealtor != null) && (\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Are you interested in purchasing an existing home or building a new home?\")}>Are you interested in purchasing an existing home or building a new home? *
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n\r\n {((state.workingWithRealtor != undefined || state.workingWithRealtor != null) && !state.buyExistingHome && (state.buyExistingHome != undefined || state.buyExistingHome != null)) && (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Do you own the land you are going to build on?\")}>Do you own the land you are going to build on? *
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {!state.buyExistingHome && state.ownLand && (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"What is the value of the land you own?\")}>What is the value of the land you own? *
    \r\n
    \r\n \r\n {(state.landValue && state.landValue.length > 14) &&\r\n stopSpeech()} onMouseOver={() => textToSpeech(\"Input limit exceeds, please enter a valid amount!\")}>Input limit exceeds, please enter a valid amount!}\r\n
    \r\n
    \r\n )}\r\n\r\n {(!state.buyExistingHome && (state.ownLand != undefined || state.ownLand != null)) && (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Have you already secured construction financing?\")}>Have you already secured construction financing? *
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {((!state.buyExistingHome && (state.ownLand != undefined || state.ownLand != null) && (state.securedConstructionFinancing != undefined || state.securedConstructionFinancing != null)) || state.buyExistingHome) && (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"What is the price you are looking to spend on your new home?\")}>What is the price you are looking to spend on your new home? *
    \r\n
    \r\n \r\n {(state.totalAvailableToSpendOnNewHome && state.totalAvailableToSpendOnNewHome.length > 11) &&\r\n stopSpeech()} onMouseOver={() => textToSpeech(\"Input limit exceeds, please enter a valid amount!\")}>Input limit exceeds, please enter a valid amount!}\r\n
    \r\n
    \r\n )} \r\n \r\n {((!state.buyExistingHome && (state.ownLand != undefined || state.ownLand != null) && (state.securedConstructionFinancing != undefined || state.securedConstructionFinancing != null)\r\n && !isNullOrWhiteSpace(state.totalAvailableToSpendOnNewHome) && (state.totalAvailableToSpendOnNewHome && state.totalAvailableToSpendOnNewHome.length <= 11))\r\n || (state.buyExistingHome && !isNullOrWhiteSpace(state.totalAvailableToSpendOnNewHome) && (state.totalAvailableToSpendOnNewHome && state.totalAvailableToSpendOnNewHome.length <= 11))) && (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"How much are you able to put as a down payment?\")}>How much are you able to put as a down payment? *
    \r\n
    \r\n\t
    \t\r\n
    \r\n \r\n {\r\n actions.updatePropertyInformationField((e.target.value as unknown) as number, \"downPaymentPercentage\", true);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n />\r\n
    \r\n
    \r\n OR\r\n
    \r\n
    \r\n {\r\n actions.updatePropertyInformationField(values.value, \"downPayment\", false);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={0}\r\n />\r\n
    \r\n
    \r\n
    \r\n {(state.totalAvailableToSpendOnNewHome\r\n && state.downPayment\r\n && Number(state.totalAvailableToSpendOnNewHome) < Number(state.downPayment))\r\n && stopSpeech()} onMouseOver={() => textToSpeech(\"Down payment can not exceed the desired amount!\")}>Down payment can not exceed the desired amount!\r\n }\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n break;\r\n }\r\n case PropertyInformationStep.DownPaymentSource: {\r\n propertyInformationMarkup = (\r\n {\r\n actions.updatePropertyInformationField(value, propertyName);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n value={state.downPaymentSource}\r\n />\r\n );\r\n break;\r\n }\r\n case PropertyInformationStep.LoanValueAndTerm: {\r\n propertyInformationMarkup = (\r\n <>\r\n {\r\n actions.updatePropertyInformationField(\"30\", \"loanTermInYears\", false);\r\n },\r\n }}\r\n optionTwo={{\r\n message: \"15-Year\",\r\n onClick: () => {\r\n actions.updatePropertyInformationField(\"15\", \"loanTermInYears\", false);\r\n },\r\n }}\r\n value={isNullOrWhiteSpace(state.loanTermInYears) ? state.loanTermInYears : (state.loanTermInYears === \"30\" ? true : false)}\r\n >\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Estimated Loan Amount')}>Estimated Loan Amount

    \r\n

    \r\n \r\n

    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Which Loan Term do you plan to take')}>Which Loan Term do you plan to take?

    \r\n \r\n \r\n );\r\n break;\r\n }\r\n }\r\n\r\n return <>{propertyInformationMarkup};\r\n};\r\n\r\nexport default PropertyInformationPurchase;\r\n","import * as React from \"react\";\r\nimport Infographic from \"../Infographic\";\r\n\r\ninterface InfographicTopLayoutProps {\r\n children?: React.ReactNode;\r\n infographic?: string;\r\n className?: string;\r\n}\r\n\r\nconst InfographicTopLayout = (props: InfographicTopLayoutProps) => {\r\n return (\r\n
    \r\n {props.infographic && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    {props.children}
    \r\n
    \r\n );\r\n};\r\n\r\nexport default InfographicTopLayout;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as PropertyInformationActions from \"../../actions/propertyInformationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport InfographicSideLayout from \"../common/Layout/InfographicSideLayout\";\r\nimport PropertyAddress from \"./PropertyAddress\";\r\nimport PropertyInformationCurrencyInput from \"./PropertyInformationCurrencyInput\";\r\nimport addressInfographic from \"../../assets/infographics/propertyInformation/address.svg\";\r\nimport styles from \"./propertyInformation.module.scss\";\r\nimport { PropertyInformationState } from \"../../store/propertyInformationStore\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { PropertyInformationStep } from \"./PropertyInformation\";\r\nimport InfographicTopLayout from \"../common/Layout/InfographicTopLayout\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype PropertyInformationProps = {\r\n changeStep: (step: PropertyInformationStep) => void;\r\n showContinue: (nextStep: PropertyInformationStep, isDisabled?: boolean) => void;\r\n setSaveOnContinue: () => void;\r\n resetContinue: () => void;\r\n setContinueDisabled: (isDisabled: boolean) => void;\r\n currentStep: PropertyInformationStep;\r\n disabled: boolean | undefined;\r\n};\r\n\r\nconst PropertyInformationRefinance = (props: PropertyInformationProps) => {\r\n const [propertyAddressValid, setPropertyAddressValid] = useState(false);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const state: PropertyInformationState = useSelector(\r\n (state: ApplicationState) => state.propertyInformation as PropertyInformationState\r\n );\r\n\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...PropertyInformationActions.propertyInformationActionCreators, ...TaskMenuCreators\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n useEffect(() => {\r\n if ((state.taxesPerYear && state.taxesPerYear?.length <= 15 && state.taxesPerYear?.length > 1) &&\r\n (state.estimatedCurrentValue !== undefined && state.estimatedCurrentValue?.length <= 10 && state.estimatedCurrentValue?.length > 1) &&\r\n (state.yearPropertyBuilt !== undefined && state.yearPropertyBuilt?.length == 4 && state.yearPropertyBuilt < new Date().getFullYear().toString()) &&\r\n (state.homeOwnersInsurancePerYear !== undefined && state.homeOwnersInsurancePerYear?.length <= 15 && state.homeOwnersInsurancePerYear?.length > 1) &&\r\n (state.currentMortgageBalance !== undefined && state.currentMortgageBalance && state.currentMortgageBalance?.length <= 14 && state.currentMortgageBalance?.length > 1))\r\n {\r\n //divide by 12 for monthly tax.\r\n //round it to two most nearest decimal places.\r\n let value = Math.round(((+state.taxesPerYear / 12) + Number.EPSILON) * 100) / 100;\r\n actions.updatePropertyInformationField(\r\n value,\r\n \"monthlyTax\",\r\n false\r\n );\r\n }\r\n }, [state.taxesPerYear])\r\n\r\n useEffect(() => {\r\n switch (props.currentStep) {\r\n case PropertyInformationStep.Address: {\r\n props.showContinue(PropertyInformationStep.RefinanceQuestions, !propertyAddressValid);\r\n break;\r\n }\r\n case PropertyInformationStep.RefinanceQuestions: {\r\n if ((state.taxesPerYear && state.taxesPerYear?.length <= 15 && state.taxesPerYear?.length > 1) &&\r\n (state.estimatedCurrentValue !== undefined && state.estimatedCurrentValue?.length <= 10 && state.estimatedCurrentValue?.length > 1) &&\r\n (state.yearPropertyBuilt !== undefined && state.yearPropertyBuilt?.length == 4 && state.yearPropertyBuilt < new Date().getFullYear().toString()) &&\r\n (state.homeOwnersInsurancePerYear !== undefined && state.homeOwnersInsurancePerYear?.length <= 15 && state.homeOwnersInsurancePerYear?.length > 1) &&\r\n (state.currentMortgageBalance !== undefined && state.currentMortgageBalance && state.currentMortgageBalance?.length <= 14 && state.currentMortgageBalance?.length > 1)) {\r\n props.setSaveOnContinue();\r\n }\r\n else {\r\n props.setContinueDisabled(true);\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n\r\n // Update Continue button disabled value on value changes\r\n useEffect(() => {\r\n switch (props.currentStep) {\r\n case PropertyInformationStep.Address: {\r\n props.setContinueDisabled(!propertyAddressValid);\r\n break;\r\n }\r\n case PropertyInformationStep.RefinanceQuestions: {\r\n props.setContinueDisabled(\r\n (state.estimatedCurrentValue === undefined || state.estimatedCurrentValue?.length > 10 || state.estimatedCurrentValue?.length < 1) ||\r\n (state.yearPropertyBuilt === undefined || state.yearPropertyBuilt?.length != 4 || state.yearPropertyBuilt > new Date().getFullYear().toString()) ||\r\n (state.taxesPerYear === undefined || state.taxesPerYear == null || state.taxesPerYear?.length > 15 || state.taxesPerYear?.length < 1) ||\r\n (state.homeOwnersInsurancePerYear === undefined || state.homeOwnersInsurancePerYear?.length > 15 || state.homeOwnersInsurancePerYear?.length < 1) ||\r\n (state.currentMortgageBalance === undefined || state.currentMortgageBalance == null || state.currentMortgageBalance?.length > 14 || state.currentMortgageBalance?.length < 1));\r\n break;\r\n } \r\n }\r\n }, [props.currentStep,\r\n state.estimatedCurrentValue,\r\n state.yearPropertyBuilt,\r\n state.taxesPerYear,\r\n state.homeOwnersInsurancePerYear,\r\n propertyAddressValid,\r\n state.currentMortgageBalance,\r\n ]);\r\n\r\n let propertyInformationMarkup = <>;\r\n\r\n switch (props.currentStep) {\r\n case PropertyInformationStep.Address: {\r\n propertyInformationMarkup = (\r\n \r\n {\r\n setPropertyAddressValid(isValid);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n disabled={props.disabled}\r\n />\r\n \r\n );\r\n break;\r\n }\r\n case PropertyInformationStep.RefinanceQuestions: {\r\n propertyInformationMarkup = (\r\n \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('What is the estimated current value of your property?')}>What is the estimated current value of your property?
    \r\n
    \r\n \r\n {(state.estimatedCurrentValue && state.estimatedCurrentValue.length > 10) && stopSpeech()} onMouseOver={() => textToSpeech('Input limit exceeds, please enter a valid amount!')}>Input limit exceeds, please enter a valid amount!}\r\n
    \r\n
    \r\n \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('What year was your property built?')}>What year was your property built?
    \r\n
    \r\n {\r\n if (e.target.value?.length <= 4) {\r\n actions.updatePropertyInformationField(\r\n e.target.value,\r\n e.target.name,\r\n false\r\n );\r\n actions.setLoanIsDirty(true);\r\n }\r\n }}\r\n />\r\n {(isNullOrUndefined(state.yearPropertyBuilt) || state.yearPropertyBuilt?.length != 4 || state.yearPropertyBuilt) > new Date().getFullYear().toString() ? stopSpeech()} onMouseOver={() => textToSpeech('Please enter a valid year built')}>Please enter a valid year built. : \"\"}\r\n
    \r\n
    \r\n\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('What are your property taxes per year?')}>What are your property taxes per year?
    \r\n
    \r\n \r\n {(state.taxesPerYear && state.taxesPerYear.length > 15) && stopSpeech()} onMouseOver={() => textToSpeech('Invalid value')}>invalid value}\r\n
    \r\n
    \r\n \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('What is your homeowner’s insurance cost per year?')}>What is your homeowner’s insurance cost per year?
    \r\n
    \r\n \r\n {(state.homeOwnersInsurancePerYear && state.homeOwnersInsurancePerYear.length > 15) && stopSpeech()} onMouseOver={() => textToSpeech('Invalid value')}>invalid value}\r\n
    \r\n
    \r\n \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('What is your current mortgage balance?')}>What is your current mortgage balance?
    \r\n
    \r\n \r\n {(state.currentMortgageBalance && state.currentMortgageBalance.length > 14) && stopSpeech()} onMouseOver={() => textToSpeech('Invalid valie')}>invalid value}\r\n
    \r\n
    \r\n
    \r\n );\r\n break;\r\n }\r\n }\r\n\r\n return <>{propertyInformationMarkup};\r\n};\r\n\r\nexport default PropertyInformationRefinance;\r\n","import { NavigationActions, useNavigation } from \"./useNavigation\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport interface NavigationWithHistoryActions {\r\n /**\r\n * The current step. This will be updated when the user clicks the back button to the previous step in the historical array\r\n */\r\n CurrentStep: T;\r\n /**\r\n * The historical array of all the previous steps. The current step will be the last item in the array\r\n */\r\n StepHistory: T[];\r\n /**\r\n * Sets the current step to the paramater passed in and adds that step to the historical array\r\n */\r\n ChangeStep: (step: T) => void;\r\n /**\r\n * useNavigation hook to be referenced if needed\r\n */\r\n Navigation: NavigationActions;\r\n /**\r\n * This will be true whenever the current step is the initial value. This can be used to alter\r\n * the navigation when the user has gone all the way back to the start of this series of steps\r\n */\r\n IsAtInitialStep: boolean;\r\n}\r\n\r\n/**\r\n * Hook to maintain a history of what steps the user has gone through to use for the back button\r\n * @param initalValue The first value that will be put into the history\r\n */\r\nexport function useNavigationWithHistory(\r\n initalValue: T\r\n): NavigationWithHistoryActions {\r\n const [stepHistory, changeStepHistory] = useState([initalValue]);\r\n const [currentStep, setStep] = useState(initalValue);\r\n const [isAtInitialStep, setIsAtInitialStep] = useState(false);\r\n const navigation = useNavigation();\r\n\r\n useEffect(() => {\r\n setIsAtInitialStep(currentStep === initalValue);\r\n\r\n if (currentStep !== initalValue) {\r\n navigation.SetBackOnClick(() => {\r\n goBack();\r\n });\r\n }\r\n }, [currentStep]);\r\n\r\n const changeStep = (step: T) => {\r\n setStep(step);\r\n changeStepHistory([...stepHistory, step]);\r\n };\r\n\r\n const goBack = () => {\r\n if (stepHistory.length > 1) {\r\n var previous = stepHistory[stepHistory.length - 2];\r\n setStep(previous);\r\n changeStepHistory(stepHistory.splice(0, stepHistory.length - 1));\r\n }\r\n };\r\n\r\n var actions: NavigationWithHistoryActions = {\r\n Navigation: navigation,\r\n ChangeStep: (step) => changeStep(step),\r\n CurrentStep: currentStep,\r\n StepHistory: stepHistory,\r\n IsAtInitialStep: isAtInitialStep,\r\n };\r\n return actions;\r\n}\r\n","export const DummyOtherIncomeSourceId = \"newOtherIncome999\";\r\n\r\nexport enum OtherIncomeSourceFields {\r\n Id = \"id\",\r\n Description = \"description\",\r\n MonthlyAmount = \"monthlyAmount\",\r\n Owner = \"owner\",\r\n IsNew = \"isNew\"\r\n}","export enum IncomeSource {\r\n Retirement = \"Retirement\",\r\n Pension = \"Pension\",\r\n SocialSecurity = \"Social Security\",\r\n Alimony = \"Alimony\",\r\n ChildSupport = \"Child Support\",\r\n Disability = \"Disability\",\r\n Trust = \"Trust\",\r\n Other = \"Other\"\r\n}","import { get, post } from \"../common/dataFetch\";\r\nimport { Borrower } from \"../store/employmentInformationStore\";\r\n\r\nexport const getStates = () => {\r\n return get(\"BorrowerEmploymentInformation/ReadByLoanGuidAsync\");\r\n};\r\n\r\nexport const getEmploymentInformation = (borrowerType: string, interimLoanStagingId:number) => {\r\n return get(`BorrowerEmploymentInformation/ReadByInterimIdAsync?borrowerType=${borrowerType}&&interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const updateEmploymentInformation = (borrowerEmploymentInformationDto: Borrower) => {\r\n return post(\"BorrowerEmploymentInformation/UpsertAsync\", borrowerEmploymentInformationDto);\r\n};\r\n\r\nexport const updateEmploymentQuestionnaireToInterimLoanStaging = (borrowerEmploymentInformationDto: Borrower) => {\r\n return post(\"BorrowerEmploymentInformation/UpdateEmploymentQuestionnaireToInterimLoanStaging\", borrowerEmploymentInformationDto);\r\n};\r\n\r\nexport const updateProgressTracker = (borrowerEmploymentInformationDto: Borrower, hasCoBorrower: boolean) => {\r\n return post(`BorrowerEmploymentInformation/UpdateProgressTracker?hasCoBorrower=${hasCoBorrower}`, borrowerEmploymentInformationDto);\r\n};\r\n\r\n\r\n","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as BorrowerEmploymentStore from \"../store/employmentInformationStore\";\r\nimport { KnownAction } from '../store/employmentInformationStore';\r\nimport * as employmentInformationService from \"../services/employmentInformationService\";\r\n\r\nconst SubmittedEmploymentInformation = (borrowerType: BorrowerEmploymentStore.BorrowerType, value: boolean): KnownAction => {\r\n return { type: ActionTypes.SubmittedEmploymentInformation, borrowerType: borrowerType, value: value };\r\n};\r\n\r\nexport const employmentInformationActionCreators = {\r\n getEmploymentInformation: (borrowerType: string,interimLoanStagingId:number): AppThunkAction => async (dispatch) => {\r\n await employmentInformationService.getEmploymentInformation(borrowerType, interimLoanStagingId)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem.\");\r\n }\r\n return response.parsedBody as BorrowerEmploymentStore.Borrower;\r\n })\r\n .then((data: any) => {\r\n dispatch({ type: ActionTypes.GetEmploymentInformation, data: data, borrowerType: borrowerType });\r\n });\r\n\r\n },\r\n UpdateEmploymentInformationProperty: (value: any, propertyName: string, borrowerType: BorrowerEmploymentStore.BorrowerType, employmentItemId: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateEmploymentInformationProperty, value: value, propertyName: propertyName, borrowerType: borrowerType, employmentItemId: employmentItemId });\r\n },\r\n AddEmploymentItem: (id: string, data: BorrowerEmploymentStore.Employment, borrowerType: BorrowerEmploymentStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ id: \"\", type: ActionTypes.AddEmploymentItem, data: data, borrowerType: borrowerType });\r\n },\r\n DeleteEmploymentItem: (id: string, borrowerType: BorrowerEmploymentStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.DeleteEmploymentItem, id: id, borrowerType: borrowerType });\r\n },\r\n SubmitEmploymentInformation: (borrowerData: BorrowerEmploymentStore.Borrower): AppThunkAction => async (dispatch) => {\r\n await employmentInformationService.updateEmploymentInformation(borrowerData)\r\n .then((response) => {\r\n if (!response.ok) {\r\n // Should this be outside of the if statement?\r\n dispatch(SubmittedEmploymentInformation(BorrowerEmploymentStore.BorrowerType.PrimaryBorrower, true));\r\n console.error(response);\r\n return false;\r\n }\r\n return true;\r\n })\r\n // This code below does seem un-neccessary\r\n .then(isSuccessful => {\r\n dispatch(SubmittedEmploymentInformation(BorrowerEmploymentStore.BorrowerType.PrimaryBorrower, true));\r\n if (!isSuccessful) {\r\n return null;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n },\r\n ResetEmploymentItem: (employmentItemId: string, borrowerType: BorrowerEmploymentStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.ResetEmploymentItem, employmentItemId: employmentItemId, borrowerType: borrowerType });\r\n },\r\n updateEmploymentInformationState: (data: BorrowerEmploymentStore.Borrower, borrowerType: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.GetEmploymentInformation, data: data, borrowerType: borrowerType });\r\n },\r\n SubmittedEmploymentInformation: (data: BorrowerEmploymentStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch(SubmittedEmploymentInformation(data, true));\r\n },\r\n ReIndexingEmployment: (data: BorrowerEmploymentStore.Employment[], borrowerType: BorrowerEmploymentStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.ReIndexingEmployment, data: data, borrowerType: borrowerType });\r\n }\r\n}","import * as React from \"react\";\r\nimport { BorrowerType, Employment } from \"../../store/employmentInformationStore\";\r\nimport { EmploymentScreensNew, EmploymentInformationFields, ScreenDetails } from \"./EmploymentInformationFields\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { BorrowerTypeEnum } from \"../../common/BorrowerTypeEnum\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nexport interface QuestionCardInterface {\r\n info: ScreenDetails\r\n changeScreen: React.Dispatch>,\r\n UpdateEmploymentInformationProperty: (value: any, fieldName: string, borrowerType?: BorrowerType, itemId?: string) => {},\r\n updateBorrowerType: any,\r\n addNewEmployment: (data?: any, borrowerType?: BorrowerType) => {},\r\n getPreviousEmployment: any,\r\n UpdateBackClick: any,\r\n currentEmploymentList: any,\r\n employmentData: Employment,\r\n disabled: boolean,\r\n isEncompassDown: boolean,\r\n borrowerType: BorrowerType\r\n}\r\n\r\ntype QuestionCardProps = QuestionCardInterface;\r\n\r\nconst QuestionCard = (props: QuestionCardProps) => {\r\n const navigation = useNavigation();\r\n const actions = { ...bindActionCreators({ ...TaskMenuCreators }, useDispatch()) };\r\n let disableContinueButton = true;\r\n if (props.info.value != undefined && !props.isEncompassDown) {\r\n disableContinueButton = false\r\n }\r\n\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.info.value != undefined && !props.isEncompassDown) {\r\n disableContinueButton = false\r\n }\r\n }, [props.info]);\r\n\r\n const updateProperty = async (value: any) => {\r\n actions.setLoanIsDirty(true);\r\n props.info.fieldName.forEach(async function (item) {\r\n if (item == EmploymentInformationFields.CurrentEmploymentIndicator) {\r\n if (props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment1) {\r\n props.UpdateEmploymentInformationProperty(false, item, props.info.borrowerType, props.info.id);\r\n }\r\n else {\r\n props.UpdateEmploymentInformationProperty(true, item, props.info.borrowerType, props.info.id);\r\n }\r\n }\r\n else if (item == EmploymentInformationFields.Owner) {\r\n let keyword = props.info.borrowerType == BorrowerType.PrimaryBorrower ? BorrowerTypeEnum.Borrower : BorrowerTypeEnum.CoBorrower;\r\n props.UpdateEmploymentInformationProperty(keyword, item, props.info.borrowerType, props.info.id);\r\n }\r\n else if (item == EmploymentInformationFields.OwnershipInterestType) {\r\n if (value) {\r\n props.UpdateEmploymentInformationProperty(\"GreaterThanOrEqualTo25Percent\", item, props.info.borrowerType, props.info.id);\r\n } else {\r\n props.UpdateEmploymentInformationProperty(\"LessThan25Percent\", item, props.info.borrowerType, props.info.id);\r\n }\r\n }\r\n else if (item == EmploymentInformationFields.SelfEmployedIndicator) {\r\n if (!value) {\r\n await props.UpdateEmploymentInformationProperty(\"\", EmploymentInformationFields.OwnershipInterestType, props.info.borrowerType, props.info.id);\r\n await props.UpdateEmploymentInformationProperty(\"\", EmploymentInformationFields.EmploymentMonthlyIncomeAmount, props.info.borrowerType, props.info.id);\r\n await props.UpdateEmploymentInformationProperty(\"\", EmploymentInformationFields.BasePayAmount, props.info.borrowerType, props.info.id);\r\n }\r\n else if (props.info.currentScreen == EmploymentScreensNew.SelfEmployed && value == true) {\r\n await props.UpdateEmploymentInformationProperty(null, EmploymentInformationFields.PreviousEmploymentDoesNotApply, props.info.borrowerType, props.info.id);\r\n }\r\n props.UpdateEmploymentInformationProperty(value, item, props.info.borrowerType, props.info.id);\r\n }\r\n else {\r\n props.UpdateEmploymentInformationProperty(value, item, props.info.borrowerType, props.info.id);\r\n }\r\n });\r\n }\r\n\r\n const moveFrwdBackwrd = (back: boolean) => {\r\n props.getPreviousEmployment(false);\r\n props.UpdateBackClick(false);\r\n if (back) {\r\n props.UpdateBackClick(true);\r\n if (props.info.currentScreen === EmploymentScreensNew.Veteran ||\r\n props.info.currentScreen === EmploymentScreensNew.ActiveMilitaryDuty ||\r\n props.info.currentScreen === EmploymentScreensNew.CurrentlyEmployed ||\r\n props.info.currentScreen === EmploymentScreensNew.SelfEmployed ||\r\n props.info.currentScreen === EmploymentScreensNew.OwnerShipShare ||\r\n props.info.currentScreen === EmploymentScreensNew.MonthlyIncome) {\r\n props.changeScreen(EmploymentScreensNew.Landing)\r\n return\r\n }\r\n else if ((\r\n props.info.currentScreen === EmploymentScreensNew.AdditionalGrossMonthlyIncome ||\r\n props.info.currentScreen === EmploymentScreensNew.PreviousGrossMonthlyIncome1) &&\r\n !props.info.value) {\r\n if (props.info.skipScreen) {\r\n props.changeScreen(props.info.skipScreen);\r\n }\r\n if (props.info.prevScreen) {\r\n props.changeScreen(props.info.prevScreen);\r\n }\r\n }\r\n else if (\r\n props.info.currentScreen === EmploymentScreensNew.AdditionalEmployment ||\r\n props.info.currentScreen === EmploymentScreensNew.AdditonalSelfEmployment ||\r\n props.info.currentScreen === EmploymentScreensNew.AdditonalSelfEmployment1\r\n ) {\r\n setTimeout(() => {\r\n props.getPreviousEmployment(true);\r\n }, 100)\r\n\r\n let index = props.currentEmploymentList.findIndex((x: any) => x.employmentId === props.employmentData?.employmentId);\r\n let perviousEmployer = props.currentEmploymentList.length > 0 && props.currentEmploymentList[index - 1];\r\n if ((index - 1) > 1) {\r\n props.changeScreen(EmploymentScreensNew.PastIncomeDetail1);\r\n }\r\n else if (props.info.currentScreen === EmploymentScreensNew.AdditonalSelfEmployment1 && perviousEmployer && perviousEmployer.currentEmploymentIndicator == true) {\r\n props.changeScreen(EmploymentScreensNew.AdditionalEmployment);\r\n }\r\n else if (props.info.prevScreen) {\r\n props.changeScreen(props.info.prevScreen);\r\n }\r\n if (props.info.currentScreen === EmploymentScreensNew.AdditionalEmployment) {\r\n props.changeScreen(EmploymentScreensNew.IncomeDetail);\r\n }\r\n }\r\n else {\r\n if (props.info.prevScreen) {\r\n props.changeScreen(props.info.prevScreen);\r\n }\r\n }\r\n if (props.info.currentScreen === EmploymentScreensNew.AdditionalGrossMonthlyIncome || props.info.currentScreen === EmploymentScreensNew.AdditonalSelfEmployment) {\r\n props.changeScreen(EmploymentScreensNew.AdditionalEmployment);\r\n }\r\n const employerIndex = (props.currentEmploymentList.findIndex((x: any) => x.employmentId == props.employmentData?.employmentId));\r\n const perviousEmployer1 = props.currentEmploymentList.length > 0 && props.currentEmploymentList[employerIndex - 1];\r\n\r\n if (props.info.currentScreen === EmploymentScreensNew.AdditionalGrossMonthlyIncome ||\r\n props.info.currentScreen === EmploymentScreensNew.PreviousGrossMonthlyIncome1) {\r\n setTimeout(() => {\r\n props.getPreviousEmployment(true);\r\n }, 100)\r\n if ((employerIndex - 1) > 1) {\r\n props.changeScreen(EmploymentScreensNew.PastIncomeDetail1);\r\n }\r\n }\r\n if (props.info.currentScreen === EmploymentScreensNew.AdditonalSelfEmployment1 &&\r\n perviousEmployer1 && perviousEmployer1.currentEmploymentIndicator == true) {\r\n props.changeScreen(EmploymentScreensNew.AdditionalEmployment);\r\n }\r\n else if (props.info.currentScreen === EmploymentScreensNew.AdditonalSelfEmployment || props.info.currentScreen === EmploymentScreensNew.AdditionalGrossMonthlyIncome && employerIndex <= 0) {\r\n props.changeScreen(EmploymentScreensNew.AdditionalEmployment);\r\n }\r\n else if (props.info.prevScreen) {\r\n props.changeScreen(EmploymentScreensNew.PastIncomeDetail1);\r\n }\r\n if (props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment1 && employerIndex == -1\r\n ) {\r\n props.changeScreen(EmploymentScreensNew.AdditionalEmployment);\r\n }\r\n else if (props.info.currentScreen == EmploymentScreensNew.AdditionalEmployment && employerIndex == -1) {\r\n props.changeScreen(EmploymentScreensNew.Veteran);\r\n }\r\n else if (props.info.currentScreen == EmploymentScreensNew.EmployerDetail) {\r\n props.changeScreen(EmploymentScreensNew.Landing);\r\n }\r\n else if ((props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment1 || props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment) && employerIndex <= 0) {\r\n\r\n }\r\n }\r\n else {\r\n if (!props.info.value && (props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment1 || props.info.currentScreen == EmploymentScreensNew.PreviousGrossMonthlyIncome1)) {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(EmploymentScreensNew.PastEmployerDetail1);\r\n return;\r\n }\r\n\r\n } else\r\n if (props.info.value && (props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment1 || props.info.currentScreen == EmploymentScreensNew.PreviousGrossMonthlyIncome1)) {\r\n props.changeScreen(EmploymentScreensNew.PastEmployerDetail1);\r\n return;\r\n }\r\n if (!props.info.value && (props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment)) {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(EmploymentScreensNew.PastEmployerDetail);\r\n }\r\n }\r\n else if (props.info.value && (props.info.currentScreen == EmploymentScreensNew.AdditionalGrossMonthlyIncome || props.info.currentScreen === EmploymentScreensNew.PreviousGrossMonthlyIncome1)) {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(EmploymentScreensNew.PastEmployerDetail);\r\n }\r\n }\r\n else if (props.info.value && props.info.currentScreen == EmploymentScreensNew.PreviousGrossMonthlyIncome1) {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(EmploymentScreensNew.PastEmployerDetail);\r\n }\r\n }\r\n else if ((props.info.currentScreen == EmploymentScreensNew.SelfEmployed ||\r\n props.info.currentScreen == EmploymentScreensNew.AdditonalSelfEmployment1 ||\r\n props.info.currentScreen == EmploymentScreensNew.CurrentlyEmployed ||\r\n props.info.currentScreen == EmploymentScreensNew.AdditionalEmployment)\r\n && !props.info.value) {\r\n if (props.info.skipScreen) {\r\n props.changeScreen(props.info.skipScreen);\r\n }\r\n }\r\n else {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(props.info.nextScreen);\r\n }\r\n }\r\n if (props.info.currentScreen === EmploymentScreensNew.IncomeDetail || props.info.currentScreen === EmploymentScreensNew.MonthlyIncome) {\r\n props.changeScreen(EmploymentScreensNew.Finished);\r\n }\r\n }\r\n }\r\n\r\n const onBack = () => {\r\n moveFrwdBackwrd(true);\r\n };\r\n\r\n const onContinue = () => {\r\n moveFrwdBackwrd(false)\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(props.info.header)}>{props.info.header}
    \r\n {\r\n (props.info.currentScreen == EmploymentScreensNew.OwnerShipShare) &&\r\n
    \r\n \r\n \r\n
    \r\n }\r\n {\r\n !(\r\n props.info.currentScreen == EmploymentScreensNew.MonthlyIncome ||\r\n props.info.currentScreen == EmploymentScreensNew.AdditionalGrossMonthlyIncome ||\r\n \r\n props.info.currentScreen == EmploymentScreensNew.PreviousGrossMonthlyIncome1 ||\r\n props.info.currentScreen == EmploymentScreensNew.OwnerShipShare) &&\r\n
    \r\n \r\n \r\n
    \r\n }\r\n {\r\n (props.info.currentScreen == EmploymentScreensNew.MonthlyIncome ||\r\n props.info.currentScreen == EmploymentScreensNew.AdditionalGrossMonthlyIncome ||\r\n props.info.currentScreen == EmploymentScreensNew.PreviousGrossMonthlyIncome1) &&\r\n
    \r\n {\r\n updateProperty(values.value);\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n }\r\n
    \r\n\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n disableContinueButton\r\n )}\r\n
    \r\n )\r\n}\r\n\r\nexport default QuestionCard as any;","import * as React from \"react\";\r\nimport { connect, useDispatch } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as EmploymentInformationStore from \"../../store/employmentInformationStore\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { BorrowerType } from \"../../store/employmentInformationStore\";\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport { EmploymentInformationFields, ScreenDetails, EmploymentScreensNew } from \"./EmploymentInformationFields\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { isNullOrWhiteSpace, isValidDate, toDate } from \"../../common/helper/formatHelper\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport CustomDatePicker from \"../common/CustomDatePicker\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype EmployerDetailProps = {\r\n employmentData: EmploymentInformationStore.Employment,\r\n changeScreen: React.Dispatch>,\r\n UpdateEmploymentInformationProperty: (value: any, fieldName: string, borrowerType?: BorrowerType, itemId?: string) => {},\r\n info: ScreenDetails,\r\n UpdateBackClick: any,\r\n disabled: boolean,\r\n currentEmploymentList: EmploymentInformationStore.Employment[],\r\n employmentItemId: any\r\n isEncompassDown: boolean\r\n}\r\n\r\nconst EmployerDetail = (props: EmployerDetailProps) => {\r\n const navigation = useNavigation();\r\n const [zipFormat, setZipFormat] = React.useState(\"#########\");\r\n const [maxDate, setMaxDate] = React.useState(new Date());\r\n const [maxCurrentDate, setMaxCurrentDate] = React.useState(new Date());\r\n const [invalidDate, setInvalidDate] = React.useState(false);\r\n\r\n const actions = { ...bindActionCreators({ ...TaskMenuCreators }, useDispatch()) };\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.employmentData?.addressPostalCode?.length > 5) {\r\n setZipFormat(\"#####-####\");\r\n return;\r\n }\r\n setZipFormat(\"#########\");\r\n }, [props.employmentData?.addressPostalCode]);\r\n\r\n const isDisabled = (): boolean => {\r\n let disabled = true;\r\n if (!invalidDate &&\r\n !isNullOrWhiteSpace(props.employmentData?.employerName) &&\r\n !isNullOrWhiteSpace(props.employmentData?.positionDescription) &&\r\n isValidDate(toDate(props.employmentData?.employmentStartDate)) &&\r\n !isNullOrWhiteSpace(props.employmentData?.urlA2020StreetAddress) &&\r\n !isNullOrWhiteSpace(props.employmentData?.addressState) &&\r\n !isNullOrWhiteSpace(props.employmentData?.addressCity) &&\r\n !isNullOrWhiteSpace(props.employmentData?.addressPostalCode) &&\r\n !(props.employmentData?.addressPostalCode && (props.employmentData?.addressPostalCode.length < 5) && !props.isEncompassDown)\r\n ) {\r\n if (props.info.currentScreen !== EmploymentScreensNew.EmployerDetail) {\r\n if (props.employmentData?.timeOnJobTermMonths !== undefined &&\r\n props.employmentData?.timeOnJobTermMonths <= 12 &&\r\n props.employmentData?.timeOnJobTermYears !== undefined\r\n && !props.isEncompassDown\r\n ) {\r\n disabled = false;\r\n }\r\n } else\r\n disabled = false;\r\n }\r\n return disabled;\r\n }\r\n\r\n const updateProperty = (value: any, fieldname: string) => {\r\n actions.setLoanIsDirty(true);\r\n props.UpdateEmploymentInformationProperty(value, fieldname, props.info.borrowerType, props.info.id);\r\n }\r\n\r\n React.useEffect(() => {\r\n\r\n const index = props.currentEmploymentList.findIndex(i => i.id === props.employmentItemId);\r\n let currentEmployers = props.currentEmploymentList.filter(x => x.currentEmploymentIndicator == true).slice()\r\n .sort((a, b) => Date.parse(a.employmentStartDate) - Date.parse(b.employmentStartDate));\r\n\r\n if (index > 0) {\r\n let emp = props.currentEmploymentList[index - 1];\r\n setMaxDate(new Date(emp?.employmentStartDate));\r\n }\r\n if (currentEmployers.length > 1) {\r\n setMaxCurrentDate(new Date(currentEmployers[0]?.employmentStartDate));\r\n }\r\n }, [props.employmentItemId, props.employmentData?.employmentStartDate]);\r\n\r\n const moveFrwdBackwrd = (back: boolean) => {\r\n props.UpdateBackClick(false);\r\n if (back) {\r\n let index = props.currentEmploymentList.findIndex((x: any) => x.employmentId === props.employmentData?.employmentId);\r\n let perviousEmployer = props.currentEmploymentList.length > 0 && props.currentEmploymentList[index - 1];\r\n props.UpdateBackClick(true);\r\n if (props.info.prevScreen === EmploymentScreensNew.PreviousGrossMonthlyIncome1 && props.employmentData.selfEmployedIndicator) {\r\n props.changeScreen(props.info.prevScreen);\r\n }\r\n else if (props.info.prevScreen === EmploymentScreensNew.PreviousGrossMonthlyIncome1 && !props.employmentData.selfEmployedIndicator\r\n && perviousEmployer) {\r\n props.changeScreen(EmploymentScreensNew.AdditonalSelfEmployment1);\r\n }\r\n else if ((props.info.currentScreen === EmploymentScreensNew.PastEmployerDetail1\r\n || props.info.currentScreen === EmploymentScreensNew.EmployerDetail)\r\n && !props.employmentData.selfEmployedIndicator) {\r\n props.changeScreen(EmploymentScreensNew.Veteran);\r\n }\r\n else if (props.info.prevScreen === EmploymentScreensNew.SelfEmployed) {\r\n props.changeScreen(props.info.prevScreen);\r\n }\r\n else if (props.info.prevScreen && props.employmentData.selfEmployedIndicator) {\r\n props.changeScreen(props.info.prevScreen);\r\n }\r\n else {\r\n props.changeScreen(EmploymentScreensNew.AdditonalSelfEmployment);\r\n }\r\n }\r\n else {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(props.info.nextScreen);\r\n }\r\n }\r\n }\r\n\r\n const onBack = () => {\r\n moveFrwdBackwrd(true)\r\n };\r\n\r\n const onContinue = () => {\r\n moveFrwdBackwrd(false)\r\n };\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n\r\n {\r\n let convertedDate = toDate(date);\r\n if (isValidDate(convertedDate)) {\r\n if ((maxDate <= new Date(convertedDate)) || (maxCurrentDate) <= new Date(convertedDate)) {\r\n setInvalidDate(true);\r\n }\r\n else {\r\n setInvalidDate(false);\r\n }\r\n }\r\n props.UpdateEmploymentInformationProperty(convertedDate,\r\n EmploymentInformationFields.StartDate, props.info.borrowerType, props.info.id);\r\n }}\r\n className={\"employer-date\"}\r\n popperPlacement={false}\r\n maxDate={maxDate}\r\n />\r\n {invalidDate &&\r\n stopSpeech()} onMouseOver={() => textToSpeech(\"Please enter a valid employment start date\")}>\r\n Please enter a valid employment start date.}\r\n
    \r\n\r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.AddressPostalCode);\r\n }}\r\n\r\n />\r\n
    \r\n
    \r\n\r\n {props.info.currentScreen !== EmploymentScreensNew.EmployerDetail &&\r\n <>\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('How long have you been at this job')}>How long have you been at this job?

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {\r\n updateProperty(values.floatValue, EmploymentInformationFields.TimeOnJobTermYears);\r\n }}\r\n\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.floatValue, \"timeOnJobTermMonths\");\r\n }}\r\n\r\n />\r\n
    \r\n
    \r\n\r\n \r\n }\r\n
    \r\n
    \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n isDisabled()\r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.employmentInformation,\r\n null\r\n)(React.memo(EmployerDetail) as any) as any;","import * as React from \"react\";\r\nimport * as EmploymentInformationStore from \"../../store/employmentInformationStore\";\r\nimport { EmploymentScreensNew, EmploymentInformationFields, ScreenDetails } from \"./EmploymentInformationFields\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { BorrowerType } from \"../../store/employmentInformationStore\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { NumberFormatInput } from \"components/common/Input/NumberFormatInput\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype IncomeDetailProps = {\r\n info: ScreenDetails,\r\n employmentData: EmploymentInformationStore.Employment,\r\n changeScreen: React.Dispatch>,\r\n UpdateEmploymentInformationProperty: (value: any, fieldName: string, borrowerType?: BorrowerType, itemId?: string) => {},\r\n UpdateBackClick: any,\r\n disabled: boolean,\r\n isEncompassDown: boolean\r\n}\r\n\r\nconst IncomeDetail = (props: IncomeDetailProps) => {\r\n const [total, updateTotal] = React.useState(props.employmentData?.totalAmount);\r\n const navigation = useNavigation();\r\n const actions = { ...bindActionCreators({ ...TaskMenuCreators }, useDispatch()) };\r\n\r\n const isDisabled = (): boolean => {\r\n let isValid = (!isNullOrWhiteSpace(props.employmentData?.basePayAmount) &&\r\n props.employmentData?.basePayAmount !== \"0\") && !props.isEncompassDown;\r\n return isValid;\r\n }\r\n\r\n const moveFrwdBackwrd = (back: boolean) => {\r\n if (back) {\r\n props.UpdateBackClick(true);\r\n if (props.info.prevScreen)\r\n props.changeScreen(props.info.prevScreen)\r\n }\r\n else {\r\n props.UpdateBackClick(false);\r\n if (props.info.nextScreen)\r\n props.changeScreen(props.info.nextScreen)\r\n }\r\n }\r\n\r\n const updateProperty = (value: any, fieldname: string) => {\r\n actions.setLoanIsDirty(true);\r\n props.UpdateEmploymentInformationProperty(value, fieldname, props.info.borrowerType, props.employmentData?.id);\r\n }\r\n\r\n React.useEffect(() => {\r\n updateTotal(parseFloat(props.employmentData?.basePayAmount ? props.employmentData?.basePayAmount : \"0\") +\r\n parseFloat(props.employmentData?.bonusAmount ? props.employmentData?.bonusAmount : \"0\") +\r\n parseFloat(props.employmentData?.overtimeAmount ? props.employmentData?.overtimeAmount : \"0\") +\r\n parseFloat(props.employmentData?.commissionsAmount ? props.employmentData?.commissionsAmount : \"0\") +\r\n parseFloat(props.employmentData?.otherAmount ? props.employmentData?.otherAmount : \"0\"));\r\n\r\n props.UpdateEmploymentInformationProperty(total, EmploymentInformationFields.TotalAmount, props.info.borrowerType,\r\n props.employmentData?.id);\r\n\r\n }, [props.employmentData?.basePayAmount, props.employmentData?.bonusAmount,\r\n props.employmentData?.overtimeAmount, props.employmentData?.commissionsAmount,\r\n props.employmentData?.otherAmount])\r\n\r\n const onBack = () => {\r\n moveFrwdBackwrd(true);\r\n };\r\n\r\n const onContinue = () => {\r\n moveFrwdBackwrd(false);\r\n };\r\n\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.BasePayAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.OvertimeAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.BonusAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.CommissionsAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.OtherAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !isDisabled()\r\n )}\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(IncomeDetail) as any;","import * as React from \"react\";\r\nimport { EmploymentScreensNew, ScreenDetails } from \"./EmploymentInformationFields\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport StartScreenSvg from \"assets/infographics/employmentInformation/StartScreem.svg\";\r\nimport { useHistory } from \"react-router\";\r\nimport { BorrowerType } from \"../../store/employmentInformationStore\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype LandingScreenProps =\r\n {\r\n info: ScreenDetails,\r\n borrowerName: string,\r\n borrowerType: BorrowerType,\r\n changeScreen: React.Dispatch>,\r\n isEncompassDown: boolean\r\n }\r\nconst LandingScreen = (props: LandingScreenProps) => {\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...TaskMenuCreators\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n\r\n const navigation = useNavigation();\r\n const history = useHistory();\r\n const onBack = () => {\r\n moveFrwdBackwrd(true)\r\n };\r\n const onContinue = () => {\r\n moveFrwdBackwrd(false)\r\n };\r\n\r\n const moveFrwdBackwrd = (back: boolean) => {\r\n if (back) {\r\n actions.setLoanIsDirty(false);\r\n if (props.borrowerType === BorrowerType.PrimaryBorrower) {\r\n history.push({ pathname: \"/credit-authorization\", state: { args: \"borrower\" } });\r\n } else {\r\n history.replace({ state: { args: \"borrower\" } });\r\n }\r\n }\r\n else {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(props.info.nextScreen)\r\n }\r\n }\r\n }\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Tell Us About \" + (props.borrowerType === BorrowerType.PrimaryBorrower ? \"Your\" : props.borrowerName) + \" Employment History\")}>Tell Us About {props.borrowerType === BorrowerType.PrimaryBorrower ? \"Your\" : props.borrowerName} Employment History!

    \r\n\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerType === BorrowerType.PrimaryBorrower ? \"Please provide at least a two year history to allow us to find the perfect loan for you.\" : \"Providing at least a two year history to allow us to find the perfect loan for you.\")}>\r\n {props.borrowerType === BorrowerType.PrimaryBorrower ?\r\n \"Please provide at least a two year history to allow us to find the perfect loan for you.\" :\r\n \"Providing at least a two year history to allow us to find the perfect loan for you.\"}\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n props.isEncompassDown\r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(LandingScreen) as any;","import * as React from \"react\";\r\nimport { connect, useDispatch } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as EmploymentInformationStore from \"../../store/employmentInformationStore\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { BorrowerType } from \"../../store/employmentInformationStore\";\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport { EmploymentInformationFields, ScreenDetails, EmploymentScreensNew } from \"./EmploymentInformationFields\";\r\nimport { isNullOrWhiteSpace, isValidDate, toDate } from \"../../common/helper/formatHelper\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport CustomDatePicker from \"../common/CustomDatePicker\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype EmployerDetailProps = {\r\n employmentData: EmploymentInformationStore.Employment,\r\n changeScreen: React.Dispatch>,\r\n UpdateEmploymentInformationProperty: (value: any, fieldName: string, borrowerType?: BorrowerType, itemId?: string) => {},\r\n info: ScreenDetails,\r\n UpdateBackClick: any,\r\n setDisabled: React.Dispatch>;\r\n disabled: boolean;\r\n currentEmploymentList: EmploymentInformationStore.Employment[],\r\n employmentItemId: any,\r\n isEncompassDown: boolean\r\n}\r\n\r\nconst CurrentEmployerDetail = (props: EmployerDetailProps) => {\r\n const [zipFormat, setZipFormat] = React.useState(\"#########\");\r\n const [maxDate, setMaxDate] = React.useState(new Date());\r\n const [invalidDate, setInvalidDate] = React.useState(false);\r\n\r\n const actions = { ...bindActionCreators({ ...TaskMenuCreators }, useDispatch()) };\r\n\r\n React.useEffect(() => {\r\n if (props.employmentData?.addressPostalCode?.length > 5) {\r\n setZipFormat(\"#####-####\");\r\n return;\r\n }\r\n setZipFormat(\"#########\");\r\n }, [props.employmentData?.addressPostalCode]);\r\n\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n props.setDisabled(isDisabled);\r\n setMaxDate(new Date());\r\n }, [props.employmentData, props.employmentData?.employmentStartDate]);\r\n\r\n const isDisabled = (): boolean => {\r\n let disabled = true;\r\n if (\r\n !invalidDate &&\r\n !isNullOrWhiteSpace(props.employmentData?.employerName) &&\r\n !isNullOrWhiteSpace(props.employmentData?.positionDescription) &&\r\n isValidDate(toDate(props.employmentData?.employmentStartDate)) &&\r\n !isNullOrWhiteSpace(props.employmentData?.urlA2020StreetAddress) &&\r\n !isNullOrWhiteSpace(props.employmentData?.addressState) &&\r\n !isNullOrWhiteSpace(props.employmentData?.addressCity) &&\r\n !isNullOrWhiteSpace(props.employmentData?.addressPostalCode) &&\r\n !(props.employmentData?.addressPostalCode && (props.employmentData?.addressPostalCode.length < 5) && !props.isEncompassDown)\r\n ) {\r\n disabled = false;\r\n }\r\n return disabled;\r\n }\r\n\r\n const updateProperty = (value: any, fieldname: string) => {\r\n actions.setLoanIsDirty(true);\r\n props.UpdateEmploymentInformationProperty(value, fieldname, props.info.borrowerType, props.employmentData.id);\r\n }\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n let convertedDate = toDate(date);\r\n if (isValidDate(convertedDate)) {\r\n if (maxDate <= new Date(convertedDate)) {\r\n setInvalidDate(true);\r\n }\r\n else {\r\n setInvalidDate(false);\r\n }\r\n } else {\r\n setInvalidDate(true);\r\n }\r\n props.UpdateEmploymentInformationProperty(convertedDate,\r\n EmploymentInformationFields.StartDate, props.info.borrowerType, props.employmentData.id);\r\n }}\r\n className={\"employer-date\"}\r\n popperPlacement={false}\r\n maxDate={maxDate}\r\n />\r\n {invalidDate &&\r\n stopSpeech()} onMouseOver={() => textToSpeech(\"Please enter a valid employment start date.\")}>\r\n Please enter a valid employment start date.}\r\n
    \r\n\r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, e.target.name);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.AddressPostalCode);\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n );\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.employmentInformation,\r\n null\r\n)(React.memo(CurrentEmployerDetail) as any) as any;","import * as React from \"react\";\r\nimport * as EmploymentInformationStore from \"../../store/employmentInformationStore\";\r\nimport { EmploymentScreensNew, EmploymentInformationFields, ScreenDetails } from \"./EmploymentInformationFields\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { BorrowerType } from \"../../store/employmentInformationStore\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { NumberFormatInput } from \"components/common/Input/NumberFormatInput\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype IncomeDetailProps = {\r\n info: ScreenDetails,\r\n employmentData: EmploymentInformationStore.Employment,\r\n changeScreen: React.Dispatch>,\r\n UpdateEmploymentInformationProperty: (value: any, fieldName: string, borrowerType?: BorrowerType, itemId?: string) => {},\r\n UpdateBackClick: any,\r\n disabled: boolean,\r\n empList: EmploymentInformationStore.Employment[]\r\n}\r\n\r\nconst CurrentIncomeDetail = (props: IncomeDetailProps) => {\r\n const [total, updateTotal] = React.useState(props.employmentData?.totalAmount);\r\n const navigation = useNavigation();\r\n const actions = { ...bindActionCreators({ ...TaskMenuCreators }, useDispatch()) };\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n const isDisabled = (): boolean => {\r\n let isValid = true;\r\n if (props.empList.length > 0) {\r\n isValid = props.empList.filter(x => isNullOrWhiteSpace(x.basePayAmount) || x.basePayAmount == \"0\").length > 0;\r\n }\r\n return isValid;\r\n }\r\n\r\n const moveFrwdBackwrd = (back: boolean) => {\r\n if (back) {\r\n props.UpdateBackClick(true);\r\n if (props.info.prevScreen)\r\n props.changeScreen(props.info.prevScreen)\r\n }\r\n else {\r\n props.UpdateBackClick(false);\r\n if (props.info.nextScreen)\r\n props.changeScreen(props.info.nextScreen)\r\n }\r\n }\r\n\r\n const updateProperty = (value: any, fieldname: string) => {\r\n actions.setLoanIsDirty(true);\r\n props.UpdateEmploymentInformationProperty(value, fieldname, props.info.borrowerType, props.employmentData?.id);\r\n }\r\n\r\n React.useEffect(() => {\r\n updateTotal(parseFloat(props.employmentData?.basePayAmount ? props.employmentData?.basePayAmount : \"0\") +\r\n parseFloat(props.employmentData?.bonusAmount ? props.employmentData?.bonusAmount : \"0\") +\r\n parseFloat(props.employmentData?.overtimeAmount ? props.employmentData?.overtimeAmount : \"0\") +\r\n parseFloat(props.employmentData?.commissionsAmount ? props.employmentData?.commissionsAmount : \"0\") +\r\n parseFloat(props.employmentData?.otherAmount ? props.employmentData?.otherAmount : \"0\"));\r\n\r\n props.UpdateEmploymentInformationProperty(total, EmploymentInformationFields.TotalAmount, props.info.borrowerType,\r\n props.employmentData?.id);\r\n\r\n }, [props.employmentData?.basePayAmount, props.employmentData?.bonusAmount,\r\n props.employmentData?.overtimeAmount, props.employmentData?.commissionsAmount,\r\n props.employmentData?.otherAmount])\r\n\r\n const onBack = () => {\r\n moveFrwdBackwrd(true);\r\n };\r\n\r\n const onContinue = () => {\r\n moveFrwdBackwrd(false);\r\n };\r\n\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.employmentData.employerName)}>{props.employmentData.employerName}

    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.BasePayAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.OvertimeAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.BonusAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.CommissionsAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.OtherAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n isDisabled()\r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(CurrentIncomeDetail) as any;","import * as React from \"react\";\r\nimport { EmploymentScreensNew, ScreenDetails } from \"./EmploymentInformationFields\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport MoreInformationRequiredSvg from \"assets/infographics/employmentInformation/MoreInformationRequiered.svg\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype AdditionalInformationLandingProps =\r\n {\r\n info: ScreenDetails,\r\n changeScreen: React.Dispatch>,\r\n isEncompassDown: boolean\r\n }\r\nconst AdditionalInformationLanding = (props: AdditionalInformationLandingProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const navigation = useNavigation();\r\n const onBack = () => {\r\n moveFrwdBackwrd(true)\r\n };\r\n const onContinue = () => {\r\n moveFrwdBackwrd(false)\r\n };\r\n\r\n const moveFrwdBackwrd = (back: boolean) => {\r\n if (back) {\r\n if (props.info.prevScreen) {\r\n props.changeScreen(props.info.prevScreen)\r\n }\r\n }\r\n else {\r\n if (props.info.nextScreen) {\r\n props.changeScreen(props.info.nextScreen)\r\n }\r\n }\r\n }\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('We Need A Little More Information')}>We Need A Little More Information.

    \r\n\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('We need information from the past two years. Please take the time to fill out a few more fields')}>\r\n We need information\r\n from the past two\r\n years. Please take the\r\n time to fill out a few\r\n more fields.\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n props.isEncompassDown\r\n )}\r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(AdditionalInformationLanding) as any;","import { EmploymentScreensNew, EmploymentInformationQuestions, EmploymentInformationFields, ScreenDetails, } from \"./EmploymentInformationFields\";\r\nimport AreYouAVeteran from \"assets/infographics/employmentInformation/AreYouAVeteran.svg\";\r\nimport ActiveMilitaryDutySvg from \"assets/infographics/employmentInformation/AreYouActiveDutyMilitary.svg\";\r\nimport CurrentlyEmployedSvg from \"assets/infographics/employmentInformation/AreYouCurrentlyEmployed.svg\";\r\nimport SelfEmployedSvg from \"assets/infographics/employmentInformation/AreYouSelfEmployed.svg\";\r\nimport OwnerShipShareSvg from \"assets/infographics/employmentInformation/OwnMoreThan25.svg\";\r\nimport MonthlyIncomeSvg from \"assets/infographics/employmentInformation/MonthlyLossOrIncome.svg\";\r\nimport EmployerDetailSvg from \"assets/infographics/employmentInformation/EmployerInformation.svg\";\r\nimport MoreInformationRequiredSvg from \"assets/infographics/employmentInformation/MoreInformationRequiered.svg\";\r\n\r\nconst Veteran: ScreenDetails = {\r\n infographics: AreYouAVeteran,\r\n header: EmploymentInformationQuestions.Veteran,\r\n fieldName: [EmploymentInformationFields.Veteran, EmploymentInformationFields.SelfDeclaredMilitaryServiceIndicator],\r\n nextScreen: EmploymentScreensNew.ActiveMilitaryDuty,\r\n currentScreen: EmploymentScreensNew.Veteran,\r\n prevScreen: EmploymentScreensNew.Landing,\r\n};\r\nconst ActiveMilitaryDuty: ScreenDetails = {\r\n header: EmploymentInformationQuestions.ActiveMilitaryDuty,\r\n infographics: ActiveMilitaryDutySvg,\r\n fieldName: [EmploymentInformationFields.ActiveMilitaryDuty, EmploymentInformationFields.SelfDeclaredMilitaryServiceIndicator],\r\n nextScreen: EmploymentScreensNew.CurrentlyEmployed,\r\n prevScreen: EmploymentScreensNew.Veteran,\r\n currentScreen: EmploymentScreensNew.ActiveMilitaryDuty,\r\n};\r\nconst CurrentlyEmployed: ScreenDetails = {\r\n header: EmploymentInformationQuestions.CurrentEmployment,\r\n infographics: CurrentlyEmployedSvg,\r\n fieldName: [EmploymentInformationFields.CurrentEmploymentDoesNotApply],\r\n nextScreen: EmploymentScreensNew.SelfEmployed,\r\n prevScreen: EmploymentScreensNew.ActiveMilitaryDuty,\r\n skipScreen: EmploymentScreensNew.Finished,\r\n currentScreen: EmploymentScreensNew.CurrentlyEmployed,\r\n}\r\nconst SelfEmployed: ScreenDetails = {\r\n header: EmploymentInformationQuestions.SelfEmployed,\r\n infographics: SelfEmployedSvg,\r\n fieldName: [\r\n EmploymentInformationFields.SelfEmployedIndicator,\r\n EmploymentInformationFields.CurrentEmploymentIndicator,\r\n EmploymentInformationFields.Owner\r\n ],\r\n nextScreen: EmploymentScreensNew.OwnerShipShare,\r\n skipScreen: EmploymentScreensNew.EmployerDetail,\r\n prevScreen: EmploymentScreensNew.CurrentlyEmployed,\r\n currentScreen: EmploymentScreensNew.SelfEmployed,\r\n};\r\nconst OwnerShipShare: ScreenDetails = {\r\n header: EmploymentInformationQuestions.OwnershipInterestType,\r\n infographics: OwnerShipShareSvg,\r\n fieldName: [EmploymentInformationFields.OwnershipInterestType],\r\n nextScreen: EmploymentScreensNew.MonthlyIncome,\r\n prevScreen: EmploymentScreensNew.SelfEmployed,\r\n currentScreen: EmploymentScreensNew.OwnerShipShare,\r\n};\r\nconst MonthlyIncome: ScreenDetails = {\r\n currentScreen: EmploymentScreensNew.MonthlyIncome,\r\n header: EmploymentInformationQuestions.MonthlyIncomeAmount,\r\n infographics: MonthlyIncomeSvg,\r\n fieldName: [EmploymentInformationFields.EmploymentMonthlyIncomeAmount],\r\n nextScreen: EmploymentScreensNew.Finished,\r\n prevScreen: EmploymentScreensNew.OwnerShipShare,\r\n};\r\nconst EmployerDetail: ScreenDetails = {\r\n header: \"Employer Details\",\r\n infographics: EmployerDetailSvg,\r\n fieldName: [],\r\n nextScreen: EmploymentScreensNew.IncomeDetail,\r\n prevScreen: EmploymentScreensNew.SelfEmployed,\r\n currentScreen: EmploymentScreensNew.EmployerDetail\r\n};\r\nconst IncomeDetail: ScreenDetails = {\r\n header: \"Income Details\",\r\n infographics: EmployerDetailSvg,\r\n fieldName: [EmploymentInformationFields.IncomeDetail],\r\n nextScreen: EmploymentScreensNew.Finished,\r\n prevScreen: EmploymentScreensNew.EmployerDetail,\r\n currentScreen: EmploymentScreensNew.IncomeDetail\r\n};\r\nconst AdditionalEmployment: ScreenDetails = {\r\n header: EmploymentInformationQuestions.AdditionalEmployment,\r\n infographics: CurrentlyEmployedSvg,\r\n fieldName: [EmploymentInformationFields.PreviousEmploymentDoesNotApply],\r\n nextScreen: EmploymentScreensNew.AdditonalSelfEmployment,\r\n skipScreen: EmploymentScreensNew.Finished,\r\n currentScreen: EmploymentScreensNew.AdditionalEmployment,\r\n prevScreen: EmploymentScreensNew.PreviousAdditionalInformationLanding,\r\n};\r\nconst AdditonalSelfEmployment: ScreenDetails = {\r\n header: EmploymentInformationQuestions.AdditionalSelfEmployment,\r\n infographics: SelfEmployedSvg,\r\n fieldName: [\r\n EmploymentInformationFields.SelfEmployedIndicator,\r\n EmploymentInformationFields.Owner\r\n ],\r\n nextScreen: EmploymentScreensNew.AdditionalGrossMonthlyIncome,\r\n prevScreen: EmploymentScreensNew.AdditionalEmployment,\r\n currentScreen: EmploymentScreensNew.AdditonalSelfEmployment,\r\n};\r\nconst AdditionalGrossMonthlyIncome: ScreenDetails = {\r\n header: EmploymentInformationQuestions.MonthlyIncomeAmount,\r\n infographics: MonthlyIncomeSvg,\r\n fieldName: [EmploymentInformationFields.EmploymentMonthlyIncomeAmount],\r\n nextScreen: EmploymentScreensNew.PastEmployerDetail,\r\n prevScreen: EmploymentScreensNew.AdditonalSelfEmployment,\r\n currentScreen: EmploymentScreensNew.AdditionalGrossMonthlyIncome,\r\n};\r\nconst PastEmployerDetail: ScreenDetails = {\r\n header: \"Employer Details\",\r\n infographics: EmployerDetailSvg,\r\n fieldName: [],\r\n nextScreen: EmploymentScreensNew.PastIncomeDetail,\r\n prevScreen: EmploymentScreensNew.AdditionalGrossMonthlyIncome,\r\n currentScreen: EmploymentScreensNew.PastEmployerDetail\r\n};\r\nconst PastIncomeDetail: ScreenDetails = {\r\n header: \"Income Details\",\r\n fieldName: [EmploymentInformationFields.IncomeDetail],\r\n nextScreen: EmploymentScreensNew.Finished,\r\n prevScreen: EmploymentScreensNew.PastEmployerDetail,\r\n currentScreen: EmploymentScreensNew.PastIncomeDetail\r\n};\r\nconst AdditonalSelfEmployment1: ScreenDetails = {\r\n header: EmploymentInformationQuestions.AdditionalSelfEmployment,\r\n infographics: SelfEmployedSvg,\r\n fieldName: [\r\n EmploymentInformationFields.SelfEmployedIndicator,\r\n EmploymentInformationFields.CurrentEmploymentIndicator,\r\n EmploymentInformationFields.Owner\r\n ],\r\n currentScreen: EmploymentScreensNew.AdditonalSelfEmployment1,\r\n nextScreen: EmploymentScreensNew.PreviousGrossMonthlyIncome1,\r\n skipScreen: EmploymentScreensNew.Finished,\r\n prevScreen: EmploymentScreensNew.PastIncomeDetail,\r\n};\r\nconst PreviousGrossMonthlyIncome1: ScreenDetails = {\r\n currentScreen: EmploymentScreensNew.PreviousGrossMonthlyIncome1,\r\n header: EmploymentInformationQuestions.MonthlyIncomeAmount,\r\n infographics: MonthlyIncomeSvg,\r\n fieldName: [EmploymentInformationFields.EmploymentMonthlyIncomeAmount],\r\n nextScreen: EmploymentScreensNew.PastEmployerDetail1,\r\n skipScreen: EmploymentScreensNew.SelfEmployed,\r\n prevScreen: EmploymentScreensNew.AdditonalSelfEmployment1,\r\n};\r\nconst PastEmployerDetail1: ScreenDetails = {\r\n header: \"Employer Details\",\r\n infographics: EmployerDetailSvg,\r\n fieldName: [],\r\n nextScreen: EmploymentScreensNew.PastIncomeDetail1,\r\n prevScreen: EmploymentScreensNew.PreviousGrossMonthlyIncome1,\r\n currentScreen: EmploymentScreensNew.PastEmployerDetail1\r\n};\r\n\r\nconst PastIncomeDetail1: ScreenDetails = {\r\n header: \"Income Details\",\r\n fieldName: [EmploymentInformationFields.IncomeDetail],\r\n nextScreen: EmploymentScreensNew.Finished,\r\n prevScreen: EmploymentScreensNew.PastEmployerDetail1,\r\n currentScreen: EmploymentScreensNew.PastIncomeDetail1\r\n};\r\n\r\nconst Finished: ScreenDetails = {\r\n header: EmploymentInformationQuestions.Finished,\r\n infographics: MoreInformationRequiredSvg,\r\n fieldName: [],\r\n};\r\n\r\nconst Landing: ScreenDetails = {\r\n fieldName: [],\r\n nextScreen: EmploymentScreensNew.Veteran,\r\n currentScreen: EmploymentScreensNew.Landing\r\n};\r\n\r\nconst AdditionalInformationLanding: ScreenDetails = {\r\n fieldName: [],\r\n nextScreen: EmploymentScreensNew.AdditionalEmployment,\r\n prevScreen: EmploymentScreensNew.IncomeDetail,\r\n currentScreen: EmploymentScreensNew.PreviousAdditionalInformationLanding\r\n};\r\n\r\nexport const GetScreenDetail = (screen: EmploymentScreensNew) => {\r\n switch (screen) {\r\n case EmploymentScreensNew.PreviousAdditionalInformationLanding: return AdditionalInformationLanding;\r\n\r\n case EmploymentScreensNew.Landing: return Landing;\r\n\r\n case EmploymentScreensNew.Veteran: return Veteran;\r\n\r\n case EmploymentScreensNew.ActiveMilitaryDuty: return ActiveMilitaryDuty;\r\n\r\n case EmploymentScreensNew.CurrentlyEmployed: return CurrentlyEmployed;\r\n\r\n case EmploymentScreensNew.SelfEmployed: return SelfEmployed;\r\n\r\n case EmploymentScreensNew.OwnerShipShare: return OwnerShipShare;\r\n\r\n case EmploymentScreensNew.MonthlyIncome: return MonthlyIncome;\r\n\r\n case EmploymentScreensNew.EmployerDetail: return EmployerDetail;\r\n\r\n case EmploymentScreensNew.IncomeDetail: return IncomeDetail;\r\n\r\n case EmploymentScreensNew.AdditionalEmployment: return AdditionalEmployment;\r\n\r\n case EmploymentScreensNew.AdditonalSelfEmployment: return AdditonalSelfEmployment;\r\n\r\n case EmploymentScreensNew.AdditionalGrossMonthlyIncome: return AdditionalGrossMonthlyIncome;\r\n\r\n case EmploymentScreensNew.PastEmployerDetail: return PastEmployerDetail;\r\n\r\n case EmploymentScreensNew.PastIncomeDetail: return PastIncomeDetail;\r\n\r\n case EmploymentScreensNew.AdditonalSelfEmployment1: return AdditonalSelfEmployment1;\r\n\r\n case EmploymentScreensNew.PreviousGrossMonthlyIncome1: return PreviousGrossMonthlyIncome1;\r\n\r\n case EmploymentScreensNew.PastEmployerDetail1: return PastEmployerDetail1;\r\n\r\n case EmploymentScreensNew.PastIncomeDetail1: return PastIncomeDetail1;\r\n\r\n case EmploymentScreensNew.Finished: return Finished;\r\n }\r\n\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { EmploymentInformationState, Borrower, BorrowerType, Employment } from \"../../store/employmentInformationStore\";\r\nimport * as EmploymentInformationActions from \"../../actions/employmentInformationActions\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport QuestionCard from \"./QuestionCardNew\";\r\nimport EmployerDetail from \"./EmployerDetail\";\r\nimport IncomeDetail from \"./IncomeDetail\";\r\nimport LandingScreen from \"./LandingScreen\";\r\nimport CurrentEmployerDetail from \"./CurrentEmployerDetail\";\r\nimport CurrentIncomeDetail from \"./CurrentIncomeDetail\";\r\nimport AdditionalInformationLanding from \"./AdditionalInformationLanding\";\r\nimport { EmploymentScreensNew, borrowerField, DummyData, EmploymentInformationFields } from \"./EmploymentInformationFields\";\r\nimport { GetScreenDetail } from \"./ScreenDetails\";\r\nimport { get } from \"lodash\";\r\nimport { isNullOrWhiteSpace, toDate, dateDiff, isValidDate } from \"../../common/helper/formatHelper\";\r\nimport { useNavigation } from \"../../hooks/useNavigation\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype EmploymentItemProps = EmploymentInformationState &\r\n{\r\n borrowerType: BorrowerType,\r\n updateCurrentBorrower: React.Dispatch>,\r\n borrowerData: Borrower,\r\n updateBorrowerComplete: React.Dispatch>,\r\n updateCoBorrowerComplete: React.Dispatch>,\r\n disabled: boolean,\r\n isEncompassDown: boolean\r\n} & typeof EmploymentInformationActions.employmentInformationActionCreators\r\n\r\nconst EmploymentItem = (props: EmploymentItemProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [currentScreen, changeScreen] = useState(EmploymentScreensNew.Landing);\r\n const [employmentItemId, updateEmploymentItemId] = useState(\"\");\r\n const [employmentIndex, setEmploymentIndex] = useState(0);\r\n const [header, updateHeader] = useState(props.borrowerData.name + \" Employment Information\");\r\n const [previousEmployment, getPreviousEmployment] = useState(false);\r\n const [isBackClick, UpdateBackClick] = useState(false);\r\n let currentEmploymentList = props.borrowerData.employments;\r\n let currentEmployment: Employment;\r\n let info = GetScreenDetail(currentScreen);\r\n let veteranInfo = GetScreenDetail(EmploymentScreensNew.Veteran);\r\n let activeMilitaryDutyInfo = GetScreenDetail(EmploymentScreensNew.ActiveMilitaryDuty);\r\n let currentlyEmployedInfo = GetScreenDetail(EmploymentScreensNew.CurrentlyEmployed);\r\n let selfEmployedInfo = GetScreenDetail(EmploymentScreensNew.SelfEmployed);\r\n let ownerShipShareInfo = GetScreenDetail(EmploymentScreensNew.OwnerShipShare);\r\n let monthlyIncomeInfo = GetScreenDetail(EmploymentScreensNew.MonthlyIncome);\r\n let additonalSelfEmploymentInfo = GetScreenDetail(EmploymentScreensNew.AdditonalSelfEmployment);\r\n let additionalGrossMonthlyIncomeInfo = GetScreenDetail(EmploymentScreensNew.AdditionalGrossMonthlyIncome);\r\n let additonalSelfEmployment1Info = GetScreenDetail(EmploymentScreensNew.AdditonalSelfEmployment1);\r\n let previousGrossMonthlyIncome1Info = GetScreenDetail(EmploymentScreensNew.PreviousGrossMonthlyIncome1);\r\n const navigation = useNavigation();\r\n const [disabled, setDisabled] = useState(false);\r\n const [message, setValidationMessage] = React.useState(false);\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n useEffect(() => {\r\n currentEmploymentList = props.borrowerData.employments;\r\n if (isNullOrWhiteSpace(employmentItemId) && currentEmploymentList && currentEmploymentList?.length > 0 &&\r\n currentScreen !== EmploymentScreensNew.Finished) {\r\n // get 0th index\r\n currentEmployment = currentEmploymentList[0];\r\n if (currentEmployment?.id) {\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n updateHeader(props.borrowerData.name + \" Employment Information\");\r\n }\r\n else if (employmentItemId !== \"\" && currentEmploymentList && currentEmploymentList?.length > 0) {\r\n // get particular\r\n const index = currentEmploymentList.findIndex(i => i.id === employmentItemId);\r\n currentEmployment = currentEmploymentList[index];\r\n updateEmploymentItemId(currentEmployment?.id);\r\n index == (0 || 1) ? updateHeader(props.borrowerData.name + \" Employment Information\")\r\n : updateHeader(props.borrowerData.name + \" Additional Employment Information\");\r\n setEmploymentIndex(index);\r\n }\r\n else if (currentEmploymentList?.length === 0) {\r\n updateEmploymentItemId(\"\");\r\n updateHeader(props.borrowerData.name + \" Employment Information\")\r\n }\r\n }, [props.borrowerData]);\r\n\r\n useEffect(() => {\r\n changeScreen(EmploymentScreensNew.Landing);\r\n }, [props.borrowerType]);\r\n\r\n useEffect(() => {\r\n if (currentScreen === EmploymentScreensNew.Finished) {\r\n updateEmploymentItemId(\"\");\r\n if (props.borrowerType === BorrowerType.PrimaryBorrower) {\r\n props.updateBorrowerComplete(true);\r\n }\r\n else if (props.borrowerType === BorrowerType.CoBorrower) {\r\n props.updateCoBorrowerComplete(true);\r\n }\r\n }\r\n else if (currentScreen === EmploymentScreensNew.AdditonalSelfEmployment1) {\r\n updateEmploymentItemId(\"\");\r\n let index = employmentIndex;\r\n if (!isBackClick) {\r\n index = employmentIndex + 1;\r\n }\r\n\r\n let emp = currentEmploymentList[index];\r\n if (emp === undefined) {\r\n DummyData.currentEmploymentIndicator = false;\r\n props.AddEmploymentItem(\"\", DummyData, props.borrowerType);\r\n index = currentEmploymentList?.findIndex(i => i.id == DummyData.id);\r\n }\r\n setEmploymentIndex(index);\r\n\r\n // update currentemployment\r\n if (currentEmploymentList && index) {\r\n currentEmployment = currentEmploymentList[index];\r\n if (currentEmployment?.id) {\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n index == (0 || 1) ? updateHeader(props.borrowerData.name + \" Employment Information\")\r\n : updateHeader(props.borrowerData.name + \" Additional Employment Information\");\r\n }\r\n }\r\n else if (currentScreen === EmploymentScreensNew.AdditonalSelfEmployment) {\r\n let index = employmentIndex;\r\n updateEmploymentItemId(\"\");\r\n if (!isBackClick) {\r\n index = employmentIndex + 1;\r\n setEmploymentIndex(index);\r\n }\r\n let emp = currentEmploymentList[index];\r\n if (emp === undefined) {\r\n DummyData.currentEmploymentIndicator = false;\r\n DummyData.selfEmployedIndicator = undefined;\r\n props.AddEmploymentItem(\"\", DummyData, props.borrowerType);\r\n index = currentEmploymentList?.findIndex(i => i.id == DummyData.id);\r\n }\r\n\r\n setEmploymentIndex(index); // update currentemployment\r\n if (currentEmploymentList && index) {\r\n currentEmployment = currentEmploymentList[index];\r\n if (currentEmployment?.id) {\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n index == (0 || 1) ? updateHeader(props.borrowerData.name + \" Employment Information\")\r\n : updateHeader(props.borrowerData.name + \" Additional Employment Information\");\r\n }\r\n }\r\n else if ((isNullOrWhiteSpace(employmentItemId)) && currentEmploymentList && currentEmploymentList?.length === 0 && currentScreen === EmploymentScreensNew.SelfEmployed) {\r\n props.AddEmploymentItem(\"\", DummyData, props.borrowerType);\r\n // update currentemployment\r\n const index = currentEmploymentList.findIndex(i => i.id == DummyData.id);\r\n currentEmployment = currentEmploymentList[index];\r\n if (currentEmployment?.id) {\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n setEmploymentIndex(index);\r\n index == (0 || 1) ? updateHeader(props.borrowerData.name + \" Employment Information\")\r\n : updateHeader(props.borrowerData.name + \" Additional Employment Information\");\r\n }\r\n else if (currentScreen == EmploymentScreensNew.EmployerDetail || currentScreen == EmploymentScreensNew.IncomeDetail) {\r\n if (props.borrowerType == BorrowerType.PrimaryBorrower) {\r\n const currentEmployerData = props.borrower.employments.filter(x => x.currentEmploymentIndicator == true && x.owner == \"Borrower\");\r\n if (currentEmployerData.length == 2) {\r\n setEmploymentIndex(1);\r\n currentEmployment = currentEmployerData[1];\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n else {\r\n setEmploymentIndex(0);\r\n currentEmployment = currentEmployerData[0];\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n }\r\n else {\r\n const currentEmployerData = props.coBorrower.employments.filter(x => x.currentEmploymentIndicator == true && x.owner == \"CoBorrower\");\r\n if (currentEmployerData.length == 2) {\r\n setEmploymentIndex(currentEmployerData[1].employmentId);\r\n currentEmployment = currentEmployerData[1];\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n else {\r\n setEmploymentIndex(currentEmployerData[0].employmentId);\r\n currentEmployment = currentEmployerData[0];\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n }\r\n\r\n if (!isRequiredPriorEmployment()) {\r\n props.UpdateEmploymentInformationProperty(null, EmploymentInformationFields.PreviousEmploymentDoesNotApply, props.borrowerType, currentEmployment.id);\r\n }\r\n }\r\n }, [currentScreen]);\r\n\r\n useEffect(() => {\r\n if (previousEmployment) {\r\n if (currentEmployment && currentEmployment.employmentId > 0 && currentEmploymentList && currentEmploymentList?.length > 1) {\r\n if (currentEmployment) {\r\n let index = currentEmploymentList.findIndex(x => x.employmentId === currentEmployment.employmentId);\r\n currentEmployment = currentEmploymentList[index - 1];\r\n if (currentEmployment && currentEmployment?.id) {\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n if (isBackClick) {\r\n setEmploymentIndex(index - 1);\r\n }\r\n }\r\n }\r\n }\r\n }, [previousEmployment]);\r\n\r\n const GetDetails = (screen: EmploymentScreensNew) => { \r\n\r\n SetInfo(info);\r\n SetInfo(veteranInfo);\r\n SetInfo(activeMilitaryDutyInfo);\r\n SetInfo(currentlyEmployedInfo);\r\n SetInfo(selfEmployedInfo);\r\n SetInfo(ownerShipShareInfo);\r\n SetInfo(monthlyIncomeInfo);\r\n SetInfo(additonalSelfEmploymentInfo);\r\n SetInfo(additionalGrossMonthlyIncomeInfo);\r\n SetInfo(additonalSelfEmployment1Info);\r\n SetInfo(previousGrossMonthlyIncome1Info);\r\n\r\n if (screen === EmploymentScreensNew.Landing) {\r\n return <>\r\n \r\n \r\n ;\r\n }\r\n\r\n if (screen === EmploymentScreensNew.PreviousAdditionalInformationLanding) {\r\n return
    \r\n \r\n \r\n
    ;\r\n }\r\n\r\n if (screen === EmploymentScreensNew.EmployerDetail) {\r\n const currentEmploymentDetails = props.borrowerData.employments.filter(employment => employment.currentEmploymentIndicator === true);\r\n const rows = <>\r\n {currentEmploymentDetails.length <= 2 &&\r\n currentEmploymentDetails?.map((item, i) => {\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n {\r\n (currentEmploymentDetails.length > 1 && i == 1) &&\r\n \r\n deleteCurrentEmployer(item.id)}>\r\n \r\n }\r\n \r\n \r\n
    \r\n );\r\n })\r\n }\r\n \r\n let additionalIncomePage =\r\n
    \r\n
    \r\n {rows}\r\n {\r\n currentEmploymentDetails.length < 2 &&
    \r\n \r\n {message &&\r\n
    Please fill the required fields.
    \r\n }\r\n
    \r\n }\r\n
    \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n disabled\r\n )}\r\n
    \r\n return (\r\n additionalIncomePage\r\n );\r\n }\r\n if (screen === EmploymentScreensNew.PastEmployerDetail ||\r\n screen === EmploymentScreensNew.PastEmployerDetail1) {\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n \r\n \r\n
    );\r\n }\r\n\r\n if (screen === EmploymentScreensNew.IncomeDetail) {\r\n const currentEmploymentIncomeDetails = props.borrowerData.employments.filter(employment => employment.currentEmploymentIndicator === true);\r\n const rows = <>\r\n {\r\n currentEmploymentIncomeDetails.length <= 2 &&\r\n currentEmploymentIncomeDetails?.map((item, i) => {\r\n return (
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n \r\n \r\n
    \r\n );\r\n })\r\n }\r\n \r\n let additionalIncomePage =\r\n
    \r\n {rows}\r\n
    \r\n return (\r\n additionalIncomePage\r\n );\r\n }\r\n else if (\r\n screen === EmploymentScreensNew.PastIncomeDetail ||\r\n screen === EmploymentScreensNew.PastIncomeDetail1) {\r\n return (\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n \r\n \r\n
    );\r\n }\r\n else if (\r\n currentScreen == EmploymentScreensNew.AdditonalSelfEmployment ||\r\n currentScreen == EmploymentScreensNew.AdditionalGrossMonthlyIncome) {\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n \r\n {\r\n (additonalSelfEmploymentInfo != undefined && additonalSelfEmploymentInfo.value == true) &&\r\n \r\n }\r\n
    \r\n );\r\n }\r\n else if (currentScreen == EmploymentScreensNew.AdditonalSelfEmployment1 ||\r\n currentScreen == EmploymentScreensNew.PreviousGrossMonthlyIncome1) {\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n \r\n\r\n {\r\n (additonalSelfEmployment1Info != undefined && additonalSelfEmployment1Info.value == true) &&\r\n \r\n }\r\n
    \r\n );\r\n }\r\n else if (currentScreen == EmploymentScreensNew.Veteran ||\r\n currentScreen == EmploymentScreensNew.ActiveMilitaryDuty ||\r\n currentScreen == EmploymentScreensNew.CurrentlyEmployed ||\r\n currentScreen == EmploymentScreensNew.SelfEmployed ||\r\n currentScreen == EmploymentScreensNew.OwnerShipShare ||\r\n currentScreen == EmploymentScreensNew.MonthlyIncome) {\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n \r\n {\r\n (veteranInfo != undefined && (veteranInfo.value == true || veteranInfo.value == false)) &&\r\n \r\n }\r\n {\r\n (activeMilitaryDutyInfo != undefined && (activeMilitaryDutyInfo.value == true || activeMilitaryDutyInfo.value == false)) &&\r\n \r\n }\r\n { (currentlyEmployedInfo != undefined && currentlyEmployedInfo.value == true) &&\r\n \r\n }\r\n { (currentlyEmployedInfo != undefined && currentlyEmployedInfo.value == true) && (selfEmployedInfo != undefined && selfEmployedInfo.value == true) &&\r\n \r\n }\r\n { (currentlyEmployedInfo != undefined && currentlyEmployedInfo.value == true) && (selfEmployedInfo != undefined && selfEmployedInfo.value == true) &&\r\n (ownerShipShareInfo != undefined && (ownerShipShareInfo.value == \"GreaterThanOrEqualTo25Percent\" || ownerShipShareInfo.value == \"LessThan25Percent\")) &&\r\n \r\n }\r\n
    \r\n );\r\n }\r\n else if (currentScreen !== EmploymentScreensNew.Finished) {\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(header)}>{header}

    \r\n \r\n
    \r\n );\r\n }\r\n }\r\n\r\n const onBack = () => {\r\n moveFrwdBackwrd(true)\r\n };\r\n\r\n const onContinue = () => {\r\n moveFrwdBackwrd(false)\r\n };\r\n\r\n const isRequiredPriorEmployment = () => {\r\n let isRequired = false;\r\n let currentEmployers = currentEmploymentList.filter(x => x.currentEmploymentIndicator == true).slice()\r\n .sort((a, b) => Date.parse(a.employmentStartDate) - Date.parse(b.employmentStartDate));\r\n if (currentEmployers.length > 0) {\r\n let months = dateDiff(currentEmployers[0].employmentStartDate);\r\n if (months < 24) {\r\n isRequired = true;\r\n }\r\n }\r\n return isRequired;\r\n }\r\n\r\n const moveFrwdBackwrd = (back: boolean) => {\r\n UpdateBackClick(false);\r\n if (back) {\r\n UpdateBackClick(true);\r\n if (info?.prevScreen === EmploymentScreensNew.SelfEmployed) {\r\n changeScreen(info?.prevScreen);\r\n } else if (info?.prevScreen && currentEmployment.selfEmployedIndicator) {\r\n changeScreen(info?.prevScreen);\r\n } else {\r\n changeScreen(EmploymentScreensNew.AdditonalSelfEmployment);\r\n }\r\n }\r\n else {\r\n if (info?.nextScreen) {\r\n changeScreen(info?.nextScreen);\r\n }\r\n }\r\n }\r\n\r\n const validateCurrentEmploymentData = (currentEmployerData: Employment[]): boolean => {\r\n let disabled = true;\r\n if (currentEmployerData && currentEmployerData.length > 0) {\r\n const currentEmployment1 = currentEmployerData[0];\r\n if (\r\n isValidDate(toDate(currentEmployment1?.employmentStartDate)) &&\r\n !isNullOrWhiteSpace(currentEmployment1?.employerName) &&\r\n !isNullOrWhiteSpace(currentEmployment1?.positionDescription) &&\r\n !isNullOrWhiteSpace(currentEmployment1?.urlA2020StreetAddress) &&\r\n !isNullOrWhiteSpace(currentEmployment1?.addressState) &&\r\n !isNullOrWhiteSpace(currentEmployment1?.addressCity) &&\r\n !isNullOrWhiteSpace(currentEmployment1?.addressPostalCode) &&\r\n !(currentEmployment1?.addressPostalCode && (currentEmployment1?.addressPostalCode.length < 5))\r\n ) {\r\n disabled = false;\r\n }\r\n }\r\n return disabled;\r\n }\r\n\r\n const addNewItem = () => {\r\n let currentEmployerData: Employment[];\r\n\r\n if (props.borrowerType === BorrowerType.PrimaryBorrower) {\r\n currentEmployerData = props.borrower.employments.filter(x => x.currentEmploymentIndicator == true);\r\n } else {\r\n currentEmployerData = props.coBorrower.employments.filter(x => x.currentEmploymentIndicator == true);\r\n }\r\n\r\n if (!validateCurrentEmploymentData(currentEmployerData)) {\r\n setValidationMessage(false);\r\n updateEmploymentItemId(\"\");\r\n let index = props.borrowerType === BorrowerType.PrimaryBorrower ? props.borrower.employments.length : props.coBorrower.employments.length;\r\n let emp = currentEmploymentList[index];\r\n if (emp === undefined) {\r\n DummyData.currentEmploymentIndicator = true;\r\n DummyData.selfEmployedIndicator = currentEmployerData[0].selfEmployedIndicator;\r\n props.AddEmploymentItem(\"\", DummyData, props.borrowerType);\r\n props.ReIndexingEmployment(props.borrowerType === BorrowerType.PrimaryBorrower ? props.borrower.employments : props.coBorrower.employments, props.borrowerType);\r\n index = currentEmploymentList?.findIndex(i => i.id == DummyData.id);\r\n }\r\n setEmploymentIndex(index);\r\n currentEmployment = currentEmploymentList[index];\r\n updateEmploymentItemId(currentEmployment?.id);\r\n } else {\r\n setValidationMessage(true);\r\n }\r\n }\r\n\r\n const deleteCurrentEmployer = (id: string) => {\r\n let currentEmployerData: Employment[];\r\n\r\n if (props.borrowerType === BorrowerType.PrimaryBorrower) {\r\n currentEmployerData = props.borrower.employments.filter(x => x.currentEmploymentIndicator == true);\r\n } else {\r\n currentEmployerData = props.coBorrower.employments.filter(x => x.currentEmploymentIndicator == true);\r\n }\r\n\r\n setDisabled(false);\r\n props.DeleteEmploymentItem(id, props.borrowerType);\r\n currentEmployment = currentEmployerData[0];\r\n props.ReIndexingEmployment(props.borrowerType === BorrowerType.PrimaryBorrower ? props.borrower.employments : props.coBorrower.employments, props.borrowerType);\r\n setEmploymentIndex(0);\r\n currentEmployment = currentEmploymentList[0];\r\n updateEmploymentItemId(currentEmployment?.id);\r\n }\r\n\r\n const SetInfo = (info: any) => {\r\n if (info) {\r\n if ((isNullOrWhiteSpace(employmentItemId)) && currentEmploymentList && currentEmploymentList?.length === 0 && info.currentScreen === EmploymentScreensNew.SelfEmployed) {\r\n props.AddEmploymentItem(\"\", DummyData, props.borrowerType);\r\n // update currentemployment\r\n const index = currentEmploymentList.findIndex(i => i.id == DummyData.id);\r\n currentEmployment = currentEmploymentList[index];\r\n if (currentEmployment?.id) {\r\n updateEmploymentItemId(currentEmployment.id);\r\n }\r\n setEmploymentIndex(index);\r\n index == (0 || 1) ? updateHeader(props.borrowerData.name + \" Employment Information\")\r\n : updateHeader(props.borrowerData.name + \" Additional Employment Information\");\r\n }\r\n\r\n const currentEmploymentDetails = props.borrowerData.employments.filter(employment => employment.currentEmploymentIndicator === true);\r\n if (employmentItemId && currentEmploymentList && !currentEmployment) {\r\n const index = currentEmploymentList.findIndex(i => i.id == employmentItemId);\r\n currentEmployment = currentEmploymentList[index];\r\n }\r\n\r\n info.borrowerType = props.borrowerType;\r\n info.id = employmentItemId;\r\n let fieldName = info?.fieldName[0];\r\n if (fieldName && borrowerField.includes(fieldName)) {\r\n info.value = get(props.borrowerData, fieldName);\r\n }\r\n else {\r\n info.value = get(currentEmployment, fieldName);\r\n }\r\n if (currentScreen === EmploymentScreensNew.IncomeDetail) {\r\n info.value = (props.borrowerData.veteran || props.borrowerData.activeMilitaryDuty);\r\n if (currentEmploymentDetails.length > 1) {\r\n if (isRequiredPriorEmployment()) {\r\n info.nextScreen = EmploymentScreensNew.PreviousAdditionalInformationLanding;\r\n }\r\n else {\r\n info.nextScreen = EmploymentScreensNew.Finished;\r\n }\r\n }\r\n else {\r\n if (currentEmployment?.needAdditionalEmployment === true) {\r\n info.nextScreen = EmploymentScreensNew.PreviousAdditionalInformationLanding;\r\n }\r\n else {\r\n info.nextScreen = EmploymentScreensNew.Finished;\r\n }\r\n }\r\n }\r\n else if (currentScreen == EmploymentScreensNew.PastIncomeDetail) {\r\n info.value = (props.borrowerData.veteran || props.borrowerData.activeMilitaryDuty);\r\n if (currentEmployment?.needAdditionalEmployment === true) {\r\n info.nextScreen = EmploymentScreensNew.AdditonalSelfEmployment1;\r\n } else {\r\n info.nextScreen = EmploymentScreensNew.Finished;\r\n }\r\n }\r\n else if (currentScreen === EmploymentScreensNew.Finished) {\r\n if (props.borrowerData.currentEmploymentDoesNotApply) {\r\n if (currentEmployment?.currentEmploymentIndicator) {\r\n if (!currentEmployment?.selfEmployedIndicator) {\r\n if (currentEmploymentDetails.length > 1) {\r\n if (isRequiredPriorEmployment() && props.borrowerData.previousEmploymentDoesNotApply === true) {\r\n changeScreen(EmploymentScreensNew.PreviousAdditionalInformationLanding);\r\n }\r\n }\r\n else if (currentEmployment?.needAdditionalEmployment === true && props.borrowerData.previousEmploymentDoesNotApply === true) {\r\n changeScreen(EmploymentScreensNew.PreviousAdditionalInformationLanding);\r\n }\r\n }\r\n }\r\n else if (currentEmployment?.needAdditionalEmployment === true && props.borrowerData.previousEmploymentDoesNotApply === true) {\r\n changeScreen(EmploymentScreensNew.AdditonalSelfEmployment1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n GetDetails(currentScreen)\r\n }\r\n
    \r\n )\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n UpdateEmploymentInformationProperty: (value: any, propertyName: string, borrowerType: BorrowerType, employmentItemId: string) => {\r\n dispatch(EmploymentInformationActions.employmentInformationActionCreators.UpdateEmploymentInformationProperty(value, propertyName, borrowerType, employmentItemId));\r\n },\r\n AddEmploymentItem: (id: string, data: Employment, borrowerType: BorrowerType) => {\r\n dispatch(EmploymentInformationActions.employmentInformationActionCreators.AddEmploymentItem(id, data, borrowerType));\r\n },\r\n DeleteEmploymentItem: (id: string, borrowerType: BorrowerType) => {\r\n dispatch(EmploymentInformationActions.employmentInformationActionCreators.DeleteEmploymentItem(id, borrowerType));\r\n },\r\n ResetEmploymentItem: (employmentItemId: string, borrowerType: BorrowerType) => {\r\n dispatch(EmploymentInformationActions.employmentInformationActionCreators.ResetEmploymentItem(employmentItemId, borrowerType));\r\n }\r\n ,\r\n ReIndexingEmployment: (data: Employment[], borrowerType: BorrowerType) => {\r\n dispatch(EmploymentInformationActions.employmentInformationActionCreators.ReIndexingEmployment(data, borrowerType));\r\n }\r\n});\r\n\r\nexport default connect((state: ApplicationState) => state.employmentInformation, mapDispatchToProps)(React.memo(EmploymentItem) as any) as any;","import * as React from \"react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { connect, useDispatch, useSelector } from \"react-redux\";\r\nimport * as EmploymentInformationStore from \"../../store/employmentInformationStore\";\r\nimport * as EmploymentInformationActions from \"../../actions/employmentInformationActions\";\r\nimport { BorrowerType } from \"../../store/employmentInformationStore\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport EmploymentItem from \"./EmploymentItem\";\r\nimport styles from \"./employmentInformation.module.scss\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport Loading from \"../common/Loader\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { useInitialMount } from \"../../hooks/useInitialMount\";\r\nimport * as employmentInformationService from \"../../services/employmentInformationService\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\n\r\ntype EmploymentInformationProps = EmploymentInformationStore.EmploymentInformationState & {\r\n isLoanCompleted: boolean;\r\n} & typeof EmploymentInformationActions.employmentInformationActionCreators;\r\n\r\nconst EmploymentInformation = (props: EmploymentInformationProps) => {\r\n const [currentBorrower, updateCurrentBorrower] = useState(BorrowerType.PrimaryBorrower);\r\n const [borrowerComplete, updateBorrowerComplete] = useState(false);\r\n const [coBorrowerComplete, updateCoBorrowerComplete] = useState(false);\r\n const [isLoading, setLoading] = useState(false);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n\r\n let history = useHistory();\r\n const isInitialMount = useInitialMount();\r\n\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.accountInformation?.loanGuid\r\n );\r\n const interimLoanStagingId = useSelector((state: ApplicationState) => state.loan?.interimLoanStagingId);\r\n\r\n React.useEffect(() => {\r\n if (isInitialMount && loanGuid) {\r\n\r\n props.getEmploymentInformation(BorrowerTypeEnum.CoBorrower, interimLoanStagingId??0);\r\n props.getEmploymentInformation(BorrowerTypeEnum.Borrower, interimLoanStagingId??0);\r\n }\r\n }, [isInitialMount]);\r\n\r\n const actions = {\r\n ...bindActionCreators({ ...TaskMenuCreators, ...loanUpdateResponseActionCreators }, useDispatch())\r\n };\r\n\r\n React.useEffect(() => {\r\n async function fetchEmpData() {\r\n if (history.location.state?.args === \"coborrower\") {\r\n updateCurrentBorrower(BorrowerType.CoBorrower);\r\n if (loanGuid && !isInitialMount) {\r\n updateBorrowerComplete(false);\r\n await props.getEmploymentInformation(BorrowerTypeEnum.CoBorrower, interimLoanStagingId??0);\r\n }\r\n }\r\n else if (history.location.state?.args === \"borrower\") {\r\n updateCurrentBorrower(BorrowerType.PrimaryBorrower);\r\n if (loanGuid && !isInitialMount) {\r\n updateCoBorrowerComplete(false);\r\n await props.getEmploymentInformation(BorrowerTypeEnum.Borrower, interimLoanStagingId??0);\r\n }\r\n }\r\n }\r\n fetchEmpData()\r\n }, [history.location]);\r\n\r\n useEffect(() => {\r\n if (borrowerComplete) {\r\n saveBorrowerEmployment();\r\n }\r\n }, [borrowerComplete]);\r\n\r\n useEffect(() => {\r\n if (coBorrowerComplete) {\r\n saveCoBorrowerEmployment();\r\n }\r\n }, [coBorrowerComplete]);\r\n\r\n const saveBorrowerEmployment = async () => {\r\n let response;\r\n if (!props.isLoanCompleted) {\r\n setLoading(true);\r\n response = await employmentInformationService.updateEmploymentInformation(props.borrower);\r\n let result = response.parsedBody as boolean;\r\n\r\n if (result) {\r\n employmentInformationService.updateEmploymentQuestionnaireToInterimLoanStaging(props.borrower);\r\n employmentInformationService.updateProgressTracker(props.borrower, props.hasCoBorrower);\r\n\r\n actions.setLoanIsDirty(false);\r\n setLoading(false);\r\n if (!props.hasCoBorrower) {\r\n history.push({ pathname: \"/additional-income\", state: { args: \"borrower\" } });\r\n } else if (props.hasCoBorrower) {\r\n history.replace({ state: { args: \"coborrower\" } });\r\n updateCurrentBorrower(borrowerComplete && props.hasCoBorrower ? BorrowerType.CoBorrower : BorrowerType.PrimaryBorrower);\r\n }\r\n }\r\n }\r\n else {\r\n props.SubmittedEmploymentInformation(BorrowerType.PrimaryBorrower);\r\n updateBorrowerComplete(false);\r\n actions.setLoanIsDirty(false);\r\n if (!props.hasCoBorrower) {\r\n history.push({ pathname: \"/additional-income\", state: { args: \"borrower\" } });\r\n } else if (props.hasCoBorrower) {\r\n history.replace({ state: { args: \"coborrower\" } });\r\n updateCurrentBorrower(borrowerComplete && props.hasCoBorrower ? BorrowerType.CoBorrower : BorrowerType.PrimaryBorrower);\r\n }\r\n }\r\n }\r\n\r\n const saveCoBorrowerEmployment = async () => {\r\n let response;\r\n if (!props.isLoanCompleted) {\r\n setLoading(true);\r\n response = await employmentInformationService.updateEmploymentInformation(props.coBorrower);\r\n let result = response.parsedBody as boolean;\r\n\r\n if (result) {\r\n employmentInformationService.updateEmploymentQuestionnaireToInterimLoanStaging(props.coBorrower);\r\n employmentInformationService.updateProgressTracker(props.coBorrower, props.hasCoBorrower);\r\n setLoading(false);\r\n props.SubmittedEmploymentInformation(BorrowerType.CoBorrower);\r\n updateCoBorrowerComplete(false);\r\n actions.setLoanIsDirty(false);\r\n history.push({ pathname: \"/additional-income\", state: { args: \"borrower\" } });\r\n }\r\n }\r\n else {\r\n setLoading(false);\r\n props.SubmittedEmploymentInformation(BorrowerType.CoBorrower);\r\n updateCoBorrowerComplete(false);\r\n actions.setLoanIsDirty(false);\r\n history.push({ pathname: \"/additional-income\", state: { args: \"borrower\" } });\r\n }\r\n }\r\n return (\r\n <>\r\n
    \r\n {\r\n !coBorrowerComplete &&\r\n \r\n \r\n }\r\n {isLoading &&
    }\r\n\r\n
    \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n let accountCreation = state.accountCreation;\r\n let employmentInformation = state.employmentInformation;\r\n let borrower = state.employmentInformation?.borrower;\r\n let hasCoBorrower = false;\r\n let coBorrower = state.employmentInformation?.coBorrower;\r\n let accountInformation = state.accountInformation;\r\n let isLoanCompleted = state.loan?.isLoanCompleted;\r\n\r\n if (borrower && coBorrower && accountInformation) {\r\n borrower.loanGuid = accountInformation?.loanGuid;\r\n borrower.borrowerType = BorrowerType.PrimaryBorrower;\r\n coBorrower.loanGuid = accountInformation?.loanGuid;\r\n coBorrower.borrowerType = BorrowerType.CoBorrower;\r\n if (accountCreation && accountCreation.borrower && accountCreation.borrower.firstName) {\r\n borrower.name = accountCreation.borrower.firstName + ' ' + accountCreation?.borrower?.lastName ?? '';\r\n }\r\n if (accountCreation && accountCreation.coBorrower && accountCreation.coBorrower.firstName) {\r\n coBorrower.name = accountCreation.coBorrower.firstName + ' ' + accountCreation?.coBorrower?.lastName ?? '';\r\n hasCoBorrower = accountCreation?.coBorrower?.firstName != undefined ? true : false;\r\n }\r\n state.employmentInformation = employmentInformation;\r\n }\r\n return {\r\n borrower,\r\n coBorrower,\r\n hasCoBorrower,\r\n isLoanCompleted\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n EmploymentInformationActions.employmentInformationActionCreators\r\n)(React.memo(EmploymentInformation) as any);","import { get, post } from \"../common/dataFetch\";\r\nimport { OtherIncomeSourceDetail } from \"../store/additionalIncomeStore\";\r\n\r\nexport const getAll = (interimLoanStagingId: number) => {\r\n return get(`AdditionalIncome/ReadByInterimIdAsync?interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const readIncomeStatus = (interimLoanStagingId: number) => {\r\n return get(`AdditionalIncome/ReadIncomeStatus?interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const upsertAsync = (otherIncomeSource: OtherIncomeSourceDetail[], borrowerType: string, interimLoanStagingId:number) => {\r\n return post(`AdditionalIncome/UpsertAsync?borrowerType=${borrowerType}&interimLoanStagingId=${interimLoanStagingId}`, otherIncomeSource);\r\n};\r\n\r\nexport const updateAdditionalIncomeStatus = (interimLoanStagingId: number, otherIncomeSource: OtherIncomeSourceDetail[], borrowerType: string) => {\r\n return post(`AdditionalIncome/UpdateAdditionalIncomeStatus?interimLoanStagingId=${interimLoanStagingId}&borrowerType=${borrowerType}`, otherIncomeSource);\r\n};\r\n\r\nexport const updateProgressTracker = (borrowerType: string, loanGuid: string, hasCoBorrower: boolean) => {\r\n return post(`AdditionalIncome/UpdateProgressTracker?borrowerType=${borrowerType}&loanGuid=${loanGuid}&hasCoBorrower=${hasCoBorrower}`, null);\r\n};\r\n","import * as React from \"react\";\r\nimport OtherIncomeSourceInformationItem from \"./OtherIncomeSourceInformationItem\";\r\nimport { OtherIncomeSourceDetail, AdditionalIncomeState, AdditionaIIncome } from \"../../store/additionalIncomeStore\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { AdditionalIncomeActionCreators } from \"../../actions/additionalIncomeActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport * as additionalIncomeService from \"../../services/additionalIncomeService\";\r\nimport { BorrowerTypeEnum } from \"components/common/Enums/BorrowerTypeEnum\";\r\nimport _uniqueId from 'lodash/uniqueId';\r\nimport styles from \"./additionalIncome.module.scss\";\r\nimport NavigationWrapper from \"../common/NavigationWrapper\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n\r\nexport enum AdditionalIncomeStep {\r\n BorrowerAdditonalIncomeStatus = 1,\r\n CoBorrowerAdditonalIncomeStatus = 2\r\n}\r\n\r\ninterface AdditionlIncomeInterface {\r\n currentStep: number;\r\n owner: string;\r\n additionalIncomeValid: boolean;\r\n borrowerAdditionalIncomeStatus: any;\r\n coBorrowerAdditionalIncomeStatus: any;\r\n IsContinueDisabled?: boolean;\r\n OnContinueClick?: () => void;\r\n OnBackClick?: () => void;\r\n ResetContinue?: any;\r\n navigateToHome?: () => void;\r\n}\r\n\r\ntype AdditionaIIncomeProps = {\r\n additionalIncomeDetail: AdditionaIIncome;\r\n isLoading: boolean;\r\n loanGuid: string;\r\n hasData: boolean;\r\n validation: any;\r\n borrowerName: string;\r\n IsCoborrowerPresent: boolean;\r\n coborrowerName: string;\r\n history: any;\r\n isLoanCompleted: boolean;\r\n isEncompassDown: boolean;\r\n interimLoanStagingId: number;\r\n}\r\n & typeof AdditionalIncomeActionCreators\r\n & typeof TaskMenuCreators\r\n & typeof loanUpdateResponseActionCreators\r\n & AdditionalIncomeState;\r\n\r\nclass AdditionalIncomeInformation extends React.Component {\r\n unlisten: any;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n currentStep: 0,\r\n owner: \"\",\r\n additionalIncomeValid: false,\r\n borrowerAdditionalIncomeStatus: undefined,\r\n coBorrowerAdditionalIncomeStatus: undefined,\r\n IsContinueDisabled: false\r\n };\r\n this.addOtherIncomeSourceItembtnClick = this.addOtherIncomeSourceItembtnClick.bind(this);\r\n\r\n this.unlisten = this.props.history.listen((location: any) => {\r\n if (location?.pathname === \"/additional-income\") {\r\n this.resetContinue();\r\n if (location?.state?.args === \"borrower\") {\r\n this.changeStep(AdditionalIncomeStep.BorrowerAdditonalIncomeStatus);\r\n } else {\r\n this.changeStep(AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus);\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n speakText = (textToSpeak: string) => {\r\n if (IsNarrator()) {\r\n let text = new SpeechSynthesisUtterance(textToSpeak);\r\n speechSynthesis.speak(text);\r\n }\r\n }\r\n\r\n stopSpeaking = () => {\r\n speechSynthesis.cancel();\r\n }\r\n\r\n componentWillUnmount() {\r\n //preventing history.listen call in every route change.\r\n this.unlisten();\r\n }\r\n\r\n async componentWillMount() {\r\n this.props.isLoadingAdditionalIncome(true);\r\n\r\n if (this.props.additionalIncomeDetail?.otherIncomeSourceDetails.length <= 0) {\r\n await additionalIncomeService.getAll(this.props.interimLoanStagingId)\r\n .then((response: any) => {\r\n return response.parsedBody as OtherIncomeSourceDetail[];\r\n })\r\n .then((data: OtherIncomeSourceDetail[]) => {\r\n if (data && data.length > 0) {\r\n data.forEach((e: OtherIncomeSourceDetail) => {\r\n const emptyaddOtherIncomeSourceDetail: OtherIncomeSourceDetail = {\r\n id: _uniqueId('uniqueId-'),\r\n description: e.description == null ? \"\" : e.description,\r\n monthlyAmount: e.monthlyAmount == null ? \"\" : e.monthlyAmount,\r\n owner: e.owner == null ? \"\" : e.owner,\r\n isNew: false\r\n };\r\n this.props.addOtherIncomeSourceToState(emptyaddOtherIncomeSourceDetail);\r\n });\r\n }\r\n })\r\n }\r\n\r\n await additionalIncomeService.readIncomeStatus(this.props.interimLoanStagingId).then((res: any) => {\r\n if (res) {\r\n this.props.isLoadingAdditionalIncome(false);\r\n this.setState({\r\n borrowerAdditionalIncomeStatus: res.parsedBody.borrowerAdditionalIncomeStatus,\r\n coBorrowerAdditionalIncomeStatus: res.parsedBody.coBorrowerAdditionalIncomeStatus\r\n })\r\n }\r\n }).catch((e: any) => {\r\n console.error(\"Following ex occurred: \", e);\r\n this.props.isLoadingAdditionalIncome(false);\r\n }) \r\n }\r\n\r\n changeStep(step: number) {\r\n this.setState({\r\n ...this.state,\r\n currentStep: step\r\n }, () => { this.setOwner() });\r\n };\r\n\r\n moveToEmployment = () => {\r\n const { history } = this.props;\r\n if (history) {\r\n history.push({ pathname: \"/employment-information\", state: { args: this.props.IsCoborrowerPresent ? \"coborrower\" : \"borrower\" } });\r\n }\r\n };\r\n\r\n moveToAsset = () => {\r\n const { history } = this.props;\r\n if (history) {\r\n history.push({ pathname: \"/asset\" });\r\n }\r\n };\r\n\r\n resetContinue() {\r\n this.setState({\r\n ...this.state,\r\n OnContinueClick: undefined,\r\n OnBackClick: () => { this.moveBack(); }\r\n }, () => {\r\n this.ShowContinue();\r\n });\r\n }\r\n\r\n setOwner = () => {\r\n if (this.state.currentStep == AdditionalIncomeStep.BorrowerAdditonalIncomeStatus) {\r\n this.setState({ ...this.state, owner: BorrowerTypeEnum.Borrower });\r\n }\r\n else if (this.state.currentStep == AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus) {\r\n this.setState({ ...this.state, owner: BorrowerTypeEnum.CoBorrower });\r\n }\r\n };\r\n\r\n isContinueDisableBorrower = () => {\r\n if ((this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && (this.state.borrowerAdditionalIncomeStatus === undefined ||\r\n this.state.borrowerAdditionalIncomeStatus === null))\r\n || (this.state.borrowerAdditionalIncomeStatus && (this.validateOtherIncomeSoureList()) || (this.props?.validation && Object.keys(this.props?.validation).length > 0))\r\n ) {\r\n if (!this.state.IsContinueDisabled) {\r\n this.setState({ ...this.state, IsContinueDisabled: true });\r\n }\r\n } else {\r\n if (this.state.IsContinueDisabled) {\r\n this.setState({ ...this.state, IsContinueDisabled: false });\r\n }\r\n }\r\n };\r\n\r\n isContinueDisableCoBorrower = () => {\r\n if ((this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus && (this.state.coBorrowerAdditionalIncomeStatus === undefined ||\r\n this.state.coBorrowerAdditionalIncomeStatus === null))\r\n || (this.state.coBorrowerAdditionalIncomeStatus && this.validateOtherIncomeSoureList() || (this.props?.validation && Object.keys(this.props?.validation).length > 0))\r\n ) {\r\n if (!this.state.IsContinueDisabled) {\r\n this.setState({ ...this.state, IsContinueDisabled: true });\r\n }\r\n } else {\r\n if (this.state.IsContinueDisabled) {\r\n this.setState({ ...this.state, IsContinueDisabled: false });\r\n }\r\n }\r\n };\r\n\r\n async componentDidUpdate() {\r\n // set continue button disabled/enabled.\r\n if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus) {\r\n this.isContinueDisableBorrower();\r\n } else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus) {\r\n this.isContinueDisableCoBorrower();\r\n }\r\n\r\n if (this.state.additionalIncomeValid) {\r\n this.addNewItem();\r\n this.props.setLoanIsDirty(true);\r\n this.setState({ additionalIncomeValid: false });\r\n }\r\n\r\n if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && this.state.borrowerAdditionalIncomeStatus && this.props.additionalIncomeDetail?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === this.state.owner).length <= 0) {\r\n this.addEmptyOtherIncomeSource();\r\n } else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus && this.state.coBorrowerAdditionalIncomeStatus && this.props.additionalIncomeDetail?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === this.state.owner).length <= 0) {\r\n this.addEmptyOtherIncomeSource();\r\n }\r\n };\r\n\r\n async componentDidMount() {\r\n const { history } = this.props;\r\n if (history.location?.state?.args === \"borrower\" || history.location?.state === undefined) {\r\n await this.changeStep(AdditionalIncomeStep.BorrowerAdditonalIncomeStatus);\r\n } else if (history.location?.state?.args === \"coborrower\") {\r\n await this.changeStep(AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus);\r\n }\r\n\r\n this.SetBackClick();\r\n }\r\n\r\n addEmptyOtherIncomeSource = () => {\r\n const OtherIncomeSourceDetails = this.props.additionalIncomeDetail?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === this.state.owner)\r\n if (OtherIncomeSourceDetails.length <= 0) {\r\n for (var i = 0; i < 1; i++) {\r\n this.addNewItem();\r\n }\r\n }\r\n }\r\n\r\n validateAdditionalData = () => {\r\n let otherIncomeSourceDetails = this.props.additionalIncomeDetail?.otherIncomeSourceDetails\r\n .filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === this.state.owner);\r\n for (let i = 0; otherIncomeSourceDetails.length > i; i++) {\r\n if (isNullOrWhiteSpace(otherIncomeSourceDetails[i].description)) {\r\n this.setState({ additionalIncomeValid: false });\r\n break;\r\n }\r\n else {\r\n this.setState({ additionalIncomeValid: true });\r\n }\r\n if (isNullOrWhiteSpace(otherIncomeSourceDetails[i].monthlyAmount) || otherIncomeSourceDetails[i].monthlyAmount <= \"0.00\") {\r\n this.setState({ additionalIncomeValid: false });\r\n break;\r\n }\r\n else {\r\n this.setState({ additionalIncomeValid: true });\r\n }\r\n }\r\n };\r\n\r\n addOtherIncomeSourceItembtnClick = () => {\r\n this.validateAdditionalData();\r\n };\r\n\r\n addNewItem = () => {\r\n const EmptyOtherIncomeSourceDetail: OtherIncomeSourceDetail = {\r\n id: _uniqueId('uniqueId-'),\r\n description: \"\",\r\n monthlyAmount: \"\",\r\n owner: this.state.owner,\r\n isNew: true\r\n };\r\n this.props.addOtherIncomeSourceToState(EmptyOtherIncomeSourceDetail);\r\n };\r\n\r\n setBorrowerAdditionalIncomeStatus = (value: boolean) => {\r\n this.props.setLoanIsDirty(true);\r\n this.setState({ borrowerAdditionalIncomeStatus: value });\r\n }\r\n\r\n setCoBorrowerAdditionalIncomeStatus = (value: boolean) => {\r\n this.props.setLoanIsDirty(true);\r\n this.setState({ coBorrowerAdditionalIncomeStatus: value });\r\n }\r\n\r\n async navigateToPropertyInfo() { \r\n //remove existing from list if selected \"no\"\r\n if ((this.state.owner === BorrowerTypeEnum.Borrower && !this.state.borrowerAdditionalIncomeStatus)) {\r\n this.props.removeOtherIncomeSourceItemListFromState(BorrowerTypeEnum.Borrower);\r\n } else if ((this.state.owner === BorrowerTypeEnum.CoBorrower && !this.state.coBorrowerAdditionalIncomeStatus)) {\r\n this.props.removeOtherIncomeSourceItemListFromState(BorrowerTypeEnum.CoBorrower);\r\n }\r\n\r\n let otherIncomeSourceDetailList = this.props.additionalIncomeDetail?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === this.state.owner);\r\n\r\n let result;\r\n if (!this.props.isLoanCompleted) {\r\n this.props.isLoadingAdditionalIncome(true);\r\n result = await additionalIncomeService.upsertAsync(otherIncomeSourceDetailList, this.state.owner, this.props.interimLoanStagingId);\r\n\r\n result = result.parsedBody as boolean;\r\n this.props.isLoadingAdditionalIncome(false);\r\n\r\n if (result) {\r\n additionalIncomeService.updateProgressTracker(this.state.owner, this.props.loanGuid, this.props.IsCoborrowerPresent);\r\n additionalIncomeService.updateAdditionalIncomeStatus(this.props.interimLoanStagingId, otherIncomeSourceDetailList, this.state.owner);\r\n\r\n if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && !this.state.borrowerAdditionalIncomeStatus\r\n && this.props.IsCoborrowerPresent) {\r\n this.props.history.replace({ state: { args: \"coborrower\" } });\r\n this.changeStep(AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus);\r\n } else if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && !this.state.borrowerAdditionalIncomeStatus\r\n && !this.props.IsCoborrowerPresent) {\r\n this.moveToAsset();\r\n } else if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && this.props.IsCoborrowerPresent) {\r\n this.changeStep(AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus);\r\n this.props.history.replace({ state: { args: \"coborrower\" } });\r\n }\r\n else if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && !this.props.IsCoborrowerPresent) {\r\n this.moveToAsset();\r\n }\r\n else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus && !this.state.coBorrowerAdditionalIncomeStatus) {\r\n this.moveToAsset();\r\n }\r\n else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus) {\r\n this.moveToAsset();\r\n }\r\n }\r\n }\r\n else {\r\n result = this.props.isLoanCompleted;\r\n }\r\n if (this.props.isLoanCompleted && !this.props.isEncompassDown) {\r\n if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && !this.state.borrowerAdditionalIncomeStatus\r\n && this.props.IsCoborrowerPresent) {\r\n this.props.history.replace({ state: { args: \"coborrower\" } });\r\n this.changeStep(AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus);\r\n } else if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && !this.state.borrowerAdditionalIncomeStatus\r\n && !this.props.IsCoborrowerPresent) {\r\n this.moveToAsset();\r\n } else if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && this.props.IsCoborrowerPresent) {\r\n this.changeStep(AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus);\r\n this.props.history.replace({ state: { args: \"coborrower\" } });\r\n } else if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus && !this.props.IsCoborrowerPresent) {\r\n this.moveToAsset();\r\n } else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus && !this.state.coBorrowerAdditionalIncomeStatus) {\r\n this.moveToAsset();\r\n } else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus) {\r\n this.moveToAsset();\r\n }\r\n }\r\n }\r\n\r\n moveBack = () => {\r\n if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus) {\r\n this.props.setLoanIsDirty(false);\r\n this.moveToEmployment();\r\n }\r\n else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus) {\r\n this.changeStep(AdditionalIncomeStep.BorrowerAdditonalIncomeStatus);\r\n this.props.history.replace({ state: { args: \"borrower\" } });\r\n }\r\n }\r\n\r\n validateOtherIncomeSoureList = () => {\r\n let otherIncomeSourceDetailList = this.props.additionalIncomeDetail?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === this.state.owner);\r\n let invalidList = otherIncomeSourceDetailList.filter(tt => tt.description == \"\" || tt.monthlyAmount == \"\" || tt.monthlyAmount <= \"000\")\r\n\r\n if (invalidList.length > 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n ShowContinue() {\r\n this.setState({\r\n ...this.state,\r\n OnContinueClick: () => { this.navigateToPropertyInfo(); },\r\n });\r\n }\r\n\r\n SetBackClick() {\r\n this.setState({\r\n ...this.state,\r\n OnBackClick: () => { this.moveBack(); },\r\n });\r\n }\r\n\r\n render() {\r\n let additionalIncomePage = <>;\r\n let navigationButton = <>;\r\n if (this.state.currentStep === AdditionalIncomeStep.BorrowerAdditonalIncomeStatus) {\r\n\r\n const otherIncomeSourceDetails = this.props.additionalIncomeDetail?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === BorrowerTypeEnum.Borrower)\r\n\r\n const rows = <>\r\n
    {\r\n otherIncomeSourceDetails?.map((item, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n
    \r\n \r\n\r\n additionalIncomePage = <>\r\n\r\n
    \r\n
    \r\n
    \r\n

    this.stopSpeaking()} onMouseOver={() => this.speakText(\"Additional Income Information\")}> Additional Income Information

    \r\n
    \r\n
    this.stopSpeaking()} onMouseOver={() => this.speakText(\"Does\" + this.props.borrowerName + \"receive any additional income\")}>\r\n Does {this.props.borrowerName} receive any additional income?\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.state.borrowerAdditionalIncomeStatus && rows}\r\n
    \r\n
    \r\n {this.state.borrowerAdditionalIncomeStatus && otherIncomeSourceDetails.length < 8 &&\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n ;\r\n }\r\n\r\n else if (this.state.currentStep === AdditionalIncomeStep.CoBorrowerAdditonalIncomeStatus) {\r\n\r\n const otherIncomeSourceDetails = this.props.additionalIncomeDetail?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === BorrowerTypeEnum.CoBorrower)\r\n\r\n const rows = <>\r\n
    {\r\n otherIncomeSourceDetails?.map((item, i) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n
    \r\n \r\n\r\n additionalIncomePage = <>\r\n
    \r\n
    \r\n
    \r\n

    this.stopSpeaking()} onMouseOver={() => this.speakText(\"Co-Borrower Additional Income Information\")}>Co-Borrower Additional Income Information

    \r\n
    \r\n
    this.stopSpeaking()} onMouseOver={() => this.speakText(\"Does \" + this.props.coborrowerName + \" receive any additional income?\")}>Does {this.props.coborrowerName} receive any additional income?
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.state.coBorrowerAdditionalIncomeStatus && rows}\r\n
    \r\n
    \r\n {this.state.coBorrowerAdditionalIncomeStatus && otherIncomeSourceDetails.length < 8 &&\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n ;\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n {additionalIncomePage}\r\n
    \r\n {navigationButton}\r\n
    \r\n
    \r\n {this.props.isLoading &&
    }\r\n this.ShowContinue()}\r\n OnResetFromRoute={() => this.resetContinue()}\r\n >\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (appState: ApplicationState): any => {\r\n const { additionalIncome, loan, accountCreation } = appState;\r\n let isLoading;\r\n let loanGuid = undefined;\r\n let hasData = false;\r\n let additionalIncomeDetail;\r\n let validation;\r\n let IsCoborrowerPresent = false;\r\n let borrowerName;\r\n let coborrowerName;\r\n let isLoanCompleted = appState.loan?.isLoanCompleted;\r\n let isEncompassDown = appState.loanUpdateResponse?.isEncompassDown;\r\n let interimLoanStagingId = undefined;\r\n\r\n if (loan !== undefined) {\r\n loanGuid = loan.loanGuid;\r\n interimLoanStagingId = loan.interimLoanStagingId;\r\n }\r\n\r\n if (accountCreation !== undefined) {\r\n borrowerName = accountCreation?.borrower?.firstName + \" \" + accountCreation?.borrower?.lastName;\r\n\r\n if (accountCreation?.coBorrower?.firstName != undefined) {\r\n IsCoborrowerPresent = true;\r\n coborrowerName = accountCreation?.coBorrower?.firstName + \" \" + accountCreation?.coBorrower?.lastName;\r\n }\r\n }\r\n\r\n if (additionalIncome && additionalIncome.data) {\r\n additionalIncomeDetail = additionalIncome.data;\r\n isLoading = additionalIncome.isLoading;\r\n hasData = true;\r\n validation = additionalIncome.validation;\r\n }\r\n\r\n return {\r\n additionalIncomeDetail,\r\n isLoading,\r\n loanGuid,\r\n hasData,\r\n validation,\r\n borrowerName,\r\n IsCoborrowerPresent,\r\n coborrowerName,\r\n isLoanCompleted,\r\n isEncompassDown,\r\n interimLoanStagingId\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n addOtherIncomeSourceToState: (otherIncomeSourceDetail: OtherIncomeSourceDetail) => {\r\n dispatch(AdditionalIncomeActionCreators.addOtherIncomeSourceToState(otherIncomeSourceDetail));\r\n },\r\n removeOtherIncomeSourceFromState: (otherIncomeSourceId: string) => {\r\n dispatch(AdditionalIncomeActionCreators.removeOtherIncomeSourceFromState(otherIncomeSourceId));\r\n },\r\n getAdditionalIncomeInformation: (interimLoanStagingId: number) => {\r\n dispatch(AdditionalIncomeActionCreators.getAdditionalIncomeInformation(interimLoanStagingId));\r\n },\r\n removeOtherIncomeSourceItemListFromState: (owner: string) => {\r\n dispatch(AdditionalIncomeActionCreators.removeOtherIncomeSourceItemListFromState(owner));\r\n },\r\n isLoadingAdditionalIncome: (loading: boolean) => {\r\n dispatch(AdditionalIncomeActionCreators.isLoadingAdditionalIncome(loading))\r\n },\r\n updateNavigationStatus: (taskItemId: any, subTaskItemId: any, taskStatusId: any, subTaskStatusId: any, loanGuid: any) => {\r\n dispatch(TaskMenuCreators.updateNavigationStatus(taskItemId, subTaskItemId, taskStatusId, subTaskStatusId, loanGuid));\r\n },\r\n setLoanIsDirty: (isDirty: boolean) => {\r\n dispatch(TaskMenuCreators.setLoanIsDirty(isDirty));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AdditionalIncomeInformation as any);","import { AppThunkAction } from '../store/index';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as additionalIncomeInfo from \"../store/additionalIncomeStore\";\r\nimport { OtherIncomeSourceFields } from '../components/additionalIncome/AdditionalIncomeFields';\r\nimport * as additionalIncomeService from \"services/additionalIncomeService\";\r\nimport _uniqueId from 'lodash/uniqueId';\r\n\r\nconst addOtherIncomeSourceToState = (data: additionalIncomeInfo.OtherIncomeSourceDetail): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.CreateOtherIncomeSourceItem, data };\r\n};\r\n\r\nconst removeOtherIncomeSource = (id: string): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.DeleteOtherIncomeSourceItem, id };\r\n};\r\n\r\nconst removeOtherIncomeSourceItemList = (owner: string): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.RemoveOtherIncomeSourceItemList, owner };\r\n};\r\n\r\nconst updateOtherIncomeSourceField = (value: string | boolean, field: OtherIncomeSourceFields, otherIncomeSourceId: string, isNew: boolean): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.UpdateOtherIncomeSourceInformation, field, value, otherIncomeSourceId, isNew };\r\n};\r\n\r\nconst setValidation = (validationError: any, field: string): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.SetOtherIncomeSourceValidation, validationError, field };\r\n}\r\n\r\nconst handleError = (errorMessage: string): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.HandleErrorAdditional_incomeSource, errorMessage: errorMessage };\r\n}\r\n\r\nconst clear = (): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.ClearExceptionAdditionalIncomeSource };\r\n}\r\n\r\nconst request = (interimLoanStagingId: number): additionalIncomeInfo.KnownAction => {\r\n return {\r\n type: ActionTypes.RequestAdditionalIncomeSource,\r\n interimLoanStagingId\r\n };\r\n}\r\n\r\nconst isLoading = (loading: boolean): additionalIncomeInfo.KnownAction => {\r\n return {\r\n type: ActionTypes.IsLoading,\r\n isLoading: loading\r\n };\r\n}\r\n\r\nconst receive = (data: additionalIncomeInfo.OtherIncomeSourceDetail[]): additionalIncomeInfo.KnownAction => {\r\n return { type: ActionTypes.ReceiveAdditionalIncomeSource, data };\r\n}\r\n\r\nexport const AdditionalIncomeActionCreators = {\r\n\r\n getAdditionalIncomeInformation: (interimLoanStagingId: number): AppThunkAction => (dispatch) => {\r\n dispatch(clear());\r\n dispatch(request(interimLoanStagingId));\r\n additionalIncomeService.getAll(interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n console.error(response);\r\n }\r\n return response.parsedBody as additionalIncomeInfo.OtherIncomeSourceDetail[];\r\n })\r\n .then((data: any) => {\r\n if (data.length > 0) {\r\n data.forEach((e: any) => {\r\n e.id = _uniqueId('uniqueId-');\r\n e.isNew = false;\r\n });\r\n }\r\n dispatch(receive(data));\r\n })\r\n .catch((error: Error) => {\r\n dispatch(handleError(error.message));\r\n });\r\n },\r\n\r\n addOtherIncomeSourceToState: (data: additionalIncomeInfo.OtherIncomeSourceDetail): AppThunkAction => (dispatch) => { //to add in state only\r\n dispatch(addOtherIncomeSourceToState(data));\r\n },\r\n\r\n removeOtherIncomeSourceFromState: (otherIncomeSourceId: string): AppThunkAction => (dispatch) => { //to remove from state only\r\n dispatch(removeOtherIncomeSource(otherIncomeSourceId));\r\n },\r\n\r\n handleAdditionalIncomeFieldChange: (value: any, type: any, otherIncomeSourceId: string, isNew: boolean): AppThunkAction => (dispatch) => {\r\n dispatch(updateOtherIncomeSourceField(value, type, otherIncomeSourceId, isNew));\r\n },\r\n\r\n setValidation: (error: any, field: string): AppThunkAction => (dispatch) => {\r\n dispatch(setValidation(error, field));\r\n },\r\n\r\n removeOtherIncomeSourceItemListFromState: (owner: string): AppThunkAction => (dispatch) => { //to remove List from state only\r\n dispatch(removeOtherIncomeSourceItemList(owner));\r\n },\r\n\r\n updateIncomeState: (data: additionalIncomeInfo.OtherIncomeSourceDetail[], borrowerType: any):\r\n AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateIncomeState, data: data, borrowerType: borrowerType });\r\n },\r\n\r\n isLoadingAdditionalIncome: (loading: boolean): AppThunkAction => (dispatch) => {\r\n dispatch(isLoading(loading));\r\n },\r\n}","import * as React from \"react\";\r\nimport { OtherIncomeSourceDetail, AdditionaIIncome } from \"../../store/additionalIncomeStore\";\r\nimport { OtherIncomeSourceFields, DummyOtherIncomeSourceId } from \"./AdditionalIncomeFields\";\r\nimport { IncomeSource } from \"../common/Enums/IncomeSource\";\r\nimport { connect } from \"react-redux\";\r\nimport { AdditionalIncomeActionCreators } from \"../../actions/additionalIncomeActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport styles from \"./additionalIncome.module.scss\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport { ValidationMessage, Rule } from \"../constants/validation\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype otherIncomeSourceInformationItemProps = {\r\n additionaIIncomeInfo: AdditionaIIncome;\r\n otherIncomeSourceDetail: OtherIncomeSourceDetail;\r\n loanGuid: string,\r\n validation?: undefined;\r\n isError: any;\r\n owner: string;\r\n disabled: boolean;\r\n}\r\n & typeof AdditionalIncomeActionCreators\r\n & typeof TaskMenuCreators\r\n & AdditionaIIncome;\r\n\r\nconst OtherIncomeSourceInformationItem = (props: otherIncomeSourceInformationItemProps) => {\r\n const handleInputChange = (value: any, field: OtherIncomeSourceFields) => {\r\n var otherIncomeSourceDetail = { ...props.otherIncomeSourceDetail }\r\n let isNew = props.otherIncomeSourceDetail.id === DummyOtherIncomeSourceId ? true : false;\r\n props.handleAdditionalIncomeFieldChange(value, field, otherIncomeSourceDetail.id, isNew);\r\n }\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n {\r\n props.additionaIIncomeInfo?.otherIncomeSourceDetails && props.additionaIIncomeInfo?.otherIncomeSourceDetails.filter(otherIncomeSourceDetail => otherIncomeSourceDetail.owner === props.owner).length > 1 &&\r\n
    \r\n !props.disabled ? props.removeOtherIncomeSourceFromState(props.otherIncomeSourceDetail.id) : \"\"}\r\n >\r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n ) => { handleInputChange(e.target.value, OtherIncomeSourceFields.Description) }}\r\n noArrow={false}\r\n invalidclass={styles.invalidInput}\r\n dropdownclass={styles.select}\r\n handleValidation={props.setValidation}>\r\n \r\n {Object.entries(IncomeSource).map(([key, values]) => (\r\n \r\n ))}\r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n ) => { handleInputChange(e.target.value, OtherIncomeSourceFields.MonthlyAmount) }}\r\n value={props.otherIncomeSourceDetail.monthlyAmount || \"\"}\r\n placeholder=\"$0.00\"\r\n maxLength=\"10\"\r\n rule={{ required: ValidationMessage.Required, pattern: Rule.DecimalValidation }}\r\n invalidclass={styles.invalidInput}\r\n handleValidation={props.setValidation} />\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (appState: ApplicationState): any => {\r\n let loanGuid = undefined;\r\n if (appState.loan) {\r\n loanGuid = appState.loan.loanGuid;\r\n }\r\n return { loanGuid };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n handleAdditionalIncomeFieldChange: (value: any, field: string, OtherIncomeSourceId: string, isNew: boolean) => {\r\n dispatch(AdditionalIncomeActionCreators.handleAdditionalIncomeFieldChange(value, field, OtherIncomeSourceId, isNew));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n setValidation: (error: any, field: string) => {\r\n dispatch(AdditionalIncomeActionCreators.setValidation(error, field));\r\n },\r\n removeOtherIncomeSourceFromState: (OtherIncomeSourceId: string) => {\r\n dispatch(AdditionalIncomeActionCreators.removeOtherIncomeSourceFromState(OtherIncomeSourceId));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(OtherIncomeSourceInformationItem as any) as any;","import * as React from \"react\";\r\nimport { useNavigation } from \"../..///hooks/useNavigation\";\r\n\r\nexport interface NavigationWrapper {\r\n IsContinueDisabled?: boolean;\r\n OnContinueClick?: () => void;\r\n OnBackClick?: () => void;\r\n OnInitialize?: () => void;\r\n OnResetFromRoute?: () => void;\r\n ResetContinue?: any;\r\n}\r\n\r\nconst NavigationWrapper = (props: NavigationWrapper) => {\r\n var navigation = useNavigation(props.OnInitialize);\r\n React.useEffect(() => {\r\n if (props.OnBackClick) {\r\n navigation.SetBackOnClick(props.OnBackClick);\r\n }\r\n }, [props.OnBackClick]);\r\n React.useEffect(() => {\r\n if (props.OnContinueClick) {\r\n\r\n navigation.ShowContinue(props.OnContinueClick, props.IsContinueDisabled);\r\n }\r\n }, [props.OnContinueClick]);\r\n React.useEffect(() => {\r\n if (props.IsContinueDisabled != undefined) {\r\n navigation.SetContinueDisabled(props.IsContinueDisabled);\r\n }\r\n }, [props.IsContinueDisabled]);\r\n React.useEffect(() => {\r\n if (props.ResetContinue != undefined) {\r\n navigation.ResetContinue();\r\n }\r\n }, [props.ResetContinue]);\r\n React.useEffect(() => {\r\n if (navigation.OnResetFromRoute && props.OnResetFromRoute != undefined) {\r\n props.OnResetFromRoute();\r\n }\r\n }, [navigation.OnResetFromRoute]);\r\n return <>;\r\n};\r\nexport default NavigationWrapper;","import * as React from \"react\";\r\nimport { connect, useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as GovernmentQuestionActions from \"../../actions/governmentQuestionActions\";\r\nimport * as GovernmentQuestionStore from \"../../store/GovernmentQuestionStore\";\r\nimport BorrowerGovernmentQuestionSection5a from \"components/governmentQuestions/BorrowerGovernmentQuestionsSection5a\";\r\nimport BorrowerGovernmentQuestionSection5b from \"components/governmentQuestions/BorrowerGovernmentQuestionsSection5b\";\r\nimport styles from \"./GovernmentQuestions.module.scss\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport * as governmentQuestionService from \"../../services/governmentQuestionService\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\n\r\ntype GovernmentQuestionsSection5aProps = GovernmentQuestionStore.GovernmentQuestionState\r\n & {\r\n isCoBorrowerPresent: boolean,\r\n borrower: GovernmentQuestionStore.GovernmentQuestion,\r\n coBorrower: GovernmentQuestionStore.GovernmentQuestion,\r\n borrowerComplete: boolean,\r\n coBorrowerComplete: boolean,\r\n history: any;\r\n loanGuid: string;\r\n isLoanCompleted: boolean;\r\n interimLoanStagingId:number\r\n }\r\n & typeof GovernmentQuestionActions.governmentQuestionActionCreators\r\n & typeof TaskMenuCreators & typeof loanUpdateResponseActionCreators;\r\n\r\nexport enum GovernmentQuestionsStep {\r\n BorrowerGovermentQuestionSection5a = 1,\r\n BorrowerGovermentQuestionSection5b = 2,\r\n CoBorrowerGovermentQuestionSection5a = 3,\r\n CoBorrowerGovermentQuestionSection5b = 4,\r\n}\r\n\r\nconst GovernmentQuestion = (props: GovernmentQuestionsSection5aProps) => {\r\n const [currentStep, changeStep] = React.useState(GovernmentQuestionsStep.BorrowerGovermentQuestionSection5a);\r\n const [borrowerValid, setBorrowerValid] = React.useState(false);\r\n const [coBorrowerValid, setCoBorrowerValid] = React.useState(false);\r\n const [borrowerSection5bValid, setBorrowerSection5bValid] = React.useState(false);\r\n const [coBorrowerSection5bValid, setCoBorrowerSection5bValid] = React.useState(false);\r\n const [isLoading, setLoading] = React.useState(false);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const history = useHistory();\r\n\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...TaskMenuCreators,\r\n ...loanUpdateResponseActionCreators\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.ShowContinue(() => onContinue(), isEncompassDown ?? false);\r\n });\r\n\r\n React.useEffect(() => {\r\n navigation.SetBackOnClick(() => onBack());\r\n });\r\n\r\n React.useEffect(() => {\r\n if (history.location.state?.args === \"coborrower\") {\r\n changeStep(GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5a)\r\n }\r\n else if (history.location.state?.args === \"borrower\") {\r\n changeStep(GovernmentQuestionsStep.BorrowerGovermentQuestionSection5a)\r\n }\r\n }, [history.location]);\r\n\r\n React.useEffect(() => {\r\n navigation.SetBackOnClick(() => onBack());\r\n navigation.ShowContinue(() => onContinue(), isEncompassDown ?? false);\r\n if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5a) {\r\n navigation.SetContinueDisabled(!borrowerValid || (isEncompassDown ?? false));\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5b) {\r\n navigation.SetContinueDisabled(!borrowerSection5bValid || (isEncompassDown ?? false));\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5a) {\r\n navigation.SetContinueDisabled(!coBorrowerValid || (isEncompassDown ?? false));\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5b) {\r\n navigation.SetContinueDisabled(!coBorrowerSection5bValid || (isEncompassDown ?? false));\r\n }\r\n }, [currentStep, borrowerValid, borrowerSection5bValid, coBorrowerValid, coBorrowerSection5bValid, isEncompassDown])\r\n\r\n const setBorrowerCompleted = (borrowerType: GovernmentQuestionStore.BorrowerType) => {\r\n props.updateBorrowerCompleted(borrowerType, true);\r\n\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.borrowerComplete && currentStep == GovernmentQuestionsStep.BorrowerGovermentQuestionSection5b) {\r\n saveBorrowerQuestions();\r\n }\r\n }, [props.borrowerComplete]);\r\n\r\n React.useEffect(() => {\r\n if (props.coBorrowerComplete && currentStep == GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5b) {\r\n saveCoBorrowerQuestions();\r\n }\r\n }, [props.coBorrowerComplete]);\r\n\r\n const saveBorrowerQuestions = async () => {\r\n if (props.borrowerComplete && currentStep == GovernmentQuestionsStep.BorrowerGovermentQuestionSection5b) {\r\n props.borrower.loanGuid = props.loanGuid;\r\n props.borrower.interimLoanStagingId = props.interimLoanStagingId;\r\n if (props.isLoanCompleted) {\r\n changeStepAfterSaveBorrowerQuestion();\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n governmentQuestionService.updateGovernmentQuestion(props.borrower)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating government information.\");\r\n }\r\n let result = response.parsedBody as boolean;\r\n setLoading(false);\r\n if (result) {\r\n actions.setLoanIsDirty(false);\r\n changeStepAfterSaveBorrowerQuestion();\r\n }\r\n else {\r\n throw new Error(\"There was a problem updating government information.\");\r\n }\r\n })\r\n .catch((error: Error) => {\r\n setLoading(false);\r\n throw new Error(`Following error message occurred ${error.message}`);\r\n });\r\n }\r\n }\r\n const changeStepAfterSaveBorrowerQuestion = () => {\r\n if (props.isCoBorrowerPresent) {\r\n history.replace({ state: { args: \"coborrower\" } });\r\n } else {\r\n history.push({ pathname: \"/demographic-questions\", state: { args: \"borrower\" } });\r\n }\r\n props.updateBorrowerCompleted(GovernmentQuestionStore.BorrowerType.PrimaryBorrower, false);\r\n }\r\n const saveCoBorrowerQuestions = async () => {\r\n if (props.coBorrowerComplete && currentStep == GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5b) {\r\n props.coBorrower.loanGuid = props.loanGuid;\r\n props.coBorrower.interimLoanStagingId = props.interimLoanStagingId;\r\n if (!props.isLoanCompleted) {\r\n setLoading(true);\r\n governmentQuestionService.updateGovernmentQuestion(props?.coBorrower)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating government information for coborrower.\");\r\n }\r\n let result = response.parsedBody as boolean;\r\n setLoading(false);\r\n if (result) {\r\n actions.setLoanIsDirty(false);\r\n if (result !== null) {\r\n history.push({ pathname: \"/demographic-questions\", state: { args: \"borrower\" } });\r\n props.updateBorrowerCompleted(GovernmentQuestionStore.BorrowerType.CoBorrower, false);\r\n }\r\n }\r\n else {\r\n throw new Error(\"There was a problem updating government information for coborrower.\");\r\n }\r\n })\r\n .catch((error: Error) => {\r\n setLoading(false);\r\n throw new Error(`Following error message occurred ${error.message}`);\r\n });\r\n }\r\n else {\r\n history.push({ pathname: \"/demographic-questions\", state: { args: \"borrower\" } });\r\n props.updateBorrowerCompleted(GovernmentQuestionStore.BorrowerType.CoBorrower, false);\r\n }\r\n }\r\n }\r\n\r\n const updateGovernmentQuestionInterim = (borrowerType: GovernmentQuestionStore.BorrowerType) => {\r\n actions.setLoanIsDirty(false);\r\n if (borrowerType == GovernmentQuestionStore.BorrowerType.PrimaryBorrower) {\r\n if (!props.isLoanCompleted) {\r\n props.updateToInterim(props.borrower);\r\n }\r\n changeStep(GovernmentQuestionsStep.BorrowerGovermentQuestionSection5b)\r\n }\r\n else {\r\n if (!props.isLoanCompleted) {\r\n props.updateToInterim(props.coBorrower);\r\n }\r\n changeStep(GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5b)\r\n }\r\n }\r\n\r\n const onBack = () => {\r\n if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5a) {\r\n actions.setLoanIsDirty(false);\r\n const { history } = props;\r\n if (history) history.push('/property-information');\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5b) {\r\n changeStep(GovernmentQuestionsStep.BorrowerGovermentQuestionSection5a);\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5a) {\r\n history.replace({ state: { args: \"borrower\" } });\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5b) {\r\n changeStep(GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5a);\r\n }\r\n };\r\n\r\n const onContinue = () => {\r\n if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5a) {\r\n updateGovernmentQuestionInterim(GovernmentQuestionStore.BorrowerType.PrimaryBorrower)\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5b) {\r\n setBorrowerCompleted(GovernmentQuestionStore.BorrowerType.PrimaryBorrower);\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5a) {\r\n updateGovernmentQuestionInterim(GovernmentQuestionStore.BorrowerType.CoBorrower);\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5b) {\r\n setBorrowerCompleted(GovernmentQuestionStore.BorrowerType.CoBorrower);\r\n }\r\n };\r\n\r\n let governmentQuestionsPage = <>;\r\n\r\n if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5a) {\r\n governmentQuestionsPage = (\r\n <>\r\n \r\n\r\n \r\n );\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.BorrowerGovermentQuestionSection5b) {\r\n governmentQuestionsPage = (\r\n <>\r\n \r\n \r\n );\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5a) {\r\n governmentQuestionsPage =\r\n <>\r\n \r\n ;\r\n }\r\n else if (currentStep === GovernmentQuestionsStep.CoBorrowerGovermentQuestionSection5b) {\r\n governmentQuestionsPage =\r\n <>\r\n \r\n ;\r\n }\r\n \r\n return
    {governmentQuestionsPage}\r\n <>\r\n {isLoading &&
    }\r\n \r\n
    ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation, accountCreation, governmentQuestions } = state;\r\n let isCoBorrowerPresent;\r\n let borrower;\r\n let coBorrower;\r\n let borrowerComplete;\r\n let loanGuid;\r\n let coBorrowerComplete;\r\n let isLoanCompleted;\r\n let interimLoanStagingId;\r\n if (accountInformation && accountCreation) {\r\n isCoBorrowerPresent = state.accountCreation?.coBorrower?.firstName != null ? true : false;\r\n borrower = governmentQuestions?.borrower;\r\n coBorrower = governmentQuestions?.coBorrower;\r\n borrowerComplete = governmentQuestions?.borrowerComplete;\r\n coBorrowerComplete = governmentQuestions?.coBorrowerComplete;\r\n loanGuid = accountInformation.loanGuid;\r\n isLoanCompleted = state.loan?.isLoanCompleted;\r\n interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n }\r\n return {\r\n isCoBorrowerPresent,\r\n borrower,\r\n coBorrower,\r\n borrowerComplete,\r\n coBorrowerComplete,\r\n loanGuid,\r\n isLoanCompleted,\r\n interimLoanStagingId\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n GovernmentQuestionActions.governmentQuestionActionCreators\r\n)(GovernmentQuestion as any);","import { post, get } from \"../common/dataFetch\";\r\nimport { GovernmentQuestion } from \"../store/GovernmentQuestionStore\";\r\n\r\nexport const getGovernmentQuestion = (borrowerType: string,interimLoanStagingId:number) => {\r\n return get(`GovernmentQuestion/ReadByInterimIdAsync?borrowerType=${borrowerType}&interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\nexport const updateGovernmentQuestion = (govermentQuestionDto: GovernmentQuestion) => {\r\n return post(\"GovernmentQuestion/UpsertAsync\", govermentQuestionDto);\r\n};\r\n","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as GovernmentQuestionStore from \"../store/GovernmentQuestionStore\";\r\nimport { KnownAction } from '../store/GovernmentQuestionStore';\r\nimport * as governmentQuestionService from \"../services/governmentQuestionService\";\r\n\r\nconst submitGovernmentQuestions = (borrowerType: GovernmentQuestionStore.BorrowerType, value: boolean): KnownAction => {\r\n return { type: ActionTypes.SubmitGovernmentQuestions, borrowerType: borrowerType, value: value };\r\n};\r\nconst request = (borrowerType: string, interimLoanStagingId:number): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestGovernmentQuestions,\r\n borrowerType,\r\n interimLoanStagingId\r\n };\r\n};\r\nconst receive = (data: GovernmentQuestionStore.GovernmentQuestion, borrowerType: GovernmentQuestionStore.BorrowerType): KnownAction => {\r\n return { type: ActionTypes.ReceiveGovernmentQuestions, data, borrowerType };\r\n};\r\n\r\nexport const governmentQuestionActionCreators = {\r\n updateGovernmentQuestions: (value: string, propertyName: string, borrowerType: GovernmentQuestionStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateGovernmentQuestions, value: value, propertyName: propertyName, borrowerType: borrowerType });\r\n },\r\n updateGovernmentAdditionalQuestions: (value: boolean, propertyName: string, borrowerType: GovernmentQuestionStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateGovernmentAdditionalQuestions, value: value, propertyName: propertyName, borrowerType: borrowerType });\r\n },\r\n updateBorrowerCompleted: (borrowerType: GovernmentQuestionStore.BorrowerType, value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateBorrowerCompleted, borrowerType: borrowerType, value: value });\r\n },\r\n submittedGovernmentQuestions: (borrowerData: GovernmentQuestionStore.GovernmentQuestion): AppThunkAction => async (dispatch) => {\r\n await governmentQuestionService.updateGovernmentQuestion(borrowerData)\r\n .then((response) => {\r\n if (!response.ok) {\r\n dispatch(submitGovernmentQuestions(GovernmentQuestionStore.BorrowerType.PrimaryBorrower, true));\r\n console.error(response);\r\n }\r\n return true;\r\n })\r\n .then(isSuccessful => {\r\n dispatch(submitGovernmentQuestions(GovernmentQuestionStore.BorrowerType.PrimaryBorrower, true));\r\n if (!isSuccessful) {\r\n console.error(\"Government question failed to saved\");\r\n return false;\r\n }\r\n return true;\r\n });\r\n },\r\n getGovernmentQuestions: (borrowerType: string, interimLoanStagingId:number): AppThunkAction => (dispatch) => {\r\n dispatch(request(borrowerType, interimLoanStagingId));\r\n governmentQuestionService.getGovernmentQuestion( borrowerType, interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + interimLoanStagingId + \" .\");\r\n }\r\n return response.parsedBody as GovernmentQuestionStore.GovernmentQuestion;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data, data.borrowerType));\r\n })\r\n .catch((error: Error) => {\r\n });\r\n },\r\n\r\n setGovernmentQuestions: (data: GovernmentQuestionStore.GovernmentQuestion, borrowerType: GovernmentQuestionStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch(receive(data, borrowerType));\r\n },\r\n\r\n updateToInterim: (borrowerData: GovernmentQuestionStore.GovernmentQuestion): AppThunkAction => (dispatch) => {\r\n governmentQuestionService.updateGovernmentQuestion(borrowerData)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(response);\r\n }\r\n return true;\r\n })\r\n .then(isSuccessful => {\r\n if (!isSuccessful) {\r\n console.error(\"Government question failed to saved in Interim table\");\r\n }\r\n });\r\n },\r\n}","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as GovernmentQuestionActions from \"../../actions/governmentQuestionActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport * as GovernmentQuestionStore from \"../../store/GovernmentQuestionStore\";\r\nimport styles from \"./GovernmentQuestions.module.scss\";\r\nimport { BorrowerTypeEnum } from \"components/common/Enums/BorrowerTypeEnum\";\r\nimport * as governmentQuestionService from \"../../services/governmentQuestionService\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype BorrowerGovernmentQuestionsSection5aProps = GovernmentQuestionStore.GovernmentQuestionState & {\r\n borrowerName: string,\r\n loanPurposeChoice: string,\r\n loanGuid: string,\r\n borrowerType: GovernmentQuestionStore.BorrowerType;\r\n setBorrowerValid: React.Dispatch>;\r\n disabled: boolean;\r\n interimLoanStagingId: number;\r\n}\r\n & typeof GovernmentQuestionActions.governmentQuestionActionCreators\r\n & typeof TaskMenuCreators;\r\n\r\nconst BorrowerGovernmentQuestionSection5a = (props: BorrowerGovernmentQuestionsSection5aProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n let currentBorrower = props.borrowerType === GovernmentQuestionStore.BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower;\r\n\r\n React.useEffect(() => {\r\n if (props.borrowerType === GovernmentQuestionStore.BorrowerType.PrimaryBorrower) {\r\n props.setBorrowerValid(validateBorrower(props.borrower));\r\n } else if (props.coBorrower) {\r\n props.setBorrowerValid(validateBorrower(props.coBorrower));\r\n }\r\n }, [props.borrower, props.coBorrower]);\r\n\r\n React.useEffect(() => {\r\n if (props.borrowerType === GovernmentQuestionStore.BorrowerType.PrimaryBorrower) {\r\n getGovernmnetQuestions(BorrowerTypeEnum.Borrower);\r\n } else if (props.borrowerType === GovernmentQuestionStore.BorrowerType.CoBorrower) {\r\n getGovernmnetQuestions(BorrowerTypeEnum.CoBorrower);\r\n }\r\n }, [props.borrowerType]);\r\n\r\n const getGovernmnetQuestions = async (borrowerType: BorrowerTypeEnum) => {\r\n if (props.interimLoanStagingId !== undefined && props.interimLoanStagingId > 0) {\r\n let response = await governmentQuestionService.getGovernmentQuestion(borrowerType, props.interimLoanStagingId);\r\n if (response.ok) {\r\n if (response.parsedBody?.urla2020CitizenshipResidencyType != null) {\r\n let data = response.parsedBody as GovernmentQuestionStore.GovernmentQuestion;\r\n props.setGovernmentQuestions(data, data.borrowerType ?? GovernmentQuestionStore.BorrowerType.PrimaryBorrower);\r\n }\r\n else {\r\n currentBorrower.borrowerType = response.parsedBody?.borrowerType;\r\n props.setGovernmentQuestions(currentBorrower, response.parsedBody?.borrowerType ?? 0)\r\n }\r\n }\r\n }\r\n };\r\n\r\n const validateBorrower = (borrower: GovernmentQuestionStore.GovernmentQuestion): boolean => {\r\n let isValid = true;\r\n if (\r\n borrower.intentToOccupyIndicator === undefined ||\r\n borrower.homeownerPastThreeYearsIndicator === undefined ||\r\n borrower.priorPropertyUsageType === undefined ||\r\n borrower.priorPropertyTitleType === undefined ||\r\n borrower.urla2020CitizenshipResidencyType === undefined ||\r\n borrower.urla2020CitizenshipResidencyType === null ||\r\n borrower.undisclosedBorrowedFundsIndicator === undefined ||\r\n borrower.undisclosedMortgageApplicationIndicator === undefined ||\r\n borrower.undisclosedCreditApplicationIndicator === undefined ||\r\n borrower.propertyProposedCleanEnergyLienIndicator === undefined\r\n\r\n ) {\r\n isValid = false;\r\n }\r\n else if (borrower.homeownerPastThreeYearsIndicator\r\n && ((borrower.priorPropertyUsageType === undefined || borrower.priorPropertyUsageType === \"\" || borrower.priorPropertyUsageType === null)\r\n || (borrower.priorPropertyTitleType == undefined || borrower.priorPropertyTitleType === \"\" || borrower.priorPropertyTitleType === null))) {\r\n isValid = false;\r\n }\r\n else if (!borrower.homeownerPastThreeYearsIndicator\r\n && (\r\n (borrower.priorPropertyUsageType !== \"\" && borrower.priorPropertyUsageType !== null)\r\n && (borrower.priorPropertyTitleType !== \"\" && borrower.priorPropertyTitleType !== null)\r\n )\r\n ) {\r\n isValid = false;\r\n }\r\n else if (props.loanPurposeChoice === \"Purchase\" && borrower.specialBorrowerSellerRelationshipIndicator === undefined) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n };\r\n const updateProperty = (value: boolean, fieldName: string) => {\r\n if (fieldName === \"homeownerPastThreeYearsIndicator\") {\r\n if (!value) {\r\n props.updateGovernmentQuestions(\"\", \"priorPropertyUsageType\", props.borrowerType);\r\n props.updateGovernmentQuestions(\"\", \"priorPropertyTitleType\", props.borrowerType);\r\n }\r\n }\r\n props.updateGovernmentAdditionalQuestions(value, fieldName, props.borrowerType);\r\n };\r\n const setCheckbox = (e: any, value: string) => {\r\n if (value === \"NonPermanentResidentAlien\") {\r\n props.updateGovernmentQuestions(value, \"urla2020CitizenshipResidencyType\", props.borrowerType);\r\n }\r\n else {\r\n props.updateGovernmentQuestions(value, \"urla2020CitizenshipResidencyType\", props.borrowerType)\r\n }\r\n };\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n <>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Government Questions')}>\r\n Government Questions\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Please answer for' + props.borrowerName)}>Please answer for {props.borrowerName}\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n {!currentBorrower?.homeownerPastThreeYearsIndicator ? <> :\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n
    \r\n \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n {currentBorrower?.urla2020CitizenshipResidencyType === undefined || currentBorrower?.urla2020CitizenshipResidencyType === \"USCitizen\" ? <>\r\n :
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n }\r\n\r\n {(currentBorrower?.loanPurpose === \"Purchase\" || props.loanPurposeChoice === \"Purchase\") ?\r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n : <>}\r\n\r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n );\r\n};\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { borrowerType: GovernmentQuestionStore.BorrowerType, setBorrowerValid: React.Dispatch>, isLoanCompleted: boolean }): any => {\r\n return state.accountInformation && state.accountCreation && state.taskMenu && state.propertyInformation ?\r\n {\r\n ...state.governmentQuestions,\r\n borrowerName:\r\n ownProps.borrowerType == GovernmentQuestionStore.BorrowerType.PrimaryBorrower ?\r\n state.accountCreation?.borrower?.firstName + \" \" + state.accountCreation?.borrower?.lastName :\r\n state.accountCreation?.coBorrower?.firstName + \" \" + state.accountCreation?.coBorrower?.lastName,\r\n loanPurposeChoice: state.taskMenu?.loanSummary?.loanPurpose != undefined ? state.taskMenu?.loanSummary?.loanPurpose\r\n : state.propertyInformation.purposeType,\r\n borrowerType: ownProps.borrowerType,\r\n setBorrowerValid: ownProps.setBorrowerValid,\r\n loanGuid: state.loan?.loanGuid,\r\n disabled: ownProps.isLoanCompleted,\r\n interimLoanStagingId: state.loan?.interimLoanStagingId\r\n } :\r\n state.governmentQuestions;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateGovernmentQuestions: (value: string, propertyName: string, borrowerType: GovernmentQuestionStore.BorrowerType) => {\r\n dispatch(GovernmentQuestionActions.governmentQuestionActionCreators.updateGovernmentQuestions(value, propertyName, borrowerType));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n updateGovernmentAdditionalQuestions: (value: boolean, propertyName: string, borrowerType: GovernmentQuestionStore.BorrowerType) => {\r\n dispatch(GovernmentQuestionActions.governmentQuestionActionCreators.updateGovernmentAdditionalQuestions(value, propertyName, borrowerType));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n getGovernmentQuestions: (borrowerType: string, interimLoanStagingId:number) => {\r\n dispatch(GovernmentQuestionActions.governmentQuestionActionCreators.getGovernmentQuestions(borrowerType, interimLoanStagingId));\r\n },\r\n setGovernmentQuestions: (data: GovernmentQuestionStore.GovernmentQuestion, borrowerType: GovernmentQuestionStore.BorrowerType) => {\r\n dispatch(GovernmentQuestionActions.governmentQuestionActionCreators.setGovernmentQuestions(data, borrowerType));\r\n }\r\n\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(BorrowerGovernmentQuestionSection5a as any);","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as GovernmentQuestionActions from \"../../actions/governmentQuestionActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport * as GovernmentQuestionStore from \"../../store/GovernmentQuestionStore\";\r\nimport styles from \"./GovernmentQuestions.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype BorrowerGovernmentQuestionsSection5bProps = GovernmentQuestionStore.GovernmentQuestionState & {\r\n borrowerName: string,\r\n borrowerType: GovernmentQuestionStore.BorrowerType;\r\n setBorrowerSection5bValid: React.Dispatch>;\r\n disabled: boolean;\r\n}\r\n & typeof GovernmentQuestionActions.governmentQuestionActionCreators\r\n & typeof TaskMenuCreators;\r\n\r\nconst BorrowerGovernmentQuestionSection5b = (props: BorrowerGovernmentQuestionsSection5bProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n React.useEffect(() => {\r\n if (props.borrowerType === GovernmentQuestionStore.BorrowerType.PrimaryBorrower) {\r\n props.setBorrowerSection5bValid(validateBorrower(props.borrower));\r\n } else if (props.coBorrower) {\r\n props.setBorrowerSection5bValid(validateBorrower(props.coBorrower));\r\n }\r\n\r\n }, [props.borrower, props.coBorrower]);\r\n\r\n const validateBorrower = (borrower: GovernmentQuestionStore.GovernmentQuestion): boolean => {\r\n let isValid = true;\r\n if (\r\n borrower.undisclosedComakerOfNoteIndicator === undefined ||\r\n borrower.outstandingJudgementsIndicator === undefined ||\r\n borrower.presentlyDelinquentIndicatorURLA === undefined ||\r\n borrower.partyToLawsuitIndicatorURLA === undefined ||\r\n borrower.priorPropertyDeedInLieuConveyedIndicator === undefined ||\r\n borrower.priorPropertyShortSaleCompletedIndicator === undefined ||\r\n borrower.priorPropertyForeclosureCompletedIndicator === undefined ||\r\n borrower.bankruptcyIndicator === undefined\r\n ) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n };\r\n const updateProperty = (value: boolean, fieldName: string) => {\r\n props.updateGovernmentAdditionalQuestions(value, fieldName, props.borrowerType);\r\n };\r\n let currentBorrower = props.borrowerType === GovernmentQuestionStore.BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower;\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n <>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Government Questions Cont.')}>\r\n Government Questions Cont.\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Please answer for' + props.borrowerName)}> Please answer for {props.borrowerName}\r\n

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { borrowerType: GovernmentQuestionStore.BorrowerType, setBorrowerSection5bValid: React.Dispatch>, isLoanCompleted: boolean }): any => {\r\n return state.accountCreation ?\r\n {\r\n ...state.governmentQuestions,\r\n borrowerName: ownProps.borrowerType == GovernmentQuestionStore.BorrowerType.PrimaryBorrower ?\r\n state.accountCreation?.borrower?.firstName + \" \" + state.accountCreation?.borrower?.lastName :\r\n state.accountCreation?.coBorrower?.firstName + \" \" + state.accountCreation?.coBorrower?.lastName,\r\n borrowerType: ownProps.borrowerType,\r\n setBorrowerSection5bValid: ownProps.setBorrowerSection5bValid,\r\n disabled: ownProps.isLoanCompleted\r\n } :\r\n state.governmentQuestions;\r\n}\r\n\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateGovernmentAdditionalQuestions: (value: boolean, propertyName: string, borrowerType: GovernmentQuestionStore.BorrowerType) => {\r\n dispatch(GovernmentQuestionActions.governmentQuestionActionCreators.updateGovernmentAdditionalQuestions(value, propertyName, borrowerType));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BorrowerGovernmentQuestionSection5b as any);","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as DemographicQuestionsActions from \"../../actions/demographicQuestionsActions\";\r\nimport * as DemographicQuestionsStore from \"../../store/demographicQuestionsStore\";\r\nimport DemographicQuestion from \"components/demographicQuestions/DemographicQuestion\";\r\nimport { useHistory } from \"react-router\";\r\nimport { BorrowerType } from \"../../store/Enum\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport * as demographicQuestionService from \"../../services/demographicQuestionsService\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\n\r\ntype DemographicQuestionProps = DemographicQuestionsStore.DemographicQuestionsState\r\n & {\r\n isCoBorrowerPresent: boolean,\r\n borrower: DemographicQuestionsStore.DemographicQuestions,\r\n coBorrower: DemographicQuestionsStore.DemographicQuestions,\r\n loanGuid: string,\r\n borrowerType?: number;\r\n isLoanCompleted: boolean;\r\n }\r\n & typeof DemographicQuestionsActions.demographicQuestionsActionCreators\r\n & typeof TaskMenuCreators & typeof loanUpdateResponseActionCreators;\r\n\r\nexport enum DemographicQuestionStep {\r\n BorrowerDemographicQuestion = 1,\r\n CoBorrowerDemographicQuestion = 2,\r\n Finished = 3\r\n}\r\n\r\nconst DemographicQuestionDetails = (props: DemographicQuestionProps) => {\r\n const history = useHistory();\r\n const [currentStep, changeStep] = React.useState(0);\r\n const [borrowerValid, setBorrowerValid] = React.useState(false);\r\n const [coBorrowerValid, setCoBorrowerValid] = React.useState(false);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const [isLoading, setLoading] = React.useState(false);\r\n const navigation = useNavigation();\r\n\r\n React.useEffect(() => {\r\n if (history.location.state?.args === \"coborrower\") {\r\n changeStep(DemographicQuestionStep.CoBorrowerDemographicQuestion);\r\n }\r\n else if (history.location.state?.args === \"borrower\") {\r\n changeStep(DemographicQuestionStep.BorrowerDemographicQuestion);\r\n }\r\n }, [history.location]);\r\n\r\n const onBack = () => {\r\n if (currentStep === DemographicQuestionStep.BorrowerDemographicQuestion) {\r\n props.setLoanIsDirty(false);\r\n history.push({ pathname: \"/government-questions\", state: { args: props.isCoBorrowerPresent ? \"coborrower\" : \"borrower\" } });\r\n }\r\n else if (currentStep === DemographicQuestionStep.CoBorrowerDemographicQuestion) {\r\n history.replace({ state: { args: \"borrower\" } });\r\n changeStep(DemographicQuestionStep.BorrowerDemographicQuestion);\r\n }\r\n else if (currentStep === DemographicQuestionStep.Finished) {\r\n changeStep(props.isCoBorrowerPresent ? DemographicQuestionStep.CoBorrowerDemographicQuestion : DemographicQuestionStep.BorrowerDemographicQuestion)\r\n }\r\n };\r\n const onContinue = () => {\r\n if (currentStep === DemographicQuestionStep.BorrowerDemographicQuestion) {\r\n saveDemographicQuestionDetails(props.isCoBorrowerPresent ? DemographicQuestionStep.CoBorrowerDemographicQuestion : DemographicQuestionStep.Finished)\r\n }\r\n else if (currentStep === DemographicQuestionStep.CoBorrowerDemographicQuestion) {\r\n saveDemographicQuestionDetails(DemographicQuestionStep.Finished);\r\n\r\n }\r\n };\r\n\r\n let demographicQuestionsPage = <>;\r\n\r\n const saveDemographicQuestionDetails = (Step: number) => {\r\n if (currentStep === DemographicQuestionStep.BorrowerDemographicQuestion && borrowerValid) {\r\n if (!props.isLoanCompleted) {\r\n setLoading(true);\r\n demographicQuestionService.updateDemographicQuestions(props.borrower)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating demographic information.\");\r\n }\r\n setLoading(false);\r\n let result = response.parsedBody as boolean;\r\n if (result) {\r\n if (Step == DemographicQuestionStep.CoBorrowerDemographicQuestion) {\r\n changeStep(Step);\r\n }\r\n else {\r\n history.push(\"/contact-preference\");\r\n }\r\n }\r\n else {\r\n throw new Error(\"There was a problem updating demographic information.\");\r\n }\r\n })\r\n .catch((error: Error) => {\r\n throw new Error(`Following error message occurred while updating demographic information ${error.message}`);\r\n });\r\n }\r\n else {\r\n if (Step == DemographicQuestionStep.CoBorrowerDemographicQuestion) {\r\n changeStep(Step);\r\n }\r\n else {\r\n history.push(\"/contact-preference\");\r\n }\r\n }\r\n }\r\n else if (currentStep === DemographicQuestionStep.CoBorrowerDemographicQuestion && coBorrowerValid) {\r\n if (!props.isLoanCompleted) {\r\n setLoading(true);\r\n demographicQuestionService.updateDemographicQuestions(props.coBorrower)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating demographic information for coborrower.\");\r\n }\r\n setLoading(false);\r\n let result = response.parsedBody as boolean;\r\n if (result) {\r\n history.push(\"/contact-preference\");\r\n }\r\n else {\r\n throw new Error(\"There was a problem updating demographic information for coborrower.\");\r\n }\r\n })\r\n .catch((error: Error) => {\r\n throw new Error(`Following error message occurred ${error.message}`);\r\n });\r\n }\r\n else {\r\n history.push(\"/contact-preference\");\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n if (currentStep === DemographicQuestionStep.BorrowerDemographicQuestion) {\r\n demographicQuestionsPage = (\r\n <>\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !borrowerValid || isEncompassDown\r\n )}\r\n \r\n );\r\n }\r\n else if (currentStep === DemographicQuestionStep.CoBorrowerDemographicQuestion) {\r\n demographicQuestionsPage = (\r\n <>\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n !coBorrowerValid || isEncompassDown\r\n )}\r\n \r\n );\r\n }\r\n return
    ​​​​​​​{demographicQuestionsPage}\r\n {isLoading &&
    }\r\n
    ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation, accountCreation, demographicQuestions } = state;\r\n let isCoBorrowerPresent;\r\n let loanGuid;\r\n let borrower;\r\n let coBorrower;\r\n let isLoanCompleted;\r\n\r\n if (accountInformation && accountCreation) {\r\n\r\n if (accountCreation?.coBorrower?.firstName != undefined) {\r\n isCoBorrowerPresent = true;\r\n }\r\n loanGuid = state.loan?.loanGuid;\r\n borrower = demographicQuestions?.borrower;\r\n coBorrower = demographicQuestions?.coBorrower;\r\n isLoanCompleted = state.loan?.isLoanCompleted;\r\n }\r\n return {\r\n isCoBorrowerPresent,\r\n borrower,\r\n coBorrower,\r\n loanGuid,\r\n isLoanCompleted\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateDemographicQuestions: (value: boolean, propertyName: string, section: string, borrowerType: BorrowerType) => {\r\n dispatch(DemographicQuestionsActions.demographicQuestionsActionCreators.updateDemographicQuestions(value, propertyName, section, borrowerType));\r\n },\r\n submitDemographicQuestions: (data: DemographicQuestionsStore.DemographicQuestions) => {\r\n dispatch(DemographicQuestionsActions.demographicQuestionsActionCreators.submitDemographicQuestions(data));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(false));\r\n },\r\n setLoanIsDirty: (isDirty: boolean) => {\r\n dispatch(TaskMenuCreators.setLoanIsDirty(isDirty));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n }\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DemographicQuestionDetails as any);","import { get, post } from \"../common/dataFetch\";\r\nimport { DemographicQuestions } from \"../store/demographicQuestionsStore\";\r\n\r\nexport const getDemographicQuestions = (borrowerType: string, interimLoanStagingId:number) => {\r\n return get(`DemographicQuestions/ReadByInterimIdAsync?borrowerType=${borrowerType}&interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const updateDemographicQuestions = (demographicQuestions: DemographicQuestions) => {\r\n return post(`DemographicQuestions/UpsertAsync`, demographicQuestions);\r\n};\r\n\r\n","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as DemographicQuestionsStore from \"../store/demographicQuestionsStore\";\r\nimport { KnownAction } from '../store/demographicQuestionsStore';\r\nimport * as demographicQuestionsService from \"../services/demographicQuestionsService\";\r\nimport { BorrowerType } from \"../store/Enum\";\r\n\r\nconst request = (borrowerType: string, interimLoanStagingId:number): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestDemographicQuestions,\r\n borrowerType,\r\n interimLoanStagingId\r\n };\r\n}\r\n\r\nconst receive = (data: DemographicQuestionsStore.DemographicQuestions, borrowerType: BorrowerType): DemographicQuestionsStore.KnownAction => {\r\n return {\r\n type: ActionTypes.RecieveDemographicQuestions,\r\n borrowerType: borrowerType,\r\n data,\r\n };\r\n}\r\n\r\nexport const demographicQuestionsActionCreators = {\r\n\r\n getDemographicQuestions: (borrowerType: string, interimLoanStagingId:number): AppThunkAction => (dispatch) => {\r\n dispatch(request(borrowerType, interimLoanStagingId));\r\n demographicQuestionsService.getDemographicQuestions(borrowerType, interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + interimLoanStagingId + \" .\");\r\n }\r\n return response.parsedBody as DemographicQuestionsStore.DemographicQuestions;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data, data.borrowerType));\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n },\r\n\r\n updateDemographicQuestions: (value: boolean, propertyName: string, section: string, borrowerType: BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateDemographicQuestions, value: value, propertyName: propertyName, section: section, borrowerType: borrowerType });\r\n },\r\n\r\n submitDemographicQuestions: (data: DemographicQuestionsStore.DemographicQuestions): AppThunkAction => async (dispatch) => {\r\n await demographicQuestionsService.updateDemographicQuestions(data)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(response);\r\n }\r\n return true;\r\n })\r\n .then(isSuccessful => {\r\n if (!isSuccessful) {\r\n console.error(\"Demographic question details failed to saved.\");\r\n }\r\n });\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as DemographicQuestionsActions from \"../../actions/demographicQuestionsActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport * as DemographicQuestionsStore from \"../../store/demographicQuestionsStore\";\r\nimport styles from \"./DemographicQuestions.module.scss\";\r\nimport { DemographicFields } from \"./DemographicFields\";\r\nimport { BorrowerTypeEnum } from \"components/common/Enums/BorrowerTypeEnum\";\r\nimport { BorrowerType } from \"../../store/Enum\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype DemographicQuestionsProps = DemographicQuestionsStore.DemographicQuestionsState & {\r\n borrowerName: string,\r\n borrowerType: BorrowerType;\r\n setValid: React.Dispatch>;\r\n loanGuid: string;\r\n disabled: boolean;\r\n interimLoanStagingId: number;\r\n} & typeof DemographicQuestionsActions.demographicQuestionsActionCreators & typeof TaskMenuCreators;\r\n\r\nconst DemographicQuestion = (props: DemographicQuestionsProps) => {\r\n const setCheckbox = (checked: boolean, name: string, section: string) => {\r\n props.updateDemographicQuestions(checked, name, section, props.borrowerType);\r\n }\r\n const { speak, cancel } = useSpeechSynthesis();\r\n let currentBorrower = props.borrowerType === BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower;\r\n\r\n React.useEffect(() => {\r\n props.setValid(validateData(props.borrowerType === BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower));\r\n }, [props.borrower, props.coBorrower]);\r\n\r\n React.useEffect(() => {\r\n if (props.borrowerType === BorrowerType.PrimaryBorrower && props.loanGuid) {\r\n props.getDemographicQuestions(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n }\r\n else if (props.borrowerType === BorrowerType.CoBorrower && props.loanGuid) {\r\n props.getDemographicQuestions(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n }\r\n props.setValid(validateData(props.borrowerType === BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower));\r\n }, [props.borrowerType]);\r\n\r\n const validateData = (demographicQuestions: DemographicQuestionsStore.DemographicQuestions) => {\r\n let valid = false;\r\n if ((demographicQuestions.hmdaEthnicityHispanicLatinoIndicator\r\n || demographicQuestions.hmdaEthnicityNotHispanicLatinoIndicator\r\n || demographicQuestions.hmdaEthnicityDoNotWishIndicator)\r\n && (demographicQuestions.hmdaAmericanIndianIndicator\r\n || demographicQuestions.hmdaAfricanAmericanIndicator\r\n || demographicQuestions.hmdaPacificIslanderIndicator\r\n || demographicQuestions.hmdaWhiteIndicator\r\n || demographicQuestions.hmdaRaceDoNotWishProvideIndicator)\r\n && (demographicQuestions.hmdaGendertypeFemaleIndicator\r\n || demographicQuestions.hmdaGendertypeMaleIndicator\r\n || demographicQuestions.hmdaGendertypeDoNotWishIndicator)) {\r\n valid = true;\r\n }\r\n\r\n return valid;\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n <>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Demographic Questions')} className={styles.textCenter}>\r\n Demographic Questions\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Please answer the additional questions for' + props.borrowerName)}>\r\n Please answer the additional questions for {props.borrowerName}\r\n

    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { borrowerType: BorrowerType, setValid: React.Dispatch>, isLoanCompleted: boolean }): any => {\r\n return state.accountInformation && state.accountCreation ?\r\n {\r\n ...state.demographicQuestions,\r\n borrowerName:\r\n ownProps.borrowerType == BorrowerType.PrimaryBorrower ?\r\n state.accountCreation?.borrower?.firstName + \" \" + state.accountCreation?.borrower?.lastName :\r\n state.accountCreation?.coBorrower?.firstName + \" \" + state.accountCreation?.coBorrower?.lastName,\r\n borrowerType: ownProps.borrowerType,\r\n setValid: ownProps.setValid,\r\n loanGuid: state.loan?.loanGuid,\r\n disabled: ownProps.isLoanCompleted,\r\n interimLoanStagingId: state.loan?.interimLoanStagingId\r\n } :\r\n state.demographicQuestions;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateDemographicQuestions: (value: boolean, propertyName: string, section: string, borrowerType: BorrowerType) => {\r\n dispatch(DemographicQuestionsActions.demographicQuestionsActionCreators.updateDemographicQuestions(value, propertyName, section, borrowerType));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n getDemographicQuestions: (borrowerType: string, interimLoanStagingId:number) => {\r\n dispatch(DemographicQuestionsActions.demographicQuestionsActionCreators.getDemographicQuestions(borrowerType, interimLoanStagingId));\r\n }\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DemographicQuestion as any);","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as AssetInformationStore from \"../store/assetInformationStore\";\r\nimport { KnownAction } from '../store/assetInformationStore';\r\nimport * as assetInformationService from \"../services/assetInformationService\";\r\n\r\nconst receive = (data: AssetInformationStore.BorrowerAsset, borrowerType: AssetInformationStore.BorrowerType): KnownAction => {\r\n return { type: ActionTypes.ReadSystematicAsset, data, borrowerType };\r\n};\r\n\r\nexport const assetInformationActionCreators = {\r\n \r\n updateBorrowerAssetProperty: (value: string, propertyName: string, borrowerType: AssetInformationStore.BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UPDATE_BORROWER_ASSET_PROPERTY, value: value, propertyName: propertyName, borrowerType: borrowerType });\r\n },\r\n\r\n updateCoBorrowerAssetStatus: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateCoBorrowerAssetStatus, value: value});\r\n },\r\n\r\n SubmitBorrowerAssetInformation: (borrowerType: number): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SUBMIT_BORROWER_ASSET_INFORMATION, borrowerType: borrowerType });\r\n },\r\n\r\n UpsertAsyncsystematicInformation: (borrowerData: AssetInformationStore.BorrowerAsset): AppThunkAction => (dispatch) => {\r\n assetInformationService.UpsertAsyncsystematicInformation(borrowerData)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(response);\r\n }\r\n return response.ok;\r\n });\r\n },\r\n\r\n getSytematicAssetInformation: (loanGuid: string, borrowerType: string): AppThunkAction => (dispatch) => {\r\n assetInformationService.getsystematicAssetInformation(loanGuid, borrowerType)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + loanGuid + \" .\");\r\n }\r\n return response.parsedBody as AssetInformationStore.BorrowerAsset;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data, data.borrowerType));\r\n })\r\n .catch((error: Error) => {\r\n });\r\n },\r\n}","import React from \"react\";\r\nimport styles from \"./assetInformation.module.scss\";\r\n\r\nfunction FinicityMessage() {\r\n return (\r\n
    \r\n Powered by Finicity \r\n
    \r\n );\r\n}\r\n\r\nexport default FinicityMessage;\r\n","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { AccountCreationState } from \"../../store/accountCreationStore\";\r\nimport { loanState } from \"../../store/loanStore\";\r\nimport { AssetInformationState } from \"../../store/assetInformationStore\";\r\nimport * as assetInformationAction from \"../../actions/assetInformationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport * as assetInformationStore from \"../../store/assetInformationStore\";\r\nimport FinicityMessage from './FinicityMessage'\r\nimport { useNavigation } from \"../../hooks/useNavigation\";\r\nimport SubmitVoaModal from \"./SubmitVoaModal\";\r\nimport MessageBox from \"../common/MessageBox\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport styles from \"./assetInformation.module.scss\"\r\nimport borrowerInfoGraphic from \"../../assets/infographics/assetInformation/SelectFinicityorManual.svg\";\r\nimport TrainingVideos from \"./TrainingVideos\";\r\nimport { TaskItem, SubTaskItem, TaskStatusId } from \"../common/progressTracker/TaskStatus\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport * as assetInformationService from \"../../services/assetInformationService\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype AssetInformationProps = assetInformationStore.AssetInformationState\r\n & typeof assetInformationAction.assetInformationActionCreators\r\n & typeof TaskMenuCreators & typeof loanUpdateResponseActionCreators;\r\n\r\nexport enum AssetInformationStep {\r\n SystematicOrManualEntry = 1,\r\n CoBorrowerSystematicOrManualEntry = 2,\r\n BorrowerWishQuestion = 3,\r\n}\r\n\r\nconst AssetInformation = (props: AssetInformationProps) => {\r\n const [step, setStep] = React.useState(AssetInformationStep.SystematicOrManualEntry);\r\n const [borrowerType, setBorrowerType] = React.useState(assetInformationStore.BorrowerType.PrimaryBorrower);\r\n const [modal, setModal] = React.useState(false);\r\n const [showConfirmation, setShowConfirmation] = React.useState(false);\r\n const [showError, setShowError] = React.useState(false);\r\n const [errorMessages, setErrorMessages] = React.useState([\"\"]);\r\n const { loanGuid } = useSelector((state: ApplicationState) => state.accountInformation as loanState);\r\n const assetInfo = useSelector((state: ApplicationState) => state.assetInformation as AssetInformationState);\r\n const accountInfo = useSelector((state: ApplicationState) => state.accountCreation as AccountCreationState);\r\n const loanInfo = useSelector((state: ApplicationState) => state.loan as loanState);\r\n const [showLoader, setLoader] = React.useState(false);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n const { interimLoanStagingId } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n \r\n const navigation = useNavigation(() => {\r\n navigation.ShowContinue(() => onContinue(), isEncompassDown);\r\n });\r\n\r\n const history = useHistory();\r\n\r\n React.useEffect(() => {\r\n if (history.location.state?.args === \"coborrower\") {\r\n setStep(AssetInformationStep.BorrowerWishQuestion)\r\n }\r\n else if (history.location.state?.args === \"borrower\") {\r\n setStep(AssetInformationStep.SystematicOrManualEntry);\r\n }\r\n }, [history.location]);\r\n\r\n React.useEffect(() => {\r\n switch (step) {\r\n case AssetInformationStep.SystematicOrManualEntry:\r\n setBorrowerType(assetInformationStore.BorrowerType.PrimaryBorrower);\r\n navigation.SetBackOnClick(() => onBack());\r\n navigation.ResetContinue();\r\n break;\r\n case AssetInformationStep.CoBorrowerSystematicOrManualEntry:\r\n setBorrowerType(assetInformationStore.BorrowerType.CoBorrower);\r\n navigation.SetBackOnClick(() => onBack());\r\n navigation.ResetContinue();\r\n break;\r\n case AssetInformationStep.BorrowerWishQuestion:\r\n setBorrowerType(assetInformationStore.BorrowerType.CoBorrower);\r\n navigation.SetBackOnClick(() => onBack());\r\n navigation.ShowContinue(() => {\r\n updateCoBorrowerAssetStatusByBorrower();\r\n }, (((assetInfo.coBorrowerAssetStatus == true || assetInfo.coBorrowerAssetStatus == false) ? false : true) || isEncompassDown));\r\n break;\r\n default:\r\n navigation.ResetNavigation();\r\n break;\r\n }\r\n });\r\n\r\n React.useEffect(() => {\r\n if (accountInfo.borrower.printOnAdditionalBorrowerPage) {\r\n assetInformationService.readCoBorrowerAssetsStatus(interimLoanStagingId ?? 0).then((res: any) => {\r\n if (res) {\r\n props.updateCoBorrowerAssetStatus(res.parsedBody);\r\n }\r\n })\r\n }\r\n }, []);\r\n\r\n const onContinue = async () => {\r\n };\r\n\r\n const onBack = () => {\r\n if (step === AssetInformationStep.SystematicOrManualEntry) {\r\n props.setLoanIsDirty(false);\r\n history.push({ pathname: \"/additional-income\", state: { args: accountInfo.borrower?.printOnAdditionalBorrowerPage ? \"coborrower\" : \"borrower\" } });\r\n }\r\n else if (step === AssetInformationStep.CoBorrowerSystematicOrManualEntry) {\r\n setStep(AssetInformationStep.BorrowerWishQuestion);\r\n }\r\n else if (step === AssetInformationStep.BorrowerWishQuestion) {\r\n history.replace({ state: { args: \"borrower\" } });\r\n }\r\n };\r\n\r\n const updateCoBorrowerAssetStatusByBorrower = () => {\r\n if (!loanInfo.isLoanCompleted && interimLoanStagingId !== undefined && interimLoanStagingId > 0 && loanGuid) {\r\n setLoader(true);\r\n assetInformationService.updateCoBorrowerAssetStatus(interimLoanStagingId, assetInfo.coBorrowerAssetStatus)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem submitting your Asset verification request.\");\r\n }\r\n else {\r\n setLoader(false);\r\n if (response.parsedBody == null) {\r\n props.setIsEncompassDown(true);\r\n history.push(\"/dashboard\");\r\n }\r\n else {\r\n if (assetInfo.coBorrowerAssetStatus) {\r\n setStep(AssetInformationStep.CoBorrowerSystematicOrManualEntry);\r\n }\r\n else {\r\n props.updateNavigationStatus(TaskItem.BorrowerREO, SubTaskItem.BorrowerREO, TaskStatusId.InProgress, TaskStatusId.InProgress, loanGuid);//update next in nav bar\r\n props.updateNavigationStatus(TaskItem.AssetInformation, SubTaskItem.CoBorrowerAssetInformation, TaskStatusId.Completed, TaskStatusId.Completed, loanGuid);\r\n history.push({ pathname: \"/reo-properties\" });\r\n }\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n setLoader(false);\r\n console.log(error);\r\n });\r\n }\r\n else {\r\n if (assetInfo.coBorrowerAssetStatus) {\r\n setStep(AssetInformationStep.CoBorrowerSystematicOrManualEntry);\r\n }\r\n else {\r\n history.push({ pathname: \"/reo-properties\" });\r\n }\r\n }\r\n }\r\n const submittedVoa = (connectUrl: string) => {\r\n setModal(false);\r\n setShowConfirmation(true);\r\n if (!isNullOrWhiteSpace(connectUrl)) {\r\n window.open(connectUrl, \"_blank\");\r\n }\r\n \r\n }\r\n const fincityConfirmation = () => {\r\n setShowConfirmation(false)\r\n if (step === AssetInformationStep.SystematicOrManualEntry && borrowerType === assetInformationStore.BorrowerType.PrimaryBorrower\r\n && !accountInfo.borrower.printOnAdditionalBorrowerPage) {\r\n if (!loanInfo.isLoanCompleted) {\r\n props.updateNavigationStatus(TaskItem.BorrowerREO, SubTaskItem.BorrowerREO, TaskStatusId.InProgress, TaskStatusId.InProgress, loanGuid);//update next in nav bar\r\n props.updateNavigationStatus(TaskItem.AssetInformation, SubTaskItem.AssetInformation, TaskStatusId.Completed, TaskStatusId.Completed, loanGuid);\r\n }\r\n history.push({ pathname: \"/reo-properties\" });\r\n }\r\n else if (step === AssetInformationStep.SystematicOrManualEntry && borrowerType === assetInformationStore.BorrowerType.PrimaryBorrower\r\n && accountInfo.borrower.printOnAdditionalBorrowerPage) {\r\n\r\n props.updateNavigationStatus(TaskItem.AssetInformation, SubTaskItem.AssetInformation, TaskStatusId.Completed, TaskStatusId.Completed, loanGuid);\r\n props.updateNavigationStatus(TaskItem.AssetInformation, SubTaskItem.CoBorrowerAssetInformation, TaskStatusId.InProgress, TaskStatusId.InProgress, loanGuid);\r\n history.replace({ state: { args: \"coborrower\" } });\r\n setStep(AssetInformationStep.BorrowerWishQuestion);\r\n }\r\n else if (step === AssetInformationStep.CoBorrowerSystematicOrManualEntry) {\r\n if (!loanInfo.isLoanCompleted) {\r\n props.updateNavigationStatus(TaskItem.BorrowerREO, SubTaskItem.BorrowerREO, TaskStatusId.InProgress, TaskStatusId.InProgress, loanGuid);//update next in nav bar\r\n props.updateNavigationStatus(TaskItem.AssetInformation, SubTaskItem.CoBorrowerAssetInformation, TaskStatusId.Completed, TaskStatusId.Completed, loanGuid);\r\n }\r\n history.push({ pathname: \"/reo-properties\" });\r\n }\r\n };\r\n const getBorrowerAssetData = () => {\r\n const borrowerAssetData: assetInformationStore.BorrowerAsset = {\r\n birthDate: borrowerType === assetInformationStore.BorrowerType.PrimaryBorrower\r\n ? assetInfo.borrower.birthDate\r\n : assetInfo.coBorrower.birthDate,\r\n taxIdentificationIdentifier: borrowerType === assetInformationStore.BorrowerType.PrimaryBorrower\r\n ? assetInfo.borrower.taxIdentificationIdentifier\r\n : assetInfo.coBorrower.taxIdentificationIdentifier,\r\n borrowerType: borrowerType,\r\n loanGuid: loanGuid\r\n };\r\n return borrowerAssetData;\r\n }\r\n\r\n const moveToManualAsset = () => {\r\n if (step === AssetInformationStep.SystematicOrManualEntry && borrowerType === assetInformationStore.BorrowerType.PrimaryBorrower) {\r\n history.push({ pathname: \"/manual-asset-information\", state: { args:\"borrower\"}});\r\n }\r\n else {\r\n history.push({ pathname: \"/manual-asset-information\", state: { args: \"coborrower\" } });\r\n }\r\n };\r\n\r\n let assetInformationPage =
    ;\r\n\r\n if (step === AssetInformationStep.SystematicOrManualEntry || step === AssetInformationStep.CoBorrowerSystematicOrManualEntry) {\r\n assetInformationPage =\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Verification Of Assets For \" + (borrowerType === assetInformationStore.BorrowerType.PrimaryBorrower ? accountInfo.borrower.firstName + \" \" + accountInfo.borrower.lastName : accountInfo.coBorrower.firstName + \" \" + accountInfo.coBorrower.lastName))}>Verification Of Assets For\r\n {borrowerType === assetInformationStore.BorrowerType.PrimaryBorrower ?\r\n ` ${accountInfo.borrower.firstName} ${accountInfo.borrower.lastName}` :\r\n ` ${accountInfo.coBorrower.firstName} ${accountInfo.coBorrower.lastName}`}\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Now, let's see how much home you can afford. Would you like to submit your asset information using your financial accounts\")}>Now, let's see how much home you can afford. Would you like to submit your asset information using your financial accounts?

    \r\n
    \r\n \r\n \r\n
    \r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech(\"No, I'll enter the info manually\")} onClick={() => moveToManualAsset()} className={styles.entertheInfo}>No, I'll enter the info manually\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n }\r\n else if (step === AssetInformationStep.BorrowerWishQuestion) {\r\n assetInformationPage =\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Verification Of Assets For\" + accountInfo.coBorrower.firstName + \" \" + accountInfo.coBorrower.lastName)}>Verification Of Assets For\r\n {` ${accountInfo.coBorrower.firstName} ${accountInfo.coBorrower.lastName}`}\r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Do you wish to proceed with entering in the Co-Borrowers asset information using their financial accounts')}>Do you wish to proceed with entering in the Co-Borrower's asset information using their financial accounts?

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n }\r\n\r\n return
    \r\n {assetInformationPage}\r\n {showLoader &&\r\n
    \r\n }\r\n {modal && (\r\n setModal(false)}\r\n submitted={submittedVoa}\r\n errors={(errMsgs) => { setShowError(true); setErrorMessages(errMsgs); setModal(false); }}\r\n borrowerAsset={getBorrowerAssetData()}\r\n >\r\n )}\r\n {showConfirmation && (\r\n fincityConfirmation()}\r\n >\r\n )}\r\n {showError && (\r\n setShowError(false)}\r\n >\r\n )}\r\n \r\n
    \r\n};\r\n\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateBorrowerAssetProperty: (value: string, propertyName: string, borrowerType: assetInformationStore.BorrowerType) => {\r\n dispatch(assetInformationAction.assetInformationActionCreators.updateBorrowerAssetProperty(value, propertyName, borrowerType));\r\n },\r\n SubmitBorrowerAssetInformation: (borrowerType: number) => {\r\n dispatch(assetInformationAction.assetInformationActionCreators.SubmitBorrowerAssetInformation(borrowerType));\r\n },\r\n updateNavigationStatus: (taskItemId: any, subTaskItemId: any, taskStatusId: any, subTaskStatusId: any, loanGuid: any) => {\r\n dispatch(TaskMenuCreators.updateNavigationStatus(taskItemId, subTaskItemId, taskStatusId, subTaskStatusId, loanGuid));\r\n },\r\n UpsertAsyncsystematicInformation: (data: assetInformationStore.BorrowerAsset) => {\r\n dispatch(assetInformationAction.assetInformationActionCreators.UpsertAsyncsystematicInformation(data));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(false));\r\n },\r\n setLoanIsDirty: (isDirty: boolean) => {\r\n dispatch(TaskMenuCreators.setLoanIsDirty(isDirty));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n updateCoBorrowerAssetStatus: (value: boolean) => {\r\n dispatch(assetInformationAction.assetInformationActionCreators.updateCoBorrowerAssetStatus(value));\r\n },\r\n});\r\n\r\nexport default connect((state: ApplicationState) => state.accountCreation, mapDispatchToProps)(AssetInformation as any);","import * as React from \"react\";\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\r\nimport FinicityMessage from './FinicityMessage'\r\nimport * as assetInformationService from \"../../services/assetInformationService\";\r\nimport * as assetInformationStore from \"../../store/assetInformationStore\";\r\nimport styles from \"./assetInformation.module.scss\";\r\nimport { UserAccountState } from \"store/userAccountStore\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { useSelector } from \"react-redux\";\r\nimport UhmLogo from \"assets/logo/uhm-logo.png\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface SubmitVoaProps {\r\n modal?: boolean;\r\n close: () => void;\r\n submitted: (connectUrl: string) => void;\r\n borrowerAsset: assetInformationStore.BorrowerAsset;\r\n errors: (errMsg: string[]) => void;\r\n}\r\n\r\nconst SubmitVoaModal = (props: SubmitVoaProps) => {\r\n const [showLoader, setShowLoader] = React.useState(false);\r\n const { borrowerType } = useSelector((state: ApplicationState) => state.userAccountInformation as UserAccountState);\r\n const closeModal = () => {\r\n props.close();\r\n };\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n const submitVoa = () => {\r\n setShowLoader(true);\r\n assetInformationService.submitVoa(props.borrowerAsset)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem submitting your Asset verification request.\");\r\n }\r\n else if (response.parsedBody.hasError) {\r\n var errors = response.parsedBody.messages.map((m: any) => m.description);\r\n props.errors(errors);\r\n } else {\r\n props.submitted(response.parsedBody.finicityConnectUrl);\r\n }\r\n setShowLoader(false);\r\n })\r\n .catch((error: Error) => {\r\n props.errors([error.message]);\r\n setShowLoader(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n
    \r\n \"Union\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Verification Of Assets')}>Verification Of Assets

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('To make your home buying process as easy as possible, Union Home Mortgage has provided a simple way for you to input your assets into the application for verification. Your information will be confidential and safe through this process')}>To make your home buying process as easy as possible, Union Home Mortgage has provided a simple way for you to input your assets into the application for verification. Your information will be confidential and safe through this process.

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('To proceed with Finicity, ensure the pop-up blocker is disabled on the internet browser')}>To proceed with Finicity, ensure the pop-up blocker is disabled on the internet browser.

    \r\n
    \r\n
    \r\n {showLoader && (
    )}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SubmitVoaModal;\r\n","import * as React from \"react\";\r\nimport { Button, Popover, PopoverBody } from \"reactstrap\";\r\nimport styles from \"./assetInformation.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\nconst videos = [\r\n { id: 1, url: 'https://vimeo.com/535159179', name: \"Digital Verification of Assets Basics\" },\r\n { id: 2, url: 'https://vimeo.com/535162480', name: \"Best Practices\" },\r\n { id: 3, url: 'https://vimeo.com/535161067', name: \"Selling Strategies and Overcoming Objections\" },\r\n\r\n];\r\nconst TrainingVideos = () => {\r\n\r\n const [popoverOpen, setPopoverOpen] = React.useState(false);\r\n const toggle = () => setPopoverOpen(!popoverOpen);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (<>\r\n\r\n \r\n \r\n \r\n \r\n

    window.open(videos[0].url)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('Digital Verification of Assets Basics')}>Digital Verification of Assets Basics

    \r\n

    window.open(videos[1].url)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('Best Practices')}>Best Practices

    \r\n

    window.open(videos[2].url)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('Selling Strategies and Overcoming Objections')}>Selling Strategies and Overcoming Objections

    \r\n
    \r\n \r\n\r\n );\r\n}\r\n\r\nexport default TrainingVideos;","import React, { useEffect, useState } from \"react\";\r\nimport CreditAuthorizationDetail from \"./CreditAuthorizationDetail\";\r\nimport * as ConsumerCreditAuthorizationStore from \"../../store/consumerCreditAuthorizationStore\";\r\nimport { BorrowerType } from \"../../store/Enum\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport yesNotAgreeGraphic from \"assets/infographics/consumerCreditAuthorization/yes-do-not-agree.svg\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport * as CreditAuthorizationActions from \"../../actions/consumerCreditAuthorizationActions\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport * as ConsumerCreditAuthorizationActions from \"../../actions/consumerCreditAuthorizationActions\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport * as consumerCreditAuthorizationService from \"../../services/consumerCreditAuthorizationService\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { accountCreationActionCreators } from \"../../actions/accountCreationActions\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ConsumerCreditAuthorizationProps = ConsumerCreditAuthorizationStore.ConsumerCreditAuthorizationState\r\n & {\r\n isCoBorrowerPresent: boolean,\r\n borrower: ConsumerCreditAuthorizationStore.ConsumerCreditAuthorization,\r\n coBorrower: ConsumerCreditAuthorizationStore.ConsumerCreditAuthorization,\r\n history: any;\r\n loanGuid: string;\r\n interimLoanStagingId: number;\r\n isLoading: boolean;\r\n isLoanCompleted: boolean;\r\n } & typeof CreditAuthorizationActions.consumerCreditAuthorizationActionCreators & typeof loanUpdateResponseActionCreators\r\n & typeof accountCreationActionCreators;\r\n\r\nexport enum ConsumerCreditAuthorizationStep {\r\n BorrowerAuthorizationPage = 1,\r\n CoBorrowerAuthorizationPage = 2,\r\n VerifyCreditAuthorization = 3,\r\n Finished = 4\r\n}\r\n\r\nconst ConsumerCreditAuthorization = (props: ConsumerCreditAuthorizationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [showLoading, setShowLoading] = useState(false);\r\n const [currentStep, changeStep] = React.useState(0);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.ShowContinue(() => onContinue(), false);\r\n });\r\n\r\n const onContinue = async () => {\r\n if (currentStep == ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage) {\r\n\r\n if (!props.isLoanCompleted) {\r\n await saveCreditAuthorization(props.borrower)\r\n }\r\n else {\r\n if (props.borrower.authorizedCreditReportIndicator) {\r\n if (props.isCoBorrowerPresent) {\r\n changeStep(ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage);\r\n }\r\n else {\r\n changeStep(ConsumerCreditAuthorizationStep.VerifyCreditAuthorization);\r\n }\r\n }\r\n else if (!props.borrower.authorizedCreditReportIndicator) {\r\n changeStep(ConsumerCreditAuthorizationStep.Finished);\r\n }\r\n }\r\n }\r\n else if (currentStep == ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage) {\r\n if (!props.isLoanCompleted) {\r\n await saveCreditAuthorization(props.coBorrower)\r\n }\r\n else {\r\n if (props.coBorrower.authorizedCreditReportIndicator) {\r\n changeStep(ConsumerCreditAuthorizationStep.VerifyCreditAuthorization);\r\n }\r\n else {\r\n changeStep(ConsumerCreditAuthorizationStep.Finished);\r\n }\r\n }\r\n }\r\n else if (currentStep == ConsumerCreditAuthorizationStep.Finished) {\r\n const { history } = props;\r\n if (history) history.push({ pathname: \"/employment-information\", state: { args: \"borrower\" } });\r\n }\r\n };\r\n\r\n const onBack = () => {\r\n if (currentStep == ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage) {\r\n const { history } = props;\r\n history.push({ pathname: \"/create-account\", state: { args: props.isCoBorrowerPresent ? \"coborrower\" : \"borrower\", isBack: true } });\r\n }\r\n else if (currentStep == ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage) {\r\n changeStep(ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage);\r\n }\r\n else if (currentStep == ConsumerCreditAuthorizationStep.Finished) {\r\n changeStep(ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage);\r\n }\r\n else if (currentStep == ConsumerCreditAuthorizationStep.VerifyCreditAuthorization) {\r\n changeStep(ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage);\r\n }\r\n };\r\n\r\n const returnDisabled = () => {\r\n let isDisabled = false;\r\n if (currentStep == ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage) {\r\n if (isNullOrUndefined(props.borrower.authorizedCreditReportIndicator)) {\r\n isDisabled = true;\r\n }\r\n } else if (currentStep == ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage) {\r\n if (isNullOrUndefined(props.coBorrower.authorizedCreditReportIndicator)) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n useEffect(() => {\r\n if (props.interimLoanStagingId && props.interimLoanStagingId > 0) {\r\n setShowLoading(true);\r\n consumerCreditAuthorizationService.getConsumerCreditAuthorizationStatus(props.interimLoanStagingId)\r\n .then((response) => {\r\n if (!response.ok) {\r\n console.error(response);\r\n }\r\n return response.parsedBody as boolean;\r\n })\r\n .then(status => {\r\n if (status) {\r\n history.push(\"/credit-report\");\r\n }\r\n else {\r\n changeStep(ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage);\r\n }\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n setShowLoading(false);\r\n }\r\n else {\r\n console.error(\"consumer credit authorization loanGuid missing\");\r\n }\r\n }, []);\r\n\r\n const history = useHistory();\r\n React.useEffect(() => {\r\n navigation.ShowContinue(() => onContinue(), returnDisabled() || showLoading || isEncompassDown\r\n );\r\n navigation.SetBackOnClick(() => onBack());\r\n\r\n if (currentStep === ConsumerCreditAuthorizationStep.VerifyCreditAuthorization) {\r\n history.push(\"/credit-report\");\r\n }\r\n }, [currentStep, props.borrower, props.coBorrower, showLoading, isEncompassDown]);\r\n\r\n\r\n const saveCreditAuthorization = async (data: ConsumerCreditAuthorizationStore.ConsumerCreditAuthorization) => {\r\n setShowLoading(true);\r\n const response = await consumerCreditAuthorizationService.updateConsumerCreditAuthorization(data);\r\n setShowLoading(false);\r\n if (!response.ok) {\r\n console.error(\"consumer credit authorization failed to save for \" + data.borrowerType);\r\n }\r\n let result = response.parsedBody as boolean;\r\n if (result) {\r\n Promise.all([\r\n consumerCreditAuthorizationService.updateConsumerCreditAuthLoanDetailData(data).then(() => {\r\n if (data.interimLoanStagingId !== undefined && data.interimLoanStagingId > 0) {\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n }\r\n }),\r\n consumerCreditAuthorizationService.createAndSubmitAuthorizationFile(data),\r\n consumerCreditAuthorizationService.updateProgressTracker(data.loanGuid ?? \"\")\r\n ]);\r\n\r\n if (props.borrower.authorizedCreditReportIndicator) {\r\n if (props.isCoBorrowerPresent && currentStep == ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage) {\r\n changeStep(ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage);\r\n }\r\n else {\r\n changeStep(ConsumerCreditAuthorizationStep.VerifyCreditAuthorization);\r\n }\r\n }\r\n else if (props.coBorrower.authorizedCreditReportIndicator && currentStep == ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage) {\r\n changeStep(ConsumerCreditAuthorizationStep.VerifyCreditAuthorization);\r\n }\r\n else {\r\n changeStep(ConsumerCreditAuthorizationStep.Finished);\r\n }\r\n }\r\n }\r\n\r\n let creditAuthorizationPage = <>;\r\n\r\n switch (currentStep) {\r\n case ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage:\r\n {\r\n creditAuthorizationPage = (\r\n \r\n );\r\n break;\r\n }\r\n case ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage:\r\n {\r\n creditAuthorizationPage = (\r\n \r\n );\r\n break;\r\n }\r\n case ConsumerCreditAuthorizationStep.Finished:\r\n {\r\n creditAuthorizationPage = (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Your Loan Officer will be in touch soon to go over options')}>Your Loan Officer will be in touch soon to go over options.

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n break;\r\n }\r\n }\r\n return (\r\n <>\r\n
    {creditAuthorizationPage}\r\n {showLoading &&
    \r\n
    }\r\n
    \r\n \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getConsumerCreditAuthorizationStatus: (interimLoanStagingId: number) => {\r\n dispatch(ConsumerCreditAuthorizationActions.consumerCreditAuthorizationActionCreators.getConsumerCreditAuthorizationStatus(interimLoanStagingId));\r\n },\r\n setIsLoading: (value: boolean) => {\r\n dispatch(ConsumerCreditAuthorizationActions.consumerCreditAuthorizationActionCreators.setIsLoading(value));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n getBorrowerInformation: ( borrowerType: string, interimLoanStagingId: number) => {\r\n dispatch(accountCreationActionCreators.getBorrowerInformation(borrowerType, interimLoanStagingId));\r\n }\r\n});\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountCreation, consumerCreditAuthorization, loan } = state;\r\n let isCoBorrowerPresent;\r\n let borrower;\r\n let coBorrower;\r\n let loanGuid = loan?.loanGuid;\r\n let isLoading;\r\n let isLoanCompleted = loan?.isLoanCompleted;\r\n let interimLoanStagingId = loan?.interimLoanStagingId;\r\n\r\n if (accountCreation) {\r\n isCoBorrowerPresent = state.accountCreation?.coBorrower?.firstName != null ? true : false;\r\n borrower = consumerCreditAuthorization?.borrower;\r\n coBorrower = consumerCreditAuthorization?.coBorrower;\r\n isLoading = consumerCreditAuthorization?.isLoading;\r\n }\r\n return {\r\n isCoBorrowerPresent,\r\n borrower,\r\n coBorrower,\r\n loanGuid,\r\n isLoading,\r\n isLoanCompleted,\r\n interimLoanStagingId\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ConsumerCreditAuthorization as any);","import * as React from \"react\";\r\nimport { Modal, ModalBody } from \"reactstrap\";\r\nimport styles from \"./creditAuthorization.module.scss\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport doNotAgreeInfoGraphic from \"assets/infographics/consumerCreditAuthorization/do-not-agree.svg\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ninterface CreditAuthorizationDialogProps {\r\n hasClosedDialog: (value: boolean) => any;\r\n}\r\n\r\nconst CreditAuthorizationDialog = (props: CreditAuthorizationDialogProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [modal, setModal] = React.useState(true);\r\n const closeModal = (val: boolean) => {\r\n setModal(false);\r\n props.hasClosedDialog(val);\r\n };\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n {}\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Are you sure?')}>Are you sure?

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('A credit check is necessary to continue with the mortgage process, you will have to complete this later.')}>A credit check is necessary to continue with the mortgage process, you will have to complete this later.

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default CreditAuthorizationDialog;\r\n","import { post, get } from \"../common/dataFetch\";\r\nimport { ConsumerCreditAuthorization } from \"../store/consumerCreditAuthorizationStore\";\r\n\r\nexport const getConsumerCreditAuthorization = (borrowerType: string, interimLoanStagingId:number) => {\r\n return get(`ConsumerCreditAuthorization/ReadByInterimIdAsync?borrowerType=${borrowerType}&interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\nexport const updateConsumerCreditAuthorization = (creditAuthorizationDto: ConsumerCreditAuthorization) => {\r\n return post(\"ConsumerCreditAuthorization/UpsertAsync\", creditAuthorizationDto);\r\n};\r\nexport const updateConsumerCreditAuthLoanDetailData = (creditAuthorizationDto: ConsumerCreditAuthorization) => {\r\n return post(\"ConsumerCreditAuthorization/UpdateConsumerCreditAuthLoanDetailData\", creditAuthorizationDto);\r\n};\r\nexport const createAndSubmitAuthorizationFile = (creditAuthorizationDto: ConsumerCreditAuthorization) => {\r\n return post(\"ConsumerCreditAuthorization/CreateAndSubmitAuthorizationFile\", creditAuthorizationDto);\r\n};\r\nexport const updateProgressTracker = (loanGuid: string) => {\r\n return post(\"ConsumerCreditAuthorization/UpdateProgressTracker\", loanGuid);\r\n};\r\nexport const getConsumerCreditAuthorizationStatus = (interimLoanStagingId: number) => {\r\n return get(`ConsumerCreditAuthorization/ReadConsumerCreditAuthorizationStatusAsync?interimLoanStagingId=${interimLoanStagingId}`);\r\n};","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as ConsumerCreditAuthorizationStore from \"../store/consumerCreditAuthorizationStore\";\r\nimport { BorrowerType } from \"../store/Enum\";\r\nimport { KnownAction } from '../store/consumerCreditAuthorizationStore';\r\nimport * as consumerCreditAuthorizationService from \"../services/consumerCreditAuthorizationService\";\r\n\r\nconst request = (borrowerType: string, interimLoanStagingId:number): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestConsumerCreditAuthorization, \r\n borrowerType,\r\n interimLoanStagingId\r\n };\r\n};\r\nconst receive = (data: ConsumerCreditAuthorizationStore.ConsumerCreditAuthorization, borrowerType: BorrowerType): KnownAction => {\r\n return { type: ActionTypes.ReceiveConsumerCreditAuthorization, data, borrowerType };\r\n};\r\n\r\nconst isLoading = (loading: boolean): ConsumerCreditAuthorizationStore.KnownAction => {\r\n return {\r\n type: ActionTypes.IsLoading,\r\n isLoading: loading\r\n };\r\n}\r\n\r\nexport const consumerCreditAuthorizationActionCreators = {\r\n updateCreditReportIndicator: (value: boolean, borrowerType: BorrowerType): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateCreditReportIndicator, value: value, borrowerType: borrowerType });\r\n },\r\n getConsumerCreditAuthorization: (borrowerType: string, interimLoanStagingId:number): AppThunkAction => (dispatch) => {\r\n dispatch(request(borrowerType, interimLoanStagingId));\r\n consumerCreditAuthorizationService.getConsumerCreditAuthorization(borrowerType, interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + interimLoanStagingId + \" .\");\r\n }\r\n return response.parsedBody as ConsumerCreditAuthorizationStore.ConsumerCreditAuthorization;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data, data.borrowerType));\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n },\r\n updateCreditAuthorizationProperty: (value: boolean, borrowerType: BorrowerType, loanGuid: string, interimLoanStagingId:number): AppThunkAction => (dispatch, getState) => {\r\n dispatch({ type: ActionTypes.UpdateCreditAuthorizationProperty, value: value, borrowerType: borrowerType, loanGuid: loanGuid, interimLoanStagingId: interimLoanStagingId });\r\n },\r\n getConsumerCreditAuthorizationStatus: (interimLoanStagingId: number): AppThunkAction => (dispatch) => {\r\n\r\n consumerCreditAuthorizationService.getConsumerCreditAuthorizationStatus(interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + interimLoanStagingId + \" .\");\r\n }\r\n return response.parsedBody as ConsumerCreditAuthorizationStore.ConsumerCreditAuthorization;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data, data.borrowerType));\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n },\r\n\r\n setIsLoading: (loding: boolean): AppThunkAction => (dispatch) => {\r\n dispatch(isLoading(loding));\r\n }\r\n}\r\n\r\n","import * as React from \"react\";\r\nimport CreditAuthorizationDialog from \"./CreditAuthorizationDialog\";\r\nimport { ConsumerCreditAuthorizationStep } from \"./ConsumerCreditAuthorization\";\r\nimport * as ConsumerCreditAuthorizationStore from \"../../store/consumerCreditAuthorizationStore\";\r\nimport { BorrowerType } from \"../../store/Enum\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as ConsumerCreditAuthorizationActions from \"../../actions/consumerCreditAuthorizationActions\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport styles from \"./creditAuthorization.module.scss\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport * as consumerCreditAuthorizationService from \"../../services/consumerCreditAuthorizationService\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { accountCreationActionCreators } from \"../../actions/accountCreationActions\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype ConsumerCreditAuthorizationLandingProps = {\r\n borrowerType: BorrowerType,\r\n changeScreen: React.Dispatch>,\r\n setShowLoading: React.Dispatch>,\r\n borrowerName: string,\r\n loanGuid: string,\r\n isCoBorrowerPresent: boolean,\r\n isLoanCompleted: boolean,\r\n interimLoanStagingId: number,\r\n} & ConsumerCreditAuthorizationStore.ConsumerCreditAuthorizationState & typeof\r\n ConsumerCreditAuthorizationActions.consumerCreditAuthorizationActionCreators & typeof loanUpdateResponseActionCreators\r\n & typeof accountCreationActionCreators;\r\n\r\nconst CreditAuthorizationDetail = (props: ConsumerCreditAuthorizationLandingProps) => {\r\n const [showDialog, setShowDialog] = React.useState(false); \r\n let currentBorrower = props.borrowerType == BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower;\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.borrowerType === BorrowerType.PrimaryBorrower && props.interimLoanStagingId !== undefined && props.interimLoanStagingId > 0) {\r\n props.getConsumerCreditAuthorization(BorrowerTypeEnum.Borrower, props.interimLoanStagingId)\r\n }\r\n else if (props.borrowerType === BorrowerType.CoBorrower && props.interimLoanStagingId !== undefined && props.interimLoanStagingId > 0) {\r\n props.getConsumerCreditAuthorization(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n }\r\n }, [props.borrowerType]);\r\n\r\n const dialogResponse = (verificationResult: boolean) => {\r\n\r\n if (verificationResult) {\r\n if (!props.isLoanCompleted) {\r\n saveCreditAuthorization(props.borrowerType == BorrowerType.PrimaryBorrower ? props.borrower : props.coBorrower);\r\n }\r\n }\r\n else {\r\n if (props.borrowerType === BorrowerType.PrimaryBorrower) {\r\n props.changeScreen(ConsumerCreditAuthorizationStep.BorrowerAuthorizationPage);\r\n }\r\n else {\r\n props.changeScreen(ConsumerCreditAuthorizationStep.CoBorrowerAuthorizationPage);\r\n }\r\n }\r\n setShowDialog(false);\r\n };\r\n\r\n const saveCreditAuthorization = async (data: ConsumerCreditAuthorizationStore.ConsumerCreditAuthorization) => {\r\n if (!isEncompassDown) {\r\n props.setShowLoading(true);\r\n const response = await consumerCreditAuthorizationService.updateConsumerCreditAuthorization(data);\r\n if (!response.ok) {\r\n console.error(\"consumer credit authorization failed to save for \" + data.borrowerType);\r\n }\r\n let result = response.parsedBody as boolean;\r\n props.setShowLoading(false);\r\n if (result) {\r\n Promise.all([\r\n consumerCreditAuthorizationService.updateConsumerCreditAuthLoanDetailData(data).then(() => {\r\n if (data.interimLoanStagingId !== undefined && data.interimLoanStagingId >0) {\r\n props.getBorrowerInformation( BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n }\r\n }),\r\n consumerCreditAuthorizationService.createAndSubmitAuthorizationFile(data),\r\n consumerCreditAuthorizationService.updateProgressTracker(data.loanGuid ?? \"\")\r\n ]);\r\n props.updateCreditAuthorizationProperty(false, props.borrowerType, props.loanGuid, props.interimLoanStagingId);\r\n props.changeScreen(ConsumerCreditAuthorizationStep.Finished);\r\n }\r\n }\r\n }\r\n\r\n const verifyCreditInformation = async (value: boolean) => {\r\n if (value) {\r\n if (props.isCoBorrowerPresent && props.borrowerType === BorrowerType.PrimaryBorrower) {\r\n props.updateCreditAuthorizationProperty(value, props.borrowerType, props.loanGuid, props.interimLoanStagingId);\r\n }\r\n else {\r\n props.updateCreditAuthorizationProperty(value, props.borrowerType, props.loanGuid, props.interimLoanStagingId);\r\n }\r\n }\r\n else {\r\n props.updateCreditReportIndicator(false, props.borrowerType);\r\n setShowDialog(true);\r\n }\r\n };\r\n let landingTitle =\r\n props.borrowerType === BorrowerType.PrimaryBorrower\r\n ? \"Consumer Credit Authorization for Borrower\"\r\n : \"Consumer Credit Authorization for Co-Borrower\";\r\n return (\r\n
    \r\n {showDialog && }\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(landingTitle)}>{landingTitle}

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"To continue with the mortgage process, we need your approval to perform a credit check.\")}>To continue with the mortgage process, we need your approval to perform a credit check.

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"During your mortgage loan application process, this institution performs a credit check that requires us to obtain\" +\r\n \"and confirm information regarding your personal and financial background.This credit check includes, but is not\" +\r\n \"limited to, your marital status, number of dependents, current and past employers, current deposit accounts,\" +\r\n \"current and past consumer credit accounts, and your mortgage and / or rental history\")}>\r\n During your mortgage loan application process, this institution performs a credit check that requires us to obtain\r\n and confirm information regarding your personal and financial background. This credit check includes, but is not\r\n limited to, your marital status, number of dependents, current and past employers, current deposit accounts,\r\n current and past consumer credit accounts, and your mortgage and/or rental history.

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('I authorize this Credit Check')}>I authorize this Credit Check

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { borrowerType: BorrowerType, changeScreen: React.Dispatch>, setShowLoading: React.Dispatch> }): any => {\r\n\r\n return state.accountInformation && state.accountCreation ?\r\n {\r\n ...state.consumerCreditAuthorization,\r\n borrowerType: ownProps.borrowerType,\r\n changeScreen: ownProps.changeScreen,\r\n setShowLoading: ownProps.setShowLoading,\r\n borrowerName:\r\n ownProps.borrowerType == BorrowerType.PrimaryBorrower ?\r\n state.accountCreation?.borrower?.firstName + \" \" + state.accountCreation?.borrower?.lastName :\r\n state.accountCreation?.coBorrower?.firstName + \" \" + state.accountCreation?.coBorrower?.lastName,\r\n isCoBorrowerPresent: state.accountCreation?.coBorrower?.firstName != null ? true : false,\r\n loanGuid: state.loan?.loanGuid,\r\n isLoanCompleted: state.loan?.isLoanCompleted,\r\n interimLoanStagingId: state.loan?.interimLoanStagingId\r\n } :\r\n state.consumerCreditAuthorization\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateCreditAuthorizationProperty: (value: boolean, borrowerType: BorrowerType, loanGuid: string, interimLoanStagingId:number) => {\r\n dispatch(ConsumerCreditAuthorizationActions.consumerCreditAuthorizationActionCreators.updateCreditAuthorizationProperty(value, borrowerType, loanGuid, interimLoanStagingId));\r\n },\r\n getConsumerCreditAuthorization: (borrowerType: BorrowerTypeEnum.Borrower, interimLoanStagingId:number) => {\r\n dispatch(ConsumerCreditAuthorizationActions.consumerCreditAuthorizationActionCreators.getConsumerCreditAuthorization(borrowerType, interimLoanStagingId));\r\n },\r\n updateCreditReportIndicator: (value: boolean, borrowerType: BorrowerType) => {\r\n dispatch(ConsumerCreditAuthorizationActions.consumerCreditAuthorizationActionCreators.updateCreditReportIndicator(value, borrowerType));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n getBorrowerInformation: (borrowerType: string, interimLoanStagingId:number) => {\r\n dispatch(accountCreationActionCreators.getBorrowerInformation(borrowerType, interimLoanStagingId));\r\n },\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(CreditAuthorizationDetail as any);","export enum ManualAssetFields {\r\n Id = \"id\",\r\n AssetType = \"assetType\",\r\n HolderName = \"holderName\",\r\n AccountIdentifier = \"accountIdentifier\",\r\n Urla2020CashOrMarketValueAmount = \"urla2020CashOrMarketValueAmount\",\r\n Owner = \"owner\",\r\n}","export enum AccountTypeEnum {\r\n CheckingAccount = \"Checking Account\",\r\n SavingsAccount = \"Savings Account\",\r\n MoneyMarketFund = \"Money Market Fund\",\r\n CertificateOfDepositTimeDeposit = \"Certificate Of Deposit\",\r\n MutualFund = \"Mutual Funds\",\r\n Stock = \"Stock\",\r\n StockOptions = \"Stock Options\",\r\n Bond = \"Bond\",\r\n RetirementFund = \"Retirement Funds\",\r\n BridgeLoanNotDeposited = \"Bridge Loan Not Deposited\",\r\n IndividualDevelopmentAccount = \"Individual Development Account\",\r\n LifeInsurance = \"Life Insurance\",\r\n TrustAccount = \"Trust Account\",\r\n Other = \"Other\"\r\n\r\n //Not in Encompass\r\n //OtherLiquidAssets = \"Other Liquid Assets\",\r\n //PendingNetSaleProceedsFromRealEstateAssets = \"Net Proceeds From Real Estate Assets\",\r\n //GiftsTotal = \"Gifts Total\",\r\n //GiftsNotDeposited = \"Gifts Not Deposited\",\r\n //GiftOfEquity = \"Gift Of Equity\",\r\n //SecuredBorrowedFundsNotDeposited = \"Secured Borrowed Funds Not Deposited\",\r\n //CashDepositOnSalesContract = \"Cash Deposit On Sales Contract\",\r\n //CashOnHand = \"Cash On Hand\",\r\n //NetWorthOfBusinessOwned = \"Net Worth Of Business Owned\",\r\n //OtherNonLiquidAssets = \"Other Non Liquid Assets\",\r\n //NetEquity = \"Net Equity\",\r\n //Other = \"Other\",\r\n}\r\n","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport AccountAddition from \"assets/infographics/manualAssetInformation/AccountAddition.svg\";\r\nimport Infographic from \"../../components/common/Infographic\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { ManualAssetInformationActionCreators } from \"../../actions/manualAssetInformationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { ManualAssetInformation as ManualAsset, ManualAssetInformationState } from \"../../store/ManualAssetInformationStore\";\r\nimport styles from \"./manualAssets.module.scss\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport { ValidationMessage, Rule } from \"../constants/validation\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport { ManualAssetFields } from \"../../components/manualAssetInformation/ManualAssetFields\";\r\nimport { BorrowerTypeEnum } from \"../../common/BorrowerTypeEnum\";\r\nimport { AccountTypeEnum } from \"../../common/AccountTypeEnum\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ManualAssetDetailsProps = {\r\n manualAssetInfo: ManualAsset;\r\n validation?: undefined;\r\n isError: any;\r\n isCoBorrowerPresent: boolean;\r\n assetType: \"\";\r\n holderName: \"\";\r\n accountIdentifier: \"\";\r\n urla2020CashOrMarketValueAmount: \"\";\r\n owner: \"\";\r\n isDisable: React.Dispatch>;\r\n isLoanComplated: React.Dispatch>;\r\n borrowerType: string;\r\n}\r\n & typeof ManualAssetInformationActionCreators\r\n & typeof TaskMenuCreators\r\n & ManualAssetInformationState;\r\n\r\nconst ManualAssetDetails = (props: ManualAssetDetailsProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [disabled, setDisabled] = React.useState(false);\r\n React.useEffect(() => {\r\n if (props?.assetType !== \"\" && props.assetType === \"Other\") {\r\n props.isDisable(true);\r\n setDisabled(true);\r\n }\r\n else {\r\n props.isDisable(false);\r\n setDisabled(false);\r\n }\r\n });\r\n\r\n React.useEffect(() => {\r\n if (disabled) {\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.HolderName);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.AccountIdentifier);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.Urla2020CashOrMarketValueAmount);\r\n }\r\n });\r\n\r\n const returnBorrowerTypeEnum = (param: any) => {\r\n switch (param) {\r\n case BorrowerTypeEnum.CoBorrower:\r\n return ' Co-Borrower';\r\n default:\r\n return param;\r\n }\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Tell Us About This Account')}>Tell Us About This Account

    \r\n
    \r\n
    \r\n
    \r\n \r\n ) => props.updateManualAssetProprty(e.target.value, e.target.name)}\r\n noArrow={false}\r\n invalidclass={styles.invalidInput}\r\n dropdownclass={styles.select}>\r\n \r\n {Object.entries(AccountTypeEnum).map(([key, values]) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updateManualAssetProprty(e.target.value, e.target.id)\r\n }}\r\n value={props?.holderName}\r\n rule={{ required: ValidationMessage.Required, pattern: Rule.SpaceValidation }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n disabled={props.isLoanComplated || disabled}\r\n className={props?.assetType && (props?.assetType === AccountTypeEnum.Other ? styles.disabledInput : \"\")}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n ) => {\r\n props.updateManualAssetProprty(e.target.value, e.target.id)\r\n }}\r\n value={props?.accountIdentifier}\r\n rule={{ pattern: Rule.SpaceValidation }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n disabled={props.isLoanComplated || disabled}\r\n className={props?.assetType && (props?.assetType === AccountTypeEnum.Other ? styles.disabledInput : \"\")}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updateManualAssetProprty(e.target.value, e.target.id)\r\n }}\r\n value={props?.urla2020CashOrMarketValueAmount}\r\n rule={{ required: ValidationMessage.Required, pattern: Rule.DecimalValidation }}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n placeholder=\"$0.00\"\r\n maxLength=\"10\"\r\n disabled={props.isLoanComplated || disabled}\r\n className={props?.assetType && (props?.assetType === AccountTypeEnum.Other ? styles.disabledInput : \"\")}\r\n />\r\n
    \r\n
    \r\n {props.isCoBorrowerPresent ?
    \r\n
    \r\n \r\n ) => props.updateManualAssetProprty(e.target.value, e.target.name)}\r\n noArrow={false}\r\n invalidclass={styles.invalidInput}\r\n dropdownclass={styles.select}>\r\n \r\n {\r\n props.borrowerType === \"Borrower\" && props.isCoBorrowerPresent ?\r\n Object.keys(BorrowerTypeEnum).map(key => (\r\n <>\r\n {\r\n (key === \"Borrower\" || key === \"Both\") &&\r\n \r\n }\r\n \r\n ))\r\n \r\n : props.borrowerType === \"CoBorrower\" ?\r\n\r\n Object.keys(BorrowerTypeEnum).map(key => (\r\n <>\r\n {\r\n (key === \"CoBorrower\" || key === \"Both\") &&\r\n \r\n }\r\n \r\n ))\r\n : \"\"\r\n }\r\n \r\n
    \r\n
    :\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n {disabled &&\r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Your Loan Officer may need to get in contact with you to go over this asset')}> Your Loan Officer may need to get in contact with you to go over this asset.

    \r\n }\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: { isDisable: React.Dispatch>, isLoanComplated: boolean, borrowerType: string }): any => {\r\n let isCoBorrowerPresent;\r\n let assetType;\r\n let holderName;\r\n let accountIdentifier;\r\n let urla2020CashOrMarketValueAmount;\r\n let owner;\r\n let isDisable;\r\n let isLoanComplated;\r\n let borrowerType;\r\n if (state.accountCreation !== undefined) {\r\n if (state.accountCreation?.coBorrower?.firstName != undefined) {\r\n isCoBorrowerPresent = true;\r\n }\r\n }\r\n if (state.manualAssetInformation !== undefined) {\r\n assetType = state.manualAssetInformation.data?.assetType ?? \"\";\r\n holderName = state.manualAssetInformation.data?.holderName ?? \"\";\r\n accountIdentifier = state.manualAssetInformation.data?.accountIdentifier ?? \"\";\r\n urla2020CashOrMarketValueAmount = state.manualAssetInformation.data?.urla2020CashOrMarketValueAmount ?? \"\";\r\n owner = state.manualAssetInformation.data?.owner ?? \"\";\r\n }\r\n isDisable = ownProps.isDisable;\r\n isLoanComplated = ownProps.isLoanComplated;\r\n borrowerType = ownProps.borrowerType;\r\n return {\r\n assetType,\r\n holderName,\r\n accountIdentifier,\r\n urla2020CashOrMarketValueAmount,\r\n owner,\r\n isCoBorrowerPresent,\r\n isDisable,\r\n isLoanComplated,\r\n borrowerType\r\n }\r\n\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateManualAssetProprty: (value: string, propertyName: string) => {\r\n dispatch(ManualAssetInformationActionCreators.updateManualAssetProprty(value, propertyName));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n setValidation: (error: any, field: string) => {\r\n dispatch(ManualAssetInformationActionCreators.setValidation(error, field));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManualAssetDetails as any);","import * as React from \"react\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport styles from \"./manualAssets.module.scss\";\r\nimport ManualAssetDetails from \"../../components/manualAssetInformation/ManualAssetDetails\";\r\nimport ManualTotalAsset from \"../../components/manualAssetInformation/ManualTotalAsset\";\r\nimport ManualAssetSummary from \"../../components/manualAssetInformation/ManualAssetSummary\";\r\nimport { ManualAssetFields } from \"../../components/manualAssetInformation/ManualAssetFields\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { ManualAssetInformationActionCreators } from \"../../actions/manualAssetInformationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { ManualAssetInformation as ManualAsset, ManualAssetInformationState } from \"../../store/ManualAssetInformationStore\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport * as assetInformationService from \"../../services/assetInformationService\";\r\nimport { BorrowerTypeEnum } from \"../../common/BorrowerTypeEnum\";\r\nimport { useEffect } from \"react\";\r\nimport { AssetInformationState } from \"../../store/assetInformationStore\";\r\nimport { AccountCreationState } from \"../../store/accountCreationStore\";\r\nimport { assetInformationActionCreators } from \"../../actions/assetInformationActions\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype ManualAssetDetailsProps = {\r\n manualAssetInfo: ManualAsset;\r\n manualAssetList: ManualAsset[];\r\n validation: any;\r\n isError: any;\r\n isCoBorrowerPresent: boolean;\r\n loanGuid: string;\r\n history: any;\r\n isLoanComplated: boolean;\r\n interimLoanStagingId: number;\r\n}\r\n & typeof ManualAssetInformationActionCreators\r\n & typeof TaskMenuCreators\r\n & typeof assetInformationActionCreators\r\n & typeof loanUpdateResponseActionCreators\r\n & ManualAssetInformationState;\r\n\r\nexport enum ManualAssetStep {\r\n ManualAssetForm = 1,\r\n ManualTotal = 2,\r\n ManualSummary = 3,\r\n}\r\nconst ManualAssetInformation = (props: ManualAssetDetailsProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [currentStep, changeStep] = React.useState(0);\r\n const navigation = useNavigation();\r\n const { history } = props;\r\n const [disabled, setDisabled] = React.useState(false);\r\n const [showLoader, setLoader] = React.useState(false);\r\n const [borrowerType, setBorrowerType] = React.useState(\"\");\r\n const assetInfo = useSelector((state: ApplicationState) => state.assetInformation as AssetInformationState);\r\n const accountInfo = useSelector((state: ApplicationState) => state.accountCreation as AccountCreationState);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n React.useEffect(() => {\r\n if (history.location.state?.args === \"coborrower\") {\r\n setBorrowerType(\"CoBorrower\");\r\n }\r\n else if (history.location.state?.args === \"borrower\") {\r\n setBorrowerType(\"Borrower\");\r\n }\r\n }, [history.location]);\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n useEffect(() => {\r\n if (props.loanGuid && borrowerType !== \"\") {\r\n getAssetInformation();\r\n }\r\n }, [props.loanGuid, borrowerType]);\r\n\r\n const getAssetInformation = async () => {\r\n if (props.interimLoanStagingId && props.interimLoanStagingId > 0) {\r\n setLoader(true);\r\n let response = await assetInformationService.getAll(borrowerType, props.interimLoanStagingId);\r\n if (response.ok && response.parsedBody) {\r\n let assets = response.parsedBody as ManualAsset[];\r\n if (assets && assets.length > 0) {\r\n props.setAssetsInformation(assets);\r\n changeStep(ManualAssetStep.ManualTotal);\r\n }\r\n else {\r\n if (!props.isCoBorrowerPresent) {\r\n props.updateManualAssetProprty(BorrowerTypeEnum.Borrower, ManualAssetFields.Owner);\r\n }\r\n else {\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.Owner);\r\n }\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.HolderName);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.AccountIdentifier);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.Urla2020CashOrMarketValueAmount);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.AssetType);\r\n changeStep(ManualAssetStep.ManualAssetForm);\r\n }\r\n }\r\n setLoader(false);\r\n }\r\n }\r\n\r\n const editAssetSet = (e: any) => {\r\n props.GetManualAssetFromState(e);\r\n changeStep(ManualAssetStep.ManualAssetForm);\r\n }\r\n\r\n const deleteAssetSet = (e: any) => {\r\n props.removeAssetFromInterim(e, props.interimLoanStagingId);\r\n props.removeManualAssetFromState(e);\r\n }\r\n\r\n const AddAnother = () => {\r\n if (!props.isCoBorrowerPresent) {\r\n props.updateManualAssetProprty(BorrowerTypeEnum.Borrower, ManualAssetFields.Owner);\r\n }\r\n else {\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.Owner);\r\n }\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.HolderName);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.AccountIdentifier);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.Urla2020CashOrMarketValueAmount);\r\n props.updateManualAssetProprty(\"\", ManualAssetFields.AssetType);\r\n changeStep(ManualAssetStep.ManualAssetForm)\r\n }\r\n\r\n const onBack = () => {\r\n // for borrower\r\n if (currentStep === ManualAssetStep.ManualAssetForm && borrowerType === \"Borrower\") {\r\n history.push({ pathname: \"/asset\", state: { args: \"borrower\" } });\r\n }\r\n else if (currentStep === ManualAssetStep.ManualTotal && borrowerType === \"Borrower\") {\r\n if (!props.isCoBorrowerPresent) {\r\n props.updateManualAssetProprty(BorrowerTypeEnum.Borrower, ManualAssetFields.Owner);\r\n }\r\n history.push({ pathname: \"/asset\", state: { args: \"borrower\" } });\r\n }\r\n else if (currentStep === ManualAssetStep.ManualSummary) {\r\n changeStep(ManualAssetStep.ManualTotal)\r\n }\r\n // for coborrower\r\n if (currentStep === ManualAssetStep.ManualAssetForm && borrowerType === \"CoBorrower\") {\r\n history.push({ pathname: \"/asset\", state: { args: \"coborrower\" } });\r\n }\r\n else if (currentStep === ManualAssetStep.ManualTotal && borrowerType === \"CoBorrower\") {\r\n if (!props.isCoBorrowerPresent) {\r\n props.updateManualAssetProprty(BorrowerTypeEnum.Borrower, ManualAssetFields.Owner);\r\n }\r\n history.push({ pathname: \"/asset\", state: { args: \"coborrower\" } });\r\n }\r\n }\r\n\r\n const onContinue = async () => {\r\n if (currentStep === ManualAssetStep.ManualAssetForm) {\r\n if (!props.isLoanComplated) {\r\n await createManualAssetInformation(props.manualAssetInfo);\r\n }\r\n else {\r\n await props.getAssetInformation(borrowerType, props.interimLoanStagingId); //Get all asset by LoanGuid\r\n }\r\n changeStep(ManualAssetStep.ManualTotal)\r\n }\r\n else if (currentStep === ManualAssetStep.ManualTotal) {\r\n await props.getAssetInformation(borrowerType, props.interimLoanStagingId);\r\n changeStep(ManualAssetStep.ManualSummary)\r\n }\r\n else if (currentStep === ManualAssetStep.ManualSummary && borrowerType === \"Borrower\") {\r\n if (!props.isLoanComplated) {\r\n await updateProgressTracker();\r\n }\r\n else if (accountInfo.borrower.printOnAdditionalBorrowerPage && borrowerType == \"Borrower\") {\r\n history.push({ pathname: \"/asset\", state: { args: \"coborrower\" } });\r\n }\r\n else {\r\n history.push({ pathname: \"/reo-properties\" });\r\n }\r\n }\r\n else if (currentStep === ManualAssetStep.ManualSummary && borrowerType === \"CoBorrower\") {\r\n if (!props.isLoanComplated) {\r\n await updateProgressTracker();\r\n }\r\n history.push({ pathname: \"/reo-properties\" });\r\n }\r\n }\r\n\r\n const createManualAssetInformation = async (data: ManualAsset) => {\r\n setLoader(true);\r\n let response = await assetInformationService.updateAsset(data, props.interimLoanStagingId);\r\n if (response.ok) {\r\n await props.getAssetInformation(borrowerType, props.interimLoanStagingId);\r\n }\r\n setLoader(false);\r\n }\r\n\r\n const updateProgressTracker = async () => {\r\n setLoader(true);\r\n let response = await assetInformationService.updateProgressTracker(borrowerType, props.loanGuid,\r\n accountInfo.borrower.printOnAdditionalBorrowerPage ? true : false);\r\n if (response) {\r\n if (currentStep === ManualAssetStep.ManualSummary && accountInfo.borrower.printOnAdditionalBorrowerPage && borrowerType == \"Borrower\") {\r\n history.push({ pathname: \"/asset\", state: { args: \"coborrower\" } });\r\n }\r\n else {\r\n history.push({ pathname: \"/reo-properties\" });\r\n }\r\n }\r\n }\r\n\r\n let manualAssetPage = <>;\r\n if (currentStep === ManualAssetStep.ManualAssetForm) {\r\n manualAssetPage = (\r\n <>\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n ((!disabled &&\r\n (props.manualAssetInfo?.assetType == \"\" ||\r\n props.manualAssetInfo?.holderName == \"\" ||\r\n props.manualAssetInfo?.urla2020CashOrMarketValueAmount == \"\" ||\r\n props.manualAssetInfo?.owner == \"\")\r\n ) || (disabled &&\r\n (\r\n props.manualAssetInfo?.assetType == \"\" ||\r\n props.manualAssetInfo?.owner == \"\"\r\n )) ||\r\n showLoader || isEncompassDown\r\n )\r\n )}\r\n \r\n );\r\n }\r\n else if (currentStep === ManualAssetStep.ManualTotal) {\r\n manualAssetPage = (\r\n <>\r\n \r\n
    \r\n \r\n
    \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(),\r\n isEncompassDown\r\n )}\r\n \r\n );\r\n }\r\n else if (currentStep === ManualAssetStep.ManualSummary) {\r\n manualAssetPage = (\r\n <>\r\n \r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n {navigation.ShowContinue(\r\n () => onContinue(), showLoader || isEncompassDown\r\n )}\r\n \r\n );\r\n }\r\n\r\n\r\n return (\r\n
    \r\n {manualAssetPage}\r\n {showLoader &&\r\n
    \r\n }\r\n
    \r\n );\r\n}\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { manualAssetInformation } = state;\r\n let manualAssetInfo;\r\n let manualAssetList;\r\n let validation;\r\n let isCoBorrowerPresent;\r\n let loanGuid;\r\n let interimLoanStagingId;\r\n let isLoanComplated = state.loan?.isLoanCompleted;\r\n\r\n if (manualAssetInformation) {\r\n manualAssetInfo = manualAssetInformation.data;\r\n manualAssetList = manualAssetInformation.details;\r\n validation = manualAssetInformation.validation;\r\n }\r\n if (state.accountCreation !== undefined) {\r\n if (state.accountCreation?.coBorrower?.firstName != undefined) {\r\n isCoBorrowerPresent = true;\r\n }\r\n loanGuid = state.accountInformation?.loanGuid\r\n }\r\n if (state.loan) {\r\n interimLoanStagingId = state.loan.interimLoanStagingId;\r\n }\r\n return {\r\n manualAssetInfo,\r\n manualAssetList,\r\n validation,\r\n isCoBorrowerPresent,\r\n loanGuid,\r\n isLoanComplated,\r\n interimLoanStagingId\r\n }\r\n};\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n createManualAssetInformation: (interimLoanStagingId: number, manualAssetInformationdetail: ManualAsset, borrowerType: string) => {\r\n dispatch(ManualAssetInformationActionCreators.createManualAssetInformation(interimLoanStagingId, manualAssetInformationdetail, borrowerType));\r\n },\r\n removeManualAssetFromState: (id: string) => {\r\n dispatch(ManualAssetInformationActionCreators.removeManualAssetFromState(id));\r\n },\r\n GetManualAssetFromState: (id: string) => {\r\n dispatch(ManualAssetInformationActionCreators.GetManualAssetFromState(id));\r\n },\r\n updateManualAssetProprty: (value: string, propertyName: string) => {\r\n dispatch(ManualAssetInformationActionCreators.updateManualAssetProprty(value, propertyName));\r\n },\r\n getAssetInformation: (borrowerType: string, interimLoanStagingId: number) => {\r\n dispatch(ManualAssetInformationActionCreators.getAssetInformation(borrowerType, interimLoanStagingId));\r\n },\r\n removeAssetFromInterim: (id: string, interimLoanStagingId: number) => {\r\n dispatch(ManualAssetInformationActionCreators.removeAssetFromInterim(id, interimLoanStagingId));\r\n },\r\n updateNavigationStatus: (taskItemId: any, subTaskItemId: any, taskStatusId: any, subTaskStatusId: any, loanGuid: any) => {\r\n dispatch(TaskMenuCreators.updateNavigationStatus(taskItemId, subTaskItemId, taskStatusId, subTaskStatusId, loanGuid));\r\n },\r\n setLoanIsDirty: (isDirty: boolean) => {\r\n dispatch(TaskMenuCreators.setLoanIsDirty(isDirty));\r\n },\r\n setAssetsInformation: (assets: ManualAsset[]) => {\r\n dispatch(ManualAssetInformationActionCreators.setAssetsInformation(assets));\r\n },\r\n createAsset: (borrowerType: string, interimLoanStagingId: number) => {\r\n dispatch(ManualAssetInformationActionCreators.createAsset(borrowerType, interimLoanStagingId));\r\n },\r\n updateCoBorrowerAssetStatus: (value: boolean) => {\r\n dispatch(assetInformationActionCreators.updateCoBorrowerAssetStatus(value));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManualAssetInformation as any);","import * as React from \"react\";\r\nimport AccountsScreen from \"assets/infographics/manualAssetInformation/AccountsScreen.svg\";\r\nimport Infographic from \"../../components/common/Infographic\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { connect } from \"react-redux\";\r\nimport { ManualAssetInformation, ManualAssetInformationState } from \"../../store/ManualAssetInformationStore\";\r\nimport styles from \"./manualAssets.module.scss\";\r\nimport { ManualAssetInformationActionCreators } from \"../../actions/manualAssetInformationActions\";\r\nimport Currency from \"../../components/common/Currency\";\r\nimport { AccountTypeEnum } from \"../../common/AccountTypeEnum\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ManualAssetDetailsProps = {\r\n manualAssetInformation: ManualAssetInformation;\r\n\r\n} & typeof ManualAssetInformationActionCreators\r\n & ManualAssetInformationState;\r\n\r\nconst ManualTotalAsset = (props: ManualAssetDetailsProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n let total2 = 0.00;\r\n if (props?.details?.length !== undefined && props.details.length > 0) {\r\n for (let i = 0; i < props.details.length; i++) {\r\n var Temp = props.details[i].urla2020CashOrMarketValueAmount ? parseFloat(props.details[i].urla2020CashOrMarketValueAmount) : 0\r\n total2 += Temp;\r\n }\r\n }\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Your Manually Added Accounts')}>Your Manually Added Accounts

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Total Assets')}>Total Assets

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {props?.details?.filter(x => x.assetType === \"Other\" || x.urla2020CashOrMarketValueAmount != null).map((asset, index) => (\r\n
    \r\n
    \r\n \r\n {Object.entries(AccountTypeEnum).map(([key, values], index) => (\r\n {\r\n key === asset.assetType ?
    stopSpeech()} onMouseOver={() => textToSpeech(values)}>{values}
    : \"\"\r\n }\r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    );\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.manualAssetInformation,\r\n null)(ManualTotalAsset as any);","import * as React from \"react\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { connect } from \"react-redux\";\r\nimport { ManualAssetInformation as ManualAsset, ManualAssetInformationState } from \"../../store/ManualAssetInformationStore\";\r\nimport { ManualAssetInformationActionCreators } from \"../../actions/manualAssetInformationActions\";\r\nimport styles from \"./manualAssets.module.scss\";\r\nimport Currency from \"../../components/common/Currency\";\r\nimport { AccountTypeEnum } from \"../../common/AccountTypeEnum\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ManualAssetDetailsProps = {\r\n manualAsset: ManualAsset[];\r\n editAsset: React.Dispatch>;\r\n deleteAsset: React.Dispatch>;\r\n systematicAsset: ManualAsset[];\r\n loanGuid: string;\r\n disabled: boolean;\r\n}\r\n & typeof ManualAssetInformationActionCreators\r\n & ManualAssetInformationState;\r\n\r\nconst ManualAssetSummary = (props: ManualAssetDetailsProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n React.useEffect(() => {\r\n props.getSystematicAsset(props.loanGuid)\r\n }, []);\r\n let manualasset = 0.00;\r\n if (props?.manualAsset?.length !== undefined && props.manualAsset.length > 0) {\r\n for (let i = 0; i < props.manualAsset.length; i++) {\r\n var Temp = props.manualAsset[i].urla2020CashOrMarketValueAmount ? parseFloat(props.manualAsset[i].urla2020CashOrMarketValueAmount) : 0\r\n manualasset += Temp;\r\n }\r\n }\r\n let systematicAsset = 0.00;\r\n let total = 0.00;\r\n if (props?.systematicAsset?.length !== undefined && props.systematicAsset?.length > 0) {\r\n for (let i = 0; i < props.systematicAsset.length; i++) {\r\n let temp = props.systematicAsset[i].urla2020CashOrMarketValueAmount ? parseFloat(props.systematicAsset[i].urla2020CashOrMarketValueAmount) : 0\r\n systematicAsset += temp;\r\n }\r\n }\r\n total = manualasset + systematicAsset;\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Summary of Assets')}>Summary of Assets

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Total Asset')}> Total Assets

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {(props?.manualAsset.length === 0 && props?.systematicAsset.length === 0) ?\r\n
    stopSpeech()} onMouseOver={() => textToSpeech('No records found')}>\r\n No records found!\r\n
    :\r\n <>\r\n {props?.manualAsset?.filter(x => x.assetType === \"Other\" || x.urla2020CashOrMarketValueAmount !== null).map((asset, index) => (\r\n
    \r\n
    \r\n \r\n {Object.entries(AccountTypeEnum).map(([key, values], index) => (\r\n \r\n {\r\n key === asset.assetType ?
    stopSpeech()} onMouseOver={() => textToSpeech(values)}>{values}
    : \"\"\r\n }\r\n
    \r\n ))}\r\n
    \r\n\r\n
    \r\n \r\n {((asset.depositoryRequestDate != undefined && asset.depositoryRequestDate != new Date(1901, 2, 1)) && (asset.accountIdentifier === null || (asset.accountIdentifier != null &&\r\n !asset.accountIdentifier.includes(\"\".padEnd(18)))))\r\n &&\r\n <>\r\n \r\n !props.disabled ? props.editAsset(asset.id) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press buttton to Edit')}> \r\n \r\n \r\n !props.disabled ? props.deleteAsset(asset.id) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press buttton to Delete')}> \r\n \r\n \r\n }\r\n
    \r\n
    \r\n ))}\r\n {props?.systematicAsset?.map((systematicasset, index) => (\r\n
    \r\n
    \r\n \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(systematicasset.assetType)}>{systematicasset.assetType}
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n ))}\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    );\r\n}\r\n\r\nconst mapStateToProps = (appState: ApplicationState, ownProps: {\r\n editAsset: React.Dispatch>,\r\n deleteAsset: React.Dispatch>,\r\n disabled: boolean\r\n}): any => {\r\n const { manualAssetInformation, accountInformation } = appState;\r\n let manualAsset;\r\n let editAsset;\r\n let deleteAsset;\r\n let systematicAsset;\r\n let loanGuid;\r\n let disabled;\r\n if (manualAssetInformation && manualAssetInformation.details) {\r\n manualAsset = manualAssetInformation.details;\r\n editAsset = ownProps.editAsset;\r\n deleteAsset = ownProps.deleteAsset;\r\n systematicAsset = manualAssetInformation.systematicAssets;\r\n disabled = ownProps.disabled\r\n }\r\n if (accountInformation !== undefined) {\r\n loanGuid = accountInformation?.loanGuid\r\n }\r\n return {\r\n manualAsset,\r\n editAsset,\r\n deleteAsset,\r\n systematicAsset,\r\n loanGuid,\r\n disabled\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n removeManualAssetFromState: (id: string) => {\r\n dispatch(ManualAssetInformationActionCreators.removeManualAssetFromState(id));\r\n },\r\n getSystematicAsset: (loanGuid: string) => {\r\n dispatch(ManualAssetInformationActionCreators.getSystematicAsset(loanGuid));\r\n }\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManualAssetSummary as any);","export enum EnumLiability {\r\n Installment = \"Installment\",\r\n Revolving = \"Revolving\",\r\n ChildCare = \"Child Care\",\r\n HomeEquityLineofCredit = \"Home Equity Line of Credit\",\r\n Open30DayChargeAccount = \"Open 30 Days Charge Account\",\r\n MortgageLoan = \"Mortgage\",\r\n LeasePayments = \"Lease Payments\",\r\n OtherLiability = \"Other Liability\",\r\n ChildSupport = \"Child Support\"\r\n}\r\n","export enum BorrowerLiabilityFields {\r\n Id = \"id\",\r\n LiabilityType = \"liabilityType\",\r\n HolderName = \"holderName\",\r\n AccountIdentifier = \"accountIdentifier\",\r\n UnpaidBalanceAmount = \"unpaidBalanceAmount\",\r\n MonthlyPaymentAmount = \"monthlyPaymentAmount\",\r\n Owner = \"owner\",\r\n PrintOnAdditionalBorrowerPage = \"printOnAdditionalBorrowerPage\",\r\n IsNew = \"isNew\"\r\n}","import { get, post } from \"../common/dataFetch\";\r\nimport { BorrowerLiabilityDetail } from \"../store/borrowerLiabilityStore\";\r\n\r\nexport const getAll = (interimLoanStagingId: number) => {\r\n return get(`BorrowerLiability/ReadAsync?interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const create = (interimLoanStagingId: number, liability: BorrowerLiabilityDetail, additionalLiabliltiy?: boolean) => {\r\n return post(`BorrowerLiability/UpsertAsync?interimLoanStagingId=${interimLoanStagingId}&additionalLiabliltiy=${additionalLiabliltiy}`, liability);\r\n};\r\n\r\nexport const updateAdditionalLiabilityAsync = (loanGuid: string, interimLoanStagingId: number, additionalLiability?: boolean) => {\r\n return post(`BorrowerLiability/UpdateAdditionalLiabilityAsync?loanGuid=${loanGuid}&interimLoanStagingId=${interimLoanStagingId}&additionalLiability=${additionalLiability}`,null);\r\n};\r\n\r\nexport const deleteLiability = (interimLoanStagingId: number, liability: BorrowerLiabilityDetail) => {\r\n return post(`BorrowerLiability/DeleteLiability?interimLoanStagingId=${interimLoanStagingId}`, liability);\r\n};\r\n\r\nexport const readAdditionalLiabilityStatus = (interimLoanStagingId: number) => {\r\n return get(`BorrowerLiability/ReadAdditionalLiabilityStatus?interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n","import * as React from \"react\";\r\nimport BorrowerLiabilityItem from \"./BorrowerLiabilityItem\";\r\nimport BorrowerLiabilityList from \"./BorrowerLiabilityList\";\r\nimport { BorrowerLiabilityDetail, BorrowerLiabilityState } from \"../../store/borrowerLiabilityStore\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { borrowerLiabilityActionCreators } from \"../../actions/borrowerLiabilityActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport _uniqueId from 'lodash/uniqueId';\r\nimport styles from \"./BorrowerLiability.module.scss\";\r\nimport NavigationWrapper from \"../common/NavigationWrapper\";\r\nimport { BorrowerTypeEnum } from \"../../common/BorrowerTypeEnum\";\r\nimport * as borrowerLiabilityService from \"../../services/borrowerLiabilityService\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\nexport enum BorrowerLiabilityStep {\r\n BorrowerLiabilityList = 2,\r\n BorrowerLiabilityEdit = 3\r\n}\r\n\r\ntype BorrowerLiabilityProps = {\r\n borrowerLiabilityDetail: BorrowerLiabilityDetail[];\r\n loanGuid: string;\r\n validation: any;\r\n isCoBorrowerPresent: boolean;\r\n history: any;\r\n isLoanCompleted: boolean;\r\n isEncompassDown: boolean;\r\n interimLoanStagingId: number;\r\n}\r\n & typeof borrowerLiabilityActionCreators\r\n & typeof TaskMenuCreators\r\n & typeof loanUpdateResponseActionCreators\r\n & BorrowerLiabilityState;\r\n\r\ninterface BorrowerLiabilityInterface {\r\n isLoading: boolean;\r\n currentStep: number;\r\n editId: string;\r\n isEdit: boolean;\r\n isValid: boolean;\r\n isContinueDisabled?: boolean;\r\n onContinueClick?: () => void;\r\n onBackClick?: () => void;\r\n resetContinue?: any;\r\n additionalLiability?: boolean;\r\n}\r\n\r\nclass BorrowerLiability extends React.PureComponent {\r\n unlisten: any;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n currentStep: 2,\r\n editId: \"\",\r\n isEdit: false,\r\n isValid: false,\r\n isContinueDisabled: false,\r\n isLoading: false,\r\n additionalLiability: undefined\r\n }\r\n this.addLiabilityItem = this.addLiabilityItem.bind(this);\r\n this.unlisten = this.props.history.listen((location: any) => {\r\n if (location?.pathname === \"/liability\") {\r\n this.resetContinue();\r\n }\r\n });\r\n }\r\n speakText = (textToSpeak: string) => {\r\n if (IsNarrator()) {\r\n let text = new SpeechSynthesisUtterance(textToSpeak);\r\n speechSynthesis.speak(text);\r\n }\r\n }\r\n\r\n stopSpeaking = () => {\r\n speechSynthesis.cancel();\r\n }\r\n\r\n componentWillUnmount() {\r\n //preventing history.listen call in every route change.\r\n this.unlisten();\r\n }\r\n\r\n async getLiabilities() {\r\n if (this.props.interimLoanStagingId && this.props.interimLoanStagingId > 0) {\r\n this.props.getBorrowerLiabilityInformation(this.props.interimLoanStagingId);\r\n await borrowerLiabilityService.readAdditionalLiabilityStatus(this.props.interimLoanStagingId).then((res: any) => {\r\n if (res) {\r\n this.setState({ additionalLiability: res.parsedBody });\r\n }\r\n })\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.setBackClick();\r\n await this.getLiabilities();\r\n }\r\n\r\n addLiabilityItem = () => {\r\n const emptyliabilityDetail: BorrowerLiabilityDetail = {\r\n id: _uniqueId('uniqid-'),\r\n accountIdentifier: \"\",\r\n holderName: \"\",\r\n liabilityType: \"\",\r\n monthlyPaymentAmount: \"\",\r\n owner: this.props.isCoBorrowerPresent ? \"\" : BorrowerTypeEnum.Borrower,\r\n unpaidBalanceAmount: \"\",\r\n isNew: true,\r\n };\r\n this.setState({ editId: emptyliabilityDetail.id, isEdit: true });\r\n this.props.addLiabilityToState(emptyliabilityDetail);\r\n this.changeStep(BorrowerLiabilityStep.BorrowerLiabilityEdit);\r\n };\r\n\r\n resetContinue() { //reset the continue button on route param change.\r\n this.setState({\r\n ...this.state,\r\n onContinueClick: undefined,\r\n }, () => {\r\n this.showContinue();\r\n });\r\n }\r\n\r\n async updateAdditionalLiabilityAsync() {\r\n if (this.props.isLoanCompleted) {\r\n this.props.history.push({ pathname: \"/property-information\" });\r\n }\r\n else {\r\n this.setState({ isLoading: true });\r\n await borrowerLiabilityService.updateAdditionalLiabilityAsync(this.props.loanGuid, this.props.interimLoanStagingId, this.state.additionalLiability)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n console.log(`There was a problem updating Borrower Liability for loan #${this.props.loanGuid}.`);\r\n }\r\n let result = response.parsedBody as boolean;\r\n this.setState({ isLoading: false });\r\n\r\n if (result) {\r\n this.props.history.push({ pathname: \"/property-information\" });\r\n }\r\n \r\n })\r\n }\r\n }\r\n\r\n changeStep = (value: any) => {\r\n this.setState({\r\n currentStep: value\r\n });\r\n }\r\n\r\n editLiability = (liabilityId: string) => {\r\n this.setState({ ...this.state, editId: liabilityId, isEdit: true },\r\n () => this.changeStep(BorrowerLiabilityStep.BorrowerLiabilityEdit));\r\n }\r\n\r\n removeLiabilityFromState = (liabilityId: string) => {\r\n let liability = this.props.borrowerLiabilityDetail.find(x => x.id === liabilityId);\r\n if (liability?.isNew) {\r\n this.props.removeLiabilityFromState(liabilityId);\r\n } else {\r\n this.props.getBorrowerLiabilityInformation(this.props.interimLoanStagingId);\r\n }\r\n }\r\n\r\n deleteLiabilityFromCache = async (liabilityId: string) => {\r\n if (!this.props.isLoanCompleted) {\r\n let liability = this.props.borrowerLiabilityDetail.find(x => x.id === liabilityId);\r\n if (liability && !liability.isNew) {\r\n this.setState({ isLoading: true });\r\n let response = await borrowerLiabilityService.deleteLiability(this.props.interimLoanStagingId, liability);\r\n if (response.ok) {\r\n this.setState({ isLoading: false });\r\n }\r\n } else {\r\n this.props.setLoanIsDirty(true);\r\n }\r\n this.props.removeLiabilityFromState(liabilityId);\r\n }\r\n }\r\n\r\n updateBorrowerLiability = (liabilityId: string) => {\r\n if (!this.props.isLoanCompleted) {\r\n let liability = this.props.borrowerLiabilityDetail.find(x => x.id === liabilityId);\r\n if (liability != null) {\r\n this.setState({ isLoading: true });\r\n borrowerLiabilityService.create(this.props.interimLoanStagingId, liability, this.state.additionalLiability)\r\n .then((response: any) => {\r\n this.setState({ isLoading: false });\r\n if (!response.ok) {\r\n console.log(`There was a problem updating Borrower Liability for loan #${this.props.loanGuid}.`);\r\n }\r\n this.changeStep(BorrowerLiabilityStep.BorrowerLiabilityList);\r\n return response.parsedBody as string;\r\n }).then(() => {\r\n this.getLiabilities();\r\n });\r\n }\r\n }\r\n }\r\n\r\n setValid = (e: any) => { this.setState({ isValid: e }) }\r\n\r\n onContinue = () => {\r\n if (this.state?.currentStep === BorrowerLiabilityStep.BorrowerLiabilityList) {\r\n this.updateAdditionalLiabilityAsync();\r\n }\r\n else if (this.state?.currentStep === BorrowerLiabilityStep.BorrowerLiabilityEdit) {\r\n this.updateBorrowerLiability(this.state.editId);\r\n }\r\n }\r\n\r\n onBack = () => {\r\n if (this.state?.currentStep === BorrowerLiabilityStep.BorrowerLiabilityList) {\r\n this.props.setLoanIsDirty(false);\r\n const { history } = this.props;\r\n history.push('/reo-properties');\r\n }\r\n else if (this.state?.currentStep === BorrowerLiabilityStep.BorrowerLiabilityEdit) {\r\n this.changeStep(BorrowerLiabilityStep.BorrowerLiabilityList);\r\n this.removeLiabilityFromState(this.state.editId);\r\n }\r\n }\r\n\r\n showContinue() {\r\n this.setState({\r\n onContinueClick: () => { this.onContinue(); },\r\n });\r\n }\r\n\r\n setIsDisabled(disabled: boolean) {\r\n if (disabled !== this.state.isContinueDisabled) {\r\n this.setState({\r\n isContinueDisabled: disabled\r\n });\r\n }\r\n }\r\n\r\n setBackClick() {\r\n this.setState({\r\n onBackClick: () => { this.onBack(); }\r\n });\r\n }\r\n\r\n handleAdditionalLiability(value: boolean) {\r\n this.setState({ additionalLiability: value });\r\n }\r\n\r\n render() {\r\n let borrowerLiabilityPage = <>;\r\n let editItem;\r\n const liabilityDetails = this.props.borrowerLiabilityDetail?.filter(x => x.isNew ||\r\n (!isNullOrWhiteSpace(x.monthlyPaymentAmount) && x.monthlyPaymentAmount !== \"0\" && x.monthlyPaymentAmount !== \"0.00\"));\r\n\r\n const rows = liabilityDetails?.map((item, i) => {\r\n return (\r\n \r\n );\r\n });\r\n\r\n if (liabilityDetails?.length > 0 && this.state.isEdit) {\r\n editItem =\r\n x.id === this.state.editId)} disabled={this.props.isLoanCompleted}\r\n />\r\n }\r\n\r\n if (this.state?.currentStep === BorrowerLiabilityStep.BorrowerLiabilityList) {\r\n borrowerLiabilityPage = (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    this.stopSpeaking()} onMouseOver={() => this.speakText(\"Providing information about your monthly expenses is not required but will help us find the perfect loan product for your needs\")}> Providing information about your monthly expenses is not required but will help us find the perfect loan product for your needs.

    \r\n
    \r\n
    \r\n
    \r\n {rows}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    this.stopSpeaking()} onMouseOver={() => this.speakText(\"Do you have any additional liabilities other than those presented above\")}> Do you have any additional liabilities other than those presented above?
     * 
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n this.setIsDisabled((this.state.additionalLiability == undefined));\r\n }\r\n else if (this.state?.currentStep === BorrowerLiabilityStep.BorrowerLiabilityEdit) {\r\n borrowerLiabilityPage = (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    this.stopSpeaking()} onMouseOver={() => this.speakText(\"New Liability\")}>New Liability

    \r\n

    this.stopSpeaking()} onMouseOver={() => this.speakText(\"Please fill out the following information for your expense\")}>Please fill out the following information for your expense.

    \r\n {editItem}\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n this.setIsDisabled((this.props?.validation && Object.keys(this.props?.validation).length > 0) || !this.state.isValid);\r\n }\r\n\r\n return (<>\r\n
    \r\n\r\n
    \r\n
    \r\n {borrowerLiabilityPage}\r\n\r\n {this.state.isLoading &&
    }\r\n this.showContinue()}\r\n OnResetFromRoute={() => this.resetContinue()}\r\n >\r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (appState: ApplicationState): any => {\r\n const { borrowerLiability, accountCreation, loan } = appState;\r\n let loanGuid;\r\n let borrowerLiabilityDetail;\r\n let validation;\r\n let isCoBorrowerPresent;\r\n let isLoanCompleted;\r\n let isEncompassDown;\r\n let interimLoanStagingId;\r\n if (loan?.loanGuid) {\r\n loanGuid = loan.loanGuid;\r\n isLoanCompleted = loan.isLoanCompleted;\r\n interimLoanStagingId = loan.interimLoanStagingId;\r\n }\r\n isEncompassDown = appState.loanUpdateResponse?.isEncompassDown;\r\n if (accountCreation?.borrower) {\r\n isCoBorrowerPresent = accountCreation?.borrower?.printOnAdditionalBorrowerPage\r\n }\r\n\r\n if (borrowerLiability && borrowerLiability.data) {\r\n borrowerLiabilityDetail = borrowerLiability.data;\r\n validation = borrowerLiability.validation;\r\n }\r\n\r\n return {\r\n borrowerLiabilityDetail,\r\n loanGuid,\r\n validation,\r\n isCoBorrowerPresent,\r\n isLoanCompleted,\r\n isEncompassDown,\r\n interimLoanStagingId\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n addLiabilityToState: (liabilityDetail: BorrowerLiabilityDetail) => {\r\n dispatch(borrowerLiabilityActionCreators.addLiabilityToState(liabilityDetail));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n removeLiabilityFromState: (liabilityId: string) => {\r\n dispatch(borrowerLiabilityActionCreators.removeLiabilityFromState(liabilityId));\r\n },\r\n updateCache: (interimLoanStagingId: number, liability: BorrowerLiabilityDetail) => {\r\n dispatch(borrowerLiabilityActionCreators.updateCache(interimLoanStagingId, liability));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(false));\r\n },\r\n getBorrowerLiabilityInformation: (interimLoanStagingId: number) => {\r\n dispatch(borrowerLiabilityActionCreators.getBorrowerLiabilityInformation(interimLoanStagingId));\r\n },\r\n setLoanIsDirty: (isDirty: boolean) => {\r\n dispatch(TaskMenuCreators.setLoanIsDirty(isDirty));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(BorrowerLiability as any);","import { AppThunkAction } from '../store/index';\r\nimport * as ActionTypes from '../common/ActionTypes';\r\nimport { BorrowerLiabilityFields } from '../components/borrowerLiability/BorrowerLiabilityFields';\r\nimport * as borrowerLiabilityInfo from \"../store/borrowerLiabilityStore\";\r\nimport * as borrowerLiabilityService from \"../services/borrowerLiabilityService\";\r\nimport _uniqueId from 'lodash/uniqueId';\r\nimport { isNullOrWhiteSpace } from '../common/helper/formatHelper';\r\n\r\nconst addLiabilityToState = (data: borrowerLiabilityInfo.BorrowerLiabilityDetail): borrowerLiabilityInfo.KnownAction => {\r\n return { type: ActionTypes.CreateBorrowerLiability, data };\r\n};\r\n\r\nconst removeLiability = (id: string): borrowerLiabilityInfo.KnownAction => {\r\n return { type: ActionTypes.DeleteBorrowerLiability, id };\r\n};\r\n\r\nconst updateBorrowerLiabilityField = (value: string | boolean, field: BorrowerLiabilityFields, liabilityId: string, isNew: boolean): borrowerLiabilityInfo.KnownAction => {\r\n return { type: ActionTypes.UpdateBorrowerLiabilityInformation, field, value, liabilityId, isNew };\r\n};\r\n\r\nconst setValidation = (validationError: any, field: string): borrowerLiabilityInfo.KnownAction => {\r\n return { type: ActionTypes.SetBorrowerLiabilityValidation, validationError, field };\r\n}\r\n\r\n\r\nconst receive = (data: borrowerLiabilityInfo.BorrowerLiabilityDetail[]): borrowerLiabilityInfo.KnownAction => {\r\n return { type: ActionTypes.ReceiveBorrowerLiability, data };\r\n}\r\n\r\nexport const borrowerLiabilityActionCreators = {\r\n getBorrowerLiabilityInformation: (interimLoanStagingId: number): AppThunkAction => (dispatch) => {\r\n borrowerLiabilityService.getAll(interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem while fetching liabilities \" + interimLoanStagingId + \" .\");\r\n }\r\n return response.parsedBody as borrowerLiabilityInfo.BorrowerLiabilityDetail[];\r\n })\r\n .then((data: any) => {\r\n if (data.length > 0) {\r\n dispatch(receive(data));\r\n } else {\r\n const emptyliabilityDetail: borrowerLiabilityInfo.BorrowerLiabilityDetail = {\r\n id: _uniqueId('uniqid-'),\r\n accountIdentifier: \"\",\r\n holderName: \"\",\r\n liabilityType: \"\",\r\n monthlyPaymentAmount: \"\",\r\n owner: \"\",\r\n unpaidBalanceAmount: \"\",\r\n isNew: true,\r\n };\r\n data = [];\r\n data.push(emptyliabilityDetail);\r\n dispatch(receive(data));\r\n }\r\n })\r\n .catch((error: Error) => {\r\n throw new Error(\"There was a problem while fetching liabilities \" + error.message + \" .\");\r\n });\r\n },\r\n\r\n updateCache: (interimLoanStagingId: number, detail: borrowerLiabilityInfo.BorrowerLiabilityDetail): AppThunkAction => (dispatch) => {\r\n if (detail != null) {\r\n borrowerLiabilityService.create(interimLoanStagingId, detail)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n console.log(`There was a problem updating Borrower Liability for loan #${interimLoanStagingId}.`);\r\n }\r\n return response.parsedBody as string;\r\n });\r\n }\r\n },\r\n\r\n \r\n addLiabilityToState: (data: borrowerLiabilityInfo.BorrowerLiabilityDetail): AppThunkAction => (dispatch) => {\r\n dispatch(addLiabilityToState(data));\r\n },\r\n\r\n removeLiabilityFromState: (liabilityId: string): AppThunkAction => (dispatch) => { //to remove from state only\r\n dispatch(removeLiability(liabilityId));\r\n },\r\n\r\n handleLiabilityFieldChange: (value: any, type: any, liabilityId: string, isNew: boolean): AppThunkAction => (dispatch) => {\r\n dispatch(updateBorrowerLiabilityField(value, type, liabilityId, isNew));\r\n },\r\n\r\n setValidation: (error: any, field: string): AppThunkAction => (dispatch) => {\r\n dispatch(setValidation(error, field));\r\n },\r\n}","import * as React from \"react\";\r\nimport { EnumLiability } from \"../common/Enums/EnumLiability\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport { BorrowerLiabilityDetail, BorrowerLiabilityState } from \"../../store/borrowerLiabilityStore\";\r\nimport { BorrowerLiabilityFields } from \"../borrowerLiability/BorrowerLiabilityFields\";\r\nimport { borrowerLiabilityActionCreators } from \"../../actions/borrowerLiabilityActions\";\r\nimport { connect } from \"react-redux\";\r\nimport coBorrowerInfographic from \"../../assets/infographics/borrowerLiability/CoBorrower.svg\";\r\nimport borrowerInfographic from \"../../assets/infographics/borrowerLiability/Borrower.svg\";\r\nimport bothInfographic from \"../../assets/infographics/borrowerLiability/Both.svg\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport styles from \"./BorrowerLiability.module.scss\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport { ValidationMessage, Rule } from \"../constants/validation\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype BorrowerLiabilityEditProps = {\r\n liabilityDetail: BorrowerLiabilityDetail,\r\n validation?: undefined;\r\n isError: any;\r\n setValid: (e: any) => {};\r\n isCoBorrowerPresent: any;\r\n disabled: boolean;\r\n}\r\n & typeof borrowerLiabilityActionCreators\r\n & typeof TaskMenuCreators\r\n & BorrowerLiabilityState;\r\n\r\nconst BorrowerLiabilityItem = (props: BorrowerLiabilityEditProps) => {\r\n const [isChildSupport, setChildSupport] = React.useState(false);\r\n const [activeIndex, setActiveIndex] = React.useState(\"\");\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n if (props.liabilityDetail?.liabilityType === \"ChildSupport\") {\r\n setChildSupport(true);\r\n }\r\n\r\n if (!props.isCoBorrowerPresent) {\r\n props.handleLiabilityFieldChange(BorrowerTypeEnum.Borrower, BorrowerLiabilityFields.Owner, props.liabilityDetail?.id, props.liabilityDetail.isNew);\r\n }\r\n\r\n setActiveIndex(props.liabilityDetail?.owner);\r\n checkValid(props.liabilityDetail);\r\n })\r\n\r\n const handleInputChange = (value: any, field: BorrowerLiabilityFields) => {\r\n var liabilityDetail = { ...props.liabilityDetail };\r\n props.handleLiabilityFieldChange(value, field, liabilityDetail.id, props.liabilityDetail.isNew);\r\n\r\n if (field === BorrowerLiabilityFields.LiabilityType && value === \"ChildSupport\") {\r\n props.handleLiabilityFieldChange(\"\", BorrowerLiabilityFields.HolderName, liabilityDetail.id, props.liabilityDetail.isNew);\r\n props.handleLiabilityFieldChange(\"\", BorrowerLiabilityFields.AccountIdentifier, liabilityDetail.id, props.liabilityDetail.isNew);\r\n }\r\n\r\n checkValid(props.liabilityDetail);\r\n }\r\n\r\n const returnInfographic = (param: any) => {\r\n switch (param) {\r\n case BorrowerTypeEnum.Borrower:\r\n return borrowerInfographic;\r\n case BorrowerTypeEnum.CoBorrower:\r\n return coBorrowerInfographic;\r\n case BorrowerTypeEnum.Both:\r\n return bothInfographic;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n const returnBorrowerTypeEnum = (param: any) => {\r\n switch (param) {\r\n case BorrowerTypeEnum.CoBorrower:\r\n return 'Co-Borrower';\r\n default:\r\n return param;\r\n }\r\n }\r\n\r\n const handleChangeActive = (newActiveIndex: any) => {\r\n setActiveIndex(newActiveIndex);\r\n }\r\n\r\n const checkValid = (liabilityDetail: BorrowerLiabilityDetail) => {\r\n let isValid =\r\n !isNullOrWhiteSpace(liabilityDetail.liabilityType) &&\r\n !isNullOrWhiteSpace(liabilityDetail.monthlyPaymentAmount) &&\r\n !isNullOrWhiteSpace(liabilityDetail.unpaidBalanceAmount);\r\n\r\n if (props.isCoBorrowerPresent) {\r\n if (isNullOrWhiteSpace(liabilityDetail.owner)) {\r\n isValid = false;\r\n }\r\n }\r\n\r\n if (!isChildSupport) {\r\n if (isNullOrWhiteSpace(liabilityDetail.holderName)) {\r\n isValid = false;\r\n }\r\n }\r\n\r\n props.setValid(isValid);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n ) => {\r\n handleInputChange(e.target.value, BorrowerLiabilityFields.LiabilityType);\r\n if (e.target.value === \"ChildSupport\") {\r\n setChildSupport(!isChildSupport);\r\n } else {\r\n setChildSupport(false);\r\n }\r\n }}\r\n noArrow={false}\r\n invalidclass={styles.invalidInput}\r\n dropdownclass={styles.select}\r\n >\r\n \r\n {Object.entries(EnumLiability).map(([key, value]) => (\r\n \r\n )\r\n )}\r\n \r\n
    \r\n\r\n {!isChildSupport &&
    \r\n \r\n ) => { handleInputChange(e.target.value, BorrowerLiabilityFields.HolderName) }}\r\n defaultValue={props.liabilityDetail.holderName || \"\"}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n
    }\r\n\r\n
    \r\n \r\n {\r\n handleInputChange(values.value.replace(/^0+/, ''), BorrowerLiabilityFields.UnpaidBalanceAmount);\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n\r\n {!isChildSupport &&
    \r\n \r\n ) => { handleInputChange(e.target.value, BorrowerLiabilityFields.AccountIdentifier) }}\r\n defaultValue={props.liabilityDetail.accountIdentifier || \"\"}\r\n handleValidation={props.setValidation}\r\n invalidclass={styles.invalidInput}\r\n />\r\n
    }\r\n\r\n
    \r\n \r\n {\r\n handleInputChange(values.value.replace(/^0+/, ''), BorrowerLiabilityFields.MonthlyPaymentAmount);\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n />\r\n
    \r\n
    \r\n\r\n {props.isCoBorrowerPresent &&\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Who is Responsible for this Monthly Payment\")}> Who is Responsible for this Monthly Payment?

    \r\n
    \r\n {Object.keys(BorrowerTypeEnum).map(key => (\r\n
    \r\n
    {\r\n handleInputChange(key, BorrowerLiabilityFields.Owner);\r\n handleChangeActive(key);\r\n }}>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(returnBorrowerTypeEnum(key))}> {returnBorrowerTypeEnum(key)}

    \r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n handleLiabilityFieldChange: (value: any, field: string, liabilityId: string, isNew: boolean) => {\r\n dispatch(borrowerLiabilityActionCreators.handleLiabilityFieldChange(value, field, liabilityId, isNew));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n setValidation: (error: any, field: string) => {\r\n dispatch(borrowerLiabilityActionCreators.setValidation(error, field));\r\n }\r\n});\r\n\r\nexport default connect(null, mapDispatchToProps)(BorrowerLiabilityItem as any) as any;","import * as React from \"react\";\r\nimport styles from \"./BorrowerLiability.module.scss\";\r\nimport { BorrowerLiabilityDetail } from \"../../store/borrowerLiabilityStore\";\r\nimport Currency from \"../common/Currency\";\r\nimport { EnumLiability } from \"../common/Enums/EnumLiability\";\r\nimport { BorrowerTypeEnum } from \"../../common/BorrowerTypeEnum\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface borrowerLiabilityListProps {\r\n borrowerLiability: BorrowerLiabilityDetail,\r\n loanGuid: string;\r\n editLiability: (liabilityId: string) => void;\r\n deleteLiability: (liabilityId: string) => void;\r\n borrowerLiabilityList: BorrowerLiabilityDetail[];\r\n disabled: boolean\r\n};\r\n\r\nconst BorrowerLiabilityList = (props: borrowerLiabilityListProps) => {\r\n\r\n const returnLiabilityType = (liability: string) => {\r\n switch (liability) {\r\n case \"ChildCare\":\r\n return EnumLiability.ChildCare;\r\n case \"ChildSupport\":\r\n return EnumLiability.ChildSupport;\r\n case \"HomeEquityLineofCredit\":\r\n return EnumLiability.HomeEquityLineofCredit;\r\n case \"Installment\":\r\n return EnumLiability.Installment;\r\n case \"LeasePayments\":\r\n return EnumLiability.LeasePayments;\r\n case \"MortgageLoan\":\r\n return EnumLiability.MortgageLoan;\r\n case \"Open30DayChargeAccount\":\r\n return EnumLiability.Open30DayChargeAccount;\r\n case \"OtherLiability\":\r\n return EnumLiability.OtherLiability;\r\n case \"Revolving\":\r\n return EnumLiability.Revolving;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n const returnBorrowerTypeEnum = (param: any) => {\r\n switch (param) {\r\n case BorrowerTypeEnum.CoBorrower:\r\n return 'Co-Borrower';\r\n default:\r\n return param;\r\n }\r\n }\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n {\r\n props.borrowerLiabilityList?.length > 1 &&\r\n
    !props.disabled ? props.deleteLiability(props.borrowerLiability.id) : \"\"}>\r\n \r\n
    \r\n }\r\n\r\n
    !props.disabled ? props.editLiability(props.borrowerLiability.id) : \"\"}>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech( !isNullOrWhiteSpace(props.borrowerLiability?.liabilityType) ? returnLiabilityType(props.borrowerLiability.liabilityType) : \"(Click to edit expense)\" )}> {!isNullOrWhiteSpace(props.borrowerLiability?.liabilityType) ? returnLiabilityType(props.borrowerLiability.liabilityType) : \"(Click to edit expense)\"}

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(!isNullOrWhiteSpace(props.borrowerLiability?.accountIdentifier) ?\r\n `Account - ${props.borrowerLiability?.accountIdentifier} | ` : \"\" + !isNullOrWhiteSpace(props.borrowerLiability?.owner) ? returnBorrowerTypeEnum(props.borrowerLiability?.owner) : \"TBD\")}>\r\n\r\n {!isNullOrWhiteSpace(props.borrowerLiability?.accountIdentifier) ?\r\n `Account - ${props.borrowerLiability?.accountIdentifier} | ` : \"\"}\r\n {!isNullOrWhiteSpace(props.borrowerLiability?.owner) ? returnBorrowerTypeEnum(props.borrowerLiability?.owner) : \"TBD\"}\r\n

    \r\n
    \r\n\r\n
    \r\n

    \r\n \r\n

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"per month\")}> per month

    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default BorrowerLiabilityList;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styles from \"./borrowerReo.module.scss\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { BorrowerReoActionCreators } from \"../../actions/borrowerReoActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { ReoProperty, BorrowerReoState } from \"../../store/borrowerReoStore\";\r\nimport { connect, useSelector, useDispatch } from \"react-redux\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport { Choice } from \"../../interfaces/Question\";\r\nimport { useNavigationWithHistory } from \"hooks/useNavigationWithHistory\";\r\nimport InfographicSideLayout from \"../common/Layout/InfographicSideLayout\";\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport PrimaryResidenceInfographic from \"../../assets/infographics/borrowerReo/primary-residence.svg\";\r\nimport SecondaryHomeInfographic from \"../../assets/infographics/borrowerReo/secondary-home.svg\";\r\nimport InvestmentPropertyInfographic from \"../../assets/infographics/borrowerReo/investment-property.svg\";\r\nimport SingleFamilyInfographic from \"../../assets/infographics/borrowerReo/single-family.svg\";\r\nimport CondoInfographic from \"../../assets/infographics/borrowerReo/condo.svg\";\r\nimport MultiUnitInfographic from \"../../assets/infographics/borrowerReo/multi-unit.svg\";\r\nimport NumberOfUnitsInfographic from \"../../assets/infographics/borrowerReo/number-of-units.svg\";\r\nimport ContinueToOwnInfographic from \"../../assets/infographics/borrowerReo/continue-to-own.svg\";\r\nimport PropertyAddressInfographic from \"../../assets/infographics/borrowerReo/property-address.svg\";\r\nimport PresentMarketValueInfographic from \"../../assets/infographics/borrowerReo/present-market-value.svg\";\r\nimport TextInput from \"components/common/Input/TextInput\";\r\nimport { useHistory } from \"react-router\";\r\nimport ReoPropertyOwner from \"./ReoPropertyOwner\";\r\nimport Tooltip from \"../common/InfoIconTooltip\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport _uniqueId from 'lodash/uniqueId';\r\nimport { bindActionCreators } from \"redux\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { update } from \"../../services/borrowerReoService\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype AddReoPropertyProps =\r\n {\r\n loanGuid: string,\r\n hasCoBorrower: boolean\r\n borrowerName?: string\r\n coBorrowerName?: string\r\n disabled: boolean\r\n }\r\n & BorrowerReoState\r\n & typeof BorrowerReoActionCreators\r\n & typeof TaskMenuCreators;\r\n\r\nexport enum AddReoPropertyStep {\r\n OccupancyType = 2,\r\n Owner = 3,\r\n PropertyType = 4,\r\n NoOfUnits = 5,\r\n ContinueToOwn = 6,\r\n Address = 7,\r\n PresentMarketValue = 8\r\n}\r\n\r\nconst AddReoProperty = (props: AddReoPropertyProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [zipFormat, setZipFormat] = React.useState(\"#########\");\r\n\r\n const history = useHistory();\r\n\r\n const state: BorrowerReoState = useSelector(\r\n (state: ApplicationState) => state.borrowerReo as BorrowerReoState\r\n );\r\n\r\n const actions = { ...bindActionCreators({ ...BorrowerReoActionCreators, ...TaskMenuCreators, ...loanUpdateResponseActionCreators }, useDispatch()) };\r\n\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.accountInformation?.loanGuid\r\n );\r\n\r\n const [isLoading, setLoading] = React.useState(false);\r\n\r\n const [newReoProperty, changeNewReoProperty] = useState({\r\n id: _uniqueId('uniqueId-'),\r\n owner: \"\",\r\n occupancyType: \"\",\r\n propertyType: \"\",\r\n noOfUnits: 0,\r\n willContinueToOwnPropertyAfterTransaction: undefined,\r\n street: \"\",\r\n city: \"\",\r\n state: \"\",\r\n zip: \"\",\r\n marketValue: \"\"\r\n } as ReoProperty);\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n useEffect(() => {\r\n if (history.location && history.location?.state?.id) {\r\n let reo = state.reoProperties.filter(x => x.id === history.location?.state?.id)[0];\r\n if (reo) {\r\n newReoProperty.id = reo.id;\r\n newReoProperty.owner = reo.owner;\r\n newReoProperty.occupancyType = reo.occupancyType;\r\n newReoProperty.propertyType = reo.propertyType;\r\n newReoProperty.noOfUnits = reo.noOfUnits;\r\n newReoProperty.willContinueToOwnPropertyAfterTransaction = reo.willContinueToOwnPropertyAfterTransaction;\r\n newReoProperty.street = reo.street;\r\n newReoProperty.city = reo.city;\r\n newReoProperty.state = reo.state;\r\n newReoProperty.zip = reo.zip;\r\n newReoProperty.marketValue = reo.marketValue;\r\n }\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (newReoProperty.zip &&\r\n newReoProperty.zip.length > 5) {\r\n setZipFormat(\"#####-####\");\r\n return;\r\n }\r\n setZipFormat(\"#########\");\r\n }, [newReoProperty.zip]);\r\n\r\n const setAddress = (streetValue: string, cityValue: string, stateValue: any, zipValue: any) => {\r\n let updatedReoProperty = {\r\n ...newReoProperty,\r\n street: streetValue,\r\n city: cityValue,\r\n state: stateValue,\r\n zip: zipValue\r\n };\r\n\r\n changeNewReoProperty(updatedReoProperty);\r\n props.setLoanIsDirty(true);\r\n };\r\n\r\n const interimLoanStagingId = useSelector((state: ApplicationState) => state.loan?.interimLoanStagingId);\r\n\r\n const saveReoProperty = async () => {\r\n setLoading(true);\r\n var response = await update(state.reoProperties, true, loanGuid ?? \"\", interimLoanStagingId ?? 0);\r\n if (!response.ok) {\r\n console.log(\"There was a problem updating REO Information.\");\r\n }\r\n let result = response.parsedBody as boolean;\r\n setLoading(false);\r\n if (result) {\r\n actions.setLoanIsDirty(false);\r\n }\r\n history.goBack();\r\n };\r\n\r\n const {\r\n CurrentStep: currentStep,\r\n ChangeStep: changeStep,\r\n Navigation: navigation,\r\n IsAtInitialStep,\r\n } = useNavigationWithHistory(AddReoPropertyStep.OccupancyType);\r\n\r\n useEffect(() => {\r\n if (IsAtInitialStep) {\r\n navigation.SetBackOnClick();\r\n navigation.ShowContinue(\r\n () => changeStep(AddReoPropertyStep.Owner),\r\n newReoProperty.occupancyType === \"\"\r\n );\r\n }\r\n }, [IsAtInitialStep]);\r\n\r\n useEffect(() => {\r\n if (!newReoProperty.willContinueToOwnPropertyAfterTransaction) {\r\n changeNewReoProperty({ ...newReoProperty, street: \"\", city: \"\", state: \"\", zip: \"\", marketValue: \"\" });\r\n }\r\n }, [newReoProperty.willContinueToOwnPropertyAfterTransaction]);\r\n\r\n useEffect(() => {\r\n props.addReoProperty(newReoProperty); \r\n }, [newReoProperty]);\r\n\r\n useEffect(() => {\r\n if (currentStep === AddReoPropertyStep.ContinueToOwn) {\r\n if (newReoProperty.propertyType !== \"Multi-Unit\") {\r\n changeNewReoProperty({ ...newReoProperty, noOfUnits: 0 });\r\n }\r\n }\r\n }, [currentStep]);\r\n\r\n\r\n useEffect(() => {\r\n switch (currentStep) {\r\n case AddReoPropertyStep.OccupancyType: {\r\n navigation.ShowContinue(\r\n () => changeStep(AddReoPropertyStep.Owner),\r\n newReoProperty.occupancyType === \"\"\r\n );\r\n break;\r\n }\r\n case AddReoPropertyStep.Owner: {\r\n navigation.ShowContinue(\r\n () => changeStep(AddReoPropertyStep.PropertyType),\r\n newReoProperty.owner === \"\"\r\n );\r\n break;\r\n }\r\n case AddReoPropertyStep.PropertyType: {\r\n let nextStep =\r\n newReoProperty.propertyType === \"Multi-Unit\"\r\n ? AddReoPropertyStep.NoOfUnits\r\n : AddReoPropertyStep.ContinueToOwn;\r\n\r\n navigation.ShowContinue(\r\n () => changeStep(nextStep),\r\n newReoProperty.propertyType === \"\"\r\n );\r\n break;\r\n }\r\n case AddReoPropertyStep.NoOfUnits: {\r\n navigation.ShowContinue(\r\n () => changeStep(AddReoPropertyStep.ContinueToOwn),\r\n newReoProperty.noOfUnits === 0\r\n );\r\n break;\r\n }\r\n case AddReoPropertyStep.ContinueToOwn: {\r\n navigation.ShowContinue(\r\n () => { newReoProperty.willContinueToOwnPropertyAfterTransaction ? changeStep(AddReoPropertyStep.Address) : saveReoProperty() },\r\n newReoProperty.willContinueToOwnPropertyAfterTransaction === undefined\r\n );\r\n break;\r\n }\r\n case AddReoPropertyStep.Address: {\r\n navigation.ShowContinue(\r\n () => changeStep(AddReoPropertyStep.PresentMarketValue),\r\n isNullOrWhiteSpace(newReoProperty.street) ||\r\n isNullOrWhiteSpace(newReoProperty.city) ||\r\n isNullOrWhiteSpace(newReoProperty.state) ||\r\n isNullOrWhiteSpace(newReoProperty.zip) ||\r\n newReoProperty?.zip?.length < 5\r\n );\r\n break;\r\n }\r\n case AddReoPropertyStep.PresentMarketValue: {\r\n navigation.ShowContinue(\r\n saveReoProperty,\r\n (isNullOrWhiteSpace(newReoProperty.marketValue.toString()) || newReoProperty.marketValue === \"\")\r\n );\r\n break;\r\n }\r\n }\r\n }, [currentStep, props.hasAdditionalProperties, newReoProperty]);\r\n\r\n let addReoPropertyMarkup = <>;\r\n\r\n if (currentStep === AddReoPropertyStep.OccupancyType) {\r\n let occupancyTypeChoices: Choice[] = [\r\n {\r\n text: \"Primary Residence\",\r\n onClick: () => {\r\n changeNewReoProperty({ ...newReoProperty, occupancyType: \"Primary Residence\" });\r\n props.setLoanIsDirty(true);\r\n },\r\n icon: PrimaryResidenceInfographic,\r\n toolTipText: \"Your main home\",\r\n className: newReoProperty.occupancyType === \"Primary Residence\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: \"Second Home\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true); changeNewReoProperty({ ...newReoProperty, occupancyType: \"Second Home\" })\r\n },\r\n icon: SecondaryHomeInfographic,\r\n toolTipText: \"Your second home\",\r\n className: newReoProperty.occupancyType === \"Second Home\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: \"Investment\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true); changeNewReoProperty({ ...newReoProperty, occupancyType: \"Investment\" })\r\n },\r\n icon: InvestmentPropertyInfographic,\r\n toolTipText: \"Your investment property\",\r\n className: newReoProperty.occupancyType === \"Investment\" ? styles.selected : \"\"\r\n }\r\n ];\r\n\r\n addReoPropertyMarkup = (\r\n \r\n );\r\n } else if (currentStep === AddReoPropertyStep.Owner) {\r\n addReoPropertyMarkup = (\r\n { changeNewReoProperty({ ...newReoProperty, owner: value }); props.setLoanIsDirty(true); }}\r\n value={newReoProperty.owner}\r\n >\r\n );\r\n } else if (currentStep === AddReoPropertyStep.PropertyType) {\r\n let propertyTypeChoices: Choice[] = [\r\n {\r\n text: \"Single Family\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true);\r\n changeNewReoProperty({ ...newReoProperty, propertyType: \"Single Family\" })\r\n },\r\n icon: SingleFamilyInfographic,\r\n toolTipText: \"One family home\",\r\n className: newReoProperty.propertyType === \"Single Family\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: \"Condominium\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true); changeNewReoProperty({ ...newReoProperty, propertyType: \"Condominium\" })\r\n },\r\n icon: CondoInfographic,\r\n toolTipText: \"Condo\",\r\n className: newReoProperty.propertyType === \"Condominium\" ? styles.selected : \"\"\r\n },\r\n {\r\n text: \"Multi-Unit\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true); changeNewReoProperty({ ...newReoProperty, propertyType: \"Multi-Unit\" })\r\n },\r\n icon: MultiUnitInfographic,\r\n toolTipText: \"Multiple family home\",\r\n className: newReoProperty.propertyType === \"Multi-Unit\" ? styles.selected : \"\"\r\n }\r\n ];\r\n\r\n addReoPropertyMarkup = (\r\n \r\n );\r\n } else if (currentStep === AddReoPropertyStep.NoOfUnits) {\r\n let occupancyTypeChoices: Choice[] = [\r\n {\r\n text: \"1\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true); changeNewReoProperty({ ...newReoProperty, noOfUnits: 1 })\r\n },\r\n className: newReoProperty.noOfUnits === 1 ? styles.selected : \"\"\r\n },\r\n {\r\n text: \"2\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true); changeNewReoProperty({ ...newReoProperty, noOfUnits: 2 })\r\n },\r\n className: newReoProperty.noOfUnits === 2 ? styles.selected : \"\"\r\n },\r\n {\r\n text: \"3\",\r\n onClick: () => {\r\n props.setLoanIsDirty(true);; changeNewReoProperty({ ...newReoProperty, noOfUnits: 3 })\r\n },\r\n className: newReoProperty.noOfUnits === 3 ? styles.selected : \"\"\r\n }\r\n ];\r\n\r\n addReoPropertyMarkup = (\r\n \r\n );\r\n } else if (currentStep === AddReoPropertyStep.ContinueToOwn) {\r\n let continueToOwnChoices: Choice[] = [\r\n {\r\n text: \"Yes\",\r\n onClick: () => {\r\n changeNewReoProperty({ ...newReoProperty, willContinueToOwnPropertyAfterTransaction: true });\r\n props.setLoanIsDirty(true);\r\n },\r\n className: newReoProperty.willContinueToOwnPropertyAfterTransaction === true ? styles.yesornoselected : undefined\r\n },\r\n {\r\n text: \"No\",\r\n onClick: () => {\r\n changeNewReoProperty({ ...newReoProperty, willContinueToOwnPropertyAfterTransaction: false });\r\n props.setLoanIsDirty(true);\r\n },\r\n className: newReoProperty.willContinueToOwnPropertyAfterTransaction === false ? styles.yesornoselected : undefined\r\n },\r\n ];\r\n\r\n addReoPropertyMarkup = (\r\n
    \r\n \r\n {isLoading && (
    )}\r\n
    \r\n );\r\n } else if (currentStep === AddReoPropertyStep.Address && newReoProperty.willContinueToOwnPropertyAfterTransaction) {\r\n addReoPropertyMarkup = (\r\n \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('What is the address of this property')}>What is the address of this property? Please provide the address for REO property.

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n changeNewReoProperty({ ...newReoProperty, city: e.target.value }); props.setLoanIsDirty(true);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n changeNewReoProperty({ ...newReoProperty, state: e.target.value });\r\n props.setLoanIsDirty(true);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n changeNewReoProperty({ ...newReoProperty, zip: values.value });\r\n props.setLoanIsDirty(true);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n } else if (currentStep === AddReoPropertyStep.PresentMarketValue) {\r\n addReoPropertyMarkup = (\r\n \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('What is the present market value')}>What is the present market value?

    \r\n
    \r\n\r\n {\r\n changeNewReoProperty({ ...newReoProperty, marketValue: (values.value.replace(/^0+/, '')) });\r\n props.setLoanIsDirty(true);\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n />\r\n\r\n
    \r\n {isLoading && (
    )}\r\n
    \r\n );\r\n }\r\n\r\n return
    {addReoPropertyMarkup}
    ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n let borrowerName = \"Borrower\";\r\n\r\n if (state.accountCreation?.borrower) {\r\n let borrower = state.accountCreation?.borrower;\r\n borrowerName = borrower?.firstName + \" \" + borrower?.lastName;\r\n }\r\n\r\n let coBorrowerName = \"CoBorrower\";\r\n let hasCoBorrower;\r\n\r\n if (state.accountCreation?.borrower?.printOnAdditionalBorrowerPage) {\r\n let coBorrower = state.accountCreation?.coBorrower;\r\n coBorrowerName = coBorrower?.firstName + \" \" + coBorrower?.lastName;\r\n hasCoBorrower = true;\r\n }\r\n\r\n return {\r\n loanGuid: state.accountInformation?.loanGuid,\r\n borrowerName: borrowerName,\r\n coBorrowerName: coBorrowerName,\r\n hasCoBorrower: hasCoBorrower,\r\n ...state.borrowerReo,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n addReoProperty: (newReoProperty: ReoProperty) => {\r\n dispatch(BorrowerReoActionCreators.addReoProperty(newReoProperty));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n setLoanIsDirty: (isDirty: boolean) => {\r\n dispatch(TaskMenuCreators.setLoanIsDirty(isDirty));\r\n }\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddReoProperty as any);","import { get, post } from \"../common/dataFetch\";\r\n\r\nexport const saveContactPreference = (preference1: string, preference2: string, preference3: string, loanGuid: string) => {\r\n return post(`api/Preferences/SaveContactPreferenceAsync`, {\r\n loanGuid: loanGuid,\r\n preference1: preference1,\r\n preference2: preference2,\r\n preference3: preference3\r\n });\r\n};\r\n\r\nexport const getContactPreference = (loanGuid: string) => {\r\n return get(`api/Preferences/ReadContactPreferenceAsync?loanGuid=${loanGuid}`);\r\n};","import React, { useState, useEffect } from \"react\";\r\nimport { connect, useSelector, useDispatch } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport ChoiceQuestion from \"../common/ChoiceQuestion\";\r\nimport { saveContactPreference, getContactPreference } from \"services/contactPreferenceService\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport styles from \"../../components/borrowerReo/borrowerReo.module.scss\";\r\nimport preferanceStyles from \"../../components/contactPreference/ContactPreference.module.scss\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { AccountCreationState } from \"../../store/accountCreationStore\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanState } from \"../../store/loanStore\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst ContactPreference = () => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [showLoading, setShowLoading] = useState(false);\r\n const history = useHistory();\r\n const loanGuid = useSelector((state: ApplicationState) => state.loan?.loanGuid);\r\n const accountInfo = useSelector((state: ApplicationState) => state.accountCreation as AccountCreationState);\r\n const isLoanCompleted = useSelector((state: ApplicationState) => state.loan?.isLoanCompleted);\r\n ///selected choices\r\n const [firstChoice, setFirstChoice] = React.useState(\"\");\r\n const [secondChoice, setSecondChoice] = React.useState(\"\");\r\n const [thirdChoice, setThirdChoice] = React.useState(\"\");\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const actions = { ...bindActionCreators({ ...TaskMenuCreators }, useDispatch()) };\r\n const { isLoanFromEncompassFlag } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.SetBackOnClick(() => {\r\n history.push({ pathname: \"/demographic-questions\", state: { args: accountInfo.borrower?.printOnAdditionalBorrowerPage ? \"coborrower\" : \"borrower\" } });\r\n actions.setLoanIsDirty(false);\r\n });\r\n navigation.ShowContinue(() => onContinue(), (isNullOrWhiteSpace(firstChoice) ||\r\n isNullOrWhiteSpace(secondChoice) ||\r\n isNullOrWhiteSpace(thirdChoice)));\r\n isLoanFromEncompassFlag && navigation.HideNavigation()\r\n });\r\n\r\n const onContinue = () => {\r\n if (isLoanCompleted) {\r\n history.push({ pathname: \"/review-application\" });\r\n return;\r\n }\r\n saveUserPreference(firstChoice, secondChoice, thirdChoice);\r\n };\r\n\r\n const getUserPreference = async () => {\r\n if (!loanGuid) {\r\n return;\r\n }\r\n setShowLoading(true);\r\n var response = await getContactPreference(loanGuid ?? \"\");\r\n try {\r\n if (response.ok && !response.parsedBody.hasError) {\r\n let choice = response.parsedBody.body;\r\n if (choice) {\r\n setFirstChoice(choice.preference1);\r\n setSecondChoice(choice.preference2);\r\n setThirdChoice(choice.preference3);\r\n }\r\n }\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n finally { setShowLoading(false); }\r\n };\r\n\r\n const saveUserPreference = async (preference1: string, preference2: string, preference3: string) => {\r\n if (!loanGuid) {\r\n return;\r\n }\r\n setShowLoading(true);\r\n var response = await saveContactPreference(preference1, preference2, preference3, loanGuid ?? \"\");\r\n setShowLoading(false);\r\n\r\n if (response.ok && !response.parsedBody.hasError) {\r\n actions.setLoanIsDirty(false);\r\n history.push({ pathname: \"/review-application\" });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getUserPreference();\r\n }, []);\r\n\r\n useEffect(() => {\r\n navigation.ShowContinue(() => onContinue(),\r\n (isNullOrWhiteSpace(firstChoice) ||\r\n isNullOrWhiteSpace(secondChoice) ||\r\n isNullOrWhiteSpace(thirdChoice)\r\n || isEncompassDown));\r\n }, [firstChoice, secondChoice, thirdChoice]);\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {\r\n setFirstChoice(e.target.value);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n dropdownclass={styles.select}\r\n className={styles.selectDdl}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n {\r\n setSecondChoice(e.target.value);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n dropdownclass={styles.select}\r\n className={styles.selectDdl}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n\r\n
    \r\n \r\n {\r\n setThirdChoice(e.target.value);\r\n actions.setLoanIsDirty(true);\r\n }}\r\n dropdownclass={styles.select}\r\n className={styles.selectDdl}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n {showLoading && (\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ContactPreference;","import { get, post } from \"../common/dataFetch\";\r\nimport { ResponseDto } from \"common/models/ResponseDto\";\r\nimport { ReoProperty } from \"../store/borrowerReoStore\";\r\n\r\nexport const getAll = (interimLoanStagingId:number) => {\r\n return get(`BorrowerReo/ReadByInterimIdAsync?interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const update = (data: ReoProperty[], hasAdditionalProperties: boolean, loanGuid: string, interimLoanStagingId:number) => {\r\n return post(\"BorrowerReo/SaveBorrowerReoInformation\", {\r\n HasAdditionalProperties: hasAdditionalProperties,\r\n LoanGuid: loanGuid,\r\n AdditionalProperties: data,\r\n InterimLoanStagingId: interimLoanStagingId\r\n });\r\n};\r\n\r\n\r\nexport const remove = (borrowerReo: ReoProperty, interimLoanStagingId:number) => {\r\n return post>(`BorrowerReo/DeleteAsync?interimLoanStagingId=${interimLoanStagingId}`, borrowerReo);\r\n};","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction, ReoProperty, BorrowerReoState } from '../store/borrowerReoStore';\r\nimport * as borrowerReoService from \"../services/borrowerReoService\";\r\n\r\nexport const BorrowerReoActionCreators = {\r\n updateHasAdditionalProperties: (value: boolean, type: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdateHasAdditionalProperties, value: value, reoType: type });\r\n },\r\n addReoProperty: (data: ReoProperty): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.AddReoProperty, data: data });\r\n },\r\n\r\n isLoading: (loading: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.IsLoading, loading: loading });\r\n },\r\n\r\n updateReoInformationField: (value: any, field: string, id: string): AppThunkAction =>\r\n (dispatch) => {\r\n dispatch({\r\n type: ActionTypes.UpdateReoInformationField,\r\n value: value,\r\n field: field,\r\n id: id\r\n });\r\n },\r\n\r\n removeProperty: (id: string): AppThunkAction =>\r\n (dispatch) => {\r\n dispatch({\r\n type: ActionTypes.RemoveProperty,\r\n id: id\r\n });\r\n },\r\n\r\n updateReoAddressField: (streetValue: string, cityValue: string, stateValue: any, zipValue: any, id: string): AppThunkAction =>\r\n (dispatch) => {\r\n dispatch({\r\n type: ActionTypes.UpdateReoAddressField,\r\n streetValue: streetValue,\r\n cityValue: cityValue,\r\n stateValue: stateValue,\r\n zipValue: zipValue,\r\n id: id\r\n });\r\n },\r\n\r\n getBorrowerReo: (interimLoanStagingId: number): AppThunkAction => (dispatch) => {\r\n if (interimLoanStagingId > 0) {\r\n borrowerReoService.getAll(interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"Error occurred.\");\r\n }\r\n return response.parsedBody;\r\n })\r\n .then((data: any) => {\r\n if (data?.body) {\r\n let reos = [] as ReoProperty[];\r\n\r\n data.body?.additionalProperties.forEach((reoProperty: ReoProperty) => {\r\n let reo: ReoProperty = reoProperty;\r\n reo.id = reoProperty.id;\r\n reo.owner = reoProperty.owner;\r\n reo.marketValue = reoProperty.marketValue;\r\n reos.push(reo);\r\n });\r\n let reoState: BorrowerReoState = {\r\n hasAdditionalProperties: data.body?.hasAdditionalProperties,\r\n reoProperties: reos,\r\n currentReoProperty: {} as ReoProperty,\r\n realEstateDoesNotApply: data.body?.realEstateDoesNotApply\r\n }\r\n dispatch({\r\n type: ActionTypes.GetReoDetails, data: reoState\r\n });\r\n }\r\n });\r\n }\r\n },\r\n updateReoDataToEncompass: (data: BorrowerReoState, loanGuid: string, interimLoanStagingId: number): AppThunkAction => (dispatch) => {\r\n if (data.hasAdditionalProperties !== undefined) {\r\n borrowerReoService.update(data.reoProperties, data.hasAdditionalProperties, loanGuid, interimLoanStagingId)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n\r\n }\r\n return response.parsedBody as string;\r\n })\r\n .then(() => {\r\n\r\n });\r\n }\r\n },\r\n\r\n updateReoToInitialState: (initialReoInfo: BorrowerReoState): AppThunkAction =>\r\n (dispatch) => {\r\n dispatch({\r\n type: ActionTypes.GetReoDetails,\r\n data: initialReoInfo\r\n });\r\n },\r\n}","import React, { useEffect } from \"react\";\r\nimport InfographicSideLayout from \"../common/Layout/InfographicSideLayout\";\r\nimport SelectDropDown from \"components/common/Input/SelectDropDown\";\r\nimport OwnerInfographic from \"../../assets/infographics/borrowerReo/owner.svg\";\r\nimport styles from \"./borrowerReo.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ninterface ReoPropertyOwnerProps {\r\n valueChange: (value: string) => void;\r\n hasCoBorrower: boolean;\r\n borrowerName?: string;\r\n coBorrowerName?: string;\r\n value?: string;\r\n}\r\n\r\nconst ReoPropertyOwner = (props: ReoPropertyOwnerProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n useEffect(() => {\r\n if(!props.value && !props.hasCoBorrower){\r\n props.valueChange(\"Borrower\");\r\n }\r\n }, [props.hasCoBorrower, props.value]);\r\n\r\n return (\r\n \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Who owns this property')}>Who owns this property? *

    \r\n ) => {\r\n props.valueChange(e.target.value);\r\n }}\r\n noArrow={false}\r\n className={styles.ownerDropdown}\r\n >\r\n \r\n {props.borrowerName && }\r\n {props.hasCoBorrower && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ReoPropertyOwner;\r\n","export enum MaritalStatusEnum {\r\n Married = \"Married\",\r\n Unmarried = \"Unmarried\",\r\n Separated = \"Separated\"\r\n}","import React from \"react\";\r\nimport styles from \"./borrowerReo.module.scss\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { ReoProperty, BorrowerReoState } from \"../../store/borrowerReoStore\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport Currency from \"../common/Currency\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { BorrowerReoActionCreators } from \"../../actions/borrowerReoActions\";\r\nimport { remove } from \"../../services/borrowerReoService\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { ResponseDto } from \"../../common/models/ResponseDto\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst ReoPropertiesSummary = () => {\r\n const state: BorrowerReoState = useSelector(\r\n (state: ApplicationState) => state.borrowerReo as BorrowerReoState\r\n );\r\n\r\n const isLoanCompleted = useSelector(\r\n (state: ApplicationState) => state.loan?.isLoanCompleted\r\n );\r\n\r\n return (\r\n
    \r\n {state.reoProperties.length > 0 &&\r\n state.reoProperties.map((property, index) => (\r\n \r\n ))} \r\n \r\n {state.isLoading &&
    }\r\n \r\n
    \r\n );\r\n};\r\n\r\nconst LineItem = (props: { name: string; value: any }) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(props.name)}>{props.name}
    \r\n {props.name === \"Market Value:\" ?
    stopSpeech()} onMouseOver={() => textToSpeech(props.value)}>\r\n
    \r\n :
    stopSpeech()} onMouseOver={() => textToSpeech(props.value)}>{props.value}
    }\r\n
    \r\n );\r\n};\r\n\r\nconst PropertyCard = (props: { property: ReoProperty; index: number; isLoanCompleted: boolean | undefined }) => {\r\n const history = useHistory();\r\n\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.accountInformation?.loanGuid\r\n );\r\n const interimLoanStagingId = useSelector((state: ApplicationState) => state.loan?.interimLoanStagingId);\r\n\r\n const property = props.property;\r\n const isLoanCompleted = props.isLoanCompleted;\r\n\r\n const actions = { ...bindActionCreators({ ...BorrowerReoActionCreators, ...TaskMenuCreators, ...loanUpdateResponseActionCreators }, useDispatch()) };\r\n\r\n let formatAddress = (property: ReoProperty) =>\r\n `${property.street} ${property.city} ${property.state}, ${property.zip}`;\r\n\r\n const returnOccupency = (occupancyType: any) => {\r\n switch (occupancyType) {\r\n case \"PrimaryResidence\":\r\n case \"Primary Residence\":\r\n return \"Primary Residence\";\r\n case \"SecondHome\":\r\n case \"Second Home\":\r\n return \"Second Home\";\r\n case \"Investor\":\r\n case \"Investment\":\r\n return \"Investment\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n const returnProperty = (propertyType: any) => {\r\n switch (propertyType) {\r\n case \"SingleFamily\":\r\n case \"Single Family\":\r\n return \"Single Family\";\r\n case \"Condominium\":\r\n return \"Condominium\";\r\n case \"Multi-Unit\":\r\n case \"TwoToFourUnitProperty\":\r\n return \"Multi-Unit\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n const removeProperty = async (property: ReoProperty) => {\r\n if (!isLoanCompleted) {\r\n actions.isLoading(true);\r\n if (property.id.startsWith(\"ReoProperty\")) {\r\n if (loanGuid && interimLoanStagingId != undefined && interimLoanStagingId>0) {\r\n let response = await remove(property,interimLoanStagingId);\r\n if (response.ok) {\r\n let result = response.parsedBody as ResponseDto;\r\n if(result) {\r\n actions.removeProperty(property.id);\r\n }\r\n } else {\r\n console.error(\"Couldn't delete reo data!\");\r\n }\r\n } else {\r\n alert(\"invalid loan guid!\");\r\n }\r\n } else {\r\n actions.setLoanIsDirty(true);\r\n actions.removeProperty(property.id);\r\n }\r\n actions.isLoading(false);\r\n }\r\n }\r\n\r\n const updateProperty = (id: string) => {\r\n history.push({ pathname: \"/add-reo-property\", state: { id: id } })\r\n }\r\n\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Property\" + (props.index + 1))}>{`Property ${props.index + 1}`}

    \r\n
    !isLoanCompleted ? removeProperty(property) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(\"Press button to remove property\")}>\r\n \r\n
    \r\n\r\n
    !isLoanCompleted ? updateProperty(property.id) : \"\"}>\r\n \r\n \r\n \r\n \r\n {property.noOfUnits !== undefined && property.noOfUnits !== 0 && (\r\n \r\n )}\r\n {property.street && property.city &&\r\n \r\n }\r\n {property.marketValue !== \"\" &&\r\n \r\n }\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ReoPropertiesSummary;\r\n","import React, { useState } from \"react\";\r\nimport styles from \"./borrowerReo.module.scss\";\r\nimport * as BorrowerReoActionCreators from \"../../actions/borrowerReoActions\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useEffect } from \"react\";\r\nimport { update } from \"../../services/borrowerReoService\";\r\nimport { BorrowerReoState } from \"../../store/borrowerReoStore\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { AccountCreationState } from \"../../store/accountCreationStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport {\r\n TaskStatusId,\r\n SubTaskItem,\r\n TaskItem,\r\n} from \"../common/progressTracker/TaskStatus\";\r\nimport ReoPropertiesSummary from \"./ReoPropertiesSummary\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst ReoPropertyLanding = () => {\r\n const actions = {\r\n ...bindActionCreators(\r\n {\r\n ...BorrowerReoActionCreators.BorrowerReoActionCreators,\r\n ...TaskMenuCreators,\r\n ...loanUpdateResponseActionCreators\r\n },\r\n useDispatch()\r\n ),\r\n };\r\n const [isLoading, setLoading] = React.useState(false);\r\n const [isDisable, setDisable] = React.useState(true);\r\n\r\n const hasAdditionalProperties = useSelector(\r\n (state: ApplicationState) => state.borrowerReo?.hasAdditionalProperties\r\n );\r\n\r\n const realEstateDoesNotApply = useSelector(\r\n (state: ApplicationState) => state.borrowerReo?.realEstateDoesNotApply\r\n );\r\n\r\n useEffect(() => {\r\n if (interimLoanStagingId && interimLoanStagingId > 0) {\r\n actions.getBorrowerReo(interimLoanStagingId);\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (interimLoanStagingId && interimLoanStagingId > 0) {\r\n var reoProperties = state.reoProperties;\r\n if (reoProperties.length > 0 && realEstateDoesNotApply) {\r\n reoProperties.forEach((reoProperty) => {\r\n actions.removeProperty(reoProperty.id);\r\n });\r\n }\r\n }\r\n }, [realEstateDoesNotApply])\r\n\r\nconst [showNoProperties, setShowNoProperties] = useState(false);\r\nconst history = useHistory();\r\nconst navigation = useNavigation();\r\nconst accountInfo = useSelector((state: ApplicationState) => state.accountCreation as AccountCreationState);\r\n\r\nconst loanGuid = useSelector(\r\n (state: ApplicationState) => state.accountInformation?.loanGuid\r\n);\r\nconst interimLoanStagingId = useSelector(\r\n (state: ApplicationState) => state.loan?.interimLoanStagingId\r\n);\r\n\r\nconst isLoanCompleted = useSelector(\r\n (state: ApplicationState) => state.loan?.isLoanCompleted\r\n);\r\n\r\nconst state: BorrowerReoState = useSelector(\r\n (state: ApplicationState) => state.borrowerReo as BorrowerReoState\r\n);\r\n\r\nconst { speak, cancel } = useSpeechSynthesis();\r\n\r\nfunction textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n}\r\nfunction stopSpeech() {\r\n cancel();\r\n}\r\n\r\nuseEffect(() => {\r\n navigation.SetBackOnClick(() => {\r\n actions.setLoanIsDirty(false);\r\n history.push({ pathname: \"/asset\", state: { args: accountInfo.borrower?.printOnAdditionalBorrowerPage ? \"coborrower\" : \"borrower\" } });\r\n });\r\n}, [navigation]);\r\n\r\nuseEffect(() => {\r\n navigation.SetBackOnClick(\r\n showNoProperties ? () => setShowNoProperties(false) : undefined\r\n );\r\n}, [showNoProperties]);\r\n\r\nuseEffect(() => {\r\n (state.reoProperties.length > 0 && hasAdditionalProperties) || realEstateDoesNotApply ? setDisable(false) : setDisable(true)\r\n\r\n navigation.ShowContinue(() => {\r\n if (showNoProperties || (hasAdditionalProperties == false && isLoanCompleted)) {\r\n history.push(\"liability\");\r\n return;\r\n }\r\n if (loanGuid == undefined && interimLoanStagingId == undefined && interimLoanStagingId == 0) {\r\n return;\r\n }\r\n if (!isLoanCompleted && loanGuid !== undefined && interimLoanStagingId !== undefined && interimLoanStagingId > 0) {\r\n setLoading(true);\r\n update(state.reoProperties, state.reoProperties.length > 0, loanGuid, interimLoanStagingId).then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating user information.\");\r\n }\r\n let result = response.parsedBody as boolean;\r\n setLoading(false);\r\n if (result) {\r\n actions.setLoanIsDirty(false);\r\n setShowNoProperties(true);\r\n actions.updateNavigationStatus(\r\n TaskItem.Liability,\r\n SubTaskItem.Liability,\r\n TaskStatusId.InProgress,\r\n TaskStatusId.InProgress,\r\n loanGuid\r\n );\r\n actions.updateNavigationStatus(\r\n TaskItem.BorrowerREO,\r\n SubTaskItem.BorrowerREO,\r\n TaskStatusId.Completed,\r\n TaskStatusId.Completed,\r\n loanGuid\r\n );\r\n history.push(\"liability\");\r\n }\r\n })\r\n .catch((error: Error) => {\r\n throw new Error(`Following error message occurred ${error.message}`);\r\n });\r\n }\r\n }, isDisable);\r\n}, [hasAdditionalProperties, state.reoProperties, isDisable, realEstateDoesNotApply]);\r\n\r\nreturn (\r\n <>\r\n {!showNoProperties && (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Properties Summary\")}>Properties Summary

    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Do you own additional properties?\")}>Do you own additional properties?
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n {state.reoProperties.length > 0 && hasAdditionalProperties && (\r\n \r\n )}\r\n\r\n {hasAdditionalProperties && (\r\n
    stopSpeech()} onMouseOver={() => textToSpeech(\"Add Real Estate Owned Property\")}>\r\n \r\n
    \r\n )}\r\n {isLoading && (
    )}\r\n
    \r\n )}\r\n \r\n);\r\n};\r\n\r\nexport default ReoPropertyLanding;\r\n","import * as React from \"react\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { connect } from \"react-redux\";\r\nimport { ManualAssetInformation as AssetInformation, ManualAssetInformationState } from \"../../store/ManualAssetInformationStore\";\r\nimport { ManualAssetInformationActionCreators } from \"../../actions/manualAssetInformationActions\";\r\nimport styles from \"./assets.module.scss\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport Currency from \"../../components/common/Currency\";\r\nimport { TaskItem, SubTaskItem, TaskStatusId } from \"../common/progressTracker/TaskStatus\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\n\r\ntype AssetDetailsProps = {\r\n assets: AssetInformation[];\r\n loanGuid: string;\r\n}\r\n & typeof ManualAssetInformationActionCreators\r\n & typeof TaskMenuCreators\r\n & ManualAssetInformationState;\r\n\r\nconst AssetDetails = (props: AssetDetailsProps) => {\r\n const history = useHistory();\r\n const navigation = useNavigation(() => {\r\n navigation.ShowContinue(() => { onContinue() }, false);\r\n navigation.SetBackOnClick(() => { onBack() });\r\n });\r\n\r\n const onBack = () => {\r\n history.push({ pathname: \"/manual-asset-information\" });\r\n };\r\n\r\n const onContinue = () => {\r\n props.updateNavigationStatus(TaskItem.BorrowerREO, SubTaskItem.BorrowerREO, TaskStatusId.InProgress,TaskStatusId.InProgress, props.loanGuid);//update next in nav bar\r\n props.updateNavigationStatus(TaskItem.AssetInformation, SubTaskItem.AssetInformation, TaskStatusId.Completed, TaskStatusId.Completed, props.loanGuid);\r\n history.push({ pathname: \"/reo-properties\" });\r\n };\r\n\r\n React.useEffect(() => {\r\n props.getAssetInformationFromEncompass(props.loanGuid);\r\n }, []);\r\n\r\n let totalAssets = 0.00;\r\n if (props.assets?.length > 0) {\r\n for (let i = 0; i < props.assets.length; i++) {\r\n let temp = props.assets[i].urla2020CashOrMarketValueAmount ? parseFloat(props.assets[i].urla2020CashOrMarketValueAmount) : 0\r\n totalAssets += temp;\r\n }\r\n }\r\n return (\r\n
    \r\n
    \r\n

    Total Assets

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.assets?.map((asset, index) => (\r\n
    \r\n
    \r\n \r\n
    {asset.assetType}
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    );\r\n}\r\n\r\nconst mapStateToProps = (appState: ApplicationState, ownProps: {\r\n}): any => {\r\n const { manualAssetInformation } = appState;\r\n let assets;\r\n let loanGuid;\r\n\r\n if (manualAssetInformation && manualAssetInformation.assets) {\r\n assets = manualAssetInformation.assets;\r\n }\r\n loanGuid = appState.loan?.loanGuid;\r\n return {\r\n assets,\r\n loanGuid\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getAssetInformationFromEncompass: (loanGuid: string) => {\r\n dispatch(ManualAssetInformationActionCreators.getAssetInformationFromEncompass(loanGuid));\r\n },\r\n updateNavigationStatus: (taskItemId: any, subTaskItemId: any, taskStatusId: any, subTaskStatusId: any, loanGuid: any) => {\r\n dispatch(TaskMenuCreators.updateNavigationStatus(taskItemId, subTaskItemId, taskStatusId, subTaskStatusId, loanGuid));\r\n },\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AssetDetails as any);","export enum EnumOccupency {\r\n PrimaryResidence = \"Primary Residence\",\r\n SecondHome = \"Second Home\",\r\n Investor = \"Investment\"\r\n}\r\n","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport * as ReviewApplicationActions from \"../../actions/reviewApplicationActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport * as AccountCreationStore from \"../../store/accountCreationStore\";\r\nimport * as ReviewApplicationStore from \"../../store/reviewApplicationStore\";\r\nimport styles from \"./reviewApplication.module.scss\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport { MaritalStatusEnum } from \"../common/Enums/MaritalStatusEnum\";\r\nimport moment from 'moment';\r\nimport * as AccountCreationActions from \"../../actions/accountCreationActions\";\r\nimport { isNullOrWhiteSpace, validateBirthDate, toDate, isValidDate } from \"../../common/helper/formatHelper\";\r\nimport { Rule } from \"../constants/validation\";\r\nimport CustomDatePicker from \"../common/CustomDatePicker\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ReviewBorrowerInformationProps = {\r\n borrowerInformation: AccountCreationStore.Borrower;\r\n borrowerType: AccountCreationStore.BorrowerType;\r\n isEdit: boolean;\r\n section: string;\r\n setBorrowerInformationValid: (isValid: any, borrowerType: number) => void;\r\n disabled: boolean;\r\n}\r\n & ReviewApplicationStore.ReviewApplicationState\r\n & typeof ReviewApplicationActions.reviewApplicationActionCreators\r\n & typeof AccountCreationActions.accountCreationActionCreators\r\n & typeof TaskMenuCreators\r\n\r\nconst ReviewBorrowerInformation = (props: ReviewBorrowerInformationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [birthdatemsg, setBirthdatemsg] = React.useState(false);\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n let isValid =\r\n !isNullOrWhiteSpace(props.borrowerInformation.firstName) &&\r\n !isNullOrWhiteSpace(props.borrowerInformation.lastName) &&\r\n !isNullOrWhiteSpace(props.borrowerInformation.emailAddressText) &&\r\n !isNullOrWhiteSpace(props.borrowerInformation.maritalStatusType);\r\n\r\n if (!isValidDate(toDate(props.borrowerInformation.birthDate)) || birthdatemsg) {\r\n isValid = false;\r\n }\r\n\r\n if (props.borrowerInformation.taxIdentificationIdentifier &&\r\n props.borrowerInformation.taxIdentificationIdentifier.length < 9) {\r\n isValid = false;\r\n }\r\n\r\n if (props.borrowerInformation.emailAddressText &&\r\n !(Rule.EmailValidation.value.test(props.borrowerInformation.emailAddressText))) {\r\n isValid = false;\r\n }\r\n\r\n if (props.borrowerInformation.phoneNumber &&\r\n props.borrowerInformation.phoneNumber.length < 10) {\r\n isValid = false;\r\n }\r\n\r\n props.setBorrowerInformationValid(isValid, props.borrowerType);\r\n }, [props.borrowerInformation]);\r\n\r\n return <>\r\n
    \r\n \r\n ) => {\r\n props.updateBorrowerProperty(e.target.value, \"firstName\", props.borrowerType);\r\n }}\r\n value={props.borrowerInformation?.firstName || \"\"}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.firstName || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updateBorrowerProperty(e.target.value, \"middleName\", props.borrowerType);\r\n }}\r\n value={props.borrowerInformation?.middleName || \"\"}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.middleName || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updateBorrowerProperty(e.target.value, \"lastName\", props.borrowerType);\r\n }}\r\n value={props.borrowerInformation?.lastName || \"\"}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.lastName || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updateBorrowerProperty(e.target.value, \"suffixToName\", props.borrowerType);\r\n }}\r\n value={props.borrowerInformation?.suffixToName || \"\"}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.suffixToName || \"\")} />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n {\r\n props.updateBorrowerProperty(values.value, \"phoneNumber\", props.borrowerType);\r\n }}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.phoneNumber || '')}/>\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updateBorrowerProperty(e.target.value, \"emailAddressText\", props.borrowerType);\r\n }}\r\n value={props.borrowerInformation?.emailAddressText || \"\"}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.emailAddressText || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n ) => {\r\n props.updateBorrowerProperty(e.target.value, \"maritalStatusType\", props.borrowerType);\r\n }}\r\n noArrow={false}\r\n dropdownclass={styles.select}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.maritalStatusType || \"\")}>\r\n \r\n {Object.keys(MaritalStatusEnum).map(key => (\r\n \r\n ))}\r\n \r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ? <>\r\n
    \r\n\r\n {\r\n\r\n let isValidDate = validateBirthDate(date);\r\n setBirthdatemsg(isValidDate ? false : true);\r\n props.updateBorrowerProperty(toDate(date), \"birthDate\", props.borrowerType);\r\n }}\r\n popperPlacement={false}\r\n maxDate={new Date()}\r\n />\r\n
    \r\n \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n {\r\n props.updateBorrowerProperty(values.value, \"taxIdentificationIdentifier\", props.borrowerType);\r\n }}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerInformation?.taxIdentificationIdentifier || '')} />\r\n\r\n
    \r\n
    \r\n ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: {\r\n borrowerInformation: AccountCreationStore.Borrower,\r\n borrowerType: AccountCreationStore.BorrowerType,\r\n isEdit: boolean,\r\n section: string,\r\n setBorrowerInformationValid: (isValid: any, borrowerType: any) => void;\r\n isLoanCompleted: boolean\r\n}): any => {\r\n return state.accountCreation ?\r\n {\r\n borrowerInformation: ownProps.borrowerInformation,\r\n borrowerType: ownProps.borrowerType,\r\n isEdit: ownProps.isEdit,\r\n section: ownProps.section,\r\n setBorrowerInformationValid: ownProps.setBorrowerInformationValid,\r\n disabled: ownProps.isLoanCompleted\r\n } : state;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateBorrowerProperty: (value: string, propertyName: string, borrowerType: AccountCreationStore.BorrowerType) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.updateBorrowerProperty(value, propertyName, borrowerType));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReviewBorrowerInformation as any);","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport * as AccountCreationStore from \"../../store/accountCreationStore\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as AccountCreationActions from \"../../actions/accountCreationActions\";\r\nimport styles from \"./reviewApplication.module.scss\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport * as ReviewApplicationStore from \"../../store/reviewApplicationStore\";\r\nimport * as ReviewApplicationActions from \"../../actions/reviewApplicationActions\";\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ReviewAddressInformationProps = {\r\n borrowerAddress: AccountCreationStore.Address;\r\n borrowerType: AccountCreationStore.BorrowerType;\r\n addressType: AccountCreationStore.AddressType;\r\n isEdit: boolean;\r\n section: string;\r\n setAddressInformationValid: (borrowerType: number) => void;\r\n disabled: boolean;\r\n}\r\n & ReviewApplicationStore.ReviewApplicationState\r\n & typeof ReviewApplicationActions.reviewApplicationActionCreators\r\n & typeof AccountCreationActions.accountCreationActionCreators\r\n & typeof TaskMenuCreators;\r\n\r\nconst ReviewAddressInformation = (props: ReviewAddressInformationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [zipFormat, setZipFormat] = React.useState(\"#########\");\r\n\r\n const handleChange = (value: string, propertyName: string, borrowerType: AccountCreationStore.BorrowerType,\r\n addressType: AccountCreationStore.AddressType) => {\r\n props.updateBorrowerAddressProperty(value, propertyName, borrowerType, addressType);\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n if (props.borrowerAddress?.addressPostalCode &&\r\n props.borrowerAddress?.addressPostalCode?.length > 5) {\r\n setZipFormat(\"#####-####\");\r\n return;\r\n }\r\n setZipFormat(\"#########\");\r\n }, [props.borrowerAddress?.addressPostalCode]);\r\n\r\n React.useEffect(() => {\r\n props.setAddressInformationValid(props.borrowerType);\r\n }, [props.borrowerAddress.addressCity,\r\n props.borrowerAddress.addressState,\r\n props.borrowerAddress.addressStreetLine1,\r\n props.borrowerAddress.addressPostalCode]);\r\n\r\n const updateAdditionalAddresses = (street: string, city: string, state: string, zip: string, item: AccountCreationStore.Address) => {\r\n item.addressStreetLine1 = street;\r\n item.addressCity = city;\r\n item.addressState = state;\r\n item.addressPostalCode = zip;\r\n props.EditAddressProperty(item, props.borrowerType);\r\n }\r\n\r\n return <>\r\n
    \r\n \r\n\r\n {props.addressType === AccountCreationStore.AddressType.CurrentAddress ?\r\n !props.isEdit ?\r\n
    \r\n\r\n
    : \r\n : !props.isEdit ?
    \r\n\r\n {\r\n updateAdditionalAddresses(street, city, state, zip, props.borrowerAddress);\r\n }}\r\n styles={styles.input}\r\n />
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n if (props.addressType === AccountCreationStore.AddressType.CurrentAddress) {\r\n handleChange(e.target.value, \"addressCity\", props.borrowerType, AccountCreationStore.AddressType.CurrentAddress)\r\n } else {\r\n props.borrowerAddress.addressCity = e.target.value;\r\n props.EditAddressProperty(props.borrowerAddress, props.borrowerType);\r\n }\r\n }}\r\n value={props.borrowerAddress?.addressCity || \"\"}\r\n readOnly={props.isEdit}\r\n maxLength=\"20\"\r\n minLength=\"2\"\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerAddress?.addressCity || \"\")} />\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n if (props.addressType === AccountCreationStore.AddressType.CurrentAddress) {\r\n handleChange(e.target.value, \"addressState\", props.borrowerType, AccountCreationStore.AddressType.CurrentAddress)\r\n } else {\r\n props.borrowerAddress.addressState = e.target.value;\r\n props.EditAddressProperty(props.borrowerAddress, props.borrowerType);\r\n }\r\n }}\r\n value={props.borrowerAddress?.addressState?.toUpperCase() || \"\"}\r\n maxLength=\"2\"\r\n minLength=\"2\"\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerAddress?.addressState?.toUpperCase() || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n if (props.addressType === AccountCreationStore.AddressType.CurrentAddress) {\r\n handleChange(values.value, \"addressPostalCode\", props.borrowerType, AccountCreationStore.AddressType.CurrentAddress)\r\n } else {\r\n props.borrowerAddress.addressPostalCode = values.value;\r\n props.EditAddressProperty(props.borrowerAddress, props.borrowerType);\r\n }\r\n }}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerAddress?.addressPostalCode || '')} />\r\n
    \r\n : \r\n }\r\n
    \r\n\r\n ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: {\r\n borrowerType: AccountCreationStore.BorrowerType,\r\n borrowerAddress: AccountCreationStore.Address,\r\n addressType: AccountCreationStore.AddressType,\r\n isEdit: boolean,\r\n section: string,\r\n setAddressInformationValid: (isValid: any, borrowerType: number) => void;\r\n isLoanCompleted: boolean\r\n}): any => {\r\n return state.accountCreation ?\r\n {\r\n borrowerAddress: ownProps.borrowerAddress,\r\n borrowerType: ownProps.borrowerType,\r\n isEdit: ownProps.isEdit,\r\n section: ownProps.section,\r\n setAddressInformationValid: ownProps.setAddressInformationValid,\r\n addressType: ownProps.addressType,\r\n disabled: ownProps.isLoanCompleted\r\n } : state;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateBorrowerAddressProperty: (value: string, propertyName: string, borrowerType: AccountCreationStore.BorrowerType, addressType: AccountCreationStore.AddressType) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.updateBorrowerAddressProperty(value, propertyName, borrowerType, addressType));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n EditAddressProperty: (address: AccountCreationStore.Address, borrowerType: AccountCreationStore.BorrowerType) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.EditAddressProperty(address, borrowerType));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReviewAddressInformation as any);","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport * as EmploymentInformationStore from \"../../store/employmentInformationStore\";\r\nimport styles from \"./reviewApplication.module.scss\";\r\nimport * as EmploymentInformationActions from \"../../actions/employmentInformationActions\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { EmploymentInformationFields } from \"../employmentInformation/EmploymentInformationFields\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport moment from 'moment';\r\nimport * as ReviewApplicationActions from \"../../actions/reviewApplicationActions\";\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\nimport { isNullOrWhiteSpace, isValidDate, toDate } from \"../../common/helper/formatHelper\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport Currency from \"../common/Currency\";\r\nimport CustomDatePicker from \"../common/CustomDatePicker\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype ReviewEmploymentInformationProps = {\r\n employmentInformation: EmploymentInformationStore.Employment;\r\n employmentList: EmploymentInformationStore.Employment[];\r\n borrowerType: EmploymentInformationStore.BorrowerType;\r\n isEdit: boolean;\r\n section: string;\r\n militryIndicator: boolean;\r\n setEmploymentInformationValid: (isValid: any, borrowerType: number) => void;\r\n employerIndex: number;\r\n disabled: boolean;\r\n}\r\n & typeof EmploymentInformationActions.employmentInformationActionCreators\r\n & typeof ReviewApplicationActions.reviewApplicationActionCreators\r\n & typeof TaskMenuCreators;\r\n\r\nconst ReviewEmploymentInformation = (props: ReviewEmploymentInformationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [total, setTotal] = React.useState(0);\r\n const [zipFormat, setZipFormat] = React.useState(\"#########\");\r\n\r\n const updateProperty = (value: any, fieldname: string) => {\r\n props.UpdateEmploymentInformationProperty(value, fieldname, props.borrowerType, props.employmentInformation.id);\r\n }\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.employmentInformation?.addressPostalCode &&\r\n props.employmentInformation?.addressPostalCode?.length > 5) {\r\n setZipFormat(\"#####-####\");\r\n return;\r\n }\r\n setZipFormat(\"#########\");\r\n }, [props.employmentInformation?.addressPostalCode]);\r\n\r\n React.useEffect(() => {\r\n props.UpdateEmploymentInformationProperty(total, EmploymentInformationFields.TotalAmount, props.borrowerType, props.employmentInformation.id);\r\n }, [total])\r\n\r\n React.useEffect(() => {\r\n setTotal((isNullOrWhiteSpace(props.employmentInformation?.otherAmount) ? 0 : +props.employmentInformation?.otherAmount) +\r\n (isNullOrWhiteSpace(props.employmentInformation?.commissionsAmount) ? 0 : +props.employmentInformation?.commissionsAmount) +\r\n (isNullOrWhiteSpace(props.employmentInformation?.bonusAmount) ? 0 : +props.employmentInformation?.bonusAmount) +\r\n (isNullOrWhiteSpace(props.employmentInformation?.basePayAmount) ? 0 : +props.employmentInformation?.basePayAmount) +\r\n (isNullOrWhiteSpace(props.employmentInformation?.overtimeAmount) ? 0 : +props.employmentInformation?.overtimeAmount));\r\n }, [props.employmentInformation?.otherAmount, props.employmentInformation?.commissionsAmount,\r\n props.employmentInformation?.bonusAmount, props.employmentInformation?.basePayAmount,\r\n props.employmentInformation?.overtimeAmount])\r\n\r\n React.useEffect(() => {\r\n let isValid = true;\r\n props.employmentList.forEach(x => {\r\n if (isValid) {\r\n isValid = !isNullOrWhiteSpace(x.employerName) &&\r\n !isNullOrWhiteSpace(x.positionDescription) &&\r\n !isNullOrWhiteSpace(x.urlA2020StreetAddress) &&\r\n !isNullOrWhiteSpace(x.addressCity) &&\r\n !isNullOrWhiteSpace(x.addressState) &&\r\n !isNullOrWhiteSpace(x.addressPostalCode) &&\r\n !isNullOrWhiteSpace(props.employmentInformation.basePayAmount);\r\n\r\n if (!isValidDate(toDate(x.employmentStartDate))) {\r\n isValid = false;\r\n }\r\n\r\n if (x.addressPostalCode && x.addressPostalCode.length < 5) {\r\n isValid = false;\r\n }\r\n }\r\n });\r\n props.setEmploymentInformationValid(isValid, props.borrowerType);\r\n }, [props.employmentInformation?.employerName, props.employmentInformation?.positionDescription,\r\n props.employmentInformation?.urlA2020StreetAddress, props.employmentInformation?.addressCity,\r\n props.employmentInformation?.addressState, props.employmentInformation?.addressPostalCode,\r\n props.employmentInformation?.employmentStartDate, props.employmentInformation?.basePayAmount]);\r\n\r\n const setAddress = (streetValue: string, cityValue: any, stateValue: any, zipValue: any) => {\r\n props.UpdateEmploymentInformationProperty(streetValue, EmploymentInformationFields.StreetAddress, props.borrowerType, props.employmentInformation.id);\r\n props.UpdateEmploymentInformationProperty(cityValue, EmploymentInformationFields.AddressCity, props.borrowerType, props.employmentInformation.id);\r\n props.UpdateEmploymentInformationProperty(stateValue, EmploymentInformationFields.AddressState, props.borrowerType, props.employmentInformation.id);\r\n props.UpdateEmploymentInformationProperty(zipValue, EmploymentInformationFields.AddressPostalCode, props.borrowerType, props.employmentInformation.id);\r\n };\r\n\r\n return <>\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, EmploymentInformationFields.EmployerName)\r\n }}\r\n value={props.employmentInformation?.employerName || \"\"}\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.employerName || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, EmploymentInformationFields.PositionDescription)\r\n }}\r\n value={props.employmentInformation?.positionDescription || \"\"}\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.positionDescription || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n {\r\n updateProperty(toDate(date), EmploymentInformationFields.StartDate);\r\n }}\r\n popperPlacement={false}\r\n maxDate={new Date()}\r\n />\r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n \r\n
    \r\n :\r\n \r\n }\r\n\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, EmploymentInformationFields.AddressCity)\r\n }}\r\n value={props.employmentInformation?.addressCity || \"\"}\r\n maxLength=\"20\"\r\n minLength=\"2\"\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.addressCity || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n updateProperty(e.target.value, EmploymentInformationFields.AddressState)\r\n }}\r\n value={props.employmentInformation?.addressState || \"\"}\r\n maxLength=\"2\"\r\n minLength=\"2\"\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.addressState || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n {\r\n updateProperty(values.value, EmploymentInformationFields.AddressPostalCode)\r\n }}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.addressPostalCode || '')}/>\r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n updateProperty(values.value, EmploymentInformationFields.BasePayAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.basePayAmount ?? \"\")}/>\r\n
    \r\n :\r\n \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n updateProperty(values.value, EmploymentInformationFields.OvertimeAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.overtimeAmount ?? \"\")} />\r\n
    \r\n :\r\n \r\n }\r\n
    \r\n\r\n
    \r\n \r\n\r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n updateProperty(values.value, EmploymentInformationFields.BonusAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.bonusAmount ?? \"\")}/>\r\n
    \r\n :\r\n \r\n }\r\n\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n updateProperty(values.value, EmploymentInformationFields.CommissionsAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.commissionsAmount ?? \"\")}/>\r\n
    \r\n :\r\n \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n updateProperty(values.value, EmploymentInformationFields.OtherAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.employmentInformation?.otherAmount ?? \"\")}/>\r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: {\r\n borrowerType: EmploymentInformationStore.BorrowerType,\r\n employmentInformation: EmploymentInformationStore.Employment,\r\n employmentList: EmploymentInformationStore.Employment[],\r\n isEdit: boolean,\r\n section: string,\r\n militryIndicator: boolean,\r\n setEmploymentInformationValid: (isValid: any, borrowerType: number) => void;\r\n employerIndex: number;\r\n isLoanCompleted: boolean\r\n}): any => {\r\n return state.employmentInformation ?\r\n {\r\n employmentInformation: ownProps.employmentInformation,\r\n borrowerType: ownProps.borrowerType,\r\n isEdit: ownProps.isEdit,\r\n section: ownProps.section,\r\n militryIndicator: ownProps.militryIndicator,\r\n setEmploymentInformationValid: ownProps.setEmploymentInformationValid,\r\n employerIndex: ownProps.employerIndex,\r\n employmentList: ownProps.employmentList,\r\n disabled: ownProps.isLoanCompleted\r\n } : state;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n UpdateEmploymentInformationProperty: (value: any, propertyName: string, borrowerType: EmploymentInformationStore.BorrowerType, employmentItemId: string) => {\r\n dispatch(EmploymentInformationActions.employmentInformationActionCreators.UpdateEmploymentInformationProperty(value, propertyName, borrowerType, employmentItemId));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n }\r\n\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReviewEmploymentInformation as any);","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport * as AdditionalIncomeStore from \"../../store/additionalIncomeStore\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { AdditionalIncomeActionCreators } from \"../../actions/additionalIncomeActions\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { OtherIncomeSourceDetail } from \"../../store/additionalIncomeStore\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport styles from \"./reviewApplication.module.scss\";\r\nimport { OtherIncomeSourceFields, DummyOtherIncomeSourceId } from \"../additionalIncome/AdditionalIncomeFields\";\r\nimport { IncomeSource } from \"../common/Enums/IncomeSource\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport * as ReviewApplicationActions from \"../../actions/reviewApplicationActions\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport Currency from \"../common/Currency\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype ReviewAdditionalIncomeProps = {\r\n otherIncomeSourceDetail: OtherIncomeSourceDetail;\r\n borrowerType: any;\r\n isEdit: boolean;\r\n section: string;\r\n setAdditionalInformationValid: (isValid: any, borrowerType: number) => void;\r\n disabled: boolean;\r\n}\r\n & typeof AdditionalIncomeActionCreators\r\n & typeof ReviewApplicationActions.reviewApplicationActionCreators\r\n & typeof TaskMenuCreators\r\n\r\nconst ReviewAdditionalIncome = (props: ReviewAdditionalIncomeProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const { trigger } = useForm();\r\n const handleInputChange = (value: any, field: OtherIncomeSourceFields) => {\r\n trigger(field);\r\n var otherIncomeSourceDetail = { ...props.otherIncomeSourceDetail }\r\n let isNew = props.otherIncomeSourceDetail.id === DummyOtherIncomeSourceId ? true : false;\r\n props.handleAdditionalIncomeFieldChange(value, field, otherIncomeSourceDetail.id, isNew);\r\n }\r\n\r\n const returnAdditionalIncome = (value: string) => {\r\n switch (value) {\r\n case \"Alimony\":\r\n return IncomeSource.Alimony;\r\n case \"ChildSupport\":\r\n return IncomeSource.ChildSupport;\r\n case \"Disability\":\r\n return IncomeSource.Disability;\r\n case \"Other\":\r\n return IncomeSource.Other;\r\n case \"Pension\":\r\n return IncomeSource.Pension;\r\n case \"Retirement\":\r\n return IncomeSource.Retirement;\r\n case \"SocialSecurity\":\r\n return IncomeSource.SocialSecurity;\r\n case \"Trust\":\r\n return IncomeSource.Trust;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n let isValid =\r\n !isNullOrWhiteSpace(props.otherIncomeSourceDetail?.description) &&\r\n !isNullOrWhiteSpace(props.otherIncomeSourceDetail?.monthlyAmount);\r\n\r\n props.setAdditionalInformationValid(isValid, props.borrowerType);\r\n\r\n }, [props.otherIncomeSourceDetail?.description, props.otherIncomeSourceDetail?.monthlyAmount]);\r\n\r\n return <>\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n ) => {\r\n handleInputChange(e.target.value, OtherIncomeSourceFields.Description)\r\n }}\r\n noArrow={false}\r\n dropdownclass={styles.select}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.otherIncomeSourceDetail?.description || \"\")}>\r\n \r\n\r\n {Object.entries(IncomeSource).map(([key, value]) => (\r\n \r\n ))}\r\n \r\n
    \r\n : \r\n }\r\n
    \r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n handleInputChange(values.value, OtherIncomeSourceFields.MonthlyAmount)\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n />\r\n
    \r\n :\r\n \r\n }\r\n\r\n
    \r\n ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: {\r\n borrowerType: any,\r\n otherIncomeSourceDetail: AdditionalIncomeStore.OtherIncomeSourceDetail,\r\n isEdit: boolean,\r\n section: string,\r\n setAdditionalInformationValid: (isValid: any, borrowerType: number) => void;\r\n isLoanCompleted: boolean;\r\n}): any => {\r\n\r\n return state.additionalIncome ?\r\n {\r\n otherIncomeSourceDetail: ownProps.otherIncomeSourceDetail,\r\n borrowerType: ownProps.borrowerType,\r\n isEdit: ownProps.isEdit,\r\n section: ownProps.section,\r\n setAdditionalInformationValid: ownProps.setAdditionalInformationValid,\r\n disabled: ownProps.isLoanCompleted\r\n } : state;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n handleAdditionalIncomeFieldChange: (value: any, field: string, OtherIncomeSourceId: string, isNew: boolean) => {\r\n dispatch(AdditionalIncomeActionCreators.handleAdditionalIncomeFieldChange(value, field, OtherIncomeSourceId, isNew));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReviewAdditionalIncome as any);","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport * as PropertyInformationStore from \"../../store/propertyInformationStore\";\r\nimport * as PropertyInformationActions from \"../../actions/propertyInformationActions\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport styles from \"./reviewApplication.module.scss\";\r\nimport * as ReviewApplicationActions from \"../../actions/reviewApplicationActions\";\r\nimport moment from 'moment';\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport { isNullOrWhiteSpace, isValidDate, toDate } from \"../../common/helper/formatHelper\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport Currency from \"../common/Currency\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport CustomDatePicker from \"../common/CustomDatePicker\";\r\nimport { EnumOccupency } from \"../common/Enums/EnumOccupency\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ReviewPropertyInformationProps = {\r\n loanPurpose: string;\r\n borrowerPropertyInformation: PropertyInformationStore.PropertyInformationState;\r\n isEdit: boolean;\r\n setPropertyValid: (isValid: any) => void;\r\n disabled: boolean\r\n}\r\n & typeof PropertyInformationActions.propertyInformationActionCreators\r\n & typeof ReviewApplicationActions.reviewApplicationActionCreators\r\n & typeof TaskMenuCreators\r\n\r\nconst ReviewPropertyInformation = (props: ReviewPropertyInformationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [zipFormat, setZipFormat] = React.useState(\"#########\");\r\n React.useEffect(() => {\r\n if (props.borrowerPropertyInformation.zip &&\r\n props.borrowerPropertyInformation.zip.length > 5) {\r\n setZipFormat(\"#####-####\");\r\n return;\r\n }\r\n setZipFormat(\"#########\");\r\n }, [props.borrowerPropertyInformation.zip]);\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n let isValid = true;\r\n isValid =\r\n !isNullOrWhiteSpace(props.borrowerPropertyInformation.city) &&\r\n !isNullOrWhiteSpace(props.borrowerPropertyInformation.state) &&\r\n !isNullOrWhiteSpace(props.borrowerPropertyInformation.zip) &&\r\n !(props.borrowerPropertyInformation?.zip && props.borrowerPropertyInformation?.zip.length < 5);\r\n\r\n if (props.loanPurpose === \"Refinance\") {\r\n if (isNullOrWhiteSpace(props.borrowerPropertyInformation.yearPropertyBuilt) ||\r\n isNullOrWhiteSpace(props.borrowerPropertyInformation.estimatedCurrentValue) ||\r\n isNullOrWhiteSpace(props.borrowerPropertyInformation.address) ||\r\n isNullOrWhiteSpace(props.borrowerPropertyInformation.homeOwnersInsurancePerYear) ||\r\n isNullOrWhiteSpace(props.borrowerPropertyInformation.taxesPerYear) ||\r\n isNullOrWhiteSpace(props.borrowerPropertyInformation.currentMortgageBalance)\r\n ) {\r\n isValid = false;\r\n }\r\n } else if (props.loanPurpose === \"Purchase\") {\r\n if (isNullOrWhiteSpace(props.borrowerPropertyInformation.propertyUsageType) ||\r\n isNullOrWhiteSpace(props.borrowerPropertyInformation.loanTermInYears) ||\r\n (!isValidDate(toDate(props.borrowerPropertyInformation.estimatedClosingDate))) ||\r\n isNullOrWhiteSpace(props.borrowerPropertyInformation.estimatedLoanAmount)\r\n ) {\r\n isValid = false;\r\n }\r\n }\r\n props.setPropertyValid(isValid);\r\n }, [props.borrowerPropertyInformation]);\r\n\r\n const setAddress = (streetValue: string, cityValue: any, stateValue: any, zipValue: any) => {\r\n props.updateAddressFields(streetValue, cityValue, stateValue, zipValue);\r\n };\r\n\r\n const returnOccupency = (occupancyType: any) => {\r\n switch (occupancyType) {\r\n case \"PrimaryResidence\":\r\n return EnumOccupency.PrimaryResidence;\r\n case \"SecondHome\":\r\n return EnumOccupency.SecondHome;\r\n case \"Investor\":\r\n return EnumOccupency.Investor;\r\n default:\r\n return occupancyType;\r\n }\r\n }\r\n\r\n return <>\r\n {props.loanPurpose === \"Refinance\" &&\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n \r\n
    :\r\n \r\n }\r\n
    \r\n }\r\n\r\n
    \r\n \r\n ) => {\r\n props.updatePropertyInformationField(e.target.value, \"city\")\r\n }}\r\n value={props.borrowerPropertyInformation?.city ?? \"\"}\r\n maxLength=\"20\"\r\n minLength=\"2\"\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.city ?? \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updatePropertyInformationField(e.target.value, \"state\")\r\n }}\r\n value={props.borrowerPropertyInformation?.state ?? \"\"}\r\n maxLength=\"2\"\r\n minLength=\"2\"\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.state ?? \"\")}/>\r\n
    \r\n\r\n
    \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"zip\")\r\n }}\r\n className={styles.numberFormat}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.zip ?? \"\")}/>\r\n
    \r\n :\r\n \r\n }\r\n
    \r\n\r\n {props.loanPurpose === \"Purchase\" &&\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"totalAvailableToSpendOnNewHome\")\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.totalAvailableToSpendOnNewHome ?? \"\")}/>
    : \r\n }
    \r\n }\r\n\r\n {props.loanPurpose === \"Refinance\" &&\r\n <>\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"estimatedCurrentValue\")\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.estimatedCurrentValue ?? \"\")}/>
    : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"yearPropertyBuilt\")\r\n }}\r\n className={styles.numberFormat}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.yearPropertyBuilt ?? \"\")}/>\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"taxesPerYear\")\r\n }}\r\n className={styles.numberFormat}\r\n readOnly={props.isEdit}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.taxesPerYear ?? \"\")}/>\r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"homeOwnersInsurancePerYear\")\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.homeOwnersInsurancePerYear ?? \"\")}/>\r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"currentMortgageBalance\")\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.currentMortgageBalance ?? \"\")}/>\r\n
    \r\n : \r\n }\r\n
    \r\n \r\n }\r\n\r\n {props.loanPurpose === \"Purchase\" &&\r\n <>\r\n
    \r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech(returnOccupency(props.borrowerPropertyInformation?.propertyUsageType))}/>\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n ) => {\r\n props.updatePropertyInformationField(e.target.value, \"loanTermInYears\")\r\n }}\r\n dropdownclass={styles.select}\r\n className={styles.selectDdl}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.loanTermInYears ?? \"\")} >\r\n \r\n \r\n \r\n
    \r\n :\r\n \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(toDate(date), \"estimatedClosingDate\");\r\n }}\r\n className={styles.propertyDatePicker}\r\n popperPlacement={true}\r\n />\r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updatePropertyInformationField(values.value, \"estimatedLoanAmount\")\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={2}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerPropertyInformation?.estimatedLoanAmount ?? \"\")}/>\r\n
    \r\n : \r\n }\r\n
    \r\n \r\n }\r\n ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: {\r\n loanPurpose: any,\r\n borrowerPropertyInformation: PropertyInformationStore.PropertyInformationState,\r\n isEdit: boolean,\r\n setPropertyValid: (isValid: any) => void;\r\n isLoanCompleted: boolean;\r\n}): any => {\r\n return state.propertyInformation ?\r\n {\r\n loanPurpose: ownProps.loanPurpose,\r\n borrowerPropertyInformation: ownProps.borrowerPropertyInformation,\r\n isEdit: ownProps.isEdit,\r\n setPropertyValid: ownProps.setPropertyValid,\r\n disabled: ownProps.isLoanCompleted\r\n } : state;\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updatePropertyInformationField: (value: any, propertyName: string, isNumericalValue = false) => {\r\n dispatch(PropertyInformationActions.propertyInformationActionCreators.updatePropertyInformationField(value, propertyName, isNumericalValue));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n updateAddressFields: (streetValue: string, cityValue: string, stateValue: any, zipValue: any) => {\r\n dispatch(PropertyInformationActions.propertyInformationActionCreators.updateAddressFields(streetValue, cityValue, stateValue, zipValue));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReviewPropertyInformation as any);","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport TextInput from \"../common/Input/TextInput\";\r\nimport styles from \"./reviewApplication.module.scss\";\r\nimport { ApplicationState } from \"../../store/index\";\r\nimport * as BorrowerReoStore from \"../../store/borrowerReoStore\";\r\nimport * as ReviewApplicationActions from \"../../actions/reviewApplicationActions\";\r\nimport * as BorrowerReoActions from \"../../actions/borrowerReoActions\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport LocationSearch from \"components/common/Input/LocationSearch\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport Currency from \"../common/Currency\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype ReviewReoInformationProps = {\r\n isEdit: boolean;\r\n reoData: BorrowerReoStore.ReoProperty;\r\n setReoValid: () => any;\r\n disabled: boolean;\r\n}\r\n & BorrowerReoStore.BorrowerReoState\r\n & typeof ReviewApplicationActions.reviewApplicationActionCreators\r\n & typeof BorrowerReoActions.BorrowerReoActionCreators\r\n & typeof TaskMenuCreators;\r\n\r\nconst ReviewReoInformation = (props: ReviewReoInformationProps) => {\r\n const [zipFormat, setZipFormat] = React.useState(\"#########\");\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n React.useEffect(() => {\r\n if (props.reoData?.zip &&\r\n props.reoData?.zip?.length > 5) {\r\n setZipFormat(\"#####-####\");\r\n return;\r\n }\r\n setZipFormat(\"#########\");\r\n }, [props.reoData.zip]);\r\n\r\n const setAddress = (streetValue: string, cityValue: string, stateValue: any, zipValue: any, id: string) => {\r\n props.updateReoAddressField(streetValue, cityValue, stateValue, zipValue, id);\r\n };\r\n\r\n const returnBorrowerTypeEnum = (param: any) => {\r\n switch (param) {\r\n case BorrowerTypeEnum.CoBorrower:\r\n return 'Co-Borrower';\r\n default:\r\n return param;\r\n }\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n ) => {\r\n props.updateReoInformationField(e.target.value, \"occupancyType\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n noArrow={false}\r\n dropdownclass={styles.select}\r\n readOnly={props.isEdit}\r\n className={styles.selectDdl}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.occupancyType || \"\")}>\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n : \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n ) => {\r\n props.updateReoInformationField(e.target.value, \"owner\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n noArrow={false}\r\n dropdownclass={styles.select}\r\n readOnly={props.isEdit}\r\n className={styles.selectDdl}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.owner || \"\")}\r\n >\r\n \r\n {Object.keys(BorrowerTypeEnum).map(key => (\r\n \r\n ))}\r\n \r\n
    \r\n : }\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n ) => {\r\n if (e.target.value !== \"Multi-Unit\") {\r\n props.reoData.noOfUnits = 0;\r\n }\r\n props.updateReoInformationField(e.target.value, \"propertyType\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.propertyType || \"\")}\r\n noArrow={false}\r\n invalidclass={styles.invalidInput}\r\n dropdownclass={styles.select}\r\n readOnly={props.isEdit}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n : \r\n }\r\n\r\n
    \r\n\r\n {props.reoData.propertyType === \"Multi-Unit\" &&\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updateReoInformationField(Number(values.value), \"noOfUnits\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.noOfUnits ?? 0)} />\r\n
    \r\n : \r\n }\r\n
    \r\n }\r\n\r\n {props.reoData.willContinueToOwnPropertyAfterTransaction &&\r\n <>\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n {\r\n setAddress(street, city, state, zip, props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n />\r\n
    \r\n :\r\n \r\n }\r\n
    \r\n\r\n
    \r\n \r\n {\r\n props.updateReoInformationField(e.target.value, \"city\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n value={props.reoData.city || \"\"}\r\n minLength=\"2\"\r\n maxLength=\"20\"\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.city || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n ) => {\r\n props.updateReoInformationField(e.target.value, \"state\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n value={props.reoData.state || \"\"}\r\n minLength=\"2\"\r\n maxLength=\"2\"\r\n readOnly={props.isEdit} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.state || \"\")}/>\r\n
    \r\n\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updateReoInformationField(values.value, \"zip\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n className={styles.numberFormat}\r\n readOnly={props.isEdit}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.zip ?? \"\")}/>\r\n
    \r\n : \r\n }\r\n
    \r\n \r\n }\r\n\r\n {props.reoData.willContinueToOwnPropertyAfterTransaction &&\r\n
    \r\n \r\n {!props.isEdit ?\r\n
    \r\n\r\n {\r\n props.updateReoInformationField(values.value, \"marketValue\", props.reoData.id);\r\n props.setReoValid();\r\n }}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.reoData.marketValue ?? \"\")}/>\r\n
    \r\n : \r\n }\r\n
    \r\n }\r\n
    \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState, ownProps: {\r\n isEdit: boolean,\r\n reoData: BorrowerReoStore.ReoProperty, setReoValid: (isValid: boolean) => any,\r\n isLoanCompleted: boolean\r\n}): any => {\r\n return state.borrowerReo ?\r\n {\r\n isEdit: ownProps.isEdit,\r\n reoData: ownProps.reoData,\r\n setReoValid: ownProps.setReoValid,\r\n disabled: ownProps.isLoanCompleted,\r\n ...state.borrowerReo\r\n } : state;\r\n}\r\n\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateReoInformationField: (value: any, field: string, id: string) => {\r\n dispatch(BorrowerReoActions.BorrowerReoActionCreators.updateReoInformationField(value, field, id));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n },\r\n updateReoAddressField: (streetValue: string, cityValue: string, stateValue: any, zipValue: any, id: string) => {\r\n dispatch(BorrowerReoActions.BorrowerReoActionCreators.updateReoAddressField(streetValue, cityValue, stateValue, zipValue, id));\r\n dispatch(TaskMenuCreators.setLoanIsDirty(true));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReviewReoInformation as any);","import { ResponseDto } from \"common/models/ResponseDto\";\r\nimport { DocumentSectionDto } from \"components/documents/models/DocumentSectionDto\";\r\nimport { DocumentRequiredViewModel } from \"components/documents/models/DocumentRequiredViewModel\";\r\nimport { AddSectionDto } from \"components/documents/models/AddSectionDto\";\r\nimport { RemoveSectionDto } from \"components/documents/models/RemoveSectionDto\";\r\nimport { DocumentDataDto } from \"components/documents/models/DocumentDataDto\";\r\nimport { UpdateDocumentStatusDto } from \"components/documents/models/UpdateDocumentStatusDto\";\r\nimport { UploadDocumentsDto } from \"components/documents/models/UploadDocumentsDto\";\r\nimport { get, post, postForm, getBlob } from \"../common/dataFetch\";\r\n\r\nexport const getSectionsByLoanguid = (loanGuid: string) => {\r\n return get>(\r\n `api/Document/GetSectionsForLoanGuid?loanGuid=${loanGuid}`\r\n );\r\n};\r\n\r\nexport const getDocumentContents = (loanGuid: string, documentId: number) => {\r\n return get>(\r\n `api/Document/GetDocumentContents?loanGuid=${loanGuid}&documentId=${documentId}`\r\n );\r\n};\r\n\r\nexport const getSectionOptions = () => {\r\n return get>(`api/Document/GetDropdownAsync`);\r\n};\r\n\r\nexport const generateCreditLoxLetterPdf = (loanGuid: string) => {\r\n return getBlob(`api/Document/ReadCreditLoxDocumentAsync?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const generateGiftLetterPdf = (loanGuid: string) => {\r\n return getBlob(`api/Document/GenerateGiftLetterPdf?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const addNewSection = (dto: AddSectionDto) => {\r\n return post>(\"api/Document/AddSectionToLoan\", dto);\r\n};\r\n\r\nexport const removeSection = (dto: RemoveSectionDto) => {\r\n return post>(\"api/Document/RemoveSectionFromLoan\", dto);\r\n};\r\n\r\nexport const updateDocumentStatus = (dto: UpdateDocumentStatusDto) => {\r\n return post>(\"api/Document/UpdateDocumentStatus\", dto);\r\n};\r\n\r\nexport const uploadDocuments = (dto: UploadDocumentsDto) => {\r\n return post>(\"api/Document/UploadDocuments\", dto);\r\n};\r\n\r\nexport const uploadAttachment = (loanGuid: string, sectionId: number, formData?: any) => {\r\n return postForm(`api/Document/UploadDocuments?loanGuid=${loanGuid}§ionId=${sectionId}`, formData);\r\n}\r\n\r\nexport const addRequiredDocuments = (loanGuid: string, interimLoanStagingId: number, isLoanFromEncompassFlag?: boolean) => {\r\n return post>(\r\n `api/Document/AddRequiredDocumentationToLoanAsync?interimLoanStagingId=${interimLoanStagingId}&isLoanFromEncompassFlag=${isLoanFromEncompassFlag}`, loanGuid\r\n );\r\n};\r\n\r\nexport const deleteAttachment = (loanGuid: string, sectionId: number, documentDto: any) => {\r\n return post(`api/Document/DeleteAsync?loanGuid=${loanGuid}§ionId=${sectionId}`, documentDto);\r\n}\r\nexport const SendLeadCompletionNotificationToLoanOfficer = (loanGuid: string) => {\r\n return get(`api/Document/SendLeadCompletionNotificationToLoanOfficer?loanGuid=${loanGuid}`);\r\n};","import { post, get, getBlob } from \"../common/dataFetch\";\r\nimport { SystematicLetter } from \"../store/systematicLetterStore\";\r\n\r\nexport const getSystematicLetterData = (loanGuid: string) => {\r\n return get(`SystematicLetter/ReadEncompassLoanByGuidAsync?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const generateSystematicInvoicePdf = (interimLoanStagingId: number) => {\r\n return getBlob(`SystematicLetter/GenerateSystematicInvoicePdf?interimLoanStagingId=${interimLoanStagingId}`);\r\n};\r\n\r\nexport const updatePreQualInitiateStatus = (loanGuid: string) => {\r\n return post(`SystematicLetter/UpdatePreQualInitiateStatus?loanGuid=${loanGuid}`,null);\r\n};","import { AppThunkAction } from '../store/index';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction } from '../store/reviewApplicationStore';\r\n\r\nconst setReviewScreenValidation = (validationError: any, field: string, section: string): KnownAction => {\r\n return { type: ActionTypes.SetReviewScreenValidation, validationError, field, section };\r\n}\r\n\r\nexport const reviewApplicationActionCreators = {\r\n //setReviewScreenValidation: (error: any, field: string, section: string): AppThunkAction => (dispatch) => {\r\n // dispatch(setReviewScreenValidation(error, field, section));\r\n //}\r\n submitCheckFlag: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SubmitCheckFlag, submitCheckFlag: value });\r\n },\r\n setLoanFromEncompassMessageFlag: (value: boolean): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetLoanFromEncompassMessageFlag, loanFromEncompassMessageFlag: value });\r\n },\r\n}","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport * as AccountCreationActions from \"../../actions/accountCreationActions\";\r\nimport * as EmploymentInformationActions from \"../../actions/employmentInformationActions\";\r\nimport * as PropertyInformationActions from \"../../actions/propertyInformationActions\";\r\nimport * as AditionalIncomeActions from \"../../actions/additionalIncomeActions\";\r\nimport * as AccountCreationStore from \"../../store/accountCreationStore\";\r\nimport * as EmploymentInformationStore from \"../../store/employmentInformationStore\";\r\nimport * as PropertyInformationStore from \"../../store/propertyInformationStore\";\r\nimport * as AdditionalIncomeStore from \"../../store/additionalIncomeStore\";\r\nimport { ApplicationState } from '../../store/index';\r\nimport styles from \"./reviewApplication.module.scss\";\r\nimport ReviewBorrowerInformation from \"./ReviewBorrowerInformation\";\r\nimport ReviewAddressInformation from \"./ReviewAddressInformation\";\r\nimport ReviewEmploymentInformation from \"./ReviewEmploymentInformation\";\r\nimport ReviewAdditionalIncome from \"./ReviewAdditionalIncome\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport ReviewPropertyInformation from \"./ReviewPropertyInformation\";\r\nimport ReviewReoInformation from \"./ReviewReoInformation\";\r\nimport * as Property from '../../services/propertyInformationService';\r\nimport * as ReoService from '../../services/borrowerReoService';\r\nimport * as AdditionalIncomeService from '../../services/additionalIncomeService';\r\nimport * as EmploymentInformationService from '../../services/employmentInformationService';\r\nimport * as AccountCreationService from '../../services/accountCreationService';\r\nimport { addRequiredDocuments, SendLeadCompletionNotificationToLoanOfficer } from \"services/documentService\";\r\nimport * as BorrowerReoActions from \"../../actions/borrowerReoActions\";\r\nimport * as BorrowerReoStore from \"../../store/borrowerReoStore\";\r\nimport coBorrower from \"../../assets/infographics/reviewScreen/coBorrower.png\";\r\nimport realEstate from \"../../assets/infographics/reviewScreen/realEstate.png\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { useHistory } from \"react-router\";\r\nimport { SubTaskItem, TaskStatusId, TaskItem } from \"../common/progressTracker/TaskStatus\";\r\nimport * as systematicLetterService from \"../../services/systematicLetterService\";\r\nimport { loanActionCreators } from \"../../actions/loanActions\";\r\nimport { LoanSummaryDto } from \"../../store/taskMenuStore\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport { loanState } from \"../../store/loanStore\";\r\nimport { reviewApplicationActionCreators } from \"../../actions/reviewApplicationActions\";\r\nimport * as loanService from \"../../services/loanSevice\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype ReviewApplicationProps = {\r\n loanGuid: string,\r\n interimLoanStagingId: number;\r\n borrowerInformation: AccountCreationStore.Borrower;\r\n coborrowerInformation: AccountCreationStore.Borrower;\r\n borrowerEmploymentInformation: EmploymentInformationStore.Borrower;\r\n coborrowerEmploymentInformation: EmploymentInformationStore.Borrower;\r\n additionalIncomeList: AdditionalIncomeStore.AdditionaIIncome;\r\n validation: any;\r\n section: any;\r\n loanPurpose: any;\r\n borrowerPropertyInformation: PropertyInformationStore.PropertyInformationState;\r\n reoInformation: BorrowerReoStore.BorrowerReoState;\r\n hasCoBorrower: boolean;\r\n isLoanComplated: boolean;\r\n loanSummary: LoanSummaryDto;\r\n userType: any;\r\n}\r\n & AccountCreationStore.AccountCreationState\r\n & PropertyInformationStore.PropertyInformationState\r\n & AdditionalIncomeStore.AdditionalIncomeState\r\n & BorrowerReoStore.BorrowerReoState\r\n & typeof AccountCreationActions.accountCreationActionCreators\r\n & typeof EmploymentInformationActions.employmentInformationActionCreators\r\n & typeof AditionalIncomeActions.AdditionalIncomeActionCreators\r\n & typeof PropertyInformationActions.propertyInformationActionCreators\r\n & typeof BorrowerReoActions.BorrowerReoActionCreators\r\n & typeof TaskMenuCreators\r\n & typeof loanActionCreators\r\n & typeof loanUpdateResponseActionCreators\r\n & typeof reviewApplicationActionCreators\r\n\r\nconst ReviewApplication = (props: ReviewApplicationProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const history = useHistory();\r\n\r\n //loading\r\n const [isLoading, setLoading] = React.useState(false);\r\n\r\n //accordians open close\r\n const [isBorrowerExpand, setBorrowerExpand] = React.useState(false);\r\n const [isCoBorrowerExpand, setCoBorrowerExpand] = React.useState(false);\r\n const [isReoExpand, setReoExpand] = React.useState(false);\r\n const [isPropertyExpand, setPropertyExpand] = React.useState(false);\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n\r\n //set initial values in state\r\n const [initialBorrower, setBorrowerInfo] = React.useState({} as AccountCreationStore.Borrower);\r\n const [initialCoBorrower, setCoBorrowerInfo] = React.useState({} as AccountCreationStore.Borrower);\r\n\r\n //set validation on each section according to borrower type \r\n const [propertyAddressValid, setPropertyAddressValid] = React.useState(false);\r\n const [reoValid, setReoValid] = React.useState(false);\r\n const [borrowerInformationValid, setBorrowerInformationValid] = React.useState({ isBorrowerValid: false, isCoBorrowerValid: false });\r\n const [addressInformationValid, setAddressInformationValid] = React.useState({ isBorrowerValid: false, isCoBorrowerValid: false });\r\n const [employmentInformationValid, setEmploymentInformationValid] = React.useState({ isBorrowerValid: false, isCoBorrowerValid: false });\r\n const [additionalInformationValid, setAdditionalInformationValid] = React.useState({ isBorrowerValid: false, isCoBorrowerValid: false });\r\n const { isLoanFromEncompassFlag } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n const setValid = (isValid: any, borrowerType: any) => {\r\n if (borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower) {\r\n setBorrowerInformationValid({ isBorrowerValid: isValid, isCoBorrowerValid: borrowerInformationValid.isCoBorrowerValid });\r\n } else {\r\n setBorrowerInformationValid({ isBorrowerValid: borrowerInformationValid.isBorrowerValid, isCoBorrowerValid: isValid });\r\n }\r\n }\r\n\r\n const setReoInformationValid = () => {\r\n let isValid = true;\r\n props.reoInformation?.reoProperties.forEach(x => {\r\n if (isValid) {\r\n isValid =\r\n !isNullOrWhiteSpace(x.occupancyType) &&\r\n !isNullOrWhiteSpace(x.owner) &&\r\n !isNullOrWhiteSpace(x.propertyType);\r\n\r\n if (x.willContinueToOwnPropertyAfterTransaction) {\r\n isValid = isValid ?\r\n !isNullOrWhiteSpace(x.street) &&\r\n !isNullOrWhiteSpace(x.city) &&\r\n !isNullOrWhiteSpace(x.state) &&\r\n !isNullOrWhiteSpace(x.zip) &&\r\n !(x.zip.length < 5) &&\r\n !isNullOrWhiteSpace(x.marketValue)\r\n : isValid;\r\n }\r\n\r\n if (x.propertyType === \"Multi-Unit\") {\r\n isValid = isValid ?\r\n x.noOfUnits !== 0\r\n : isValid;\r\n }\r\n }\r\n });\r\n setReoValid(isValid);\r\n }\r\n\r\n const setAddressValid = (borrowerType: any) => {\r\n let borrowerInfo = borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n props.borrowerInformation : props.coborrowerInformation;\r\n let isValid =\r\n !isNullOrWhiteSpace(borrowerInfo?.currentAddress?.addressStreetLine1) &&\r\n !isNullOrWhiteSpace(borrowerInfo?.currentAddress?.addressCity) &&\r\n !isNullOrWhiteSpace(borrowerInfo?.currentAddress?.addressState) &&\r\n !isNullOrWhiteSpace(borrowerInfo?.currentAddress?.addressPostalCode);\r\n\r\n if ((borrowerInfo?.currentAddress?.addressPostalCode && borrowerInfo?.currentAddress?.addressPostalCode.length < 5)) {\r\n isValid = false;\r\n }\r\n\r\n let validList = [];\r\n if (isValid && borrowerInfo?.addresses && borrowerInfo?.addresses?.length > 0) {\r\n validList = borrowerInfo?.addresses.filter(x =>\r\n !isNullOrWhiteSpace(x.addressStreetLine1) &&\r\n !isNullOrWhiteSpace(x.addressCity) &&\r\n !isNullOrWhiteSpace(x.addressState) &&\r\n !isNullOrWhiteSpace(x.addressPostalCode) &&\r\n !(x.addressPostalCode && x.addressPostalCode.length < 5));\r\n\r\n if (borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower) {\r\n setAddressInformationValid({\r\n isBorrowerValid: validList.length < borrowerInfo?.addresses?.length ? false : true,\r\n isCoBorrowerValid: addressInformationValid.isCoBorrowerValid\r\n });\r\n } else {\r\n setAddressInformationValid({\r\n isBorrowerValid: addressInformationValid.isBorrowerValid,\r\n isCoBorrowerValid: validList.length < borrowerInfo?.addresses?.length ? false : true\r\n });\r\n }\r\n } else {\r\n if (borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower) {\r\n setAddressInformationValid({\r\n isBorrowerValid: isValid, isCoBorrowerValid: addressInformationValid.isCoBorrowerValid\r\n });\r\n } else {\r\n setAddressInformationValid({\r\n isBorrowerValid: addressInformationValid.isBorrowerValid, isCoBorrowerValid: isValid\r\n });\r\n }\r\n }\r\n }\r\n\r\n const setEmploymentValid = (isValid: any, borrowerType: any) => {\r\n if (borrowerType === EmploymentInformationStore.BorrowerType.PrimaryBorrower) {\r\n setEmploymentInformationValid({ isBorrowerValid: isValid, isCoBorrowerValid: employmentInformationValid.isCoBorrowerValid });\r\n } else {\r\n setEmploymentInformationValid({ isBorrowerValid: employmentInformationValid.isBorrowerValid, isCoBorrowerValid: isValid });\r\n }\r\n }\r\n\r\n const setAdditionalIncomeValid = (isValid: any, borrowerType: any) => {\r\n let owner = borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower ?\r\n BorrowerTypeEnum.Borrower : BorrowerTypeEnum.CoBorrower;\r\n let totalIncomeList = props.additionalIncomeList.otherIncomeSourceDetails.filter(x => x.owner === owner);\r\n let validIncomeList = totalIncomeList.filter(x =>\r\n !isNullOrWhiteSpace(x.monthlyAmount) &&\r\n !isNullOrWhiteSpace(x.owner));\r\n\r\n if (borrowerType === AccountCreationStore.BorrowerType.PrimaryBorrower) {\r\n setAdditionalInformationValid({\r\n isBorrowerValid: !isValid ? isValid : (validIncomeList.length < totalIncomeList.length ? false : true),\r\n isCoBorrowerValid: additionalInformationValid.isCoBorrowerValid\r\n });\r\n } else {\r\n setAdditionalInformationValid({\r\n isBorrowerValid: additionalInformationValid.isBorrowerValid,\r\n isCoBorrowerValid: !isValid ? isValid : (validIncomeList.length < totalIncomeList.length ? false : true),\r\n });\r\n }\r\n }\r\n\r\n //set the editing section in state\r\n const [editSection, setEditSection] = React.useState({\r\n borrowerGeneralInformation: false,\r\n borrowerAddressInformation: false,\r\n borrowerEmploymentInformation: false,\r\n borrowerAdditionalIncomeInformation: false,\r\n coBorrowerGeneralInformation: false,\r\n coBorrowerAddressInformation: false,\r\n coBorrowerEmploymentInformation: false,\r\n coBorrowerAdditionalIncomeInformation: false,\r\n reoInformation: false,\r\n propertyInformation: false\r\n });\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n //get data from apis\r\n React.useEffect(() => {\r\n if (props.loanGuid && props.interimLoanStagingId !== undefined && props.interimLoanStagingId > 0) {\r\n //borrower info\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n\r\n if (props.hasCoBorrower) {\r\n props.getBorrowerInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n props.getEmploymentInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n }\r\n\r\n //employment\r\n props.getEmploymentInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n\r\n\r\n //additional income\r\n props.getAdditionalIncomeInformation(props.interimLoanStagingId);\r\n\r\n //property info\r\n props.getPropertyInformation(props.interimLoanStagingId);\r\n\r\n //REO info\r\n props.getBorrowerReo(props.interimLoanStagingId);\r\n\r\n //get initial loan information\r\n props.borrowerLoanSummary(props.loanGuid, props.interimLoanStagingId);\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n //assign initial borrower and co borrower values\r\n if (props.borrowerInformation && props.borrowerInformation?.firstName) {\r\n if (Object.keys(initialBorrower).length === 0) {\r\n setBorrowerInfo(props.borrowerInformation);\r\n }\r\n }\r\n\r\n if (props.coborrowerInformation && props.coborrowerInformation?.firstName) {\r\n if (Object.keys(initialCoBorrower).length === 0) {\r\n setCoBorrowerInfo(props.coborrowerInformation);\r\n }\r\n }\r\n }, [props.borrowerInformation, props.coborrowerInformation]);\r\n\r\n //discard changes\r\n const discardChanges = async (borrowerType: string, section: string) => {\r\n setLoading(true);\r\n props.setLoanIsDirty(false);\r\n switch (borrowerType) {\r\n case 'Borrower':\r\n switch (section) {\r\n case 'GeneralInformation':\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n setEditSection({ ...editSection, borrowerGeneralInformation: false });\r\n setLoading(false);\r\n return;\r\n case 'AddressInformation':\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n setEditSection({ ...editSection, borrowerAddressInformation: false });\r\n setLoading(false);\r\n return;\r\n case 'EmploymentInformation':\r\n props.getEmploymentInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId)\r\n setEditSection({ ...editSection, borrowerEmploymentInformation: false });\r\n setLoading(false);\r\n return;\r\n case 'AdditionalIncomeInformation':\r\n props.getAdditionalIncomeInformation(props.interimLoanStagingId);\r\n setEditSection({ ...editSection, borrowerAdditionalIncomeInformation: false });\r\n setLoading(false);\r\n return;\r\n }\r\n case 'CoBorrower':\r\n switch (section) {\r\n case 'GeneralInformation':\r\n props.getBorrowerInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n setEditSection({ ...editSection, coBorrowerGeneralInformation: false });\r\n setLoading(false);\r\n return;\r\n case 'AddressInformation':\r\n props.getBorrowerInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n setEditSection({ ...editSection, coBorrowerAddressInformation: false });\r\n setLoading(false);\r\n return;\r\n case 'EmploymentInformation':\r\n props.getEmploymentInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId)\r\n setEditSection({ ...editSection, coBorrowerEmploymentInformation: false });\r\n setLoading(false);\r\n return;\r\n case 'AdditionalIncomeInformation':\r\n props.getAdditionalIncomeInformation(props.interimLoanStagingId);\r\n setEditSection({ ...editSection, coBorrowerAdditionalIncomeInformation: false });\r\n setLoading(false);\r\n return;\r\n }\r\n case 'REO':\r\n await props.getBorrowerReo(props.interimLoanStagingId);\r\n setEditSection({ ...editSection, reoInformation: false });\r\n setLoading(false);\r\n return;\r\n case 'PropertyInformation':\r\n props.getPropertyInformation(props.interimLoanStagingId);\r\n setEditSection({ ...editSection, propertyInformation: false });\r\n setLoading(false);\r\n return;\r\n }\r\n }\r\n\r\n //save changes\r\n const saveInformation = async (borrowerType: string, section: string) => {\r\n if (props.isLoanComplated) {\r\n return;\r\n }\r\n setLoading(true);\r\n props.setLoanIsDirty(false);\r\n switch (borrowerType) {\r\n case 'Borrower':\r\n switch (section) {\r\n case 'GeneralInformation':\r\n if (props.borrowerInformation) {\r\n props.borrowerInformation.loanGuid = props.loanGuid;\r\n if (props.borrowerInformation.addresses && props.borrowerInformation.currentAddress) {\r\n props.borrowerInformation.addresses?.push(props.borrowerInformation.currentAddress);\r\n }\r\n let borrowerGeneralResponse = await AccountCreationService.create(props.borrowerInformation, props.userType);\r\n if (borrowerGeneralResponse.ok) {\r\n let result = borrowerGeneralResponse.parsedBody as LoanUpdateResponseState;\r\n setLoading(false);\r\n if (result.isEncompassDown) {\r\n props.setIsEncompassDown(true);\r\n goToDashboard();\r\n }\r\n else {\r\n props.setIsEncompassDown(false);\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n }\r\n }\r\n }\r\n setEditSection({ ...editSection, borrowerGeneralInformation: false });\r\n return;\r\n case 'AddressInformation':\r\n props.borrowerInformation.loanGuid = props.loanGuid;\r\n if (props.borrowerInformation.addresses && props.borrowerInformation.currentAddress) {\r\n props.borrowerInformation.addresses?.push(props.borrowerInformation.currentAddress);\r\n }\r\n let borrowerResponse = await AccountCreationService.create(props.borrowerInformation, props.userType);\r\n if (borrowerResponse.ok) {\r\n let result = borrowerResponse.parsedBody as LoanUpdateResponseState;\r\n setLoading(false);\r\n if (result.isEncompassDown) {\r\n props.setIsEncompassDown(true);\r\n goToDashboard();\r\n }\r\n else {\r\n props.setIsEncompassDown(false);\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n }\r\n }\r\n setEditSection({ ...editSection, borrowerAddressInformation: false });\r\n return;\r\n case 'EmploymentInformation':\r\n props.borrowerEmploymentInformation.loanGuid = props.loanGuid;\r\n props.coborrowerEmploymentInformation.borrowerType = EmploymentInformationStore.BorrowerType.PrimaryBorrower;\r\n let empResponse = await EmploymentInformationService.updateEmploymentInformation(props.borrowerEmploymentInformation);\r\n if (empResponse.ok) {\r\n let result = empResponse.parsedBody as boolean;\r\n EmploymentInformationService.updateEmploymentQuestionnaireToInterimLoanStaging(props.borrowerEmploymentInformation);\r\n\r\n setLoading(false);\r\n if (result) {\r\n props.setIsEncompassDown(false);\r\n props.getEmploymentInformation(BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n }\r\n }\r\n setEditSection({ ...editSection, borrowerEmploymentInformation: false });\r\n return;\r\n case 'AdditionalIncomeInformation':\r\n let borrowerIncome = props.additionalIncomeList.otherIncomeSourceDetails.filter(x => x.owner === BorrowerTypeEnum.Borrower);\r\n let borrowerincomeResponse = await AdditionalIncomeService.upsertAsync(borrowerIncome, BorrowerTypeEnum.Borrower, props.interimLoanStagingId);\r\n\r\n if (borrowerincomeResponse.ok) {\r\n let result = borrowerincomeResponse.parsedBody as boolean;\r\n setLoading(false);\r\n if (result) {\r\n props.setIsEncompassDown(false);\r\n props.getAdditionalIncomeInformation(props.interimLoanStagingId);\r\n }\r\n }\r\n setEditSection({ ...editSection, borrowerAdditionalIncomeInformation: false });\r\n return;\r\n }\r\n case 'CoBorrower':\r\n switch (section) {\r\n case 'GeneralInformation':\r\n if (props.coborrowerInformation) {\r\n props.coborrowerInformation.loanGuid = props.loanGuid;\r\n if (props.coborrowerInformation.addresses && props.coborrowerInformation.currentAddress) {\r\n props.coborrowerInformation.addresses.push(props.coborrowerInformation.currentAddress);\r\n }\r\n let coBorrowerGeneralResponse = await AccountCreationService.create(props.coborrowerInformation, props.userType);\r\n if (coBorrowerGeneralResponse.ok) {\r\n let result = coBorrowerGeneralResponse.parsedBody as LoanUpdateResponseState;\r\n setLoading(false);\r\n if (result.isEncompassDown) {\r\n props.setIsEncompassDown(true);\r\n goToDashboard();\r\n }\r\n else {\r\n props.setIsEncompassDown(false);\r\n props.getBorrowerInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n }\r\n }\r\n }\r\n setEditSection({ ...editSection, coBorrowerGeneralInformation: false });\r\n return;\r\n case 'AddressInformation':\r\n props.coborrowerInformation.loanGuid = props.loanGuid;\r\n if (props.coborrowerInformation.addresses && props.coborrowerInformation.currentAddress) {\r\n props.coborrowerInformation.addresses?.push(props.coborrowerInformation.currentAddress);\r\n }\r\n let coBorrowerResponse = await AccountCreationService.create(props.coborrowerInformation, props.userType);\r\n if (coBorrowerResponse.ok) {\r\n let result = coBorrowerResponse.parsedBody as LoanUpdateResponseState;\r\n setLoading(false);\r\n if (result.isEncompassDown) {\r\n props.setIsEncompassDown(true);\r\n goToDashboard();\r\n }\r\n else {\r\n props.setIsEncompassDown(false);\r\n props.getBorrowerInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n }\r\n }\r\n\r\n setEditSection({ ...editSection, coBorrowerAddressInformation: false });\r\n return;\r\n case 'EmploymentInformation':\r\n props.coborrowerEmploymentInformation.loanGuid = props.loanGuid;\r\n props.coborrowerEmploymentInformation.borrowerType = EmploymentInformationStore.BorrowerType.CoBorrower;\r\n let empResponse = await EmploymentInformationService.updateEmploymentInformation(props.coborrowerEmploymentInformation);\r\n if (empResponse.ok) {\r\n\r\n let result = empResponse.parsedBody as boolean;\r\n\r\n EmploymentInformationService.updateEmploymentQuestionnaireToInterimLoanStaging(props.coborrowerEmploymentInformation);\r\n setLoading(false);\r\n\r\n if (result) {\r\n props.setIsEncompassDown(false);\r\n props.getEmploymentInformation(BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n }\r\n }\r\n\r\n setEditSection({ ...editSection, coBorrowerEmploymentInformation: false });\r\n return;\r\n case 'AdditionalIncomeInformation':\r\n let borrowerIncome = props.additionalIncomeList.otherIncomeSourceDetails.filter(x => x.owner === BorrowerTypeEnum.CoBorrower);\r\n let incomeResponse = await AdditionalIncomeService.upsertAsync(borrowerIncome, BorrowerTypeEnum.CoBorrower, props.interimLoanStagingId);\r\n\r\n if (incomeResponse.ok) {\r\n let result = incomeResponse.parsedBody as boolean;\r\n setLoading(false);\r\n if (result) {\r\n props.setIsEncompassDown(false);\r\n props.getAdditionalIncomeInformation(props.interimLoanStagingId);\r\n }\r\n }\r\n setEditSection({ ...editSection, coBorrowerAdditionalIncomeInformation: false });\r\n return;\r\n }\r\n case 'REO':\r\n let reoResponse = await ReoService.update(props.reoInformation.reoProperties, true, props.loanGuid, props.interimLoanStagingId);\r\n if (reoResponse.ok) {\r\n let result = reoResponse.parsedBody as boolean;\r\n setLoading(false);\r\n if (result) {\r\n props.setIsEncompassDown(false);\r\n props.getBorrowerReo(props.interimLoanStagingId);\r\n }\r\n }\r\n setEditSection({ ...editSection, reoInformation: false });\r\n return;\r\n case 'PropertyInformation':\r\n let propertyResponse = await Property.save(props.borrowerPropertyInformation, props.loanPurpose, props.loanGuid);\r\n if (propertyResponse.ok) {\r\n let result = propertyResponse.parsedBody;\r\n setLoading(false);\r\n if (result) {\r\n props.setIsEncompassDown(false);\r\n props.getPropertyInformation(props.interimLoanStagingId);\r\n }\r\n }\r\n setEditSection({ ...editSection, propertyInformation: false });\r\n return;\r\n }\r\n }\r\n\r\n const goToDashboard = () => {\r\n history.push(\"/dashboard\");\r\n navigation.SetBackOnClick(() => {\r\n history.push({ pathname: \"/loan-view\" });\r\n });\r\n }\r\n\r\n const updatePreQualLetterStatus = async () => {\r\n if (!props.isLoanComplated) {\r\n let response = await systematicLetterService.updatePreQualInitiateStatus(props.loanGuid);\r\n if (response.ok) {\r\n goToDashboard();\r\n }\r\n }\r\n else {\r\n goToDashboard();\r\n }\r\n }\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.RenameNavigation(\"Submit\", \"Back\");\r\n navigation.ShowContinue(() => { }, true);\r\n navigation.SetBackOnClick(() => {\r\n history.push(\"/contact-preference\");\r\n props.setLoanIsDirty(false);\r\n });\r\n });\r\n\r\n /*const addLoanInBatch = async () => {\r\n if (!props.isLoanComplated) {\r\n let response = await loanService.addLoanInBatch(props.interimLoanStagingId);\r\n if (response.ok) {\r\n goToDashboard();\r\n }\r\n }\r\n else {\r\n goToDashboard();\r\n }\r\n }*/\r\n\r\n navigation.ShowContinue(() => {\r\n if (isLoanFromEncompassFlag && !props.isLoanComplated) {\r\n props.setLoanFromEncompassMessageFlag(true);\r\n }\r\n if (!props.isLoanComplated && !isLoanFromEncompassFlag) {\r\n props.submitCheckFlag(true);\r\n SendLeadCompletionNotificationToLoanOfficer(props.loanGuid).then((emailResponse: any) => {\r\n if (emailResponse.parsedBody) {\r\n console.log(`SendLeadCompletionNotificationToLoanOfficer send for loanGuid: ${props.loanGuid} and response: ${emailResponse.parsedBody}`);\r\n };\r\n })\r\n }\r\n // addLoanInBatch();\r\n if (props.isLoanComplated) {\r\n goToDashboard();\r\n }\r\n props.setLoanIsDirty(false);\r\n props.updateNavigationStatus(TaskItem.PreQualReviewScreen, SubTaskItem.PreQualReviewScreen, TaskStatusId.Completed, TaskStatusId.Completed, props.loanGuid);\r\n addRequiredDocuments(props.loanGuid, props.interimLoanStagingId, isLoanFromEncompassFlag);\r\n props.setIsLoanCompleted(true);\r\n props.setDocumentPopupFlag(true);\r\n if (props.loanSummary.loanPurpose === \"Purchase\") {\r\n updatePreQualLetterStatus();\r\n } else {\r\n goToDashboard();\r\n }\r\n }, (editSection.borrowerAdditionalIncomeInformation ||\r\n editSection.borrowerAddressInformation ||\r\n editSection.borrowerEmploymentInformation ||\r\n editSection.borrowerGeneralInformation ||\r\n editSection.coBorrowerAdditionalIncomeInformation ||\r\n editSection.coBorrowerAddressInformation ||\r\n editSection.coBorrowerEmploymentInformation ||\r\n editSection.coBorrowerGeneralInformation ||\r\n editSection.propertyInformation ||\r\n editSection.reoInformation ||\r\n isLoading || isEncompassDown));\r\n\r\n return <>\r\n
    \r\n
    \r\n setBorrowerExpand(!isBorrowerExpand)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('Borrower Information')}\r\n>\r\n \r\n Borrower Information\r\n stopSpeech()} onMouseOver={() => textToSpeech('press button to expand')}\r\n>\r\n \r\n \r\n \r\n {isBorrowerExpand &&\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('General Information')}>General Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.borrowerGeneralInformation && isBorrowerExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, borrowerGeneralInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}\r\n>\r\n }\r\n {editSection.borrowerGeneralInformation && isBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.Borrower, \"GeneralInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}>\r\n\r\n discardChanges(BorrowerTypeEnum.Borrower, \"GeneralInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}>\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Address Information')}>Address Information

    \r\n\r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.borrowerAddressInformation && isBorrowerExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, borrowerAddressInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}>\r\n }\r\n {editSection.borrowerAddressInformation && isBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.Borrower, \"AddressInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}>\r\n\r\n \r\n discardChanges(BorrowerTypeEnum.Borrower, \"AddressInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}\r\n >\r\n \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n {props.borrowerInformation.currentAddress &&\r\n \r\n }\r\n\r\n {props.borrowerInformation.addresses && props.borrowerInformation.addresses?.length > 0 &&\r\n props.borrowerInformation?.addresses?.filter(x => x.residencyType === \"Prior\").map((item, index) =>\r\n \r\n \r\n \r\n )}\r\n
    \r\n\r\n {props.borrowerEmploymentInformation &&\r\n props.borrowerEmploymentInformation?.employments.length > 0 &&\r\n props.borrowerEmploymentInformation?.currentEmploymentDoesNotApply &&\r\n (props.borrowerEmploymentInformation?.employments[0].selfEmployedIndicator !== undefined &&\r\n !props.borrowerEmploymentInformation?.employments[0].selfEmployedIndicator) &&\r\n <>\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Employment & Income Information')}>Employment & Income Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.borrowerEmploymentInformation && isBorrowerExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, borrowerEmploymentInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}>\r\n }\r\n {editSection.borrowerEmploymentInformation && isBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.Borrower, \"EmploymentInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}>\r\n\r\n \r\n discardChanges(BorrowerTypeEnum.Borrower, \"EmploymentInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}>\r\n \r\n }\r\n
    \r\n
    \r\n }\r\n\r\n {props.borrowerEmploymentInformation &&\r\n props.borrowerEmploymentInformation?.employments.length > 0 &&\r\n props.borrowerEmploymentInformation?.currentEmploymentDoesNotApply &&\r\n (props.borrowerEmploymentInformation?.employments[0].selfEmployedIndicator !== undefined &&\r\n !props.borrowerEmploymentInformation?.employments[0].selfEmployedIndicator) &&\r\n props.borrowerEmploymentInformation?.employments?.map((item, index) =>\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {props.additionalIncomeList && props.additionalIncomeList?.otherIncomeSourceDetails\r\n .filter(x => x.owner === BorrowerTypeEnum.Borrower).length > 0 &&\r\n <>
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Additional Income Information')}>Additional Income Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.borrowerAdditionalIncomeInformation && isBorrowerExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, borrowerAdditionalIncomeInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}>\r\n }\r\n {editSection.borrowerAdditionalIncomeInformation && isBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.Borrower, \"AdditionalIncomeInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button save')}>\r\n\r\n discardChanges(BorrowerTypeEnum.Borrower, \"AdditionalIncomeInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}>\r\n \r\n }\r\n
    \r\n
    \r\n \r\n }\r\n\r\n {props.additionalIncomeList && props.additionalIncomeList?.otherIncomeSourceDetails\r\n .filter(x => x.owner === BorrowerTypeEnum.Borrower).map((item, index) =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n }\r\n
    \r\n\r\n {props.borrowerInformation.printOnAdditionalBorrowerPage &&\r\n
    \r\n setCoBorrowerExpand(!isCoBorrowerExpand)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('Co-Borrower Information')}\r\n>\r\n Co-Borrower Information\r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech('press button to expand')}\r\n>\r\n \r\n \r\n \r\n {isCoBorrowerExpand &&\r\n <>{\r\n props.coborrowerInformation &&\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('General Information')}\r\n>General Information

    \r\n
    \r\n\r\n {!isLoanFromEncompassFlag && !editSection.coBorrowerGeneralInformation && isCoBorrowerExpand &&\r\n !props.isLoanComplated ?\r\n setEditSection({ ...editSection, coBorrowerGeneralInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}\r\n>\r\n }\r\n\r\n\r\n {editSection.coBorrowerGeneralInformation && isCoBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.CoBorrower, \"GeneralInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}\r\n>\r\n\r\n discardChanges(BorrowerTypeEnum.CoBorrower, \"GeneralInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}>\r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Address Information')}\r\n>Address Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.coBorrowerAddressInformation && isCoBorrowerExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, coBorrowerAddressInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}\r\n>\r\n }\r\n {editSection.coBorrowerAddressInformation && isCoBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.CoBorrower, \"AddressInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}\r\n>\r\n\r\n discardChanges(BorrowerTypeEnum.CoBorrower, \"AddressInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}\r\n>\r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n {props.coborrowerInformation.currentAddress &&\r\n \r\n }\r\n\r\n {props.coborrowerInformation.addresses && props.coborrowerInformation.addresses?.length > 0 &&\r\n props.coborrowerInformation?.addresses?.filter(x => x.residencyType === \"Prior\").map((item, index) =>\r\n \r\n \r\n \r\n )}\r\n\r\n
    \r\n\r\n\r\n {props.coborrowerEmploymentInformation &&\r\n props.coborrowerEmploymentInformation?.currentEmploymentDoesNotApply &&\r\n !props.coborrowerEmploymentInformation?.employments[0].selfEmployedIndicator &&\r\n props.coborrowerEmploymentInformation?.employments.length > 0 &&\r\n <>
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Employment & Income Information')}\r\n>Employment & Income Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.coBorrowerEmploymentInformation && isCoBorrowerExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, coBorrowerEmploymentInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}\r\n>\r\n }\r\n\r\n {editSection.coBorrowerEmploymentInformation && isCoBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.CoBorrower, \"EmploymentInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}\r\n>\r\n\r\n discardChanges(BorrowerTypeEnum.CoBorrower, \"EmploymentInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}\r\n>\r\n \r\n }\r\n\r\n
    \r\n
    \r\n \r\n }\r\n\r\n {props.coborrowerEmploymentInformation &&\r\n props.coborrowerEmploymentInformation?.employments.length > 0 &&\r\n props.coborrowerEmploymentInformation?.currentEmploymentDoesNotApply &&\r\n !props.coborrowerEmploymentInformation?.employments[0].selfEmployedIndicator &&\r\n props.coborrowerEmploymentInformation?.employments?.map((item, index) =>\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n\r\n {props.additionalIncomeList && props.additionalIncomeList?.otherIncomeSourceDetails\r\n .filter(x => x.owner === BorrowerTypeEnum.CoBorrower).length > 0 &&\r\n <>\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Additional Income Information')}\r\n>Additional Income Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.coBorrowerAdditionalIncomeInformation && isCoBorrowerExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, coBorrowerAdditionalIncomeInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}\r\n>\r\n }\r\n\r\n {editSection.coBorrowerAdditionalIncomeInformation && isCoBorrowerExpand &&\r\n <>\r\n saveInformation(BorrowerTypeEnum.CoBorrower, \"AdditionalIncomeInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}\r\n>\r\n\r\n discardChanges(BorrowerTypeEnum.CoBorrower, \"AdditionalIncomeInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}\r\n>\r\n \r\n }\r\n\r\n
    \r\n
    \r\n \r\n }\r\n\r\n {props.additionalIncomeList && props.additionalIncomeList?.otherIncomeSourceDetails\r\n .filter(x => x.owner === BorrowerTypeEnum.CoBorrower).map((item, index) =>\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n }\r\n \r\n }\r\n
    \r\n }\r\n\r\n
    \r\n setReoExpand(!isReoExpand)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('Real Estate Owned Properties')}\r\n>\r\n \r\n Real Estate Owned Properties\r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech('press button to expand')}\r\n>\r\n \r\n \r\n\r\n {isReoExpand && !props.reoInformation?.realEstateDoesNotApply &&\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('REO Information')}\r\n>REO Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.reoInformation && isReoExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, reoInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}\r\n>\r\n }\r\n {editSection.reoInformation && isReoExpand &&\r\n <>\r\n\r\n saveInformation(\"REO\", \"REO\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}\r\n>\r\n\r\n discardChanges(\"REO\", \"REO\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}\r\n>\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n {props.reoInformation &&\r\n props.reoInformation?.reoProperties.map((item, index) =>\r\n \r\n )}\r\n\r\n
    \r\n
    \r\n }\r\n\r\n {isReoExpand && props.reoInformation?.realEstateDoesNotApply &&\r\n
    stopSpeech()} onMouseOver={() => textToSpeech('No records found')}\r\n>\r\n No records found!!\r\n
    \r\n }\r\n
    \r\n\r\n
    \r\n setPropertyExpand(!isPropertyExpand)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('Potential Property')}\r\n>\r\n \r\n Potential Property\r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech('press button to expand')}\r\n>\r\n \r\n \r\n\r\n {isPropertyExpand &&\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Property Information')}\r\n>Property Information

    \r\n
    \r\n {!isLoanFromEncompassFlag && !editSection.propertyInformation && isPropertyExpand &&\r\n !props.isLoanComplated ? setEditSection({ ...editSection, propertyInformation: true }) : \"\"} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to edit')}\r\n>\r\n }\r\n {editSection.propertyInformation && isPropertyExpand &&\r\n <>\r\n saveInformation(\"PropertyInformation\", \"PropertyInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to save')}\r\n>\r\n\r\n discardChanges(\"PropertyInformation\", \"PropertyInformation\")} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech('press button to discard changes')}\r\n>\r\n \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n {isLoading &&
    \r\n
    \r\n
    }\r\n
    \r\n ;\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation, accountCreation, employmentInformation, propertyInformation, additionalIncome, borrowerReo, reviewApplication, taskMenu } = state;\r\n let borrowerInformation;\r\n let coborrowerInformation;\r\n let borrowerEmploymentInformation;\r\n let coborrowerEmploymentInformation;\r\n let borrowerPropertyInformation;\r\n let additionalIncomeList;\r\n let reoInformation;\r\n let validation;\r\n let section;\r\n let loanPurpose;\r\n let loanGuid = \"\";\r\n let hasCoBorrower;\r\n let isLoanComplated = state.loan?.isLoanCompleted;\r\n let loanSummary;\r\n\r\n if (accountInformation?.loanGuid) {\r\n loanGuid = accountInformation?.loanGuid;\r\n }\r\n\r\n if (accountCreation?.borrower) {\r\n borrowerInformation = accountCreation?.borrower;\r\n hasCoBorrower = accountCreation?.borrower?.printOnAdditionalBorrowerPage\r\n }\r\n\r\n if (accountCreation?.coBorrower) {\r\n coborrowerInformation = accountCreation?.coBorrower;\r\n }\r\n\r\n if (reviewApplication) {\r\n validation = reviewApplication?.validation;\r\n section = reviewApplication?.section;\r\n }\r\n\r\n if (employmentInformation) {\r\n borrowerEmploymentInformation = employmentInformation?.borrower;\r\n coborrowerEmploymentInformation = employmentInformation?.coBorrower;\r\n }\r\n\r\n if (additionalIncome?.data) {\r\n additionalIncomeList = additionalIncome?.data;\r\n }\r\n\r\n if (propertyInformation) {\r\n borrowerPropertyInformation = propertyInformation;\r\n loanPurpose = propertyInformation.purposeType;\r\n }\r\n\r\n if (borrowerReo) {\r\n reoInformation = borrowerReo;\r\n }\r\n\r\n if (taskMenu) {\r\n loanSummary = taskMenu.loanSummary;\r\n }\r\n\r\n const userType = state.userAccountInformation?.borrowerType;\r\n let interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n return {\r\n loanGuid,\r\n borrowerInformation,\r\n coborrowerInformation,\r\n borrowerPropertyInformation,\r\n coborrowerEmploymentInformation,\r\n borrowerEmploymentInformation,\r\n validation,\r\n additionalIncomeList,\r\n loanPurpose,\r\n section,\r\n reoInformation,\r\n hasCoBorrower,\r\n isLoanComplated,\r\n loanSummary,\r\n userType,\r\n interimLoanStagingId\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n //borrower\r\n getBorrowerInformation: (borrowerType: string, interimLoanStagingId: number) => {\r\n dispatch(AccountCreationActions.accountCreationActionCreators.getBorrowerInformation(borrowerType, interimLoanStagingId));\r\n },\r\n\r\n //additional income\r\n getAdditionalIncomeInformation: (interimLoanStagingId: number) => {\r\n dispatch(AditionalIncomeActions.AdditionalIncomeActionCreators.getAdditionalIncomeInformation(interimLoanStagingId));\r\n },\r\n\r\n //employment\r\n getEmploymentInformation: (borrowerType: string, interimLoanStagingId: number) => {\r\n dispatch(EmploymentInformationActions.employmentInformationActionCreators.getEmploymentInformation(borrowerType, interimLoanStagingId));\r\n },\r\n\r\n //property\r\n getPropertyInformation: (interimLoanStagingId: number) => {\r\n dispatch(PropertyInformationActions.propertyInformationActionCreators.getPropertyInformation(interimLoanStagingId));\r\n },\r\n\r\n //reo\r\n getBorrowerReo: (interimLoanStagingId: number) => {\r\n dispatch(BorrowerReoActions.BorrowerReoActionCreators.getBorrowerReo(interimLoanStagingId));\r\n },\r\n\r\n //set loan dirty for task menu\r\n setLoanIsDirty: (value: boolean) => {\r\n dispatch(TaskMenuCreators.setLoanIsDirty(value));\r\n },\r\n setDocumentPopupFlag: (value: boolean) => {\r\n dispatch(TaskMenuCreators.setDocumentPopupFlag(value));\r\n },\r\n updateNavigationStatus: (taskItemId: any, subTaskItemId: any, taskStatusId: any, subTaskStatusId: any, loanGuid: any) => {\r\n dispatch(TaskMenuCreators.updateNavigationStatus(taskItemId, subTaskItemId, taskStatusId, subTaskStatusId, loanGuid));\r\n },\r\n setIsLoanCompleted: (value?: boolean) => {\r\n dispatch(loanActionCreators.setIsLoanCompleted(value));\r\n },\r\n\r\n //loan summary\r\n borrowerLoanSummary: (loanGuid: string, interimLoanStagingId: number) => {\r\n dispatch(TaskMenuCreators.borrowerLoanSummary(loanGuid, interimLoanStagingId));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n // ReviewApplication\r\n submitCheckFlag: (value: boolean) => {\r\n dispatch(reviewApplicationActionCreators.submitCheckFlag(value));\r\n },\r\n setLoanFromEncompassMessageFlag: (value: boolean) => {\r\n dispatch(reviewApplicationActionCreators.setLoanFromEncompassMessageFlag(value));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReviewApplication as any);","import InfographicSideLayout from \"components/common/Layout/InfographicSideLayout\";\r\nimport scoreInfographic from \"../../assets/infographics/creditReport/score.svg\";\r\nimport React, { useEffect } from \"react\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useInitialMount } from \"hooks/useInitialMount\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ninterface CreditReportScoresProps {\r\n borrowerName: string;\r\n borrowerScore: number;\r\n coBorrowerName?: string;\r\n coBorrowerScore?: number;\r\n}\r\n\r\nconst CreditReportScores = (props: CreditReportScoresProps) => {\r\n const history = useHistory();\r\n const navigation = useNavigation();\r\n const isInitialMount = useInitialMount();\r\n\r\n const GetText = () => {\r\n if (HasCoBorrower()) {\r\n return \"Your credit scores have arrived!\";\r\n }\r\n return \"Your credit score has arrived!\";\r\n };\r\n\r\n const HasCoBorrower = () => {\r\n return props.coBorrowerName && props.coBorrowerScore;\r\n };\r\n\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n useEffect(() => {\r\n if (isInitialMount) {\r\n navigation.SetBackOnClick(() => {\r\n history.push({ pathname: \"/create-account\", state: { args: \"borrower\" } });\r\n });\r\n navigation.ShowContinue(() => {\r\n history.push({ pathname: \"/employment-information\", state: { args: \"borrower\" } });\r\n });\r\n }\r\n }, [isInitialMount]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(GetText)}>{GetText()}

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerName)}>{props.borrowerName}

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.borrowerScore)}>{props.borrowerScore}

    \r\n\r\n {HasCoBorrower() && (\r\n <>\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.coBorrowerName)}>{props.coBorrowerName}

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.coBorrowerScore)}>{props.coBorrowerScore}

    \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CreditReportScores;","import InfographicSideLayout from \"components/common/Layout/InfographicSideLayout\";\r\nimport pendingInfographic from \"../../assets/infographics/creditReport/pending.svg\";\r\nimport styles from \"./CreditReport.module.scss\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useInitialMount } from \"hooks/useInitialMount\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst CreditReportPending = (props: { isCoBorrowerPresent: boolean }) => {\r\n const showSpinner = useSelector(\r\n (state: ApplicationState) => state.creditReport?.showSpinner\r\n );\r\n\r\n const history = useHistory();\r\n const isInitialMount = useInitialMount();\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.ShowContinue(() => onContinue(), false);\r\n });\r\n\r\n const onContinue = async () => {\r\n history.push({ pathname: \"/employment-information\", state: { args: \"borrower\" } });\r\n };\r\n\r\n const onBack = async () => {\r\n history.push({ pathname: \"/create-account\", state: { args: props.isCoBorrowerPresent ? \"coborrower\" : \"borrower\" } });\r\n };\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n navigation.ShowContinue(() => onContinue(), false);\r\n navigation.SetBackOnClick(() => onBack());\r\n }, [isInitialMount]);\r\n\r\n return (\r\n \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Thank you for providing authorization')}>Thank you for providing authorization

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Please wait while we verify your credit information')}>Please wait while we verify your credit information.

    \r\n stopSpeech()} onMouseOver={() => textToSpeech('This could take a couple of minutes')}>This could take a couple of minutes.\r\n
    {showSpinner &&
    }
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CreditReportPending;\r\n","import InfographicSideLayout from \"components/common/Layout/InfographicSideLayout\";\r\nimport pendingInfographic from \"../../assets/infographics/creditReport/pending.svg\";\r\nimport styles from \"./CreditReport.module.scss\";\r\nimport React, { useEffect } from \"react\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useInitialMount } from \"hooks/useInitialMount\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst CreditReportPending = (props: { isCoBorrowerPresent: boolean }) => {\r\n const history = useHistory();\r\n const navigation = useNavigation();\r\n const isInitialMount = useInitialMount();\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n useEffect(() => {\r\n if (isInitialMount) {\r\n navigation.SetBackOnClick(() => {\r\n history.push({ pathname: \"/create-account\", state: { args: props.isCoBorrowerPresent ? \"coborrower\" : \"borrower\", isBack: true } });\r\n });\r\n }\r\n }, [isInitialMount]);\r\n return (\r\n \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Please select Save/Continue button to proceed to the next step')}>Please select Save/Continue button to proceed to the next step

    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CreditReportPending;\r\n","import { get, post } from \"../common/dataFetch\";\r\nimport { ResponseDto } from \"../common/models/ResponseDto\";\r\nimport { CreditReportScoresDto } from \"../components/creditReport/models/CreditReportScoresDto\";\r\n\r\nexport const getCreditReportStatus = (loanGuid: string,reportId: number) => {\r\n return get>(\r\n \"api/CreditReport/ReadByLoanGuidAsync?loanGuid=\" + loanGuid +\"&reportId=\"+reportId\r\n );\r\n};\r\n\r\nexport const getCreditReportValues = (loanGuid: string) => {\r\n return get>(\r\n \"api/CreditReport/ReadCreditScoresByLoanGuidAsync?loanGuid=\" + loanGuid\r\n );\r\n};\r\n\r\n\r\nexport const startCreditReport = (guid: string) => {\r\n return post>(\"api/CreditReport/StartNewCreditReport?loanGuid=\" + guid, null);\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport CreditReportScores from \"./CreditReportScores\";\r\nimport CreditReportPending from \"./CreditReportPending\";\r\nimport CreditReportError from \"./CreditReportError\";\r\nimport { useInterval } from \"hooks/useInterval\";\r\nimport { ApplicationState } from \"store\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ReportStatus } from \"store/Enum\";\r\nimport { useCreditReportActions } from \"actions/creditReportActions\";\r\nimport { useInitialMount } from \"hooks/useInitialMount\";\r\nimport styles from \"./CreditReport.module.scss\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { AccountCreationState } from \"../../store/accountCreationStore\";\r\n\r\nconst CreditReport = () => {\r\n const [isPolling, setIsPolling] = useState(false);\r\n const [isComplete, setIsComplete] = useState(false);\r\n const [isError, setIsError] = useState(false);\r\n const accountInfo = useSelector((state: ApplicationState) => state.accountCreation as AccountCreationState);\r\n\r\n const state = useSelector((state: ApplicationState) => state.creditReport);\r\n const loanGuid = useSelector((state: ApplicationState) => state.loan?.loanGuid);\r\n const borrowerName = useSelector(\r\n (state: ApplicationState) =>\r\n state.accountCreation?.borrower?.firstName +\r\n \" \" +\r\n state.accountCreation?.borrower?.lastName\r\n );\r\n const coBorrowerName = useSelector(\r\n (state: ApplicationState) =>\r\n state.accountCreation?.coBorrower?.firstName +\r\n \" \" +\r\n state.accountCreation?.coBorrower?.lastName\r\n );\r\n const actions = useCreditReportActions();\r\n const isInitialMount = useInitialMount();\r\n\r\n useEffect(() => {\r\n if (isInitialMount && loanGuid) {\r\n actions.StartCreditReport();\r\n }\r\n }, [isInitialMount, loanGuid]);\r\n\r\n useInterval(\r\n () => {\r\n actions.QueryCreditReportStatus();\r\n },\r\n isPolling ? 10000 : null\r\n );\r\n\r\n useEffect(() => {\r\n setIsPolling(\r\n state?.status != null &&\r\n state.status != ReportStatus.Complete &&\r\n state.status != ReportStatus.ValuesProcessed &&\r\n state.status != ReportStatus.Error\r\n );\r\n\r\n setIsError(state?.status === ReportStatus.Error);\r\n\r\n const valuesShouldExist =\r\n state?.status === ReportStatus.Complete ||\r\n state?.status === ReportStatus.ValuesProcessed;\r\n\r\n if (valuesShouldExist && state?.borrowerScore == null) {\r\n actions.QueryCreditValues();\r\n }\r\n \r\n }, [state?.status]);\r\n\r\n useEffect(() => {\r\n setIsComplete((state?.borrowerScore ?? 0) > 0);\r\n }, [state?.borrowerScore]);\r\n\r\n return (\r\n
    \r\n {isError && }\r\n {!isError && (\r\n <>\r\n {!isComplete && }\r\n {isComplete && (\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default CreditReport;\r\n","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport preQualLandingInfographic from \"assets/infographics/systematicLetter/prequal-landing.svg\";\r\nimport * as SystematicLetterActions from \"../../actions/systematicLetterActions\";\r\nimport * as SystematicLetterStore from \"../../store/systematicLetterStore\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport SystematicLetterDisplay from \"components/systematicLetter/SystematicLetterDisplay\";\r\nimport yesNotAgreeGraphic from \"assets/infographics/consumerCreditAuthorization/yes-do-not-agree.svg\";\r\nimport * as systematicLetterService from \"../../services/systematicLetterService\";\r\nimport styles from \"./SystematicLetter.module.scss\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype SystematicLetterProps =\r\n {\r\n loanGuid: string\r\n } & SystematicLetterStore.SystematicLetterState &\r\n typeof SystematicLetterActions.systematicLetterActionCreators;\r\n\r\nexport enum SystematicLetterStep {\r\n Landing = 1,\r\n SystematicLetterDisplay = 2,\r\n SystematicLetterNotFound = 3,\r\n Finished = 4\r\n}\r\n\r\nconst SystematicLetter = (props: SystematicLetterProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [currentStep, changeStep] = React.useState(SystematicLetterStep.Landing);\r\n const [isEnable, SetEnable] = React.useState(false);\r\n const navigation = useNavigation();\r\n const [showLoader, setShowLoader] = React.useState(false);\r\n const history = useHistory();\r\n\r\n const onBack = () => {\r\n if (currentStep === SystematicLetterStep.Landing) {\r\n history.push(\"/dashboard\");\r\n }\r\n else if (currentStep === SystematicLetterStep.SystematicLetterDisplay) {\r\n changeStep(SystematicLetterStep.Landing);\r\n }\r\n else if (currentStep === SystematicLetterStep.SystematicLetterNotFound) {\r\n history.push(\"/dashboard\");\r\n }\r\n };\r\n\r\n const onContinue = () => {\r\n if (currentStep === SystematicLetterStep.Landing) {\r\n handleButton();\r\n }\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n const handleButton = () => {\r\n SetEnable(true);\r\n setShowLoader(true);\r\n systematicLetterService.getSystematicLetterData(props.loanGuid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \");\r\n }\r\n return response.parsedBody as SystematicLetterStore.SystematicLetter;\r\n })\r\n .then((data: SystematicLetterStore.SystematicLetter) => {\r\n if (isNullOrWhiteSpace(data.firstName) ||\r\n isNullOrWhiteSpace(data.lastName) ||\r\n isNullOrWhiteSpace(data.loanAmount) ||\r\n isNullOrWhiteSpace(data.subjectPropertyAddress) ||\r\n isNullOrWhiteSpace(data.propertyType)) {\r\n changeStep(SystematicLetterStep.SystematicLetterNotFound)\r\n }\r\n else {\r\n props.getData(data);\r\n changeStep(SystematicLetterStep.SystematicLetterDisplay)\r\n }\r\n setShowLoader(false);\r\n })\r\n .catch((error: Error) => {\r\n setShowLoader(false);\r\n console.error(error);\r\n });\r\n };\r\n\r\n let systematicLetterPage = <>;\r\n\r\n if (currentStep === SystematicLetterStep.Landing) {\r\n systematicLetterPage = (\r\n <>\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Congratulations')}>Congratulations!

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Based on the information you provided and a review of your credit report, we are giving you preliminary qualification')}>Based on the information you\r\n provided and a review of your\r\n credit report, we are giving you\r\n preliminary qualification!

    \r\n\r\n \r\n {showLoader && (
    )}\r\n
    \r\n
    \r\n \r\n
    \r\n {navigation.ResetContinue()}\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n
    \r\n \r\n );\r\n\r\n }\r\n else if (currentStep === SystematicLetterStep.SystematicLetterDisplay) {\r\n systematicLetterPage = (\r\n <>\r\n \r\n {navigation.ResetContinue()}\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n \r\n );\r\n }\r\n else if (currentStep === SystematicLetterStep.SystematicLetterNotFound) {\r\n systematicLetterPage = (\r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Your Loan Officer will be in touch soon to go over options')}>Your Loan Officer will be in touch soon to go over options.

    \r\n
    \r\n
    \r\n \r\n
    \r\n {navigation.ResetContinue()}\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n
    \r\n );\r\n }\r\n\r\n return
    {systematicLetterPage}\r\n\r\n
    ;\r\n};\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation } = state;\r\n let loanGuid = accountInformation?.loanGuid;\r\n return {\r\n loanGuid\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n SystematicLetterActions.systematicLetterActionCreators\r\n)(SystematicLetter as any);","import { useDispatch, useSelector } from \"react-redux\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction } from \"../store/creditReportStore\";\r\nimport {\r\n getCreditReportValues,\r\n getCreditReportStatus,\r\n startCreditReport,\r\n} from \"../services/creditReportService\";\r\nimport { ApplicationState } from \"../store\";\r\nimport { ReportStatus } from \"../store/Enum\";\r\n\r\nexport interface CreditReportActions {\r\n StartCreditReport: () => void;\r\n QueryCreditReportStatus: () => void;\r\n QueryCreditValues: () => void;\r\n}\r\n\r\nexport function useCreditReportActions(): CreditReportActions {\r\n const dispatch = useDispatch();\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.accountInformation?.loanGuid ?? \"\"\r\n );\r\n const reportId = useSelector(\r\n (state: ApplicationState) => state.creditReport?.reportId ?? 0\r\n );\r\n\r\n const queryForCreditScores = async (loanGuid: string) => {\r\n const result = await getCreditReportValues(loanGuid);\r\n if (result.ok && result.parsedBody && !result.parsedBody.hasError) {\r\n const scoresResult = result.parsedBody.body;\r\n if (result.parsedBody.body.borrowerCreditScore) {\r\n dispatch({\r\n type: ActionTypes.CompleteCreditReport,\r\n status: ReportStatus.Complete,\r\n borrowerScore: scoresResult.borrowerCreditScore as any,\r\n coBorrowerScore: scoresResult.coBorrowerCreditScore as any,\r\n } as KnownAction);\r\n return true;\r\n }\r\n } else {\r\n console.error(result);\r\n }\r\n return false;\r\n };\r\n\r\n var actions: CreditReportActions = {\r\n StartCreditReport: async () => {\r\n if (await queryForCreditScores(loanGuid)) {\r\n // Credit score is already complete. No need to start a new one\r\n return;\r\n }\r\n\r\n const result = await startCreditReport(loanGuid);\r\n\r\n if (result.ok && result.parsedBody && !result.parsedBody.hasError) {\r\n dispatch({\r\n type: ActionTypes.StartCreditReport,\r\n reportId: result.parsedBody.body.creditReportId,\r\n } as KnownAction);\r\n } else {\r\n dispatch({\r\n type: ActionTypes.SetCreditReportStatus,\r\n status: ReportStatus.Error,\r\n } as KnownAction);\r\n }\r\n },\r\n\r\n QueryCreditReportStatus: async () => {\r\n const result = await getCreditReportStatus(loanGuid, reportId);\r\n\r\n if (result.ok && result.parsedBody && !result.parsedBody.hasError) {\r\n dispatch({\r\n type: ActionTypes.SetCreditReportStatus,\r\n status: result.parsedBody.body.status,\r\n } as KnownAction);\r\n } else {\r\n console.error(result);\r\n }\r\n },\r\n\r\n QueryCreditValues: async () => {\r\n await queryForCreditScores(loanGuid);\r\n },\r\n };\r\n return actions;\r\n}\r\n","import { useEffect, useRef } from \"react\";\r\n\r\n/**\r\n * The useInterval hook enables use to cleanly use the setInterval method without having to deal with any of the React weirdness.\r\n *\r\n * Original Source: [Making setInterval Declarative with React Hooks - Dan Abramov](https://overreacted.io/making-setinterval-declarative-with-react-hooks/)\r\n *\r\n * @param callback Method to be run on the interval\r\n * @param delay Time delay between exectutions. Set to null to pause the interval\r\n */\r\nexport function useInterval(callback: () => void, delay: number | null) {\r\n const savedCallback = useRef();\r\n\r\n // Remember the latest callback.\r\n useEffect(() => {\r\n savedCallback.current = callback as any;\r\n }, [callback]);\r\n\r\n useEffect(() => {\r\n function tick() {\r\n if (savedCallback.current) {\r\n (savedCallback.current as any)();\r\n }\r\n }\r\n if (delay !== null) {\r\n let id = setInterval(tick, delay);\r\n return () => clearInterval(id);\r\n }\r\n }, [delay]);\r\n}\r\n","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as SystematicLetterStore from \"../store/systematicLetterStore\";\r\nimport { KnownAction } from '../store/systematicLetterStore';\r\nimport * as systematicLetterService from \"../services/systematicLetterService\";\r\n\r\nconst request = (loanGuid: string): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestSystematicLetter,\r\n loanGuid\r\n };\r\n};\r\nconst receive = (data: SystematicLetterStore.SystematicLetter): KnownAction => {\r\n return { type: ActionTypes.ReceiveSystematicLetter, data };\r\n};\r\n\r\nexport const systematicLetterActionCreators = {\r\n \r\n getSystematicLetterData: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n dispatch(request(loanGuid));\r\n systematicLetterService.getSystematicLetterData(loanGuid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + loanGuid + \" .\");\r\n }\r\n return response.parsedBody as SystematicLetterStore.SystematicLetter;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data));\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n },\r\n getData: (data: SystematicLetterStore.SystematicLetter): AppThunkAction => (dispatch) => {\r\n dispatch(receive(data));\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as SystematicLetterActions from \"../../actions/systematicLetterActions\";\r\nimport * as SystematicLetterStore from \"../../store/systematicLetterStore\";\r\nimport styles from \"./SystematicLetter.module.scss\";\r\nimport UhmLogo from \"assets/logo/uhm-logo-stacked.png\";\r\n\r\ntype SystematicLetterContentProps = {\r\n ref: object,\r\n data: SystematicLetterStore.SystematicLetter\r\n}\r\n\r\nexport class SystematicLetterContent extends React.PureComponent {\r\n constructor(props: SystematicLetterContentProps) {\r\n super(props);\r\n }\r\n private canvasEl!: HTMLCanvasElement;\r\n public componentDidMount() {\r\n const ctx = this.canvasEl.getContext(\"2d\");\r\n if (ctx) {\r\n ctx.beginPath();\r\n ctx.stroke();\r\n }\r\n }\r\n\r\n private setRef = (ref: HTMLCanvasElement) => this.canvasEl = ref;\r\n public render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \"Union
    \r\n

    {this.props.data.currentDate ? this.props.data.currentDate : \"\"}

    \r\n

    \r\n {this.props.data.firstName ?? \"\"} {this.props.data.lastName ?? \"\"}
    \r\n {this.props.data.addressStreetLine ?? \"\"}
    \r\n {this.props.data.addressCity ?? \"\"}, {this.props.data.addressState ?? \"\"} {this.props.data.addressPostalCode ?? \"\"}\r\n

    \r\n

    \r\n Dear {this.props.data.firstName ?? \"\"} {this.props.data.lastName ?? \"\"},\r\n

    \r\n

    \r\n Congratulations! Based on the information you provided and a review of your credit report, we are giving you preliminary qualification for a mortgage loan with the following parameters:\r\n

    \r\n
      \r\n
    • Subject Property Address: TBD, {this.props.data.subjectPropertyAddress ?? \"\"}
    • \r\n
    • Loan Type: Conventional
    • \r\n
    • Property Type: {this.props.data.propertyType ?? \"\"}
    • \r\n
    • Occupancy: {this.props.data.occupancy ?? \"\"}
    • \r\n
    • Loan Amount: {this.props.data.loanAmount ?? \"$0\"}
    • \r\n
    \r\n

    This preliminary qualification will expire in 90 days and we will not give further consideration to this request.

    \r\n

    This preliminary qualification is based on the information you provided and your credit report. This is not a commitment to lend. A formal loan commitment can only be obtained after consulting with an assigned loan officer. Your application must meet our lending standards at the time of final approval, including an acceptable appraisal and validation of credit and underwriting information, including information received from independent third parties regarding your credit history. Until your rate is locked, the interest rate and other loan terms and conditions may change without notice.

    \r\n

    Thank you for choosing Union Home Mortgage and we look forward to helping you with your mortgage needs. Please feel free to call if you have any questions and a loan officer will be in contact with you soon to move forward.

    \r\n\r\n

    Sincerely,

    \r\n\r\n
    \r\n
    \r\n Union Home Mortgage Corp.
    \r\n 8241 Dow Circle West
    \r\n Strongsville, OH 44136
    \r\n 440-234-4300
    \r\n encompasstest@unionhomemortgage.com \r\n
    \r\n
    \r\n

    *You may be contacted by a Union Home Mortgage affiliated company regarding other products and services related to home financing*

    \r\n
    \r\n
    \r\n 8241 Dow Circle, Strongsville, OH 44136 | UnionHomeMortgage.com | Union Home Mortgage Corp. NMLS 2229\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}\r\nconst mapStateToProps = (appState: ApplicationState, ownProps: { data: SystematicLetterStore.SystematicLetter }): any => {\r\n let data;\r\n data = ownProps.data;\r\n return {\r\n data\r\n };\r\n};\r\nexport default connect(\r\n mapStateToProps,\r\n SystematicLetterActions.systematicLetterActionCreators\r\n)(SystematicLetterContent as any);","import * as React from \"react\";\r\nimport axios from \"axios\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport preQualLetternfographic from \"assets/infographics/systematicLetter/prequal-letter.svg\";\r\nimport * as SystematicLetterActions from \"../../actions/systematicLetterActions\";\r\nimport * as SystematicLetterStore from \"../../store/systematicLetterStore\";\r\nimport styles from \"./SystematicLetter.module.scss\";\r\nimport { useReactToPrint } from 'react-to-print';\r\nimport { SystematicLetterContent } from \"components/systematicLetter/SystematicLetterContent\";\r\nimport * as systematicLetterService from \"../../services/systematicLetterService\";\r\n\r\ntype SystematicLetterDisplayProps =\r\n SystematicLetterStore.SystematicLetterState & {\r\n loanGuid: string;\r\n data: SystematicLetterStore.SystematicLetter;\r\n interimLoanStagingId: number;\r\n }\r\n & typeof SystematicLetterActions.systematicLetterActionCreators;\r\n\r\nconst SystematicLetterDisplay = (props: SystematicLetterDisplayProps) => {\r\n const componentRef = React.useRef(null);\r\n const [showLoader, setShowLoader] = React.useState(false);\r\n\r\n const handlePrint = useReactToPrint({\r\n content: () => componentRef.current,\r\n });\r\n\r\n const handleDownload = () => {\r\n setShowLoader(true);\r\n systematicLetterService.generateSystematicInvoicePdf(props.interimLoanStagingId)\r\n .then((response: any) => {\r\n if (response.status == 200 && response.data.size > 0) {\r\n const file = new Blob([response.data], { type: \"application/pdf\" });\r\n const fileURL = URL.createObjectURL(file);\r\n const fileName = response.headers[\"x-file-name\"];\r\n downloadData(fileURL, fileName);\r\n }\r\n else {\r\n console.error(\"there is some problem while generating pre-qual systematic letter pdf file\");\r\n }\r\n setShowLoader(false);\r\n })\r\n .catch((error: Error) => {\r\n setShowLoader(false);\r\n console.error(error);\r\n });\r\n }\r\n\r\n const downloadData = (fileURL: string, fileName: string) => {\r\n const save = document.createElement('a');\r\n if (typeof save.download !== 'undefined') {\r\n save.href = fileURL;\r\n save.target = '_blank';\r\n save.download = fileName;\r\n save.dispatchEvent(new MouseEvent('click'));\r\n } else {\r\n window.location.href = fileURL;\r\n }\r\n }\r\n\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    Your Prequalification Letter

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {showLoader && (
    )}\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation, systematicLetter } = state;\r\n let loanGuid = accountInformation?.loanGuid;\r\n let data;\r\n if (systematicLetter && systematicLetter.data) {\r\n data = systematicLetter.data;\r\n }\r\n let interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n return {\r\n loanGuid,\r\n data,\r\n interimLoanStagingId\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n SystematicLetterActions.systematicLetterActionCreators\r\n)(SystematicLetterDisplay as any);","export enum DocumentStatus {\r\n Submitted = 0,\r\n Accepted = 1,\r\n Rejected = 2,\r\n Replaced = 3,\r\n}\r\n","import React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { ApplicationState } from \"store\";\r\nimport { DocumentDto } from \"../models/DocumentDto\";\r\nimport { DocumentStatus } from \"../models/DocumentStatus\";\r\nimport styles from \"./LoanOfficerDocument.module.scss\";\r\nimport Tooltip from \"../../common/InfoIconTooltip\";\r\n\r\ninterface DocumentProps {\r\n fileName?: string | null | undefined;\r\n status?: DocumentStatus | null | undefined;\r\n documentDto?: DocumentDto | null | undefined;\r\n documentList?: any;\r\n}\r\n\r\nconst Document = (props: DocumentProps) => {\r\n const history = useHistory();\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.loanOfficerMainTab?.loanGuid ?? \"\"\r\n );\r\n const openDocument = () => {\r\n history.push(\"/view-document\", {\r\n loanGuid: loanGuid,\r\n documentDto: props.documentDto,\r\n viewerActions: true,\r\n documentList: props.documentList\r\n });\r\n };\r\n\r\n const getStatus = (status: DocumentStatus | null | undefined) => {\r\n switch (status) {\r\n case DocumentStatus.Accepted:\r\n return styles.accepted;\r\n case DocumentStatus.Replaced:\r\n return styles.discarded;\r\n case DocumentStatus.Rejected:\r\n return styles.rejected;\r\n case DocumentStatus.Submitted:\r\n return styles.received;\r\n default:\r\n return <>;\r\n }\r\n }\r\n\r\n return (\r\n
    openDocument()}>\r\n
    {props.fileName}
    \r\n
    \r\n

    {DocumentStatus[props.status as any]}

    \r\n {props?.documentDto?.rejectionComment && \r\n {props?.documentDto?.rejectionComment}}\r\n
    \r\n
    \r\n );\r\n};\r\nexport default Document;\r\n","export enum DocumentSectionStatus {\r\n Requested = 0,\r\n Submitted = 1,\r\n Accepted = 2,\r\n Rejected = 3,\r\n Outstanding = 4\r\n}\r\n","import { useDispatch } from \"react-redux\";\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction } from \"../store/documentStore\";\r\n\r\nexport interface DocumentActions {\r\n AlterSectionExpandedStatus: (sectionId: number, isOpen: boolean) => void;\r\n AlterSelectedTab: (tabIndex: number) => void;\r\n}\r\n\r\nexport function useDocumentActions(): DocumentActions {\r\n const dispatch = useDispatch();\r\n var actions: DocumentActions = {\r\n AlterSectionExpandedStatus: (sectionId: number, isOpen: boolean) => {\r\n dispatch({\r\n type: ActionTypes.AlterSectionExpandedStatus,\r\n sectionId: sectionId,\r\n isOpen: isOpen,\r\n } as KnownAction);\r\n },\r\n AlterSelectedTab: (tabIndex: number) => {\r\n dispatch({\r\n type: ActionTypes.AlterSelectedTab,\r\n tabIndex: tabIndex,\r\n } as KnownAction);\r\n },\r\n };\r\n return actions;\r\n}\r\n","export enum FileFormat {\r\n Pdf = 0,\r\n Word = 1,\r\n Jpeg = 2,\r\n Png = 3,\r\n}\r\n","import React from \"react\";\r\nimport { Modal, ModalBody } from \"reactstrap\";\r\nimport styles from \"./ModalPopup.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst ModalPopup = (props: { text: string, isOpen: boolean, onCancel: () => void, onSubmit: () => void }) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n props.onCancel()}\r\n centered={true}\r\n contentClassName={styles.modalContent}\r\n returnFocusAfterClose={false}\r\n >\r\n \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Are you sure')}>Are you sure?

    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(props.text)}>\r\n {props.text}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ModalPopup;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styles from \"./LoanOfficerDocument.module.scss\";\r\nimport Document from \"./Document\";\r\nimport Tooltip from \"components/common/InfoIconTooltip\";\r\nimport { DocumentSectionDto } from \"../models/DocumentSectionDto\";\r\nimport { DocumentSectionStatus } from \"../models/DocumentSectionStatus\";\r\nimport { useDocumentActions } from \"actions/documentActions\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport ModalPopup from \"../../common/ModalPopup\";\r\n\r\ninterface DocumentSectionProps {\r\n section: DocumentSectionDto;\r\n onRemoveClick: (section: DocumentSectionDto) => void;\r\n}\r\n\r\nconst DocumentSection = (props: DocumentSectionProps) => {\r\n const [showDocuments, setShowDocuments] = useState(false);\r\n const [hasDocuments, setHasDocuments] = useState(false);\r\n const [canDelete, setCanDelete] = useState(false);\r\n const [openConfirmationModalPopup, setOpenConfirmationModalPopup] = useState(false);\r\n const icon = \"fa-caret-\" + (showDocuments ? \"up\" : \"down\");\r\n\r\n const flipShow = () => {\r\n if (hasDocuments) {\r\n actions.AlterSectionExpandedStatus(\r\n props.section?.documentSectionId ?? -1,\r\n !showDocuments\r\n );\r\n }\r\n };\r\n\r\n const actions = useDocumentActions();\r\n const expandedSections = useSelector(\r\n (state: ApplicationState) => state.document?.expandedSections\r\n );\r\n\r\n useEffect(() => {\r\n const sectionInExpandedArray =\r\n expandedSections?.includes(props.section?.documentSectionId ?? -1) ?? false;\r\n\r\n setShowDocuments(sectionInExpandedArray && hasDocuments);\r\n }, [expandedSections, hasDocuments]);\r\n\r\n useEffect(() => {\r\n let uploaded = false;\r\n setHasDocuments((props.section?.documents?.length ?? 0) > 0);\r\n setCanDelete(props.section.status == DocumentSectionStatus.Requested || props.section.status == DocumentSectionStatus.Outstanding);\r\n props.section.documents?.forEach((document) => {\r\n if (document.isUploadedToEncompass) {\r\n uploaded = true;\r\n }\r\n else {\r\n uploaded = false;\r\n }\r\n });\r\n }, [props.section]);\r\n\r\n const deleteDocumentSection = async () => {\r\n setOpenConfirmationModalPopup(true);\r\n }\r\n\r\n const confirmDelete = async () => {\r\n setOpenConfirmationModalPopup(false);\r\n props.onRemoveClick(props.section);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    {props.section.title}
    \r\n {props.section?.description && {props.section.description}}\r\n
    \r\n {canDelete && (\r\n deleteDocumentSection()} />\r\n )}\r\n {hasDocuments && }\r\n
    \r\n
    \r\n\r\n
    \r\n {DocumentSectionStatus[props.section.status as any]}\r\n
    \r\n\r\n\r\n
    \r\n {showDocuments && (\r\n <>\r\n {props.section.documents?.map((value) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )}\r\n
    \r\n
    \r\n setOpenConfirmationModalPopup(false)}\r\n isOpen={openConfirmationModalPopup} onSubmit={confirmDelete} />\r\n
    \r\n );\r\n};\r\n\r\nexport default DocumentSection;","import React from \"react\";\r\nimport styles from \"./LoanOfficerDocument.module.scss\";\r\nimport DocumentSection from \"./DocumentSection\";\r\nimport { DocumentSectionDto } from \"../models/DocumentSectionDto\";\r\n\r\ninterface DocumentGroupProps {\r\n sections: DocumentSectionDto[];\r\n category: string | null | undefined;\r\n onRemoveSectionClick: (section: DocumentSectionDto) => void;\r\n}\r\nconst DocumentGroup = (props: DocumentGroupProps) => {\r\n return (\r\n
    \r\n
    {props.category}
    \r\n {props.sections?.map((value,index) => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default DocumentGroup;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styles from \"./LoanOfficerDocument.module.scss\";\r\nimport DocumentGroup from \"./DocumentGroup\";\r\nimport { DocumentSectionDto } from \"../models/DocumentSectionDto\";\r\nimport { DocumentSectionStatus } from \"../models/DocumentSectionStatus\";\r\nimport { DocumentStatus } from \"../models/DocumentStatus\";\r\nimport { from, IGrouping } from \"linq\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport { getSectionsByLoanguid, removeSection, updateDocumentStatus } from \"services/documentService\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { useDocumentActions } from \"actions/documentActions\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { Modal, ModalBody, ModalHeader, ModalFooter } from 'reactstrap';\r\nimport { isNullOrUndefined } from \"util\";\r\n\r\nconst LoanOfficerDocuments = () => {\r\n const [sections, setSections] = useState([]);\r\n const [selectedSections, setSelectedSections] = useState([]);\r\n const [groupings, setGroupings] = useState[]>([]);\r\n const [showSpinner, setShowSpinner] = useState(true);\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const [isDisable, setIsDisable] = React.useState(true);\r\n const actions = useDocumentActions();\r\n const history = useHistory();\r\n const navigation = useNavigation(() => {\r\n navigation.HideNavigation()\r\n });\r\n const [splitUpSections, setSplitUpSections] = useState({\r\n requested: [] as DocumentSectionDto[],\r\n outstanding: [] as DocumentSectionDto[],\r\n });\r\n\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.loanOfficerMainTab?.loanGuid ?? \"\"\r\n );\r\n\r\n const selectedTab = useSelector(\r\n (state: ApplicationState) => state.document?.selectedTab\r\n );\r\n\r\n const navigateRoute = () => {\r\n history.push({ pathname: \"/add-document\", state: { args: \"loanOfficer\" } });\r\n }\r\n useEffect(() => {\r\n getData();\r\n }, [loanGuid]);\r\n\r\n const getData = async () => {\r\n if (loanGuid) {\r\n setShowSpinner(true);\r\n setSections([]);\r\n var result = await getSectionsByLoanguid(loanGuid);\r\n setShowSpinner(false);\r\n if (result.ok && !result.parsedBody?.hasError) {\r\n setSections(result.parsedBody?.body ?? []);\r\n }\r\n }\r\n };\r\n\r\n const callRemoveSection = async (section: DocumentSectionDto) => {\r\n setShowSpinner(true);\r\n setSections([]);\r\n await removeSection({\r\n loanGuid: loanGuid,\r\n sectionId: section.documentSectionId ?? -1,\r\n });\r\n getData();\r\n };\r\n\r\n useEffect(() => {\r\n setSplitUpSections({\r\n requested: from(sections)\r\n .where((x) => !x.isOutstanding && (x.status === DocumentSectionStatus.Accepted ||\r\n x.status === DocumentSectionStatus.Requested ||\r\n x.status === DocumentSectionStatus.Submitted))\r\n .toArray(),\r\n outstanding: from(sections)\r\n .where((x) => x.isOutstanding ||\r\n x.status === DocumentSectionStatus.Rejected ||\r\n x.status === DocumentSectionStatus.Outstanding)\r\n .toArray()\r\n });\r\n }, [sections]);\r\n\r\n useEffect(() => {\r\n if (splitUpSections) {\r\n if (selectedTab === 0) {\r\n setSelectedSections(splitUpSections.requested);\r\n } else if (selectedTab === 1) {\r\n setSelectedSections(splitUpSections.outstanding);\r\n }\r\n }\r\n }, [splitUpSections, selectedTab]);\r\n\r\n useEffect(() => {\r\n const categoryGroupings = from(selectedSections)\r\n .groupBy((x) => x.category)\r\n .toArray();\r\n setGroupings(categoryGroupings);\r\n }, [selectedSections]);\r\n\r\n const isActiveStyle = (index: number): string => {\r\n return selectedTab == index ? styles.activeTab : \"\";\r\n };\r\n\r\n const toggleModle = () => {\r\n setIsOpen(!isOpen);\r\n }\r\n\r\n const approveAllDocument = async () => {\r\n if (sections && sections.length > 0) {\r\n setShowSpinner(true);\r\n let i = 0;\r\n sections.map(async (section, i) => {\r\n i++; //increment i until loop completed.\r\n section.documents?.filter(y => y.status == DocumentStatus.Submitted).map(async (document, j) => {\r\n document.status = DocumentStatus.Accepted;\r\n await updateStatus(document);\r\n });\r\n if (i === sections.length) {\r\n setShowSpinner(false);\r\n setIsOpen(false);\r\n setIsDisable(true);\r\n setTimeout(async () => {\r\n await getData();\r\n }, 1000);\r\n }\r\n })\r\n }\r\n }\r\n\r\n const updateStatus = async (doc: any) => {\r\n if (!isNullOrUndefined(doc)) {\r\n var result = await updateDocumentStatus({\r\n comment: \"\",\r\n documentId: doc.documentId,\r\n loanGuid: loanGuid,\r\n status: doc.status,\r\n });\r\n }\r\n };\r\n return (\r\n
    \r\n <>\r\n \r\n \r\n
    \r\n

    Are you sure you want to accept all documents?

    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n
    \r\n actions.AlterSelectedTab(0)}>\r\n Requested ({splitUpSections.requested.length})\r\n \r\n actions.AlterSelectedTab(1)}>\r\n Outstanding ({splitUpSections.outstanding.length})\r\n \r\n {\r\n selectedTab === 0 && (sections.filter(x => x.title === \"Credit Authorization\").length > 0 ?\r\n sections.filter(x => x.status == DocumentSectionStatus.Submitted).length > 1 :\r\n sections.filter(x => x.status == DocumentSectionStatus.Submitted).length > 0) ?\r\n setIsOpen(isDisable)} >\r\n Accept All Documents\r\n :\r\n setIsOpen(isDisable)} >\r\n Accept All Documents\r\n \r\n }\r\n\r\n navigateRoute()} className={styles.link}>\r\n Add Another Document\r\n \r\n
    \r\n <>{showSpinner && }\r\n
    \r\n {groupings?.map((value) => {\r\n return (\r\n callRemoveSection(section)}\r\n >\r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default LoanOfficerDocuments;","import React, { useEffect, useState } from \"react\";\r\nimport styles from \"./AddDocumentSection.module.scss\";\r\n\r\ninterface AddDocumentSectionOptionListProps {\r\n documentList: string[];\r\n document: string;\r\n onSelectionMade?: (value: string) => void;\r\n}\r\n\r\nconst AddDocumentSectionOptionList = (props: AddDocumentSectionOptionListProps) => {\r\n const [anythingSet, setAnythingSet] = useState(false);\r\n\r\n useEffect(() => {\r\n setAnythingSet(false);\r\n }, [props.documentList]);\r\n\r\n const optionClick = (value: string) => {\r\n if (value && props.onSelectionMade) {\r\n props.onSelectionMade(value);\r\n setAnythingSet(true);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {props.documentList?.map((value) => {\r\n return (\r\n \r\n {!anythingSet && (\r\n optionClick(value)} />\r\n )}\r\n {props.document === value && }\r\n

    optionClick(value)}>{value}

    \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst ListItem = (props: { children?: React.ReactNode }) => {\r\n return <>{props.children};\r\n};\r\n\r\nexport default AddDocumentSectionOptionList;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport AddDocumentSectionOptionList from \"./AddDocumentSectionOptionList\";\r\nimport styles from \"./AddDocumentSection.module.scss\";\r\nimport { useInitialMount } from \"hooks/useInitialMount\";\r\nimport { getSectionOptions, addNewSection } from \"services/documentService\";\r\nimport { from } from \"linq\";\r\nimport { DocumentRequiredViewModel } from \"../models/DocumentRequiredViewModel\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\n\r\nconst AddDocumentSection = () => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [documentList, setDocumentList] = useState([\"\"]);\r\n const [documentTypes, setDocumentTypes] = useState([\"\"]);\r\n const [selectedType, setSelectedType] = useState(\"\");\r\n const [selectedDocument, setSelectedDocument] = useState(\"\");\r\n const [allOptions, setAllOptions] = useState([]);\r\n const [notes, setNotes] = useState(undefined);\r\n const navigation = useNavigation();\r\n const isInitialMount = useInitialMount();\r\n const history = useHistory();\r\n\r\n const loanGuid = useSelector((state: ApplicationState) => state.loan?.loanGuid ?? \"\");\r\n if (loanGuid === \"\") {\r\n history.push({ pathname: \"/\" });\r\n }\r\n\r\n const getOptions = async () => {\r\n var response = await getSectionOptions();\r\n if (response.ok && !response.parsedBody?.hasError) {\r\n setAllOptions(response.parsedBody?.body ?? []);\r\n }\r\n };\r\n\r\n const addSection = async () => {\r\n var response = await addNewSection({\r\n category: selectedType,\r\n description: notes ?? \"\",\r\n loanGuid: loanGuid,\r\n title: selectedDocument,\r\n });\r\n if (response.ok && !response.parsedBody?.hasError) {\r\n history.goBack();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (isInitialMount) {\r\n getOptions();\r\n }\r\n }, [isInitialMount]);\r\n\r\n useEffect(() => {\r\n const distinctTypes = from(allOptions)\r\n .select((x) => x.documentType)\r\n .distinct()\r\n .toArray();\r\n\r\n setDocumentTypes(distinctTypes);\r\n\r\n if (distinctTypes?.length > 0) {\r\n setSelectedType(distinctTypes[0]);\r\n }\r\n }, [allOptions]);\r\n\r\n useEffect(() => {\r\n setSelectedDocument(\"\");\r\n }, [documentList]);\r\n\r\n useEffect(() => {\r\n if (selectedType) {\r\n setDocumentList(\r\n from(allOptions)\r\n .where((x) => x.documentType === selectedType)\r\n .select((x) => x.document)\r\n .distinct()\r\n .toArray()\r\n );\r\n setSelectedDocument(\"\");\r\n }\r\n }, [selectedType]);\r\n\r\n return (\r\n
    \r\n
    \r\n
    Document Type:
    \r\n
    \r\n \r\n
    \r\n
    \r\n setSelectedDocument(doc)}\r\n >\r\n
    \r\n
    Add Document?
    \r\n
    \r\n \r\n

    {selectedDocument}

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n <>{isLoading && }\r\n
    \r\n\r\n {navigation.SetBackOnClick(\r\n () => history.goBack()\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default AddDocumentSection;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { getDocumentContents } from \"services/documentService\";\r\nimport styles from \"./documentViewers.module.scss\";\r\nimport { isSafari, isMobile } from \"react-device-detect\";\r\n\r\ninterface PdfDocumentViewerProps {\r\n data?: string;\r\n loanGuid?: string;\r\n documentId?: number;\r\n}\r\n\r\nconst PdfDocumentViewer = (props: PdfDocumentViewerProps) => {\r\n const [blobString, setBlobString] = useState(\"\");\r\n const [data, setData] = useState(\"\");\r\n\r\n useEffect(() => {\r\n if (props.loanGuid && (props.documentId ?? -1) > 0) {\r\n if (props.data != undefined && props.data != \"\") {\r\n setData(props.data);\r\n }\r\n else {\r\n getData();\r\n }\r\n }\r\n }, [props.documentId, props.loanGuid, props.data]);\r\n\r\n const getData = async () => {\r\n setData(\"\");\r\n var result = await getDocumentContents(props.loanGuid ?? \"\", props.documentId ?? -1);\r\n if (result.ok && !result.parsedBody?.hasError) {\r\n setData(result.parsedBody?.body.data ?? \"\");\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (data != \"\") {\r\n setBlobString(getBlobUrl(data, \"application/pdf\"));\r\n }\r\n }, [data]);\r\n\r\n const getBlobUrl = (encodedByteString: string, documentContentType: string) => {\r\n let byteString = atob(encodedByteString);\r\n let arrayBuffer = new ArrayBuffer(byteString.length);\r\n let byteArray = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n byteArray[i] = byteString.charCodeAt(i);\r\n }\r\n let blob = new Blob([byteArray], { type: documentContentType });\r\n return URL.createObjectURL(blob);\r\n };\r\n\r\n return (\r\n
    \r\n\r\n {!data && }\r\n\r\n {data && isMobile &&\r\n
    \r\n

    This browser does not support PDF. Please download the PDF to view it.

    \r\n Download PDF\r\n
    \r\n }\r\n\r\n {data && !isSafari && !isMobile &&\r\n
    \r\n \r\n
    \r\n }\r\n {data && isSafari && !isMobile &&\r\n <>\r\n
    \r\n \r\n

    Download PDFThis browser does not support PDFs. Please download the PDF to view it.

    \r\n
    \r\n
    \r\n \r\n }\r\n
    \r\n );\r\n};\r\n\r\nexport default PdfDocumentViewer;","import React, { useEffect, useRef, useState } from \"react\";\r\nimport styles from \"./documentViewers.module.scss\";\r\n\r\nconst WordDocumentViewer = (props: { data: string; fileName: string }) => {\r\n const [blobString, setBlobString] = useState(\"\");\r\n const linkRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (props.data) {\r\n setBlobString(\r\n getBlobUrl(\r\n props.data,\r\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\r\n )\r\n );\r\n }\r\n }, [props.data]);\r\n\r\n const getBlobUrl = (encodedByteString: string, documentContentType: string) => {\r\n let byteString = atob(encodedByteString);\r\n let arrayBuffer = new ArrayBuffer(byteString.length);\r\n let byteArray = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n byteArray[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n let blob = new Blob([byteArray], { type: documentContentType });\r\n return URL.createObjectURL(blob);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n (linkRef.current as any).click()}\r\n >\r\n Download Attachment\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default WordDocumentViewer;\r\n","import React from \"react\";\r\nimport styles from \"./documentViewers.module.scss\";\r\n\r\nconst ImageViewer = (props: { data: string }) => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ImageViewer;\r\n","import React, { useState } from \"react\";\r\nimport { updateDocumentStatus } from \"services/documentService\";\r\nimport styles from \"./documentViewers.module.scss\";\r\nimport { DocumentStatus } from \"../models/DocumentStatus\";\r\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\r\nexport interface DocumentViewerActionsProps {\r\n loanGuid: string;\r\n documentId: number;\r\n onStatusUpdate: () => void;\r\n documentList: any;\r\n}\r\n\r\nconst DocumentViewerActions = (props: DocumentViewerActionsProps) => {\r\n const [notes, setNotes] = useState(\"\");\r\n const [hasBeenRejected, setHasBeenRejected] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isOpen, setisOpen] = React.useState(false);\r\n\r\n const updateStatus = async (status: DocumentStatus) => {\r\n if (checkEligibilityToMarkDocumentAsReplace(status)) {\r\n setIsLoading(true);\r\n var result = await updateDocumentStatus({\r\n comment: notes,\r\n documentId: props.documentId,\r\n loanGuid: props.loanGuid,\r\n status: status,\r\n });\r\n setIsLoading(false);\r\n if (result.ok && !result.parsedBody?.hasError) {\r\n props.onStatusUpdate();\r\n }\r\n }\r\n };\r\n const checkEligibilityToMarkDocumentAsReplace = (status: any) => {\r\n const len = props.documentList.length || 0;\r\n let countReplace = 0;\r\n {\r\n props.documentList?.map((value: any) => {\r\n if (value.status != DocumentStatus.Submitted) {\r\n if (value.status === DocumentStatus.Replaced) {\r\n countReplace += 1;\r\n }\r\n }\r\n })\r\n if ((countReplace === len - 1 && len >= 1) && status === DocumentStatus.Replaced) {\r\n toggleModle()\r\n return false\r\n }\r\n return true\r\n }\r\n }\r\n\r\n const toggleModle = () => {\r\n setisOpen(!isOpen)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n

    Atleast one document should be accepted or rejected

    \r\n
    \r\n
    \r\n\r\n
    \r\n updateStatus(DocumentStatus.Accepted)}\r\n >\r\n Accept\r\n \r\n {\r\n setHasBeenRejected(true);\r\n }}\r\n >\r\n Reject\r\n \r\n updateStatus(DocumentStatus.Replaced)}\r\n >\r\n Replace\r\n \r\n
    \r\n {hasBeenRejected && (\r\n
    \r\n \r\n \r\n updateStatus(DocumentStatus.Rejected)}\r\n >\r\n Save Rejection\r\n \r\n
    \r\n )}\r\n <>\r\n {isLoading && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DocumentViewerActions;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport { getDocumentContents } from \"services/documentService\";\r\nimport PdfDocumentViewer from \"./PdfDocumentViewer\";\r\nimport WordDocumentViewer from \"./WordDocumentViewer\";\r\nimport ImageViewer from \"./ImageViewer\";\r\nimport DocumentViewerActions from \"./DocumentViewerActions\";\r\nimport { DocumentDto } from \"../models/DocumentDto\";\r\nimport styles from \"./documentViewers.module.scss\";\r\nimport { FileFormat } from \"../models/FileFormat\";\r\nimport NoImage from \"assets/icons/document/NoImage.png\";\r\n\r\nconst DocumentViewer = () => {\r\n const [documentDto, setDocumentDto] = useState(null);\r\n const [documentList, setDocumentDtoList] = useState(null);\r\n const [loanGuid, setLoanGuid] = useState(\"\");\r\n const [viewerActions, setViewerActions] = useState();\r\n const [data, setData] = useState(\"\");\r\n const [showError, setShowError] = useState(false);\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n setLoanGuid(history.location.state?.loanGuid);\r\n setDocumentDto(history.location.state?.documentDto);\r\n setViewerActions(history.location.state?.viewerActions);\r\n setDocumentDtoList(history.location.state?.documentList);\r\n\r\n }, [history.location]);\r\n\r\n useEffect(() => {\r\n if (loanGuid && (documentDto?.documentId ?? -1) > 0) {\r\n getData();\r\n }\r\n }, [documentDto, loanGuid]);\r\n\r\n const getData = async () => {\r\n setData(\"\");\r\n var result = await getDocumentContents(loanGuid ?? \"\", documentDto?.documentId ?? -1);\r\n if (result.ok && !result.parsedBody?.hasError) {\r\n setData(result.parsedBody?.body.data ?? \"\");\r\n } else {\r\n setShowError(true);\r\n }\r\n };\r\n \r\n\r\n var loadingSection = <>;\r\n if (showError) {\r\n loadingSection = (\r\n
    An error occurred while loading the document.
    \r\n );\r\n } else {\r\n loadingSection = ;\r\n }\r\n\r\n return (\r\n <>\r\n {data && (\r\n
    \r\n

    {documentDto?.fileName}

    \r\n
    \r\n {viewerActions && history.goBack()}\r\n documentList={documentList }\r\n >\r\n }\r\n
    \r\n {(() => {\r\n switch (documentDto?.fileFormat) {\r\n case FileFormat.Jpeg:\r\n case FileFormat.Png:\r\n return ;\r\n case FileFormat.Pdf:\r\n return ;\r\n case FileFormat.Word:\r\n return (\r\n
    \r\n \"No\r\n

    It looks like this file doesn't have a preview we can show you.

    \r\n \r\n
    \r\n );\r\n default:\r\n return null;\r\n }\r\n })()}\r\n
    \r\n )}\r\n {!data && loadingSection}\r\n \r\n );\r\n};\r\nexport default DocumentViewer;\r\n","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport { KnownAction, MilestoneNavigationState } from '../store/MilestoneNavigationStore';\r\nimport * as milestoneNavigationService from \"../services/milestoneNavigationService\";\r\n\r\nconst receive = (estimatedClosingDate: string, actualClosingDate: string, closed: string, completingTheApplication: string,\r\n creditAnalysis: string, processingTheApplication: string, readyForClosing: string): KnownAction => {\r\n return {\r\n type: ActionTypes.ReceiveMilestoneDetails, estimatedClosingDate: estimatedClosingDate, actualClosingDate: actualClosingDate,\r\n readyForClosing: readyForClosing, processingTheApplication: processingTheApplication,\r\n creditAnalysis: creditAnalysis, completingTheApplication: completingTheApplication,\r\n closed: closed\r\n };\r\n}\r\n\r\nexport const MilestoneNavigationServiceActionCreators = {\r\n getMilestoneDetails: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n milestoneNavigationService.getMilestoneDetails(loanGuid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem fetching Milestone Details for loanGuid \" + loanGuid + \" .\");\r\n }\r\n return response.parsedBody as MilestoneNavigationState;\r\n })\r\n .then((data: MilestoneNavigationState) => {\r\n if (data) {\r\n dispatch(receive(data.estimatedClosingDate, data.actualClosingDate, data.closed, data.completingTheApplication,\r\n data.creditAnalysis, data.processingTheApplication, data.readyForClosing));\r\n }\r\n })\r\n }\r\n}","import { get } from \"../common/dataFetch\";\r\n\r\nexport const getMilestoneDetails = (loanGuid: string) => {\r\n return get(`api/MilestoneNavigation/ReadByLoanGuidAsync?loanGuid=${loanGuid}`);\r\n};","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport styles from \"../components/loanView/Dashboard.module.scss\";\r\nimport welcomeInfographic from \"../assets/infographics/dashboard/welcome.svg\";\r\nimport progressInfographic from \"../assets/infographics/dashboard/progress.svg\";\r\nimport { CircularProgressbar, buildStyles } from 'react-circular-progressbar';\r\nimport applicationInfographic from \"../assets/infographics/dashboard/application.svg\";\r\nimport documentsInfographic from \"../assets/infographics/dashboard/documents.svg\";\r\nimport loanOfficerInfographic from \"assets/infographics/dashboard/LoanOfficer.svg\";\r\nimport { ApplicationState } from \"../store\";\r\nimport { TaskMenuItem, TaskMenuState } from \"../store/taskMenuStore\";\r\nimport {TaskStatusId, ProgressNavigationEnum } from \"../components/common/progressTracker/TaskStatus\";\r\nimport { useHistory } from \"react-router\";\r\nimport { DashboardInformation } from \"../store/dashboardStore\";\r\nimport { AccountInformationState } from \"../store/accountInformationStore\";\r\nimport { isNullOrWhiteSpace } from \"../common/helper/formatHelper\";\r\nimport { loanState } from \"../store/loanStore\";\r\n\r\ntype EncompassDownProps = {\r\n taskMenuItems?: TaskMenuItem[];\r\n dashboardInformation?: DashboardInformation;\r\n}\r\n\r\nconst EncompassDown = (props: EncompassDownProps) => {\r\n const navigation = useNavigation(() => navigation.HideNavigation());\r\n const [percentage, setpercentage] = React.useState(0);\r\n const { loanGuid } = useSelector((state: ApplicationState) => state.accountInformation as AccountInformationState);\r\n const { isLoanCompleted, isLoanFromEncompassFlag } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n const history = useHistory();\r\n\r\n React.useEffect(() => {\r\n if (props.dashboardInformation?.documentSubmitted && props.dashboardInformation?.documentRequested\r\n && props.dashboardInformation.documentSubmitted !== 0 && props.dashboardInformation.documentRequested !== 0) {\r\n setpercentage((props.dashboardInformation.documentSubmitted / props.dashboardInformation.documentRequested) * 100);\r\n }\r\n }, [props.dashboardInformation?.documentSubmitted, props.dashboardInformation?.documentRequested])\r\n\r\n\r\n const navigateRoute = (routeName: string, args: string) => {\r\n \r\n if (!isNullOrWhiteSpace(loanGuid)) {\r\n history.push({ pathname: routeName, state: { args: args } });\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n

    Sorry for any inconvenience, but UHMNow is temporarily not available for you to make changes or review information. \r\n Please try back later.

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    My Loan Officer
    \r\n

    Not Available

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    Loan Progress
    \r\n

    Not Available

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {props.taskMenuItems != undefined && props?.taskMenuItems.length > 0 ? props?.taskMenuItems?.map((item, index) => (\r\n \r\n {index === 0 &&\r\n
    navigateRoute(item.path, item.subTasks.filter(x => x.subTaskStatusId === TaskStatusId.InProgress)[0].queryParameter)}>\r\n
    Current Step:
    \r\n { isLoanCompleted ?

    Completed

    : < h4 > {item.name}}\r\n
    \r\n }\r\n
    \r\n )) :\r\n
    \r\n
    My Application / Current Step
    \r\n

    Not Available

    \r\n
    }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n (isLoanCompleted && !isLoanFromEncompassFlag) && \r\n\r\n
    navigateRoute(ProgressNavigationEnum.BorrowerDocuments, \"\")}>\r\n
    \r\n
    \r\n
    \r\n {props.dashboardInformation?.documentSubmitted != props.dashboardInformation?.documentRequested\r\n && props.dashboardInformation?.documentSubmitted + '/' + props.dashboardInformation?.documentRequested}\r\n Uploaded
    \r\n

    Documents

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n View Document \r\n
    \r\n\r\n }\r\n
    \r\n \r\n
    \r\n )\r\n};\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { taskMenu } = state;\r\n let taskMenuItems;\r\n if (taskMenu?.data) {\r\n taskMenuItems = taskMenu?.data.filter((asset, index) => (asset.taskStatusId === TaskStatusId.InProgress));\r\n }\r\n return {\r\n taskMenuItems\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps,null)(EncompassDown);","import React, { useEffect } from \"react\";\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport styles from \"./Dashboard.module.scss\";\r\nimport loanOfficerInfographic from \"assets/infographics/dashboard/LoanOfficer.svg\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport { UserAccountState } from \"../../store/userAccountStore\";\r\nimport { LoanOfficerDetail } from \"../../store/interimLoanSummaryStore\";\r\nimport Tooltip from \"../common/InfoIconTooltip\";\r\nimport { appConfigAsync } from \"../../authConfig\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype LoanViewHeaderProps = {\r\n userInfo: UserAccountState;\r\n signOut?: () => void\r\n isResponsive?: (isResponsive: boolean) => void;\r\n loanOfficerDetailInfo?: LoanOfficerDetail;\r\n showLoanOfficerDetail?: boolean;\r\n};\r\n\r\nexport default function LoanViewHeader(props: LoanViewHeaderProps) {\r\n\r\n const location = useLocation();\r\n const [responsive, setResponsive] = React.useState(false);\r\n const [url, setUrl] = React.useState(\"\");\r\n const isMultipleLoanPage = location.pathname.indexOf(\"loan-view\") > -1 ? true : false;\r\n const history = useHistory();\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n const isResponsiveLayout = (val: boolean) => {\r\n setResponsive(val);\r\n if (props.isResponsive) {\r\n props.isResponsive(val);\r\n }\r\n }\r\n useEffect(() => {\r\n appConfigAsync().then(async (config: any) => {\r\n setUrl(config?.PosConstant?.OpenRefinanceCalculator)\r\n });\r\n }, []);\r\n\r\n const redirectToCreateLoan = () => {\r\n history.push({ pathname: \"/account-information\" });\r\n }\r\n const openUhmWebsiteUrl = () => {\r\n var urls = url.split('/').slice(0, 3).join('/')\r\n window.open(urls + \"/\" + `${props.loanOfficerDetailInfo?.slugId}`);\r\n }\r\n const redirectEmailUrl = () => {\r\n window.location.href = `mailto:${props.loanOfficerDetailInfo?.email}`;\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Welcome Back')}>Welcome Back
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.userInfo.firstName+\"\"+ props.userInfo.lastName)}>{props.userInfo.firstName} {props.userInfo.lastName}

    \r\n
    \r\n { !isMultipleLoanPage && props.showLoanOfficerDetail && props.loanOfficerDetailInfo &&\r\n
    \r\n
    \r\n {props.loanOfficerDetailInfo.loanOfficerHeadshot === null ?\r\n :\r\n \r\n }\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Officer')}>Loan Officer
    \r\n
    \r\n
    {props.loanOfficerDetailInfo.firstName} {props.loanOfficerDetailInfo.lastName}
    \r\n\r\n \r\n
    \r\n {props.loanOfficerDetailInfo.email}\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n \r\n
    \r\n {!isMultipleLoanPage &&
    isResponsiveLayout(!responsive)}>\r\n DETAILS \r\n
    \r\n }\r\n \r\n );\r\n}","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { dashboardActionCreators } from \"../../actions/dashboardActions\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { DashboardInformation, DashboardState } from \"../../store/dashboardStore\";\r\nimport styles from \"./Dashboard.module.scss\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport 'react-circular-progressbar/dist/styles.css';\r\nimport appFeePaymentInfographic from \"assets/infographics/dashboard/appFeePayment.svg\";\r\nimport applicationInfographic from \"assets/infographics/dashboard/application.svg\";\r\nimport documentsInfographic from \"assets/infographics/dashboard/documents.svg\";\r\nimport prequalLetterInfographic from \"assets/infographics/dashboard/prequalLetter.svg\";\r\nimport signDisclosuresInfographic from \"assets/infographics/dashboard/signDisclosures.svg\";\r\nimport progressInfographic from \"assets/infographics/dashboard/progress.svg\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport { TaskMenuCreators } from \"../../actions/taskMenuAction\";\r\nimport { TaskMenuItem } from \"../../store/taskMenuStore\";\r\nimport { useHistory } from \"react-router\";\r\nimport Loading from \"../common/Loader\";\r\nimport { MilestoneNavigationServiceActionCreators } from \"../../actions/milestoneNavigationActions\";\r\nimport { TaskStatus, TaskStatusId, ProgressNavigationEnum } from \"../common/progressTracker/TaskStatus\";\r\nimport { EnumMilestoneNavigation } from \"../common/Enums/EnumMilestoneNavigation\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport { accountCreationActionCreators } from \"../../actions/accountCreationActions\";\r\nimport { Borrower } from \"../../store/accountCreationStore\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { appConfigAsync } from \"../../authConfig\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport { loanUpdateResponseActionCreators } from \"../../actions/loanUpdateResponseActions\";\r\nimport EncompassDown from \"../EncompassDown\";\r\nimport { loanActionCreators } from \"../../actions/loanActions\";\r\nimport { Modal, ModalBody, ModalHeader, ModalFooter } from 'reactstrap';\r\nimport * as accountInformationService from \"services/accountInformationService\";\r\nimport UhmLogo from \"assets/logo/uhm-logo.png\";\r\nimport moment from 'moment';\r\nimport { NavigationState } from \"../../store/navigationStore\";\r\nimport { InterimLoanSummary, LoanOfficerDetail, LoanSummaryState } from \"../../store/interimLoanSummaryStore\";\r\nimport LoanViewHeader from \"./LoanViewHeader\";\r\nimport { UserAccountState } from \"../../store/userAccountStore\";\r\nimport { loanState } from \"../../store/loanStore\";\r\nimport { interimLoanSummaryActionCreators } from \"../../actions/interimLoanSummaryActions\";\r\nimport * as loanSummaryService from \"../../services/interimLoanSummaryService\";\r\nimport * as AccountInformationActions from \"../../actions/accountInformationActions\";\r\nimport { getLoanCompletedStatus } from \"../../services/taskMenuService\";\r\nimport { readIsLoanFromEncompass } from \"services/accountInformationService\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport { reviewApplicationActionCreators } from \"../../actions/reviewApplicationActions\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype DashboardDetailsProps = {\r\n dashboardInformation: DashboardInformation;\r\n loanGuid: string;\r\n taskMenuItems: TaskMenuItem[];\r\n isLoading: boolean;\r\n milestoneStatus: string;\r\n borrower: Borrower;\r\n borrowerType: any;\r\n userFirstName: string;\r\n userLastName: string;\r\n userEmail: string;\r\n isLoanCompleted: boolean;\r\n isPopupFlag: boolean;\r\n loanSummary: LoanSummaryState;\r\n userAccountInformationObj: UserAccountState;\r\n interimLoanStagingIdOfLoan: number;\r\n submitFlag: boolean;\r\n loanFromEncompassMsgFlag: boolean;\r\n}\r\n & typeof dashboardActionCreators\r\n & typeof TaskMenuCreators\r\n & typeof MilestoneNavigationServiceActionCreators\r\n & typeof accountCreationActionCreators\r\n & typeof loanUpdateResponseActionCreators\r\n & typeof loanActionCreators\r\n & typeof interimLoanSummaryActionCreators\r\n & typeof AccountInformationActions\r\n & typeof reviewApplicationActionCreators\r\n & DashboardState;\r\n\r\nconst DashboardDetails = (props: DashboardDetailsProps) => {\r\n const [submit, setSubmit] = React.useState(false);\r\n const [isOpen, setisOpen] = React.useState(true);\r\n const [date, setDate] = React.useState(\"\");\r\n const [releaseDate, setReleaseDate] = React.useState(\"\");\r\n const [currentLoan, setCurrentLoan] = React.useState();\r\n const history = useHistory();\r\n const { isEncompassDown } = useSelector((state: ApplicationState) => state.loanUpdateResponse as LoanUpdateResponseState);\r\n const [responsive, setResponsive] = React.useState(false);\r\n const { isLoanFromEncompassFlag, isLoanCompleted } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n const [hideDocumentTileFlag, setHideDocumentTileFlag] = React.useState(true);\r\n const [loanOfficerDetail, setLoanOfficerDetail] = React.useState();\r\n const [userMessage, setUseMessage] = React.useState(false);\r\n const [isOpenUserMessage, setIsOpenUserMessage] = React.useState(true);\r\n const [isLoanFromEncompassMessage, setIsLoanFromEncompassMessage] = React.useState(true);\r\n const [isModal, setIsModal] = React.useState(false);\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n const [currentStagId, setCurrentStagId] = React.useState(0);\r\n\r\n const [signInError, setSignInError] = React.useState(false);\r\n const [signInErrorMsg, setSignInErrorMsg] = React.useState({});\r\n\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.RenameNavigation(\"Continue\", \"BACK TO ALL LOANS\");\r\n navigation.SetBackOnClick(() => {\r\n history.push({ pathname: \"/loan-view\" });\r\n });\r\n\r\n if (props.loanSummary.loanSummary.length < 2) {\r\n navigation.HideNavigation();\r\n }\r\n });\r\n\r\n const navigateToeConsent = () => {\r\n history.push({ pathname: \"/econsent\" });\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.loanGuid && !isEncompassDown) {\r\n props.getDashboardDetails(props.loanGuid, props.borrowerType);\r\n props.GetSubTaskItemLoanStatus(props.loanGuid);\r\n props.getMilestoneDetails(props.loanGuid);\r\n }\r\n getLoanCompletedStatus(props.loanGuid).then(response => {\r\n //isLoanCompleted = response.parsedBody;\r\n props.setIsLoanCompleted(response.parsedBody);\r\n });\r\n }, [props.loanGuid])\r\n\r\n React.useEffect(() => {\r\n let currentLoanSummary: InterimLoanSummary | undefined;\r\n let stagginId = history.location.state?.staggingId;\r\n\r\n if (props.loanGuid && !isEncompassDown) {\r\n props.getDashboardDetails(props.loanGuid, props.borrowerType);\r\n props.GetSubTaskItemLoanStatus(props.loanGuid);\r\n props.getMilestoneDetails(props.loanGuid);\r\n } else {\r\n props.setIsLoading(true);\r\n }\r\n\r\n\r\n if (history.location.state && stagginId) {\r\n\r\n setCurrentStagId(stagginId);\r\n props.setIsLoading(true);\r\n loanSummaryService.ReadActiveLoanUserDetail(stagginId).then((response: any) => {\r\n if (response.status != 200) {\r\n return;\r\n }\r\n return response.parsedBody as any;\r\n }).then((result: any) => {\r\n const consentStatus = result?.consentStatus;\r\n\r\n if (consentStatus === \"\" || consentStatus === null) {\r\n history.push({ pathname: \"/econsent\" });\r\n }\r\n\r\n const loanGuid = result?.loanGuid;\r\n let isLoanCompleted: any;\r\n\r\n if (consentStatus === \"Rejected\") {\r\n const msg =
    \r\n

    You have rejected the eConsent, you cannot continue applying for a Loan Application until you have agreed to the eConsent. Please contact your loan officer for further assistance

    \r\n

    Click HERE to continue for eConsent.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n return;\r\n }\r\n\r\n if (consentStatus === \"PrimaryRejected\") {\r\n const msg =
    \r\n

    The primary borrower has rejected the eConsent, you cannot continue applying for a Loan Application until the primary borrower has agreed to the eConsent. Please contact your loan officer for further assistance

    \r\n

    Click HERE to continue.

    \r\n
    ;\r\n setSignInErrorMsg(msg);\r\n setSignInError(true);\r\n return;\r\n }\r\n\r\n if (loanGuid) {\r\n props.setLoanGuid(loanGuid);\r\n\r\n getLoanCompletedStatus(loanGuid).then(response => {\r\n\r\n props.setIsLoanCompleted(response.parsedBody);\r\n isLoanCompleted = response.parsedBody;\r\n\r\n readIsLoanFromEncompass(loanGuid)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"Unable to fetch loan from encompass flag.\");\r\n }\r\n return response.parsedBody as any;\r\n })\r\n .then(data => {\r\n props.setIsLoanFromEncompassFlag(data);\r\n\r\n if (!isNullOrUndefined(isLoanCompleted) && data) {\r\n if (!isNullOrUndefined(consentStatus) && consentStatus !== \"Accepted\") {\r\n history.push({ pathname: \"/econsent\" });\r\n }\r\n else if (!isLoanCompleted) {\r\n history.push({ pathname: \"/contact-preference\" });\r\n }\r\n else if (isLoanCompleted) {\r\n history.push({ pathname: \"/dashboard\" });\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n console.log(error.message);\r\n });\r\n\r\n }).catch((error: Error) => {\r\n console.log(\"getLoanCompleted:\", error.message);\r\n });\r\n }\r\n }).catch((error: Error) => {\r\n console.error(\"Error occurred while reading ReadActiveLoanUserDetail data\", error);\r\n });\r\n\r\n currentLoanSummary = props.loanSummary.loanSummary.find(x => x.interimLoanStagingId === stagginId);\r\n if (currentLoanSummary) {\r\n setCurrentLoan(currentLoanSummary);\r\n props.setCurrentInterimLoanSummary(currentLoanSummary);\r\n props.getBorrowerInformation(BorrowerTypeEnum.Borrower, currentLoanSummary.interimLoanStagingId);\r\n props.getBorrowerInformation(BorrowerTypeEnum.CoBorrower, currentLoanSummary.interimLoanStagingId);\r\n }\r\n } else {\r\n stagginId = props.loanSummary.currentLoanSummary.interimLoanStagingId;\r\n setCurrentStagId(stagginId);\r\n props.getInterimLoanSummary(props.userEmail);\r\n }\r\n\r\n props.setInterimLoanStagingId(stagginId);\r\n\r\n if (props.userEmail) {\r\n props.setIsLoading(true);\r\n loanSummaryService.ReadLoanOfficerDetailByInterimLoanStagingAsync(props.interimLoanStagingIdOfLoan).then(\r\n (response: any) => {\r\n if (response.status != 200) {\r\n return;;\r\n }\r\n let loInfo = response.parsedBody as LoanOfficerDetail;\r\n setLoanOfficerDetail(loInfo);\r\n props.setIsLoading(false);\r\n });\r\n }\r\n\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!history.location.state && props.loanSummary?.loanSummary.length > 0) {\r\n\r\n const currentLoanSummary = props.loanSummary.loanSummary.find(x => x.interimLoanStagingId === currentStagId);\r\n if (currentLoanSummary) {\r\n setCurrentLoan(currentLoanSummary);\r\n\r\n props.setInterimLoanStagingId(currentLoanSummary.interimLoanStagingId);\r\n props.setCurrentInterimLoanSummary(currentLoanSummary);\r\n }\r\n }\r\n if (props.loanSummary?.loanSummary.length === 1) {\r\n navigation.HideNavigation();\r\n }\r\n }, [props.loanSummary?.loanSummary])\r\n\r\n\r\n React.useEffect(() => {\r\n if (props.dashboardInformation.isEncompassDown) {\r\n props.setIsEncompassDown(true);\r\n }\r\n if (props.dashboardInformation.loanOriginationDate) {\r\n setDate(props.dashboardInformation.loanOriginationDate);\r\n setReleaseDate('05/23/2022');\r\n }\r\n }, [props.dashboardInformation.isEncompassDown, props.dashboardInformation.loanOriginationDate])\r\n\r\n\r\n const navigateRoute = (routeName: string, args: string) => {\r\n history.push({ pathname: \"/\" + routeName, state: { args: args } });\r\n }\r\n\r\n const signOut = async () => {\r\n if (!isNullOrWhiteSpace(props.loanGuid) && currentLoan) {\r\n await accountInformationService.signOut(props.borrowerType, props.loanGuid, currentLoan.interimLoanStagingId);\r\n }\r\n history.push(\"/\");\r\n window.location.reload();\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.isPopupFlag && props.isLoanCompleted && !isLoanFromEncompassFlag) {\r\n setSubmit(true);\r\n }\r\n if (props.submitFlag) {\r\n setUseMessage(true);\r\n //props.submitCheck(false);\r\n }\r\n }, [])\r\n\r\n const openPaymentWindow = () => {\r\n appConfigAsync().then((config: any) => {\r\n const paymentUrl = config.PaymentDashboardUrl;\r\n const borrowerType = props.borrowerType === BorrowerTypeEnum.Borrower ? 0 : 1;\r\n window.open(`${paymentUrl}?loanGuid=${props.loanGuid}&borrowerType=${borrowerType}`, \"_self\", \"noopener\");\r\n });\r\n }\r\n\r\n const userMessageToggleModle = () => {\r\n setIsOpenUserMessage(!isOpenUserMessage);\r\n if (isOpenUserMessage) {\r\n setIsModal(true);\r\n }\r\n }\r\n\r\n const toggleModle = () => {\r\n setisOpen(!isOpen)\r\n props.setDocumentPopupFlag(false);\r\n props.submitCheckFlag(false);\r\n }\r\n const loanFromEncompassModle = () => {\r\n setIsLoanFromEncompassMessage(!isLoanFromEncompassMessage);\r\n props.setLoanFromEncompassMessageFlag(false);\r\n\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n props.loanFromEncompassMsgFlag && isLoanFromEncompassFlag ?\r\n \r\n \r\n
    \r\n \"Union\r\n
    \r\n \r\n
    \r\n

    Thank you for setting up your UHMNOW account! Your application is completed.\r\n You will be notified when your LO activates your Documents module!

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    : \"\"\r\n }\r\n\r\n {submit && props.isPopupFlag && (!props.submitFlag ? true : isModal) ?\r\n \r\n \r\n
    \r\n \"Union\r\n

    Doc Upload

    \r\n

    Please access the Document Upload module and provide the outstanding documents associated with your application.

    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n : \"\"}\r\n {userMessage ?\r\n \r\n \r\n
    \r\n \"Union\r\n
    \r\n \r\n
    \r\n

    Thank you for completing our loan application. You should receive a response from {props.dashboardInformation.loanOfficerFirstName} {props.dashboardInformation.loanOfficerLastName} shortly.\r\n We appreciate your business and look forward to\r\n helping you achieve homeownership.

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    : \"\"\r\n }\r\n\r\n\r\n {signInError ?
    \r\n {signInErrorMsg}\r\n
    :\r\n\r\n (props.dashboardInformation.isEncompassDown || isEncompassDown) ?\r\n :\r\n props.isLoading ? :\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Property')}>Property
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(currentLoan?.zip !== undefined && currentLoan?.zip > 0 ? currentLoan?.address:\"\")}>{currentLoan?.address}

    {currentLoan?.address &&
    }\r\n

    stopSpeech()} onMouseOver={() => textToSpeech(currentLoan?.zip !== undefined && currentLoan?.zip > 0 ? currentLoan?.city + \"\" + currentLoan?.state + \"\" + currentLoan?.zip:\"\")}>{currentLoan?.city}, {currentLoan?.state} {currentLoan?.zip}

    \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Number')}>Loan Number:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(currentLoan?.loanNumber)}>{currentLoan?.loanNumber}

    \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Amount')}>Loan Amount:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(currentLoan?.loanAmount)}>${currentLoan?.loanAmount}

    \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Term')}>Loan Term:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(currentLoan?.loanTerm !== undefined && currentLoan?.loanTerm > 0 ? currentLoan?.loanTerm : \"\")}>{currentLoan?.loanTerm !== undefined && currentLoan?.loanTerm > 0 ? currentLoan?.loanTerm : \"\"}

    \r\n
    \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Type')}>Loan Type:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(currentLoan?.loanType)}>{currentLoan?.loanType}

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {props.taskMenuItems && props.taskMenuItems.length > 0 &&\r\n
    \r\n\r\n
    navigateRoute(props.taskMenuItems[0].path, props.taskMenuItems[0].subTasks.filter(x => x.subTaskStatusId === TaskStatusId.InProgress)[0].queryParameter)}>\r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Current Step')}>Current Step:
    \r\n {isLoanFromEncompassFlag && isLoanCompleted ?

    stopSpeech()} onMouseOver={() => textToSpeech('Completed')}>Completed

    : < h4 onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.taskMenuItems[0].name)}> {props.taskMenuItems[0].name} }\r\n
    \r\n\r\n
    \r\n }\r\n {props?.taskMenuItems?.length < 1 &&
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Current Step')}>Current Step
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Application Complete')}>Application Complete

    \r\n
    }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n stopSpeech()} onMouseOver={() => textToSpeech('Review Application')}>Review Application \r\n
    \r\n\r\n {(isLoanFromEncompassFlag ? hideDocumentTileFlag : true) &&\r\n\r\n
    navigateRoute(ProgressNavigationEnum.BorrowerDocuments, \"\")}>\r\n
    \r\n
    \r\n
    \r\n {props.dashboardInformation.documentSubmitted != props.dashboardInformation.documentRequested\r\n && props.dashboardInformation.documentSubmitted + '/' + props.dashboardInformation.documentRequested}\r\n Uploaded
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Documents')}>Documents

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n stopSpeech()} onMouseOver={() => textToSpeech('View Document')}>View Document \r\n
    }\r\n\r\n
    navigateRoute(ProgressNavigationEnum.MilestoneProgress, \"\")}>\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Progress')}>Loan Progress
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Processing the Application')}>Processing the Application

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Learn more \r\n
    \r\n\r\n\r\n\r\n {props.dashboardInformation.isDisclosureAuthenticated === true &&\r\n\r\n
    window.open(\"/document\", \"_blank\", \"noopener\")}>\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Sign Disclosures')}>Sign Disclosures
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Sign Disclosures')}>Sign Disclosures

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Learn more \r\n
    \r\n }\r\n\r\n {(props.dashboardInformation.isPreQualInitiate && props.dashboardInformation.loanPurpose === \"Purchase\" && !isLoanFromEncompassFlag\r\n && (Date.parse(date) < Date.parse(moment(new Date()).format(releaseDate)))) &&\r\n\r\n
    navigateRoute(ProgressNavigationEnum.SystematicLetter, \"\")}>\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Prequalification Letter')}>Prequalification Letter
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('Prequalification Letter')}>Prequalification Letter

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Learn more \r\n\r\n
    \r\n }\r\n {(props.dashboardInformation.loanPurpose === \"Purchase\" && props.dashboardInformation.preApprovalLetterFlag) &&\r\n\r\n
    navigateRoute(ProgressNavigationEnum.BorrowerPreApprovalLetter, \"\")}>\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Pre-approval Letter')}>Pre-approval Letter
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('You are Pre - Approved')}>You're Pre-Approved

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n View Your Letter \r\n
    \r\n\r\n }\r\n\r\n {(props.dashboardInformation.appFeeComplete === false ?\r\n\r\n
    openPaymentWindow()}>\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('App Fee Payment')}>App Fee Payment
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech('App Fee Payment')}>App Fee Payment

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Make Your Payment \r\n
    : \"\"\r\n )}\r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n }\r\n\r\n\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation, accountCreation, dashboard, milestoneNavigation, userAccountInformation, interimLoanSummary } = state;\r\n\r\n const taskMenu = state.taskMenu;\r\n let loanGuid;\r\n let dashboardInformation;\r\n let taskMenuItems;\r\n let milestoneStatus;\r\n let borrower;\r\n let isLoading = dashboard?.isLoading;\r\n let borrowerType;\r\n const isLoanCompleted = state.loan?.isLoanCompleted;\r\n let isPopupFlag = state.taskMenu?.isPopupFlag;\r\n let submitFlag = state.reviewApplication?.submitCheckFlag;\r\n let loanFromEncompassMsgFlag = state.reviewApplication?.loanFromEncompassMessageFlag;\r\n\r\n\r\n const loanSummary = interimLoanSummary;\r\n const interimLoanStagingIdOfLoan = state.loan?.interimLoanStagingId;\r\n\r\n let userAccountInformationObj: UserAccountState | undefined;\r\n userAccountInformationObj = userAccountInformation;\r\n\r\n if (accountInformation?.loanGuid) {\r\n loanGuid = accountInformation.loanGuid;\r\n }\r\n\r\n if (userAccountInformation?.borrowerType) {\r\n borrowerType = userAccountInformation?.borrowerType;\r\n }\r\n\r\n if (accountCreation?.borrower) {\r\n borrower = accountCreation.borrower;\r\n }\r\n\r\n if (dashboard?.dashboardInformation) {\r\n dashboardInformation = dashboard.dashboardInformation;\r\n }\r\n\r\n if (taskMenu?.data) {\r\n taskMenuItems = taskMenu?.data.filter((asset, index) => (asset.taskStatusId === TaskStatusId.InProgress));\r\n }\r\n\r\n const userFirstName = userAccountInformation?.firstName;\r\n const userLastName = userAccountInformation?.lastName;\r\n const userEmail = userAccountInformation?.email;\r\n\r\n return {\r\n loanGuid,\r\n dashboardInformation,\r\n taskMenuItems,\r\n isLoading,\r\n milestoneStatus,\r\n borrower,\r\n borrowerType,\r\n userFirstName,\r\n userLastName,\r\n userEmail,\r\n isLoanCompleted,\r\n isPopupFlag,\r\n loanSummary,\r\n userAccountInformationObj,\r\n interimLoanStagingIdOfLoan,\r\n submitFlag,\r\n loanFromEncompassMsgFlag\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getDashboardDetails: (loanGuid: string, borrowerType: string) => {\r\n dispatch(dashboardActionCreators.getDashboardDetails(loanGuid, borrowerType));\r\n },\r\n GetSubTaskItemLoanStatus: (loanGuid: string) => {\r\n dispatch(TaskMenuCreators.GetSubTaskItemLoanStatus(loanGuid));\r\n },\r\n getMilestoneDetails: (loanGuid: string) => {\r\n dispatch(MilestoneNavigationServiceActionCreators.getMilestoneDetails(loanGuid));\r\n },\r\n getBorrowerInformation: (borrowerType: string, interimLoanStagingId: number) => {\r\n dispatch(accountCreationActionCreators.getBorrowerInformation(borrowerType, interimLoanStagingId));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n setIsLoanCompleted: (value?: boolean) => {\r\n dispatch(loanActionCreators.setIsLoanCompleted(value));\r\n },\r\n setDocumentPopupFlag: (value: boolean) => {\r\n dispatch(TaskMenuCreators.setDocumentPopupFlag(value));\r\n },\r\n setCurrentInterimLoanSummary: (data: InterimLoanSummary) => {\r\n dispatch(interimLoanSummaryActionCreators.setCurrentInterimLoanSummary(data));\r\n },\r\n setLoanGuid: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.setLoanGuid(value));\r\n },\r\n setIsLoading: (value: boolean) => {\r\n dispatch(dashboardActionCreators.setIsLoading(value));\r\n },\r\n getInterimLoanSummary: (email: string) => {\r\n dispatch(interimLoanSummaryActionCreators.getInterimLoanSummary(email));\r\n },\r\n setInterimLoanStagingId: (value?: number) => {\r\n dispatch(loanActionCreators.setInterimLoanStagingId(value));\r\n },\r\n setIsLoanFromEncompassFlag: (value?: boolean) => {\r\n dispatch(loanActionCreators.setIsLoanFromEncompassFlag(value));\r\n },\r\n // ReviewApplication\r\n submitCheckFlag: (value: boolean) => {\r\n dispatch(reviewApplicationActionCreators.submitCheckFlag(value));\r\n },\r\n setLoanFromEncompassMessageFlag: (value: boolean) => {\r\n dispatch(reviewApplicationActionCreators.setLoanFromEncompassMessageFlag(value));\r\n }\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(DashboardDetails as any);","export enum EnumMilestoneNavigation {\r\n CompletingTheApplication = \"Completing The Application\",\r\n ProcessingTheApplication = \"Processing The Application\",\r\n CreditAnalysis = \"Credit Analysis\",\r\n ReadyForClosing = \"Ready For Closing\",\r\n Closed = \"Closed\"\r\n}\r\n\r\nexport let MilestoneDetails = {\r\n completingTheApplication: {\r\n value: 'Completing The Application',\r\n videos: [\"Loan Estimate\", \"Documentation\", \"Appraisal\"],\r\n keyDate: \"Estimated Closing Date\",\r\n description: \"At this stage in the loan application process, there are several documents you will need to provide when applying for a home loan. Select the Requested Documentation tab to view which documents you’ll need to submit to Union Home Mortgage (UHM). Please be advised additional documentation may be requested as we proceed through the application process. Lastly, an appraisal will be scheduled by your Loan Officer to confirm the purchase price aligns with the home’s value.\"\r\n },\r\n processingTheApplication: {\r\n value: 'Processing The Application',\r\n videos: [\"Processing\"],\r\n keyDate: \"Estimated Closing Date\",\r\n description: \"At this stage in the loan application process, UHM has received your financial documentation and reviewing it now. We will verify your assets, income and employment status and credit, as well as evaluate your application disclosures.\"\r\n },\r\n creditAnalysis: {\r\n value: 'Credit Analysis',\r\n videos: [\"Underwriting\", \"Conditional Approval\"],\r\n keyDate: \"Estimated Closing Date\",\r\n description: \"At this stage in the loan application process, your loan is being reviewed by UHM’s Underwriting team. We will thoroughly review your assets, income and employment status, credit, and appraisal documents to ensure they meet government regulations and standards.\\n Based on the documentation you’ve submitted, an underwriter will determine your debt-to-income (DTI) ratio and set a credit limit on the loan. If the loan is denied, your Loan Officer will contact you to discuss next steps. Finally, any incomplete documents required for loan approval will appear under the Outstanding Documentation tab.\"\r\n },\r\n readyForClosing: {\r\n value: 'Ready For Closing',\r\n videos: [\"Clear to close\"],\r\n keyDate: \"Actual Closing Date\",\r\n description: \"You’re at the final stage in the loan application process. Currently, your loan is being reviewed by UHM’s Closing team. We will work with a title/escrow company or attorney to finalize closing costs. Your Loan Officer will contact you with the final cost of your closing.\"\r\n },\r\n closed: {\r\n value: 'Closed',\r\n videos: [\"Congrats\"],\r\n keyDate: \"\",\r\n description: \"Congratulations! At this stage in the loan application process, your closing documents have been sent to your title/escrow company or attorney. All parties involved will sign the closing package. \"\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport styles from \"./milestoneNavigation.module.scss\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst DefaultMilestoneDescription = () => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Wondering What Each Step Means\")}>Wondering What Each Step Means?

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Click One For A Description\")}>Click One For A Description!

    \r\n
    \r\n );\r\n};\r\n\r\nexport default DefaultMilestoneDescription;\r\n","import * as React from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport styles from \"./LoanOfficer.module.scss\";\r\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs';\r\nimport 'react-tabs/style/react-tabs.css';\r\nimport Infographic from \"../common/Infographic\";\r\nimport applicationFeeStatusInfographic from \"../.././assets/infographics/loanOfficerView/ApplicationFeeStatus.svg\";\r\nimport itemSentInfographic from \"../.././assets/infographics/loanOfficerView/ItemSent.svg\";\r\nimport preApproval from \"assets/infographics/dashboard/pre-approval.svg\";\r\nimport viewCreditReportInfographic from \"../.././assets/infographics/loanOfficerView/ViewCreditReport.svg\";\r\nimport appFeeCollected from \"../.././assets/infographics/loanOfficerView/AppFeeCollected.svg\";\r\nimport * as LoanOfficerMainTabActions from \"../../actions/loanOfficerMainTabActions\";\r\nimport * as LoanOfficerMainTabStore from \"../../store/LoanOfficerMainTabStore\";\r\nimport * as loanOfficerMainTabService from \"../.././services/loanOfficerMainTabService\";\r\nimport LOMainTabDocumentViewer from \"./LOMainTabDocumentViewer\";\r\nimport { useNavigation } from \"hooks/useNavigation\";\r\nimport { LoanOfficerMainTabMessage } from \"./LoanOfficerMainTabMessage\";\r\nimport * as systematicLetterService from \"../../services/systematicLetterService\";\r\nimport * as SystematicLetterStore from \"../../store/systematicLetterStore\";\r\nimport * as SystematicLetterActions from \"../../actions/systematicLetterActions\";\r\nimport LoanOfficerPreQualLetterDisplay from \"./LoanOfficerPreQualLetterDisplay\";\r\nimport * as consumerCreditAuthorizationService from \"../.././services/consumerCreditAuthorizationService\";\r\nimport MissingAuthorizationAlert from \"./MissingAuthorizationAlert\";\r\nimport MissingPreQualLetter from \"./MissingPreQualLetter\";\r\nimport { useHistory } from 'react-router-dom';\r\nimport LoanOfficerDocuments from \"../documents/loanOfficer/LoanOfficerDocuments\";\r\nimport { appConfigAsync } from \"../../authConfig\";\r\nimport Loading from \"../common/Loader\";\r\nimport * as userAcountActions from \"../../actions/userAcount\";\r\nimport * as accountInformationActions from \"../../actions/accountInformationActions\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport * as accountInformationService from \"../../services/accountInformationService\";\r\nimport moment from \"moment\";\r\nimport { loanState } from \"../../store/loanStore\";\r\n\r\ntype LoanOfficerMainTabProps = LoanOfficerMainTabStore.LoanOfficerMainTabState &\r\n{\r\n appFeeData: LoanOfficerMainTabStore.LoanOfficerMainTab;\r\n preQualData: SystematicLetterStore.SystematicLetter;\r\n history: any;\r\n isLoading: boolean;\r\n selectedTab: number;\r\n loanGuid: string;\r\n userEmail: string;\r\n loanType: string;\r\n propertyEstimatedValueAmount: number;\r\n interimLoanStagingId: number;\r\n} &\r\n typeof LoanOfficerMainTabActions.loanOfficerMainTabActionCreators &\r\n typeof SystematicLetterActions.systematicLetterActionCreators &\r\n typeof userAcountActions.userAcountActionCreators &\r\n typeof accountInformationActions.accountInformationActionCreators;\r\n\r\nexport enum LoanOfficerMainTabStep {\r\n LoanOfficerMainTab = 1,\r\n LoanOfficerCreditReportViewer = 2,\r\n LoanOfficerPreQualLetter = 3,\r\n MissingAuthorization = 4,\r\n MissingPreQualLetter = 5,\r\n DocumentTab = 6,\r\n LiveApplicationTab = 7\r\n}\r\nconst LoanOfficerMainTab = (props: LoanOfficerMainTabProps) => {\r\n const [currentStep, changeStep] = React.useState(LoanOfficerMainTabStep.LoanOfficerMainTab);\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const [isCreditLoading, setCreditLoading] = React.useState(false);\r\n const [viewCreditReport, setViewCreditReport] = React.useState(false);\r\n const [viewPreQual, setPreQualLetter] = React.useState(false);\r\n const navigation = useNavigation();\r\n const [liveChatUrl, setLiveChatUrl] = React.useState('');\r\n const [showLoader, setLoader] = React.useState(false);\r\n const [isEncompassDown, setEncompassDown] = React.useState(false);\r\n const [date, setDate] = React.useState(\"\");\r\n const [releaseDate, setReleaseDate] = React.useState(\"\");\r\n const history = useHistory();\r\n const { isLoanFromEncompassFlag } = useSelector((state: ApplicationState) => state.loan as loanState);\r\n\r\n React.useEffect(() => {\r\n appConfigAsync().then((config: any) => {\r\n setLiveChatUrl(config.LiveChatDashboardUrl);\r\n });\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (props.loanGuid && props.userEmail) {\r\n props.setLoanOfficerViewLoanGuid(props.loanGuid);\r\n getApplicationFee();\r\n } else {\r\n history.push({ pathname: \"/\" });\r\n }\r\n }, [props.loanGuid]);\r\n \r\n React.useEffect(() => {\r\n if (props.appFeeData.loanOriginationDate) {\r\n setDate(props.appFeeData.loanOriginationDate);\r\n setReleaseDate('05/23/2022')\r\n }\r\n }, [props.appFeeData.loanOriginationDate])\r\n\r\n const getApplicationFee = async () => {\r\n if (props.loanGuid) {\r\n setLoader(true);\r\n await accountInformationService.checkIsEncompassDown().then(async res => {\r\n if (res.ok) {\r\n let result = res.parsedBody as boolean;\r\n setLoader(false);\r\n if (!result) {\r\n setLoader(true);\r\n await loanOfficerMainTabService.getApplicationFee(props.loanGuid).then((result: any) => {\r\n if (result.ok && result.parsedBody) {\r\n const appFeeData = result.parsedBody as LoanOfficerMainTabStore.LoanOfficerMainTab;\r\n props.setApplicationFee(appFeeData);\r\n }\r\n setLoader(false);\r\n });\r\n }\r\n else {\r\n setEncompassDown(true);\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n setLoader(false);\r\n throw new Error(`Following error message occurred ${error.message}`);\r\n });\r\n ;\r\n }\r\n }\r\n\r\n const getCreditAuthorizationStatus = async () => {\r\n if (props.interimLoanStagingId && props.interimLoanStagingId >0) {\r\n setCreditLoading(true);\r\n const result = await consumerCreditAuthorizationService.getConsumerCreditAuthorizationStatus(props.interimLoanStagingId);\r\n if (result.ok) {\r\n const status = result.parsedBody as boolean;\r\n setViewCreditReport(false);\r\n setCreditLoading(false);\r\n changeStep(LoanOfficerMainTabStep.MissingAuthorization);\r\n } else {\r\n setCreditLoading(false);\r\n }\r\n }\r\n }\r\n\r\n const getCreditReports = async () => {\r\n if (props.loanGuid) {\r\n setCreditLoading(true);\r\n var result = await loanOfficerMainTabService.getCreditReportAttachment(props.loanGuid ?? \"\");\r\n if (result.ok && result.parsedBody != undefined && result.parsedBody.length > 0) {\r\n setCreditLoading(false);\r\n const creditReports = result.parsedBody as LoanOfficerMainTabStore.DocumentAttachment[];\r\n if (creditReports != undefined && creditReports.length > 0) {\r\n props.setCreditReports(creditReports);\r\n setViewCreditReport(true);\r\n changeStep(LoanOfficerMainTabStep.LoanOfficerCreditReportViewer);\r\n }\r\n } else {\r\n getCreditAuthorizationStatus();\r\n }\r\n }\r\n }\r\n\r\n const viewPreQualLetter = () => {\r\n if (props.loanGuid) {\r\n setIsLoading(true);\r\n systematicLetterService.getSystematicLetterData(props.loanGuid ?? \"\")\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \");\r\n }\r\n return response.parsedBody as SystematicLetterStore.SystematicLetter;\r\n })\r\n .then((data: SystematicLetterStore.SystematicLetter) => {\r\n if (isNullOrWhiteSpace(data.firstName) ||\r\n isNullOrWhiteSpace(data.lastName) ||\r\n isNullOrWhiteSpace(data.loanAmount) ||\r\n isNullOrWhiteSpace(data.subjectPropertyAddress) ||\r\n isNullOrWhiteSpace(data.propertyType)) {\r\n changeStep(LoanOfficerMainTabStep.MissingPreQualLetter);\r\n }\r\n else {\r\n props.getData(data);\r\n setPreQualLetter(true);\r\n\r\n changeStep(LoanOfficerMainTabStep.LoanOfficerPreQualLetter);\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: Error) => {\r\n setIsLoading(false);\r\n console.error(error);\r\n });\r\n }\r\n };\r\n\r\n const openLiveChatWindow = () => {\r\n window.open(liveChatUrl, \"_blank\"); //to open new page\r\n }\r\n\r\n const navigateRoute = () => {\r\n history.push({ pathname: \"/pre-approval-Letter\", state: { args: \"loanOfficer\" } });\r\n }\r\n\r\n const onBack = () => {\r\n if (currentStep === LoanOfficerMainTabStep.LoanOfficerCreditReportViewer) {\r\n setViewCreditReport(false);\r\n changeStep(LoanOfficerMainTabStep.LoanOfficerMainTab);\r\n }\r\n if (currentStep === LoanOfficerMainTabStep.LoanOfficerPreQualLetter) {\r\n setPreQualLetter(false);\r\n changeStep(LoanOfficerMainTabStep.LoanOfficerMainTab);\r\n }\r\n if (currentStep === LoanOfficerMainTabStep.MissingAuthorization) {\r\n setViewCreditReport(false);\r\n changeStep(LoanOfficerMainTabStep.LoanOfficerMainTab);\r\n }\r\n if (currentStep === LoanOfficerMainTabStep.MissingPreQualLetter) {\r\n setPreQualLetter(false);\r\n changeStep(LoanOfficerMainTabStep.LoanOfficerMainTab);\r\n }\r\n };\r\n\r\n const setSelectedTab = (index: number) => {\r\n props.setSelectedTab(index);\r\n }\r\n\r\n const backToTab = (tab: number) => {\r\n navigation.SetBackOnClick(\r\n () => onBack()\r\n );\r\n if (tab === 0) {\r\n getApplicationFee();\r\n setViewCreditReport(false);\r\n setPreQualLetter(false);\r\n changeStep(LoanOfficerMainTabStep.LoanOfficerMainTab);\r\n setSelectedTab(0);\r\n }\r\n else if (tab === 1) {\r\n setSelectedTab(1);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n setSelectedTab(index)}>\r\n \r\n backToTab(0)} >Main Page\r\n backToTab(1)}>Documents\r\n \r\n\r\n {showLoader ? :\r\n
    \r\n \r\n
    \r\n <>\r\n {(viewCreditReport && currentStep == LoanOfficerMainTabStep.LoanOfficerCreditReportViewer) &&\r\n <>\r\n \r\n {navigation.ResetContinue()}\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n \r\n }\r\n {(!viewCreditReport && currentStep == LoanOfficerMainTabStep.MissingAuthorization) &&\r\n <>\r\n \r\n {navigation.ResetContinue()}\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n \r\n }\r\n {(viewPreQual && currentStep == LoanOfficerMainTabStep.LoanOfficerPreQualLetter) &&\r\n <>\r\n \r\n {navigation.ResetContinue()}\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n \r\n }\r\n {(!viewPreQual && currentStep == LoanOfficerMainTabStep.MissingPreQualLetter) &&\r\n <>\r\n \r\n {navigation.ResetContinue()}\r\n {navigation.SetBackOnClick(\r\n () => onBack()\r\n )}\r\n \r\n }\r\n {(!viewCreditReport && !viewPreQual && currentStep == LoanOfficerMainTabStep.LoanOfficerMainTab) &&\r\n
    \r\n
    \r\n
    \r\n <>\r\n \r\n \r\n \r\n

    POS Loan Identifier

    \r\n \r\n
    \r\n
    \r\n

    Application Fee Status

    \r\n
    \r\n
    \r\n {((!props.appFeeData.appFeeCollectedStatus && props.appFeeData.appFeeCollectedStatus != undefined) &&\r\n (!props.appFeeData.appFeePendingStatus && props.appFeeData.appFeePendingStatus != undefined)) ?\r\n :\r\n (props.appFeeData.appFeeCollectedStatus) ? :\r\n (props.appFeeData.appFeePendingStatus) ? \r\n : <> }\r\n\r\n
    \r\n\r\n {((!props.appFeeData.appFeeCollectedStatus && props.appFeeData.appFeeCollectedStatus != undefined) &&\r\n (!props.appFeeData.appFeePendingStatus && props.appFeeData.appFeePendingStatus != undefined)) ?\r\n

    {LoanOfficerMainTabMessage.ApplicationFeeNotCollected}

    :\r\n (props.appFeeData.appFeeCollectedStatus) ?

    Application Fee Collected

    :\r\n (props.appFeeData.appFeePendingStatus) ?

    Application Fee Pending

    \r\n : <>}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isLoanFromEncompassFlag &&
    \r\n
    getCreditReports()}>\r\n {isCreditLoading ?
    :\r\n }\r\n
    \r\n
    View Borrower Credit Report
    \r\n
    \r\n }\r\n {isLoanFromEncompassFlag && props.appFeeData.loanPurpose === \"Purchase\" &&\r\n (Date.parse(date) < Date.parse(moment(new Date()).format(releaseDate)))\r\n &&\r\n
    \r\n
    viewPreQualLetter()}>\r\n {isLoading ?
    :\r\n \r\n }\r\n
    \r\n\r\n
    View Pre-Qual Letter
    \r\n
    \r\n }\r\n\r\n {props.appFeeData.loanPurpose === \"Purchase\" &&\r\n
    \r\n
    navigateRoute()}>\r\n \r\n
    \r\n
    Pre-Approval Letter
    \r\n
    \r\n }\r\n\r\n
    x.choiceType === \"Email\") ? styles.contactChoices : `${styles.contactChoices} ${styles.contactChoices1}`}>\r\n {props.appFeeData.contactChoices != undefined && props.appFeeData.contactChoices.length > 0 ? props?.appFeeData?.contactChoices?.filter(x => x.choiceValue !== null).map((choice, index) => (\r\n

    \r\n {choice.choiceValue}

    \r\n )) :

    No data found

    }\r\n
    Preferred Borrower Contact
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n }\r\n \r\n
    \r\n
    \r\n \r\n <>\r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { loanOfficerMainTab, systematicLetter } = state;\r\n let appFeeData: any;\r\n let preQualData: any;\r\n if (loanOfficerMainTab && loanOfficerMainTab.data) {\r\n appFeeData = loanOfficerMainTab.data;\r\n }\r\n if (systematicLetter && systematicLetter.data) {\r\n preQualData = systematicLetter.data;\r\n }\r\n const interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n const selectedTab: any = loanOfficerMainTab?.selectedTab;\r\n const loanGuid = state.accountInformation?.loanGuid;\r\n const userEmail = state.userAccountInformation?.email;\r\n\r\n return {\r\n appFeeData,\r\n preQualData,\r\n selectedTab,\r\n loanGuid,\r\n userEmail,\r\n interimLoanStagingId\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n\r\n getApplicationFee: (loanGuid: string) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.getApplicationFee(loanGuid));\r\n },\r\n sendSecureInvitation: (loanGuid: string) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.sendSecureInvitation(loanGuid));\r\n },\r\n setCreditReports: (creditReports: LoanOfficerMainTabStore.DocumentAttachment[]) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.setCreditReports(creditReports));\r\n },\r\n setApplicationFee: (data: LoanOfficerMainTabStore.LoanOfficerMainTab) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.setApplicationFee(data));\r\n },\r\n getData: (data: SystematicLetterStore.SystematicLetter) => {\r\n dispatch(SystematicLetterActions.systematicLetterActionCreators.getData(data));\r\n },\r\n setLoanOfficerViewLoanGuid: (loanGuid: string) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.setLoanOfficerViewLoanGuid(loanGuid));\r\n },\r\n setSelectedTab: (selectedTab: number) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.setSelectedTab(selectedTab));\r\n }\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(LoanOfficerMainTab as any);\r\n","import * as React from \"react\";\r\n\r\nconst LoadScripts = (props: { html: any }) => {\r\n React.useEffect(() => {\r\n let js = document.getElementsByTagName('script')[0];\r\n let sfjs = document.getElementsByTagName('script')[0];\r\n js = document.createElement('script');\r\n js.id = 'surefire-interactives';\r\n js.src = 'https://sf3.tomnx.com/interactives/embed-interactives.js';\r\n if (sfjs && sfjs.parentNode) {\r\n sfjs.parentNode.insertBefore(js, sfjs);\r\n }\r\n }, []);\r\n\r\n return (<>\r\n {props.html}\r\n )\r\n}\r\nexport default LoadScripts;\r\n","import * as React from \"react\";\r\nimport styles from \"./milestoneNavigation.module.scss\";\r\nimport { MilestoneDetails } from \"../common/Enums/EnumMilestoneNavigation\";\r\nimport { MilestoneNavigationState } from \"../../store/MilestoneNavigationStore\";\r\nimport { Modal, ModalBody } from \"reactstrap\";\r\nimport LoadScript from \"./LoadScript\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\nconst MilestoneDescription = (props: { milestone: any, data: MilestoneNavigationState, loanPurpose: any }) => {\r\n const [modal, setModal] = React.useState(false);\r\n const [modalScript, setModalScript] = React.useState(\"\");\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n const renderSwitch = (name: any) => {\r\n if (props.loanPurpose === \"Purchase\") {\r\n switch (name) {\r\n case 'Loan Estimate':\r\n return
    \r\n } />;\r\n case 'Documentation':\r\n return
    \r\n } />;\r\n case 'Appraisal':\r\n return
    \r\n } />;\r\n case 'Processing':\r\n return
    \r\n } />;\r\n case 'Underwriting':\r\n return
    \r\n } />;\r\n case 'Conditional Approval':\r\n return
    \r\n } />;\r\n case 'Clear to close':\r\n return \r\n } />;\r\n case 'Congrats':\r\n return \r\n } />;\r\n default:\r\n return \"\";\r\n }\r\n } else {\r\n switch (name) {\r\n case 'Loan Estimate':\r\n return \r\n } />;\r\n case 'Documentation':\r\n return \r\n } />;\r\n case 'Appraisal':\r\n return \r\n } />;\r\n case 'Processing':\r\n return \r\n } />;\r\n case 'Underwriting':\r\n return \r\n } />;\r\n case 'Conditional Approval':\r\n return \r\n } />;\r\n case 'Clear to close':\r\n return \r\n } />;\r\n case 'Congrats':\r\n return \r\n } />;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n }\r\n\r\n const renderModal = () => {\r\n // Check to see if there's a selected video. If so, render it.\r\n if (!isNullOrWhiteSpace(modalScript)) {\r\n return (\r\n \r\n \r\n
    \r\n {renderSwitch(modalScript)}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.milestone?.value)}>{props.milestone?.value}

    \r\n
    \r\n {props.milestone?.keyDate &&
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.milestone?.keyDate)}>{props.milestone?.keyDate}

    \r\n {props.milestone?.keyDate === MilestoneDetails.completingTheApplication.keyDate &&\r\n stopSpeech()} onMouseOver={() => textToSpeech(new Date(props.data?.estimatedClosingDate) >= new Date() ? props.data?.estimatedClosingDate : \"TBD\")}>{new Date(props.data?.estimatedClosingDate) >= new Date() ? props.data?.estimatedClosingDate : \"TBD\"}\r\n }\r\n {props.milestone?.keyDate === MilestoneDetails.readyForClosing.keyDate &&\r\n stopSpeech()} onMouseOver={() => textToSpeech(props.data?.actualClosingDate)}>{props.data?.actualClosingDate}\r\n }\r\n
    \r\n }\r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(\"Educational Videos\")}>Educational Videos

    \r\n
    \r\n {props.milestone?.videos.map((value: any) => (\r\n {\r\n setModal(!modal);\r\n setModalScript(value);\r\n }}\r\n className={styles.cursor} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(value)}\r\n >\r\n {value}\r\n \r\n\r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(props.milestone?.description)}>\r\n {props.milestone?.description}\r\n

    \r\n
    \r\n
    \r\n {renderModal()}\r\n \r\n );\r\n};\r\n\r\nexport default MilestoneDescription;\r\n","import * as React from \"react\";\r\nimport styles from \"./milestoneNavigation.module.scss\";\r\nimport { connect } from \"react-redux\";\r\nimport Infographic from \"../common/Infographic\";\r\nimport ClosedInfographic from \"assets/infographics/milestoneNavigation/Closed.svg\";\r\nimport CompletingTheApplicationInfographic from \"assets/infographics/milestoneNavigation/CompletingTheApplication.svg\";\r\nimport CreditAnalysisInfographic from \"assets/infographics/milestoneNavigation/CreditAnalysis.svg\";\r\nimport ProcessingTheApplicationInfographic from \"assets/infographics/milestoneNavigation/ProcessingTheApplication.svg\";\r\nimport ReadyForClosingInfographic from \"assets/infographics/milestoneNavigation/ReadyForClosing.svg\";\r\nimport DefaultMilestoneDescription from \"./DefaultMilestoneDescription\";\r\nimport MilestoneDescription from \"./MilestoneDescription\";\r\nimport { EnumMilestoneNavigation, MilestoneDetails } from \"../common/Enums/EnumMilestoneNavigation\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as MilestoneNavigationActions from \"../../actions/milestoneNavigationActions\";\r\nimport { MilestoneNavigationState } from \"../../store/MilestoneNavigationStore\";\r\nimport { TaskStatus } from \"../common/progressTracker/TaskStatus\";\r\nimport * as TaskMenuActions from \"../../actions/taskMenuAction\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ntype MilestoneNavigationProps = MilestoneNavigationState & {\r\n loanGuid: string;\r\n loanPurpose: string;\r\n interimLoanStagingId: number;\r\n} & typeof MilestoneNavigationActions.MilestoneNavigationServiceActionCreators\r\n & typeof TaskMenuActions.TaskMenuCreators;\r\n\r\nconst MilestoneNavigation = (props: MilestoneNavigationProps) => {\r\n const [activeIndex, setActiveIndex] = React.useState(\"\");\r\n const [milestone, setMilestone] = React.useState({ value: \"\", keyDate: \"\", videos: [] as any, description: \"\" });\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.loanGuid && props.interimLoanStagingId && props.interimLoanStagingId > 0) {\r\n props.getMilestoneDetails(props.loanGuid);\r\n props.borrowerLoanSummary(props.loanGuid, props.interimLoanStagingId);\r\n }\r\n }, []);\r\n\r\n const returnInfographic = (param: any) => {\r\n switch (param) {\r\n case EnumMilestoneNavigation.Closed:\r\n return ClosedInfographic;\r\n case EnumMilestoneNavigation.CompletingTheApplication:\r\n return CompletingTheApplicationInfographic;\r\n case EnumMilestoneNavigation.CreditAnalysis:\r\n return CreditAnalysisInfographic;\r\n case EnumMilestoneNavigation.ProcessingTheApplication:\r\n return ProcessingTheApplicationInfographic;\r\n case EnumMilestoneNavigation.ReadyForClosing:\r\n return ReadyForClosingInfographic;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n const returnMilestoneDetail = (param: any) => {\r\n switch (param) {\r\n case MilestoneDetails.closed.value:\r\n return MilestoneDetails.closed;\r\n case MilestoneDetails.completingTheApplication.value:\r\n return MilestoneDetails.completingTheApplication;\r\n case MilestoneDetails.creditAnalysis.value:\r\n return MilestoneDetails.creditAnalysis;\r\n case MilestoneDetails.processingTheApplication.value:\r\n return MilestoneDetails.processingTheApplication;\r\n case MilestoneDetails.readyForClosing.value:\r\n return MilestoneDetails.readyForClosing;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n const handleClick = (key: any) => {\r\n setActiveIndex(key);\r\n let response = returnMilestoneDetail(key);\r\n if (response) {\r\n setMilestone({ value: response.value, keyDate: response.keyDate, videos: response.videos, description: response.description });\r\n }\r\n }\r\n\r\n const returnMilestoneEnableStatus = (param: any) => {\r\n switch (param) {\r\n case EnumMilestoneNavigation.Closed:\r\n return props.closed;\r\n case EnumMilestoneNavigation.CompletingTheApplication:\r\n return props.completingTheApplication;\r\n case EnumMilestoneNavigation.CreditAnalysis:\r\n return props.creditAnalysis;\r\n case EnumMilestoneNavigation.ProcessingTheApplication:\r\n return props.processingTheApplication;\r\n case EnumMilestoneNavigation.ReadyForClosing:\r\n return props.readyForClosing;\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {Object.entries(EnumMilestoneNavigation).map(([key, value]) => (\r\n
    \r\n\r\n
    handleClick(value)}>\r\n \r\n
    \r\n

    {value}

    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n {\r\n (activeIndex === \"\") ?\r\n :\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n let estimatedClosingDate;\r\n let actualClosingDate;\r\n let closed;\r\n let completingTheApplication;\r\n let creditAnalysis;\r\n let processingTheApplication;\r\n let readyForClosing;\r\n let loanGuid;\r\n let loanPurpose;\r\n let interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n\r\n const { accountInformation, milestoneNavigation, taskMenu } = state;\r\n\r\n if (accountInformation?.loanGuid) {\r\n loanGuid = accountInformation?.loanGuid;\r\n }\r\n\r\n if (milestoneNavigation) {\r\n estimatedClosingDate = milestoneNavigation?.estimatedClosingDate;\r\n actualClosingDate = milestoneNavigation?.actualClosingDate;\r\n closed = milestoneNavigation?.closed;\r\n completingTheApplication = milestoneNavigation?.completingTheApplication;\r\n creditAnalysis = milestoneNavigation?.creditAnalysis;\r\n processingTheApplication = milestoneNavigation?.processingTheApplication;\r\n readyForClosing = milestoneNavigation?.readyForClosing;\r\n }\r\n\r\n if (taskMenu?.loanSummary?.loanPurpose) {\r\n loanPurpose = taskMenu?.loanSummary?.loanPurpose;\r\n }\r\n\r\n return {\r\n estimatedClosingDate,\r\n actualClosingDate,\r\n loanGuid,\r\n closed,\r\n completingTheApplication,\r\n creditAnalysis,\r\n processingTheApplication,\r\n readyForClosing,\r\n loanPurpose,\r\n interimLoanStagingId\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n getMilestoneDetails: (loanGuid: string) => {\r\n dispatch(MilestoneNavigationActions.MilestoneNavigationServiceActionCreators.getMilestoneDetails(loanGuid));\r\n },\r\n borrowerLoanSummary: (loanGuid: string, interimLoanStagingId: number) => {\r\n dispatch(TaskMenuActions.TaskMenuCreators.borrowerLoanSummary(loanGuid, interimLoanStagingId));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MilestoneNavigation as any);","import React, { useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport queryString from 'query-string';\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport { ApplicationState } from \"../store\";\r\nimport { useInitialMount } from \"hooks/useInitialMount\";\r\nimport Loading from \"../components/common/Loader\";\r\nimport * as accountInformationService from \"../services/accountInformationService\";\r\nimport { useNavigation } from \"../hooks/useNavigation\";\r\n\r\nconst Invitation = () => {\r\n const [isLoading, setisloading] = React.useState(true);\r\n const [loanGuid, setloanGuid] = React.useState(\"\");\r\n const { search } = useLocation();\r\n const values = queryString.parse(search);\r\n const [error, seterror] = React.useState(\"\");\r\n const isInitialMount = useInitialMount();\r\n const history = useHistory();\r\n const navigation = useNavigation(() => {\r\n navigation.HideNavigation();\r\n });\r\n\r\n useEffect(() => {\r\n if (isInitialMount && values) {\r\n setloanGuid(values.loanGuid?.toString() ?? \"\");\r\n\r\n if (values.loanGuid?.toString() == undefined) {\r\n seterror(\"Unauthorized access!!\");\r\n setisloading(false);\r\n }\r\n }\r\n }, [isInitialMount, values]);\r\n\r\n useEffect(() => {\r\n if (loanGuid != \"\" && loanGuid != undefined) {\r\n validateLoanGuid(loanGuid);\r\n }\r\n }, [loanGuid]);\r\n\r\n const login = async () => {\r\n history.push({ pathname: \"/account\", state: { action: \"invitation\", borrowerType: \"CoBorrower\", \"loanGuid\": loanGuid } });\r\n }\r\n\r\n const validateLoanGuid = async (loanGuid: string) => {\r\n let response = await accountInformationService.validateLoanGuid(loanGuid);\r\n \r\n if (response.ok) {\r\n if (response.parsedBody) {\r\n login();\r\n }\r\n else {\r\n seterror(\"Invalid Invitation!!\");\r\n setisloading(false);\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {isLoading ? :

    \r\n {error}\r\n

    }\r\n
    \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nexport default connect((state: ApplicationState) => state.userAccountInformation)(Invitation as any);","import { post, get, getBlob} from \"../common/dataFetch\";\r\nimport { LoanOfficerMainTab, DocumentAttachment, PreApproval, PreApprovalLetterEmailTemplate } from \"../store/LoanOfficerMainTabStore\";\r\n\r\n\r\nexport const getApplicationFee = (loanGuid: string) => {\r\n return get(`LoanOfficerDashboard/ReadByLoanGuidAsync?loanGuid=${loanGuid}`);\r\n};\r\nexport const sendSecureInvitation = (loanGuid: string) => {\r\n return get(`EmailNotification/SendSecureInvitation?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const getCreditReportAttachment = (loanGuid: string) => {\r\n return get(`api/CreditReport/GetCreditAttachment?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const CreatePreApprovalLetterAsync = (preApprovalLetterDto: PreApproval, loanGuid: string) => {\r\n\r\n return post(`PreApprovalLetter/CreatePreApprovalLetter?loanGuid=${loanGuid}`, preApprovalLetterDto);\r\n};\r\n\r\nexport const GeneratePreApprovalLetterAndUploadToEncompassAsync = (letterStyle: string, loanGuid: string, preApprovalId: any) => {\r\n return post(`PreApprovalLetter/GeneratePreApprovalLetterAndUploadToEncompass?loanGuid=${loanGuid}&letterStyle=${letterStyle}&preApprovalId=${preApprovalId}`, null);\r\n};\r\n\r\nexport const ReadPreApprovalLettersByLoanGuidAsync = (loanGuid: string) => {\r\n return get(`PreApprovalLetter/ReadPreApprovalLettersByLoanGuid?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const ReadActivePreApprovalLetterByLoanGuidAsync = (loanGuid: string) => {\r\n return get(`PreApprovalLetter/ReadActivePreApprovalLetterByLoanGuidAsync?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const UncheckInactivePreApprovalLettersIntoEncompass = (loanGuid: string) => {\r\n return post(`PreApprovalLetter/UncheckInactivePreApprovalLettersIntoEncompass?loanGuid=${loanGuid}`, null);\r\n};\r\n\r\nexport const GeneratePreApprovalInvoicePdf = (loanGuid: string, preApprovalId: any) => {\r\n return getBlob(`PreApprovalLetter/GeneratePreApprovalInvoicePdf?loanGuid=${loanGuid}&preApprovalId=${preApprovalId}`);\r\n};\r\n\r\nexport const UpdateAsync = (preApprovalLetterDto: PreApproval) => {\r\n return post(`PreApprovalLetter/UpdateAsync`, preApprovalLetterDto);\r\n};\r\n\r\nexport const SendPreApprovalLetterRequestNotificationToLoanOfficer = (loanGuid: string) => {\r\n return get(`EmailNotification/SendPreApprovalLetterRequestNotificationToLoanOfficer?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const UpdateRequestedPreApprovalFlag = (preApprovalId: any) => {\r\n return post(`PreApprovalLetter/UpdateRequestedPreApprovalFlag?preApprovalId=${preApprovalId}`, null);\r\n};\r\n\r\nexport const PreApprovalLetterBaseTemplate = (loanGuid: string, preApprovalLetterEmailTemplateDto: PreApprovalLetterEmailTemplate) => {\r\n return post(`EmailNotification/PreApprovalLetterBaseTemplate?loanGuid=${loanGuid}`, preApprovalLetterEmailTemplateDto);\r\n};","import { AppThunkAction } from '../store';\r\nimport * as ActionTypes from \"../common/ActionTypes\";\r\nimport * as LoanOfficerMainTabStore from \"../store/LoanOfficerMainTabStore\";\r\nimport { KnownAction } from '../store/LoanOfficerMainTabStore';\r\nimport * as loanOfficerMainTabService from \"../services/loanOfficerMainTabService\";\r\n\r\n\r\nconst request = (loanGuid: string): KnownAction => {\r\n return {\r\n type: ActionTypes.RequestApplicationFee,\r\n loanGuid,\r\n };\r\n};\r\nconst receive = (data: LoanOfficerMainTabStore.LoanOfficerMainTab): KnownAction => {\r\n return { type: ActionTypes.ReceiveApplicationFee, data};\r\n};\r\n\r\nexport const loanOfficerMainTabActionCreators = {\r\n\r\n setCreditReports : (creditReports: LoanOfficerMainTabStore.DocumentAttachment[]): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.ReceiveCreditReports, creditReports });\r\n },\r\n setApplicationFee: (data: LoanOfficerMainTabStore.LoanOfficerMainTab): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.ReceiveApplicationFee, data });\r\n },\r\n setLoanOfficerViewLoanGuid: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetLoanOfficerViewLoanGuid, loanGuid });\r\n },\r\n setSelectedTab: (selectedTab: number): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.SetSelectedTab, selectedTab });\r\n },\r\n updatePreApproval: (value: any, propertyName: string, section: string): AppThunkAction => (dispatch) => {\r\n dispatch({ type: ActionTypes.UpdatePreApproval, value: value, propertyName: propertyName, section: section });\r\n },\r\n getApplicationFee: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n dispatch(request(loanGuid));\r\n loanOfficerMainTabService.getApplicationFee(loanGuid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + loanGuid + \" .\");\r\n }\r\n return response.parsedBody as LoanOfficerMainTabStore.LoanOfficerMainTab;\r\n })\r\n .then((data: any) => {\r\n dispatch(receive(data));\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n },\r\n sendSecureInvitation: (loanGuid: string): AppThunkAction => (dispatch) => {\r\n loanOfficerMainTabService.sendSecureInvitation(loanGuid)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem getting loan \" + loanGuid + \" .\");\r\n }\r\n return response.parsedBody as boolean;\r\n })\r\n .then((data: boolean) => {\r\n return data;\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n return false;\r\n });\r\n },\r\n \r\n}","import * as React from \"react\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport PdfDocumentViewer from \"../documents/documentViewers/PdfDocumentViewer\";\r\nimport { useState } from \"react\";\r\nimport { useSelector, connect } from \"react-redux\";\r\nimport * as LoanOfficerMainTabStore from \"../../store/LoanOfficerMainTabStore\";\r\nimport * as LoanOfficerMainTabActions from \"../../actions/loanOfficerMainTabActions\";\r\nimport styles from \"./LoanOfficer.module.scss\";\r\n\r\ntype LOMainTabDocumentViewerProps = {\r\n data: LoanOfficerMainTabStore.DocumentAttachment[]; \r\n} & typeof LoanOfficerMainTabActions.loanOfficerMainTabActionCreators;\r\n\r\nconst LOMainTabDocumentViewer = (props: LOMainTabDocumentViewerProps) => {\r\n const [document, setDocument] = useState(\"\");\r\n\r\n const setPdfData = (documentId: string) => {\r\n if (props.data != null && props.data.length > 0) {\r\n let creditDocument = props.data.find(x => x.documentId === documentId);\r\n if (creditDocument) {\r\n setDocument(creditDocument.data);\r\n }\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n if (props.data.length > 0) {\r\n setDocument(props.data[0].data);\r\n }\r\n },[])\r\n \r\n\r\n return (\r\n
    \r\n {(props.data.length > 0 && (\r\n
    \r\n
    \r\n ;\r\n
    \r\n
    \r\n {props.data?.map((file, index) => (\r\n setPdfData(file.documentId)}>{file.fileName}\r\n ))}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { loanOfficerMainTab } = state;\r\n let data;\r\n if (loanOfficerMainTab && loanOfficerMainTab.creditReports.length > 0) {\r\n data = loanOfficerMainTab.creditReports;\r\n }\r\n return {\r\n data\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n LoanOfficerMainTabActions.loanOfficerMainTabActionCreators\r\n)(LOMainTabDocumentViewer as any);","export const LoanOfficerMainTabMessage = {\r\n SendSecureInvitation: \"Send Secure Invitation Link\",\r\n SendingSecureInvitation: \"Sending Secure Invitation Link\",\r\n SentSecureInvitation: \"Sent Secure Invitation Link\",\r\n ApplicationFeeNotCollected: \"The Application fee has not been collected. The Borrower will need to pay their application fee.\"\r\n}","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport * as SystematicLetterActions from \"../../actions/systematicLetterActions\";\r\nimport * as SystematicLetterStore from \"../../store/systematicLetterStore\";\r\nimport styles from \"./LoanOfficer.module.scss\";\r\nimport UhmLogo from \"assets/logo/uhm-logo-stacked.png\";\r\n\r\ntype SystematicLetterContentProps = {\r\n ref: object,\r\n data: SystematicLetterStore.SystematicLetter\r\n}\r\n\r\nexport class LoanOfficerPreQualLetterContent extends React.PureComponent {\r\n constructor(props: SystematicLetterContentProps) {\r\n super(props);\r\n }\r\n private canvasEl!: HTMLCanvasElement;\r\n public componentDidMount() {\r\n const ctx = this.canvasEl.getContext(\"2d\");\r\n if (ctx) {\r\n ctx.beginPath();\r\n ctx.stroke();\r\n }\r\n }\r\n\r\n private setRef = (ref: HTMLCanvasElement) => this.canvasEl = ref;\r\n public render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \"Union
    \r\n

    {this.props.data.currentDate ? this.props.data.currentDate : \"\"}

    \r\n

    \r\n {this.props.data.firstName ?? \"\"} {this.props.data.lastName ?? \"\"}
    \r\n {this.props.data.addressStreetLine ?? \"\"}
    \r\n {this.props.data.addressCity ?? \"\"}, {this.props.data.addressState ?? \"\"} {this.props.data.addressPostalCode ?? \"\"}\r\n

    \r\n

    \r\n Dear {this.props.data.firstName ?? \"\"} {this.props.data.lastName ?? \"\"},\r\n

    \r\n

    \r\n Congratulations! Based on the information you provided and a review of your credit report, we are giving you preliminary qualification for a mortgage loan with the following parameters:\r\n

    \r\n
      \r\n
    • Subject Property Address: TBD, {this.props.data.subjectPropertyAddress ?? \"\"}
    • \r\n
    • Loan Type: Conventional
    • \r\n
    • Property Type: {this.props.data.propertyType ?? \"\"}
    • \r\n
    • Occupancy: {this.props.data.occupancy ?? \"\"}
    • \r\n
    • Loan Amount: {this.props.data.loanAmount ?? \"$0\"}
    • \r\n
    \r\n

    This preliminary qualification will expire in 90 days and we will not give further consideration to this request.

    \r\n

    This preliminary qualification is based on the information you provided and your credit report. This is not a commitment to lend. A formal loan commitment can only be obtained after consulting with an assigned loan officer. Your application must meet our lending standards at the time of final approval, including an acceptable appraisal and validation of credit and underwriting information, including information received from independent third parties regarding your credit history. Until your rate is locked, the interest rate and other loan terms and conditions may change without notice.

    \r\n

    Thank you for choosing Union Home Mortgage and we look forward to helping you with your mortgage needs. Please feel free to call if you have any questions and a loan officer will be in contact with you soon to move forward.

    \r\n\r\n

    Sincerely,

    \r\n\r\n
    \r\n
    \r\n Union Home Mortgage Corp.
    \r\n 8241 Dow Circle West
    \r\n Strongsville, OH 44136
    \r\n 440-234-4300
    \r\n encompasstest@unionhomemortgage.com \r\n
    \r\n
    \r\n

    *You may be contacted by a Union Home Mortgage affiliated company regarding other products and services related to home financing*

    \r\n
    \r\n
    \r\n 8241 Dow Circle, Strongsville, OH 44136 | UnionHomeMortgage.com | Union Home Mortgage Corp. NMLS 2229\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}\r\nconst mapStateToProps = (appState: ApplicationState, ownProps: { data: SystematicLetterStore.SystematicLetter }): any => {\r\n let data;\r\n data = ownProps.data;\r\n return {\r\n data\r\n };\r\n};\r\nexport default connect(\r\n mapStateToProps,\r\n SystematicLetterActions.systematicLetterActionCreators\r\n)(LoanOfficerPreQualLetterContent as any);","import * as React from \"react\";\r\nimport axios from \"axios\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport preQualLetternfographic from \"assets/infographics/systematicLetter/prequal-letter.svg\";\r\nimport * as SystematicLetterActions from \"../../actions/systematicLetterActions\";\r\nimport * as SystematicLetterStore from \"../../store/systematicLetterStore\";\r\nimport styles from \"./LoanOfficer.module.scss\";\r\nimport { useReactToPrint } from 'react-to-print';\r\nimport { LoanOfficerPreQualLetterContent } from \"components/loanOfficerView/LoanOfficerPreQualLetterContent\";\r\nimport * as systematicLetterService from \"../../services/systematicLetterService\";\r\n\r\ntype PreQualLetterLetterDisplayProps =\r\n SystematicLetterStore.SystematicLetterState & {\r\n loanGuid: string;\r\n data: SystematicLetterStore.SystematicLetter;\r\n interimLoanStagingId: number;\r\n }\r\n & typeof SystematicLetterActions.systematicLetterActionCreators;\r\n\r\nconst LoanOfficerPreQualLetterDisplay = (props: PreQualLetterLetterDisplayProps) => {\r\n const componentRef = React.useRef(null);\r\n const [showLoader, setShowLoader] = React.useState(false);\r\n\r\n const handlePrint = useReactToPrint({\r\n content: () => componentRef.current,\r\n });\r\n\r\n const handleDownload = () => {\r\n setShowLoader(true);\r\n if (props.interimLoanStagingId && props.interimLoanStagingId > 0) {\r\n systematicLetterService.generateSystematicInvoicePdf(props.interimLoanStagingId)\r\n .then((response: any) => {\r\n if (response.status == 200 && response.data.size > 0) {\r\n const file = new Blob([response.data], { type: \"application/pdf\" });\r\n const fileURL = URL.createObjectURL(file);\r\n const fileName = response.headers[\"x-file-name\"];\r\n downloadData(fileURL, fileName);\r\n }\r\n else {\r\n console.error(\"there is some problem while generating pre-qual systematic letter pdf file in loan officer view\");\r\n }\r\n setShowLoader(false);\r\n })\r\n .catch((error: Error) => {\r\n setShowLoader(false);\r\n console.error(error);\r\n });\r\n }\r\n }\r\n\r\n const downloadData = (fileURL: string, fileName: string) => {\r\n const save = document.createElement('a');\r\n if (typeof save.download !== 'undefined') {\r\n save.href = fileURL;\r\n save.target = '_blank';\r\n save.download = fileName;\r\n save.dispatchEvent(new MouseEvent('click'));\r\n } else {\r\n window.location.href = fileURL;\r\n }\r\n }\r\n\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    Your Prequalification Letter

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {showLoader && (
    )}\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n\r\n};\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation, systematicLetter } = state;\r\n let loanGuid = accountInformation?.loanGuid;\r\n let data;\r\n if (systematicLetter && systematicLetter.data) {\r\n data = systematicLetter.data;\r\n }\r\n let interimLoanStagingId = state.loan?.interimLoanStagingId;\r\n return {\r\n loanGuid,\r\n data,\r\n interimLoanStagingId\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n SystematicLetterActions.systematicLetterActionCreators\r\n)(LoanOfficerPreQualLetterDisplay as any);","import * as React from \"react\";\r\nimport creditReportInfographic from \"../../assets/infographics/loanOfficerView/CreditReport.svg\";\r\nimport InfographicTopLayout from \"../common/Layout/InfographicTopLayout\";\r\nimport styles from \"./LoanOfficer.module.scss\";\r\n\r\nconst MissingAuthorizationAlert = () => {\r\n\r\n return (\r\n
    \r\n \r\n

    The borrower, co-borrower, or both did not authorize the credit check.\r\n They will need to authorize the credit check before\r\n the single merge report can be systematically ordered.

    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MissingAuthorizationAlert;\r\n","import * as React from \"react\";\r\nimport InfographicSideLayout from \"../common/Layout/InfographicSideLayout\";\r\nimport styles from \"./LoanOfficer.module.scss\";\r\nimport preQualLetternfographic from \"assets/infographics/systematicLetter/prequal-letter.svg\";\r\n\r\nconst MissingPreQualLetter = () => {\r\n\r\n return (\r\n
    \r\n \r\n

    Pre-Qual Letter is not generated

    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MissingPreQualLetter;","export enum PreApprovalFields {\r\n ConventionalPreApproval = \"Conventional\",\r\n FhaPreApproval = \"FHA\",\r\n VaPreApproval = \"VA\",\r\n UsdaPreApproval = \"USDA\",\r\n PosMaxPurchasePrice = \"posMaxPurchasePrice\",\r\n PosAlterPurchasePriceIndicator = \"posAlterPurchasePriceIndicator\",\r\n LetterStyle = \"letterStyle\",\r\n LoanType = \"loanType\",\r\n isRequestedPreApproval = \"isRequestedPreApproval\",\r\n LoPreApprovalLetterComments = \"loPreApprovalLetterComments\"\r\n};","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport Loading from \"../common/Loader\";\r\nimport queryString from \"query-string\";\r\nimport * as userAcountActions from \"../../actions/userAcount\";\r\nimport * as accountInformationActions from \"../../actions/accountInformationActions\";\r\nimport SessionInfo from \"../../SessionDataTracker\";\r\n\r\ntype LoanOfficerViewProps = {\r\n loanGuid: string;\r\n userEmail: string;\r\n updateUserEmail: (value: string) => any;\r\n updateUserFirstName: (value: string) => any;\r\n updateUserLastName: (value: string) => any;\r\n setLoanGuid: (value: any) => any;\r\n }\r\n\r\nconst LoanOfficerView = (props: LoanOfficerViewProps) => {\r\n const history = useHistory();\r\n const { search } = useLocation();\r\n const queryStringValues = queryString.parse(search);\r\n\r\n React.useEffect(() => {\r\n const values = queryStringValues as any;\r\n if (values && values.id && values.ts) {\r\n const loanGuid = values.id as string;\r\n const userEmail = values.em as string;\r\n const ePochTime = values.ts as number;\r\n const userFirstName = values.fn as string;\r\n const userLastName = values.ln as string;\r\n const loEmail = values.lo as string;\r\n if (loanGuid && ePochTime) {\r\n const currentTime = new Date();\r\n const timeSpan = ePochTime - Math.round(currentTime.getTime()/1000.0);\r\n //Check for expired querystring - valid for 1 minute\r\n if (timeSpan <= 0 && timeSpan >= -60) {\r\n props.setLoanGuid(loanGuid);\r\n props.updateUserEmail(userEmail);\r\n props.updateUserFirstName(userFirstName);\r\n props.updateUserLastName(userLastName);\r\n SessionInfo.loEmail = loEmail ?? \"\";\r\n\r\n //Redirect to loan officer view main page\r\n history.push({ pathname: \"/loan-officer-view\" });\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Invalid or expired querystring, take user to home page\r\n history.push({ pathname: \"/\" });\r\n }, [queryStringValues]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const loanGuid = state.accountInformation?.loanGuid;\r\n const userEmail = state.userAccountInformation?.email;\r\n\r\n return {\r\n loanGuid,\r\n userEmail\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updateUserEmail: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserEmail(value));\r\n },\r\n updateUserFirstName: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserFirstName(value));\r\n },\r\n updateUserLastName: (value?: string) => {\r\n dispatch(userAcountActions.userAcountActionCreators.updateUserLastName(value));\r\n },\r\n setLoanGuid: (value?: string) => {\r\n dispatch(accountInformationActions.accountInformationActionCreators.setLoanGuid(value));\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoanOfficerView as any);\r\n","import * as React from \"react\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport * as LoanOfficerMainTabActions from \"../../actions/loanOfficerMainTabActions\";\r\nimport * as LoanOfficerMainTabStore from \"../../store/LoanOfficerMainTabStore\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport { connect } from \"react-redux\";\r\nimport { ValidationMessage } from \"../constants/validation\";\r\nimport styles from \"./LoanOfficer.module.scss\";\r\nimport * as userAcountActions from \"../../actions/userAcount\";\r\nimport * as accountInformationActions from \"../../actions/accountInformationActions\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport * as loanOfficerMainTabService from \"../.././services/loanOfficerMainTabService\";\r\nimport { PreApprovalFields } from \"./PreApprovalLetterFields\";\r\nimport Loading from \"../common/Loader\";\r\nimport moment from 'moment';\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\n\r\ntype LoanOfficerMainTabProps = LoanOfficerMainTabStore.LoanOfficerMainTabState &\r\n{\r\n loanGuid: string;\r\n} &\r\n typeof LoanOfficerMainTabActions.loanOfficerMainTabActionCreators &\r\n typeof userAcountActions.userAcountActionCreators &\r\n typeof accountInformationActions.accountInformationActionCreators;\r\n\r\nconst PreApprovalLetter = (props: LoanOfficerMainTabProps) => {\r\n const [disabled, setDisabled] = React.useState(false);\r\n const [list, setList] = React.useState([]);\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const [change, setIschange] = React.useState(false);\r\n\r\n\r\n const [commentChar, setCommentChar] = React.useState({\r\n chars_left: 0,\r\n max_char: 225\r\n });\r\n\r\n const handleCommentCharCount = (comment: string) => {\r\n const charCount = comment.length;\r\n const charLength = charCount;\r\n setCommentChar({ ...commentChar, chars_left: charLength });\r\n updateComment(comment);\r\n }\r\n\r\n const updateComment = (\r\n (comment: string) => {\r\n props.updatePreApproval(comment, PreApprovalFields.LoPreApprovalLetterComments, PreApprovalFields.LoPreApprovalLetterComments);\r\n setIschange(true);\r\n });\r\n\r\n const loanTypeHandler = (checked: string, name: string, section: string) => {\r\n props.updatePreApproval(checked, name, section);\r\n setIschange(true);\r\n }\r\n\r\n const submit = async () => {\r\n props.preApproval.isRequestedPreApproval = false;\r\n props.updatePreApproval(props.preApproval.isRequestedPreApproval, \"isRequestedPreApproval\", \"isRequestedPreApproval\")\r\n setIsLoading(true);\r\n await loanOfficerMainTabService.UncheckInactivePreApprovalLettersIntoEncompass(props.loanGuid);\r\n await loanOfficerMainTabService.CreatePreApprovalLetterAsync(props.preApproval, props.loanGuid).then((response: any) => {\r\n setIsLoading(false)\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating CreatePreApprovalLetterAsync.\");\r\n }\r\n let result = response.parsedBody;\r\n return result\r\n }).then(async (result: any) => {\r\n setIsLoading(true)\r\n await loanOfficerMainTabService.GeneratePreApprovalLetterAndUploadToEncompassAsync\r\n (props?.preApproval?.letterStyle ?? \"\", props.loanGuid, result).then((res: any) => {\r\n setIsLoading(false)\r\n if (res.parsedBody) {\r\n console.log(\"asas\");\r\n }\r\n });\r\n\r\n ReadPreApprovalLetters();\r\n })\r\n }\r\n React.useEffect(() => {\r\n ReadPreApprovalLetters();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (props.preApproval.isRequestedPreApproval) {\r\n loanOfficerMainTabService.UncheckInactivePreApprovalLettersIntoEncompass(props.loanGuid);\r\n props.updatePreApproval(\"\", PreApprovalFields.LetterStyle, PreApprovalFields.LetterStyle);\r\n props.updatePreApproval(undefined, PreApprovalFields.LoanType, PreApprovalFields.LoanType);\r\n props.updatePreApproval(undefined, PreApprovalFields.PosAlterPurchasePriceIndicator, PreApprovalFields.PosAlterPurchasePriceIndicator);\r\n\r\n }\r\n }, [props.preApproval.isRequestedPreApproval]);\r\n\r\n\r\n const ReadPreApprovalLetters = () => {\r\n setIschange(false)\r\n loanOfficerMainTabService.ReadPreApprovalLettersByLoanGuidAsync(props.loanGuid ?? \"\").then((res: any) => {\r\n if (res.status == 200) {\r\n const data = res.parsedBody as LoanOfficerMainTabStore.PreApproval[];\r\n if (!isNullOrUndefined(data) && data?.length > 0 && Number(data[0]?.posPurchasePrice) > 0) {\r\n props.updatePreApproval(data[0]?.posPurchasePrice, PreApprovalFields.PosMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice);\r\n }\r\n else {\r\n props.updatePreApproval(data[0]?.posMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice);\r\n }\r\n props.updatePreApproval(data[0]?.letterStyle, PreApprovalFields.LetterStyle, PreApprovalFields.LetterStyle);\r\n props.updatePreApproval(data[0]?.loanType, PreApprovalFields.LoanType, PreApprovalFields.LoanType);\r\n props.updatePreApproval(data[0]?.posAlterPurchasePriceIndicator, PreApprovalFields.PosAlterPurchasePriceIndicator, PreApprovalFields.PosAlterPurchasePriceIndicator);\r\n props.updatePreApproval(data[0]?.isRequestedPreApproval, PreApprovalFields.isRequestedPreApproval, PreApprovalFields.isRequestedPreApproval);\r\n props.updatePreApproval(data[0]?.loPreApprovalLetterComments, PreApprovalFields.LoPreApprovalLetterComments, PreApprovalFields.LoPreApprovalLetterComments);\r\n setList(data as LoanOfficerMainTabStore.PreApproval[]);\r\n }\r\n })\r\n }\r\n\r\n React.useEffect(() => {\r\n if (!props.preApproval.posAlterPurchasePriceIndicator || props.preApproval.letterStyle === \"PreApprovalCertificate1\") {\r\n props.updatePreApproval(props.preApproval.posMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice)\r\n }\r\n }, [props.preApproval.posAlterPurchasePriceIndicator])\r\n\r\n React.useEffect(() => {\r\n if (isNullOrUndefined(props.preApproval.posMaxPurchasePrice)) {\r\n props.updatePreApproval(props.data.propertyEstimatedValueAmount, PreApprovalFields.PosMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice);\r\n }\r\n if (props.data.loanType && props.data.loanType !== \"\" && isNullOrUndefined(props.preApproval.letterStyle)) {\r\n props.updatePreApproval(props.data.loanType, PreApprovalFields.LoanType, PreApprovalFields.LoanType);\r\n }\r\n\r\n if ((!isNullOrUndefined(props?.preApproval?.letterStyle) && props?.preApproval?.letterStyle !== \"\"\r\n && !isNullOrUndefined(props?.preApproval?.loanType) && change)) {\r\n\r\n if (props.preApproval.posAlterPurchasePriceIndicator && change && (props.preApproval.posMaxPurchasePrice !== undefined &&\r\n props.preApproval.posMaxPurchasePrice != \"\" && props?.preApproval?.posMaxPurchasePrice.toString().length < 12)) {\r\n setDisabled(false)\r\n }\r\n else if (props.preApproval.posAlterPurchasePriceIndicator === undefined || props.preApproval.posAlterPurchasePriceIndicator === false) {\r\n setDisabled(false)\r\n } else {\r\n setDisabled(true)\r\n }\r\n }\r\n else {\r\n setDisabled(true)\r\n }\r\n\r\n if (!isNullOrUndefined(props?.preApproval?.letterStyle) && props?.preApproval?.letterStyle === \"PreApprovalCertificate1\" && !isNullOrUndefined(props?.preApproval?.loanType) && change) {\r\n setDisabled(false)\r\n }\r\n if (!isNullOrUndefined(props?.preApproval?.letterStyle) && props?.preApproval?.letterStyle === \"PreApprovalCertificate1\" && !isNullOrUndefined(props?.preApproval?.loanType)) {\r\n props.updatePreApproval((props.data.propertyEstimatedValueAmount !== undefined && props.data.propertyEstimatedValueAmount) > 0 ? props.data.propertyEstimatedValueAmount : 0, PreApprovalFields.PosMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice);\r\n props.updatePreApproval(undefined, PreApprovalFields.PosAlterPurchasePriceIndicator, PreApprovalFields.PosAlterPurchasePriceIndicator);\r\n }\r\n if (!props.preApproval.posAlterPurchasePriceIndicator && change) {\r\n props.updatePreApproval((props.data.propertyEstimatedValueAmount !== undefined && props.data.propertyEstimatedValueAmount) ? props.data.propertyEstimatedValueAmount : 0, PreApprovalFields.PosMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice);\r\n }\r\n\r\n }, [props?.preApproval?.letterStyle, props?.preApproval?.loanType, props?.preApproval?.posMaxPurchasePrice, props?.preApproval?.posAlterPurchasePriceIndicator, props?.preApproval?.loPreApprovalLetterComments]);\r\n\r\n return (<>\r\n {isLoading ? :\r\n
    \r\n
    \r\n

    Submit Pre-Approval Letter

    \r\n {props.preApproval.letterStyle === \"PreApprovalCertificate1\" &&\r\n

    This Pre-Approval letter has no Purchase Price visible to the borrower.

    }\r\n

    Select what type of pre-approval for borrower

    \r\n
    \r\n \r\n ) => { props.updatePreApproval(e.target.value, \"letterStyle\", \"letterStyle\"); setIschange(true); }}\r\n rule={{\r\n required: ValidationMessage.Required,\r\n }} noArrow={false}\r\n value={props.preApproval.letterStyle}\r\n name=\"letterStyle\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n \r\n ) => loanTypeHandler(e.target.value, \"loanType\", PreApprovalFields.ConventionalPreApproval)}\r\n\r\n rule={{\r\n required: ValidationMessage.Required,\r\n }} noArrow={false}\r\n value={props?.preApproval?.loanType ?? \"\"}\r\n name=\"CurrentLoanType\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n {commentChar.max_char} characters maximum\r\n
    \r\n
    \r\n ) => {\r\n handleCommentCharCount(e.target.value);\r\n }}\r\n />\r\n
    {commentChar.chars_left} of {commentChar.max_char}
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n\r\n {props.preApproval.letterStyle !== \"PreApprovalCertificate1\" &&\r\n <>{\r\n props.preApproval.posAlterPurchasePriceIndicator &&\r\n
    \r\n \r\n
    \r\n {\r\n props.updatePreApproval(values.value, PreApprovalFields.PosMaxPurchasePrice, PreApprovalFields.PosMaxPurchasePrice);\r\n setIschange(true);\r\n }}\r\n placeholder=\"$00.00\"\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={0}\r\n />\r\n
    \r\n {props.preApproval.posMaxPurchasePrice != undefined && props?.preApproval?.posMaxPurchasePrice?.length > 11 &&\r\n \r\n The value entered exceeds the maximum length requirement.\r\n }\r\n
    \r\n\r\n }\r\n
    \r\n
    \r\n ) => {\r\n props.updatePreApproval(e.target.checked, PreApprovalFields.PosAlterPurchasePriceIndicator, PreApprovalFields.PosAlterPurchasePriceIndicator);\r\n setIschange(true)\r\n }} />\r\n \r\n Allow borrower to edit max-price\r\n \r\n
    \r\n
    \r\n \r\n }\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n

    Active Pre-Approvals

    \r\n {!isNullOrUndefined(list) && list?.length > 0 && !props.preApproval.isRequestedPreApproval && <>\r\n
    {\r\n Number(list[0].posPurchasePrice) > 0 ?\r\n
    ${Number(list[0].posPurchasePrice).toFixed(0).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")}
    \r\n :\r\n
    ${Number(list[0].posMaxPurchasePrice).toFixed(0).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")}
    \r\n }\r\n
    {moment(new Date(list[0].timeStamp.toString())).format(\"MM/DD/YYYY\")}
    \r\n
    \r\n }\r\n
    \r\n

    Inactive Pre-Approvals

    \r\n {!isNullOrUndefined(list) && list?.length > 0 && list?.map((m: LoanOfficerMainTabStore.PreApproval, idx: number) => {\r\n return (\r\n props.preApproval.isRequestedPreApproval ?\r\n
    \r\n {Number(m.posPurchasePrice) > 0 ?\r\n
    ${Number(m.posPurchasePrice).toFixed(0).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")}
    \r\n :\r\n
    {Number(m.posMaxPurchasePrice).toFixed(0).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")}
    \r\n }\r\n
    {moment(new Date(m.timeStamp.toString())).format(\"MM/DD/YYYY\")} {/* {m.timeStamp.toString().split('T')[0]}*/}\r\n
    \r\n
    \r\n :\r\n idx >= 1 && <>\r\n
    \r\n {Number(m.posPurchasePrice) > 0 ?\r\n
    ${Number(m.posPurchasePrice).toFixed(0).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")}
    \r\n :\r\n
    ${Number(m.posMaxPurchasePrice).toFixed(0).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")}
    \r\n }\r\n
    {moment(new Date(m.timeStamp.toString())).format(\"MM/DD/YYYY\")}
    \r\n\r\n
    \r\n \r\n )\r\n })}\r\n
    \r\n
    \r\n }\r\n );\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updatePreApproval: (value: string, propertyName: string, section: string) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.updatePreApproval(value, propertyName, section));\r\n },\r\n});\r\nexport default connect((state: ApplicationState) => state.loanOfficerMainTab, mapDispatchToProps)(PreApprovalLetter as any);","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ReactMultiEmail } from 'react-multi-email';\r\nimport \"react-multi-email/style.css\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport preApproval from \"assets/infographics/dashboard/pre-approval.svg\";\r\nimport styles from \"./preApprovalLetter.module.scss\";\r\nimport * as LoanOfficerMainTabStore from \"../../store/LoanOfficerMainTabStore\";\r\nimport * as LoanOfficerMainTabActions from \"../../actions/loanOfficerMainTabActions\";\r\nimport * as userAcountActions from \"../../actions/userAcount\";\r\nimport * as accountInformationActions from \"../../actions/accountInformationActions\";\r\nimport * as loanOfficerMainTabService from \"../.././services/loanOfficerMainTabService\";\r\nimport { dashboardActionCreators } from \"../../actions/dashboardActions\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport Loading from \"../common/Loader\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\nimport { Modal, ModalBody, ModalHeader } from \"reactstrap\";\r\nimport { Rule } from \"../constants/validation\";\r\n\r\ntype PreApprovalLetterProps =\r\n {\r\n loanGuid: string;\r\n posPurchasePrice: string;\r\n propertyEstimatedValueAmount: string;\r\n posPreApprovalLetterComments: string;\r\n borrowerLastName: string;\r\n isRequestedPreApproval: boolean;\r\n } & typeof dashboardActionCreators &\r\n typeof LoanOfficerMainTabActions.loanOfficerMainTabActionCreators &\r\n typeof userAcountActions.userAcountActionCreators &\r\n typeof accountInformationActions.accountInformationActionCreators;\r\n\r\nconst BorrowerPreApprovalLetter = (props: PreApprovalLetterProps) => {\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const [disabled, setDisabled] = React.useState(false);\r\n const [change, setIschange] = React.useState(false);\r\n const [show, setShowComment] = React.useState(false);\r\n const [posPreApprovalLetterTo, setPosPreApprovalLetterTo] = React.useState([]);\r\n const [posPreApprovalLetterCc, setPosPreApprovalLetterCc] = React.useState([]);\r\n const [additionalNotes, setAdditionalNotes] = React.useState();\r\n const [viewButtonDisabled, setViewButtonDisabled] = React.useState(false);\r\n const [isOpen, setisOpen] = React.useState(true);\r\n const [unSuccessfully, setUnsuccessfully] = React.useState(false);\r\n const [list, setList] = React.useState();\r\n const currentDate = new Date();\r\n const [preApprovalIssueDate, setPreApprovalIssueDate] = React.useState(new Date());\r\n const [successfully, setSuccessfully] = React.useState(true);\r\n const [notification, setNotification] = React.useState(false);\r\n const [sendButtonDisabled, setSendButtonDisabled] = React.useState(true);\r\n const [isValidEmail, setIsValidEmail] = React.useState(true);\r\n const [isCcValidEmail, setIsCcValidEmail] = React.useState(true);\r\n const [invalidEmails, setInvalidEmails] = React.useState([]);\r\n let _invalidEmails: string[] = [];\r\n\r\n React.useEffect(() => {\r\n ReadPreApprovalLetters();\r\n }, []);\r\n\r\n\r\n React.useEffect(() => {\r\n if (list?.timeStamp !== undefined) {\r\n let date = new Date(list?.timeStamp);\r\n date.setDate(date.getDate() + 30);\r\n setPreApprovalIssueDate(date);\r\n }\r\n\r\n }, [list?.timeStamp]);\r\n\r\n const ReadPreApprovalLetters = () => {\r\n loanOfficerMainTabService.ReadActivePreApprovalLetterByLoanGuidAsync(props.loanGuid ?? \"\").then((res: any) => {\r\n if (res.status == 200) {\r\n if (isNullOrUndefined(res.parsedBody.posPurchasePrice) || res.parsedBody.posPurchasePrice === \"\" || res.parsedBody.posPurchasePrice === 0) {\r\n props.updatePreApproval(res.parsedBody.posMaxPurchasePrice, \"posPurchasePrice\", \"posPurchasePrice\");\r\n }\r\n if (isNullOrUndefined(res.parsedBody.posMaxPurchasePrice) || res.parsedBody.posMaxPurchasePrice === \"\" || res.parsedBody.posMaxPurchasePrice === 0) {\r\n props.updatePreApproval(props.propertyEstimatedValueAmount, \"posMaxPurchasePrice\", \"posMaxPurchasePrice\");\r\n }\r\n setList(res.parsedBody);\r\n }\r\n })\r\n }\r\n\r\n React.useEffect(() => {\r\n if ((props.posPurchasePrice === undefined || list?.posPurchasePrice === undefined) || !change ||\r\n (isNullOrUndefined(list?.posMaxPurchasePrice) || props.posPurchasePrice > list?.posMaxPurchasePrice) || props.posPurchasePrice === \"\"\r\n || Number(props.posPurchasePrice) <= 0) {\r\n setDisabled(true);\r\n }\r\n else {\r\n setDisabled(false);\r\n }\r\n }, [props.posPurchasePrice, list?.posMaxPurchasePrice, change]);\r\n\r\n React.useEffect(() => {\r\n let isDisabled = true;\r\n if (posPreApprovalLetterTo.length > 0) {\r\n isDisabled = !isValidEmail ? true : false;\r\n }\r\n if (invalidEmails.length > 0) {\r\n isDisabled = true;\r\n }\r\n else {\r\n setIsValidEmail(true);\r\n setIsCcValidEmail(true);\r\n }\r\n\r\n setSendButtonDisabled(isDisabled); \r\n\r\n }, [posPreApprovalLetterTo, posPreApprovalLetterCc, isValidEmail, invalidEmails]);\r\n\r\n const handleSubmit = async () => {\r\n let result: any = {\r\n letterStyle: list?.letterStyle,\r\n loanType: list?.loanType,\r\n posMaxPurchasePrice: list?.posMaxPurchasePrice,\r\n letterName: list?.letterName,\r\n posAlterPurchasePriceIndicator: list?.posAlterPurchasePriceIndicator,\r\n posPurchasePrice: props.posPurchasePrice\r\n }\r\n\r\n setIsLoading(true);\r\n setViewButtonDisabled(false);\r\n await loanOfficerMainTabService.UncheckInactivePreApprovalLettersIntoEncompass(props.loanGuid);\r\n await loanOfficerMainTabService.CreatePreApprovalLetterAsync(result, props.loanGuid).then((response: any) => {\r\n setIsLoading(false)\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating CreatePreApprovalLetterAsync.\");\r\n }\r\n let result = response.parsedBody;\r\n return result\r\n }).then(async (result: any) => {\r\n setIsLoading(true)\r\n await loanOfficerMainTabService.GeneratePreApprovalLetterAndUploadToEncompassAsync\r\n (list?.letterStyle ?? \"\", props.loanGuid, result).then((res: any) => {\r\n setIsLoading(false)\r\n if (res.parsedBody) {\r\n console.log(\"true\");\r\n }\r\n });\r\n })\r\n ReadPreApprovalLetters();\r\n }\r\n\r\n const viewPreApprovalLetter = () => {\r\n setIsLoading(true)\r\n loanOfficerMainTabService.GeneratePreApprovalInvoicePdf(props.loanGuid, list?.preApprovalLetterId)\r\n .then((response: any) => {\r\n if (response.status == 200 && response.data.size > 0) {\r\n setIsLoading(false)\r\n const file = new Blob(\r\n [response.data],\r\n { type: 'application/pdf' });\r\n const fileURL = URL.createObjectURL(file);\r\n window.open(fileURL);\r\n }\r\n })\r\n }\r\n\r\n const PreApprovalLetterBaseTemplate = async () => {\r\n setIsLoading(true);\r\n let preApprovalLetterEmailTemplate: any = {\r\n preApprovalLetterTo: posPreApprovalLetterTo,\r\n preApprovalLetterCc: posPreApprovalLetterCc,\r\n preApprovalLetterAdditionalNotes: additionalNotes\r\n }\r\n loanOfficerMainTabService.PreApprovalLetterBaseTemplate(props.loanGuid, preApprovalLetterEmailTemplate)\r\n .then((response: any) => {\r\n if (response.status == 200) {\r\n setIsLoading(false);\r\n setNotification(true);\r\n }\r\n else {\r\n console.error(\"there is some problem while generating download Pre-Approval Letter Document\");\r\n setNotification(true);\r\n setSuccessfully(false);\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: Error) => {\r\n setIsLoading(false);\r\n console.error(error);\r\n });\r\n }\r\n\r\n const downloadPreApprovalLetter = () => {\r\n setIsLoading(true);\r\n loanOfficerMainTabService.GeneratePreApprovalInvoicePdf(props.loanGuid, list?.preApprovalLetterId)\r\n .then((response: any) => {\r\n if (response.status == 200 && response.data.size > 0) {\r\n const file = new Blob([response.data], { type: \"application/pdf\" });\r\n const fileURL = URL.createObjectURL(file);\r\n const fileName = `Pre-Approval Letter - ${props.borrowerLastName.trim()}`\r\n downloadData(fileURL, fileName);\r\n }\r\n else {\r\n console.error(\"there is some problem while generating download Pre-Approval Letter Document\");\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: Error) => {\r\n setIsLoading(false);\r\n console.error(error);\r\n });\r\n }\r\n\r\n const downloadData = (fileURL: string, fileName: string) => {\r\n const save = document.createElement('a');\r\n if (typeof save.download !== 'undefined') {\r\n save.href = fileURL;\r\n save.target = '_blank';\r\n save.download = fileName;\r\n save.dispatchEvent(new MouseEvent('click'));\r\n } else {\r\n window.location.href = fileURL;\r\n }\r\n }\r\n\r\n const sendRequestNewPreApprovalLetterEmail = async () => {\r\n let result: any = {\r\n letterStyle: list?.letterStyle,\r\n loanType: list?.loanType,\r\n posMaxPurchasePrice: list?.posMaxPurchasePrice,\r\n letterName: list?.letterName,\r\n posAlterPurchasePriceIndicator: list?.posAlterPurchasePriceIndicator,\r\n posPurchasePrice: props.posPurchasePrice,\r\n posPreApprovalLetterComments: props.posPreApprovalLetterComments,\r\n preApprovalLetterId: list?.preApprovalLetterId\r\n }\r\n setIsLoading(true)\r\n\r\n await loanOfficerMainTabService.UpdateAsync(result).then((response: any) => {\r\n setIsLoading(false)\r\n if (!response.ok) {\r\n throw new Error(\"There was a problem updating CreatePreApprovalLetterAsync.\");\r\n }\r\n let result = response.parsedBody;\r\n return result\r\n }).then(async (result: any) => {\r\n setIsLoading(true)\r\n if (result) {\r\n await loanOfficerMainTabService.SendPreApprovalLetterRequestNotificationToLoanOfficer\r\n (props.loanGuid).then(async (res: any) => {\r\n setIsLoading(false)\r\n if (res.parsedBody) {\r\n console.log(\"true\");\r\n props.getUserNotificationMessages(props.loanGuid)\r\n setUnsuccessfully(false);\r\n props.updatePreApproval(true, \"isRequestedPreApproval\", \"isRequestedPreApproval\");\r\n\r\n }\r\n else {\r\n setUnsuccessfully(true);\r\n await loanOfficerMainTabService.UpdateRequestedPreApprovalFlag(list?.preApprovalLetterId);\r\n }\r\n });\r\n }\r\n })\r\n }\r\n const toggleModle = () => {\r\n setisOpen(!isOpen);\r\n setUnsuccessfully(false);\r\n setShowComment(false);\r\n }\r\n\r\n return (\r\n
    {isLoading && (
    )}\r\n
    \r\n
    \r\n {unSuccessfully &&\r\n \r\n \r\n
    \r\n Your email could not be sent. Please contact your Loan Officer by phone.\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n {\r\n currentDate > preApprovalIssueDate ?\r\n props.isRequestedPreApproval || list?.isRequestedPreApproval ?

    Pre-Approval Letter request complete. Your Loan Officer will be in touch soon!

    :\r\n
    \r\n

    Pre-Approval Letter Expired

    \r\n

    We're sorry, your pre-approval letter has expired. You can request a new one from your Loan Officer.

    \r\n
    \r\n \r\n
    \r\n\r\n {show &&
    \r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n :\r\n <>\r\n {!notification ?\r\n <>\r\n

    Pre-Approval Letter

    \r\n\r\n {(!isNullOrUndefined(list) && list.posAlterPurchasePriceIndicator) ?\r\n <>

    You may adjust your pre-approval letter amount for your offer, but you cannot exceed your purchase price of ${Number(list?.posMaxPurchasePrice).toFixed(0).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")} \r\n

    \r\n
    \r\n
    Purchase Price
    \r\n
    \r\n
    \r\n {\r\n props.updatePreApproval(values.value, \"posPurchasePrice\", \"posPurchasePrice\");\r\n setIschange(true);\r\n setViewButtonDisabled(true);\r\n\r\n }}\r\n placeholder=\"$00.00\"\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n decimalScale={0}\r\n />\r\n
    \r\n \r\n
    \r\n {\r\n !isNullOrUndefined(list?.posMaxPurchasePrice) && props.posPurchasePrice > list?.posMaxPurchasePrice &&\r\n You cannot exceed the Purchase Price established by your Loan Officer\r\n }\r\n
    \r\n

    Selecting a new purchase price will not alter your total\r\n allowable amount. Once you select your purchase price, you\r\n can view/print, email or download your copy as well.\r\n

    \r\n\r\n \r\n :\r\n

    Congratulations! You're pre-approved for a maximum\r\n loan value of ${(!isNullOrUndefined(props.propertyEstimatedValueAmount) && props.propertyEstimatedValueAmount !== \"\") ? props.propertyEstimatedValueAmount : \"0\"}.You can view/print,email or\r\n download your letter below\r\n

    \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n {show &&\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n setPosPreApprovalLetterTo(_emails);\r\n setInvalidEmails(_invalidEmails);\r\n }}\r\n validateEmail={email => {\r\n console.log(\"validating email: \", email);\r\n\r\n // using this as an \"onChange\" event and getting rid of old values\r\n if (invalidEmails !== []) {\r\n setInvalidEmails([]);\r\n }\r\n\r\n if (email === \"undefined\") {\r\n return false;\r\n }\r\n\r\n const isValid = Rule.EmailValidation.value.test(String(email).toLowerCase());\r\n\r\n if (!isValid && _invalidEmails.indexOf(email) === -1) {\r\n _invalidEmails.push(email);\r\n console.log(\"_invalidEmails: \", _invalidEmails.slice(0));\r\n setInvalidEmails(_invalidEmails);\r\n } \r\n setIsValidEmail(isValid);\r\n return isValid;\r\n }}\r\n getLabel={(\r\n email: string,\r\n index: number,\r\n removeEmail: (index: number) => void,\r\n ) => {\r\n return (\r\n
    \r\n {email}\r\n removeEmail(index)}>\r\n ×\r\n \r\n
    \r\n );\r\n }}\r\n />\r\n {!isValidEmail && (Invalid Email)}\r\n
    \r\n
    \r\n \r\n {\r\n setPosPreApprovalLetterCc(_emails);\r\n setInvalidEmails(_invalidEmails);\r\n }}\r\n validateEmail={email => {\r\n console.log(\"validating email: \", email);\r\n\r\n // using this as an \"onChange\" event and getting rid of old values\r\n if (invalidEmails !== []) {\r\n setInvalidEmails([]);\r\n }\r\n\r\n if (email === \"undefined\") {\r\n return false;\r\n }\r\n\r\n const isValid = Rule.EmailValidation.value.test(String(email).toLowerCase());\r\n\r\n if (!isValid && _invalidEmails.indexOf(email) === -1) {\r\n _invalidEmails.push(email);\r\n console.log(\"_invalidEmails: \", _invalidEmails.slice(0));\r\n setInvalidEmails(_invalidEmails);\r\n }\r\n setIsCcValidEmail(isValid);\r\n return isValid;\r\n }}\r\n getLabel={(\r\n email: string,\r\n index: number,\r\n removeEmail: (index: number) => void,\r\n ) => {\r\n return (\r\n
    \r\n {email}\r\n removeEmail(index)}>\r\n ×\r\n \r\n
    \r\n );\r\n }}\r\n />\r\n {!isCcValidEmail && (Invalid Email)}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {isLoading && (
    )}\r\n
    \r\n
    \r\n }\r\n \r\n :\r\n <>\r\n {successfully ?

    Pre-Approval letter sent!

    :

    Email could not be sent. Please check your sender email address and try again.

    }\r\n \r\n\r\n }\r\n\r\n \r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    )\r\n};\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const loanGuid = state.accountInformation?.loanGuid;\r\n const posPurchasePrice = state.loanOfficerMainTab?.preApproval.posPurchasePrice;\r\n const propertyEstimatedValueAmount = state.dashboard?.dashboardInformation.propertyEstimatedValueAmount;\r\n const posPreApprovalLetterComments = state.loanOfficerMainTab?.preApproval.posPreApprovalLetterComments;\r\n const isRequestedPreApproval = state.loanOfficerMainTab?.preApproval.isRequestedPreApproval;\r\n const borrowerLastName = state.userAccountInformation?.lastName;\r\n return {\r\n loanGuid,\r\n posPurchasePrice,\r\n propertyEstimatedValueAmount,\r\n posPreApprovalLetterComments,\r\n isRequestedPreApproval,\r\n borrowerLastName\r\n };\r\n}\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n updatePreApproval: (value: any, propertyName: string, section: string) => {\r\n dispatch(LoanOfficerMainTabActions.loanOfficerMainTabActionCreators.updatePreApproval(value, propertyName, section))\r\n },\r\n getUserNotificationMessages: (loanGuid: string) => {\r\n dispatch(dashboardActionCreators.getUserNotificationMessages(loanGuid));\r\n }\r\n});\r\nexport default connect((state: ApplicationState) => mapStateToProps, mapDispatchToProps)(BorrowerPreApprovalLetter as any);","import React, { useState } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { ApplicationState } from \"store\";\r\nimport { DocumentDto } from \"../models/DocumentDto\";\r\nimport { DocumentStatus } from \"../models/DocumentStatus\";\r\nimport styles from \"./BorrowerDocument.module.scss\";\r\nimport Tooltip from \"../../common/InfoIconTooltip\";\r\nimport { FileFormat } from \"../models/FileFormat\";\r\nimport WordDocumentViewer from \"../documentViewers/WordDocumentViewer\";\r\nimport { Modal, ModalBody } from \"reactstrap\";\r\nimport { getDocumentContents } from \"../../../services/documentService\";\r\nimport { isNullOrWhiteSpace } from \"../../../common/helper/formatHelper\";\r\nimport NoImage from \"assets/icons/document/NoImage.png\";\r\n\r\ninterface DocumentProps {\r\n fileName?: string | null | undefined;\r\n status?: DocumentStatus | null | undefined;\r\n documentDto?: DocumentDto | null | undefined;\r\n deleteDocument: (loanGuid: string, documentDto?: DocumentDto | null | undefined) => void;\r\n}\r\n\r\nconst Document = (props: DocumentProps) => {\r\n const history = useHistory();\r\n const loanGuid = useSelector((state: ApplicationState) => state.accountInformation?.loanGuid ?? \"\");\r\n const [data, setData] = useState(\"\");\r\n const [isOpen, setOpen] = useState(false);\r\n\r\n const openDocument = async () => {\r\n if (props.documentDto?.fileFormat === FileFormat.Word) {\r\n setData(\"\");\r\n var result = await getDocumentContents(loanGuid ?? \"\", props.documentDto?.documentId ?? -1);\r\n if (result.ok && !result.parsedBody?.hasError) {\r\n setData(result.parsedBody?.body.data ?? \"\");\r\n }\r\n setOpen(true);\r\n } else {\r\n history.push(\"/document-viewer\", {\r\n loanGuid: loanGuid,\r\n documentDto: props.documentDto,\r\n viewerActions: false\r\n });\r\n }\r\n };\r\n\r\n const getStatus = (status: DocumentStatus | null | undefined) => {\r\n switch (status) {\r\n case DocumentStatus.Accepted:\r\n return styles.accepted;\r\n case DocumentStatus.Replaced:\r\n return styles.discarded;\r\n case DocumentStatus.Rejected:\r\n return styles.rejected;\r\n case DocumentStatus.Submitted:\r\n return styles.received;\r\n default:\r\n return <>;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    openDocument()}>\r\n
    {props.fileName}
    \r\n
    \r\n
    {DocumentStatus[props.status as any]}
    \r\n {props?.documentDto?.rejectionComment && \r\n {props?.documentDto?.rejectionComment}}\r\n
    \r\n

    \r\n
    \r\n {props.status === DocumentStatus.Submitted &&\r\n props.deleteDocument(loanGuid, props.documentDto)}>\r\n }\r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n setOpen(false)} >\r\n
    \r\n
    \r\n

    {props.documentDto?.fileName}

    \r\n
    \r\n \"No\r\n

    It looks like this file doesn't have a preview we can show you.

    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Document;\r\n","import React, { useState } from \"react\";\r\nimport { Modal, ModalBody, ModalHeader } from 'reactstrap';\r\nimport 'react-dropzone-uploader/dist/styles.css';\r\nimport Dropzone, { IInputProps, defaultClassNames } from 'react-dropzone-uploader';\r\nimport styles from \"./DocumentUpload.module.scss\";\r\nimport borrowerDocumentStyles from \"./BorrowerDocument.module.scss\";\r\nimport { uploadAttachment } from \"../../../services/documentService\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface ModalProps {\r\n onCancel: React.Dispatch>;\r\n isLoading?: boolean;\r\n onSubmit: () => void;\r\n isOpen: boolean;\r\n sectionId: number | undefined;\r\n loanGuid: string;\r\n};\r\n\r\nconst DocumentUpload = (props: ModalProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [showSpinner, setShowSpinner] = useState(false);\r\n\r\n const handleSubmit = async (files: any[]) => {\r\n setShowSpinner(true);\r\n let newFormData = new FormData();\r\n if (files.length > 0) {\r\n files.map(fileData => {\r\n newFormData.append('files', fileData.file, fileData.name)\r\n })\r\n await uploadAttachment(props.loanGuid, props.sectionId ?? 0, newFormData);\r\n setShowSpinner(false);\r\n props.onSubmit();\r\n }\r\n }\r\n\r\n const Preview = (metaData: any) => {\r\n let data = metaData.meta;\r\n let fileData = metaData.fileWithMeta;\r\n return (\r\n <>\r\n \r\n {data.name}\r\n fileData.remove()}>\r\n \r\n \r\n )\r\n }\r\n\r\n const Layout = (data: any) => {\r\n let input = data.input;\r\n let previews = data.previews;\r\n let dropzoneProps = data.dropzoneProps;\r\n let files = data.files;\r\n let submitButton = data.submitButton;\r\n let extra = data.extra;\r\n defaultClassNames.submitButton = styles.buttonDisable;\r\n if (files.length > 0) {\r\n defaultClassNames.submitButton = styles.buttonActive;\r\n }\r\n return (\r\n
    \r\n
    \r\n {previews}\r\n
    \r\n
    \r\n {files.length < extra.maxFiles && input}\r\n
    \r\n {submitButton}\r\n\r\n
    \r\n )\r\n }\r\n\r\n const Input = ({ accept, onFiles, files, getFilesFromEvent }: IInputProps) => {\r\n return (\r\n <>\r\n \r\n \r\n )\r\n }\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n\r\n \r\n {showSpinner &&\r\n
    \r\n {showSpinner && }\r\n
    \r\n }\r\n stopSpeech()} onMouseOver={() => textToSpeech('Document Upload')}>\r\n Document Upload\r\n props.onCancel(false)}>\r\n \r\n \r\n
    \r\n \r\n files.some(f => ['preparing', 'getting_upload_params', 'uploading'].includes(f.meta.status))\r\n }\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DocumentUpload;","import React, { useEffect, useState } from \"react\";\r\nimport Document from \"./Document\";\r\nimport { DocumentSectionDto } from \"../models/DocumentSectionDto\";\r\nimport { DocumentSectionStatus } from \"../models/DocumentSectionStatus\";\r\nimport { useDocumentActions } from \"actions/documentActions\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport DocumentUpload from \"./DocumentUpload\";\r\nimport { deleteAttachment } from \"../../../services/documentService\";\r\nimport ModalPopup from \"../../../components/common/ModalPopup\";\r\nimport styles from \"./BorrowerDocument.module.scss\";\r\nimport { BrowserView, MobileView, isMobile } from 'react-device-detect';\r\nimport * as documentService from \"../../../services/documentService\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface DocumentSectionProps {\r\n section: DocumentSectionDto;\r\n getData: () => void;\r\n}\r\n\r\nconst DocumentSection = (props: DocumentSectionProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n const [showDocuments, setShowDocuments] = useState(false);\r\n const [hasDocuments, setHasDocuments] = useState(false);\r\n const [openModel, setModalState] = React.useState(false);\r\n const [sectionId, setSectionId] = React.useState();\r\n const [showSpinner, setShowSpinner] = useState(false);\r\n const [openConfirmationModalPopup, setOpenConfirmationModalPopup] = useState(false);\r\n const [isDeleteddocument, setDeletedDocument] = useState({ loanGuid: \"\", dto: {} });\r\n\r\n const flipShow = () => {\r\n if (hasDocuments) {\r\n actions.AlterSectionExpandedStatus(\r\n props.section?.documentSectionId ?? -1,\r\n !showDocuments\r\n );\r\n }\r\n };\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n const downloadGiftLetter = () => {\r\n setShowSpinner(true);\r\n documentService.generateGiftLetterPdf(loanGuid)\r\n .then((response: any) => {\r\n if (response.status == 200 && response.data.size > 0) {\r\n const file = new Blob([response.data], { type: \"application/pdf\" });\r\n const fileURL = URL.createObjectURL(file);\r\n const fileName = response.headers[\"x-file-name\"];\r\n downloadData(fileURL, fileName);\r\n }\r\n else {\r\n console.error(\"there is some problem while generating Gift Letter pdf file\");\r\n }\r\n setShowSpinner(false);\r\n })\r\n .catch((error: Error) => {\r\n setShowSpinner(false);\r\n console.error(error);\r\n });\r\n }\r\n\r\n const creditLoxDocument = () => {\r\n setShowSpinner(true);\r\n documentService.generateCreditLoxLetterPdf(loanGuid)\r\n .then((response: any) => {\r\n if (response.status == 200 && response.data.size > 0) {\r\n const file = new Blob([response.data], { type: \"application/pdf\" });\r\n const fileURL = URL.createObjectURL(file);\r\n const fileName = response.headers[\"x-file-name\"];\r\n downloadData(fileURL, fileName);\r\n }\r\n else {\r\n console.error(\"there is some problem while generating Credit Lox Document\");\r\n }\r\n setShowSpinner(false);\r\n })\r\n .catch((error: Error) => {\r\n setShowSpinner(false);\r\n console.error(error);\r\n });\r\n }\r\n\r\n const downloadData = (fileURL: string, fileName: string) => {\r\n const save = document.createElement('a');\r\n if (typeof save.download !== 'undefined') {\r\n save.href = fileURL;\r\n save.target = '_blank';\r\n save.download = fileName;\r\n save.dispatchEvent(new MouseEvent('click'));\r\n } else {\r\n window.location.href = fileURL;\r\n }\r\n }\r\n\r\n const actions = useDocumentActions();\r\n const expandedSections = useSelector(\r\n (state: ApplicationState) => state.document?.expandedSections\r\n );\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.loan?.loanGuid ?? \"\"\r\n );\r\n\r\n const isLoanOriginatedFromEnc = useSelector(\r\n (state: ApplicationState) => state.loan?.isLoanFromEncompassFlag ?? \"\"\r\n );\r\n\r\n useEffect(() => {\r\n const sectionInExpandedArray =\r\n expandedSections?.includes(props.section?.documentSectionId ?? -1) ?? false;\r\n\r\n setShowDocuments(sectionInExpandedArray && hasDocuments);\r\n }, [expandedSections, hasDocuments]);\r\n\r\n useEffect(() => {\r\n setHasDocuments((props.section?.documents?.length ?? 0) > 0);\r\n }, [props.section]);\r\n\r\n const getStatus = (status: DocumentSectionStatus | null | undefined) => {\r\n switch (status) {\r\n case DocumentSectionStatus.Accepted:\r\n return styles.accepted;\r\n case DocumentSectionStatus.Requested:\r\n return styles.requested;\r\n case DocumentSectionStatus.Rejected:\r\n return styles.rejected;\r\n case DocumentSectionStatus.Submitted:\r\n return styles.submitted;\r\n case DocumentSectionStatus.Outstanding:\r\n return styles.outstanding;\r\n default:\r\n return <>;\r\n }\r\n }\r\n\r\n const modal = (sectionId: number | undefined) => {\r\n setModalState(true);\r\n setSectionId(sectionId);\r\n }\r\n\r\n const submit = () => {\r\n setModalState(false);\r\n props.getData();\r\n }\r\n\r\n const deleteDocument = async (loanGuid: string, documentDto?: any) => {\r\n setOpenConfirmationModalPopup(true);\r\n setDeletedDocument({ loanGuid: loanGuid, dto: documentDto });\r\n }\r\n\r\n const confirmDelete = async () => {\r\n setShowSpinner(true);\r\n setOpenConfirmationModalPopup(false);\r\n let response = await deleteAttachment(isDeleteddocument.loanGuid, props.section.documentSectionId ?? 0, isDeleteddocument.dto);\r\n if (response && response.parsedBody && response.parsedBody.body) {\r\n throw new Error(\"Exception occurred while deleting the document.\")\r\n }\r\n\r\n setShowSpinner(false);\r\n props.getData();\r\n }\r\n\r\n return (\r\n <>\r\n {showSpinner &&
    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {(props.section.title === \"Fully Executed Gift Letter\" || props.section.title === \"Credit Authorization\")\r\n &&
    stopSpeech()} onMouseOver={() => textToSpeech(props.section.title)}>{props.section.title}
    }\r\n {(props.section.title != \"Fully Executed Gift Letter\" && props.section.title != \"Credit Authorization\")\r\n &&
    modal(props.section.documentSectionId)} onMouseOut={() => stopSpeech()} onMouseOver={() => textToSpeech(props.section.title)}>\r\n {props.section.title}
    }\r\n
    {DocumentSectionStatus[props.section.status as any]}\r\n
    \r\n
    \r\n
    \r\n {showDocuments && (\r\n <>\r\n {props.section.documents?.map((value) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n stopSpeech()} onMouseOver={() => textToSpeech(props.section.description)}>{props.section.description}\r\n
    \r\n\r\n {(props.section.title != \"Fully Executed Gift Letter\" && props.section.title != \"Credit Authorization\") ?\r\n \r\n :\r\n \r\n }\r\n {props.section.title === \"Fully Executed Gift Letter\" &&\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n setOpenConfirmationModalPopup(false)}\r\n isOpen={openConfirmationModalPopup} onSubmit={confirmDelete} />\r\n\r\n\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DocumentSection;","import React from \"react\";\r\nimport DocumentSection from \"./DocumentSection\";\r\nimport { DocumentSectionDto } from \"../models/DocumentSectionDto\";\r\nimport styles from \"./BorrowerDocument.module.scss\";\r\nimport { IsNarrator } from \"../../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\ninterface DocumentGroupProps {\r\n sections: DocumentSectionDto[];\r\n category: string | null | undefined;\r\n getData: () => void;\r\n}\r\nconst DocumentGroup = (props: DocumentGroupProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n return (\r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech(props.category)}>{props.category}
    \r\n {props.sections?.map((value) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default DocumentGroup;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styles from \"./BorrowerDocument.module.scss\";\r\nimport { DocumentSectionDto } from \"../models/DocumentSectionDto\";\r\nimport { from, IGrouping } from \"linq\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ApplicationState } from \"store\";\r\nimport { getSectionsByLoanguid, removeSection } from \"services/documentService\";\r\nimport { useHistory } from \"react-router\";\r\nimport Infographic from \"components/common/Infographic\";\r\nimport RequiredDocumentInfographics from \"../../../assets/infographics/documents/requiredDocs.svg\";\r\nimport DocumentGroup from \"./DocumentGroup\";\r\n\r\nconst BorrowerDocuments = () => {\r\n const [sections, setSections] = useState([]);\r\n const [groupings, setGroupings] = useState<\r\n IGrouping[]\r\n >([]);\r\n const [showSpinner, setShowSpinner] = useState(false);\r\n const loanGuid = useSelector(\r\n (state: ApplicationState) => state.loan?.loanGuid ?? \"\"\r\n );\r\n\r\n useEffect(() => {\r\n getData();\r\n }, [loanGuid]);\r\n\r\n const getData = async () => {\r\n if (loanGuid) {\r\n setShowSpinner(true);\r\n setSections([]);\r\n var result = await getSectionsByLoanguid(loanGuid);\r\n setShowSpinner(false);\r\n if (result.ok && !result.parsedBody?.hasError) {\r\n setSections(result.parsedBody?.body ?? []);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const categoryGroupings = from(sections)\r\n .groupBy((x) => x.category)\r\n .toArray();\r\n setGroupings(categoryGroupings);\r\n }, [sections]);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n <>{showSpinner &&
    }\r\n
    \r\n {groupings?.map((value) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default BorrowerDocuments;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { appConfigAsync } from \"../../authConfig\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\n\r\nexport default function EmConsumerConnect() {\r\n const [siteId, setSiteId] = useState(\"\");\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (location.state == undefined) {\r\n history.push({ pathname: \"/document\", search: location.search, state: { action: \"SSO\" } });\r\n return;\r\n }\r\n\r\n appConfigAsync().then(config => {\r\n setSiteId(config.ConsumerConnectSiteId);\r\n\r\n //Load the EMLauncher widget\r\n const script = document.createElement(\"script\");\r\n script.async = false;\r\n script.src = \"https://widget.ellieservices.com/latest/launcher.js\";\r\n document.head.appendChild(script);\r\n });\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n );\r\n}","import React, { useEffect } from \"react\";\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport Loading from \"../common/Loader\";\r\n\r\nexport default function SignDocument() {\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n //Ensure user is logged into Okta for SSO before taken to the EM Consumer Connect (ECC) for document signing\r\n history.push({ pathname: \"/id\", state: { action: \"SSO\", qs: location.search } });\r\n }, []);\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport queryString from \"query-string\";\r\nimport { useOktaAuth } from \"@okta/okta-react\";\r\nimport * as OktaSignIn from \"@okta/okta-signin-widget\";\r\nimport \"@okta/okta-signin-widget/dist/css/okta-sign-in.min.css\";\r\nimport userSignInStyles from \"./UserSignIn.module.scss\";\r\nimport styles from \"../common/MessageBox.module.scss\";\r\nimport SessionInfo from \"../../SessionDataTracker\";\r\nimport { duplicateEmail, validateSocialSecurityNumber } from '../../services/accountInformationService';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\n\r\nconst UserSignIn = () => {\r\n const { authState, oktaAuth } = useOktaAuth();\r\n const history = useHistory();\r\n const location = useLocation();\r\n const [loginHint, setLoginHint] = React.useState(\"\");\r\n\r\n // modal popup diplay change for shared email\r\n const [openModal, setOpenModal] = React.useState(false);\r\n const [ssn, setSsn] = React.useState(\"\");\r\n const [showError, setShowError] = React.useState(false);\r\n const [user, setUser] = React.useState({ email: \"\" });\r\n const [isLoading, setLoading] = React.useState(false);\r\n\r\n useEffect(() => {\r\n //This is from new user registration email and Okta redirects the \r\n //user here after the new account has been verified.\r\n //Set the location.state to let the user sign in.\r\n if (location.state == undefined) {\r\n const queryStringValues = queryString.parse(location.search);\r\n if (queryStringValues[\"type_hint\"] === \"EMAIL_VERIFICATION\" ||\r\n queryStringValues[\"type_hint\"] === \"PASSWORD_RECOVERY\") {\r\n location.state = { action: \"sign-in\", borrowerType: \"Unknown\" };\r\n setLoginHint(queryStringValues[\"login_hint\"] as string);\r\n }\r\n else if (queryStringValues[\"type_hint\"] === \"OKTA_REDIRECT\") {\r\n location.state = { action: \"sign-in\", borrowerType: \"Unknown\" };\r\n oktaAuth.getUser().then((user) => {\r\n history.push({ pathname: \"/sign-in\", state: location.state });\r\n return () => { };\r\n });\r\n } else {\r\n history.push({ pathname: \"/\" });\r\n return () => { };\r\n }\r\n }\r\n\r\n const config = SessionInfo.config;\r\n const issuer = config.issuer;\r\n const scopes = config.scopes;\r\n const clientId = config.clientId;\r\n const redirectUri = config.redirectUri;\r\n const widget = new OktaSignIn({\r\n baseUrl: issuer.split(\"/oauth2\")[0],\r\n clientId,\r\n redirectUri,\r\n logo: \"/uhm-logo.png\",\r\n username: loginHint,\r\n i18n: {\r\n en: {\r\n \"primaryauth.title\": \"Sign in with your email address\",\r\n },\r\n },\r\n colors: {\r\n brand: \"#3d1951\"\r\n },\r\n authParams: {\r\n // To avoid redirect do not set \"pkce\" or \"display\" here. OKTA-335945\r\n issuer,\r\n scopes,\r\n },\r\n useInteractionCodeFlow: config.useInteractionCode, // Set to true, if your org is OIE enabled\r\n features: {\r\n rememberMe: false,\r\n showPasswordToggleOnSignInPage: true,\r\n registration: false\r\n },\r\n });\r\n\r\n const autoLaunchDisclosureTile = async (oktaWidget: any) => {\r\n if (location.state.action === \"SSO\" && location.state.qs === \"\") {\r\n const oktaAuthClient = oktaWidget.authClient;\r\n const sessionExists = await oktaAuthClient.session.exists();\r\n if (sessionExists) {\r\n const session = await oktaAuthClient.token.getWithoutPrompt({ responseType: [\"token\", \"id_token\"] });\r\n if (session?.tokens?.accessToken?.value) {\r\n history.push({ pathname: \"/ecc\", search: location.state.qs, state: location.state });\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n autoLaunchDisclosureTile(widget).then((autoLaunch: Boolean) => {\r\n if (autoLaunch === false) {\r\n widget.renderEl(\r\n { el: \"#OktaLoginWidget\" },\r\n (res: any) => {\r\n SessionInfo.tokens = res?.tokens;\r\n oktaAuth.tokenManager.setTokens(SessionInfo.tokens);\r\n\r\n if (res.status === \"FORGOT_PASSWORD_EMAIL_SENT\") {\r\n history.push({ pathname: \"/sign-in\", state: { action: \"password-reset\" } });\r\n }\r\n else if (res.tokens == undefined) {\r\n history.push({ pathname: \"/\" });\r\n }\r\n else {\r\n oktaAuth.handleLoginRedirect(res.tokens).then(result => {\r\n //fetch login detail from Okta.\r\n oktaAuth.getUser().then(async (user: any) => {\r\n setUser({ email: user.email });\r\n if (user.email) {\r\n let response = await isSharedEmail(user.email);\r\n if (response) {\r\n setOpenModal(true);\r\n } else {\r\n history.push({ pathname: \"/sign-in\", state: location.state });\r\n }\r\n } else {\r\n console.error(\"User details not found!\");\r\n }\r\n });\r\n\r\n });\r\n }\r\n },\r\n (err: any) => {\r\n console.error(err);\r\n throw err;\r\n },\r\n );\r\n }\r\n });\r\n\r\n widget.on(\"afterError\", (context: any, error: any) => {\r\n console.error(\"Okta\", error);\r\n });\r\n\r\n return () => widget.remove();\r\n }, [oktaAuth]);\r\n\r\n const isSharedEmail = async (email: string) => {\r\n return await duplicateEmail(email).then((res) => {\r\n return res.body && res.parsedBody;\r\n });\r\n }\r\n\r\n const checkValidSsn = (ssn: string, email: string) => {\r\n validateSocialSecurityNumber(ssn, email).then((res) => {\r\n setLoading(false);\r\n if (isNullOrWhiteSpace(res.parsedBody)) {\r\n setShowError(true);\r\n } else {\r\n setOpenModal(false);\r\n history.push({ pathname: \"/sign-in\", state: { ...location.state, borrowerType: res.parsedBody } });\r\n }\r\n }).catch((e: any) => {\r\n setLoading(false);\r\n console.error(\"Following exception occurred:\", e);\r\n });\r\n }\r\n\r\n const closeModal = () => {\r\n setOpenModal(false);\r\n setSsn(\"\");\r\n window.location.reload();\r\n }\r\n\r\n return (<>\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    Need SSN Verification
    \r\n
    \r\n \r\n \r\n\r\n {\r\n setSsn(values.value);\r\n }}\r\n />\r\n\r\n {showError &&\r\n Please enter a valid social security number.}\r\n \r\n {isLoading &&
    }\r\n\r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n );\r\n};\r\n\r\nexport default UserSignIn;\r\n","import React, { useState, useReducer } from \"react\";\r\nimport { connect, useSelector } from \"react-redux\";\r\nimport { Link, useHistory, useLocation } from \"react-router-dom\";\r\nimport UhmLogo from \"assets/logo/uhm-logo.png\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { UserAccountFields } from \"../../store/Enum\";\r\nimport styles from \"./SignUp.module.scss\";\r\nimport PasswordChecklist from \"react-password-checklist\";\r\nimport * as Validation from \"../constants/validation\";\r\nimport * as accountInformationService from \"../../services/accountInformationService\";\r\nimport MessageBox from \"../common/MessageBox\";\r\nimport { ApplicationState } from \"store\";\r\nimport SelectDropDown from \"../common/Input/SelectDropDown\";\r\nimport { BorrowerTypeEnum } from \"../common/Enums/BorrowerTypeEnum\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport { AccountInformationState } from \"../../store/accountInformationStore\";\r\nimport { LoanUpdateResponseState } from \"../../store/loanUpdateResponseStore\";\r\nimport * as AccountInformationActions from \"../../actions/accountInformationActions\";\r\nimport * as UserAcountActions from \"../../actions/userAcount\";\r\nimport * as userAccountStore from \"../../store/userAccountStore\";\r\nimport Loading from \"../common/Loader\";\r\nimport { userAcountActionCreators } from \"../../actions/userAcount\";\r\nimport { NumberFormatInput } from \"../common/Input/NumberFormatInput\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\nimport * as AccountInformationInterfaces from \"../../interfaces/accountInformationInterfaces\";\r\nimport * as LoanUpdateResponseActions from \"../../actions/loanUpdateResponseActions\";\r\nimport { IAccountInformationProps } from \"../../store/accountInformationStore\";\r\nimport { loanActionCreators } from \"../../actions/loanActions\";\r\n\r\n\r\ntype UserSignUpProps = userAccountStore.UserAccountState\r\n & typeof AccountInformationActions.accountInformationActionCreators & typeof userAcountActionCreators\r\n & typeof loanActionCreators;\r\n\r\nfunction reducer(state: any, action: any) {\r\n switch (action.type) {\r\n case \"firstName\":\r\n return { ...state, firstName: action.value }\r\n case \"lastName\":\r\n return { ...state, lastName: action.value }\r\n case \"email\":\r\n return { ...state, email: action.value }\r\n case \"mobile\":\r\n return { ...state, mobile: action.value }\r\n case \"password\":\r\n return { ...state, password: action.value }\r\n case \"confirmPassword\":\r\n return { ...state, confirmPassword: action.value }\r\n case \"verificationCode\":\r\n return { ...state, verificationCode: action.value }\r\n case \"resetQuestion\":\r\n return { ...state, resetQuestion: action.value }\r\n case \"resetAnswer\":\r\n return { ...state, resetAnswer: action.value }\r\n case \"deliveryMethod\":\r\n return { ...state, deliveryMethod: action.value }\r\n case \"loanGuid\":\r\n return { ...state, loanGuid: action.value }\r\n default:\r\n throw new Error(\"Reducer: Invalid action type\");\r\n }\r\n}\r\n\r\nconst UserSignUp = (props: UserSignUpProps) => {\r\n const account = useSelector((state: ApplicationState) => state.accountInformation as AccountInformationState);\r\n const [state, dispatch] = useReducer(reducer, {\r\n firstName: account.borrowerFirstName,\r\n lastName: account.borrowerLastName,\r\n email: account.borrowerEmail,\r\n mobile: account.borrowerPhoneNumber,\r\n verificationCode: \"\",\r\n password: \"\",\r\n confirmPassword: \"\",\r\n resetQuestion: \"\",\r\n resetAnswer: \"\",\r\n deliveryMethod: \"Email\",\r\n loanGuid: account.loanGuid,\r\n });\r\n const { register, handleSubmit, errors } = useForm({\r\n mode: \"onTouched\",\r\n reValidateMode: 'onBlur',\r\n });\r\n const location = useLocation();\r\n const history = useHistory();\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\r\n const [message, setMessage] = useState({ display: false, title: \"\", text: \"\" });\r\n const [codeVerified, setCodeVerified] = useState(false);\r\n const [passwordValid, setPasswordValid] = useState(false);\r\n const [passwordMatched, setPasswordMatched] = useState(false);\r\n const [emailCheck, setEmailCheck] = useState(false);\r\n const [resetQuestions, setResetQuestions] = useState([]);\r\n const [result, setResult] = useState(\"\");\r\n const [isValidMobile, setValidMobile] = useState(true);\r\n const [userAlreadyVerified, setUserAlreadyVerified] = useState(false);\r\n const emailRegExp = new RegExp(Validation.Rule.EmailValidation.value);\r\n\r\n if (location.state == undefined && (account.loanGuid == undefined || account.loanGuid === \"\") && location.search.indexOf('userKey') < 0) {\r\n history.push({ pathname: \"/\" });\r\n }\r\n\r\n const onSubmit = async () => {\r\n let result;\r\n if (passwordValid) {\r\n await accountInformationService.accountSignUp(state)\r\n .then(async (response: any) => {\r\n\r\n result = response.parsedBody.body;\r\n setResult(result);\r\n if (result === \"Account Created\") {\r\n let requestState = location.state;\r\n if (requestState == undefined) {\r\n requestState = { action: \"sign-in\", borrowerType: \"Borrower\" };\r\n }\r\n if (account.accountInformationCheck && result === \"Account Created\" && result !== \"An account already exists with this email address. Please go back to login page and try to sign in with your credentials.\") {\r\n await loanCreation();\r\n }\r\n history.push({ pathname: \"id\", state: requestState });\r\n } else {\r\n setMessage({ ...message, display: true, title: \"Create Account\", text: result });\r\n }\r\n }\r\n );\r\n }\r\n };\r\n const loanCreation = async () => {\r\n let accountInformation: IAccountInformationProps = {\r\n noOfUnits: account.howManyUnitsChoice,\r\n borrowerEmailAddress: account.borrowerEmail,\r\n loanPurpose: account.loanPurposeChoice,\r\n userId: account.userId,\r\n occupancyType: account.occupancyTypeChoice,\r\n propertyType: account.propertyTypeChoice,\r\n purchaseClosingDate: account.closingDateChoice,\r\n refinancePriority: account.priorityChoice,\r\n borrowerFirstName: account.borrowerFirstName,\r\n borrowerLastName: account.borrowerLastName,\r\n borrowerPhoneNumber: account.borrowerPhoneNumber,\r\n borrowerMiddleName: account.borrowerMiddleName,\r\n borrowerNameSuffix: account.borrowerNameSuffix,\r\n borrowerType: account.borrowerType ?? \"\"\r\n };\r\n\r\n props.IsLoading(true);\r\n props.isLoancreated(true);\r\n await accountInformationService.create(accountInformation, account.loanGuid)\r\n .then((response: any) => {\r\n if (response.status != 200) {\r\n return;\r\n }\r\n console.log(\"loan createed in Encompass with loanGuid:\", response);\r\n let result = response.parsedBody as LoanUpdateResponseState;\r\n\r\n\r\n if (result.isEncompassDown || result.loanGuid === null || result.loanGuid === \"\") {\r\n console.log(\"Encompass service is down or loanGuid not present\");\r\n history.push({ pathname: \"/system-unavailable\" });\r\n return;\r\n }\r\n\r\n if (accountInformation.userId == undefined) {\r\n accountInformation.userId = \"\";\r\n }\r\n\r\n props.IsLoading(false);\r\n\r\n if (result.loanGuid === \"Email id already registered\" || result.isEncompassDown) {\r\n props.submitInitialAccountInformation(false);\r\n }\r\n else {\r\n props.setLoanGuid(result.loanGuid);\r\n props.setInterimLoanStagingId(result.interimLoanStagingId);\r\n }\r\n\r\n return result;\r\n })\r\n .catch((error: Error) => {\r\n console.error(\"Error occurred during loan creation: \", error);\r\n });\r\n }\r\n\r\n const login = async () => {\r\n let requestState = location.state;\r\n if (requestState == undefined) {\r\n requestState = { action: \"sign-in\", borrowerType: \"Unknown\" };\r\n }\r\n if (requestState &&\r\n requestState?.action === \"invitation\" &&\r\n requestState?.borrowerType === BorrowerTypeEnum.CoBorrower &&\r\n !isNullOrWhiteSpace(requestState?.loanGuid)) {\r\n requestState = { action: \"sign-in\", borrowerType: BorrowerTypeEnum.CoBorrower, loanGuid: requestState?.loanGuid, invitation: requestState?.action };\r\n }\r\n history.push({ pathname: \"/id\", state: requestState });\r\n }\r\n\r\n const readVerificationData = (userKey: string) => {\r\n props.IsLoading(true);\r\n accountInformationService.readVerificationData(userKey)\r\n .then((response: any) => {\r\n if (!response.ok) {\r\n console.error(response);\r\n }\r\n return response.parsedBody as any;\r\n })\r\n .then((data: any) => {\r\n\r\n props.IsLoading(false);\r\n let emailVerificationData = data?.emailVerification;\r\n let accountInformationData = data?.accountInformationData;\r\n\r\n if (!data.emailVerification) {\r\n dispatch({ type: \"verificationCode\", value: \"\" });\r\n setMessage({ ...message, display: true, title: \"Verification Code\", text: \"Your Verification Link has expired.\" });\r\n return true;\r\n }\r\n\r\n if (emailVerificationData.verified) {\r\n setUserAlreadyVerified(true);\r\n return true;\r\n }\r\n\r\n dispatch({ type: \"firstName\", value: accountInformationData.borrowerFirstName });\r\n dispatch({ type: \"lastName\", value: accountInformationData.borrowerLastName });\r\n dispatch({ type: \"email\", value: accountInformationData.borrowerEmailAddress });\r\n dispatch({ type: \"mobile\", value: accountInformationData.borrowerPhoneNumber });\r\n\r\n dispatch({ type: \"deliveryMethod\", value: emailVerificationData.deliveryMethod });\r\n\r\n //Update Redux store\r\n props.updateBorrowerEmail(accountInformationData.borrowerEmailAddress);\r\n props.updateBorrowerFirstName(accountInformationData.borrowerFirstName);\r\n props.updateBorrowerLastName(accountInformationData.borrowerLastName);\r\n props.updateBorrowerMiddleName(accountInformationData.borrowerMiddleName);\r\n props.updateBorrowerNameSuffix(accountInformationData.borrowerNameSuffix);\r\n props.updateBorrowerPhoneNumber(accountInformationData.borrowerPhoneNumber);\r\n props.updateHowManyUnitsChoice(accountInformationData.noOfUnits);\r\n props.updatePriorityChoice(accountInformationData.refinancePriority);\r\n props.updateClosingDateChoice(accountInformationData.purchaseClosingDate);\r\n props.updateLoanPurposeChoice(accountInformationData.loanPurpose);\r\n props.updateOccupancyTypeChoice(accountInformationData.occupancyType);\r\n props.updatePropertyTypeChoice(accountInformationData.propertyType);\r\n props.updateUserId(accountInformationData.userId);\r\n props.setLoanGuid(accountInformationData?.loanGuid);\r\n\r\n if (!emailVerificationData.verificationCode) {\r\n dispatch({ type: \"verificationCode\", value: \"\" });\r\n setMessage({ ...message, display: true, title: \"Verification Code\", text: \"Your Verification Code has expired. Please choose Send Verification Code to receive a new one and continue creating your account.\" });\r\n return true;\r\n }\r\n\r\n dispatch({ type: \"verificationCode\", value: emailVerificationData.verificationCode });\r\n setCodeVerified(true);\r\n\r\n })\r\n .catch((error: Error) => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n const sendVerificationCode = () => {\r\n let accountInformation: IAccountInformationProps = {\r\n noOfUnits: account.howManyUnitsChoice,\r\n borrowerEmailAddress: state.email,\r\n loanPurpose: account.loanPurposeChoice,\r\n userId: account.userId,\r\n occupancyType: account.occupancyTypeChoice,\r\n propertyType: account.propertyTypeChoice,\r\n purchaseClosingDate: account.closingDateChoice,\r\n refinancePriority: account.priorityChoice,\r\n borrowerFirstName: state.firstName,\r\n borrowerLastName: state.lastName,\r\n borrowerPhoneNumber: state.mobile,\r\n borrowerMiddleName: account.borrowerMiddleName,\r\n borrowerNameSuffix: account.borrowerNameSuffix\r\n };\r\n props.IsLoading(true);\r\n accountInformationService.sendEmailVerificationCode(state.deliveryMethod, accountInformation, account.loanGuid)\r\n .then((response: any) => {\r\n props.IsLoading(false);\r\n setMessage({ ...message, display: true, title: \"Verification Code\", text: response.parsedBody });\r\n });\r\n }\r\n\r\n const verifyEmailCode = (email: string, verificationCode: string) => {\r\n const isValidEmail = (email) ? emailRegExp.test(email) : false;\r\n\r\n console.log(email, \"in verifyEmailCode:\", isValidEmail);\r\n\r\n if (isValidEmail && verificationCode.length === 6) {\r\n accountInformationService.verifyEmailVerificationCode(email)\r\n .then((response: any) => {\r\n const emailVerificationData = response.parsedBody\r\n const isVerificationCodeValid = (emailVerificationData.verificationCode == verificationCode) ? true : false;\r\n\r\n //User Already Verified\r\n if (emailVerificationData.verified) {\r\n setMessage({ ...message, display: true, title: \"Verification Code\", text: \"User already verified. Please go back to login page and try to sign in with your credentials.\" });\r\n return true;\r\n }\r\n setCodeVerified(isVerificationCodeValid);\r\n if (!isVerificationCodeValid) {\r\n setMessage({\r\n ...message,\r\n display: true,\r\n title: `${state.deliveryMethod} Verification`,\r\n text: `The verification code for email ${email} is invalid.`\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n setCodeVerified(false);\r\n }\r\n }\r\n\r\n const showBackToLogin = (): boolean => {\r\n const baseUrl = window.location.href;\r\n return baseUrl.includes(\"//uat.uhmnow\") ||\r\n baseUrl.includes(\"//qa.uhmnow\") ||\r\n baseUrl.includes(\"//localhost\");\r\n }\r\n\r\n const isVerificationButtonDisabled = (): boolean | undefined => {\r\n let isValid = true;\r\n if ((state.firstName?.trim().length === 0 || state.firstName?.trim().length > 30) || (state.lastName?.trim().length === 0 || state.lastName?.trim().length > 30)) {\r\n isValid = false;\r\n } else if ((!state.email || !emailRegExp.test(state.email)) || (!state.mobile || state.mobile.length < 10)) {\r\n isValid = false\r\n }\r\n return isValid;\r\n }\r\n\r\n React.useEffect(() => {\r\n accountInformationService.passwordResetQuestions().then((response: any) => {\r\n var questions = response.parsedBody;\r\n setResetQuestions(questions);\r\n });\r\n\r\n let userKey: any;\r\n if (location.search.indexOf(\"userKey\") > -1) {\r\n userKey = location.search.split(\"=\").pop();\r\n }\r\n if (userKey) {\r\n readVerificationData(userKey);\r\n props.accountInformationCheck(true);\r\n } else {\r\n setUserAlreadyVerified(false);\r\n verifyEmailCode(state.email, state.verificationCode);\r\n }\r\n }, []);\r\n\r\n const showContent = () => {\r\n if (!userAlreadyVerified) {\r\n return (<>
    \r\n
    \r\n \"Union\r\n
    \r\n
    \r\n

    Create Account

    \r\n
    \r\n
    \r\n ) =>\r\n dispatch({ type: \"firstName\", value: e.target.value })\r\n }\r\n ref={register({\r\n required: Validation.ValidationMessage.Required,\r\n maxLength: { value: 30, message: \"The value entered exceeds the maximum length requirement.\" },\r\n })} />\r\n \r\n
    \r\n\r\n
    \r\n\r\n ) =>\r\n dispatch({ type: \"lastName\", value: e.target.value })\r\n }\r\n ref={register({\r\n required: Validation.ValidationMessage.Required,\r\n maxLength: { value: 30, message: \"The value entered exceeds the maximum length requirement.\" },\r\n })} />\r\n \r\n
    \r\n\r\n
    \r\n ) => {\r\n dispatch({ type: \"email\", value: e.target.value });\r\n verifyEmailCode(e.target.value, state.verificationCode);\r\n setEmailCheck(!emailRegExp.test(e.target.value));\r\n }} />\r\n {emailCheck && Please enter a valid email address.}\r\n \r\n
    \r\n\r\n
    \r\n <>\r\n {\r\n if (values) {\r\n if (values.value.trim().length == 0) {\r\n setValidMobile(false);\r\n } else {\r\n setValidMobile(true);\r\n }\r\n }\r\n dispatch({ type: \"mobile\", value: values.value.trim() });\r\n }}\r\n onBlur={(values: any) => {\r\n if (values.target.value.length == 0) {\r\n setValidMobile(false);\r\n } else {\r\n setValidMobile(true);\r\n }\r\n }}\r\n />\r\n <>\r\n {\r\n !isValidMobile &&\r\n \r\n }\r\n\r\n {\r\n (state.mobile && state.mobile.length < 10) &&\r\n \r\n }\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n dispatch({ type: \"deliveryMethod\", value: \"Email\" });\r\n }}\r\n />\r\n \r\n\r\n
    \r\n\r\n
    \r\n {\r\n dispatch({ type: \"deliveryMethod\", value: \"Text\" });\r\n }}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n ) => {\r\n dispatch({ type: \"verificationCode\", value: e.target.value });\r\n verifyEmailCode(state.email, e.target.value);\r\n }}\r\n ref={register({\r\n required: Validation.ValidationMessage.Required,\r\n maxLength: { value: 6, message: \"The value entered exceeds the maximum length requirement.\" }\r\n })} />\r\n \r\n
    \r\n\r\n
    \r\n ) =>\r\n dispatch({ type: \"password\", value: e.target.value })\r\n }\r\n ref={register({\r\n required: Validation.ValidationMessage.Required\r\n })} />\r\n \r\n setShowPassword(prevState => !prevState)}>\r\n \r\n \r\n {codeVerified &&\r\n
    \r\n { setPasswordValid(isValid); }}\r\n messages={{\r\n minLength: \"At least 8 character(s)\",\r\n specialChar: \"At least 1 special character(s)\",\r\n number: \"At least 1 number(s)\",\r\n capital: \"At least 1 uppercase letter(s)\",\r\n lowercase: \"At least 1 lowercase letter(s)\"\r\n }}\r\n />\r\n
    }\r\n
    \r\n\r\n
    \r\n ) =>\r\n dispatch({ type: \"confirmPassword\", value: e.target.value })\r\n }\r\n ref={register({\r\n required: Validation.ValidationMessage.Required\r\n })} />\r\n \r\n setShowConfirmPassword(prevState => !prevState)}>\r\n \r\n {codeVerified &&\r\n
    \r\n { setPasswordMatched(isValid); }}\r\n messages={{\r\n match: \"\",\r\n }}\r\n />\r\n
    }\r\n
    \r\n\r\n
    \r\n ) =>\r\n dispatch({ type: \"resetQuestion\", value: e.target.value })\r\n }\r\n rule={{ required: Validation.ValidationMessage.Required }}\r\n invalidclass={styles.invalidField}\r\n noArrow={false}\r\n >\r\n \r\n {resetQuestions.map((m, idx) => )}\r\n \r\n \r\n
    \r\n\r\n
    \r\n ) => {\r\n dispatch({ type: \"resetAnswer\", value: e.target.value });\r\n }}\r\n ref={register({\r\n required: Validation.ValidationMessage.Required\r\n })} />\r\n \r\n
    \r\n\r\n \r\n
    \r\n\r\n {showBackToLogin() &&\r\n Back to sign in.\r\n }\r\n
    \r\n\r\n {message.display &&\r\n setMessage({ ...message, display: false })}\r\n login={login}\r\n >\r\n }\r\n
    )\r\n } else {\r\n return (<>\r\n
    \r\n
    \r\n \r\n

    Session Expired!

    \r\n Back to sign in.\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n account.isLoading ? < Loading /> : showContent()\r\n }\r\n\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage = (props: { message: string | undefined | null }) => {\r\n return (\r\n <>\r\n {props.message &&
    {props.message}
    }\r\n \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n submitInitialAccountInformation: (value: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.submitInitialAccountInformation(value));\r\n },\r\n setLoanGuid: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.setLoanGuid(value));\r\n },\r\n setInterimLoanStagingId: (value?: number) => {\r\n dispatch(loanActionCreators.setInterimLoanStagingId(value));\r\n},\r\n isLoancreated: (value: boolean) => {\r\n dispatch(userAcountActionCreators.isLoancreated(value));\r\n },\r\n IsLoading: (value?: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.IsLoading(value));\r\n },\r\n //These are also using in AccountInformation.tsx file\r\n updateLoanPurposeChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateLoanPurposeChoice(value));\r\n },\r\n updateUserId: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateUserId(value));\r\n },\r\n updateOccupancyTypeChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateOccupancyTypeChoice(value));\r\n },\r\n updatePropertyTypeChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updatePropertyTypeChoice(value));\r\n },\r\n updateClosingDateChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateClosingDateChoice(value));\r\n },\r\n updatePriorityChoice: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updatePriorityChoice(value));\r\n },\r\n updateHowManyUnitsChoice: (value?: AccountInformationInterfaces.HowManyUnitsChoices) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateHowManyUnitsChoice(value));\r\n },\r\n updateBorrowerFirstName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerFirstName(value));\r\n },\r\n updateBorrowerMiddleName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerMiddleName(value));\r\n },\r\n updateBorrowerLastName: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerLastName(value));\r\n },\r\n updateBorrowerNameSuffix: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerNameSuffix(value));\r\n },\r\n updateBorrowerEmail: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerEmail(value));\r\n },\r\n updateBorrowerPhoneNumber: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.updateBorrowerPhoneNumber(value));\r\n },\r\n setIsEncompassDown: (isEncompassDown?: boolean) => {\r\n dispatch(LoanUpdateResponseActions.loanUpdateResponseActionCreators.setIsEncompassDown(isEncompassDown));\r\n },\r\n accountInformationCheck: (value: boolean) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.accountInformationCheck(value));\r\n }\r\n});\r\n\r\n\r\nfunction mapStateToProps(state: ApplicationState) {\r\n const loanGuid = state.accountInformation?.loanGuid;\r\n const firstName = state.accountInformation?.borrowerFirstName;\r\n const lastName = state.accountInformation?.borrowerLastName;\r\n const email = state.accountInformation?.borrowerEmail;\r\n\r\n return {\r\n loanGuid,\r\n firstName,\r\n lastName,\r\n email\r\n };\r\n}\r\n\r\nexport default connect((state: ApplicationState) => mapStateToProps(state), mapDispatchToProps)(UserSignUp as any) as any;","import * as React from 'react';\r\nimport UhmLogo from \"assets/logo/uhm-logo.png\";\r\nimport * as loanOfficerInviteService from \"../../services/loanOfficerInviteService\";\r\nimport styles from \"./LoanOfficerInvite.module.scss\";\r\nimport { isNullOrWhiteSpace } from '../../common/helper/formatHelper';\r\n\r\nconst LoanOfficerInvite = () => {\r\n\r\n const [borrowerData, setBorrowerData] = React.useState([]);\r\n const [borrowers, setBorrowers] = React.useState([]);\r\n const [coborrowers, setCoBorrowers] = React.useState([]);\r\n const [loanGuid, setLoanGuid] = React.useState();\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const [isDisclosureDateEmpty, setDisclosureDate] = React.useState(false);\r\n\r\n const [checkBox, setCheckBox] = React.useState({\r\n borrowerCheckBox: false,\r\n coBorrowerCheckBox: false\r\n });\r\n const [responseMessage, setResponseMessage] = React.useState(\"\");\r\n\r\n const successMessage = \"The invitation(s) to UHMNOW has been sent!\";\r\n const errorMessage = \"The invitation(s) to UHMNOW could not be sent.\";\r\n const validationFailMessage = \"You cannot invite this borrower to UHMNOW because disclosures have already been sent in Encompass.\";\r\n const borrowerCheckMessage = \"You must select a Borrower before sending an invitation.\";\r\n\r\n React.useEffect(() => {\r\n const loanGuid = window.location.pathname.split(\"/\")[2];\r\n setLoanGuid(loanGuid);\r\n setIsLoading(true);\r\n\r\n loanOfficerInviteService.getBorrowersData(loanGuid)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"Unable to fetch borrower data.\");\r\n }\r\n return response.parsedBody as any[];\r\n })\r\n .then((data) => {\r\n //setBorrowerData(data);\r\n let borrowerDetails = data.filter(x => isNullOrWhiteSpace(x.disclosureProvidedDate));\r\n if (borrowerDetails && borrowerDetails.length > 0) {\r\n setDisclosureDate(true);\r\n }\r\n let borrowers = data.filter(x => x.borrowerType == \"Borrower\");\r\n setBorrowers(borrowers);\r\n let coborrowers = data.filter(x => x.borrowerType == \"CoBorrower\");\r\n setCoBorrowers(coborrowers);\r\n setIsLoading(false);\r\n })\r\n .catch((error: Error) => {\r\n setIsLoading(false);\r\n console.log(error.message);\r\n });\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if ((checkBox.borrowerCheckBox || checkBox.coBorrowerCheckBox) && responseMessage == borrowerCheckMessage) {\r\n setResponseMessage(\"\");\r\n }\r\n }, [checkBox]);\r\n\r\n React.useEffect(() => {\r\n if (responseMessage == successMessage || responseMessage == errorMessage) {\r\n setTimeout(() => setResponseMessage(\"\"), 5000);\r\n }\r\n }, [responseMessage]);\r\n\r\n const handleOnCheck = (e: any, borrower: any) => {\r\n const name = e.target.name;\r\n const value = e.target.checked;\r\n\r\n setCheckBox({\r\n ...checkBox,\r\n [name]: value\r\n });\r\n if (value) {\r\n borrowerData.push(borrower);\r\n }\r\n else {\r\n const index = borrowerData?.findIndex((x: { emailAddress: any; }) => x.emailAddress == borrower.emailAddress);\r\n borrowerData?.splice(index, 1);\r\n }\r\n setBorrowerData(borrowerData)\r\n console.log(borrowerData)\r\n }\r\n\r\n const handleOnSend = () => {\r\n console.log(borrowerData)\r\n\r\n if (!checkBox.borrowerCheckBox && !checkBox.coBorrowerCheckBox) {\r\n setResponseMessage(borrowerCheckMessage);\r\n }\r\n else {\r\n if (borrowerData && borrowerData.length > 0 && isDisclosureDateEmpty\r\n //&& isNullOrWhiteSpace(borrowerData[0]?.disclosureProvidedDate)) {\r\n ) {\r\n let data = { loanNumber: borrowerData[0].loanNumber, borrowerDetailsDto: new Array() };\r\n\r\n borrowerData.forEach((borrower: any) => {\r\n data.borrowerDetailsDto.push({\r\n firstName: borrower?.firstName.trim(),\r\n lastName: borrower?.lastName.trim(),\r\n email: borrower?.email.trim(),\r\n borrowerType: borrower?.borrowerType.trim()\r\n })\r\n });\r\n setIsLoading(true);\r\n loanOfficerInviteService.sendInviteMail(data)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(\"Unable to send invite mail.\");\r\n }\r\n return response.parsedBody as any;\r\n })\r\n .then((data) => {\r\n if (data) {\r\n setResponseMessage(successMessage);\r\n }\r\n else {\r\n setResponseMessage(errorMessage);\r\n }\r\n setIsLoading(false);\r\n })\r\n .catch((error: Error) => {\r\n setResponseMessage(errorMessage);\r\n setIsLoading(false);\r\n console.log(error.message);\r\n });\r\n }\r\n else {\r\n setResponseMessage(validationFailMessage);\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {isLoading ?
    :\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Union\r\n
    \r\n {(borrowers.length > 0 || coborrowers.length > 0) &&\r\n
    \r\n Select Recipients\r\n
    \r\n }\r\n
    \r\n <>\r\n {\r\n <>\r\n
    \r\n {borrowers != undefined && borrowers?.length > 0 &&\r\n <>\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n {borrowers?.map((borrower: any, index: any) => (\r\n
    \r\n
    \r\n
    \r\n handleOnCheck(e, borrower)} />\r\n \r\n
    \r\n
    \r\n
    \r\n {borrower?.email ?? \"\"}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n }\r\n\r\n {coborrowers != undefined && coborrowers.length > 0 &&\r\n <>\r\n
    \r\n \r\n \r\n
    \r\n {coborrowers?.map((coborrower: any, index: any) => (\r\n
    \r\n
    \r\n
    \r\n handleOnCheck(e, coborrower)} />\r\n \r\n
    \r\n
    \r\n
    \r\n {coborrower?.email ?? \"\"}\r\n
    \r\n
    \r\n ))}\r\n }\r\n\r\n {responseMessage != \"\" && < div className={styles.message}>\r\n

    \r\n {responseMessage}\r\n

    \r\n
    }\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default LoanOfficerInvite","import { get, post } from \"../common/dataFetch\";\r\n\r\nexport const getBorrowersData = (loanGuid: string) => {\r\n return get(`BorrowerInformation/ReadAllByLoanGuidAsync?loanGuid=${loanGuid}`);\r\n};\r\n\r\nexport const sendInviteMail = (data: any) => {\r\n return post(`EmailNotification/SendAccountSetupInviteEmailToBorrower`, data);\r\n};","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ApplicationState } from \"../../store\";\r\nimport styles from \"./Dashboard.module.scss\";\r\nimport { InterimLoanSummary, LoanOfficerDetail } from \"../../store/interimLoanSummaryStore\";\r\nimport { useNavigation } from \"../../hooks/useNavigation\";\r\nimport { useHistory } from \"react-router\";\r\nimport * as AccountInformationActions from \"../../actions/accountInformationActions\";\r\nimport { interimLoanSummaryActionCreators } from \"../../actions/interimLoanSummaryActions\";\r\nimport { isNullOrWhiteSpace } from \"../../common/helper/formatHelper\";\r\nimport * as accountInformationService from \"../../services/accountInformationService\";\r\nimport { buildStyles, CircularProgressbar } from \"react-circular-progressbar\";\r\nimport LoanViewHeader from \"./LoanViewHeader\";\r\nimport { UserAccountState } from \"../../store/userAccountStore\";\r\nimport { IsNarrator } from \"../../common/CommonMethods\";\r\n// @ts-ignore\r\nimport { useSpeechSynthesis } from \"react-speech-kit\"\r\n\r\ntype MultipleLoanViewProps = {\r\n userAccountInformationObj: UserAccountState;\r\n\r\n userEmail: string;\r\n loanGuid: string;\r\n firstName: string;\r\n lastName: string;\r\n loanSummary: InterimLoanSummary[];\r\n loanOfficerDetail: LoanOfficerDetail;\r\n defaultLoanSummary: InterimLoanSummary;\r\n} & typeof AccountInformationActions.accountInformationActionCreators\r\n & typeof interimLoanSummaryActionCreators;\r\n\r\nconst MultipleLoanView = (props: MultipleLoanViewProps) => {\r\n const { speak, cancel } = useSpeechSynthesis();\r\n\r\n const navigation = useNavigation(() => {\r\n navigation.HideNavigation();\r\n });\r\n\r\n const validLoanStatus = [\"Active Loan\", \"Active\"];\r\n\r\n const history = useHistory();\r\n\r\n React.useEffect(() => {\r\n if (props.userEmail) {\r\n props.getInterimLoanSummary(props.userEmail);\r\n }\r\n }, [])\r\n\r\n function textToSpeech(value: any) {\r\n if (IsNarrator()) {\r\n speak({ text: value });\r\n }\r\n }\r\n\r\n function stopSpeech() {\r\n cancel();\r\n }\r\n\r\n const moveOnToDashboard = (index: number, staggingId: number) => {\r\n props.setLoanGuid(\"\");\r\n history.push({ pathname: \"/dashboard\", state: { staggingId: staggingId } });\r\n }\r\n\r\n const loanTemplate = (loan: InterimLoanSummary, index: number) => {\r\n return (\r\n
    (loan.loanStatus === \"Active\") && moveOnToDashboard(index, loan.interimLoanStagingId)}\r\n className={`${styles.card} ${loan.loanStatus !== \"Active\" ? styles.closedLoancard : \"\"}`}>\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Property')}>Property
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(loan.address)}>{loan.address}

    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(loan?.zip !== undefined && loan?.zip > 0 ? loan?.city + \"\" + loan?.state + \"\" + loan?.zip : \"\")}>{loan.city}, {loan.state} {loan.zip}

    \r\n
    \r\n {loan.loanStatus == \"Active\" &&
    \r\n\r\n \r\n ;\r\n \r\n\r\n\r\n
    }\r\n
    \r\n\r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Number')}>Loan Number:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(loan.loanNumber)}>{loan.loanNumber}

    \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Amount')}>Loan Amount:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(loan.loanAmount)}>{loan.loanAmount}

    \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Term')}>Loan Term:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(loan.loanTerm > 0 ? loan.loanTerm : \"\")}>{loan.loanTerm > 0 ? loan.loanTerm: \"\" }

    \r\n
    \r\n
    \r\n
    stopSpeech()} onMouseOver={() => textToSpeech('Loan Type')}>Loan Type:
    \r\n

    stopSpeech()} onMouseOver={() => textToSpeech(loan.loanType)}>{loan.loanType}

    \r\n
    \r\n
    \r\n\r\n { loan.loanStatus === \"Active\" &&\r\n }\r\n\r\n
    \r\n );\r\n }\r\n\r\n const signOut = async () => {\r\n if (!isNullOrWhiteSpace(props.loanGuid)) {\r\n await accountInformationService.signOut(\"\", props.loanGuid, props.defaultLoanSummary.interimLoanStagingId);\r\n }\r\n history.push(\"/\");\r\n window.location.reload();\r\n }\r\n\r\n\r\n return (\r\n <>\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {\r\n props.loanSummary?.length && props.loanSummary.filter(loan => validLoanStatus.indexOf(loan.loanStatus) > -1).map((loan, index) => loanTemplate(loan, index))\r\n }\r\n
    \r\n\r\n {(props.loanSummary.filter(loan => validLoanStatus.indexOf(loan.loanStatus) < 0).length > 0) &&\r\n <>\r\n
    CLOSED LOANS
    \r\n
    \r\n {\r\n props.loanSummary?.length && props.loanSummary.filter(loan => validLoanStatus.indexOf(loan.loanStatus) < 0).map((loan, index) => loanTemplate(loan, index))\r\n }\r\n
    \r\n \r\n }\r\n
    \r\n\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): any => {\r\n const { accountInformation, interimLoanSummary, userAccountInformation } = state;\r\n let loanGuid;\r\n let userAccountInformationObj: UserAccountState | undefined;\r\n\r\n userAccountInformationObj = userAccountInformation;\r\n const defaultLoanSummary = interimLoanSummary?.currentLoanSummary;\r\n const userEmail = userAccountInformation?.email;\r\n const firstName = userAccountInformation?.firstName;\r\n const lastName = userAccountInformation?.lastName;\r\n const loanSummary = interimLoanSummary?.loanSummary;\r\n const loanOfficerDetail = interimLoanSummary?.loanOfficerDetail;\r\n if (accountInformation?.loanGuid) {\r\n loanGuid = accountInformation.loanGuid;\r\n }\r\n\r\n return {\r\n userAccountInformationObj,\r\n loanGuid,\r\n userEmail,\r\n firstName,\r\n lastName,\r\n loanSummary,\r\n loanOfficerDetail,\r\n defaultLoanSummary\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: any) => ({\r\n setLoanGuid: (value?: string) => {\r\n dispatch(AccountInformationActions.accountInformationActionCreators.setLoanGuid(value));\r\n },\r\n getInterimLoanSummary: (email: string) => {\r\n dispatch(interimLoanSummaryActionCreators.getInterimLoanSummary(email));\r\n }\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MultipleLoanView as any);","import React from \"react\";\r\nimport { Route, Switch, Redirect } from \"react-router\";\r\nimport Layout from \"./components/common/Layout/MainLayout\";\r\nimport LoanOfficerLayout from \"./components/common/Layout/LoanOfficerViewLayout\";\r\nimport Home from \"./components/Home\";\r\nimport AccountInformation from \"./components/accountInformation/AccountInformation\";\r\nimport eConsent from \"./components/eConsent/main/eConsent\";\r\nimport SignIn from \"./components/userAccount/SignIn\";\r\nimport AccountCreation from \"./components/accountCreation/AccountCreation\";\r\nimport PropertyInformation from \"./components/propertyInformation/PropertyInformation\";\r\nimport EmploymentInformation from \"./components/employmentInformation/EmploymentInformation\";\r\nimport AdditionalIncome from \"./components/additionalIncome/AdditionalIncomeInformation\";\r\nimport GovernmentQuestion from \"./components/governmentQuestions/GovernmentQuestion\";\r\nimport DemographicQuestionDetails from \"./components/demographicQuestions/DemographicQuestionDetails\";\r\nimport AssetInformation from \"./components/assetInformation/AssetInformation\";\r\nimport ConsumerCreditAuthorization from \"./components/consumerCreditAuthorization/ConsumerCreditAuthorization\";\r\nimport \"../node_modules/uhm-unity-theme-core/dist/unity-theme-core.min.css\";\r\nimport \"scss/index.css\";\r\nimport ManualAssetInformation from \"./components/manualAssetInformation/ManualAssetInformation\";\r\nimport BorrowerLiability from \"./components/borrowerLiability/BorrowerLiability\";\r\nimport ContactPreference from \"./components/contactPreference/ContactPreference\";\r\nimport AddReoProperty from \"./components/borrowerReo/AddReoProperty\";\r\nimport ReoPropertiesSummary from \"./components/borrowerReo/ReoPropertiesSummary\";\r\nimport ReoPropertyLanding from \"./components/borrowerReo/ReoPropertyLanding\";\r\nimport AssetDetails from \"./components/eVerificationFinicity/AssetDetails\";\r\nimport ReviewApplication from \"./components/preQualReview/ReviewApplication\";\r\nimport CreditReport from \"./components/creditReport/CreditReport\";\r\nimport SystematicLetter from \"./components/systematicLetter/SystematicLetter\";\r\nimport LoanOfficerDocuments from \"./components/documents/loanOfficer/LoanOfficerDocuments\";\r\nimport AddDocumentSection from \"./components/documents/addDocumentSection/AddDocumentSection\";\r\nimport DocumentViewer from \"./components/documents/documentViewers/DocumentViewer\";\r\nimport DashboardDetails from \"./components/loanView/DashboardDetails\";\r\nimport MilestoneNavigation from \"./components/milestoneProgressNavigation/MilestoneNavigation\";\r\nimport Invitation from \"./components/Invitation\";\r\nimport LoanOfficerMainTab from \"./components/loanOfficerView/LoanOfficerMainTab\";\r\nimport LoanOfficerLauncher from \"./components/loanOfficerView/LoanOfficerView\";\r\nimport PreApprovalLetter from \"./components/loanOfficerView/PreApprovalLetter\";\r\nimport BorrowerPreApprovalLetter from \"./components/preApprovalLetter/BorrowerPreApprovalLetter\";\r\nimport BorrowerDocumentView from \"./components/documents/borrowerView/BorrowerDocuments\";\r\nimport Ecc from \"./components/documents/EmConsumerConnect\";\r\nimport SignDocument from \"./components/documents/SignDocument\";\r\nimport UserSignIn from \"./components/userAccount/UserSignIn\";\r\nimport UserSignUp from \"./components/userAccount/UserSignUp\";\r\nimport EncompassDown from \"./components/EncompassDown\";\r\nimport LoanOfficerInvite from \"./components/loanOfficerInvite/LoanOfficerInvite\";\r\nimport MultipleLoanView from \"./components/loanView/MultipleLoanView\";\r\n\r\nconst AppRouting = () => {\r\n const SignInContainer = () => (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const DefaultContainer = () => (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const LoanOfficerContainer = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n const SecuredContainer = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const NoLayoutContainer = () => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default function App() {\r\n return ();\r\n}","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const url = process.env.PUBLIC_URL as string;\r\n const publicUrl = new URL(url, window.location.toString());\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing as ServiceWorker;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (response.status === 404 || (contentType && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from './store/configureStore';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport { oktaConfigAsync } from \"./authConfig\";\r\nimport SessionInfo from \"./SessionDataTracker\";\r\nimport { OktaAuth, toRelativeUrl } from \"@okta/okta-auth-js\";\r\nimport { useOktaAuth, Security } from \"@okta/okta-react\";\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst store = configureStore(history);\r\n\r\noktaConfigAsync().then((oktaConfig: any) => {\r\n SessionInfo.config = oktaConfig;\r\n const oktaAuth = new OktaAuth(oktaConfig as Object);\r\n\r\n ReactDOM.render(\r\n \r\n \r\n {}} restoreOriginalUri={(auth: any, originalUri: any) => {}}>\r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\"));\r\n\r\n registerServiceWorker();\r\n});\r\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, reducers } from './';\r\n\r\nexport default function configureStore(history: History, initialState?: ApplicationState) {\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history)\r\n });\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any;\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n}\r\n"],"sourceRoot":""}