{"version":3,"file":"static/js/main.fb061f2b.js","mappings":"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","sources":["components/Plaid/Plaid.js","components/Plaid/PlaidConfig.js","components/accessories/ArrowSpinner.js","components/accessories/CommonFunctions.js","components/accessories/CustomText.js","components/accessories/CustomTextInput.js","components/accessories/KeyboardHeight.js","components/accessories/Platform.js","components/accessories/ScrollContainer.js","components/accessories/accessories.js","GlobalStyles.js","components/accessories/DropDown.js","components/accessories/SeachableDropDown.js","components/LoanApplication/SummaryInfo/SummaryInfo.js","components/accessories/CircleBar.js","components/NavBar/NavAccessories.js","components/NavBar/NavBar.js","components/NavBar/leftNavBar.js","components/LoanApplication/ContactInfo/ContactInfo.js","components/LoanApplication/AddressHistory/AddressHistory.js","components/LoanApplication/CreditScore/CreditScore.js","components/LoanApplication/Government/Government.js","components/LoanApplication/DocumentUpload/DocumentViewer.js","components/accessories/RNComponents.js","components/accessories/ExternalSourceViewer.js","components/LoanApplication/DocumentUpload/DocumentUpload.js","components/accessories/CustomCheckBoxSelection.js","components/accessories/RadioButtonGroup.js","components/accessories/DropDownButton.js","components/LoanApplication/InterestRate/InterestRate.js","components/accessories/CheckBoxSelection.js","components/LoanApplication/InCome/Income.js","components/accessories/MultiSelect.js","components/LoanApplication/Assets/Assets.js","components/Plaid/BorrowerVerification.js","components/LoanApplication/AppraisalPayment/AppraisalPayment.js","components/accessories/footer.js","components/NavigationBar/ShareApp.js","components/NavigationBar/LoanContacts.js","components/NavigationBar/ChangePassword.js","components/accessories/Swatch.js","components/NavigationBar/Setting.js","components/NavigationBar/Calculator.js","components/accessories/CalculatorMenu.js","components/LoanApplication/Assets/OtherLoanVendor.js","components/LoanApplication/Home.js","components/SignIn/Login.js","components/SignIn/LoginWeb.js","components/SignUp/Signup.js","components/SignUp/SignupWeb.js","components/DashBoard/Table.js","components/DashBoard/DashBoardTable.js","components/DashBoard/RecentLoans.js","components/Payment/Payment.js","components/DashBoard/DashBoard.js","components/LoanApplication/StartScreen/StartScreen.js","App.js","index.js","node_modules/moment/locale|sync|/^/.*$","webpack/bootstrap","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/create fake namespace object","webpack/runtime/define property getters","webpack/runtime/global","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/node module decorator","webpack/runtime/publicPath","webpack/runtime/jsonp chunk loading","webpack/startup"],"sourcesContent":["import React, { useEffect, useContext, useState, memo } from \"react\";\r\nimport { Image, StyleSheet, Text, TouchableOpacity, View } from \"react-native\";\r\nimport PlaidAuthenticator from \"./PlaidConfig\";\r\nimport {\r\n IconButton,\r\n Separator,\r\n Spinner,\r\n context,\r\n} from \"../accessories/accessories\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport { PlaidLink } from \"react-plaid-link\";\r\nimport {\r\n handleAPI,\r\n log,\r\n getQueryString,\r\n updateWebURL,\r\n} from \"../accessories/CommonFunctions\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer.js\";\r\nimport Icon from \"react-native-vector-icons/Entypo\";\r\nimport {\r\n client_name,\r\n publicKey,\r\n env,\r\n client_id,\r\n secret,\r\n env_url,\r\n language,\r\n} from \"@env\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport { Linking } from \"react-native\";\r\nimport { Dimensions } from \"react-native\";\r\n\r\nlet From = getQueryString(\"From\", \"\");\r\nconst SessionId = getQueryString(\"SessionId\", \"\");\r\n\r\nconst createLinkToken = async () => {\r\n try {\r\n const response = await fetch(\r\n \"https://www.solutioncenter.biz/LoginCredentialsAPI/api/createLinkToken_Plaid\",\r\n {\r\n method: \"GET\",\r\n mode: \"cors\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n );\r\n\r\n if (!response.ok) {\r\n throw new Error(\"Failed to fetch link token\");\r\n }\r\n\r\n return await response.json();\r\n } catch (error) {\r\n console.error(\"Error creating link token:\", error);\r\n return null;\r\n }\r\n};\r\n\r\nconst Plaid = (props) => {\r\n const {\r\n handleFrameNavigation = () => {},\r\n handleOptionPress = () => {},\r\n details = {},\r\n handleSaveLoanInformation = () => {},\r\n isBankAccountLinked = 0,\r\n } = props;\r\n const sandbox = __DEV__,\r\n webhook = sandbox\r\n ? \"https://www.plaid.com/webhook\"\r\n : \"http://documents.solutioncenter.biz/plaidwebhook/api/plaid\";\r\n const { contextDetails, setContextDetails } = useContext(context);\r\n\r\n const [transactionDetails, setTransactionDetails] = useState(null);\r\n const [bankDetails, setBankDetails] = useState({\r\n payrollIncomePublicToken: null,\r\n bankIncomePublicToken: null,\r\n user_token: null,\r\n payroll_income: null,\r\n bank_income: null,\r\n });\r\n const [Liabilities, setLiabilities] = useState({\r\n liabilitiesPublicToken: null,\r\n liabilities: null,\r\n });\r\n const [identity, setIdentity] = useState(null);\r\n const [Assets, setAssets] = useState({\r\n public_token: null,\r\n access_token: null,\r\n asset_report_token: null,\r\n assets: null,\r\n });\r\n const [balance, setBalance] = useState(null);\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n // Plaid Json is empty. --\r\n\r\n const [plaidDetails, setPlaidDetails] = useState({\r\n ...{\r\n client_name,\r\n country_codes: [\"US\"],\r\n language,\r\n products: [\"auth\", \"assets\"],\r\n public_token: null,\r\n access_token: null,\r\n availableProducts: null,\r\n isCompleted: false,\r\n },\r\n ...(sandbox\r\n ? {\r\n publicKey: \"eecc6d6382543dbee6478afbc5879b\",\r\n env: \"sandbox\",\r\n client_id: \"650454e7fce9610018775a83\",\r\n secret: \"9bdf4b03db812d29cc64f556ca7124\",\r\n env_url: \"https://sandbox.plaid.com\",\r\n }\r\n : {\r\n publicKey,\r\n env,\r\n client_id,\r\n secret,\r\n env_url,\r\n }),\r\n });\r\n\r\n const [userDetails, setUserDetails] = useState(details);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [plaidStatus, setPlaidStatus] = useState(null);\r\n const [linkId, setLnkId] = useState(null);\r\n useEffect(() => {\r\n createLinkToken().then((response) => {\r\n setLnkId(response);\r\n });\r\n }, []);\r\n const [status, setStatus] = useState(\r\n isBankAccountLinked === 1\r\n ? [\r\n {\r\n primaryMessage: \"Bank Account Details\",\r\n secondaryMessage: `Your Bank Account details have been successfully imported.`,\r\n },\r\n // {\r\n // primaryMessage: \"Transaction Details\",\r\n // secondaryMessage: `Your transaction details have been successfully imported.`,\r\n // },\r\n // {\r\n // primaryMessage: \"Income Details\",\r\n // secondaryMessage: `Your income details have been successfully imported.`,\r\n // },\r\n ]\r\n : []\r\n );\r\n const [uniqueId, setUniqueId] = useState(0);\r\n const [requiredProducts] = useState([\r\n ...[\r\n \"assets\",\r\n \"auth\",\r\n \"transactions\",\r\n \"income\",\r\n \"liabilities\",\r\n \"identity\",\r\n \"balance\",\r\n // \"income_verification\",\r\n ],\r\n // ...(sandbox ? [\"income_verification\"] : []),\r\n ]);\r\n\r\n useEffect(() => {\r\n details && setUserDetails(details);\r\n }, [props]);\r\n\r\n function getElementPosition(element) {\r\n let top = 0,\r\n left = 0;\r\n while (element) {\r\n top += element.offsetTop || 0;\r\n left += element.offsetLeft || 0;\r\n element = element.offsetParent;\r\n }\r\n return { top, left };\r\n }\r\n if (web) {\r\n useEffect(() => {\r\n const openPlaid = () => {\r\n const plaidElement = document.querySelector(\".Plaid\");\r\n if (plaidElement) {\r\n setTimeout(() => {\r\n if (!contextDetails[\"fullScreen\"]) {\r\n const styleElement = document.createElement(\"style\"),\r\n divPosition = getElementPosition(\r\n document.getElementById(\"divPlaidContainer\")\r\n );\r\n styleElement.innerHTML = `\r\n iframe[title=\"Plaid Link\"] {\r\n width:380px;\r\n height: calc(100vh - 470px);\r\n position:absolute !important;\r\n top:${divPosition.top - 75}px !important;\r\n left:${divPosition.left}px !important;\r\n max-height:700px\r\n } \r\n `;\r\n From != \"loginverify\" && document.head.appendChild(styleElement);\r\n }\r\n plaidElement.click();\r\n setTimeout(() => {\r\n try {\r\n if (!contextDetails[\"fullScreen\"])\r\n document.querySelector(\"#divPlaidContainer\").style.height =\r\n \"750px\";\r\n } catch (error) {}\r\n }, 800);\r\n }, 1000);\r\n } else {\r\n setTimeout(openPlaid, 100);\r\n }\r\n };\r\n const iUniqueId = uniqueId || getQueryString(\"uid\");\r\n if (iUniqueId) {\r\n setUniqueId(iUniqueId);\r\n } else {\r\n handleInsertPlaidId();\r\n }\r\n openPlaid();\r\n }, []);\r\n useEffect(() => {\r\n if (status.length > 0) {\r\n if (!contextDetails[\"fullScreen\"])\r\n document.querySelector(\"#divPlaidContainer\").style.height = \"auto\";\r\n }\r\n }, [status]);\r\n }\r\n const handleInsertPlaidId = () => {\r\n handleAPI({\r\n name: \"PlaidVerify\",\r\n params: {\r\n LoanId: details[\"loanId\"],\r\n EmpId: details[\"loanOfficerId\"] || 4142,\r\n CustId: details[\"CustId\"],\r\n },\r\n }).then((response) => {\r\n setUniqueId(response);\r\n log(\"Response form Plaid UniqueId\", response);\r\n });\r\n };\r\n const handleLoadStart = (props) => {\r\n log(\"handleLoadStart\", props);\r\n };\r\n const handleLoad = (props) => {\r\n setIsLoading(true);\r\n };\r\n\r\n const handleEvent = (props) => {\r\n if (props === \"OPEN\") {\r\n setIsLoading(false);\r\n if (web) {\r\n setTimeout(() => {\r\n try {\r\n document.querySelector(\r\n 'iframe[title=\"Plaid Link\"]'\r\n ).style.opacity = 1;\r\n } catch (error) {}\r\n }, 1000);\r\n if (!contextDetails[\"fullScreen\"])\r\n try {\r\n document.querySelector(\"#divPlaidContainer\").style.height = \"750px\";\r\n } catch (error) {}\r\n }\r\n } else if (props === \"HANDOFF\") {\r\n setPlaidDetails({ ...plaidDetails, isCompleted: true });\r\n } else if (props === \"EXIT\") {\r\n handleOptionPress(null);\r\n web &&\r\n !contextDetails[\"fullScreen\"] &&\r\n document.querySelector('iframe[title=\"Plaid Link\"]').remove();\r\n } else if (props === \"TRANSITION_VIEW\") {\r\n setPlaidDetails({ ...plaidDetails, isClickedAllow: true });\r\n }\r\n };\r\n function capitalizeFLetter(string) {\r\n return string[0].toUpperCase() + string.slice(1);\r\n }\r\n\r\n useEffect(() => {\r\n if (plaidDetails[\"metaData\"] && !plaidDetails[\"access_token\"]) {\r\n handleGetAccessToken();\r\n } else if (plaidDetails[\"access_token\"]) {\r\n let { availableProducts } = plaidDetails;\r\n if (!availableProducts) availableProducts = [];\r\n }\r\n }, [plaidDetails]);\r\n\r\n useEffect(() => {\r\n if (\r\n bankDetails &&\r\n !bankDetails[\"bank_income\"] &&\r\n plaidDetails[\"metaData\"]\r\n ) {\r\n handleGetBankDetails();\r\n }\r\n }, [bankDetails]);\r\n\r\n const handleAssetsWebHooks = async (publicToken, iId, iName) => {\r\n handleAPI({\r\n name: \"CommonPlaidVerification\",\r\n params: {\r\n strXML: ``,\r\n uid: uniqueId,\r\n },\r\n }).then((response) => {\r\n setTimeout(() => {\r\n handleCheckAssetsData(0);\r\n }, 3000);\r\n log(\"Response form CommonPlaidVerification ===> \", response);\r\n });\r\n };\r\n const navigate = (path, option) => {\r\n updateWebURL({ ...option, Path: path });\r\n props[\"navigation\"].navigate(path, option || {});\r\n };\r\n const handleLogOut = () => {\r\n handleAPI({\r\n name: \"LogOutSession\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then(() => {\r\n navigate(\"Login\", {});\r\n })\r\n .catch((err) => console.error(\"Error from LogOutSession ====> \", err));\r\n };\r\n const handleCheckAssetsData = (poolCount) => {\r\n handleAPI({\r\n name: \"CheckAssetFromPlaid\",\r\n params: {\r\n UniqueId: uniqueId,\r\n },\r\n }).then((response) => {\r\n try {\r\n console.log(\"Asset data form plaid\", JSON.parse(response));\r\n const result = JSON.parse(response);\r\n if (result.length > 0) {\r\n setContextDetails({\r\n ...contextDetails,\r\n isAssetPullCompleted: true,\r\n pulledAssetCount: result.length,\r\n });\r\n setPlaidDetails({ ...plaidDetails, isClickedAllow: false });\r\n }\r\n } catch (error) {}\r\n if (poolCount >= 5) {\r\n if (From == \"loginverify\") {\r\n setProcessingStatus(\"Plaid Json is empty.\");\r\n } else {\r\n setStatus((iStatus) => {\r\n return [\r\n ...iStatus,\r\n ...[\r\n {\r\n primaryMessage: \"Failed to import Bank Account details.\",\r\n secondaryMessage: <>,\r\n },\r\n ],\r\n ];\r\n });\r\n }\r\n } else if (\r\n JSON.stringify(response).includes(\"accounts\") &&\r\n JSON.stringify(response).includes(\"account_id\")\r\n ) {\r\n handleSaveLoanInformation(1, true);\r\n if (From == \"loginverify\") {\r\n setProcessingStatus(\"success\");\r\n } else {\r\n setStatus((iStatus) => {\r\n return [\r\n ...iStatus,\r\n ...[\r\n {\r\n primaryMessage: \"Bank Account Details\",\r\n secondaryMessage: `Your Bank Account details have been successfully imported.`,\r\n },\r\n ],\r\n ];\r\n });\r\n }\r\n } else {\r\n setTimeout(() => {\r\n poolCount = poolCount + 1;\r\n handleCheckAssetsData(poolCount);\r\n }, 3000);\r\n }\r\n });\r\n };\r\n const handleSuccess = async (publicToken, metadata) => {\r\n // setPlaidStatus(\"Getting Available Products list...\");\r\n // await handleAPI({\r\n // name: \"PostAPI\" || \"fnGenericGetAPIData\",\r\n // params: {\r\n // iRequest: JSON.stringify({\r\n // institution_id: metadata[\"institution\"][\"institution_id\"],\r\n // country_codes: plaidDetails[\"country_codes\"],\r\n // country_codes: plaidDetails[\"country_codes\"],\r\n // client_id: plaidDetails[\"client_id\"],\r\n // secret: plaidDetails[\"secret\"],\r\n // }),\r\n // URL: `${plaidDetails[\"env_url\"]}/institutions/get_by_id`,\r\n // },\r\n // })\r\n // .then((response) => {\r\n // response = JSON.parse(\"{\" + response);\r\n if (publicToken) {\r\n setTimeout(() => {\r\n setPlaidDetails({\r\n ...{},\r\n ...plaidDetails,\r\n ...{\r\n metaData: metadata,\r\n availableProducts: requiredProducts,\r\n },\r\n ...(!sandbox\r\n ? {\r\n public_token: publicToken,\r\n }\r\n : {}),\r\n });\r\n }, 100);\r\n }\r\n if (web && !contextDetails[\"fullScreen\"]) {\r\n try {\r\n document.querySelector(\"#divPlaidContainer\").style.height = \"\";\r\n } catch (error) {}\r\n }\r\n\r\n if (!__DEV__) {\r\n setProcessingStatus(\"Importing\");\r\n handleAssetsWebHooks(\r\n publicToken,\r\n metadata[\"institution\"][\"institution_id\"],\r\n metadata[\"institution\"][\"name\"]\r\n );\r\n } else {\r\n handleSaveLoanInformation(1, true);\r\n }\r\n // })\r\n // .catch((e) => console.log(\"Error From PostAPI ===> \", e));\r\n };\r\n const handleGetAPIData = async (URL, iRequest) => {\r\n let { env_url } = plaidDetails;\r\n URL = `${env_url}${URL}`;\r\n iRequest = JSON.stringify(iRequest);\r\n return await handleAPI({\r\n name: \"fnGenricPOSTAPI\" || \"fnGenericGetAPIData\",\r\n params: { iRequest, URL },\r\n }).then((response) => {\r\n if (response) {\r\n response = JSON.parse(\"{\" + response.trim());\r\n\r\n // console.log(\r\n // URL.replaceAll(plaidDetails[\"env_url\"], \"\"),\r\n // \" =====> \",\r\n // response\r\n // );\r\n return response;\r\n }\r\n });\r\n };\r\n const handleGetAccessToken = async () => {\r\n const {\r\n client_id,\r\n secret,\r\n client_name,\r\n country_codes,\r\n language,\r\n products,\r\n access_token,\r\n public_token,\r\n metaData,\r\n } = plaidDetails,\r\n user = { client_user_id: \"sep27testcase\" },\r\n purpose = !public_token\r\n ? \"getPublicToken\"\r\n : !access_token\r\n ? \"getAccessToken\"\r\n : \"\",\r\n requestOptions = {\r\n ...{\r\n client_id,\r\n secret,\r\n },\r\n ...(purpose === \"getPublicToken\"\r\n ? sandbox\r\n ? {\r\n institution_id: metaData[\"institution\"][\"institution_id\"],\r\n initial_products: (\r\n plaidDetails[\"availableProducts\"] || requiredProducts\r\n ).filter((item) => item !== \"balance\"),\r\n options: { webhook },\r\n }\r\n : {\r\n client_name,\r\n country_codes,\r\n language,\r\n user,\r\n products,\r\n }\r\n : purpose === \"getAccessToken\"\r\n ? { public_token }\r\n : {}),\r\n },\r\n URL = `${\r\n purpose === \"getPublicToken\" || purpose === \"getVerifyLiabilitiesToken\"\r\n ? sandbox\r\n ? \"/sandbox/public_token/create\"\r\n : `/link/token/create`\r\n : purpose === \"getAccessToken\"\r\n ? `/item/public_token/exchange`\r\n : \"\"\r\n }`;\r\n\r\n const response = await handleGetAPIData(URL, requestOptions);\r\n\r\n let iPlaidDetails = {},\r\n iAvailableProducts = [];\r\n if (response[\"error_code\"] && response[\"error_code\"].includes(\"PRODUCT\")) {\r\n if (response[\"error_message\"].includes(\"products are not supported\")) {\r\n let unAvailableProducts = JSON.parse(\r\n response.error_message.split(\":\")[1].trim().replaceAll(\" \", \",\")\r\n );\r\n iAvailableProducts = plaidDetails[\"availableProducts\"].filter(\r\n (item) => !unAvailableProducts.includes(item)\r\n );\r\n if (unAvailableProducts.join(\"\").includes(\"income\")) {\r\n iAvailableProducts = iAvailableProducts.filter(\r\n (item) => item.indexOf(\"income\") === -1\r\n );\r\n }\r\n }\r\n iPlaidDetails = {\r\n ...iPlaidDetails,\r\n ...{\r\n availableProducts: iAvailableProducts,\r\n showProducts: true,\r\n },\r\n };\r\n let iPlaidStatus = iAvailableProducts\r\n .map((item, index) => {\r\n return { product: capitalizeFLetter(item), status: \"pending...\" };\r\n })\r\n .filter((iItem) => !iItem.product.includes(\"Auth\"));\r\n setPlaidStatus([...iPlaidStatus]);\r\n } else if (purpose === \"getPublicToken\") {\r\n iPlaidDetails = {\r\n ...iPlaidDetails,\r\n ...{\r\n link_token: response[\"link_token\"],\r\n public_token: response[\"public_token\"],\r\n },\r\n };\r\n } else if (purpose === \"getAccessToken\") {\r\n iPlaidDetails = {\r\n ...iPlaidDetails,\r\n access_token: response[\"access_token\"],\r\n };\r\n // console.log(\"access_token ===> \", response[\"access_token\"]);\r\n }\r\n setPlaidDetails({ ...plaidDetails, ...iPlaidDetails });\r\n };\r\n const handleGetTransaction = async () => {\r\n const { client_id, secret, access_token } = plaidDetails,\r\n requestOptions = {\r\n client_id,\r\n secret,\r\n access_token,\r\n count: 20,\r\n },\r\n iTransactionDetails = await handleGetAPIData(\r\n \"/transactions/sync\",\r\n requestOptions\r\n );\r\n handleCheckData(\r\n iTransactionDetails,\r\n \"Transactions\",\r\n \"handleGetTransaction()\"\r\n );\r\n if (!iTransactionDetails[\"error_code\"]) {\r\n setTransactionDetails(iTransactionDetails);\r\n if (JSON.stringify(iTransactionDetails).includes(\"account_id\")) {\r\n setStatus((iStatus) => {\r\n return [\r\n ...iStatus,\r\n ...[\r\n {\r\n primaryMessage: \"Transaction Details\",\r\n secondaryMessage: `Your transaction details have been successfully imported.`,\r\n },\r\n ],\r\n ];\r\n });\r\n }\r\n }\r\n // setTransactionDetails(iTransactionDetails);\r\n };\r\n const handleGetBankDetails = async () => {\r\n const { client_id, secret, metaData } = plaidDetails,\r\n {\r\n bankIncomePublicToken,\r\n payrollIncomePublicToken,\r\n user_token,\r\n payroll_income,\r\n bank_income,\r\n } = bankDetails,\r\n { userName, loanId } = details,\r\n requestOptions = {\r\n ...{\r\n client_id,\r\n secret,\r\n },\r\n ...(!user_token\r\n ? {\r\n client_user_id: sandbox\r\n ? Math.random().toString(36).slice(2)\r\n : `${userName.replaceAll(\" \", \"_\")}_${loanId}_${Math.random()\r\n .toString(36)\r\n .slice(7)}`,\r\n }\r\n : !payrollIncomePublicToken //&& sandbox\r\n ? {\r\n user_token,\r\n institution_id: metaData[\"institution\"][\"institution_id\"],\r\n initial_products: [\"income_verification\"],\r\n options: {\r\n webhook,\r\n },\r\n }\r\n : !bankIncomePublicToken //&& sandbox\r\n ? {\r\n user_token,\r\n institution_id: metaData[\"institution\"][\"institution_id\"],\r\n initial_products: [\"income_verification\"],\r\n options: {\r\n webhook,\r\n override_password: \"{}\",\r\n income_verification: {\r\n income_source_types: [\"bank\"],\r\n bank_income: {\r\n days_requested: 180,\r\n },\r\n },\r\n },\r\n }\r\n : !payroll_income || !bank_income\r\n ? {\r\n user_token,\r\n }\r\n : {}),\r\n },\r\n URL = !user_token\r\n ? `/user/create`\r\n : !payrollIncomePublicToken || !bankIncomePublicToken //&& sandbox\r\n ? \"/sandbox/public_token/create\"\r\n : !payroll_income\r\n ? \"/credit/payroll_income/get\"\r\n : !bank_income\r\n ? \"/credit/bank_income/get\"\r\n : \"\",\r\n iResponse = await handleGetAPIData(URL, requestOptions);\r\n let iBankDetails = bankDetails;\r\n\r\n iBankDetails = {\r\n ...iBankDetails,\r\n ...(!user_token\r\n ? { user_token: iResponse[\"user_token\"] }\r\n : !payrollIncomePublicToken //&& sandbox\r\n ? { payrollIncomePublicToken: iResponse[\"public_token\"] }\r\n : !bankIncomePublicToken //&& sandbox\r\n ? { bankIncomePublicToken: iResponse[\"public_token\"] }\r\n : !payroll_income\r\n ? { payroll_income: iResponse }\r\n : !bank_income\r\n ? { bank_income: iResponse }\r\n : {}),\r\n };\r\n if (!bank_income && JSON.stringify(iResponse).includes(\"bank_income_id\")) {\r\n setStatus((iStatus) => {\r\n return [\r\n ...iStatus,\r\n ...[\r\n {\r\n primaryMessage: \"Income Details\",\r\n secondaryMessage: `Your income details have been successfully imported.`,\r\n },\r\n ],\r\n ];\r\n });\r\n }\r\n if (URL.includes(\"payroll_income\"))\r\n handleCheckData(iResponse, \"PayrollIncome\", \"handleGetBankDetails()\");\r\n if (URL.includes(\"bank_income\"))\r\n handleCheckData(iResponse, \"BankIncome\", \"handleGetBankDetails()\");\r\n\r\n if (!iBankDetails[\"error_code\"]) setBankDetails(iBankDetails);\r\n setBankDetails(iBankDetails);\r\n };\r\n // const handleGetAssets = async () => {\r\n // const { client_id, secret, access_token } = plaidDetails,\r\n // {\r\n // asset_report_token,\r\n // assets,\r\n // public_token,\r\n // access_token: accessToken,\r\n // } = Assets,\r\n // requestOptions = {\r\n // ...{\r\n // client_id,\r\n // secret,\r\n // },\r\n // ...// !public_token && sandbox\r\n // // ? {\r\n // // institution_id: \"ins_20\",\r\n // // initial_products: [\"assets\"],\r\n // // options: {\r\n // // webhook: \"https://www.genericwebhookurl.com/webhook\",\r\n // // },\r\n // // }\r\n // // : !accessToken && sandbox\r\n // // ? {\r\n // // public_token,\r\n // // }\r\n // // :\r\n // (!asset_report_token\r\n // ? {\r\n // access_tokens: [access_token],\r\n // days_requested: 30,\r\n // options: {\r\n // client_report_id: Math.random().toString(36).slice(2),\r\n // webhook,\r\n // user: {},\r\n // },\r\n // }\r\n // : { asset_report_token }),\r\n // },\r\n // iResponse = await handleGetAPIData(\r\n // !asset_report_token ? \"/asset_report/create\" : \"/asset_report/get\",\r\n // requestOptions\r\n // );\r\n\r\n // if (asset_report_token || iResponse[\"error_code\"]) {\r\n // handleCheckData(\r\n // iResponse,\r\n // \"Assets\",\r\n // \"setTimeout(() =>handleGetAssets(), 5000);\"\r\n // );\r\n // }\r\n // if (\r\n // (iResponse[\"report\"] || iResponse[\"asset_report_token\"]) &&\r\n // !iResponse[\"error_code\"]\r\n // ) {\r\n // if (asset_report_token) {\r\n // handleCheckData(iResponse, \"Assets\", \"handleGetAssets()\");\r\n // }\r\n // if (iResponse[\"report\"] || iResponse[\"asset_report_token\"]) {\r\n // let iAssets = Assets;\r\n // iAssets = {\r\n // ...iAssets,\r\n // ...(!asset_report_token\r\n // ? { asset_report_token: iResponse[\"asset_report_token\"] }\r\n // : { assets: iResponse }),\r\n // };\r\n // setAssets(iAssets);\r\n // } else {\r\n // // setTimeout(() => {\r\n // // handleGetAssets();\r\n // // }, 200);\r\n // }\r\n // }\r\n // };\r\n\r\n // const handleGetLiabilities = async () => {\r\n // const { client_id, secret, access_token } = plaidDetails,\r\n // { liabilitiesPublicToken, liabilities } = Liabilities,\r\n // requestOptions = {\r\n // ...{\r\n // client_id,\r\n // secret,\r\n // },\r\n // ...(!liabilitiesPublicToken && sandbox\r\n // ? {\r\n // institution_id: \"ins_19\",\r\n // initial_products: [\"liabilities\"],\r\n // options: {\r\n // webhook,\r\n // },\r\n // }\r\n // : { access_token }),\r\n // },\r\n // iResponse = await handleGetAPIData(\r\n // !liabilitiesPublicToken && sandbox\r\n // ? \"/sandbox/public_token/create\"\r\n // : \"/liabilities/get\",\r\n // requestOptions\r\n // );\r\n // let iLiabilities = Liabilities;\r\n // iLiabilities = {\r\n // ...iLiabilities,\r\n // ...(!liabilitiesPublicToken\r\n // ? {\r\n // liabilitiesPublicToken: iResponse[\"public_token\"],\r\n // }\r\n // : { liabilities: iResponse }),\r\n // };\r\n // if (liabilitiesPublicToken || iResponse[\"error_code\"])\r\n // handleCheckData(iResponse, \"Liabilities\", \"handleGetLiabilities()\");\r\n // if (!iResponse[\"error_code\"]) setLiabilities(iLiabilities);\r\n\r\n // if (liabilitiesPublicToken)\r\n // handleCheckData(iResponse, \"Liabilities\", \"handleGetLiabilities()\");\r\n // setLiabilities(iLiabilities);\r\n // };\r\n\r\n // const handleGetBalance = async () => {\r\n // const { client_id, secret, access_token } = plaidDetails,\r\n // requestOptions = {\r\n // client_id,\r\n // secret,\r\n // access_token,\r\n // },\r\n // iBalance = await handleGetAPIData(\r\n // \"/accounts/balance/get\",\r\n // requestOptions\r\n // );\r\n // handleCheckData(iBalance, \"Balance\", \"handleGetBalance()\");\r\n\r\n // setBalance(iBalance);\r\n // };\r\n\r\n // const handleGetIdentity = async () => {\r\n // const { client_id, secret, access_token } = plaidDetails,\r\n // requestOptions = {\r\n // client_id,\r\n // secret,\r\n // access_token,\r\n // },\r\n // iIdentity = await handleGetAPIData(\"/identity/get\", requestOptions);\r\n // handleCheckData(iIdentity, \"Identity\", \"handleGetIdentity()\");\r\n\r\n // setIdentity(iIdentity);\r\n // };\r\n const handleCheckData = (data, name, tryAgain) => {\r\n let status = \"Success.\",\r\n color = \"green\",\r\n index = null,\r\n iPlaidStatus = plaidStatus;\r\n\r\n setPlaidStatus((iStatus) => {\r\n iPlaidStatus = iStatus\r\n ? iStatus\r\n : plaidDetails[\"availableProducts\"].map((item, index) => {\r\n return { product: capitalizeFLetter(item), status: \"pending...\" };\r\n });\r\n\r\n iPlaidStatus.forEach((item, iIndex) => {\r\n if (\r\n name\r\n .toString()\r\n .toUpperCase()\r\n .includes(item.product.toString().toUpperCase())\r\n )\r\n index = iIndex;\r\n });\r\n if (data[\"error_code\"] === \"PRODUCT_NOT_READY\") {\r\n setTimeout(() => {\r\n eval(tryAgain);\r\n }, 4000);\r\n } else if (data[\"error_code\"]) {\r\n status = data[\"error_message\"];\r\n color = \"red\";\r\n } else {\r\n downLoanFile(data, name);\r\n }\r\n if (index !== null && data[\"error_code\"] !== \"PRODUCT_NOT_READY\") {\r\n let row = iPlaidStatus[index];\r\n row[\"status\"] = status;\r\n row[\"color\"] = color;\r\n iPlaidStatus[index] = row;\r\n }\r\n return iPlaidStatus;\r\n });\r\n if (data[\"error_code\"] === \"PRODUCT_NOT_READY\") {\r\n eval(tryAgain);\r\n } else if (data[\"error_code\"]) {\r\n status = data[\"error_message\"];\r\n color = \"red\";\r\n } else {\r\n downLoanFile(data, name);\r\n }\r\n if (index !== null && data[\"error_code\"] !== \"PRODUCT_NOT_READY\") {\r\n let row = iPlaidStatus[index];\r\n row[\"status\"] = status;\r\n row[\"color\"] = color;\r\n iPlaidStatus[index] = row;\r\n setPlaidStatus([...iPlaidStatus]);\r\n }\r\n };\r\n\r\n const downLoanFile = (json, name) => {\r\n name = name + \"_\" + Math.random().toString(36).slice(2);\r\n log(name, json);\r\n if (!sandbox) {\r\n let dataStr =\r\n \"data:text/json;charset=utf-8,\" +\r\n encodeURIComponent(JSON.stringify(json)),\r\n dlAnchorElem = document.createElement(\"a\");\r\n dlAnchorElem.setAttribute(\"href\", dataStr);\r\n dlAnchorElem.setAttribute(\"download\", name + \".json\");\r\n document.body.appendChild(dlAnchorElem);\r\n dlAnchorElem.click();\r\n document.body.removeChild(dlAnchorElem);\r\n }\r\n };\r\n\r\n const renderLogin = () => {\r\n return web && linkId ? (\r\n \r\n {\" \"}\r\n \r\n ) : !web ? (\r\n !plaidDetails[\"isCompleted\"] && (\r\n \r\n )\r\n ) : (\r\n <>\r\n );\r\n };\r\n const PlaidStatus = () => {\r\n return (\r\n <>\r\n {status.length > 0 && (\r\n <>\r\n {status.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {item[\"primaryMessage\"]}\r\n \r\n \r\n \r\n \r\n \r\n {item[\"secondaryMessage\"]}\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n handleSaveLoanInformation(0, false)}\r\n style={{ marginRight: 5, color: \"rgb(44, 134, 209)\" }}\r\n size={20}\r\n name=\"circle-with-plus\"\r\n />\r\n handleSaveLoanInformation(0, false)}\r\n style={{\r\n ...{\r\n fontSize: 18,\r\n color: \"#1172c1\",\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n }}\r\n >\r\n Add another Bank Account\r\n \r\n \r\n \r\n )}\r\n {((plaidDetails[\"metaData\"] &&\r\n !contextDetails[\"isAssetPullCompleted\"]) ||\r\n plaidDetails[\"isClickedAllow\"]) && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Importing data from Plaid...\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n const isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n return (\r\n \r\n {From == \"loginverify\" && web && !isMobileWeb ? (\r\n \r\n \r\n \r\n \r\n \r\n Asset Verification\r\n \r\n \r\n \r\n {isLoading && isBankAccountLinked !== 1 && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Connecting to Plaid...\r\n \r\n \r\n \r\n \r\n \r\n To import your bank information, we utilize a third-party\r\n vendor named Plaid. We are connecting you now…\r\n \r\n \r\n \r\n )}\r\n {isBankAccountLinked !== 1 && renderLogin()}\r\n {isBankAccountLinked != 0 && }\r\n {processingStatus && From == \"loginverify\" && (\r\n \r\n {processingStatus == \"success\" ? (\r\n \r\n \r\n Thank you. Your bank Verification steps are done for now.\r\n \r\n \r\n {\r\n //navigate(\"DashBoard\", {});\r\n\r\n const URL = `${window.location.origin}/GoDirect/index.html?SessionId=${SessionId}&uid=${uniqueId}&Path=DashBoard`;\r\n try {\r\n window.parent.location.href = URL;\r\n } catch (e) {\r\n window.location.href = URL;\r\n }\r\n }}\r\n title=\"View Remaining Loan Tasks\"\r\n />\r\n \r\n \r\n \r\n ) : processingStatus == \"Importing\" ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Importing Bank details form Plaid...\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n We apologize… An error was found as follows:\r\n \r\n {processingStatus}\r\n \r\n\r\n \r\n {\r\n window.location.reload();\r\n }}\r\n title=\"Try Again\"\r\n />\r\n {\r\n // navigate(\"DashBoard\", {});\r\n\r\n URL = `${window.location.origin}/GoDirect/index.html?SessionId=${SessionId}&uid=${uniqueId}&Path=DashBoard`;\r\n try {\r\n window.parent.location.href = URL;\r\n } catch (e) {\r\n window.location.href = URL;\r\n }\r\n }}\r\n title=\"View Remaining Loan Tasks\"\r\n />\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n Linking.openURL(\"../\")}\r\n style={{ color: \"#B6B6B6\" }}\r\n >\r\n Home\r\n \r\n Linking.openURL(\"../../licensing/\")}\r\n style={{ color: \"#B6B6B6\" }}\r\n >\r\n Licensing\r\n \r\n Linking.openURL(\"../../privacy-policy/\")}\r\n style={{ color: \"#B6B6B6\" }}\r\n >\r\n Privacy policy\r\n \r\n Linking.openURL(\"../../terms-of-use/\")}\r\n style={{ color: \"#B6B6B6\" }}\r\n >\r\n Terms of Use\r\n \r\n \r\n \r\n Linking.openURL(\"../\")}\r\n style={{ width: \"20%\" }}\r\n >\r\n \r\n \r\n \r\n \r\n © 2024 Direct Mortgage, Corp. ALL RIGHTS RESERVED\r\n \r\n \r\n 6955 S. Union Park Center Suite 540, Midvale, UT 84047 | NMLS\r\n ID 9612\r\n \r\n \r\n \r\n Linking.openURL(\"https://www.fhfa.gov/\")}\r\n style={{ width: \"55%\" }}\r\n >\r\n \r\n \r\n \r\n Linking.openURL(\"https://www.nmlsconsumeraccess.org/\")\r\n }\r\n style={{ width: \"100%\" }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {isLoading && isBankAccountLinked !== 1 && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Connecting to Plaid...\r\n \r\n \r\n \r\n \r\n \r\n To import your bank information, we utilize a third-party\r\n vendor named Plaid. We are connecting you now…\r\n \r\n \r\n \r\n )}\r\n {isBankAccountLinked !== 1 && renderLogin()}\r\n {isBankAccountLinked != 0 && }\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flex: 1,\r\n height: 525,\r\n },\r\n Wrapper: {\r\n backgroundColor: \"#fff\",\r\n paddingTop: 20,\r\n paddingBottom: 10,\r\n paddingHorizontal: web ? 20 : 0,\r\n borderRadius: 20,\r\n overflow: \"auto\",\r\n boxShadow: \"rgb(0 0 0 / 13%) 2px 4px 18px 10px\",\r\n flex: 1,\r\n width: 600,\r\n marginHorizontal: \"auto\",\r\n marginVertical: 100,\r\n minHeight: 350,\r\n },\r\n});\r\nexport default Plaid;\r\n","import React, { useState } from \"react\";\r\nimport { View } from \"react-native\";\r\nimport { WebView } from \"react-native-webview\";\r\nimport { PageBottom } from \"../accessories/accessories\";\r\nimport { web } from \"../accessories/Platform\";\r\n\r\nconst PlaidAuthenticator = (props) => {\r\n const { handleLoad, handleEvent, handleSuccess } = props;\r\n const handleWebViewMessage = (event) => {\r\n console.log(\"event\", event);\r\n const data = JSON.parse(event.nativeEvent.data);\r\n if (data.type === \"success\") {\r\n handleSuccess(data.token, data.metadata);\r\n } else if (data.type === \"event\") {\r\n handleEvent(data.event);\r\n }\r\n };\r\n // const source = false\r\n // ? require(\"./plaid.html\")\r\n // : {\r\n // html: `\r\n // \r\n // \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 source = {\r\n uri: \"https://www.solutioncenter.biz/GoDirectplaid/plaid.html\",\r\n };\r\n return (\r\n \r\n \r\n {/* {!web && } */}\r\n \r\n );\r\n};\r\n\r\nexport default PlaidAuthenticator;\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { View, Animated, Easing } from \"react-native\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\n\r\nconst ArrowSpinner = ({\r\n color,\r\n size,\r\n style = {},\r\n isSpinner = false,\r\n duration: iDuration = 1000,\r\n}) => {\r\n const spinValue = useRef(new Animated.Value(0)).current;\r\n\r\n useEffect(() => {\r\n startSpinnerAnimation();\r\n }, []);\r\n\r\n const startSpinnerAnimation = () => {\r\n spinValue.setValue(0);\r\n Animated.timing(spinValue, {\r\n toValue: 1,\r\n duration: iDuration || 1000,\r\n easing: Easing.linear,\r\n useNativeDriver: true,\r\n }).start(() => startSpinnerAnimation());\r\n };\r\n\r\n const spin = spinValue.interpolate({\r\n inputRange: [0, 1],\r\n outputRange: [\"0deg\", \"360deg\"],\r\n });\r\n\r\n return (\r\n \r\n \r\n {isSpinner ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ArrowSpinner;\r\n","import { Alert, BackHandler, Dimensions, Linking } from \"react-native\";\r\nimport {\r\n API_URL,\r\n REDIRECT_URL,\r\n API_URL_MOBILE,\r\n API_CONTROLLER_NAME,\r\n} from \"@env\";\r\nimport { web, android, ios } from \"./Platform\";\r\nimport { gtag, install } from \"ga-gtag\";\r\nimport { gTagId, gTagAddId } from \"@env\";\r\nimport XMLParser from \"react-xml-parser\";\r\nimport moment from \"moment\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport packageJson from \"../../package.json\";\r\n\r\nlet analytics;\r\nif (!__DEV__) {\r\n analytics = require(\"@react-native-firebase/analytics\").default;\r\n} else {\r\n analytics = {\r\n logEvent: () => console.log(\"Event logged in development\"),\r\n };\r\n}\r\n\r\nconst handleAPI = async ({\r\n name,\r\n params,\r\n method,\r\n requestOptions = null,\r\n apiName = null,\r\n}) => {\r\n let url = API_URL;\r\n\r\n params = Object.keys(params)\r\n .map(\r\n (key) => `${key}=${params[key]?.toString()?.replaceAll(\"&\", \"U00026\")}`\r\n )\r\n .join(\"&\");\r\n\r\n if (!web) {\r\n url = API_URL_MOBILE;\r\n } else if (window.location.host === \"localhost:19006\") {\r\n url = API_URL_MOBILE.replace(\r\n \"https://www.directcorp.com\",\r\n \"https://www.solutioncenter.biz\"\r\n );\r\n }\r\n if (apiName) {\r\n url = url.replace(API_CONTROLLER_NAME, apiName);\r\n }\r\n try {\r\n return fetch(\r\n `${url}${name}?${params}`,\r\n requestOptions\r\n ? requestOptions\r\n : {\r\n method: method || \"POST\",\r\n mode: \"cors\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n )\r\n .then(async function (response) {\r\n let res = await response.json();\r\n // if (\r\n // __DEV__ &&\r\n // name === \"GetBorrowerRedirectURLs\" &&\r\n // params.includes(\"486206\")\r\n // ) {\r\n // res = res.split(\"~\");\r\n // res[0] =\r\n // \"../../../Esignature/Presentation/Webforms/ESignShoppingCart_bootstrap_new.aspx?\" +\r\n // params +\r\n // \"&sType=3\";\r\n // res = res.join(\"res\");\r\n // }\r\n return res;\r\n })\r\n .catch(function (err) {\r\n console.log(`Error from handleAPI ====> ${err}`);\r\n });\r\n } catch (error) {}\r\n};\r\nconst handleUserDetails = async (SessionId) => {\r\n return await handleAPI({\r\n name: \"GetUsersDetails\", //GetUsersDetailsNewLoanApp\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (err) {\r\n console.log(`Error from handleUserDetails ====> ${err}`);\r\n });\r\n};\r\nconst handleSessionCheck = async (SessionId, handleLogOut) => {\r\n if (SessionId) {\r\n const response = await handleAPI({\r\n name: \"GetUsersDetails\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then(function (iResponse) {\r\n return iResponse;\r\n })\r\n .catch(function (err) {\r\n console.log(`Error from handleSessionCheck ====> ${err}`);\r\n });\r\n let response_ = response.split(\"~\");\r\n\r\n if (response_[0] <= 0) {\r\n handleLogOut();\r\n }\r\n\r\n return response_[0];\r\n }\r\n};\r\nconst handleGetEmpDetails = async (SessionId) => {\r\n if (SessionId) {\r\n return await handleAPI({\r\n name: \"GetSessionData\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (err) {\r\n console.log(`Error from handleSessionCheck ====> ${err}`);\r\n });\r\n }\r\n};\r\nconst FormatPhoneLogin = (PhoneNo) => {\r\n try {\r\n if (PhoneNo != \"\") {\r\n PhoneNo = PhoneNo.replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n if (PhoneNo.indexOf(\"@\") == -1) {\r\n PhoneNo = PhoneNo.replaceAll(\"-\", \"\");\r\n PhoneNo = PhoneNo.slice(0, 10);\r\n } else {\r\n }\r\n\r\n if (\r\n PhoneNo.indexOf(\"@\") == -1 &&\r\n Number(PhoneNo) &&\r\n PhoneNo.length === 10\r\n ) {\r\n PhoneNo = PhoneNo.replace(/D/g, \"\");\r\n if (PhoneNo.length < 10) {\r\n return PhoneNo;\r\n }\r\n\r\n let p = /^([\\d]{3})([\\d]{3})([\\d]{4,})$/.exec(PhoneNo);\r\n\r\n PhoneNo = \"(\" + p[1] + \") \" + p[2] + \"-\" + p[3];\r\n return PhoneNo;\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"Error form FormatPhoneLogin ===> \", error);\r\n }\r\n return PhoneNo;\r\n};\r\nconst handleOpenURL = async (url) => {\r\n // url = url.replace(\"../../../\", REDIRECT_URL);\r\n url = url\r\n .replace(\"https://www.directcorp.com/\", \"../../../\")\r\n .replace(\"https://www.solutioncenter.biz/\", \"../../../\")\r\n .replace(\"http://www.solutioncenter.biz/\", \"../../../\");\r\n // console.log(url, supported);\r\n let supported = await Linking.canOpenURL(url);\r\n if (supported) {\r\n await Linking.openURL(url);\r\n } else {\r\n Alert.alert(`Don't know how to open this URL: ${url}`);\r\n }\r\n};\r\nconst validateEmail = (text) => {\r\n //Validating the email\r\n let regex =\r\n /^([a-zA-Z0-9_\\.\\-\\+])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/;\r\n return regex.test(text);\r\n};\r\n\r\nconst log = (text, msg) => {\r\n __DEV__ && console.log(`${text} ====> `, msg);\r\n};\r\nconst handleCreateLoanOnly = (SessionId, navigation, userName) => {\r\n handleAPI({\r\n name: \"CreateLoanOnly\",\r\n params: { sessionid: SessionId, empid: 1, EventId: 15 },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response);\r\n updateWebURL({\r\n SessionId: SessionId,\r\n loanId: response,\r\n Path: \"Home\",\r\n });\r\n navigation.navigate(\"Home\", {\r\n userName: userName,\r\n SessionId: SessionId,\r\n loanId: response,\r\n });\r\n })\r\n .catch((error) => console.error(\"Error from CreateLoanOnly ====> \", error));\r\n};\r\n// const formatCurrency = (value, decPlaces, sign_ = true) => {\r\n// let num = value?.toString().replaceAll(\"$\", \"\"),\r\n// multiplier = Math.pow(10, decPlaces),\r\n// rounder = 50 / multiplier + 0.00000000001,\r\n// i = 0,\r\n// cents = num % multiplier,\r\n// sign = num == (num = Math.abs(num));\r\n\r\n// num = num.toString().replace(/\\$|\\,/g, \"\");\r\n// if (isNaN(num)) num = \"0\";\r\n// if (isNaN(decPlaces)) num = \"2\";\r\n\r\n// num = Math.floor(num * multiplier + rounder);\r\n// num = Math.floor(num / multiplier).toString();\r\n\r\n// for (i = 1; i < decPlaces; i++) {\r\n// if (cents < Math.pow(10, i)) cents = \"0\" + cents;\r\n// }\r\n// for (i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)\r\n// num =\r\n// num.substring(0, num.length - (4 * i + 3)) +\r\n// \",\" +\r\n// num.substring(num.length - (4 * i + 3));\r\n// if (sign_) return \"$\" + num;\r\n// return \"$\" + ((sign ? \"\" : \"-\") + num);\r\n// };\r\n\r\nconst formatCurrencyOld = (value) => {\r\n let num = parseFloat(\r\n (value || \"\").toString().replace(\"$\", \"\").replace(\",\", \"\")\r\n ).toString(),\r\n numParts = num.split(\".\"),\r\n dollars = numParts[0],\r\n cents = numParts[1] || \"\",\r\n sign = num == (num = Math.abs(num));\r\n dollars = dollars.replace(/\\$|\\,/g, \"\");\r\n if (isNaN(dollars)) dollars = \"0\";\r\n dollars = dollars.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n let val = \"$\" + ((sign ? \"\" : \"-\") + dollars + (cents ? \".\" + cents : \".00\"));\r\n val = val.replaceAll(\"--\", \"-\");\r\n if (val == \"$-0.00\") val = \"$0.00\";\r\n return val;\r\n};\r\nconst formatCurrency = (value, floatCount = 2) => {\r\n let num = parseFloat(\r\n (value || \"\").toString().replace(\"$\", \"\").replace(\",\", \"\")\r\n )\r\n ?.toFixed(floatCount)\r\n .toString(),\r\n numParts = num.split(\".\"),\r\n dollars = numParts[0],\r\n cents = numParts[1] || \"\",\r\n sign = num == (num = Math.abs(num));\r\n dollars = dollars.replace(/\\$|\\,/g, \"\");\r\n if (isNaN(dollars)) dollars = \"0\";\r\n dollars = dollars.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n let val =\r\n \"$\" +\r\n ((sign ? \"\" : \"-\") +\r\n dollars +\r\n (floatCount ? (cents ? \".\" + cents : \".00\") : \"\"));\r\n val = val.replaceAll(\"--\", \"\");\r\n if ([\"$-0.00\", \"$-0\"].includes(val)) val = \"$0.00\";\r\n return val;\r\n};\r\nconst roundNumber = (number, decimals) => {\r\n try {\r\n let newnumber = new Number(number + \"\").toFixed(parseInt(decimals));\r\n if (newnumber.indexOf(\".\") < 0) {\r\n newnumber = newnumber + \".\";\r\n for (i = 0; i < decimals; i++) {\r\n newnumber = newnumber + \"\" + \"0\";\r\n }\r\n } else {\r\n let nNum = newnumber.split(\".\");\r\n for (let i = nNum[1].length; i < decimals; i++) {\r\n newnumber = newnumber + \"\" + \"0\";\r\n }\r\n }\r\n return parseFloat(newnumber);\r\n } catch (e) {}\r\n};\r\nconst cleanValue = (sVal) => {\r\n try {\r\n sVal = sVal\r\n .replaceAll(\"$\", \"\")\r\n .replaceAll(\",\", \"\")\r\n .replaceAll(\"%\", \"\")\r\n .replaceAll(\"-\", \"\");\r\n if (sVal == \"\") sVal = 0;\r\n } catch (e) {}\r\n return sVal;\r\n};\r\nconst numberWithCommas = (x) => {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n};\r\nconst getQueryString = (key, default_) => {\r\n let finalQueryString = \"\";\r\n if (default_ == null) default_ = \"\";\r\n key = key.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n let NewKey = key.toUpperCase(),\r\n regex = new RegExp(\"[\\\\?&]\" + NewKey + \"=([^&#]*)\"),\r\n ActualQueryString = window.location?.href || \"\",\r\n NewQueryString = ActualQueryString.toUpperCase(),\r\n qsValue = regex.exec(NewQueryString);\r\n if (qsValue != null) {\r\n let startPosi = NewQueryString.indexOf(NewKey),\r\n keylen = NewKey.length,\r\n Querylen = ActualQueryString.length,\r\n prefix = ActualQueryString.substring(0, startPosi),\r\n sufix = ActualQueryString.substring(startPosi + keylen, Querylen);\r\n finalQueryString = prefix + NewKey + sufix;\r\n } else {\r\n finalQueryString = NewQueryString;\r\n }\r\n let qs = regex.exec(finalQueryString),\r\n returnValue = default_;\r\n if (qs == null) returnValue = default_;\r\n else returnValue = qs[1];\r\n if (web) return returnValue || queryStringToObject()[key];\r\n else return returnValue;\r\n};\r\nconst queryStringToObject = (queryString) => {\r\n if (!queryString) queryString = window.location.href;\r\n queryString = queryString.split(\"?\")[1];\r\n const params = new URLSearchParams(queryString),\r\n result = {};\r\n for (const [key, value] of params) {\r\n result[key] = value;\r\n }\r\n return result;\r\n};\r\nasync function updateWebURL(params, flag) {\r\n if (web) {\r\n let queryString = new URLSearchParams(window.location?.search || \"\"),\r\n exception = false;\r\n if (params !== undefined) {\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value && key !== \"navigation\") {\r\n //key === \"Path\" || key === \"SessionId\") -- removed for web login -> dashboard\r\n queryString.set(key, value);\r\n } else {\r\n queryString.delete(key);\r\n }\r\n }\r\n } else {\r\n queryString = queryString\r\n .toString()\r\n .split(\"&\")\r\n .filter((e) => e.toString().indexOf(\"Path\") === -1)\r\n .join(\"&\");\r\n exception = true;\r\n }\r\n let newUrl = `${window.location.pathname}`;\r\n if ((params && [\"Login\"].indexOf(params.Path) === -1) || exception)\r\n newUrl = `${window.location.pathname}?${queryString\r\n .toString()\r\n .replace(\"%7B\", \"{\")\r\n .replace(\"%7D\", \"}\")}`;\r\n\r\n if (newUrl.indexOf(\"DashBoard\") > -1)\r\n newUrl = newUrl\r\n .toString()\r\n .split(\"&\")\r\n .filter(\r\n (e) =>\r\n e.toString().indexOf(\"userName\") > -1 ||\r\n e.toString().indexOf(\"Path\") > -1 ||\r\n e.toString().indexOf(\"SessionId\") > -1\r\n )\r\n .join(\"&\");\r\n if (flag) return newUrl;\r\n\r\n window.history.replaceState(null, \"\", newUrl);\r\n }\r\n}\r\nfunction getQueryStringURL(key, default_, URL) {\r\n let finalQueryString = \"\";\r\n if (default_ == null) default_ = \"\";\r\n key = key.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n\r\n let NewKey = key.toUpperCase();\r\n NewKey = NewKey.replace(\"=\", \"\");\r\n let regex = new RegExp(\"[\\\\?&]\" + NewKey + \"=([^&#]*)\"),\r\n ActualQueryString = URL,\r\n NewQueryString = ActualQueryString.toUpperCase(),\r\n qsValue = regex.exec(NewQueryString);\r\n if (qsValue != null) {\r\n let startPosi = NewQueryString.indexOf(\"&\" + NewKey),\r\n keylen = NewKey.length,\r\n Querylen = ActualQueryString.length,\r\n prefix = ActualQueryString.substring(0, startPosi),\r\n sufix = ActualQueryString.substring(startPosi + 1 + keylen, Querylen),\r\n finalQueryString = prefix + \"&\" + NewKey + sufix;\r\n } else {\r\n finalQueryString = NewQueryString;\r\n }\r\n let qs = regex.exec(finalQueryString);\r\n if (qs == null) return default_;\r\n else return qs[1];\r\n}\r\nconst removeDuplicates = (array, property) => {\r\n const uniqueValues = {};\r\n return array.filter((obj) => {\r\n if (!uniqueValues[obj[property]]) {\r\n uniqueValues[obj[property]] = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n};\r\nconst formatDateTimeNew = (date) => {\r\n if (date === \"\" || !date) return \"\";\r\n const currentDate = new Date();\r\n const currentYear = currentDate.getFullYear().toString();\r\n\r\n let [month, day, year] = date.split(\"/\");\r\n\r\n if (!day) {\r\n day = month;\r\n month = currentDate.getMonth() + 1;\r\n }\r\n\r\n const parsedMonth = parseInt(month);\r\n const parsedDay = parseInt(day);\r\n\r\n const isValidMonth =\r\n !isNaN(parsedMonth) && parsedMonth >= 1 && parsedMonth <= 12;\r\n const isValidDay = !isNaN(parsedDay) && parsedDay >= 1 && parsedDay <= 31;\r\n\r\n if (!isValidMonth || !isValidDay) {\r\n const formattedCurrentMonth = (currentDate.getMonth() + 1)\r\n .toString()\r\n .padStart(2, \"0\");\r\n const formattedCurrentDay = currentDate\r\n .getDate()\r\n .toString()\r\n .padStart(2, \"0\");\r\n return `${formattedCurrentMonth}/${formattedCurrentDay}/${currentYear}`;\r\n }\r\n\r\n if (year && year.length === 2) {\r\n year = currentYear.slice(0, 2) + year;\r\n } else if (!year) {\r\n year = currentYear;\r\n }\r\n\r\n const formattedMonth = parsedMonth.toString().padStart(2, \"0\");\r\n const formattedDay = parsedDay.toString().padStart(2, \"0\");\r\n\r\n return `${formattedMonth}/${formattedDay}/${year}`;\r\n};\r\nfunction formatSSN(SSN) {\r\n SSN = SSN?.toString().replaceAll(\"-\", \"\");\r\n if (SSN.length == \"9\" && !isNaN(SSN)) {\r\n var a = SSN.substring(0, 3);\r\n var b = SSN.substring(3, 5);\r\n var c = SSN.substring(5, 9);\r\n\r\n return a + \"-\" + b + \"-\" + c;\r\n } else if (isNaN(SSN)) {\r\n return \"\";\r\n }\r\n}\r\nconst handleStartNewLoan = (\r\n navigation,\r\n SessionId,\r\n userName,\r\n contextDetails,\r\n setContextDetails\r\n) => {\r\n setContextDetails({\r\n ...contextDetails,\r\n ...{ loanId: -999, Path: \"Home\" },\r\n });\r\n updateWebURL({\r\n SessionId: SessionId,\r\n loanId: -999,\r\n Path: \"Home\",\r\n });\r\n navigation.navigate(\"Home\", {\r\n userName: userName,\r\n SessionId: SessionId,\r\n loanId: -999,\r\n });\r\n};\r\nconst sortByKey = (obj, key) => {\r\n obj = obj.sort((a, b) => a[key].toString().localeCompare(b[key].toString()));\r\n return obj;\r\n};\r\nconst sortByKeyNumber = (arr, key, asc = true) => {\r\n return arr.sort((a, b) => {\r\n const numA = Number(a[key]),\r\n numB = Number(b[key]);\r\n return asc ? numA - numB : numB - numA;\r\n });\r\n};\r\n\r\nconst groupByKey = (input, key) => {\r\n // input = sortByKey(input, \"CustId\");\r\n let data = input.reduce((acc, currentValue) => {\r\n let groupKey = currentValue[key];\r\n if (!acc[groupKey]) {\r\n acc[groupKey] = [];\r\n }\r\n acc[groupKey].push(currentValue);\r\n return acc;\r\n }, {});\r\n\r\n data = Object.keys(data).map((key) => {\r\n return {\r\n Name: key,\r\n subMenu: data[key].map((iItem) => {\r\n return { Name: iItem[\"subName\"], Id: iItem[\"Id\"] };\r\n }),\r\n };\r\n });\r\n return data;\r\n};\r\nconst handleCheckObj = (obj) => {\r\n for (const key in obj) {\r\n if (!obj[key] && obj[key] != 0) {\r\n return false;\r\n }\r\n }\r\n if (!Object.keys(obj).length) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nif (web) {\r\n install(gTagId); // initialize for tracking Event on GA\r\n install(gTagAddId); // initialize for tracking Event on GA for Ads\r\n}\r\n\r\nconst handleTrackGA4Events = async (eventName, eventOption) => {\r\n eventName = (eventName || \"\").replaceAll(\" \", \"_\");\r\n\r\n if (eventName && handleCheckObj(eventOption)) {\r\n try {\r\n if (!__DEV__) {\r\n if (web) {\r\n gtag(\"event\", eventName, eventOption);\r\n } else {\r\n // console.log(\"Mobile GA Event\", eventName, eventOption);\r\n logEvent(eventName, eventOption);\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"Error during send event to GA\", error);\r\n }\r\n }\r\n};\r\nconst isFloat = (n) => {\r\n return Number(n) === n && n % 1 !== 0;\r\n};\r\nconst logEvent = async (eventName, eventOption) => {\r\n if (analytics) {\r\n await analytics().logEvent(eventName, eventOption);\r\n }\r\n};\r\nconst handleGetBrowserName = () => {\r\n var ua = navigator.userAgent;\r\n var tem;\r\n var M =\r\n ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) ||\r\n [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return \"IE \" + (tem[1] || \"\");\r\n }\r\n if (M[1] === \"Chrome\") {\r\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if (tem != null) return tem.slice(1).join(\" \").replace(\"OPR\", \"Opera\");\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, \"-?\"];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) M.splice(1, 1, tem[1]);\r\n\r\n return M[0]; //.join(\" \");\r\n};\r\n\r\nconst handleLogDWCallToActionEventParent = async (\r\n Buttontext,\r\n apiName,\r\n PageTitle,\r\n detailsJson,\r\n currentPage\r\n) => {\r\n let DeviceId = JSON.parse((await AsyncStorage.getItem(\"DeviceId\")) || null),\r\n PageLoadId = JSON.parse(\r\n (await AsyncStorage.getItem(\r\n apiName === \"LogDWVisitorsEvent\" ? \"iPageLoadId\" : \"PageLoadId\"\r\n )) || null\r\n ),\r\n params = {\r\n PageTitle: web ? PageTitle || document.title : \"Go Direct\",\r\n PageURL: web\r\n ? window?.parent?.location.href || window.location.href\r\n : \"Go Direct - \" + currentPage || \"Go Direct\",\r\n device: web ? \"desktop\" : \"mobile\",\r\n IPAddress: DeviceId || 0,\r\n ParentId: web\r\n ? window?.parent?.GLO_PageLoadId || PageLoadId\r\n : PageLoadId || 0,\r\n Buttontext,\r\n };\r\n\r\n params[\"detailsJson\"] = JSON.stringify([\r\n {\r\n ...detailsJson,\r\n ...{\r\n Browser: web ? handleGetBrowserName() : \"Go Direct\",\r\n },\r\n },\r\n ]);\r\n\r\n // log(apiName, params);\r\n if (Buttontext !== \"\" && !__DEV__) {\r\n handleTrackGA4Events(Buttontext, params);\r\n return await handleAPI({\r\n name: apiName,\r\n params,\r\n })\r\n .then((PageLoadId) => {\r\n if (apiName === \"LogDWVisitorsEvent\") {\r\n AsyncStorage.setItem(\r\n \"PageLoadId\",\r\n JSON.stringify(PageLoadId || null)\r\n );\r\n }\r\n })\r\n .catch((e) => log(\"Error form \" + apiName + \" ====> \", e));\r\n }\r\n};\r\nconst handleGetButtonText = (loginFrom) => {\r\n let Buttontext = \"\",\r\n documentURI = document.documentURI;\r\n if (\r\n documentURI.includes(\"StartLoanApp=1\") ||\r\n documentURI.includes(\"To=loanapp\")\r\n )\r\n Buttontext = \"Start a Loan Application\";\r\n else if (documentURI.includes(\"LockThisRate=1\"))\r\n Buttontext = \"Lock This Interest Rate\";\r\n else if (documentURI.includes(\"RateOptions=1\"))\r\n Buttontext = \"View All Fees and Rate Options\";\r\n else if (documentURI.includes(\"CustomizeOptions=1\"))\r\n Buttontext = \"Customize Your Scenario\";\r\n else if (documentURI.includes(\"To=ratequote\")) Buttontext = \"Rate Quote\";\r\n else if (documentURI.includes(\"To=securedoc\"))\r\n Buttontext = \"Upload Documents\";\r\n else if (documentURI.includes(\"To=ratewizard&RateQuoteId=undefined\"))\r\n Buttontext = \"Track these Rates\";\r\n else if (loginFrom === \"securedoc\") Buttontext = \"Upload Documents\";\r\n else if (loginFrom === \"loanapp\") Buttontext = \"Apply Online\";\r\n\r\n return Buttontext;\r\n};\r\nconst handleGetStoredCredential = async () => {\r\n //Reading AsyncStorage to getting details for Auto re-directing\r\n let Credentials = null;\r\n await AsyncStorage.getItem(\"Credentials\")\r\n .then((result) => {\r\n if (result !== null) {\r\n result = JSON.parse(result);\r\n if (Number(result.AutoRedirectExpiryDate) < new Date().getTime()) {\r\n AsyncStorage.removeItem(\"Credentials\");\r\n Credentials = null;\r\n } else {\r\n Credentials = result;\r\n }\r\n } else {\r\n Credentials = result;\r\n }\r\n })\r\n .catch((error) => {\r\n log(\"Error from handleGetStoredCredential ====> \", error);\r\n });\r\n return Credentials;\r\n};\r\nconst handleCreateNewSession = async (WebLoginId) => {\r\n return await handleAPI({\r\n name: \"CreateSessionWrapper\",\r\n params: { WebLoginId },\r\n }).then((response) => {\r\n response = response.split(\"~\");\r\n return response[0];\r\n });\r\n};\r\nconst handleSetStoredCredential = (flag, logDetails) => {\r\n //Storing requied details for auto redirecting\r\n if (flag === 1) {\r\n let {\r\n WebLoginId,\r\n UserDisplayName,\r\n URL,\r\n EmailOutside,\r\n Emailoutside,\r\n CellPhone,\r\n UserName,\r\n SessionId,\r\n DeviceId,\r\n UserType,\r\n } = logDetails,\r\n date = new Date();\r\n date.setDate(date.getDate() + 30);\r\n\r\n let objectToStore = JSON.stringify({\r\n WebLoginId: WebLoginId,\r\n UserDisplayName: UserDisplayName,\r\n URL: URL,\r\n UserName: EmailOutside || Emailoutside || UserName || CellPhone,\r\n AutoRedirectExpiryDate: date.getTime(),\r\n AutoRedirect: true,\r\n DeviceId,\r\n SessionId,\r\n UserType,\r\n });\r\n AsyncStorage.removeItem(\"Credentials\");\r\n AsyncStorage.setItem(\"Credentials\", objectToStore || null);\r\n }\r\n //Clearing the sortage\r\n else if (flag === 2) AsyncStorage.removeItem(\"Credentials\");\r\n};\r\nconst handleCheckAlreadyLogIn = async () => {\r\n let logDetails = await handleGetStoredCredential();\r\n if (logDetails !== null) {\r\n const isActiveSession = await handleSessionCheck(\r\n logDetails[\"SessionId\"],\r\n () => {}\r\n );\r\n if (isActiveSession == 0) {\r\n let sessionId = await handleCreateNewSession(logDetails[\"WebLoginId\"]);\r\n logDetails[\"SessionId\"] = sessionId;\r\n }\r\n handleSetStoredCredential(1, logDetails);\r\n\r\n return logDetails;\r\n }\r\n};\r\nconst getNextNoYear = (length) => {\r\n const currentYear = new Date().getFullYear();\r\n const years = Array.from({ length: length + 1 }, (_, index) => {\r\n let nextYear = currentYear + index;\r\n return {\r\n value: parseInt(nextYear.toString().slice(2, 4)),\r\n label: nextYear,\r\n };\r\n });\r\n return years;\r\n};\r\nconst handleGetZipCodeDetails = async (zipCode) => {\r\n if (zipCode.length !== 5) return { city: \"\", state: \"0\" };\r\n return await handleAPI({\r\n name: \"GetZipcodedetails\",\r\n params: { Zipcode: zipCode },\r\n })\r\n .then((response) => {\r\n response = new XMLParser().parseFromString(response);\r\n response = response.children[0][\"children\"];\r\n let city = response[2][\"value\"],\r\n state = response[0][\"value\"];\r\n return { city, state };\r\n })\r\n .catch((e) => console.error(\"Error from GetZipcodedetails ====> \", e));\r\n};\r\nconst handleOpenPageURL = (url, Width, Height, Name) => {\r\n try {\r\n if (web) {\r\n const params = [\r\n \"toolbar=0\",\r\n \"location=0\",\r\n \"directories=0\",\r\n \"status=0\",\r\n \"menubar=0\",\r\n \"scrollbars=1\",\r\n `width=${Width}`,\r\n `height=${Height}`,\r\n \"left=2\",\r\n \"top=2\",\r\n \"resizable=1\",\r\n ].join(\",\");\r\n\r\n const win = window.open(url, Name, params);\r\n win?.focus();\r\n }\r\n } catch (error) {}\r\n};\r\n\r\nfunction hashString(input) {\r\n let hash = 0;\r\n if (input.length === 0) return hash;\r\n\r\n for (let i = 0; i < input.length; i++) {\r\n const char = input.charCodeAt(i);\r\n hash = (hash << 5) - hash + char;\r\n hash = hash & hash; // Convert to 32-bit integer\r\n }\r\n\r\n return hash;\r\n}\r\n\r\nconst updateScreenSize = () => {\r\n return Dimensions.get(\"window\").width * Dimensions.get(\"window\").height;\r\n};\r\n\r\n//async function generateFingerprint() {\r\nfunction generateFingerprint() {\r\n try {\r\n const userAgent = android\r\n ? \"android\"\r\n : ios\r\n ? \"iOS\"\r\n : handleGetBrowserName(); // Adjust this based on your app's details\r\n const language = \"en-US\"; // Adjust this based on your app's default language\r\n const platform = web ? \"Web\" : \"Mobile\"; // Adjust this based on your app's platform\r\n const timezoneOffset = new Date().getTimezoneOffset();\r\n const screenResolution = updateScreenSize(); // React Native does not provide direct screen resolution\r\n\r\n const fingerprintString = `${userAgent}${language}${platform}${timezoneOffset}${screenResolution}`;\r\n const fingerprint = hashString(fingerprintString);\r\n\r\n return fingerprint.toString();\r\n } catch (error) {\r\n console.error(\"Error generating fingerprint:\", error);\r\n return null;\r\n }\r\n}\r\nfunction getInitials(name) {\r\n const words = name.split(\" \");\r\n const initials = words\r\n .map((word) => word.charAt(0))\r\n .splice(0, 2)\r\n .join(\"\")\r\n .toUpperCase();\r\n return initials;\r\n}\r\nfunction getObjectsWithKeyword(data, keyword) {\r\n const objectsWithKeyword = [];\r\n for (const item of data) {\r\n if (item.title.toLowerCase().includes(keyword.toLowerCase())) {\r\n objectsWithKeyword.push(item);\r\n }\r\n\r\n for (const detail of item.contactDetails) {\r\n for (const value of Object.values(detail)) {\r\n if (\r\n typeof value === \"string\" &&\r\n value.toLowerCase().includes(keyword.toLowerCase())\r\n ) {\r\n objectsWithKeyword.push(item);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return objectsWithKeyword;\r\n}\r\nconst generateBoxShadowStyle = (\r\n xOffset,\r\n yOffset,\r\n shadowColorIos,\r\n shadowOpacity,\r\n shadowRadius,\r\n elevation,\r\n shadowColorAndroid\r\n) => {\r\n let boxShadow;\r\n if (ios) {\r\n boxShadow = {\r\n shadowColor: shadowColorIos,\r\n shadowOpacity,\r\n shadowRadius,\r\n shadowOffset: { width: xOffset, height: yOffset },\r\n };\r\n } else if (android) {\r\n boxShadow = { elevation, shadowColor: shadowColorAndroid };\r\n } else if (web) {\r\n }\r\n return boxShadow;\r\n};\r\nfunction capitalizeFirstLetter(str) {\r\n if (typeof str !== \"string\") {\r\n return str;\r\n }\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\nconst handleGetPlatformName = () => {\r\n const isIOS =\r\n /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n const isAndroid = /Android/.test(navigator.userAgent);\r\n\r\n if (isIOS) {\r\n return \"iOS\";\r\n } else if (isAndroid) {\r\n return \"Android\";\r\n } else {\r\n return \"Desktop\";\r\n }\r\n};\r\nfunction calculateAge(birthDate) {\r\n try {\r\n const currentDate = moment();\r\n birthDate = moment(birthDate, \"MM/DD/YYYY\");\r\n\r\n let age = currentDate.diff(birthDate, \"years\");\r\n\r\n return age || 0;\r\n } catch (error) {\r\n console.error(error.message);\r\n }\r\n}\r\nconst handleOpenScanDocFile = async (SessionId, docid) => {\r\n let url = \"\";\r\n await handleAPI({\r\n name: \"GetScandocManager\",\r\n params: { ScanDocId: docid },\r\n })\r\n .then(async () => {\r\n await handleAPI({\r\n name: \"GetScanDocHistoryDetails\",\r\n params: { ScandocId: docid, SessionId, GatherId: 0 },\r\n })\r\n .then((fileName) => {\r\n // fileName = fileName[\"Table\"][0][\"ImagePath\"];\r\n url = `${web ? \"../../../\" : REDIRECT_URL}PDF/${fileName}`;\r\n })\r\n .catch((e) =>\r\n console.log(\"Error Form GetScanDocHistoryDetails ====>\", e)\r\n );\r\n })\r\n .catch((e) => console.log(\"Error Form GetScandocManager ====>\", e));\r\n return url;\r\n};\r\n\r\nconst handleStructuredClone = (data) => {\r\n return JSON.parse(JSON.stringify(data));\r\n};\r\n\r\nconst handleGetSubjectPropertyAddress = async (LoanId) => {\r\n return await handleAPI({\r\n name: \"getloandetails\",\r\n params: {\r\n LoanId,\r\n },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response || '{\"contactinfo\":[{}]}');\r\n\r\n let {\r\n subjectaddress: subjectAddress = \"\",\r\n subjectcity: subjectCity = \"\",\r\n subjectstate: subjectState = \"\",\r\n subjectzip: subjectZip = \"\",\r\n ssn = \"\",\r\n firstname = \"\",\r\n lastname = \"\",\r\n PhoneNumber = \"\",\r\n } = response[\"contactinfo\"][0];\r\n\r\n return {\r\n subjectAddress,\r\n subjectCity,\r\n subjectState,\r\n subjectZip,\r\n ssn,\r\n firstname,\r\n lastname,\r\n PhoneNumber,\r\n };\r\n })\r\n .catch((e) => console.error(\"Error Form getloandetails ====> \", e));\r\n};\r\nconst handleGetActiveLoan = async (sessionid) => {\r\n return await handleAPI({\r\n name: \"CheckActiveLoans\",\r\n params: { sessionid },\r\n })\r\n .then((response) => {\r\n let parseXMLArr = [];\r\n if (response.indexOf(\"root\") > -1) {\r\n let parseXML = new XMLParser().parseFromString(response, \"text/xml\");\r\n parseXMLArr = parseXML[\"children\"].map((row) => {\r\n return row[\"attributes\"];\r\n });\r\n parseXMLArr = parseXMLArr.filter(\r\n (loanData) => loanData[\"status\"] == \"Active\"\r\n );\r\n return {\r\n activeLoanCount: parseXMLArr?.length,\r\n activeLoanId: parseXMLArr[0]?.[\"LoanId\"] || 0,\r\n };\r\n }\r\n })\r\n .catch((e) => log(\"Error from CheckActiveLoans ====>\", e));\r\n};\r\nconst handleSelectLoanProgram = async (LoanId, callBack = () => {}, status) => {\r\n //return; // commented for now as it causing issues\r\n if (![\"selected\", \"selectingInProgress\"].includes(status)) {\r\n callBack(\"selectingInProgress\");\r\n return await handleAPI({\r\n name: \"RunLoanSelection_NewLoan\",\r\n params: {\r\n LoanId,\r\n },\r\n })\r\n .then((response) => {\r\n setTimeout(() => {\r\n callBack(\"selected\");\r\n }, 1000);\r\n return \"selected\";\r\n })\r\n .catch((err) =>\r\n console.error(\"Error form RunLoanSelection_NewLoan ====> \", err)\r\n );\r\n }\r\n};\r\nconst WrappedTextView = ({ text, maxLength }) => {\r\n return text.length > maxLength ? text.substring(0, maxLength) + \"...\" : text;\r\n};\r\nfunction isDate(dateStr) {\r\n let datePat = /^(\\d{1,2})(\\/|-)(\\d{1,2})(\\/|-)(\\d{4})$/,\r\n matchArray = dateStr.match(datePat); // is the format ok?\r\n\r\n if (matchArray == null) {\r\n datePat = /^(\\d{1,2})(\\/|-)(\\d{1,2})(\\/|-)(\\d{2})$/;\r\n matchArray = dateStr.match(datePat); // is the format ok?\r\n if (matchArray == null) {\r\n return false;\r\n }\r\n }\r\n\r\n let month = matchArray[1], // p@rse date into variables\r\n day = matchArray[3],\r\n year = matchArray[5];\r\n if (month < 1 || month > 12) {\r\n return false;\r\n }\r\n\r\n if (day < 1 || day > 31) {\r\n return false;\r\n }\r\n\r\n if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {\r\n return false;\r\n }\r\n\r\n if (month == 2) {\r\n // check for february 29th\r\n var isleap = year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);\r\n if (day > 29 || (day == 29 && !isleap)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction calculateEmploymentYears(EmpFrom, EmpTo) {\r\n try {\r\n if (isDate(EmpFrom) && isDate(EmpTo)) {\r\n return GetYearDiff(new Date(EmpFrom), new Date(EmpTo));\r\n }\r\n } catch (e) {\r\n console.error(\"CalculateEmploymentYears ===> \" + e.message);\r\n }\r\n}\r\nfunction GetYearDiff(date1, date2) {\r\n try {\r\n let months = monthDiff(date1, date2);\r\n months = (months / 12).toFixed(1);\r\n if (months < 0) {\r\n months = 0;\r\n }\r\n return months;\r\n } catch (e) {\r\n console.error(\"GetYearDiff ===> \" + e.message);\r\n }\r\n}\r\nfunction monthDiff(d1, d2) {\r\n let months;\r\n months = (d2.getFullYear() - d1.getFullYear()) * 12;\r\n months += d2.getMonth() - d1.getMonth();\r\n return months;\r\n}\r\nfunction convertToArrayCategory(arr) {\r\n let categories = [];\r\n\r\n const ranges = [\r\n { min: 0, max: 3 },\r\n { min: 3, max: 7 },\r\n { min: 7, max: 11 },\r\n { min: 11, max: 15 },\r\n { min: 15, max: 19 },\r\n { min: 19, max: 23 },\r\n { min: 23, max: 27 },\r\n ];\r\n\r\n for (let i = 0; i < arr.length; i += 4) {\r\n let set = arr.slice(i, i + 4);\r\n ranges.forEach((range, index) => {\r\n if (set.some((val) => val >= range.min && val < range.max)) {\r\n categories.push(index);\r\n }\r\n });\r\n }\r\n\r\n return [...new Set(categories)];\r\n}\r\nconst testSSN = (value = \"\") => {\r\n return value?.toString().replace(/-/g, \"\")[\"length\"] !== 9;\r\n};\r\n\r\nconst getKeyByValue = (object, value) => {\r\n return Object.entries(object).find(([key, val]) => val === value)?.[0];\r\n};\r\nfunction formatPercentage(value, prefix = 4) {\r\n const floatValue = parseFloat(value || 0);\r\n if (!isNaN(floatValue)) {\r\n const formattedPercentage = floatValue.toFixed(prefix) + \"%\";\r\n return formattedPercentage;\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\n// --- Start App Update Check ---\r\n\r\nconst checkForUpdates = async (isPrompt) => {\r\n handleAPI({ name: \"GetGoDirectVersion\", params: {}, method: \"GET\" })\r\n .then((response) => {\r\n response = JSON[\"parse\"](response);\r\n let { latestVersion } = response[\"Table\"][0],\r\n { version: appVersion } = packageJson;\r\n\r\n appVersion = Number(appVersion.replaceAll(\".\", \"\"));\r\n latestVersion = Number(latestVersion.replaceAll(\".\", \"\"));\r\n // console.log({ appVersion, latestVersion });\r\n\r\n if (latestVersion > appVersion) {\r\n if (isPrompt) {\r\n showUpdatePrompt();\r\n } else {\r\n startUpdate();\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n console.error(\"Error from GetGoDirectVersion ===> \", err);\r\n });\r\n};\r\n\r\nconst showUpdatePrompt = () => {\r\n Alert.alert(\r\n \"Update Available\",\r\n \"A new version of the app is available. Would you like to update?\",\r\n [\r\n {\r\n text: \"Cancel\",\r\n style: \"cancel\",\r\n },\r\n {\r\n text: \"Update\",\r\n onPress: startUpdate,\r\n },\r\n ]\r\n );\r\n};\r\n\r\nconst startUpdate = async () => {\r\n try {\r\n const storeUrl = ios\r\n ? \"itms-apps://itunes.apple.com/app/id6458930558\"\r\n : \"market://details?id=com.directcorp.godirectmortgage\";\r\n\r\n const supported = await Linking.canOpenURL(storeUrl);\r\n\r\n try {\r\n BackHandler.exitApp();\r\n } catch (error) {}\r\n\r\n if (supported) {\r\n Linking.openURL(storeUrl).catch((err) => {\r\n console.error(\"Failed to open store:\", err);\r\n Alert.alert(\"Error\", \"Could not open the app store.\");\r\n });\r\n } else {\r\n Alert.alert(\"Error\", \"Could not open the app store.\");\r\n }\r\n } catch (e) {\r\n console.error(\"Error during update:\", e);\r\n } finally {\r\n }\r\n};\r\n\r\n// --- End App Update Check ---\r\n\r\nexport {\r\n handleAPI,\r\n FormatPhoneLogin,\r\n handleOpenURL,\r\n validateEmail,\r\n log,\r\n handleCreateLoanOnly,\r\n handleSessionCheck,\r\n handleUserDetails,\r\n formatCurrency,\r\n roundNumber,\r\n cleanValue,\r\n numberWithCommas,\r\n getQueryString,\r\n queryStringToObject,\r\n updateWebURL,\r\n getQueryStringURL,\r\n removeDuplicates,\r\n formatDateTimeNew,\r\n formatSSN,\r\n handleStartNewLoan,\r\n handleGetEmpDetails,\r\n groupByKey,\r\n handleTrackGA4Events,\r\n isFloat,\r\n handleLogDWCallToActionEventParent,\r\n handleGetBrowserName,\r\n sortByKey,\r\n sortByKeyNumber,\r\n handleGetButtonText,\r\n handleGetStoredCredential,\r\n handleSetStoredCredential,\r\n handleCreateNewSession,\r\n handleCheckAlreadyLogIn,\r\n getNextNoYear,\r\n handleGetZipCodeDetails,\r\n handleOpenPageURL,\r\n generateFingerprint,\r\n getInitials,\r\n getObjectsWithKeyword,\r\n generateBoxShadowStyle,\r\n capitalizeFirstLetter,\r\n handleGetPlatformName,\r\n calculateAge,\r\n handleOpenScanDocFile,\r\n handleStructuredClone,\r\n handleGetSubjectPropertyAddress,\r\n handleGetActiveLoan,\r\n handleSelectLoanProgram,\r\n WrappedTextView,\r\n calculateEmploymentYears,\r\n convertToArrayCategory,\r\n testSSN,\r\n getKeyByValue,\r\n formatPercentage,\r\n checkForUpdates,\r\n};\r\n","import { Text } from \"react-native\";\r\n\r\nimport { web } from \"./Platform\";\r\n\r\nexport default function CustomText(props) {\r\n let {\r\n children,\r\n style = {},\r\n bold,\r\n onPress,\r\n italic,\r\n PlayFair,\r\n rockWell,\r\n fontName = \"\",\r\n } = props;\r\n try {\r\n if (!style[\"color\"]) style[\"color\"] = \"#3b3c41\";\r\n } catch (error) {\r\n style = (style || []).reduce((result, obj) => {\r\n return { ...result, ...obj };\r\n }, {});\r\n if (!style[\"color\"]) style[\"color\"] = \"#3b3c41\";\r\n }\r\n let fontFamily = \"OpenSansRegular\",\r\n webStyle = {};\r\n if (bold) fontFamily = \"OpenSansBold\";\r\n if (italic) fontFamily = \"OpenSansItalic\";\r\n if (bold && italic) fontFamily = \"OpenBoldItalic\";\r\n if (PlayFair) fontFamily = \"PlayFair\";\r\n if (rockWell) fontFamily = \"Rockwell-Bold\";\r\n if (fontName) fontFamily = fontName;\r\n\r\n if (web) {\r\n fontFamily = `\"Helvetica Neue\",Helvetica,Arial,sans-serif`; //fontFamily.replace(\"OpenSans\", \"Helvetica\");\r\n if (bold) webStyle[\"fontWeight\"] = \"bold\";\r\n if (italic) webStyle[\"fontStyle\"] = \"italic\";\r\n if (PlayFair) {\r\n //fontFamily = \"'Open Sans'\";\r\n fontFamily = \"'Helvetica Neue', Helvetica, Arial, sans-serif\";\r\n webStyle[\"fontSize\"] = style[\"fontSize\"] || \"14px\";\r\n }\r\n if (rockWell) fontFamily = \"'Rockwell'\";\r\n if (fontName.toLowerCase().includes(\"roboto\")) fontFamily = \"'Roboto'\";\r\n\r\n if (fontName == \"Inter\") {\r\n fontFamily = '\"segoe ui\", Inter, Tahoma, Geneva, Verdana, sans-serif';\r\n }\r\n }\r\n\r\n bold = bold ? bold : false;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { Platform, TextInput } from \"react-native\";\r\nimport { ios, web } from \"./Platform\";\r\nimport { capitalizeFirstLetter, cleanValue } from \"./CommonFunctions\";\r\n\r\nexport default function CustomTextInput(props) {\r\n let {\r\n style,\r\n onChangeText,\r\n value,\r\n placeholder,\r\n isCurrency = false,\r\n keyboardType,\r\n secureTextEntry,\r\n border,\r\n onBlur = () => {},\r\n onKeyPress = () => {},\r\n onFocus = () => {},\r\n ref,\r\n formatZero = false,\r\n maxLength = null,\r\n } = props;\r\n\r\n keyboardType = isCurrency ? \"numeric\" : keyboardType;\r\n\r\n let { autoCapitalize } = props;\r\n\r\n const [InputStyle, setInputStyle] = useState(false);\r\n const [isFocused, setIsFocused] = useState(false);\r\n const [hoverStyle] = useState(\r\n Platform.select({\r\n ios: {\r\n shadowColor: \"rgba(0, 0, 0, 0.4)\",\r\n shadowOffset: { width: 0, height: 2 },\r\n shadowOpacity: 0.8,\r\n shadowRadius: 4,\r\n },\r\n android: {\r\n elevation: 4,\r\n },\r\n default: {\r\n borderColor: \"#66afe9\",\r\n outline: 0,\r\n WebkitBoxShadow:\r\n \"inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\",\r\n boxShadow:\r\n \"inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\",\r\n },\r\n })\r\n );\r\n const textInputRef = useRef(null);\r\n const [iValue, setIValue] = useState(value || \"\");\r\n\r\n if (\r\n [\r\n \"First Name\",\r\n \"Nickname\",\r\n \"Middle Name\",\r\n \"Last Name\",\r\n \"Employer Name\",\r\n \"HR Contact Person\",\r\n \"Payor Name\",\r\n \"Name\",\r\n ].includes(props[\"label\"])\r\n ) {\r\n autoCapitalize = \"words\";\r\n }\r\n\r\n useEffect(() => {\r\n setIValue(value);\r\n }, [value]);\r\n\r\n return (\r\n {\r\n if (\r\n props[\"charLength\"] &&\r\n props[\"charLength\"] < text?.toString().length\r\n ) {\r\n return;\r\n }\r\n\r\n if (keyboardType == \"float\" || isCurrency) {\r\n text = text\r\n .replace(/[^\\d.]/g, \"\")\r\n .split(\".\")\r\n .slice(0, 2)\r\n .join(\".\");\r\n } else if ([\"numeric\", \"phone-pad\"].includes(keyboardType)) {\r\n text = text.replace(/\\D/g, \"\");\r\n } else if (placeholder.includes(\"MM/DD/YYYY\") && false) {\r\n text = text.replace(/[^0-9\\/]/g, \"\");\r\n if (text.length > 2 && text[2] !== \"/\") {\r\n text = text.slice(0, 2) + \"/\" + text.slice(2);\r\n }\r\n if (text.length > 5 && text[5] !== \"/\") {\r\n text = text.slice(0, 5) + \"/\" + text.slice(5);\r\n }\r\n }\r\n\r\n setIValue(text);\r\n onChangeText(text);\r\n }}\r\n value={\r\n (isCurrency || formatZero) && isFocused // For Amount Field - Remove formatting\r\n ? cleanValue(iValue) == 0\r\n ? \"\"\r\n : iValue?.toString()?.replaceAll(\"$\", \"\").replaceAll(\",\", \"\")\r\n : (keyboardType == \"phone-pad\" || maxLength == 10) && isFocused // For Cellphone Field - Remove formatting\r\n ? iValue?.toString().replace(/[(),\\- ]/g, \"\")\r\n : maxLength == 9 && isFocused // For SSN Field - Remove formatting\r\n ? iValue?.toString().replace(/-/g, \"\")\r\n : iValue || \"\"\r\n }\r\n maxLength={maxLength ? maxLength + (!isFocused ? 5 : 0) : null}\r\n placeholder={placeholder || \"\"}\r\n keyboardType={\r\n keyboardType == \"float\" ? \"numeric\" : keyboardType || \"default\"\r\n }\r\n autoCapitalize={autoCapitalize}\r\n secureTextEntry={secureTextEntry}\r\n placeholderTextColor=\"#999\"\r\n onBlur={(e) => {\r\n let val = iValue;\r\n if (web && autoCapitalize === \"words\") {\r\n val = capitalizeFirstLetter(val);\r\n }\r\n try {\r\n setIValue((val || \"\").toString().trim());\r\n onChangeText((val || \"\").toString().trim());\r\n } catch (e) {}\r\n\r\n onBlur(e);\r\n setIsFocused(false);\r\n setInputStyle(false);\r\n }}\r\n onFocus={(e) => {\r\n if (web) {\r\n setInputStyle(true);\r\n }\r\n setIsFocused(true);\r\n onFocus(e);\r\n }}\r\n onKeyPress={(e) => {\r\n if (web) {\r\n if (\r\n (e.keyCode === 32 && !value) ||\r\n ([109, 189].includes(e.keyCode) &&\r\n ![\"Email or Cell Phone\", \"Email Address\"].includes(placeholder))\r\n ) {\r\n e.preventDefault();\r\n }\r\n }\r\n onKeyPress(e);\r\n }}\r\n />\r\n );\r\n}\r\n","import { useState, useEffect } from \"react\";\r\nimport { Keyboard } from \"react-native\";\r\nimport { ios } from \"./Platform\";\r\n\r\nconst useKeyboardHeight = () => {\r\n const [keyboardHeight, setKeyboardHeight] = useState(0);\r\n\r\n useEffect(() => {\r\n const keyboardEvent = ios ? \"keyboardWill\" : \"keyboardDid\";\r\n\r\n const keyboardWillShowListener = Keyboard.addListener(\r\n `${keyboardEvent}Show`,\r\n (event) => {\r\n setKeyboardHeight(event.endCoordinates.height + 5);\r\n }\r\n );\r\n\r\n const keyboardDidHideListener = Keyboard.addListener(\r\n `${keyboardEvent}Hide`,\r\n () => {\r\n setKeyboardHeight(0);\r\n }\r\n );\r\n\r\n return () => {\r\n keyboardWillShowListener.remove();\r\n keyboardDidHideListener.remove();\r\n };\r\n }, []);\r\n\r\n return keyboardHeight;\r\n};\r\n\r\nexport default useKeyboardHeight;\r\n","import { Platform } from \"react-native\";\r\n\r\nlet web = Platform.OS === \"web\",\r\n android = Platform.OS === \"android\",\r\n ios = Platform.OS === \"ios\";\r\n\r\nexport { web, android, ios };\r\n","import { useState, useEffect, useRef } from \"react\";\r\nimport {\r\n KeyboardAvoidingView,\r\n StyleSheet,\r\n RefreshControl,\r\n Keyboard,\r\n ScrollView,\r\n View,\r\n} from \"react-native\";\r\nimport { web, android, ios } from \"./Platform\";\r\nimport { Animated } from \"react-native\";\r\nimport { KeyboardAwareScrollView } from \"react-native-keyboard-aware-scroll-view\";\r\n\r\nconst useKeyboardStatus = () => {\r\n const [enabled, setEnabled] = useState(false);\r\n\r\n useEffect(() => {\r\n const showSubscription = Keyboard.addListener(\"keyboardWillShow\", () => {\r\n setEnabled(true);\r\n });\r\n const hideSubscription = Keyboard.addListener(\"keyboardWillHide\", () => {\r\n setEnabled(false);\r\n });\r\n const keyboardDidShow = Keyboard.addListener(\"keyboardDidShow\", () => {\r\n setEnabled(false);\r\n });\r\n\r\n return () => {\r\n showSubscription.remove();\r\n hideSubscription.remove();\r\n keyboardDidShow.remove();\r\n };\r\n }, []);\r\n\r\n return enabled;\r\n};\r\n\r\nconst ScrollContainer = (props) => {\r\n const {\r\n children,\r\n scrollToTop = false,\r\n setScrollToTop = () => {},\r\n pullDownRefresh = false,\r\n onScroll = () => {},\r\n showScrollBar = false,\r\n } = props;\r\n\r\n const scrollViewRef = useRef(null);\r\n const [refreshing, setRefreshing] = useState(false);\r\n\r\n useEffect(() => {\r\n if (scrollToTop && !web) {\r\n setScrollToTop(false);\r\n if (scrollToTop === 999) {\r\n setTimeout(() => {\r\n scrollViewRef.current.scrollToEnd({ animated: true });\r\n }, 0);\r\n } else {\r\n try {\r\n scrollViewRef.current.scrollToOffset({ offset: 0, animated: true });\r\n } catch (error) {\r\n scrollViewRef.current.scrollTo({ x: 0, y: 0, animated: true });\r\n }\r\n }\r\n } else if (scrollToTop && web) {\r\n setScrollToTop(false);\r\n\r\n try {\r\n if (scrollToTop === 999) {\r\n setTimeout(() => {\r\n document.querySelector(\r\n 'div[data-testid=\"scrollContainer\"]'\r\n ).scrollTop = document.querySelector(\r\n 'div[data-testid=\"scrollContainer\"]'\r\n ).scrollHeight;\r\n }, 0);\r\n } else {\r\n document\r\n .querySelector('div[data-testid=\"scrollContainer\"]')\r\n .scrollTo({\r\n top: 0,\r\n behavior: \"smooth\",\r\n });\r\n }\r\n } catch (error) {}\r\n }\r\n }, [props]);\r\n\r\n const onRefresh = async () => {\r\n if (pullDownRefresh) {\r\n setRefreshing(true);\r\n await pullDownRefresh();\r\n setRefreshing(false);\r\n }\r\n };\r\n\r\n const [keyboardVerticalOffset, setKeyboardVerticalOffset] = useState(0),\r\n viewRef = useRef(null),\r\n onLayout = (event) => {\r\n if (viewRef.current) {\r\n viewRef.current.measure((x, y, width, height, pageX, pageY) => {\r\n if (keyboardVerticalOffset !== pageY) {\r\n setKeyboardVerticalOffset(pageY + 20);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {ios ? (\r\n \r\n \r\n \r\n )\r\n }\r\n ref={scrollViewRef}\r\n showsVerticalScrollIndicator={false}\r\n showsHorizontalScrollIndicator={false}\r\n keyboardShouldPersistTaps=\"handled\"\r\n alwaysBounceVertical={!true}\r\n contentContainerStyle={[styles.scrollContent]}\r\n >\r\n {children}\r\n \r\n \r\n \r\n ) : android ? (\r\n <>\r\n \r\n \r\n )\r\n }\r\n ref={scrollViewRef}\r\n onScroll={onScroll}\r\n contentContainerStyle={[\r\n styles.scrollContent,\r\n // {\r\n // paddingBottom:\r\n // (keyBoardEnabled ? keyboardDetails[\"height\"] || 300 : 0) +\r\n // (android ? 90 : 0),\r\n // },\r\n ]}\r\n keyboardShouldPersistTaps=\"handled\"\r\n showsVerticalScrollIndicator={false}\r\n showsHorizontalScrollIndicator={false}\r\n alwaysBounceVertical={!true}\r\n >\r\n {children}\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n )\r\n }\r\n showsVerticalScrollIndicator={showScrollBar}\r\n // showsHorizontalScrollIndicator={false}\r\n style={props[\"style\"] || {}}\r\n >\r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n // flex: 1,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n body: {\r\n flex: 1,\r\n },\r\n scrollContent: {\r\n flexGrow: 1,\r\n paddingBottom: android ? 90 : 0,\r\n },\r\n});\r\n\r\nexport default ScrollContainer;\r\n","import React, { useState, useRef, useEffect, createContext, memo } from \"react\";\r\nimport {\r\n View,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Text,\r\n Keyboard,\r\n Platform,\r\n Image,\r\n Modal,\r\n Animated,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport AntDesign from \"react-native-vector-icons/AntDesign\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport CustomText from \"./CustomText\";\r\nimport CustomTextInput from \"./CustomTextInput\";\r\nimport { WebView } from \"react-native-webview\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport { web, android, ios } from \"./Platform\";\r\nimport ArrowSpinner from \"./ArrowSpinner\";\r\nimport Entypo from \"react-native-vector-icons/Entypo\";\r\nimport EvilIcons from \"react-native-vector-icons/EvilIcons\";\r\nimport { getQueryString } from \"../accessories/CommonFunctions.js\";\r\nimport { KeyboardAvoidingView } from \"react-native\";\r\nimport useKeyboardHeight from \"./KeyboardHeight\";\r\nimport ScrollContainer from \"./ScrollContainer\";\r\n\r\nconst Separator = () => ;\r\n//======================================================\r\nconst Option = ({\r\n onPress,\r\n text,\r\n value,\r\n style = {},\r\n autoFocus = 0,\r\n type = null,\r\n textStyle = {},\r\n iconSize = 21,\r\n}) => {\r\n const ref = useRef();\r\n useEffect(() => {\r\n if (autoFocus) ref?.current?.focus();\r\n }, [text]);\r\n\r\n return (\r\n <>\r\n {web ? (\r\n {\r\n let { keyCode } = event;\r\n if (keyCode === 32 || keyCode === 13) {\r\n event.preventDefault();\r\n onPress();\r\n }\r\n }}\r\n >\r\n \r\n {text}\r\n \r\n\r\n \r\n {value && (\r\n \r\n )}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {text}\r\n \r\n\r\n \r\n {value && (\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n//======================================================\r\nconst Button = ({\r\n onPress,\r\n title,\r\n style = {},\r\n disabled = false,\r\n buttonType = \"\",\r\n}) => {\r\n return (\r\n <>\r\n {web ? (\r\n {\r\n let { keyCode } = event;\r\n if (keyCode === 32 || keyCode === 13) {\r\n event.preventDefault();\r\n onPress();\r\n }\r\n }}\r\n >\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst ModalButton = ({\r\n onPress,\r\n bold = true,\r\n title,\r\n style = {},\r\n textStyle = {},\r\n disabled = false,\r\n disableBackgroundColor = \"#6c757d\",\r\n icon = null,\r\n buttonType = \"\",\r\n}) => (\r\n !disabled && onPress()}\r\n style={[\r\n styles.buttonContainer,\r\n style,\r\n disabled && { backgroundColor: disableBackgroundColor, opacity: 0.8 },\r\n disabled && web && { cursor: \"not-allowed\" },\r\n ]}\r\n >\r\n \r\n {icon && icon}\r\n {title}\r\n \r\n \r\n);\r\n\r\n//======================================================\r\nconst InputBox = (props) => {\r\n const {\r\n label,\r\n onChangeText,\r\n value,\r\n keyboardType = \"default\",\r\n placeholder,\r\n ref,\r\n secureTextEntry,\r\n validate = false,\r\n border,\r\n onKeyPress = () => {},\r\n disabled = false,\r\n width = \"100%\",\r\n forceValidation = false,\r\n formatZero = false,\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {label || \"\"}\r\n \r\n onChangeText(text)}\r\n secureTextEntry={secureTextEntry || false}\r\n value={value || \"\"}\r\n placeholder={placeholder || \"\"}\r\n style={styles.inputBox}\r\n autoCapitalize={\"none\"}\r\n ref={ref || null}\r\n {...props}\r\n onKeyPress={onKeyPress}\r\n keyboardType={keyboardType || \"default\"}\r\n />\r\n \r\n );\r\n};\r\n//======================================================\r\nconst Title = ({ text, style = {} }) => (\r\n <>\r\n {text && (\r\n \r\n {text}\r\n \r\n )}\r\n \r\n);\r\n//======================================================\r\nconst LoanId = ({ Id, Show }) => (\r\n \r\n {`Loan: ${Id}`}\r\n \r\n);\r\n//======================================================\r\nconst IconButton = (props) => {\r\n let {\r\n onPress = () => {},\r\n title,\r\n style = {},\r\n textStyle = {},\r\n disable = false,\r\n autoFocus = false,\r\n buttonType = \"PrimaryColor\",\r\n loading = false,\r\n sStyle = {},\r\n } = props;\r\n const [isHovered, setIsHovered] = useState(false),\r\n touchableRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (autoFocus) touchableRef.current.focus();\r\n }, []);\r\n\r\n if (web) {\r\n useEffect(() => {\r\n const handleKeyPress = (event) => {\r\n if (event.nativeEvent.key === \" \") {\r\n onPress();\r\n }\r\n };\r\n try {\r\n document?.removeEventListener(\"keydown\", handleKeyPress);\r\n document?.addEventListener(\"keydown\", handleKeyPress);\r\n return () => {\r\n document?.removeEventListener(\"keydown\", handleKeyPress);\r\n };\r\n } catch (error) {}\r\n }, [props]);\r\n }\r\n\r\n return (\r\n {\r\n setIsHovered(true);\r\n }}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onFocus={() => setIsHovered(true)}\r\n onBlur={() => setIsHovered(false)}\r\n onPress={(e) => {\r\n Keyboard.dismiss();\r\n if (!disable) onPress(e);\r\n }}\r\n ref={touchableRef}\r\n style={[\r\n styles.iconButtonContainer,\r\n disable && { opacity: 0.8 },\r\n style || {},\r\n {\r\n backgroundColor: buttonType == \"secondary\" ? \"#fff\" : \"#508BC9\",\r\n },\r\n isHovered && buttonType != \"secondary\" && styles.iconButtonHovered,\r\n isHovered && buttonType == \"secondary\" && styles.iconButtonHovered1,\r\n ]}\r\n >\r\n \r\n \r\n {loading ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n//======================================================\r\nconst WebPageView = (props) => {\r\n let {\r\n url,\r\n onLoad = () => {},\r\n onMessage: onMessageProp = () => {},\r\n injectedJavaScript = \"\",\r\n } = props;\r\n const webViewRef = useRef(null);\r\n\r\n if (web && !__DEV__) {\r\n url = url\r\n .replace(\"https://www.directcorp.com/\", \"../../../\")\r\n .replace(\"https://www.solutioncenter.biz/\", \"../../../\")\r\n .replace(\"http://www.solutioncenter.biz/\", \"../../../\");\r\n } else {\r\n url = url.replace(\"../../../\", REDIRECT_URL);\r\n }\r\n\r\n if (web) {\r\n return (\r\n \r\n );\r\n }\r\n const [pageHeight, setPageHeight] = useState(Dimensions.get(\"window\").height);\r\n const onMessage = (event) => {\r\n const message = event.nativeEvent.data;\r\n const parsedData = JSON.parse(message);\r\n\r\n if (parsedData.type === \"error\") {\r\n console.log(\"Error from WebPageView ===> \", parsedData.error);\r\n }\r\n if (parsedData && parsedData.height) {\r\n setPageHeight(parsedData.height); // Set the height state\r\n }\r\n onMessageProp(event);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nconst DMCImage = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n//======================================================\r\nconst context = createContext();\r\n//======================================================\r\nconst Spinner = memo(({ text }) => {\r\n return (\r\n \r\n \r\n \r\n {text || \" Loading...\"}\r\n \r\n \r\n );\r\n});\r\nconst SmallSpinner = memo(() => {\r\n return (\r\n \r\n \r\n Loading...\r\n \r\n );\r\n});\r\n//======================================================\r\nconst AccordionItem = ({\r\n children,\r\n title,\r\n isExpand = false,\r\n isAccordion = true,\r\n style = {},\r\n titleStyle = {},\r\n}) => {\r\n const [expanded, setExpanded] = useState(isExpand);\r\n function toggleItem() {\r\n setExpanded(!expanded);\r\n }\r\n return (\r\n \r\n {}}\r\n >\r\n \r\n {isAccordion && (\r\n \r\n )}\r\n\r\n {title}\r\n \r\n \r\n {expanded && {children}}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AdditionalPage = ({\r\n handleBack,\r\n title,\r\n children,\r\n rightContent = ,\r\n isClose = false,\r\n isNeedBack = true,\r\n titleFontSize = 22,\r\n form = null,\r\n}) => {\r\n const keyboardHeight = useKeyboardHeight() || 0;\r\n\r\n const bodyCon = (\r\n <>\r\n \r\n \r\n {isNeedBack && !web && (\r\n \r\n \r\n {isClose ? (\r\n <>\r\n Close\r\n \r\n ) : (\r\n <>\r\n Back\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n {rightContent}\r\n \r\n \r\n {children}\r\n \r\n );\r\n\r\n return (\r\n \r\n {form === \"calculator\" ? (\r\n bodyCon\r\n ) : (\r\n {bodyCon}\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst DrawerView = (props) => {\r\n const {\r\n isShow = false,\r\n body = <>,\r\n onClose = () => {},\r\n bodyStyle = {},\r\n bodyName = null,\r\n From = \"\",\r\n isSmallScreen = false,\r\n } = props,\r\n keyboardHeight = useKeyboardHeight() || 0,\r\n isMobileWeb = Dimensions.get(\"window\").width <= 480; //|| !isSmallScreen;\r\n\r\n return (\r\n \r\n onClose()}\r\n >\r\n \r\n \r\n \r\n {From == \"StartScreen\" ? (\r\n <>\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n )}\r\n \r\n \r\n {body}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nconst FloatPage = (props) => {\r\n const {\r\n children,\r\n setFloatPage = () => {},\r\n needHeaderContent = false,\r\n preventClose = false,\r\n style = null,\r\n } = props;\r\n\r\n const slideAnimation = useRef(new Animated.Value(3000)).current;\r\n const isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n useEffect(() => {\r\n Animated.timing(slideAnimation, {\r\n toValue: 0,\r\n duration: 500,\r\n useNativeDriver: false,\r\n }).start();\r\n }, [slideAnimation]);\r\n\r\n const handleClose = () => {\r\n Animated.timing(slideAnimation, {\r\n toValue: 3000,\r\n duration: 500,\r\n useNativeDriver: false,\r\n }).start();\r\n setTimeout(() => {\r\n setFloatPage(null);\r\n }, 500);\r\n };\r\n const handleCloseDrawer = () => {\r\n if (!preventClose) {\r\n handleClose();\r\n } else {\r\n setFloatPage();\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {children ? (\r\n \r\n \r\n \r\n {needHeaderContent && (\r\n \r\n \r\n \r\n \r\n Close\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n {children}\r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst AddRemoveButton = ({ onPress, text, isAdd = false }) => {\r\n return (\r\n <>\r\n {web ? (\r\n {\r\n let { keyCode } = event;\r\n if (keyCode === 32 || keyCode === 13) {\r\n event.preventDefault();\r\n onPress();\r\n }\r\n }}\r\n >\r\n \r\n {text}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {text}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\nconst PageBottom = () => {\r\n return Page Bottom;\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n spinnerContainer: {\r\n flex: 1,\r\n justifyContent: \"center\",\r\n textAlign: \"center\",\r\n paddingTop: 30,\r\n // backgroundColor: \"#ecf0f1\",\r\n padding: 8,\r\n height: \"100%\",\r\n },\r\n spinnerTextStyle: {\r\n // color: \"green\",\r\n top: \"49%\",\r\n left: \"52%\",\r\n position: \"absolute\",\r\n },\r\n separator: {\r\n marginVertical: 12,\r\n },\r\n title: {\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 25 : 15,\r\n color: \"#0f203a\",\r\n },\r\n loanId: {\r\n marginBottom: 10,\r\n color: \"#0f203a\",\r\n flexDirection: \"row\",\r\n alignSelf: \"flex-end\",\r\n },\r\n ShowLoanId: {\r\n marginBottom: 10,\r\n color: \"#0f203a\",\r\n flexDirection: \"row\",\r\n alignSelf: \"flex-end\",\r\n display: \"flex\",\r\n },\r\n HideLoanId: {\r\n marginBottom: 10,\r\n color: \"#0f203a\",\r\n flexDirection: \"row\",\r\n alignSelf: \"flex-end\",\r\n display: \"none\",\r\n },\r\n buttonContainer: {\r\n backgroundColor: \"#295b9a\",\r\n\r\n paddingHorizontal: 20,\r\n borderRadius: 5,\r\n paddingVertical: 6,\r\n marginLeft: 8,\r\n height: 35,\r\n justifyContent: \"center\",\r\n },\r\n buttonText: {\r\n fontSize: 20,\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n },\r\n optionContainer: {\r\n // backgroundColor: \"#f2f5f8\",\r\n borderRadius: 20,\r\n paddingVertical: web ? 6 : 5,\r\n paddingHorizontal: 12,\r\n borderColor: \"#043888\",\r\n borderWidth: 2,\r\n marginBottom: web ? 25 : 20,\r\n flexDirection: \"row\",\r\n },\r\n optionText: {\r\n fontSize: web ? 22 : 18,\r\n color: \"#043888\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n flex: 1,\r\n flexShrink: 1,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n // outlineWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n height: 34,\r\n },\r\n // ...(web && {\r\n // \":focus\": { \"outline-width\": 0, borderWidth: 0 },\r\n // \":focus-visible\": { \"outline-width\": 0, borderWidth: 0 },\r\n // }),\r\n },\r\n inputBoxLabel: {\r\n // display: \"inline\",\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n flex: 1,\r\n },\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 8,\r\n marginBottom: 20,\r\n minHeight: 50,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#508bc9\",\r\n borderColor: \"#508bc9\",\r\n paddingVertical: web ? 10 : 8,\r\n paddingHorizontal: web ? 20 : 15,\r\n borderWidth: 3,\r\n alignSelf: \"flex-start\",\r\n borderRadius: 5,\r\n marginTop: 3,\r\n },\r\n\r\n iconButtonHovered: {\r\n borderColor: \"#295B9A\",\r\n //background: \"#3872AF\",\r\n backgroundColor: \"#3872AF\",\r\n },\r\n\r\n iconButtonHovered1: {\r\n borderColor: \"#3872AF\",\r\n //background: \"#3872AF\",\r\n backgroundColor: \"#F9F9F9\",\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n fontWeight: \"700\",\r\n },\r\n accordContainer: {\r\n paddingBottom: 4,\r\n },\r\n accordHeader: {\r\n padding: 8,\r\n backgroundColor: \"#f5f5f5\",\r\n borderColor: \"#ddd\",\r\n borderWidth: 1,\r\n borderRadius: 4,\r\n borderBottomRightRadius: 0,\r\n borderBottomLeftRadius: 0,\r\n flex: 1,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n },\r\n accordTitle: {\r\n fontSize: 16,\r\n },\r\n accordBody: {\r\n padding: 12,\r\n borderColor: \"#ddd\",\r\n borderWidth: 1,\r\n borderTopWidth: 0,\r\n marginTop: -2,\r\n },\r\n pageFooter: {\r\n paddingLeft: 20,\r\n padding: 5,\r\n backgroundColor: \"rgb(48, 126, 204)\",\r\n textAlign: \"center\",\r\n color: \"rgb(255,255, 255)\",\r\n marginBottom: 10,\r\n minWidth: \"100%\",\r\n },\r\n});\r\n\r\nexport {\r\n Separator,\r\n Option,\r\n Button,\r\n InputBox,\r\n Title,\r\n LoanId,\r\n IconButton,\r\n WebPageView,\r\n context,\r\n DMCImage,\r\n Spinner,\r\n SmallSpinner,\r\n AccordionItem,\r\n AdditionalPage,\r\n ModalButton,\r\n DrawerView,\r\n FloatPage,\r\n AddRemoveButton,\r\n PageBottom,\r\n};\r\n","import { StyleSheet, Platform, StatusBar } from \"react-native\";\r\nexport default StyleSheet.create({\r\n droidSafeArea: {\r\n flex: 1,\r\n justifyContent: \"center\",\r\n },\r\n});\r\n","import React, { useRef, useState, useEffect } from \"react\";\r\nimport {\r\n StyleSheet,\r\n TouchableOpacity,\r\n View,\r\n Keyboard,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport CustomText from \"./CustomText\";\r\nimport Icon from \"react-native-vector-icons/Entypo\";\r\nimport { web } from \"./Platform\";\r\nimport { Dropdown } from \"react-native-element-dropdown/src/index.tsx\";\r\n\r\nimport { log } from \"./CommonFunctions\";\r\n\r\nconst Dropdown_ = (props) => {\r\n let {\r\n label,\r\n options,\r\n onSelect,\r\n value = null,\r\n isMap,\r\n isValid = false,\r\n disabled = false,\r\n width = \"100%\",\r\n } = props;\r\n try {\r\n if (value) {\r\n value = options.filter(\r\n (state) =>\r\n state[!isMap ? \"value\" : \"label\"].toString().toLowerCase() ===\r\n value?.toString().toLowerCase()\r\n )[0][isMap ? \"value\" : \"label\"];\r\n }\r\n } catch (error) {}\r\n const [isFocus, setIsFocus] = useState(false);\r\n const DropdownButton = useRef();\r\n const [visible, setVisible] = useState(false);\r\n const [dropdown, setDropdown] = useState({ top: 0, left: 0, opacity: 0 });\r\n\r\n const toggleDropdown = () => {\r\n visible ? setVisible(false) : openDropdown();\r\n };\r\n\r\n const openDropdown = () => {\r\n Keyboard.dismiss();\r\n DropdownButton.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setDropdown({\r\n top: py, //+ h - (android ? 55 : 30),\r\n left: _px + 15,\r\n width: _w - 30,\r\n opacity: 1,\r\n });\r\n });\r\n setVisible(true);\r\n };\r\n\r\n const dropDownWrapper = useRef();\r\n if (web) {\r\n useEffect(() => {\r\n dropDownWrapper?.current?.setNativeProps({\r\n tabIndex: -1,\r\n });\r\n }, [dropDownWrapper.current]);\r\n }\r\n\r\n const renderDropdown = () => {\r\n return (\r\n \r\n \r\n \r\n {label || \"\"}\r\n \r\n {web ? (\r\n <>\r\n {\r\n let { value, label = e.target.selectedOptions[0].text } =\r\n e.target;\r\n onSelect({ value, label });\r\n }}\r\n >\r\n {options.map((item, index) => (\r\n \r\n ))}\r\n \r\n \r\n ) : (\r\n <>\r\n {\r\n openDropdown();\r\n }}\r\n // renderItem={renderItem}\r\n style={[styles.dropdown]}\r\n placeholderStyle={[\r\n styles.placeholderStyle,\r\n {\r\n fontFamily: \"OpenSansRegular\",\r\n },\r\n ]}\r\n selectedTextStyle={[\r\n styles.selectedTextStyle,\r\n { fontFamily: \"OpenSansRegular\" },\r\n ]}\r\n data={options}\r\n labelField=\"label\"\r\n valueField=\"value\"\r\n disable={disabled}\r\n dropdownPosition={\r\n Dimensions.get(\"window\").height - 300 < dropdown.top\r\n ? \"top\"\r\n : \"bottom\"\r\n }\r\n itemTextStyle={{\r\n marginVertical: -10,\r\n color: \"#000\",\r\n fontSize: 14,\r\n fontFamily: \"OpenSansRegular\",\r\n }}\r\n activeColor=\"#0000000f\"\r\n autoScroll={false}\r\n maxHeight={300}\r\n value={value}\r\n onChange={(item) => {\r\n toggleDropdown();\r\n log(\"item\", item);\r\n onSelect(item);\r\n }}\r\n renderRightIconIcon={() => (\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 if (!disabled) toggleDropdown();\r\n }}\r\n >\r\n {renderDropdown()}\r\n {/* {!web && (\r\n <>\r\n \r\n {value || placeholder}\r\n \r\n \r\n \r\n )} */}\r\n \r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n button: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n zIndex: 1,\r\n },\r\n buttonText: {\r\n flex: 1,\r\n color: \"rgb(81, 87, 93)\",\r\n textAlign: \"center\",\r\n textAlign: \"left\",\r\n position: \"absolute\",\r\n top: 20,\r\n left: 15,\r\n },\r\n icon: {\r\n right: 20,\r\n top: 22,\r\n position: \"absolute\",\r\n },\r\n dropdown: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n width: 350,\r\n // shadowColor: \"#000000\",\r\n // shadowRadius: 4,\r\n // shadowOffset: { height: 4, width: 0 },\r\n // shadowOpacity: 0.5,\r\n borderWidth: 1,\r\n borderColor: \"#999\",\r\n },\r\n overlay: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n borderWidth: 2,\r\n },\r\n item: {\r\n borderBottomWidth: 1,\r\n borderBottomColor: \"rgba(0,0,0,.04)\",\r\n },\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n height: 35,\r\n },\r\n },\r\n\r\n dropdown: {\r\n height: 33,\r\n borderRadius: 5,\r\n paddingHorizontal: 8,\r\n width: \"100%\",\r\n backgroundColor: \"#0000000a\",\r\n },\r\n icon: {\r\n marginRight: 5,\r\n },\r\n label: {\r\n position: \"absolute\",\r\n backgroundColor: \"white\",\r\n left: 22,\r\n top: 8,\r\n zIndex: 999,\r\n paddingHorizontal: 8,\r\n fontSize: 14,\r\n },\r\n placeholderStyle: {\r\n fontSize: 16,\r\n color: \"#4b4949\",\r\n },\r\n selectedTextStyle: {\r\n fontSize: 16,\r\n color: \"#4b4949\",\r\n },\r\n iconStyle: {\r\n width: 20,\r\n height: 20,\r\n },\r\n});\r\n\r\nexport default Dropdown_;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { View, FlatList, TouchableOpacity, StyleSheet } from \"react-native\";\r\nimport { web } from \"./Platform\";\r\nimport CustomText from \"./CustomText\";\r\nimport SelectDropdown from \"react-native-select-dropdown\";\r\n\r\nconst SearchDropdown = (props) => {\r\n let {\r\n options = [],\r\n label,\r\n onSelect = () => {},\r\n value = \"\",\r\n disabled = false,\r\n } = props;\r\n\r\n const [listHeight, setListHeight] = useState(null);\r\n const [searchText, setSearchText] = useState(\"\");\r\n // const [selectedOption, setSelectedOption] = useState({ label: \"\" });\r\n const [highlightedIndex, setHighlightedIndex] = useState(0);\r\n const [isFocused, setIsFocused] = useState(false);\r\n const inputRef = useRef();\r\n const flatListRef = useRef(null);\r\n const [selectedItems, setSelectedItem] = useState({});\r\n const [filteredOption, setFilteredOption] = useState([]);\r\n useEffect(() => {\r\n try {\r\n if (true) {\r\n let option =\r\n searchText?.length > 0\r\n ? options?.filter(\r\n (item) =>\r\n item[\"label\"]\r\n .toLocaleLowerCase()\r\n .indexOf(searchText?.toLocaleLowerCase()) > -1\r\n )\r\n : options;\r\n setFilteredOption(\r\n //(option = option?.sort((a, b) => a[\"label\"].localeCompare(b[\"label\"])))\r\n option\r\n );\r\n }\r\n } catch (error) {\r\n console.error(\"error\", error);\r\n }\r\n }, [searchText]);\r\n const handleOptionPress = (item) => {\r\n onSelect(item);\r\n setIsFocused(false);\r\n setSearchText(item[\"label\"]);\r\n if (web) inputRef.current.value = item[\"label\"]?.trim();\r\n };\r\n\r\n const handleKeyPress = (event) => {\r\n let { key, target } = event;\r\n if (key === \"ArrowDown\" && highlightedIndex < options.length - 1) {\r\n setHighlightedIndex((prevIndex) => prevIndex + 1);\r\n } else if (key === \"ArrowUp\" && highlightedIndex > 0) {\r\n setHighlightedIndex((prevIndex) => prevIndex - 1);\r\n } else if (key === \"Enter\" && highlightedIndex < options.length) {\r\n handleOptionPress(filteredOption[highlightedIndex]);\r\n }\r\n if (\r\n [\"ArrowDown\", \"ArrowUp\"].indexOf(key) > -1 &&\r\n highlightedIndex < options.length - 1\r\n ) {\r\n flatListRef.current.scrollToItem({\r\n animated: true,\r\n item: filteredOption[highlightedIndex],\r\n viewPosition: 0.5,\r\n });\r\n }\r\n };\r\n useEffect(() => {\r\n let item = options.filter((item) => item.value == value);\r\n if (item.length > 0) {\r\n setSelectedItem({ id: item[\"value\"], name: item[\"label\"] });\r\n item = item[0];\r\n setSearchText(item[\"label\"]);\r\n if (web) {\r\n inputRef.current.value = item[\"label\"]?.trim();\r\n }\r\n setIsFocused(false);\r\n }\r\n if (disabled && web) {\r\n inputRef.current.style.pointerEvents = \"none\";\r\n inputRef.current.style.opacity = 0.8;\r\n }\r\n }, [value]);\r\n\r\n return (\r\n \r\n {web ? (\r\n <>\r\n \r\n \r\n {label || \"\"}\r\n \r\n \r\n {\r\n let { key, target } = event;\r\n setSearchText(target[\"value\"]);\r\n setHighlightedIndex(0);\r\n inputRef.current.value = target[\"value\"].trim();\r\n setIsFocused(true);\r\n }}\r\n onFocus={() => {\r\n setIsFocused(true);\r\n inputRef.current.setSelectionRange(\r\n 0,\r\n inputRef.current.value.length\r\n );\r\n }}\r\n onBlur={() => {\r\n setTimeout(() => {\r\n setIsFocused(false);\r\n }, 150);\r\n }}\r\n />\r\n \r\n \r\n {isFocused && !disabled && (\r\n \r\n {\r\n return (\r\n handleOptionPress(item)}\r\n >\r\n \r\n {item[\"label\"]}\r\n \r\n \r\n );\r\n }}\r\n keyExtractor={(item, index) => index.toString()}\r\n />\r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {label || \"\"}\r\n \r\n \r\n {\r\n return (\r\n item.value == value)[0]\r\n ?.label == option\r\n ? \"#fff\"\r\n : \"#111\",\r\n }}\r\n >\r\n {option}\r\n \r\n );\r\n }}\r\n search={true}\r\n disabled={disabled}\r\n defaultValueByIndex={options.indexOf(\r\n options.filter((item) => item.value == value)[0]\r\n )}\r\n searchPlaceHolder=\"Search...\"\r\n dropdownOverlayColor=\"transparent\"\r\n buttonStyle={{\r\n height: 35,\r\n borderColor: \"#ccc\",\r\n borderRadius: 5,\r\n width: \"100%\",\r\n }}\r\n buttonTextStyle={{\r\n textAlign: \"left\",\r\n fontSize: 13,\r\n fontFamily: \"OpenSansRegular\",\r\n }}\r\n rowStyle={{ padding: 0, height: 35, backgroundColor: \"#fff\" }}\r\n dropdownStyle={{\r\n borderColor: \"#bbb\",\r\n borderWidth: 1,\r\n borderTopWidth: 0,\r\n backgroundColor: \"#fff\",\r\n // height: listHeight,\r\n }}\r\n selectedRowStyle={{\r\n backgroundColor: \"#3972ca\",\r\n }}\r\n searchInputTxtStyle={{ fontFamily: \"OpenSansRegular\" }}\r\n selectedRowTextStyle={{ color: \"#fff\" }}\r\n searchInputStyle={{\r\n height: 40,\r\n borderWidth: 1,\r\n borderRadius: 5,\r\n width: \"99%\",\r\n padding: 5,\r\n backgroundColor: \"#fff\",\r\n }}\r\n data={options\r\n // ?.sort((a, b) => a[\"label\"].localeCompare(b[\"label\"]))\r\n .map((item) => item[\"label\"])}\r\n onSelect={(selectedItem, index) => {\r\n handleOptionPress(options[index]);\r\n }}\r\n buttonTextAfterSelection={(selectedItem, index) => {\r\n return selectedItem;\r\n }}\r\n rowTextForSelection={(item, index) => {\r\n return item;\r\n }}\r\n />\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flex: 1,\r\n backgroundColor: \"#fff\",\r\n },\r\n\r\n optionItem: {\r\n padding: 8,\r\n borderBottomColor: \"silver\",\r\n borderBottomWidth: 0.5,\r\n },\r\n highlightedOption: {\r\n backgroundColor: \"#3972ca\",\r\n },\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n height: 25,\r\n },\r\n },\r\n});\r\n\r\nexport default SearchDropdown;\r\n","import React from \"react\";\r\nimport { View, StyleSheet } from \"react-native\";\r\nimport { Option, Title, InputBox } from \"../../accessories/accessories\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport CustomTextInput from \"../../accessories/CustomTextInput\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport ArrowSpinner from \"../../accessories/ArrowSpinner\";\r\nimport SearchableDropdown from \"../../accessories/SeachableDropDown\";\r\nimport { cleanValue, log } from \"../../accessories/CommonFunctions\";\r\n\r\nconst SummaryInfo = ({ detailsArr, handleOptionPress, LockLoanApp }) => {\r\n detailsArr[\"subFields\"] = detailsArr[\"subFields\"]?.filter((e) => e !== null);\r\n\r\n const typeTwoFields =\r\n detailsArr[\"subFields\"]?.length > 0 ? detailsArr[\"subFields\"] : [];\r\n\r\n return (\r\n \r\n {detailsArr &&\r\n !(\r\n detailsArr[\"bodyContent\"] === \"Plaid\" &&\r\n detailsArr[\"ColumnValue\"] == 1\r\n ) && (\r\n <>\r\n \r\n <View>\r\n {detailsArr[\"type\"] === 3 ? (\r\n <>\r\n {detailsArr[\"Option\"] && (\r\n <SearchableDropdown\r\n //disabled= {detailsArr[\"loanId\"] > 0}\r\n disabled={detailsArr[\"isDisable\"] || false}\r\n label={detailsArr[\"label\"]}\r\n options={detailsArr[\"Option\"]}\r\n value={detailsArr[\"ColumnValue\"]}\r\n onSelect={(item_) => {\r\n detailsArr[\"onChange\"](item_);\r\n }}\r\n placeholder={detailsArr[\"placeholder\"] || \"\"}\r\n />\r\n )}\r\n {detailsArr[\"isLoanCreating\"] && (\r\n <CustomText style={{ fontSize: 15 }}>\r\n <ArrowSpinner />\r\n {\" \"}\r\n Loan Creation is in progress. Please wait...\r\n </CustomText>\r\n )}\r\n </>\r\n ) : (\r\n <View\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { flexDirection: \"row\", justifyContent: \"space-around\" }\r\n : { flex: 1 }\r\n }\r\n >\r\n {detailsArr[\"Options\"]?.map((item, index) => (\r\n <Option\r\n autoFocus={index == 0 && LockLoanApp == 0}\r\n key={index}\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? {\r\n ...{\r\n width: detailsArr[\"widthOption\"],\r\n ...(detailsArr[\"bodyContent\"] === \"Plaid\"\r\n ? { fontSize: web ? 18 : 16 }\r\n : {}),\r\n },\r\n }\r\n : {}\r\n }\r\n text={item[\"text\"]}\r\n value={item[\"value\"] === detailsArr[\"ColumnValue\"]}\r\n onPress={() => handleOptionPress(item[\"value\"])}\r\n />\r\n ))}\r\n </View>\r\n )}\r\n </View>\r\n </>\r\n )}\r\n {typeTwoFields?.length > 0 && (\r\n <View>\r\n {typeTwoFields?.map((item, index) => (\r\n <View key={index}>\r\n {item[\"addTopField\"] && item[\"addTopField\"]}\r\n <Title text={item[\"Title\"]} />\r\n {item[\"type\"] === 3 ? (\r\n <>\r\n <Dropdown\r\n isValid={item[\"isValid\"]}\r\n label={item[\"label\"]}\r\n options={item[\"Option\"]}\r\n value={\r\n // item[\"isMap\"]\r\n // ? item[\"Option\"].filter(\r\n // (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n // )[0]?.label\r\n // :\r\n item[\"ColumnValue\"]\r\n }\r\n onSelect={(item_) => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : item[\"label\"] !== \"Down Payment\" ? (\r\n <InputBox\r\n keyboardType={item[\"keyboardType\"]}\r\n maxLength={item[\"maxLength\"]}\r\n validate={item[\"isValid\"]}\r\n forceValidation={item[\"forceValidation\"]}\r\n autoFocus={index == 0 && LockLoanApp == 0}\r\n label={item[\"label\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={() =>\r\n item[\"onBlur\"] !== undefined ? item[\"onBlur\"]() : () => {}\r\n }\r\n onChangeText={(text) => {\r\n try {\r\n handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n />\r\n ) : (\r\n <>\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <View\r\n style={[\r\n styles.inputBoxContainer,\r\n {\r\n borderColor: \"gray\",\r\n width: \"100%\",\r\n },\r\n ]}\r\n >\r\n <CustomText bold={true} style={styles.inputBoxLabel}>\r\n {item[\"label\"] || \"\"}\r\n </CustomText>\r\n <CustomTextInput\r\n onChangeText={(text) =>\r\n handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n item[\"field\"][0][\"ColumnName\"]\r\n )\r\n }\r\n isCurrency={item[\"field\"][0][\"isCurrency\"]}\r\n keyboardType={item[\"field\"][0][\"keyboardType\"]}\r\n value={\r\n item[\"field\"][0][\"ColumnValue\"]?.toString() || \"\"\r\n }\r\n onBlur={() => item[\"field\"][0][\"onBlur\"]()}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n style={[\r\n styles.inputBox,\r\n { width: \"63%\", marginRight: 10 },\r\n ]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomTextInput\r\n onChangeText={(text) =>\r\n handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n item[\"field\"][1][\"ColumnName\"]\r\n )\r\n }\r\n value={\r\n item[\"field\"][1][\"ColumnValue\"]?.toString() || \"\"\r\n }\r\n keyboardType={item[\"field\"][1][\"keyboardType\"]}\r\n isCurrency={item[\"field\"][1][\"isCurrency\"]}\r\n onBlur={() => item[\"field\"][1][\"onBlur\"]()}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n style={[styles.inputBox, { width: \"30%\" }]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 14,\r\n marginTop: 5,\r\n marginLeft: 3,\r\n }}\r\n bold={true}\r\n >\r\n %\r\n </CustomText>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n ))}\r\n </View>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n marginTop: 8,\r\n paddingTop: web ? 5 : null,\r\n alignSelf: \"flex-start\",\r\n padding: 30,\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n // outlineWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n});\r\n\r\nexport default SummaryInfo;\r\n","import React from \"react\";\r\nimport { View, StyleSheet, Dimensions } from \"react-native\";\r\nimport CustomText from \"./CustomText\";\r\nimport { Svg, Circle } from \"react-native-svg\";\r\nimport { web } from \"../accessories/Platform\";\r\n\r\nconst CircleProgressBar = ({ progress }) => {\r\n const isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n const CircularProgress = ({ progress, radius, strokeWidth }) => {\r\n const circumference = 2 * Math.PI * (radius - strokeWidth);\r\n const progressValue = (progress / 100) * circumference;\r\n\r\n return (\r\n <>\r\n <View\r\n style={\r\n web ? { rotate: \"-88deg\" } : { transform: [{ rotate: \"-88deg\" }] }\r\n }\r\n >\r\n <Svg width={radius * 2} height={radius * 2}>\r\n <Circle\r\n cx={radius}\r\n cy={radius}\r\n r={radius - strokeWidth}\r\n stroke=\"#dddddd\" // Background color of the progress bar\r\n strokeWidth={strokeWidth}\r\n />\r\n <Circle\r\n cx={radius}\r\n cy={\r\n radius +\r\n (progress > 69\r\n ? 1.5\r\n : progress > 49\r\n ? 1\r\n : progress > 24\r\n ? 0.8\r\n : 0.5)\r\n }\r\n r={radius - strokeWidth}\r\n fill=\"#fff\"\r\n stroke=\"#89af54\" // Color of the progress bar\r\n strokeWidth={strokeWidth}\r\n strokeDasharray={circumference}\r\n strokeDashoffset={circumference - progressValue}\r\n strokeLinecap=\"butt\"\r\n />\r\n </Svg>\r\n </View>\r\n <View\r\n style={{\r\n top: !isMobileWeb && web ? -46 : -41.5,\r\n left: 1,\r\n backgroundColor: \"#fff\",\r\n width: !isMobileWeb && web ? 36 : 33,\r\n height: !isMobileWeb && web ? 36 : 33,\r\n borderRadius: 50,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#89af54\",\r\n // top: 9,\r\n // left: 8,\r\n // position: \"absolute\",\r\n fontSize: !isMobileWeb && web ? 13 : 9,\r\n }}\r\n >\r\n {progress}%\r\n </CustomText>\r\n </View>\r\n </>\r\n );\r\n };\r\n return (\r\n <CircularProgress\r\n progress={progress}\r\n radius={!isMobileWeb && web ? 28 : 25}\r\n strokeWidth={8}\r\n />\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n});\r\nexport default CircleProgressBar;\r\n","import { TouchableOpacity, View } from \"react-native\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport { android, ios, web } from \"../accessories/Platform\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport AntDesign from \"react-native-vector-icons/AntDesign\";\r\nimport MaterialCommunityIcons from \"react-native-vector-icons/MaterialCommunityIcons\";\r\nimport { useState, Fragment } from \"react\";\r\nimport { getKeyByValue, isFloat } from \"../accessories/CommonFunctions\";\r\nimport { Dimensions } from \"react-native\";\r\n\r\nlet isSmallScreen =\r\n (web && window.innerWidth > 900) ||\r\n Dimensions.get(\"window\").width > 900 ||\r\n !web;\r\n\r\nlet isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n\r\nconst navOption = [\r\n {\r\n Name: \"Summary Info\",\r\n Status: false,\r\n Id: 10,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n index: 0,\r\n },\r\n {\r\n Name: \"Borrower Info\",\r\n Status: false,\r\n Id: 1,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n index: 1,\r\n },\r\n {\r\n Name: \"Verify Bank Accounts\",\r\n Status: false,\r\n Id: 12,\r\n isExpand: false,\r\n hasSubMenu: false,\r\n index: 2,\r\n },\r\n {\r\n Name: \"Bank Accounts\",\r\n Status: false,\r\n Id: 5,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n index: 3,\r\n },\r\n {\r\n Name: \"Address History\",\r\n Status: false,\r\n Id: 3,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n index: 4,\r\n },\r\n {\r\n Name: \"Credit Scores\",\r\n Status: false,\r\n Id: 2,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n index: 5,\r\n },\r\n {\r\n Name: \"Employment\",\r\n Status: false,\r\n Id: 4,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n index: 6,\r\n },\r\n {\r\n Name: \"Real Estate Owned\",\r\n Status: false,\r\n Id: 13,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n index: 7,\r\n },\r\n {\r\n Name: \"Government\",\r\n Status: false,\r\n Id: 6,\r\n isExpand: false,\r\n hasSubMenu: true,\r\n expandIndex: [0],\r\n index: 8,\r\n },\r\n {\r\n Name: \"Document Upload\",\r\n Status: false,\r\n Id: 9,\r\n index: 9,\r\n },\r\n {\r\n Name: \"eSign\",\r\n Status: false,\r\n Id: 7,\r\n index: 10,\r\n },\r\n {\r\n Name: \"Appraisal Payment\",\r\n Status: false,\r\n Id: 8,\r\n index: 11,\r\n },\r\n {\r\n Name: \"Review Your Interest Rate\",\r\n Status: false,\r\n Id: 11,\r\n index: 12,\r\n },\r\n {\r\n Name: \"Completed\",\r\n Status: false,\r\n Id: 14,\r\n index: 13,\r\n },\r\n];\r\n\r\nconst navOptionEsign = [\r\n {\r\n Name: \"eSign Instructions\",\r\n Status: false,\r\n Id: 20,\r\n index: 20,\r\n },\r\n {\r\n Name: \"Signing Font\",\r\n Status: false,\r\n Id: 21,\r\n index: 21,\r\n },\r\n {\r\n Name: \"eSign Consent Agreement\",\r\n Status: false,\r\n Id: 22,\r\n index: 22,\r\n },\r\n {\r\n Name: \"Remove eSign Consent\",\r\n Status: false,\r\n Id: 23,\r\n index: 23,\r\n },\r\n {\r\n Name: \"Change My Email Address\",\r\n Status: false,\r\n Id: 24,\r\n index: 24,\r\n },\r\n {\r\n Name: \"Cancel eSign Package\",\r\n Status: false,\r\n Id: 25,\r\n index: 25,\r\n },\r\n\r\n {\r\n Name: \"View Signing Status\", //\"View Other's Signing Status\",\r\n Status: false,\r\n Id: 26,\r\n index: 26,\r\n },\r\n {\r\n Name: \"View More Packages\",\r\n Status: false,\r\n Id: 27,\r\n index: 27,\r\n },\r\n];\r\n\r\nconst iPageArray = [\r\n \"summaryInfo\",\r\n \"borrowerInfo\",\r\n \"borrowerVerification\",\r\n \"bankAccounts\",\r\n \"addressHistory\",\r\n \"creditScore\",\r\n \"employment\",\r\n \"realEstateOwned\",\r\n \"government\",\r\n \"documentUpload\",\r\n \"eSign\",\r\n \"appraisalPayment\",\r\n \"reviewYourInterestRate\",\r\n \"completed\",\r\n];\r\nconst iPageIdObj = {\r\n summaryInfo: 0,\r\n borrowerInfo: 1,\r\n borrowerVerification: 2,\r\n bankAccounts: 3,\r\n addressHistory: 4,\r\n creditScore: 5,\r\n income: 6,\r\n realEstateOwned: 7,\r\n government: 8,\r\n documentUpload: 9,\r\n eSign: 10,\r\n appraisalPayment: 11,\r\n reviewYourInterestRate: 12,\r\n completed: 13,\r\n};\r\n\r\nconst iActivePageArray = [\r\n \"Summary Info\",\r\n \"Borrower Info\",\r\n \"Verify Bank Accounts\",\r\n \"Bank Accounts\",\r\n \"Address History\",\r\n \"Credit Scores\",\r\n \"Employment\",\r\n \"Real Estate Owned\",\r\n \"Government\",\r\n \"Document Upload\",\r\n \"eSign\",\r\n \"Appraisal Payment\",\r\n \"Review Your Interest Rate\",\r\n \"Completed\",\r\n];\r\n\r\nconst handleProcessNavOptions = (\r\n navOptions,\r\n pageIndex,\r\n additionalEmploymentList,\r\n pageId = null\r\n) => {\r\n const pageIdObj = pageId || iPageIdObj;\r\n return navOptions.map((item, index) => {\r\n item[\"isExpand\"] = index == pageIndex[\"page\"];\r\n item[\"expandIndex\"] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\r\n\r\n if (pageIndex[\"page\"] === 5 && index === 5) {\r\n let val = [0];\r\n additionalEmploymentList.map((iItem, iIndex) => {\r\n if (iItem[\"subMenu\"]) {\r\n iItem[\"subMenu\"].map((jItem, jIndex) => {\r\n if (jItem[\"index\"] === pageIndex[\"subPage\"]) {\r\n val = [iIndex];\r\n }\r\n });\r\n } else if (iItem[\"index\"] === pageIndex[\"subPage\"]) {\r\n val = [iIndex];\r\n }\r\n });\r\n item[\"expandIndex\"] = val || [0];\r\n }\r\n return item;\r\n });\r\n};\r\n\r\nconst handleManipulateNavOptions = (isESignOnly, excludePageIds) => {\r\n let iNavLeftOptionState = navOption;\r\n if (isESignOnly) {\r\n iNavLeftOptionState = [];\r\n }\r\n if (excludePageIds.length) {\r\n iNavLeftOptionState = iNavLeftOptionState.filter(\r\n (item) => !excludePageIds.includes(parseInt(item[\"Id\"]))\r\n );\r\n }\r\n\r\n return iNavLeftOptionState;\r\n};\r\n\r\nconst NavBarContent = (props) => {\r\n let platformType = \"\";\r\n if (android) {\r\n platformType = \"android\";\r\n } else if (ios) {\r\n platformType = \"ios\";\r\n } else if (isMobileWeb) {\r\n platformType = \"isMobileWeb\";\r\n } else if (web) {\r\n platformType = \"web\";\r\n } else platformType = \"\";\r\n\r\n const {\r\n navLeftOption = [],\r\n additionalBorrowerList = [],\r\n additionalEmploymentList = [],\r\n additionalBankList = [],\r\n creditPageList = [],\r\n summaryInfoList = [],\r\n realEstateList = [],\r\n additionalAddressHistoryList = [],\r\n governmentPageList = [\r\n { Name: \"Declarations\" },\r\n { Name: \"Demographic\" },\r\n { Name: \"VA Section\" },\r\n { Name: \"Counseling Seminar\" },\r\n ],\r\n preventNavigation,\r\n isHome,\r\n currentPage = \"\",\r\n setCurrentPage = () => {},\r\n pageIndex = { page: 0, subPage: 0 },\r\n completedPage,\r\n loanId,\r\n handleNavigateSubPage,\r\n handleActiveTab,\r\n setNavLeftOptionState = () => {},\r\n navLeftOptionState = [],\r\n navigate = () => {},\r\n handleClearState = () => {},\r\n isDashBoard,\r\n progressPercentage = 0,\r\n webviewRef,\r\n setNavOpen = () => {},\r\n iFrameviewRef,\r\n pageId,\r\n activePageArray = iActivePageArray || [],\r\n inCompletedSubPageObj = {},\r\n isLoaded,\r\n } = props;\r\n const pageIdObj = pageId || iPageIdObj;\r\n\r\n return (\r\n <>\r\n {navLeftOption.map((item, index) => {\r\n let iAdditionalBorrowerList = JSON.parse(\r\n JSON.stringify(additionalBorrowerList)\r\n ),\r\n subMenuArray = isHome\r\n ? item[\"Id\"] === 4\r\n ? additionalEmploymentList\r\n : item[\"Id\"] === 5\r\n ? additionalBankList\r\n : item[\"Id\"] === 2\r\n ? creditPageList\r\n : item[\"Id\"] === 10\r\n ? summaryInfoList\r\n : item[\"Id\"] === 13\r\n ? realEstateList\r\n : item[\"Id\"] === 6\r\n ? iAdditionalBorrowerList.map((item) => {\r\n item[\"subMenu\"] = JSON.parse(\r\n JSON.stringify(governmentPageList)\r\n );\r\n return item;\r\n })\r\n : item[\"Id\"] === 3\r\n ? additionalAddressHistoryList\r\n : additionalBorrowerList\r\n : [],\r\n isDisable = (index > 1 && loanId < 0) || preventNavigation;\r\n let { isExpand } = item;\r\n if (!isLoaded && item[\"Id\"] === 10) {\r\n isExpand = false;\r\n }\r\n\r\n if (isHome && item[\"Id\"] === 1) {\r\n subMenuArray = subMenuArray.filter(\r\n (item) => item[\"Name\"] !== \"Additional Borrowers\"\r\n );\r\n subMenuArray.push({ Name: \"Additional Borrowers\" });\r\n }\r\n let zIndex = 0;\r\n subMenuArray.map((xItem, xIndex, arr) => {\r\n if (xItem[\"subMenu\"]) {\r\n xItem[\"subMenu\"].map((yItem, yIndex) => {\r\n yItem[\"index\"] = zIndex;\r\n zIndex++;\r\n delete xItem[\"index\"];\r\n });\r\n } else {\r\n xItem[\"index\"] = zIndex;\r\n zIndex++;\r\n }\r\n });\r\n\r\n const activePage =\r\n item[\"Name\"] === activePageArray[pageIdObj[currentPage]],\r\n inCompleteTabIndex =\r\n inCompletedSubPageObj[getKeyByValue(pageIdObj, item[\"index\"])] ||\r\n [];\r\n\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n key={index}\r\n style={[\r\n {\r\n paddingVertical: !isSmallScreen ? 18 : 13,\r\n paddingHorizontal: !isSmallScreen ? 18 : 15,\r\n\r\n ...{\r\n borderBottomWidth: 2,\r\n borderBottomColor: \"#d9d9d9\",\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n },\r\n item[\"Name\"] === \"My Dashboard\"\r\n ? { paddingBottom: web ? 35 : 25 }\r\n : {},\r\n {\r\n display:\r\n item[\"Name\"] !== \"My Dashboard\" && index !== 1 && isDisable\r\n ? \"none\"\r\n : \"flex\",\r\n },\r\n // { backgroundColor: \"red\" },\r\n ]}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: 17,\r\n width: \"100%\",\r\n }}\r\n onPress={() => {\r\n if (item[\"Name\"] === \"My Dashboard\") {\r\n setNavLeftOptionState([\r\n ...(navLeftOptionState || navOption).map((nav) => {\r\n nav[\"isExpand\"] = false;\r\n return nav;\r\n }),\r\n ]);\r\n navigate(\"DashBoard\");\r\n handleClearState(isDashBoard);\r\n } else if (!preventNavigation && !isDisable) {\r\n //add esign on press here\r\n if (\r\n [20, 21, 22, 23, 24, 25, 26, 27].includes(\r\n Number(item[\"Id\"])\r\n )\r\n ) {\r\n try {\r\n const functionName = \"InvokeEsignMenu\";\r\n const scriptToInject = `window.${functionName}(${item[\"Id\"]});`;\r\n webviewRef.current.injectJavaScript(scriptToInject);\r\n } catch (e) {\r\n const iframeWindow = iFrameviewRef.current.contentWindow;\r\n if (iframeWindow)\r\n iframeWindow.InvokeEsignMenu(item[\"Id\"]);\r\n }\r\n\r\n setNavOpen({ left: false, right: false });\r\n } else {\r\n setCurrentPage(item[\"Name\"]);\r\n handleActiveTab(index);\r\n }\r\n }\r\n }}\r\n >\r\n {/* Main-Menu */}\r\n <View\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n flexDirection: \"row\",\r\n width: android ? 260 : \"100%\",\r\n marginBottom: web ? \"auto\" : -5,\r\n }}\r\n >\r\n {item[\"Name\"] === \"My Dashboard\" ? (\r\n <Icon size={22} name=\"home\" />\r\n ) : (\r\n <>\r\n {currentPage !== \"eSign\" &&\r\n ![20, 21, 22, 23, 24, 25, 26, 27].includes(\r\n Number(item[\"Id\"])\r\n ) && (\r\n <AntDesign\r\n testID=\"statusIcon\"\r\n style={{ alignSelf: \"center\" }}\r\n size={web ? 22 : 20}\r\n name={item[\"Status\"] ? \"check\" : \"close\"}\r\n color={\r\n !completedPage || item[\"Id\"] == 14\r\n ? \"#fff\"\r\n : item[\"Status\"]\r\n ? \"#247c00\"\r\n : \"#d60000\"\r\n }\r\n />\r\n )}\r\n </>\r\n )}\r\n <CustomText\r\n bold={activePage}\r\n style={{\r\n color: \"black\",\r\n alignSelf: \"center\",\r\n fontSize: 17,\r\n }}\r\n >\r\n {\" \"}\r\n {item[\"Name\"]}\r\n {item[\"Id\"] == 14 && <> {progressPercentage}%</>}\r\n </CustomText>\r\n <View\r\n style={{\r\n alignSelf: \"flex-end\",\r\n marginLeft: \"auto\",\r\n }}\r\n >\r\n <MaterialCommunityIcons\r\n size={26}\r\n name={isExpand ? \"chevron-down\" : \"chevron-right\"}\r\n color={\r\n item[\"hasSubMenu\"] && subMenuArray.length > 0\r\n ? \"#1c1a1e\"\r\n : \"#fff\"\r\n }\r\n onPress={() => {\r\n // setCurrentPage(item[\"Name\"]);\r\n // handleActiveTab(index);\r\n setNavLeftOptionState([\r\n ...(navLeftOptionState || navOption).map(\r\n (nav, nIndex) => {\r\n if (nIndex === index - 1)\r\n nav[\"isExpand\"] = !nav[\"isExpand\"];\r\n return nav;\r\n }\r\n ),\r\n ]);\r\n }}\r\n />\r\n </View>\r\n </View>\r\n </CustomText>\r\n {/* Sub-Menu */}\r\n {item[\"hasSubMenu\"] && isExpand && (\r\n <View\r\n style={{\r\n borderRadius: 5,\r\n marginVertical: 5,\r\n }}\r\n >\r\n {subMenuArray.map((iItem, iIndex, arr) => {\r\n let iSubPage = [8].includes(pageIndex[\"page\"])\r\n ? pageIndex[\"subPage\"] / 4\r\n : pageIndex[\"subPage\"],\r\n active =\r\n item[\"Id\"] !== 4\r\n ? arr.indexOf(iItem) == parseInt(iSubPage) &&\r\n pageIndex[\"page\"] + 1 === index\r\n : !iItem[\"subMenu\"] && item[\"Id\"] == 4\r\n ? iItem[\"index\"] == parseInt(iSubPage)\r\n : false,\r\n isDisable =\r\n (loanId < 0 &&\r\n index === 1 &&\r\n iIndex >\r\n arr.findIndex(\r\n (item) => item.Name === \"Loan Officers\"\r\n )) ||\r\n preventNavigation;\r\n\r\n return (\r\n <Fragment key={iIndex}>\r\n <CustomText\r\n style={{\r\n ...{\r\n fontSize: 16,\r\n paddingVertical: web ? 10 : 5,\r\n paddingLeft: 40,\r\n marginLeft: iItem[\"subMenu\"] ? 20 : 0,\r\n color:\r\n [pageIdObj[\"employment\"]].includes(\r\n pageIndex[\"page\"]\r\n ) &&\r\n (iItem[\"subMenu\"] || []).length === 0 &&\r\n Array.isArray(inCompleteTabIndex[0]) &&\r\n inCompleteTabIndex[0]?.includes(iItem[\"index\"])\r\n ? \"red\"\r\n : ![\r\n pageIdObj[\"government\"],\r\n pageIdObj[\"employment\"],\r\n pageIdObj[\"addressHistory\"],\r\n ].includes(pageIndex[\"page\"]) &&\r\n inCompleteTabIndex.includes(iIndex)\r\n ? \"red\"\r\n : \"black\",\r\n opacity: iIndex > 0 && isDisable ? 0.5 : 1,\r\n display:\r\n iIndex > (preventNavigation ? 2 : 3) && isDisable\r\n ? \"none\"\r\n : \"flex\",\r\n overflow: \"hidden\",\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n }}\r\n onPress={() => {\r\n if (!isDisable && ![6, 4].includes(item[\"Id\"])) {\r\n if ((iItem[\"subMenu\"] || []).length > 0) {\r\n let iNavLeftOptionState = navLeftOptionState,\r\n arr = iNavLeftOptionState[index - 1];\r\n if (!arr[\"expandIndex\"]) arr[\"expandIndex\"] = [];\r\n if (arr[\"expandIndex\"].includes(iIndex))\r\n arr[\"expandIndex\"] = arr[\"expandIndex\"].filter(\r\n (i) => i !== iIndex\r\n );\r\n else arr[\"expandIndex\"].push(iIndex);\r\n\r\n arr[\"expandIndex\"] = [\r\n ...new Set(arr[\"expandIndex\"]),\r\n ];\r\n iNavLeftOptionState[index - 1] = arr;\r\n setNavLeftOptionState([\r\n ...[],\r\n ...iNavLeftOptionState,\r\n ]);\r\n } else if (!preventNavigation) {\r\n handleNavigateSubPage(index - 1, iItem[\"index\"]);\r\n }\r\n }\r\n }}\r\n bold={\r\n activePage &&\r\n active &&\r\n (iItem[\"subMenu\"] || []).length === 0\r\n }\r\n >\r\n {(iItem[\"subMenu\"] || []).length > 0 && (\r\n <MaterialCommunityIcons\r\n size={20}\r\n name={\r\n (item[\"expandIndex\"] || [0]).includes(iIndex) ||\r\n active\r\n ? \"chevron-down\"\r\n : \"chevron-right\"\r\n }\r\n />\r\n )}\r\n {iItem[\"Name\"]}\r\n </CustomText>\r\n {iItem[\"subMenu\"] &&\r\n ((item[\"expandIndex\"] || [0]).includes(iIndex) ||\r\n active) && (\r\n <View\r\n style={{\r\n borderRadius: 5,\r\n marginLeft: 15,\r\n marginRight: 10,\r\n marginTop: 5,\r\n }}\r\n >\r\n {iItem[\"subMenu\"].map((jItem, jIndex) => {\r\n return (\r\n <CustomText\r\n key={jIndex}\r\n bold={\r\n activePage &&\r\n jItem[\"index\"] === pageIndex[\"subPage\"]\r\n }\r\n style={{\r\n ...{\r\n fontSize: web ? 16 : 15,\r\n paddingVertical: 5,\r\n paddingLeft: 45,\r\n marginLeft: 25,\r\n marginBottom: 5,\r\n color:\r\n ([pageIdObj[\"employment\"]].includes(\r\n pageIndex[\"page\"]\r\n ) &&\r\n Array.isArray(\r\n inCompleteTabIndex[1]\r\n ) &&\r\n inCompleteTabIndex[1]?.includes(\r\n jItem[\"index\"]\r\n )) ||\r\n ([\r\n pageIdObj[\"government\"],\r\n pageIdObj[\"addressHistory\"],\r\n ].includes(pageIndex[\"page\"]) &&\r\n inCompleteTabIndex.includes(\r\n jItem[\"index\"]\r\n ))\r\n ? \"red\"\r\n : \"black\",\r\n\r\n overflow: \"hidden\",\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n }}\r\n onPress={() => {\r\n !preventNavigation &&\r\n handleNavigateSubPage(\r\n index - 1,\r\n jItem[\"index\"]\r\n );\r\n }}\r\n >\r\n {jItem[\"Name\"]}\r\n </CustomText>\r\n );\r\n })}\r\n </View>\r\n )}\r\n </Fragment>\r\n );\r\n })}\r\n </View>\r\n )}\r\n </TouchableOpacity>\r\n );\r\n })}\r\n </>\r\n );\r\n};\r\n\r\n// NavBarContent.defaultProps = {\r\n// currentPage: \"\", // Default value for currentPage\r\n// };\r\n\r\nexport {\r\n navOption,\r\n handleProcessNavOptions,\r\n handleManipulateNavOptions,\r\n NavBarContent,\r\n iPageArray,\r\n iPageIdObj,\r\n iActivePageArray,\r\n navOptionEsign,\r\n};\r\n","import React, { useEffect, useState, useContext, useRef } from \"react\";\r\nimport {\r\n View,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Image,\r\n Modal,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\n// import MaterialCommunityIcons from \"react-native-vector-icons/MaterialCommunityIcons\";\r\nimport MaterialCommunityIcons from \"react-native-vector-icons/MaterialCommunityIcons\";\r\n\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport {\r\n handleAPI,\r\n updateWebURL,\r\n handleSessionCheck,\r\n handleStartNewLoan,\r\n checkForUpdates,\r\n} from \"../accessories/CommonFunctions\";\r\nimport { context } from \"../accessories/accessories\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport packageJson from \"../../package.json\";\r\nimport CircleProgressBar from \"./../accessories/CircleBar\";\r\n\r\nimport {\r\n NavBarContent,\r\n handleManipulateNavOptions,\r\n handleProcessNavOptions,\r\n navOption,\r\n navOptionEsign,\r\n} from \"./NavAccessories\";\r\n\r\nconst { version, buildVersion } = packageJson;\r\n\r\nconst NavBar = (props) => {\r\n const {\r\n WebLoginId = 0,\r\n handleLogOut = () => {},\r\n isDashBoard = false,\r\n isHome = false,\r\n handleClearState = () => {},\r\n completedPage = null,\r\n excludePageIds = [],\r\n additionalEmploymentList = [],\r\n pageIndex,\r\n isSmallScreen,\r\n isEsignOnly,\r\n setFloatPage = () => {},\r\n progressPercentage = 0,\r\n setProgressPercentage = () => {},\r\n hideProgress,\r\n currentPage,\r\n platformType,\r\n showEsignMenu,\r\n webviewRef,\r\n iFrameviewRef,\r\n inCompleteTabIndex,\r\n pageId,\r\n } = props;\r\n const isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { navigation, userName = \"\", loanId, SessionId = \"\" } = contextDetails;\r\n const [isNavOpen, setNavOpen] = useState({ left: false, right: false });\r\n\r\n const [navLeftOptionState, setNavLeftOptionState] = useState(navOption | []);\r\n const leftNavRef = useRef();\r\n const rightNavRef = useRef();\r\n const DMLogoBlueRef = useRef();\r\n\r\n const [leftNavPosition, setLeftNavPosition] = useState({\r\n top: 0,\r\n left: 0,\r\n opacity: 0,\r\n });\r\n const [rightNavPosition, setRightNavPosition] = useState({\r\n top: 0,\r\n left: 0,\r\n opacity: 0,\r\n });\r\n\r\n if (web) {\r\n useEffect(() => {\r\n leftNavRef?.current?.setNativeProps({\r\n tabIndex: -1,\r\n });\r\n }, [leftNavRef.current]);\r\n\r\n useEffect(() => {\r\n rightNavRef?.current?.setNativeProps({\r\n tabIndex: -1,\r\n });\r\n }, [rightNavRef.current]);\r\n useEffect(() => {\r\n DMLogoBlueRef?.current?.setNativeProps({\r\n tabIndex: -1,\r\n });\r\n }, [DMLogoBlueRef.current]);\r\n }\r\n\r\n const handleLeftNavOpen = () => {\r\n leftNavRef.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setLeftNavPosition({\r\n top: py + (web ? 68 : 50),\r\n left: web ? _px + -15 : 0,\r\n opacity: 1,\r\n });\r\n });\r\n };\r\n const handleRightNavOpen = () => {\r\n rightNavRef.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setRightNavPosition({\r\n top: py + (web ? 73 : 50),\r\n left: _px + (web ? -165 : -195),\r\n opacity: 1,\r\n });\r\n });\r\n };\r\n const handleLogOut_ = async (flag) => {\r\n setNavOpen({ left: false, right: false });\r\n handleLogOut(flag);\r\n if (flag) {\r\n await handleAPI({\r\n name: \"SaveFaceIdToWebLoginAccount\",\r\n params: { WebLoginId, BioMetric: \"\" },\r\n })\r\n .then(async function (response) {\r\n await AsyncStorage.removeItem(\"bioMetricLoginDetails\");\r\n await AsyncStorage.removeItem(\"Credentials\");\r\n })\r\n .catch(function (err) {\r\n console.log(`Error from SaveFaceIdToWebLoginAccount ====> ${err}`);\r\n });\r\n }\r\n };\r\n useEffect(() => {\r\n if (pageIndex) {\r\n let navBar = navLeftOptionState || navOption;\r\n navBar = navBar.map((item, index) => {\r\n item[\"isExpand\"] = index == pageIndex[\"page\"];\r\n return item;\r\n });\r\n setNavLeftOptionState([...[], ...navBar]);\r\n }\r\n }, [pageIndex]);\r\n\r\n useEffect(() => {\r\n handleSessionCheck(SessionId, handleLogOut_);\r\n }, [SessionId]);\r\n\r\n useEffect(() => {\r\n if (isHome && completedPage) {\r\n let updatedArray = [];\r\n updatedArray = (navLeftOptionState || navOption).map((item, index) => {\r\n item[\"Status\"] = completedPage.indexOf(index) > -1 ? 1 : 0;\r\n return item;\r\n });\r\n //Get Progress Value\r\n\r\n let checkPages = [1, 3, 4, 5, 6, 10, 13], //2,\r\n completedCount =\r\n updatedArray.filter(\r\n (ele) => ele[\"Status\"] && checkPages.indexOf(ele[\"Id\"]) !== -1\r\n ).length || 1,\r\n progressPercentage =\r\n (100 / checkPages.length) * (loanId > 0 ? completedCount : 0);\r\n\r\n if (progressPercentage == 90) progressPercentage = 95;\r\n if (progressPercentage < 0) progressPercentage = 0;\r\n if (progressPercentage > 100) progressPercentage = 100;\r\n setProgressPercentage(Math.round(progressPercentage));\r\n\r\n updatedArray = handleProcessNavOptions(\r\n updatedArray,\r\n pageIndex,\r\n additionalEmploymentList,\r\n pageId\r\n );\r\n setNavLeftOptionState([...[], ...updatedArray]);\r\n setNavOpen({ left: false, right: false });\r\n }\r\n }, [completedPage]);\r\n\r\n useEffect(() => {\r\n if (contextDetails.loanId > 0) {\r\n handleAPI({\r\n name: \"UpdateLoanAppStatus\",\r\n params: {\r\n LoanId: contextDetails.loanId,\r\n Status: Math.round(progressPercentage) === 100 ? 1 : 0,\r\n SessionID: SessionId,\r\n },\r\n })\r\n .then((response) => {\r\n // log(response);\r\n })\r\n .catch((err) =>\r\n console.error(\"Error form UpdateLoanAppStatus ====> \", err)\r\n );\r\n }\r\n }, [progressPercentage]);\r\n\r\n useEffect(() => {\r\n setNavLeftOptionState(\r\n handleManipulateNavOptions(isEsignOnly, excludePageIds)\r\n );\r\n }, [excludePageIds, isEsignOnly]);\r\n\r\n let navLeftOption = [];\r\n if (isDashBoard) navLeftOption = [{ Name: \"My Dashboard\" }];\r\n else {\r\n if (\r\n showEsignMenu &&\r\n currentPage == \"eSign\" &&\r\n [\"isMobileWeb\", \"ios\", \"android\"].includes(platformType)\r\n )\r\n navLeftOption = [...[{ Name: \"My Dashboard\" }], ...navOptionEsign];\r\n else {\r\n navLeftOption = [\r\n ...[{ Name: \"My Dashboard\" }],\r\n ...(navLeftOptionState || navOption),\r\n ];\r\n }\r\n }\r\n\r\n const handleOpenSettings = () => {\r\n if (web) {\r\n setFloatPage({\r\n path: \"Settings\",\r\n option: {\r\n From: isDashBoard ? \"DashBoard\" : \"Home\",\r\n SessionId,\r\n WebLoginId,\r\n },\r\n });\r\n } else {\r\n navigate(\"Settings\", {\r\n From: isDashBoard ? \"DashBoard\" : \"Home\",\r\n SessionId,\r\n WebLoginId,\r\n });\r\n }\r\n setNavOpen({ ...isNavOpen, right: false });\r\n };\r\n const navRightOption = [\r\n {\r\n Name: \"Settings\",\r\n onPress: () => {\r\n handleOpenSettings();\r\n },\r\n },\r\n isMobileWeb &&\r\n web && {\r\n Name: \"Use Mobile App\",\r\n onPress: () => {\r\n window.parent.location.href = \"https://directmortgage.com/S/f6QTt\";\r\n },\r\n },\r\n {\r\n Name: \"Start New Loan App\",\r\n onPress: () => {\r\n handleClearState(isDashBoard);\r\n handleStartNewLoan(\r\n navigation || props[\"navigation\"],\r\n SessionId,\r\n userName,\r\n contextDetails,\r\n setContextDetails\r\n );\r\n setNavOpen({ ...isNavOpen, right: false });\r\n },\r\n },\r\n\r\n {\r\n Name: \"Log out and Forget Password\",\r\n onPress: () => {\r\n handleLogOut_(true);\r\n setNavOpen({ ...isNavOpen, right: false });\r\n },\r\n },\r\n {\r\n Name: \"Log out\",\r\n onPress: () => {\r\n handleLogOut_();\r\n setNavOpen({ ...isNavOpen, right: false });\r\n },\r\n },\r\n ].filter((_) => _);\r\n\r\n const navigate = (path, option) => {\r\n updateWebURL({ ...option, Path: path });\r\n if (path == \"DashBoard\") {\r\n option = { ...option, from: \"Home\", flag: \"changeActiveIndex\" };\r\n }\r\n (navigation || props[\"navigation\"]).navigate(path, option || {});\r\n };\r\n\r\n return (\r\n <>\r\n <View\r\n style={[\r\n styles.container,\r\n web\r\n ? {\r\n position: web ? \"fixed\" : \"sticky\",\r\n paddingRight: isMobileWeb ? 0 : 10,\r\n justifyContent: \"space-between\",\r\n }\r\n : {\r\n justifyContent:\r\n Dimensions.get(\"window\").width > 400\r\n ? \"space-between\"\r\n : \"space-around\",\r\n },\r\n ]}\r\n >\r\n <View\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n padding: 10,\r\n justifyContent: \"space-between\",\r\n },\r\n !web && { flex: 1 },\r\n { width: \"100%\" },\r\n web && isMobileWeb\r\n ? {\r\n paddingBottom: isDashBoard ? 10 : 23,\r\n paddingRight: 0,\r\n }\r\n : {},\r\n ]}\r\n >\r\n <>\r\n <View\r\n style={[\r\n styles.navBarLeft,\r\n isMobileWeb\r\n ? {\r\n paddingLeft: 0,\r\n }\r\n : {},\r\n ]}\r\n >\r\n <TouchableOpacity\r\n ref={leftNavRef}\r\n activeOpacity={1}\r\n onPress={() => {\r\n if (!isSmallScreen) {\r\n setNavOpen({ ...isNavOpen, left: !isNavOpen[\"left\"] });\r\n handleLeftNavOpen();\r\n } else if (isSmallScreen || isDashBoard) {\r\n navigate(\"DashBoard\");\r\n handleClearState(isDashBoard);\r\n }\r\n }}\r\n >\r\n <>\r\n <CustomText style={{ alignSelf: \"center\" }} tabIndex={-1}>\r\n <MaterialCommunityIcons\r\n name=\"menu\"\r\n size={!isMobileWeb && web ? 55 : 37}\r\n />\r\n </CustomText>\r\n {isNavOpen[\"left\"] && (\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n alignSelf: \"center\",\r\n bottom: !isMobileWeb && web ? 13 : 9,\r\n backgroundColor: \"#fff\",\r\n width: !isMobileWeb && web ? 18 : 15,\r\n height: !isMobileWeb && web ? 20 : 11,\r\n right: !isMobileWeb && web ? 5 : 3,\r\n transform: [{ rotate: \"180deg\" }],\r\n }}\r\n bold={true}\r\n >\r\n <MaterialCommunityIcons\r\n name=\"triangle\"\r\n size={!isMobileWeb && web ? 15 : 11}\r\n style={{\r\n textAlignVertical: \"center\",\r\n textAlign: \"center\",\r\n }}\r\n />\r\n </CustomText>\r\n )}\r\n </>\r\n </TouchableOpacity>\r\n <Modal\r\n visible={isNavOpen[\"left\"] && (!web || !isSmallScreen)}\r\n // visible={true}\r\n transparent\r\n animationType=\"fade\"\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n // backgroundColor: \"#87878794\",\r\n }}\r\n onPress={() => setNavOpen({ ...isNavOpen, left: false })}\r\n >\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n position: \"absolute\",\r\n zIndex: 2,\r\n width: 310,\r\n borderColor: \"#d3dadf\",\r\n borderWidth: 2,\r\n borderRadius: 5,\r\n boxShadow: \"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)\",\r\n maxHeight:\r\n Dimensions.get(\"window\").height -\r\n leftNavPosition.top -\r\n 40,\r\n paddingHorizontal: 8,\r\n },\r\n leftNavPosition,\r\n // web ? { right: 0 } : {},\r\n ]}\r\n >\r\n <ScrollContainer>\r\n <NavBarContent\r\n navigate={navigate}\r\n navLeftOptionState={navLeftOptionState}\r\n setNavLeftOptionState={setNavLeftOptionState}\r\n navLeftOption={navLeftOption}\r\n {...props}\r\n webviewRef={webviewRef}\r\n setNavOpen={setNavOpen}\r\n iFrameviewRef={iFrameviewRef}\r\n inCompleteTabIndex={inCompleteTabIndex}\r\n />\r\n </ScrollContainer>\r\n </View>\r\n </TouchableOpacity>\r\n </Modal>\r\n </View>\r\n\r\n <TouchableOpacity\r\n ref={DMLogoBlueRef}\r\n activeOpacity={1}\r\n onPress={() => {\r\n navigate(\"DashBoard\");\r\n }}\r\n style={{ flexDirection: \"row\" }}\r\n >\r\n <Image\r\n resizeMode=\"contain\"\r\n style={{\r\n height: !isMobileWeb && web ? \"50\" : \"auto\",\r\n width: !isMobileWeb && web ? 320 : 250,\r\n // borderWidth: 1,\r\n }}\r\n source={require(\"../../assets/DMLogoBlue.png\")}\r\n />\r\n\r\n {/* <View\r\n style={\r\n web ? styles.titleContainerWeb : styles.titleContainerMobile\r\n }\r\n >\r\n <CustomText style={{ fontSize: web ? 12 : 9 }}>\r\n Technical issues? Call (801) 924-1891\r\n </CustomText>\r\n </View> */}\r\n </TouchableOpacity>\r\n </>\r\n\r\n <View style={styles.navBarRight}>\r\n <TouchableOpacity\r\n ref={rightNavRef}\r\n activeOpacity={1}\r\n onPress={() => {\r\n setNavOpen({ ...isNavOpen, right: true });\r\n handleRightNavOpen();\r\n }}\r\n style={[styles.navButtonContainer]}\r\n >\r\n {!isDashBoard ? (\r\n <View\r\n style={{\r\n alignItems: \"center\",\r\n fontSize: 10,\r\n marginTop: !isMobileWeb && web ? -10 : -15,\r\n height: !isMobileWeb && web ? 70 : 47,\r\n display: hideProgress ? \"none\" : \"flex\",\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: 10,\r\n }}\r\n bold={true}\r\n >\r\n Progress\r\n </CustomText>\r\n <CircleProgressBar progress={progressPercentage} />\r\n {loanId > 0 && (\r\n <CustomText\r\n style={{\r\n marginTop: -35,\r\n fontSize: !isMobileWeb && web ? 11 : 10,\r\n }}\r\n >\r\n {loanId}\r\n </CustomText>\r\n )}\r\n </View>\r\n ) : (\r\n <Icon\r\n name=\"user-circle-o\"\r\n color=\"gray\"\r\n size={!isMobileWeb && web ? 60 : 35}\r\n />\r\n )}\r\n </TouchableOpacity>\r\n\r\n <Modal\r\n visible={isNavOpen[\"right\"]}\r\n transparent\r\n animationType=\"fade\"\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{ width: \"100%\", height: \"100%\" }}\r\n onPress={() => setNavOpen({ ...isNavOpen, right: false })}\r\n >\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n position: \"absolute\",\r\n width: 250,\r\n borderColor: \"#d3dadf\",\r\n borderWidth: 2,\r\n borderRadius: 5,\r\n boxShadow: \"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)\",\r\n },\r\n rightNavPosition,\r\n ]}\r\n >\r\n <View\r\n style={{\r\n borderBottomColor: \"#d3dadf\",\r\n borderBottomWidth: 2,\r\n }}\r\n >\r\n <CustomText style={[styles.navRightOption]} bold={true}>\r\n {userName}\r\n </CustomText>\r\n </View>\r\n {navRightOption.map((item, index) => (\r\n <CustomText\r\n key={index}\r\n onPress={item[\"onPress\"]}\r\n style={styles.navRightOption}\r\n >\r\n {item[\"Name\"]}\r\n </CustomText>\r\n ))}\r\n {!web && (\r\n <TouchableOpacity\r\n activeOpacity={0.7}\r\n style={{\r\n borderTopColor: \"#d3dadf\",\r\n borderTopWidth: 2,\r\n flexDirection: \"row\",\r\n paddingVertical: 5,\r\n }}\r\n onPress={() => checkForUpdates(false)}\r\n >\r\n <CustomText\r\n style={[\r\n styles.navRightOption,\r\n {\r\n paddingRight: 0,\r\n fontSize: 14,\r\n color: \"#5c5c5c\",\r\n paddingVertical: 5,\r\n },\r\n ]}\r\n >\r\n App Version:\r\n </CustomText>\r\n <CustomText\r\n style={[\r\n styles.navRightOption,\r\n {\r\n fontSize: 14,\r\n color: \"#5c5c5c\",\r\n paddingVertical: 5,\r\n },\r\n ]}\r\n bold={true}\r\n >\r\n {/* {`${version} (${buildVersion})`} */}\r\n {`${version}`}\r\n </CustomText>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </TouchableOpacity>\r\n </Modal>\r\n </View>\r\n </View>\r\n </View>\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n width: \"100%\",\r\n top: 0,\r\n zIndex: 1,\r\n flexDirection: \"row\",\r\n backgroundColor: \"#fff\",\r\n color: \"#212529\",\r\n },\r\n\r\n navBarLeft: [\r\n {\r\n fontSize: 18,\r\n paddingLeft: 10,\r\n },\r\n ],\r\n navBarRight: [\r\n {\r\n // !web\r\n // ? {\r\n // width: Dimensions.get(\"window\").width - 140,\r\n // }\r\n // : {},\r\n //display: \"none\",\r\n },\r\n ],\r\n navBarRightText: {\r\n fontSize: web ? 18 : 16,\r\n paddingTop: 7,\r\n paddingBottom: 3,\r\n paddingHorizontal: 10,\r\n color: \"#212529\",\r\n // maxWidth: web ? 220 : 180,\r\n },\r\n navButtonContainer: {\r\n // backgroundColor: \"#b5d472\",\r\n // borderRadius: 15,\r\n paddingVertical: 3,\r\n paddingHorizontal: 3,\r\n // width: 180,\r\n marginHorizontal: 5,\r\n color: \"#212529\",\r\n // marginBottom: 10,\r\n },\r\n navButtonText: {\r\n color: \"#fff\",\r\n padding: 5,\r\n alignSelf: \"center\",\r\n fontSize: 16,\r\n },\r\n navLeftOptionWrapper: {\r\n ...{\r\n // marginHorizontal: 20,\r\n // borderRadius: 15,\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n },\r\n navLeftOption: [\r\n {\r\n paddingVertical: 8,\r\n // paddingHorizontal: 10,\r\n paddingRight: 3,\r\n paddingLeft: 7,\r\n fontSize: 16,\r\n color: \"#212529\",\r\n },\r\n ],\r\n navRightOption: {\r\n paddingVertical: 8,\r\n paddingHorizontal: 10,\r\n fontSize: 16,\r\n color: \"#212529\",\r\n },\r\n active: {\r\n backgroundColor: \"#b5d472\",\r\n color: \"#fff\",\r\n overflow: \"hidden\",\r\n borderRadius: 15,\r\n },\r\n titleContainerWeb: {\r\n position: \"absolute\",\r\n bottom: 0,\r\n width: \"100%\",\r\n paddingVertical: 10,\r\n alignItems: \"center\",\r\n paddingLeft: 10,\r\n height: 7,\r\n },\r\n titleContainerMobile: {\r\n position: \"absolute\",\r\n bottom: 0,\r\n width: \"100%\",\r\n paddingVertical: 0,\r\n alignItems: \"flex-start\",\r\n top: 30,\r\n paddingLeft: 10,\r\n zIndex: 9999,\r\n height: 15,\r\n },\r\n});\r\n\r\nexport default NavBar;\r\n","import React, { useEffect, useState, useContext } from \"react\";\r\nimport { View } from \"react-native\";\r\nimport {\r\n updateWebURL,\r\n handleSessionCheck,\r\n} from \"../accessories/CommonFunctions\";\r\nimport { Separator, context } from \"../accessories/accessories\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer\";\r\nimport {\r\n NavBarContent,\r\n handleManipulateNavOptions,\r\n handleProcessNavOptions,\r\n navOption,\r\n} from \"./NavAccessories\";\r\n\r\nconst LeftNavBar = (props) => {\r\n let {\r\n isDashBoard = false,\r\n isHome = false,\r\n handleLogOut = () => {},\r\n completedPage = null,\r\n excludePageIds = [],\r\n additionalEmploymentList = [],\r\n pageIndex = { page: 0, subPage: 0 },\r\n isEsignOnly,\r\n pageId,\r\n } = props;\r\n\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { navigation, SessionId = \"\" } = contextDetails;\r\n const [currentPage, setCurrentPage] = useState(\r\n isDashBoard ? \"My Dashboard\" : props[\"activePage\"] || \"Summary Info\"\r\n );\r\n const [navLeftOptionState, setNavLeftOptionState] = useState(navOption || []);\r\n\r\n useEffect(() => {\r\n handleSessionCheck(SessionId, handleLogOut);\r\n }, [SessionId]);\r\n useEffect(() => {\r\n setCurrentPage(\r\n isDashBoard ? \"My Dashboard\" : props[\"activePage\"] || \"Summary Info\"\r\n );\r\n }, [props]);\r\n useEffect(() => {\r\n if (isHome && completedPage) {\r\n let updatedArray = (navLeftOptionState || navOption).map(\r\n (item, index) => {\r\n item[\"Status\"] = completedPage.indexOf(index) > -1 ? 1 : 0;\r\n return item;\r\n }\r\n );\r\n\r\n updatedArray = handleProcessNavOptions(\r\n updatedArray,\r\n pageIndex,\r\n additionalEmploymentList,\r\n pageId\r\n );\r\n\r\n setNavLeftOptionState([...[], ...updatedArray]);\r\n }\r\n setCurrentPage(\r\n isDashBoard ? \"My Dashboard\" : props[\"activePage\"] || \"Summary Info\"\r\n );\r\n }, [completedPage]);\r\n\r\n useEffect(() => {\r\n setNavLeftOptionState(\r\n handleManipulateNavOptions(isEsignOnly, excludePageIds)\r\n );\r\n }, [excludePageIds, isEsignOnly]);\r\n\r\n let navLeftOption = navLeftOptionState || navOption;\r\n if (props[\"loanId\"] == -999) {\r\n navLeftOption[0][\"isExpand\"] = true;\r\n }\r\n if (isDashBoard) navLeftOption = [{ Name: \"My Dashboard\" }];\r\n else {\r\n // if (navLeftOption.length > 0) navLeftOption[0][\"active\"] = true;\r\n navLeftOption = [...[{ Name: \"My Dashboard\" }], ...navLeftOption];\r\n }\r\n\r\n const navigate = (path, option) => {\r\n updateWebURL({ ...option, Path: path });\r\n if (path == \"DashBoard\") {\r\n option = { ...option, from: \"Home\", flag: \"changeActiveIndex\" };\r\n }\r\n (navigation || props[\"navigation\"]).navigate(path, option || {});\r\n setContextDetails((prevContextDetails) => {\r\n delete prevContextDetails[\"GoToNav\"];\r\n delete prevContextDetails[\"loanId\"];\r\n delete prevContextDetails[\"UserId\"];\r\n prevContextDetails[\"Path\"] = path;\r\n return { ...prevContextDetails };\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n <View\r\n style={[\r\n {\r\n width: 350,\r\n backgroundColor: \"#fff\",\r\n paddingHorizontal: 15,\r\n },\r\n web ? { position: \"fixed\", height: \"100%\" } : {},\r\n ]}\r\n >\r\n <ScrollContainer>\r\n <NavBarContent\r\n navigate={navigate}\r\n navLeftOptionState={navLeftOptionState}\r\n setNavLeftOptionState={setNavLeftOptionState}\r\n navLeftOption={navLeftOption}\r\n currentPage={currentPage}\r\n setCurrentPage={setCurrentPage}\r\n {...props}\r\n />\r\n\r\n <Separator />\r\n <Separator />\r\n <Separator />\r\n <Separator />\r\n <Separator />\r\n </ScrollContainer>\r\n </View>\r\n </>\r\n );\r\n};\r\n\r\nexport default LeftNavBar;\r\n","import React from \"react\";\r\nimport { View, StyleSheet, Platform } from \"react-native\";\r\nimport {\r\n Option,\r\n Title,\r\n InputBox,\r\n Separator,\r\n} from \"../../accessories/accessories\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport CustomTextInput from \"../../accessories/CustomTextInput\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport { web, android, ios } from \"../../accessories/Platform\";\r\nimport { capitalizeFirstLetter, log } from \"../../accessories/CommonFunctions\";\r\n\r\nconst ContactInfo = ({ detailsArr, handleOptionPress, LockLoanApp }) => {\r\n let typeTwoFields = null;\r\n try {\r\n detailsArr[\"subFields\"] = detailsArr[\"subFields\"]?.filter(\r\n (e) => e !== null\r\n );\r\n typeTwoFields =\r\n detailsArr[\"subFields\"]?.length > 0 ? detailsArr[\"subFields\"] : [];\r\n } catch (error) {}\r\n return (\r\n <View>\r\n <Title text={detailsArr[\"Title\"]} />\r\n <View>\r\n <View\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { flexDirection: \"row\", justifyContent: \"space-around\" }\r\n : { flex: 1 }\r\n }\r\n >\r\n {detailsArr[\"Options\"]?.map((item, index) => (\r\n <Option\r\n autoFocus={index == 0 && LockLoanApp == 0}\r\n key={index}\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { width: detailsArr[\"widthOption\"] }\r\n : {}\r\n }\r\n text={item[\"text\"]}\r\n value={item[\"value\"] === detailsArr[\"ColumnValue\"]}\r\n onPress={() => handleOptionPress(item[\"value\"])}\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n {typeTwoFields?.length > 0 && (\r\n <>\r\n <View>\r\n {typeTwoFields?.map((item, index) => (\r\n <View key={index}>\r\n <Title text={item[\"Title\"]} />\r\n {item[\"label\"] !== \"Down Payment\" ? (\r\n <>\r\n {item[\"type\"] === 3 ? (\r\n <>\r\n <Dropdown\r\n isValid={item[\"isValid\"]}\r\n label={item[\"label\"]}\r\n options={item[\"Option\"]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onSelect={(item_) => {\r\n detailsArr[\"onTextChange\"] !== undefined\r\n ? detailsArr[\"onTextChange\"](\r\n detailsArr[\"index\"],\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n )\r\n : handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : (\r\n <InputBox\r\n forceValidation={item[\"forceValidation\"]}\r\n autoFocus={index == 0 && LockLoanApp == 0}\r\n keyboardType={item[\"keyboardType\"]}\r\n maxLength={item[\"maxLength\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n validate={item[\"isValid\"] || false}\r\n label={item[\"label\"]}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={() =>\r\n item[\"onBlur\"] !== undefined\r\n ? item[\"onBlur\"]()\r\n : () => {}\r\n }\r\n onChangeText={(text) => {\r\n try {\r\n if (item[\"keyboardType\"]) {\r\n text = text.replace(/[^0-9]/g, \"\");\r\n }\r\n\r\n detailsArr[\"onTextChange\"] !== undefined\r\n ? detailsArr[\"onTextChange\"](\r\n detailsArr[\"index\"],\r\n item[\"ColumnName\"],\r\n text\r\n )\r\n : item[\"label\"] === \"Cell\"\r\n ? handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n undefined,\r\n \"CellPhone\"\r\n )\r\n : handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from onTextChange ====> \", e);\r\n }\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n charLength={item[\"charLength\"]}\r\n />\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <View\r\n style={[\r\n styles.inputBoxContainer,\r\n {\r\n borderColor: \"gray\",\r\n width: \"100%\",\r\n },\r\n ]}\r\n >\r\n <CustomText bold={true} style={styles.inputBoxLabel}>\r\n {item[\"label\"] || \"\"}\r\n </CustomText>\r\n <CustomTextInput\r\n onChangeText={(text) =>\r\n handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n item[\"field\"][0][\"ColumnName\"]\r\n )\r\n }\r\n value={\r\n item[\"field\"][0][\"ColumnValue\"]?.toString() || \"\"\r\n }\r\n onBlur={() => item[\"field\"][0][\"onBlur\"]()}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n keyboardType={\"default\"}\r\n style={[\r\n styles.inputBox,\r\n { width: \"63%\", marginRight: 10 },\r\n ]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomTextInput\r\n onChangeText={(text) =>\r\n handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n item[\"field\"][1][\"ColumnName\"]\r\n )\r\n }\r\n value={\r\n item[\"field\"][1][\"ColumnValue\"]?.toString() || \"\"\r\n }\r\n onBlur={() => item[\"field\"][1][\"onBlur\"]()}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n keyboardType={\"default\"}\r\n style={[styles.inputBox, { width: \"30%\" }]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 14,\r\n marginTop: 5,\r\n marginLeft: 3,\r\n }}\r\n bold={true}\r\n >\r\n %\r\n </CustomText>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n ))}\r\n </View>\r\n {detailsArr[\"footerContent\"] && detailsArr[\"footerContent\"]}\r\n {detailsArr[\"removeContent\"] && detailsArr[\"isRemove\"] && (\r\n <>\r\n <Separator />\r\n {detailsArr[\"removeContent\"]}\r\n </>\r\n )}\r\n </>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n marginTop: 8,\r\n paddingTop: web ? \"5px\" : null,\r\n alignSelf: \"flex-start\",\r\n padding: 30,\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n});\r\n\r\nexport default ContactInfo;\r\n","import React from \"react\";\r\nimport { View, StyleSheet } from \"react-native\";\r\nimport { Option, Title, InputBox } from \"../../accessories/accessories\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport { cleanValue, log } from \"../../accessories/CommonFunctions\";\r\n\r\nconst AddressHistory = ({ detailsArr, handleOptionPress, LockLoanApp }) => {\r\n let typeTwoFields = null;\r\n try {\r\n detailsArr[\"subFields\"] = detailsArr[\"subFields\"]?.filter(\r\n (e) => e !== null\r\n );\r\n typeTwoFields =\r\n detailsArr[\"subFields\"]?.length > 0 ? detailsArr[\"subFields\"] : [];\r\n } catch (error) {}\r\n return (\r\n <View>\r\n <Title text={detailsArr[\"Title\"]} />\r\n\r\n {typeTwoFields?.length > 0 && (\r\n <>\r\n {detailsArr[\"headerContent\"] && (\r\n <>\r\n <Title\r\n text={detailsArr[\"headerContent\"][\"Title\"]}\r\n style={{ marginTop: -10 }}\r\n />\r\n <View\r\n style={\r\n detailsArr[\"headerContent\"][\"widthOption\"] !== undefined\r\n ? {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n marginTop: -10,\r\n }\r\n : { flex: 1 }\r\n }\r\n >\r\n {detailsArr[\"headerContent\"][\"Options\"]?.map((item, index) => (\r\n <Option\r\n key={index}\r\n style={\r\n detailsArr[\"headerContent\"][\"widthOption\"] !== undefined\r\n ? { width: detailsArr[\"headerContent\"][\"widthOption\"] }\r\n : {}\r\n }\r\n text={item[\"text\"]}\r\n value={\r\n item[\"value\"] ===\r\n detailsArr[\"headerContent\"][\"ColumnValue\"]\r\n }\r\n onPress={() =>\r\n detailsArr[\"handleCopyPriAddress\"](\r\n detailsArr[\"index\"],\r\n detailsArr[\"headerContent\"][\"ColumnName\"],\r\n item[\"value\"]\r\n )\r\n }\r\n />\r\n ))}\r\n </View>\r\n </>\r\n )}\r\n <View>\r\n {typeTwoFields?.map((item, index) => (\r\n <View key={index}>\r\n <Title text={item[\"Title\"]} />\r\n <>\r\n {item[\"type\"] === 3 ? (\r\n <>\r\n <Dropdown\r\n isValid={item[\"isValid\"]}\r\n label={item[\"label\"]}\r\n options={item[\"Option\"]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onSelect={(item_) => {\r\n detailsArr[\"onTextChange\"] !== undefined\r\n ? detailsArr[\"onTextChange\"](\r\n detailsArr[\"index\"],\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n )\r\n : handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : (\r\n <InputBox\r\n keyboardType={item[\"keyboardType\"]}\r\n formatZero={item[\"formatZero\"]}\r\n maxLength={item[\"maxLength\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n forceValidation={item[\"forceValidation\"]}\r\n validate={item[\"isValid\"] || false}\r\n label={item[\"label\"]}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={(text) =>\r\n item[\"onBlur\"] !== undefined\r\n ? item[\"onBlur\"]()\r\n : () => {}\r\n }\r\n onChangeText={(text) => {\r\n try {\r\n if (item[\"keyboardType\"]) {\r\n text = text.replace(/[^0-9]/g, \"\");\r\n if (text == \"\") text = 0;\r\n }\r\n\r\n if (item[\"ColumnName\"] == \"Addrshistry_Months\") {\r\n if (/^(0?[1-9]|1[0-2])$/.test(text) == false) {\r\n text = 0;\r\n }\r\n }\r\n detailsArr[\"onTextChange\"] !== undefined\r\n ? detailsArr[\"onTextChange\"](\r\n detailsArr[\"index\"],\r\n item[\"ColumnName\"],\r\n text,\r\n null,\r\n item[\"label\"],\r\n detailsArr[\"isCheckAddMonthCount\"]\r\n )\r\n : handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n item[\"ColumnName\"]\r\n );\r\n } catch (e) {\r\n log(\"Error from onTextChange ====> \", e);\r\n }\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n />\r\n )}\r\n </>\r\n </View>\r\n ))}\r\n </View>\r\n </>\r\n )}\r\n {detailsArr[\"footerContent\"] && (\r\n <>\r\n <Title text={detailsArr[\"footerContent\"][\"Title\"]} />\r\n <View style={{ flex: 1 }}>\r\n {detailsArr[\"footerContent\"][\"Options\"]?.map((item, index) => (\r\n <Option\r\n key={index}\r\n text={item[\"text\"]}\r\n value={\r\n item[\"value\"] === detailsArr[\"footerContent\"][\"ColumnValue\"]\r\n }\r\n onPress={() => {\r\n try {\r\n detailsArr[\"onTextChange\"] !== undefined\r\n ? detailsArr[\"onTextChange\"](\r\n detailsArr[\"index\"],\r\n detailsArr[\"footerContent\"][\"ColumnName\"],\r\n item[\"value\"],\r\n null,\r\n null,\r\n null,\r\n detailsArr[\"prevAddIndex\"]\r\n )\r\n : handleOptionPress(\r\n item[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"],\r\n detailsArr[\"index\"] || -1\r\n );\r\n } catch (e) {\r\n console.log(\"Error from ====>\", e);\r\n }\r\n }}\r\n />\r\n ))}\r\n </View>\r\n {detailsArr[\"footerContent\"].subFields && (\r\n <>\r\n {Object.keys(detailsArr[\"footerContent\"][\"subFields\"]).length >\r\n 0 && (\r\n <InputBox\r\n keyboardType={\r\n detailsArr[\"footerContent\"][\"subFields\"][\"keyboardType\"]\r\n }\r\n maxLength={\r\n detailsArr[\"footerContent\"][\"subFields\"][\"maxLength\"]\r\n }\r\n isCurrency={\r\n detailsArr[\"footerContent\"][\"subFields\"][\"isCurrency\"]\r\n }\r\n validate={\r\n detailsArr[\"footerContent\"][\"subFields\"][\"isValid\"] || false\r\n }\r\n label={detailsArr[\"footerContent\"][\"subFields\"][\"label\"]}\r\n placeholder={\r\n detailsArr[\"footerContent\"][\"subFields\"][\"placeholder\"] ||\r\n detailsArr[\"footerContent\"][\"subFields\"][\"label\"]\r\n }\r\n onBlur={() =>\r\n detailsArr[\"footerContent\"][\"subFields\"][\"onBlur\"] !==\r\n undefined\r\n ? detailsArr[\"footerContent\"][\"subFields\"][\"onBlur\"]()\r\n : () => {}\r\n }\r\n onFocus={(event) => {\r\n let val =\r\n detailsArr[\"footerContent\"][\"subFields\"][\"ColumnValue\"],\r\n text =\r\n cleanValue(val) == 0\r\n ? \"\"\r\n : val?.toString()?.replaceAll(\"$\", \"\");\r\n detailsArr[\"onTextChange\"] !== undefined\r\n ? detailsArr[\"onTextChange\"](\r\n detailsArr[\"index\"],\r\n detailsArr[\"footerContent\"][\"subFields\"][\r\n \"ColumnName\"\r\n ],\r\n text\r\n )\r\n : handleOptionPress(\r\n text,\r\n true,\r\n detailsArr[\"index\"],\r\n detailsArr[\"footerContent\"][\"subFields\"][\"ColumnName\"]\r\n );\r\n }}\r\n onChangeText={(text) => {\r\n try {\r\n detailsArr[\"onTextChange\"] !== undefined\r\n ? detailsArr[\"onTextChange\"](\r\n detailsArr[\"index\"],\r\n detailsArr[\"footerContent\"][\"subFields\"][\r\n \"ColumnName\"\r\n ],\r\n text\r\n )\r\n : handleOptionPress(\r\n text,\r\n true,\r\n detailsArr[\"index\"],\r\n detailsArr[\"footerContent\"][\"subFields\"][\r\n \"ColumnName\"\r\n ]\r\n );\r\n } catch (e) {\r\n log(\"Error from onTextChange ====> \", e);\r\n }\r\n }}\r\n value={detailsArr[\"footerContent\"][\"subFields\"][\r\n \"ColumnValue\"\r\n ]?.toString()}\r\n />\r\n )}\r\n </>\r\n )}\r\n </>\r\n )}\r\n {detailsArr[\"footerContent\"][\"footerButton\"] &&\r\n detailsArr[\"footerContent\"][\"footerButton\"]}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n marginTop: 8,\r\n paddingTop: web ? \"5px\" : null,\r\n alignSelf: \"flex-start\",\r\n padding: 30,\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n});\r\n\r\nexport default AddressHistory;\r\n","import React from \"react\";\r\nimport { View, StyleSheet } from \"react-native\";\r\nimport { Option, Title, InputBox } from \"../../accessories/accessories\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport CustomTextInput from \"../../accessories/CustomTextInput\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport { log } from \"../../accessories/CommonFunctions\";\r\n\r\nconst CreditScore = ({ detailsArr, handleOptionPress }) => {\r\n detailsArr[\"subFields\"] = detailsArr[\"subFields\"]?.filter((e) => e !== null);\r\n const typeTwoFields =\r\n detailsArr[\"subFields\"]?.length > 0 ? detailsArr[\"subFields\"] : [];\r\n\r\n return (\r\n <>\r\n {detailsArr[\"type\"] === -1 ? (\r\n <View>{detailsArr[\"bodyContent\"]}</View>\r\n ) : (\r\n <View>\r\n <Title text={detailsArr[\"Title\"]} />\r\n {detailsArr[\"bodyText\"] && detailsArr[\"bodyText\"]}\r\n <View>\r\n <View\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { flexDirection: \"row\", justifyContent: \"space-around\" }\r\n : { flex: 1 }\r\n }\r\n >\r\n {detailsArr[\"Options\"]?.map((item, index) => (\r\n <Option\r\n autoFocus={index == 0}\r\n key={index}\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { width: detailsArr[\"widthOption\"] }\r\n : {}\r\n }\r\n type={item[\"type\"]}\r\n text={item[\"text\"]}\r\n value={item[\"value\"] === detailsArr[\"ColumnValue\"]}\r\n onPress={() => handleOptionPress(item[\"value\"])}\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n {typeTwoFields?.length > 0 && (\r\n <View>\r\n {typeTwoFields?.map((item, index) => (\r\n <View key={index}>\r\n <Title text={item[\"Title\"]} />\r\n {item[\"label\"] !== \"Down Payment\" ? (\r\n <InputBox\r\n keyboardType={item[\"keyboardType\"]}\r\n maxLength={item[\"maxLength\"]}\r\n forceValidation={item[\"forceValidation\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n label={item[\"label\"]}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={() =>\r\n item[\"onBlur\"] !== undefined\r\n ? item[\"onBlur\"]()\r\n : () => {}\r\n }\r\n onChangeText={(text) => {\r\n try {\r\n handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n />\r\n ) : (\r\n <>\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <View\r\n style={[\r\n styles.inputBoxContainer,\r\n {\r\n borderColor: \"gray\",\r\n width: \"100%\",\r\n },\r\n ]}\r\n >\r\n <CustomText bold={true} style={styles.inputBoxLabel}>\r\n {item[\"label\"] || \"\"}\r\n </CustomText>\r\n <CustomTextInput\r\n onChangeText={(text) =>\r\n handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n item[\"field\"][0][\"ColumnName\"]\r\n )\r\n }\r\n value={\r\n item[\"field\"][0][\"ColumnValue\"]?.toString() || \"\"\r\n }\r\n onBlur={() => item[\"field\"][0][\"onBlur\"]()}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n keyboardType={\"default\"}\r\n style={[\r\n styles.inputBox,\r\n { width: \"63%\", marginRight: 10 },\r\n ]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomTextInput\r\n onChangeText={(text) =>\r\n handleOptionPress(\r\n text,\r\n true,\r\n index,\r\n item[\"field\"][1][\"ColumnName\"]\r\n )\r\n }\r\n value={\r\n item[\"field\"][1][\"ColumnValue\"]?.toString() || \"\"\r\n }\r\n onBlur={() => item[\"field\"][1][\"onBlur\"]()}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n keyboardType={\"default\"}\r\n style={[styles.inputBox, { width: \"30%\" }]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 14,\r\n marginTop: 5,\r\n marginLeft: 3,\r\n }}\r\n bold={true}\r\n >\r\n %\r\n </CustomText>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n ))}\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n marginTop: 8,\r\n paddingTop: web ? 5 : null,\r\n alignSelf: \"flex-start\",\r\n padding: 30,\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n // outlineWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n});\r\n\r\nexport default CreditScore;\r\n","import React from \"react\";\r\nimport { View, StyleSheet } from \"react-native\";\r\nimport { Option, Title, InputBox } from \"../../accessories/accessories\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport { value } from \"deprecated-react-native-prop-types/DeprecatedTextInputPropTypes\";\r\nimport { cleanValue, log } from \"../../accessories/CommonFunctions\";\r\n\r\nconst Government = ({ detailsArr, handleOptionPress }) => {\r\n detailsArr[\"subFields\"] = detailsArr[\"subFields\"]?.filter((e) => e !== null);\r\n\r\n const typeTwoFields =\r\n detailsArr[\"subFields\"]?.length > 0 ? detailsArr[\"subFields\"] : [];\r\n const getOptionValue = (item, item_) => {\r\n if (item[\"isBitWise\"]) {\r\n return (\r\n (Number(item_[\"value\"]) & Number(item[\"ColumnValue\"])) ==\r\n Number(item_[\"value\"])\r\n );\r\n } else return item_[\"value\"] === item[\"ColumnValue\"];\r\n };\r\n const getTextAreaProps = (type) => {\r\n return type === 5 ? { textAlignVertical: \"top\", multiline: true } : {};\r\n };\r\n return (\r\n <View>\r\n <Title text={detailsArr[\"Title\"]} />\r\n <View>\r\n <View\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { flexDirection: \"row\", justifyContent: \"space-around\" }\r\n : { flex: 1 }\r\n }\r\n >\r\n {detailsArr[\"Options\"]?.map((item, index) => (\r\n <Option\r\n key={index}\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { width: detailsArr[\"widthOption\"] }\r\n : {}\r\n }\r\n text={item[\"text\"]}\r\n value={item[\"value\"] === detailsArr[\"ColumnValue\"]}\r\n onPress={() =>\r\n handleOptionPress(item[\"value\"], null, null, null, null)\r\n }\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n {typeTwoFields?.length > 0 && (\r\n <>\r\n <View>\r\n {typeTwoFields?.map((item, index) => (\r\n <View key={index}>\r\n <Title\r\n text={item[\"Title\"]}\r\n style={[\r\n {\r\n marginBottom: item[\"type\"] === 1 ? 10 : 15,\r\n },\r\n item[\"isYellow\"] && {\r\n backgroundColor: \"yellow\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n alignSelf: \"flex-start\",\r\n },\r\n ]}\r\n />\r\n {[2, 5].indexOf(item[\"type\"]) > -1 ? (\r\n <InputBox\r\n {...getTextAreaProps(item[\"type\"])}\r\n label={item[\"label\"]}\r\n charLength={item[\"charLength\"]}\r\n keyboardType={item[\"keyboardType\"]}\r\n maxLength={item[\"maxLength\"]}\r\n forceValidation={item[\"forceValidation\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n disabled={item[\"disabled\"] || false}\r\n validate={item[\"isValid\"] || false}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={() =>\r\n item[\"onBlur\"] !== undefined\r\n ? item[\"onBlur\"](item[\"ColumnValue\"]?.toString())\r\n : () => {}\r\n }\r\n onChangeText={(text) => {\r\n try {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](item[\"ColumnName\"], text);\r\n else handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n onFocus={() => {\r\n let val = item[\"ColumnValue\"]?.toString();\r\n if (val?.includes(\"$\")) {\r\n let text =\r\n cleanValue(val) == 0 ? \"\" : val?.replaceAll(\"$\", \"\");\r\n try {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n text\r\n );\r\n else handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }\r\n }}\r\n />\r\n ) : item[\"type\"] === 3 ? (\r\n <>\r\n <Dropdown\r\n isValid={item[\"isValid\"]}\r\n label={item[\"label\"]}\r\n options={item[\"Option\"]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onSelect={(item_) => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : item[\"type\"] === 1 ? (\r\n <>\r\n <View>\r\n <View\r\n style={\r\n item[\"widthOption\"] !== undefined\r\n ? {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n }\r\n : { flex: 1 }\r\n }\r\n >\r\n {item[\"Options\"]?.map((item_, index) => (\r\n <Option\r\n key={index}\r\n style={\r\n item[\"widthOption\"] !== undefined\r\n ? { width: item[\"widthOption\"] }\r\n : {}\r\n }\r\n text={item_[\"text\"]}\r\n value={getOptionValue(item, item_)}\r\n onPress={() => {\r\n if (item[\"onPress\"] !== undefined) {\r\n item[\"onPress\"]();\r\n } else if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"],\r\n null\r\n );\r\n }}\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </View>\r\n ))}\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n marginTop: 8,\r\n paddingTop: web ? \"5px\" : null,\r\n alignSelf: \"flex-start\",\r\n padding: 30,\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n});\r\n\r\nexport default Government;\r\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\r\nimport {\r\n View,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Dimensions,\r\n ScrollView,\r\n} from \"react-native\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport {\r\n IconButton,\r\n InputBox,\r\n ModalButton,\r\n Separator,\r\n Title,\r\n context,\r\n} from \"../../accessories/accessories\";\r\nimport {\r\n WrappedTextView,\r\n handleAPI,\r\n handleOpenScanDocFile,\r\n log,\r\n} from \"../../accessories/CommonFunctions\";\r\nimport ArrowSpinner from \"../../accessories/ArrowSpinner\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport { removeDuplicates } from \"../../accessories/CommonFunctions\";\r\nimport MaterialIcons from \"react-native-vector-icons/MaterialIcons\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport { useDropzone } from \"react-dropzone\";\r\n\r\nconst DocumentViewer = (props) => {\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n\r\n const {\r\n handleToggleDrawer = () => {},\r\n handleAPIGetLoanDetails = () => {},\r\n handleSelectFileDocView = () => {},\r\n handleUnSavedFileStatus = () => {},\r\n processingStatus: iProcessingStatus,\r\n documentArray = [],\r\n } = props;\r\n\r\n const [documentDetails, setDocumentDetails] = useState(null),\r\n [processingStatus, setProcessingStatus] = useState(null),\r\n [existDocumentArray, setExistDocumentArray] = useState(null),\r\n [parentDocumentDetails, setParentDocumentDetails] = useState([]),\r\n [acceptedFiles, setAcceptedFiles] = useState(null),\r\n [queryStringDetails, setQueryStringDetails] = useState({}),\r\n [editDetails, setEditDetails] = useState({ isVisible: !true }),\r\n [additionalBorrowerInfo, setAdditionalBorrowerInfo] = useState([]),\r\n [additionalEmploymentInfo, setAdditionalEmploymentInfo] = useState([]),\r\n [additionalBankInfo, setAdditionalBankInfo] = useState([]),\r\n [loanData, setLoanData] = useState({}),\r\n [isSaving, setIsSaving] = useState(false),\r\n [borrowerOption, setBorrowerOption] = useState(null),\r\n [employerOption, setEmployerOption] = useState(null),\r\n [bankOption, setBankOption] = useState(null);\r\n const [entityTypeList, setEntityTypeList] = useState({\r\n borrowerEntityTypeList: [2],\r\n borrowerEmployerEntityTypeList: [6],\r\n bankEntityTypeList: [7],\r\n loanEntityTypeList: [1, 17],\r\n });\r\n const {\r\n borrowerEmployerEntityTypeList,\r\n borrowerEntityTypeList,\r\n bankEntityTypeList,\r\n loanEntityTypeList,\r\n } = entityTypeList;\r\n\r\n useEffect(() => {\r\n if (documentArray.length > 0) {\r\n setExistDocumentArray(documentArray);\r\n } else {\r\n setExistDocumentArray(null);\r\n }\r\n }, [documentArray]);\r\n\r\n useEffect(() => {\r\n if (Object.keys(queryStringDetails).length > 0) {\r\n handleAPI({\r\n name: \"GetLoanAppWizard\",\r\n params: {\r\n LoanId: queryStringDetails[\"LoanId\"],\r\n SessionId: queryStringDetails[\"SessionId\"],\r\n btnflag: 0,\r\n },\r\n })\r\n .then((response) => {\r\n response = response.split(\"~\");\r\n\r\n if (response[0] != \"\" && response[0] != null) {\r\n let loanData_ = JSON.parse(response[0])[0];\r\n setLoanData(loanData_);\r\n }\r\n\r\n if (response[8] != \"\" && response[8] != null)\r\n setAdditionalBorrowerInfo(JSON.parse(response[8]) || []);\r\n\r\n if (response[11] != \"\" && response[11] != null)\r\n setAdditionalBankInfo(JSON.parse(response[11]));\r\n\r\n if (response[12] != \"\" && response[12] != null)\r\n setAdditionalEmploymentInfo(JSON.parse(response[12]));\r\n })\r\n .catch((err) => console.log(\"Error from GetLoanAppWizard ====> \", err));\r\n }\r\n }, [queryStringDetails]);\r\n\r\n const prePare = async () => {\r\n const LoanId = Number(props[\"LoanId\"]),\r\n SessionId = props[\"SessionId\"],\r\n ScanDocId = Number(props[\"ScanDocId\"]),\r\n docId = Number(props[\"doctype\"]),\r\n iEntityId = Number(props[\"iiEntityId\"]),\r\n EntityTypeId = Number(props[\"EntityTypeId\"]);\r\n\r\n if (LoanId) {\r\n setQueryStringDetails({ LoanId, SessionId, ScanDocId, docId, iEntityId });\r\n setParentDocumentDetails(props[\"iEditUploadDetails\"]);\r\n let SecureDocResult = \"\",\r\n JsonFileList = [],\r\n SplitSecureResult = [],\r\n jsonObj = [];\r\n\r\n if (existDocumentArray.length > 0) {\r\n jsonObj = existDocumentArray;\r\n } else {\r\n SecureDocResult = await handleGetSecureDoc(LoanId);\r\n\r\n SplitSecureResult = SecureDocResult.split(\"~\");\r\n jsonObj =\r\n SplitSecureResult[1].length > 0\r\n ? JSON.parse(SplitSecureResult[1])\r\n : [];\r\n }\r\n\r\n if (borrowerEmployerEntityTypeList.includes(EntityTypeId)) {\r\n JsonFileList = jsonObj.filter(\r\n ({\r\n ScanDocId: fScanDocId,\r\n Scandoctype,\r\n iEntityId: fEntityId,\r\n iRecId: fRecId,\r\n UseDoc,\r\n }) =>\r\n fScanDocId &&\r\n UseDoc === 2 &&\r\n Scandoctype === docId &&\r\n ([169].includes(Number(docId)) || [16].includes(EntityTypeId)\r\n ? fEntityId\r\n : fRecId) == iEntityId\r\n );\r\n } else if (\r\n [...borrowerEntityTypeList, ...bankEntityTypeList].includes(\r\n EntityTypeId\r\n )\r\n ) {\r\n JsonFileList = jsonObj.filter(\r\n ({\r\n ScanDocId: fScanDocId,\r\n Scandoctype,\r\n iEntityId: fEntityId,\r\n iRecId: fRecId,\r\n UseDoc,\r\n }) =>\r\n fScanDocId &&\r\n UseDoc === 2 &&\r\n Scandoctype === docId &&\r\n ([772, 373].includes(docId) ||\r\n ([88, 62].includes(docId) && EntityTypeId == 2)\r\n ? fRecId\r\n : fEntityId) == iEntityId\r\n );\r\n } else if (loanEntityTypeList.includes(EntityTypeId)) {\r\n JsonFileList = jsonObj.filter(\r\n ({ ScanDocId: fScanDocId, Scandoctype, UseDoc }) =>\r\n fScanDocId && UseDoc === 2 && Scandoctype === docId\r\n );\r\n }\r\n\r\n JsonFileList = JsonFileList.sort(\r\n (a, b) => b[\"ScanDocId\"] - a[\"ScanDocId\"]\r\n );\r\n JsonFileList = JsonFileList || [];\r\n setDocumentDetails(JsonFileList);\r\n setProcessingStatus(null);\r\n if (JsonFileList.length == 0) {\r\n handleToggleDrawer(false);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n try {\r\n if (contextDetails?.cacheDocDetails) {\r\n setDocumentDetails(\r\n contextDetails?.cacheDocDetails?.documentDetails || []\r\n );\r\n setQueryStringDetails(\r\n contextDetails?.cacheDocDetails?.queryStringDetails\r\n );\r\n setParentDocumentDetails(\r\n contextDetails?.cacheDocDetails?.parentDocumentDetails\r\n );\r\n } else if (existDocumentArray !== null) {\r\n prePare();\r\n }\r\n } catch (e) {}\r\n if (iProcessingStatus === \"cancelConfirmation\") {\r\n setProcessingStatus(iProcessingStatus || null);\r\n }\r\n }, [props, existDocumentArray, entityTypeList]);\r\n\r\n useEffect(() => {\r\n handleUnSavedFileStatus((acceptedFiles || []).length > 0);\r\n }, [acceptedFiles]);\r\n\r\n const handleGetOptionDetails = async () => {\r\n handleAPI({\r\n name: \"GetBorEmpBankOptions\",\r\n params: {\r\n LoanId: props[\"LoanId\"],\r\n },\r\n })\r\n .then(async (response) => {\r\n response = JSON.parse(response);\r\n\r\n response.forEach((item) => {\r\n let key = Object.keys(item)[0];\r\n item[key].forEach((object, index) => {\r\n object.label = object.label.trim() || key + \" \" + (index - 1);\r\n return object;\r\n });\r\n });\r\n\r\n setBorrowerOption(response[0][\"Borrower\"]);\r\n setAdditionalBorrowerInfo(response[0][\"Borrower\"].slice(2, 99));\r\n setEmployerOption(response[1][\"Employer\"]);\r\n setAdditionalEmploymentInfo(response[1][\"Employer\"].slice(2, 99));\r\n setBankOption(response[2][\"Bank\"]);\r\n setAdditionalBankInfo(response[2][\"Bank\"].slice(2, 99));\r\n\r\n const { EntityList } = response[3];\r\n\r\n setEntityTypeList(() => {\r\n return {\r\n borrowerEmployerEntityTypeList: JSON[\"parse\"](\r\n EntityList[0][\"label\"]\r\n ).map((val) => Number(val)),\r\n borrowerEntityTypeList: JSON[\"parse\"](EntityList[1][\"label\"]).map(\r\n (val) => Number(val)\r\n ),\r\n bankEntityTypeList: JSON[\"parse\"](EntityList[2][\"label\"]).map(\r\n (val) => Number(val)\r\n ),\r\n loanEntityTypeList: JSON[\"parse\"](EntityList[3][\"label\"]).map(\r\n (val) => Number(val)\r\n ),\r\n };\r\n });\r\n\r\n let { iAcceptedFiles = [], iEditUploadDetails } = props;\r\n if (iAcceptedFiles.length) {\r\n setAcceptedFiles(iAcceptedFiles);\r\n setEditDetails(iEditUploadDetails);\r\n }\r\n })\r\n .catch((err) =>\r\n console.log(\"Error from GetBorEmpBankOptions ====> \", err)\r\n );\r\n };\r\n useEffect(() => {\r\n (async () => {\r\n if (props[\"LoanId\"] > 0) {\r\n await handleGetOptionDetails();\r\n }\r\n })();\r\n }, [props[\"LoanId\"]]);\r\n\r\n const handleCancelEdit = async () => {\r\n if ((acceptedFiles || []).length) {\r\n setProcessingStatus(\"cancelConfirmation\");\r\n } else {\r\n setEditDetails({ ...editDetails, isVisible: false });\r\n }\r\n };\r\n\r\n const handleGetSecureDoc = async (LoanId) => {\r\n return await handleAPI({\r\n name: \"GetSecureDoc\",\r\n params: { LoanId },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((e) => console.log(\"Error from GetSecureDoc ====> \", e));\r\n };\r\n\r\n const handleOpenFile = async (docId) => {\r\n let url = await handleOpenScanDocFile(\r\n queryStringDetails[\"SessionId\"],\r\n docId,\r\n queryStringDetails[\"LoanId\"]\r\n );\r\n\r\n if (web) {\r\n if (window.location.host.indexOf(\"localhost\") !== -1)\r\n url = url.replace(\"../../../\", REDIRECT_URL);\r\n window.open(\r\n url,\r\n \"_blank\",\r\n \"width=750,height=780,resizable=1,scrollbars=1\"\r\n );\r\n } else {\r\n url = url.replace(\"../../../\", REDIRECT_URL);\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n cacheDocDetails: {\r\n documentDetails,\r\n queryStringDetails,\r\n parentDocumentDetails,\r\n },\r\n };\r\n });\r\n props.navigation.navigate(\"Pdf\", {\r\n url,\r\n backTo: \"Home\",\r\n GoToNav: 9,\r\n isNeedBack: true,\r\n onBack: () => {\r\n handleToggleDrawer(true);\r\n },\r\n });\r\n }\r\n handleToggleDrawer(false);\r\n };\r\n const handleResetState = () => {\r\n log(\"States are cleared in\", \"Doc Viewer\");\r\n setDocumentDetails(null);\r\n setQueryStringDetails({});\r\n setEditDetails({ isVisible: !true });\r\n setAdditionalBorrowerInfo([]);\r\n setAdditionalEmploymentInfo([]);\r\n setAdditionalBankInfo([]);\r\n setLoanData({});\r\n setIsSaving(false);\r\n setBorrowerOption([\r\n { value: 0, label: \"Select\" },\r\n { value: 1, label: \"Add New\" },\r\n ]);\r\n setEmployerOption([\r\n { value: 0, label: \"Select\" },\r\n { value: 1, label: \"Add New\" },\r\n ]);\r\n setBankOption([\r\n { value: 0, label: \"Select\" },\r\n { value: 1, label: \"Add New\" },\r\n ]);\r\n };\r\n const UploadButton = () => {\r\n return !web ? (\r\n <ModalButton\r\n onPress={() => {\r\n handleSelectFileDocView();\r\n }}\r\n icon={\r\n <View style={{ marginBottom: -3 }}>\r\n <MaterialIcons name=\"photo-library\" color=\"#fff\" size={16} />\r\n </View>\r\n }\r\n title=\" Upload Additional Document\"\r\n textStyle={{\r\n alignSelf: \"flex-end\",\r\n minHeight: 25,\r\n marginBottom: -3,\r\n }}\r\n style={{\r\n borderRadius: 50,\r\n marginBottom: 10,\r\n paddingHorizontal: 30,\r\n paddingVertical: 25,\r\n alignSelf: \"center\",\r\n backgroundColor: \"#295B9A\",\r\n }}\r\n />\r\n ) : (\r\n <UploadButtonWeb />\r\n );\r\n };\r\n const UploadButtonWeb = () => {\r\n const onDrop = useCallback((acceptedFiles) => {\r\n const { EntityTypeId } = parentDocumentDetails,\r\n isDirectSave =\r\n (borrowerEntityTypeList.includes(EntityTypeId) &&\r\n borrowerOption.length >= 3) ||\r\n (bankEntityTypeList.includes(EntityTypeId) &&\r\n bankOption.length >= 3) ||\r\n loanEntityTypeList.includes(EntityTypeId);\r\n\r\n if (isDirectSave)\r\n handleSaveEditDetails(acceptedFiles, parentDocumentDetails);\r\n else {\r\n setAcceptedFiles(acceptedFiles);\r\n setEditDetails(parentDocumentDetails);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps } = useDropzone({ onDrop });\r\n\r\n return (\r\n <div\r\n {...getRootProps()}\r\n style={{\r\n borderWidth: 1,\r\n borderRadius: 50,\r\n marginBottom: 10,\r\n alignSelf: \"center\",\r\n backgroundColor: \"#295B9A\",\r\n alignContent: \"center\",\r\n display: \"grid\",\r\n cursor: \"pointer\",\r\n padding: \"10px 30px\",\r\n }}\r\n >\r\n <input {...getInputProps()} />\r\n <CustomText\r\n style={{\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n justifySelf: \"center\",\r\n paddingVertical: 8,\r\n display: \"flex\",\r\n }}\r\n bold={true}\r\n >\r\n <MaterialIcons name=\"photo-library\" color=\"#fff\" size={16} /> Upload\r\n Additional Document\r\n </CustomText>\r\n </div>\r\n );\r\n };\r\n\r\n const GetEditScreen = () => {\r\n let { docId, ientityId, iRecId, EntityTypeId } = editDetails,\r\n employerValue = 0;\r\n\r\n if (bankEntityTypeList.includes(EntityTypeId)) {\r\n employerValue =\r\n ientityId > 0\r\n ? ientityId\r\n : additionalEmploymentInfo.length === 0\r\n ? 1\r\n : null;\r\n } else {\r\n employerValue =\r\n ientityId > 0 && docId !== 169\r\n ? ientityId\r\n : additionalEmploymentInfo.length === 0\r\n ? 1\r\n : null;\r\n }\r\n if (\r\n (bankEntityTypeList.includes(EntityTypeId)\r\n ? bankOption\r\n : employerOption\r\n ).filter((item) => item.value == ientityId).length == 0\r\n ) {\r\n ientityId = -99;\r\n }\r\n\r\n return (\r\n <>\r\n <Separator />\r\n <ScrollView\r\n showsVerticalScrollIndicator={false}\r\n showsHorizontalScrollIndicator={false}\r\n >\r\n <View>\r\n {[\r\n ...borrowerEmployerEntityTypeList,\r\n ...borrowerEntityTypeList,\r\n ].includes(EntityTypeId) && (\r\n <View>\r\n <Title\r\n text=\"Which borrower is this for?\"\r\n style={{ marginBottom: 15, fontSize: web ? 24 : 18 }}\r\n />\r\n <Dropdown\r\n isValid={true}\r\n label=\"Borrower\"\r\n options={borrowerOption}\r\n value={editDetails[\"iRecId\"]}\r\n onSelect={(item) => {\r\n setEditDetails({\r\n ...editDetails,\r\n iRecId: parseInt(item[\"value\"]),\r\n });\r\n }}\r\n isMap={true}\r\n // disabled={docId == 772 || docId == 213 || docId == 253}\r\n />\r\n {editDetails[\"iRecId\"] === 1 && (\r\n <View>\r\n <InputBox\r\n validate={!(editDetails[\"firstName\"] || \"\")}\r\n label=\"First Name\"\r\n placeholder=\"First Name\"\r\n onChangeText={(text) => {\r\n setEditDetails({ ...editDetails, firstName: text });\r\n }}\r\n value={(editDetails[\"firstName\"] || \"\")?.toString()}\r\n />\r\n <InputBox\r\n validate={!(editDetails[\"lastName\"] || \"\")}\r\n label=\"Last Name\"\r\n placeholder=\"Last Name\"\r\n onChangeText={(text) => {\r\n setEditDetails({ ...editDetails, lastName: text });\r\n }}\r\n value={(editDetails[\"lastName\"] || \"\")?.toString()}\r\n />\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n {bankEntityTypeList.includes(EntityTypeId) && (\r\n <>\r\n <View>\r\n <Title\r\n text={`Which bank is this for?`}\r\n style={{ marginBottom: 15, fontSize: web ? 24 : 18 }}\r\n />\r\n <Dropdown\r\n isValid={true}\r\n label=\"Bank\"\r\n options={bankOption}\r\n value={ientityId}\r\n onSelect={(item_) => {\r\n setEditDetails({\r\n ...editDetails,\r\n ientityId: item_[\"value\"],\r\n });\r\n }}\r\n isMap={true}\r\n // disabled={docId == 43}\r\n />\r\n {editDetails[\"ientityId\"] == 1 && (\r\n <InputBox\r\n validate={!(editDetails[\"BankName\"] || \"\")}\r\n label=\"Bank Name\"\r\n placeholder=\"Bank Name\"\r\n onChangeText={(text) => {\r\n setEditDetails({ ...editDetails, BankName: text });\r\n }}\r\n value={(editDetails[\"BankName\"] || \"\")?.toString()}\r\n />\r\n )}\r\n </View>\r\n </>\r\n )}\r\n {borrowerEmployerEntityTypeList.includes(EntityTypeId) && (\r\n <>\r\n <View>\r\n <Title\r\n text={`Which Employer is this for?`}\r\n style={{\r\n marginBottom: 15,\r\n fontSize: web ? 24 : 18,\r\n }}\r\n />\r\n\r\n <Dropdown\r\n isValid={true}\r\n label=\"Employer\"\r\n options={employerOption}\r\n value={editDetails[\"ientityId\"]}\r\n onSelect={(item) => {\r\n console.log(\r\n 'parseInt(item[\"value\"])',\r\n parseInt(item[\"value\"])\r\n );\r\n setEditDetails({\r\n ...editDetails,\r\n ientityId: parseInt(item[\"value\"]),\r\n });\r\n }}\r\n isMap={true}\r\n />\r\n {editDetails[\"ientityId\"] === 1 && (\r\n <InputBox\r\n validate={!(editDetails[\"employerName\"] || \"\")}\r\n label=\"Employer Name\"\r\n placeholder=\"Employer Name\"\r\n onChangeText={(text) => {\r\n try {\r\n setEditDetails({\r\n ...editDetails,\r\n employerName: text,\r\n });\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }}\r\n value={(editDetails[\"employerName\"] || \"\")?.toString()}\r\n />\r\n )}\r\n </View>\r\n </>\r\n )}\r\n\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignSelf:\r\n processingStatus === \"cancelConfirmation\"\r\n ? \"flex-start\"\r\n : \"flex-end\",\r\n }}\r\n >\r\n {isSaving && (\r\n <View style={{ flexDirection: \"row\" }}>\r\n <ArrowSpinner\r\n style={{ height: 22, alignSelf: \"flex-end\" }}\r\n size={20}\r\n />\r\n <CustomText style={{ fontSize: 14, alignSelf: \"flex-end\" }}>\r\n {\" \"}\r\n File is Uploading...{\" \"}\r\n </CustomText>\r\n </View>\r\n )}\r\n\r\n {processingStatus === \"cancelConfirmation\" && web && (\r\n <View style={{ flexDirection: \"column\" }}>\r\n <View>\r\n <Title\r\n style={{ fontSize: web ? 22 : 18 }}\r\n text=\"Are you sure you want to Cancel?\"\r\n />\r\n </View>\r\n <View style={{ flexDirection: \"row\" }}>\r\n <IconButton\r\n buttonType=\"secondary\"\r\n title=\"No\"\r\n onPress={async () => {\r\n setProcessingStatus(null);\r\n }}\r\n style={{ marginRight: 15 }}\r\n />\r\n <IconButton\r\n title=\"Yes\"\r\n onPress={async () => {\r\n setAcceptedFiles(null);\r\n setEditDetails({ ...editDetails, isVisible: false });\r\n setProcessingStatus(null);\r\n }}\r\n style={{ marginRight: 5 }}\r\n />\r\n </View>\r\n </View>\r\n )}\r\n {(processingStatus !== \"cancelConfirmation\" || !web) && (\r\n <>\r\n <IconButton\r\n buttonType=\"secondary\"\r\n title=\"Cancel\"\r\n onPress={handleCancelEdit}\r\n style={{ marginRight: 15 }}\r\n />\r\n <IconButton\r\n title=\"Save\"\r\n onPress={() => {\r\n setProcessingStatus(null);\r\n setIsSaving(true);\r\n handleSaveEditDetails();\r\n }}\r\n />\r\n </>\r\n )}\r\n </View>\r\n </View>\r\n </ScrollView>\r\n </>\r\n );\r\n };\r\n\r\n const handleSaveEditDetails = async (\r\n iAcceptedFiles = acceptedFiles,\r\n iUploadDetails = editDetails,\r\n isClose\r\n ) => {\r\n setProcessingStatus(\"uploadingFile\");\r\n let {\r\n docId,\r\n ientityId,\r\n iRecId,\r\n firstName,\r\n lastName,\r\n employerName,\r\n EntityTypeId,\r\n BankName,\r\n } = iUploadDetails || editDetails;\r\n\r\n if (\r\n (bankEntityTypeList.includes(EntityTypeId)\r\n ? bankOption\r\n : employerOption\r\n ).filter((item) => item.value == ientityId).length == 0\r\n ) {\r\n ientityId = -99;\r\n }\r\n\r\n if (borrowerEmployerEntityTypeList.includes(EntityTypeId)) {\r\n let WhichBorrower = loanData[\"UserId\"],\r\n WhichEntity = loanData[\"Employer_name\"];\r\n\r\n if (iRecId) {\r\n WhichBorrower =\r\n iRecId > 1\r\n ? iRecId\r\n : await handleSaveAdditionalInfo(\r\n -99,\r\n [\r\n {\r\n FirstName: firstName || \"Borrower First\",\r\n LastName: lastName || \"Borrower Last\",\r\n },\r\n ],\r\n 0,\r\n \"Borrower\"\r\n );\r\n }\r\n\r\n WhichEntity =\r\n ientityId > 1\r\n ? ientityId\r\n : await handleSaveAdditionalInfo(\r\n -11,\r\n [\r\n {\r\n Empmt_Emp_Name: employerName || \"Employer\",\r\n CustId: WhichBorrower,\r\n },\r\n ],\r\n WhichBorrower,\r\n \"Employer\"\r\n );\r\n\r\n handleSaveUploadedFiles(\r\n WhichEntity,\r\n WhichBorrower,\r\n docId,\r\n isClose,\r\n iAcceptedFiles,\r\n iUploadDetails\r\n );\r\n }\r\n\r\n if (bankEntityTypeList.includes(EntityTypeId)) {\r\n let WhichBorrower = loanData[\"UserId\"],\r\n WhichEntity = 0;\r\n\r\n if (iRecId) {\r\n WhichBorrower =\r\n iRecId > 1\r\n ? iRecId\r\n : await handleSaveAdditionalInfo(\r\n -99,\r\n [\r\n {\r\n FirstName: firstName || \"Borrower First\",\r\n LastName: lastName || \"Borrower Last\",\r\n },\r\n ],\r\n 0,\r\n \"Borrower\"\r\n );\r\n }\r\n\r\n WhichEntity =\r\n ientityId > 1\r\n ? ientityId\r\n : await handleSaveAdditionalInfo(\r\n -33,\r\n [{ Bank_Name: BankName || \"Bank\", AccType: 0 }],\r\n WhichBorrower,\r\n \"Bank\"\r\n );\r\n\r\n handleSaveUploadedFiles(\r\n WhichEntity,\r\n WhichBorrower,\r\n docId,\r\n isClose,\r\n iAcceptedFiles,\r\n iUploadDetails\r\n );\r\n }\r\n\r\n if (\r\n [...borrowerEntityTypeList, ...loanEntityTypeList].includes(EntityTypeId)\r\n ) {\r\n let WhichBorrower = loanData[\"UserId\"],\r\n WhichEntity = 0;\r\n if (iRecId) {\r\n WhichBorrower =\r\n iRecId > 1\r\n ? iRecId\r\n : await handleSaveAdditionalInfo(\r\n -99,\r\n [\r\n {\r\n FirstName: firstName || \"Borrower First\",\r\n LastName: lastName || \"Borrower Last\",\r\n },\r\n ],\r\n 0,\r\n \"Borrower\"\r\n );\r\n }\r\n handleSaveUploadedFiles(\r\n WhichEntity,\r\n WhichBorrower,\r\n docId,\r\n isClose,\r\n iAcceptedFiles,\r\n iUploadDetails\r\n );\r\n }\r\n };\r\n\r\n const handleSaveAdditionalInfo = async (\r\n flag,\r\n InputJSON,\r\n CustId = 0,\r\n type\r\n ) => {\r\n // console.log(\"InputJSON\", { flag, InputJSON, CustId });\r\n return await handleAPI({\r\n name: \"SaveAdditionalInfo\",\r\n params: {\r\n CustId,\r\n LoanId: queryStringDetails[\"LoanId\"],\r\n InputJSON: JSON.stringify(InputJSON || {}),\r\n flag: flag,\r\n SessionId: queryStringDetails[\"SessionId\"],\r\n },\r\n })\r\n .then((CustId) => {\r\n handleGetOptionDetails();\r\n handleAPIGetLoanDetails();\r\n CustId = Number(CustId);\r\n let key = \"iRecId\";\r\n if (type === \"Borrower\") {\r\n key = \"iRecId\";\r\n const { FirstName, LastName } = InputJSON[0],\r\n option = {\r\n value: CustId,\r\n label: `${FirstName} ${LastName}`,\r\n };\r\n setBorrowerOption((prevBorrowerOption) => {\r\n return [...prevBorrowerOption, option];\r\n });\r\n } else if (type === \"Employer\") {\r\n key = \"ientityId\";\r\n const { Empmt_Emp_Name } = InputJSON[0],\r\n option = {\r\n value: CustId,\r\n label: Empmt_Emp_Name,\r\n };\r\n setEmployerOption((prevEmployerOption) => {\r\n return [...prevEmployerOption, option];\r\n });\r\n } else if (type === \"Bank\") {\r\n key = \"ientityId\";\r\n const { Bank_Name } = InputJSON[0],\r\n option = {\r\n value: CustId,\r\n label: Bank_Name,\r\n };\r\n setBankOption((prevBankOption) => {\r\n return [...prevBankOption, option];\r\n });\r\n }\r\n\r\n setEditDetails({\r\n ...editDetails,\r\n [key]: parseInt(CustId),\r\n });\r\n return CustId;\r\n })\r\n .catch((e) => console.log(\"Error from SaveAdditionalInfo ====>\", e));\r\n };\r\n const handleSaveUploadedFiles = (\r\n iEntityId,\r\n iRecId,\r\n DocTypeId,\r\n isClose = true,\r\n fileList,\r\n iUploadDetails\r\n ) => {\r\n const iAcceptedFiles = acceptedFiles || fileList,\r\n iEditDetails = { ...editDetails, ...iUploadDetails };\r\n\r\n let details = {\r\n LoanId: queryStringDetails[\"LoanId\"],\r\n sessionid: queryStringDetails[\"SessionId\"],\r\n DocTypeId,\r\n entityid: iEntityId || iEditDetails[\"ientityId\"] || 0,\r\n iRecId: iRecId || iEditDetails[\"iRecId\"] || 0,\r\n Category: iEditDetails[\"Category\"] || 0,\r\n description: iEditDetails[\"Descript\"] || \"\",\r\n usedoc: iEditDetails[\"UseDoc\"] || 2,\r\n entitytypeid: iEditDetails[\"EntityTypeId\"] || 0,\r\n conditonid: 0,\r\n },\r\n index = 1;\r\n\r\n if (iAcceptedFiles) {\r\n iAcceptedFiles.forEach(async (file) => {\r\n let formData = new FormData();\r\n if (web) formData.append(\"\", file);\r\n else\r\n formData.append(\"file_attachment\", {\r\n uri: file.uri,\r\n name: file.name || \"ScannedImage.jpg\",\r\n type: file.mimeType || \"image/jpg\",\r\n });\r\n\r\n let requestOptions = {\r\n method: \"POST\",\r\n body: formData,\r\n redirect: \"follow\",\r\n };\r\n\r\n await handleAPI({\r\n name: \"UploadFilesdocs\",\r\n params: details || {},\r\n requestOptions: requestOptions,\r\n })\r\n .then((ScanDocId) => {\r\n log(\"Response form UploadFilesdocs\", ScanDocId);\r\n if (ScanDocId)\r\n handleSaveScanDocDetails(\r\n ScanDocId,\r\n iEntityId || iEditDetails[\"ientityId\"] || 0,\r\n iEditDetails[\"EntityTypeId\"],\r\n iRecId || iEditDetails[\"iRecId\"] || 0,\r\n index === iAcceptedFiles.length,\r\n isClose\r\n );\r\n if (index === iAcceptedFiles.length) {\r\n setAcceptedFiles(null);\r\n }\r\n index++;\r\n })\r\n .catch((e) => console.error(\"Error form UploadFilesdocs ====> \", e));\r\n });\r\n } else {\r\n handleSaveScanDocDetails(\r\n iEditDetails[\"scandocid\"],\r\n iEntityId,\r\n iRecId || iEditDetails[\"iRecId\"] || 0,\r\n true,\r\n isClose\r\n );\r\n }\r\n };\r\n const handleSaveScanDocDetails = (\r\n scandocid,\r\n ientityid,\r\n EntityTypeId,\r\n irecid,\r\n loadFlag,\r\n isClose = true\r\n ) => {\r\n let xml = `<root><row><scandocid>${scandocid}</scandocid><ientityid>${ientityid}</ientityid><irecid>${irecid}</irecid><ientitytypeid>${EntityTypeId}</ientitytypeid></row></root>`;\r\n handleAPI({\r\n name: \"savescandocdetails\",\r\n params: { loanid: queryStringDetails[\"LoanId\"], xml: xml },\r\n })\r\n .then(async (response) => {\r\n if (loadFlag) {\r\n setProcessingStatus(\"Loading\");\r\n setEditDetails({ ...{}, isVisible: false });\r\n // prePare();\r\n setExistDocumentArray([]);\r\n setIsSaving(false);\r\n }\r\n if (web) {\r\n try {\r\n window?.opener?.document\r\n ?.getElementById(\"buttonReloadDoc\")\r\n ?.click();\r\n } catch (error) {}\r\n }\r\n // console.log(\"isClose\", isClose);\r\n handleToggleDrawer(true, true);\r\n })\r\n .catch((e) => console.log(\"Error from savescandocdetails ====> \", e));\r\n };\r\n\r\n return (\r\n <>\r\n <View style={[styles.container]}>\r\n <ScrollView\r\n showsVerticalScrollIndicator={false}\r\n showsHorizontalScrollIndicator={false}\r\n bounces={false}\r\n style={{ width: \"100%\" }}\r\n >\r\n <View style={{ width: \"100%\" }}>\r\n {editDetails[\"isVisible\"] ? (\r\n GetEditScreen()\r\n ) : (\r\n <>\r\n <View style={{ marginTop: 10 }}>\r\n <UploadButton />\r\n </View>\r\n <View\r\n style={[\r\n {\r\n paddingHorizontal: 0,\r\n paddingVertical: 10,\r\n width: \"100%\",\r\n },\r\n !web\r\n ? {\r\n maxHeight: Dimensions.get(\"window\").height - 300,\r\n }\r\n : {},\r\n ]}\r\n >\r\n <View style={styles.headerContainer}>\r\n <CustomText\r\n style={[styles.headerText, { width: \"55%\" }]}\r\n bold={true}\r\n >\r\n Document\r\n </CustomText>\r\n <CustomText\r\n style={[\r\n styles.headerText,\r\n {\r\n width: \"45%\",\r\n },\r\n ]}\r\n bold={true}\r\n >\r\n Upload Time\r\n </CustomText>\r\n </View>\r\n {processingStatus === \"Loading\" &&\r\n (documentDetails || []).length === 0 ? (\r\n <View\r\n style={[\r\n styles.row,\r\n {\r\n paddingHorizontal: 5,\r\n paddingVertical: 10,\r\n width: \"100%\",\r\n backgroundColor: \"#fff\",\r\n justifyContent: \"center\",\r\n },\r\n ]}\r\n >\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={25}\r\n color=\"#295b9a\"\r\n style={{ marginTop: 0 }}\r\n duration={1200}\r\n />\r\n <CustomText> {processingStatus}...</CustomText>\r\n </View>\r\n </View>\r\n ) : documentDetails && documentDetails?.length > 0 ? (\r\n <View>\r\n {documentDetails.map((item, index) => {\r\n return (\r\n <View\r\n key={index}\r\n style={[\r\n styles.row,\r\n {\r\n paddingHorizontal: 5,\r\n paddingVertical: 15,\r\n width: \"100%\",\r\n backgroundColor:\r\n index % 2 === 0 ? \"#F7F7F7\" : \"#fff\",\r\n },\r\n ]}\r\n >\r\n <View\r\n style={{\r\n width: \"55%\",\r\n }}\r\n >\r\n <CustomText\r\n style={[styles.fileName, { flexWrap: \"wrap\" }]}\r\n // bold={true}\r\n onPress={() => {\r\n handleOpenFile(item[\"ScanDocId\"]);\r\n }}\r\n >\r\n {WrappedTextView({\r\n text: item[\"FileName\"] || \"\",\r\n maxLength: web ? 22 : 20,\r\n })}\r\n </CustomText>\r\n </View>\r\n <View\r\n style={{\r\n width: \"45%\",\r\n }}\r\n >\r\n <CustomText style={[styles.date]}>\r\n {item[\"FormattedDateCreated\"]}\r\n </CustomText>\r\n </View>\r\n </View>\r\n );\r\n })}\r\n {[\"uploadingFile\", \"Loading\"].includes(\r\n processingStatus\r\n ) && (\r\n <View\r\n style={[\r\n styles.row,\r\n {\r\n paddingHorizontal: 5,\r\n paddingVertical: 10,\r\n width: \"100%\",\r\n backgroundColor:\r\n documentDetails.length % 2 === 0\r\n ? \"#F7F7F7\"\r\n : \"#fff\",\r\n justifyContent: \"center\",\r\n },\r\n ]}\r\n >\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={25}\r\n color=\"#295b9a\"\r\n style={{ marginTop: 0 }}\r\n duration={1200}\r\n />\r\n <CustomText> File is Uploading...</CustomText>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n ) : documentDetails && documentDetails.length == 0 ? (\r\n <View>\r\n <Separator />\r\n <CustomText\r\n style={{ fontSize: web ? 18 : 15, alignSelf: \"center\" }}\r\n >\r\n No Document Found.\r\n </CustomText>\r\n </View>\r\n ) : (\r\n <View\r\n style={{\r\n textAlign: \"center\",\r\n marginBottom: 20,\r\n marginTop: 30,\r\n flexDirection: \"row\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ArrowSpinner\r\n // isSpinner={true}\r\n size={web ? 28 : 25}\r\n style={{ maxWidth: 40 }}\r\n />\r\n <CustomText style={{ fontSize: web ? 18 : 15 }}>\r\n Loading...\r\n </CustomText>\r\n </View>\r\n )}\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n <View\r\n style={{\r\n borderBottomWidth: 3,\r\n borderBottomColor: \"black\",\r\n marginTop: editDetails[\"isVisible\"] ? 10 : 0,\r\n }}\r\n ></View>\r\n </ScrollView>\r\n </View>\r\n {web && (\r\n <div\r\n id=\"buttonReloadDoc\"\r\n onClick={() => {\r\n setParentDocumentDetails(\r\n JSON.parse(\r\n document\r\n .getElementById(\"buttonReloadDoc\")\r\n .getAttribute(\"details\")\r\n )\r\n );\r\n prePare();\r\n }}\r\n ></div>\r\n )}\r\n </>\r\n );\r\n};\r\nconst styles = StyleSheet.create({\r\n container: {\r\n ...{\r\n flex: 1,\r\n // backgroundColor: \"#fff\",\r\n // paddingVertical: 20,\r\n marginBottom: 20,\r\n marginLeft: web ? 20 : 0,\r\n marginRight: web ? 20 : 0,\r\n // marginTop: web ? 20 : -10,\r\n alignItems: \"center\",\r\n // borderRadius: 5,\r\n // boxShadow: \"3px 7px 10px 4px rgb(0 0 0 / 8%)\",\r\n alignSelf: \"center\",\r\n maxHeight: web ? 500 : Dimensions.get(\"window\").height / 2 - 30,\r\n minHeight: web ? 500 : Dimensions.get(\"window\").height / 2 - 30,\r\n },\r\n ...(web\r\n ? {\r\n maxWidth: 410,\r\n minWidth: 410,\r\n overflow: \"hidden\",\r\n flex: \"none\",\r\n paddingHorizontal: 20,\r\n }\r\n : { width: \"100%\" }),\r\n },\r\n headerContainer: {\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n // marginBottom: 10,\r\n borderBottomColor: \"#cccccc\",\r\n borderBottomWidth: 1,\r\n paddingBottom: 10,\r\n justifyContent: \"space-around\",\r\n },\r\n headerText: {\r\n color: \"black\",\r\n // textAlign: \"center\",\r\n fontSize: 14,\r\n },\r\n row: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n // marginBottom: 15,\r\n borderBottomColor: \"#cccccc\",\r\n borderBottomWidth: 1,\r\n paddingBottom: 10,\r\n width: \"90%\",\r\n },\r\n fileName: {\r\n ...{\r\n textDecorationLine: \"underline\",\r\n textDecorationColor: \"#295B9A\",\r\n fontSize: 14,\r\n color: \"#295B9A\",\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n },\r\n date: {\r\n fontSize: 14,\r\n // color: \"#45464b\",\r\n },\r\n author: {\r\n fontSize: 12,\r\n color: \"#45464b\",\r\n marginTop: 4,\r\n },\r\n optionContainer: {\r\n ...{\r\n backgroundColor: \"#f2f5f8\",\r\n borderRadius: 18,\r\n paddingVertical: web ? 5 : 3,\r\n paddingHorizontal: web ? 8 : 0,\r\n borderColor: \"#606060\",\r\n borderWidth: 1,\r\n marginRight: 5,\r\n marginTop: 10,\r\n flexDirection: \"row\",\r\n },\r\n ...(!web ? { width: 70 } : {}),\r\n },\r\n optionText: {\r\n fontSize: 13,\r\n color: \"#787878\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n flex: 1,\r\n flexShrink: 1,\r\n paddingHorizontal: 15,\r\n paddingVertical: 2,\r\n },\r\n buttonContainer: {\r\n backgroundColor: \"#3972ca\",\r\n borderRadius: 10,\r\n paddingVertical: 10,\r\n paddingHorizontal: 20,\r\n },\r\n buttonText: {\r\n fontSize: 20,\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n },\r\n pagefooter: {\r\n paddingLeft: 20,\r\n padding: 5,\r\n backgroundColor: \"rgb(48, 126, 204)\",\r\n textAlign: \"center\",\r\n color: \"rgb(255,255, 255)\",\r\n marginTop: 20,\r\n marginBottom: 10,\r\n minWidth: \"100%\",\r\n },\r\n});\r\n\r\nexport default DocumentViewer;\r\n","let Pdf; //, Share;\nif (!__DEV__) {\n// Pdf = require(\"react-native-pdf\").default; //Don't Change the line - 3\n// Share = require(\"react-native-share\").default; //Don't Change the line - 4\n}\nimport { Dimensions } from \"react-native\";\nimport CustomText from \"./CustomText\";\nconst { log } = require(\"./CommonFunctions\");\nimport * as FileSystem from \"expo-file-system\";\n\nconst PDFViewer = ({ url }) => {\n return (\n <>\n {Pdf ? (\n <Pdf\n trustAllCerts={false}\n source={{\n uri: url,\n cache: true,\n }}\n onLoadComplete={(numberOfPages) => {\n log(`PDFViewer-Number of pages: ${numberOfPages}`);\n }}\n onPageChanged={(page) => {\n log(`PDFViewer-Current page: ${page}`);\n }}\n onError={(error) => {\n log(\"PDFViewer-Error\", JSON.stringify(error));\n }}\n onPressLink={(uri) => {\n log(`PDFViewer-Link pressed: ${uri}`);\n }}\n style={{\n flex: 1,\n width: Dimensions.get(\"window\").width - 10,\n height: Dimensions.get(\"window\").height,\n borderWidth: 1,\n borderColor: \"#999\",\n borderRadius: 5,\n }}\n />\n ) : (\n <CustomText>Loading...</CustomText>\n )}\n </>\n );\n};\nconst shareContent = async (documentUri, callBack = () => {}) => {\n if (documentUri) {\n try {\n const { uri } = await FileSystem.downloadAsync(\n documentUri,\n FileSystem.documentDirectory + documentUri.split(\"/\").pop() ||\n \"Document.pdf\"\n ),\n shareOptions = {\n title: \"Share via\",\n message: \"\",\n url: uri,\n };\n Share.open(shareOptions);\n callBack(\"success\");\n } catch (error) {\n console.error(\"Error while sharing:\", error);\n }\n }\n};\n\nconst shareHtmlContent = async (base64, callBack = () => {}) => {\n try {\n if (base64) {\n const shareOptions = {\n title: \"Payment Receipt\",\n message: \"\",\n url: base64,\n type: \"application/pdf\",\n subject: \"Payment Receipt\",\n };\n await Share.open(shareOptions);\n callBack(\"success\");\n } else {\n throw new Error(\"Failed to create PDF file.\");\n }\n } catch (error) {\n callBack(\"error\");\n console.error(\"Error sharing PDF content:\", error);\n }\n};\n\nexport { PDFViewer, shareContent, shareHtmlContent };\n","import React, { useContext, useEffect, useRef, useState } from \"react\";\r\nimport {\r\n View,\r\n BackHandler,\r\n TouchableOpacity,\r\n ActivityIndicator,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport WebView from \"react-native-webview\";\r\nimport { Separator, context } from \"./accessories\";\r\nimport CustomText from \"./CustomText\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport Icon5 from \"react-native-vector-icons/FontAwesome5\";\r\nimport { android, ios, web } from \"./Platform\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport { log } from \"./CommonFunctions\";\r\nimport { PDFViewer, shareContent } from \"./RNComponents\";\r\nimport ArrowSpinner from \"./ArrowSpinner\";\r\n\r\nconst ExternalSourceViewer = (props) => {\r\n const {\r\n route,\r\n children,\r\n onBack,\r\n isDisable = false,\r\n isSmallScreen = false,\r\n onLoad = () => {},\r\n style = {},\r\n setHideFooterButtons,\r\n handleNavigation,\r\n handleGetBankEmpDetails = () => {},\r\n setHideProgress,\r\n fromEsign,\r\n setPdfView = () => {},\r\n setShowEsignMenu = () => {},\r\n setWebviewRef = () => {},\r\n setiFrameviewRef = () => {},\r\n wStyle = {},\r\n } = props,\r\n { contextDetails, setContextDetails } = useContext(context), //Get value from context\r\n { navigation = props.navigation, SessionId = \"\" } = contextDetails,\r\n { params = {} } = route || {},\r\n { backTo } = params,\r\n isNeedBack = params.isNeedBack || props.isNeedBack;\r\n\r\n const webViewRef = useRef(null);\r\n const iframeRef = useRef(null);\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n\r\n let url = params.url || props.url || \"\";\r\n\r\n if (!web || window.location.host === \"localhost:19006\") {\r\n url = url.replace(\"../../../\", REDIRECT_URL);\r\n }\r\n let isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n\r\n const handleBackAction = () => {\r\n try {\r\n props?.route?.params?.onBack();\r\n } catch (error) {\r\n log(\"Error form handleBackAction\", error);\r\n }\r\n try {\r\n onBack ? onBack() : backTo && navigation.goBack();\r\n // navigation.navigate(backTo, {\r\n // GoToNav: GoToNav || 0,\r\n // });\r\n } catch (error) {\r\n log(\"Error form handleBackAction - onBack\", error);\r\n }\r\n // return true;\r\n };\r\n\r\n useEffect(() => {\r\n if (fromEsign && (!web || isMobileWeb)) {\r\n // setHideProgress(true);\r\n setHideFooterButtons(false);\r\n setShowEsignMenu(false);\r\n }\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n handleBackAction\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (webViewRef == null) return;\r\n setWebviewRef(webViewRef);\r\n }, [webViewRef]);\r\n\r\n useEffect(() => {\r\n if (iframeRef == null) return;\r\n setiFrameviewRef(iframeRef);\r\n }, [iframeRef]);\r\n\r\n const handleNavigationStateChange = (navState) => {\r\n //setCurrentUrl(navState.url);\r\n //setPdfView\r\n if (\r\n navState.url?.toString().toLowerCase().includes(\".pdf\") &&\r\n (!web || isMobileWeb)\r\n ) {\r\n setPdfView(true);\r\n } else {\r\n setPdfView(false);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <View\r\n style={{ flex: 1, flexDirection: \"column\", zIndex: 11111, ...wStyle }}\r\n pointerEvents={isDisable ? \"none\" : \"auto\"}\r\n >\r\n <View style={{ flexDirection: \"row\", justifyContent: \"space-between\" }}>\r\n {isNeedBack && (\r\n <TouchableOpacity activeOpacity={1} onPress={handleBackAction}>\r\n <CustomText\r\n bold={true}\r\n style={{ paddingVertical: 10, paddingHorizontal: 10 }}\r\n >\r\n <Icon name=\"angle-left\" size={16} /> Back\r\n </CustomText>\r\n </TouchableOpacity>\r\n )}\r\n {url?.toString().toLowerCase().includes(\".pdf\") && !__DEV__ && (\r\n <>\r\n {\"shareFileInit\" === processingStatus ? (\r\n <View\r\n style={{\r\n paddingVertical: 10,\r\n paddingHorizontal: 13,\r\n }}\r\n >\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={18}\r\n color=\"#295b9a\"\r\n style={{\r\n top: 2,\r\n }}\r\n duration={1200}\r\n />\r\n </View>\r\n ) : (\r\n <TouchableOpacity\r\n onPress={async () => {\r\n if (processingStatus !== \"shareFileInit\") {\r\n setProcessingStatus(\"shareFileInit\");\r\n shareContent(url, (status) => {\r\n if (status === \"success\") {\r\n setProcessingStatus(\"shareFileComplete\");\r\n setTimeout(() => {\r\n setProcessingStatus(null);\r\n }, 1500);\r\n } else {\r\n setProcessingStatus(null);\r\n }\r\n });\r\n }\r\n }}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={{\r\n paddingVertical: 10,\r\n paddingHorizontal: 12,\r\n }}\r\n >\r\n {processingStatus === \"shareFileComplete\" ? (\r\n <Icon size={18} name=\"check\" color=\"green\" />\r\n ) : (\r\n <Icon5\r\n name={ios ? \"share-square\" : \"share-alt\"}\r\n size={16}\r\n color=\"#295b9a\"\r\n />\r\n )}\r\n </CustomText>\r\n </TouchableOpacity>\r\n )}\r\n </>\r\n )}\r\n </View>\r\n <>\r\n {children ? (\r\n <>{children}</>\r\n ) : !web && url ? (\r\n <>\r\n {url?.toString().toLowerCase().includes(\".pdf\") && !__DEV__ ? (\r\n <>\r\n <View\r\n style={{\r\n flex: 1,\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n alignContent: \"center\",\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n <PDFViewer url={url} />\r\n\r\n <Separator />\r\n <Separator />\r\n </View>\r\n </>\r\n ) : (\r\n <WebView\r\n ref={webViewRef}\r\n onMessage={(event) => {\r\n // These messages are sent from esign page\r\n const message = event.nativeEvent.data;\r\n if (message === \"truvCompleted\") {\r\n setTimeout(() => {\r\n handleGetBankEmpDetails();\r\n }, 1500);\r\n } else if (message.includes(\"GoBack\")) {\r\n handleNavigation(-1);\r\n }\r\n\r\n if (message === \"hideFooterButtons\") {\r\n // Perform actions to hide footer buttons in your React Native app\r\n //alert(\"here\");\r\n setHideFooterButtons(true);\r\n }\r\n\r\n if (message === \"showFooterButtons\") {\r\n setHideFooterButtons(false);\r\n }\r\n if (message === \"GoBack\") {\r\n handleNavigation(-1);\r\n }\r\n if (message === \"GoNext\") {\r\n handleNavigation(1);\r\n }\r\n if (message === \"hideProgressBar\") {\r\n setHideProgress(true);\r\n }\r\n if (message === \"showProgressBar\") {\r\n setHideProgress(false);\r\n }\r\n if (message === \"ShowEsignMenu\") {\r\n setShowEsignMenu(true);\r\n }\r\n\r\n if (message === \"hideEsignMenu\") {\r\n setShowEsignMenu(false);\r\n }\r\n }}\r\n onError={(syntheticEvent) => {\r\n const { nativeEvent } = syntheticEvent;\r\n }}\r\n onLoad={(syntheticEvent) => {\r\n const { nativeEvent } = syntheticEvent;\r\n onLoad();\r\n if (\r\n webViewRef.current &&\r\n !nativeEvent[\"title\"] &&\r\n android\r\n ) {\r\n webViewRef.current.reload();\r\n }\r\n }}\r\n javaScriptEnabled={true}\r\n originWhitelist={[\"*\"]}\r\n domStorageEnabled={true}\r\n source={{\r\n uri: ios\r\n ? url\r\n : url.indexOf(\".pdf\") > -1\r\n ? `http://docs.google.com/gview?embedded=true&url=${url}`\r\n : url,\r\n }}\r\n onNavigationStateChange={handleNavigationStateChange}\r\n style={{\r\n flex: 1,\r\n // borderWidth: 1,\r\n borderColor: \"#888\",\r\n marginHorizontal: 5,\r\n }}\r\n />\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n <iframe\r\n ref={iframeRef}\r\n className=\"externalFrame\"\r\n src={url}\r\n style={{\r\n ...{\r\n border: \"none\",\r\n flex: 1,\r\n width: \"100%\",\r\n },\r\n ...style,\r\n }}\r\n onLoad={onLoad}\r\n />\r\n </>\r\n )}\r\n </>\r\n </View>\r\n </>\r\n );\r\n};\r\n\r\nexport default ExternalSourceViewer;\r\n","import React, {\r\n memo,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport {\r\n View,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Alert,\r\n ScrollView,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport {\r\n DrawerView,\r\n IconButton,\r\n InputBox,\r\n ModalButton,\r\n Separator,\r\n Spinner,\r\n Title,\r\n context,\r\n} from \"../../accessories/accessories\";\r\nimport {\r\n generateBoxShadowStyle,\r\n handleAPI,\r\n handleSelectLoanProgram,\r\n log,\r\n} from \"../../accessories/CommonFunctions\";\r\nimport { android, web } from \"../../accessories/Platform\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport * as DocumentPicker from \"expo-document-picker\";\r\nimport ArrowSpinner from \"../../accessories/ArrowSpinner\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport DocumentViewer from \"./DocumentViewer\";\r\nimport ExternalSourceViewer from \"../../accessories/ExternalSourceViewer\";\r\nimport Feather from \"react-native-vector-icons/Feather\";\r\nimport Entypo from \"react-native-vector-icons/Entypo\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport MaterialIcons from \"react-native-vector-icons/MaterialIcons\";\r\nimport MaterialCommunityIcons from \"react-native-vector-icons/MaterialCommunityIcons\";\r\nimport * as ImagePicker from \"expo-image-picker\";\r\nimport DocumentScanner from \"react-native-document-scanner-plugin\";\r\n\r\nconst DocumentUpload = (props) => {\r\n const {\r\n loanData = {},\r\n setHideProgressBar = () => {},\r\n userId = 0,\r\n loanId = 0,\r\n SessionId = \"\",\r\n navigation,\r\n handleAPIGetLoanDetails = () => {},\r\n setDocumentViewProps = () => {},\r\n setPullDownRefresh = () => {},\r\n documentUploadFlag = {},\r\n } = props;\r\n const { setContextDetails } = useContext(context); //Get value from context\r\n\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n const [modObjDoc, setModObjDoc] = useState([]);\r\n const [childWindow, setChildWindow] = useState(null);\r\n const [jsonObjDoc, setJsonObjDoc] = useState([]);\r\n const [editDetails, setEditDetails] = useState({ isVisible: !true });\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [acceptedFiles, setAcceptedFiles] = useState(null);\r\n const [iEditUploadDetails, setEditUploadDetails] = useState(null);\r\n const [uploadIndex, setUploadIndex] = useState(null);\r\n const [requiredCount, setRequiredCount] = useState(0);\r\n const [uploadedCount, setUploadedCount] = useState(0);\r\n const [entityTypeList, setEntityTypeList] = useState({\r\n borrowerEntityTypeList: [2],\r\n borrowerEmployerEntityTypeList: [6],\r\n bankEntityTypeList: [7],\r\n loanEntityTypeList: [1, 17],\r\n });\r\n\r\n // const [DocViewerDetails, setDocViewerDetails] = useState({\r\n // isVisible: false,\r\n // });\r\n const [SecureDocResult, setSecureDocResult] = useState(null);\r\n const [borrowerOption, setBorrowerOption] = useState(null);\r\n const [employerOption, setEmployerOption] = useState(null);\r\n const [bankOption, setBankOption] = useState(null);\r\n const [drawerDetails, setDrawerDetails] = useState({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n const [additionalBorrowerInfo, setAdditionalBorrowerInfo] = useState([]);\r\n const [additionalEmploymentInfo, setAdditionalEmploymentInfo] = useState([]);\r\n const [additionalBankInfo, setAdditionalBankInfo] = useState([]);\r\n\r\n const [activeTab, setActiveTab] = useState(0);\r\n\r\n const renderTab = (title, index) => {\r\n const isActive = index === activeTab;\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={0.7}\r\n key={index}\r\n style={[style.tab, isActive && style.activeTab]}\r\n onPress={() => setActiveTab(index)}\r\n >\r\n <CustomText bold={true} style={[style.tabText]}>\r\n {title}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n backgroundColor: \"rgb(184, 208, 233)\",\r\n borderRadius: 4,\r\n color: \"rgb(66, 126, 203)\",\r\n fontSize: 12,\r\n minWidth: 20,\r\n overflow: \"hidden\",\r\n maxWidth: 20,\r\n minHeight: web ? 25 : 20,\r\n display: \"flex\",\r\n flex: 1,\r\n justifyContent: \"center\",\r\n alignSelf: \"center\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n }}\r\n bold={true}\r\n >\r\n {index == 0 ? requiredCount : uploadedCount}\r\n </CustomText>\r\n </TouchableOpacity>\r\n );\r\n };\r\n const prePare = () => {\r\n handleGetDetails();\r\n handleGetOptionDetails();\r\n };\r\n const handleGetOptionDetails = () => {\r\n handleAPI({\r\n name: \"GetBorEmpBankOptions\",\r\n params: {\r\n LoanId: loanId,\r\n },\r\n })\r\n .then(async (response) => {\r\n response = JSON.parse(response);\r\n\r\n response.forEach((item) => {\r\n let key = Object.keys(item)[0];\r\n item[key].forEach((object, index) => {\r\n object.label = object.label.trim() || key + \" \" + (index - 1);\r\n return object;\r\n });\r\n });\r\n\r\n setBorrowerOption(response[0][\"Borrower\"]);\r\n setAdditionalBorrowerInfo(response[0][\"Borrower\"].slice(2, 99));\r\n setEmployerOption(response[1][\"Employer\"]);\r\n setAdditionalEmploymentInfo(response[1][\"Employer\"].slice(2, 99));\r\n setBankOption(response[2][\"Bank\"]);\r\n setAdditionalBankInfo(response[2][\"Bank\"].slice(2, 99));\r\n\r\n const { EntityList } = response[3];\r\n setEntityTypeList(() => {\r\n return {\r\n borrowerEmployerEntityTypeList: JSON[\"parse\"](\r\n EntityList[0][\"label\"]\r\n ).map((val) => Number(val)),\r\n borrowerEntityTypeList: JSON[\"parse\"](EntityList[1][\"label\"]).map(\r\n (val) => Number(val)\r\n ),\r\n bankEntityTypeList: JSON[\"parse\"](EntityList[2][\"label\"]).map(\r\n (val) => Number(val)\r\n ),\r\n loanEntityTypeList: JSON[\"parse\"](EntityList[3][\"label\"]).map(\r\n (val) => Number(val)\r\n ),\r\n };\r\n });\r\n })\r\n .catch((err) =>\r\n console.log(\"Error from GetBorEmpBankOptions ====> \", err)\r\n );\r\n };\r\n useEffect(() => {\r\n if (loanId > 0) {\r\n prePare();\r\n if (loanData[\"subjectZip\"]) {\r\n handleSelectLoanProgram(loanId, (loanProductStatus) => {\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, loanProductStatus };\r\n });\r\n });\r\n }\r\n }\r\n }, [loanId]);\r\n\r\n useEffect(() => {\r\n if (props[\"pullDownRefresh\"]) {\r\n (async () => {\r\n prePare();\r\n setPullDownRefresh(false);\r\n })();\r\n }\r\n }, [props[\"pullDownRefresh\"]]);\r\n\r\n const handleGetDetails = async () => {\r\n let SecureDocResult = await handleGetSecureDoc(),\r\n SplitSecureResult = SecureDocResult.split(\"~\"),\r\n jsonObj = JSON.parse(SplitSecureResult[0]),\r\n jsonObj_ =\r\n SplitSecureResult[1].length > 0 ? JSON.parse(SplitSecureResult[1]) : [];\r\n\r\n setSecureDocResult(jsonObj);\r\n\r\n setJsonObjDoc([...jsonObj_]);\r\n };\r\n\r\n const handleResponseFromChild = (event) => {\r\n const data = event.data;\r\n if (data && data.value !== undefined) {\r\n const acceptedFiles = data.value;\r\n handlePostUpload(acceptedFiles, editDetails);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (web) {\r\n window?.removeEventListener(\"message\", handleResponseFromChild);\r\n window.addEventListener(\"message\", handleResponseFromChild);\r\n }\r\n return () => {\r\n if (web) {\r\n window?.removeEventListener(\"message\", handleResponseFromChild);\r\n }\r\n };\r\n }, [editDetails]);\r\n\r\n useEffect(() => {\r\n if (modObjDoc.length > 0) {\r\n const interval = setTimeout(() => {\r\n if (web) {\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }\r\n }, 1000);\r\n return () => {\r\n clearTimeout(interval);\r\n };\r\n }\r\n }, [modObjDoc]);\r\n\r\n useEffect(() => {\r\n if (borrowerOption && employerOption && bankOption && SecureDocResult) {\r\n setModObjDoc([...(SecureDocResult || [])]);\r\n }\r\n }, [borrowerOption, employerOption, bankOption, SecureDocResult]);\r\n\r\n const handleGetSecureDoc = async () => {\r\n return await handleAPI({\r\n name: \"GetSecureDoc\",\r\n params: { LoanId: loanId },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((e) => console.error(\"Error from GetSecureDoc ====> \", e));\r\n };\r\n\r\n const handleCancelConfirmation = () => {\r\n Alert.alert(\r\n \"Confirmation\",\r\n \"Are you sure you want to Cancel?\",\r\n [\r\n {\r\n text: \"No\",\r\n style: \"cancel\",\r\n onPress: () => {\r\n setProcessingStatus(null);\r\n },\r\n },\r\n {\r\n text: \"Yes\",\r\n onPress: () => {\r\n setAcceptedFiles(null);\r\n setEditDetails({\r\n ...editDetails,\r\n isVisible: false,\r\n });\r\n setProcessingStatus(null);\r\n },\r\n },\r\n ],\r\n { cancelable: false }\r\n );\r\n };\r\n const {\r\n borrowerEmployerEntityTypeList,\r\n borrowerEntityTypeList,\r\n bankEntityTypeList,\r\n loanEntityTypeList,\r\n } = entityTypeList;\r\n\r\n const DropZone = memo(\r\n ({ activeTab }) => {\r\n let jsonObj = [],\r\n dropZoneElements = [];\r\n\r\n if (modObjDoc.length > 0) jsonObj = modObjDoc;\r\n // console.clear();\r\n // console.log({ jsonObj, jsonObjDoc, SessionId });\r\n for (let i = 0; i < jsonObj.length; i++) {\r\n let FileUploaded = 0;\r\n const {\r\n DocDesc: Message,\r\n Scandoctype: DocTypeId,\r\n EntityTypeId: iEntityTypeId,\r\n SCD: [{ DOCTYPEName: ShortName }],\r\n EntityName,\r\n iEntityId,\r\n } = jsonObj[i],\r\n iiEntityId = iEntityId || userId;\r\n\r\n const EntityTypeId = Number(iEntityTypeId);\r\n //================================\r\n\r\n let isUploaded = false,\r\n ScanDocId = \"\",\r\n GetJsonFileList = [];\r\n if (borrowerEmployerEntityTypeList.includes(EntityTypeId)) {\r\n GetJsonFileList = jsonObjDoc.filter(\r\n ({\r\n ScanDocId: fScanDocId,\r\n Scandoctype,\r\n iEntityId: fEntityId,\r\n iRecId: fRecId,\r\n UseDoc,\r\n }) =>\r\n fScanDocId &&\r\n UseDoc === 2 &&\r\n Scandoctype === DocTypeId &&\r\n ([169].includes(Number(DocTypeId)) || [16].includes(EntityTypeId)\r\n ? fEntityId\r\n : fRecId) == iEntityId\r\n );\r\n } else if (\r\n [...borrowerEntityTypeList, ...bankEntityTypeList].includes(\r\n EntityTypeId\r\n )\r\n ) {\r\n GetJsonFileList = jsonObjDoc.filter(\r\n ({\r\n ScanDocId: fScanDocId,\r\n Scandoctype,\r\n iEntityId: fEntityId,\r\n iRecId: fRecId,\r\n UseDoc,\r\n }) =>\r\n fScanDocId &&\r\n UseDoc === 2 &&\r\n Scandoctype === DocTypeId &&\r\n ([772, 373].includes(DocTypeId) ||\r\n ([88, 62].includes(DocTypeId) && EntityTypeId == 2)\r\n ? fRecId\r\n : fEntityId) == iEntityId\r\n );\r\n } else if (loanEntityTypeList.includes(EntityTypeId)) {\r\n GetJsonFileList = jsonObjDoc.filter(\r\n ({ ScanDocId: fScanDocId, Scandoctype, UseDoc }) =>\r\n fScanDocId && UseDoc === 2 && Scandoctype === DocTypeId\r\n );\r\n }\r\n\r\n if (GetJsonFileList.length > 0) {\r\n ScanDocId = GetJsonFileList[GetJsonFileList.length - 1][\"ScanDocId\"];\r\n isUploaded = true;\r\n FileUploaded = 1;\r\n }\r\n\r\n //====================================\r\n if (ShortName != \"Miscellaneous\") {\r\n const icon = (\r\n <View\r\n style={[\r\n {\r\n right: 10,\r\n alignSelf: web ? \"flex-start\" : \"flex-end\",\r\n paddingVertical: web ? 0 : 10,\r\n },\r\n web ? { top: 15 } : {},\r\n ]}\r\n >\r\n {uploadIndex == i ? (\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={25}\r\n color=\"#295b9a\"\r\n style={{\r\n top: 5,\r\n right: -10,\r\n position: web ? \"absolute\" : \"relative\",\r\n }}\r\n duration={1200}\r\n />\r\n ) : FileUploaded == 1 ? (\r\n <FontAwesome\r\n name=\"check\"\r\n size={21}\r\n color=\"green\"\r\n style={{\r\n right: -10,\r\n position: web ? \"absolute\" : \"relative\",\r\n }}\r\n />\r\n ) : (\r\n <>\r\n <Feather\r\n name=\"minus\"\r\n size={30}\r\n color=\"#295b9a\"\r\n style={{\r\n position: \"absolute\",\r\n top: web ? -7 : -10,\r\n right: !web ? -36 : -16,\r\n }}\r\n />\r\n <Entypo\r\n name=\"arrow-up\"\r\n size={18}\r\n color=\"#295b9a\"\r\n style={{\r\n position: \"absolute\",\r\n top: web ? 10 : 5,\r\n right: !web ? -30 : -10,\r\n }}\r\n />\r\n </>\r\n )}\r\n </View>\r\n );\r\n\r\n const dropZoneProps = {\r\n Message: `${Message}${\r\n DocTypeId == 268 && !FileUploaded ? \"(Optional)\" : \"\"\r\n }`,\r\n EntityName,\r\n icon,\r\n key: i,\r\n editUploadDetails: {\r\n Title: Message,\r\n isVisible: true,\r\n EntityName,\r\n docId: DocTypeId,\r\n iiEntityId,\r\n EntityTypeId,\r\n ientityId:\r\n GetJsonFileList[GetJsonFileList.length - 1]?.iEntityId ||\r\n iiEntityId ||\r\n ([\r\n ...borrowerEmployerEntityTypeList,\r\n ...bankEntityTypeList,\r\n ].includes(EntityTypeId)\r\n ? iiEntityId\r\n : 0) ||\r\n 0,\r\n iRecId:\r\n GetJsonFileList[GetJsonFileList.length - 1]?.iRecId ||\r\n ([\r\n ...borrowerEmployerEntityTypeList,\r\n ...borrowerEntityTypeList,\r\n ].includes(EntityTypeId)\r\n ? iiEntityId\r\n : 0),\r\n scandocid: ScanDocId || 0,\r\n index: i,\r\n isUploaded,\r\n },\r\n };\r\n\r\n activeTab === FileUploaded &&\r\n dropZoneElements.push(\r\n <View\r\n key={i}\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n marginBottom: 20,\r\n borderRadius: 5,\r\n marginRight: 7,\r\n marginLeft: 5,\r\n minHeight: 50,\r\n paddingHorizontal: 10,\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.5,\r\n },\r\n !web && { flexDirection: \"row\", alignItems: \"center\" },\r\n generateBoxShadowStyle(2, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n {web ? (\r\n <DropzoneWeb {...dropZoneProps} />\r\n ) : (\r\n <DropzoneMobile {...dropZoneProps} />\r\n )}\r\n </View>\r\n );\r\n }\r\n }\r\n\r\n if (activeTab == 0) {\r\n setRequiredCount(dropZoneElements.length || 0);\r\n setUploadedCount(jsonObj.length - dropZoneElements.length || 0);\r\n } else {\r\n setUploadedCount(dropZoneElements.length || 0);\r\n setRequiredCount(jsonObj.length - dropZoneElements.length || 0);\r\n }\r\n\r\n return dropZoneElements.length ? (\r\n dropZoneElements\r\n ) : (\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n marginBottom: 20,\r\n borderRadius: 5,\r\n marginRight: 7,\r\n marginLeft: 5,\r\n minHeight: 50,\r\n paddingHorizontal: 10,\r\n marginTop: 15,\r\n textAlign: \"center\",\r\n },\r\n !web && { flexDirection: \"row\", alignItems: \"center\" },\r\n ]}\r\n >\r\n <CustomText\r\n style={{ textAlign: \"left\", justifyContent: \"flex-start\" }}\r\n >\r\n {activeTab == 0\r\n ? `Congratulations! All of your required documents are uploaded.\r\n \r\nYou can review your uploaded documents by clicking the \"Uploaded\" tab above. \r\n\r\n As your loan steps progress, there may be more documents to upload. We will let you know if another document needs to be uploaded.`\r\n : `There aren't any uploaded documents yet... \r\n\r\n You can upload your documents by clicking the \"Required Documents\" tab above.`}\r\n </CustomText>\r\n </View>\r\n );\r\n },\r\n [modObjDoc]\r\n );\r\n\r\n const GetEditScreen = ({ iUploadDetails }) => {\r\n let { docId, ientityId, EntityTypeId } = editDetails || iUploadDetails,\r\n employerValue = 0;\r\n\r\n if (bankEntityTypeList.includes(EntityTypeId)) {\r\n employerValue =\r\n ientityId > 0\r\n ? ientityId\r\n : additionalEmploymentInfo.length === 0\r\n ? 1\r\n : null;\r\n } else {\r\n employerValue =\r\n ientityId > 0 && docId !== 169\r\n ? ientityId\r\n : additionalEmploymentInfo.length === 0\r\n ? 1\r\n : null;\r\n }\r\n if (\r\n (bankEntityTypeList.includes(EntityTypeId)\r\n ? bankOption\r\n : employerOption\r\n ).filter((item) => item.value == ientityId).length == 0\r\n ) {\r\n ientityId = -99;\r\n }\r\n\r\n return (\r\n <View\r\n style={{\r\n maxHeight: Dimensions.get(\"screen\").height / 1.4,\r\n minHeight: Dimensions.get(\"screen\").height / 1.4,\r\n }}\r\n >\r\n {[\r\n ...borrowerEmployerEntityTypeList,\r\n ...borrowerEntityTypeList,\r\n ].includes(EntityTypeId) && (\r\n <View>\r\n <Title\r\n text=\"Which borrower is this for?\"\r\n style={{ marginBottom: 15 }}\r\n />\r\n <Dropdown\r\n isValid={true}\r\n label=\"Borrower\"\r\n options={borrowerOption}\r\n value={editDetails[\"iRecId\"]}\r\n onSelect={(item) => {\r\n setEditDetails({\r\n ...editDetails,\r\n iRecId: parseInt(item[\"value\"]),\r\n });\r\n }}\r\n isMap={true}\r\n // disabled={docId == 772 || docId == 213 || docId == 253}\r\n />\r\n\r\n {editDetails[\"iRecId\"] === 1 && (\r\n <>\r\n <InputBox\r\n validate={!(editDetails[\"firstName\"] || \"\")}\r\n label=\"First Name\"\r\n placeholder=\"First Name\"\r\n onChangeText={(text) => {\r\n setEditDetails({ ...editDetails, firstName: text });\r\n }}\r\n value={(editDetails[\"firstName\"] || \"\")?.toString()}\r\n />\r\n <InputBox\r\n validate={!(editDetails[\"lastName\"] || \"\")}\r\n label=\"Last Name\"\r\n placeholder=\"Last Name\"\r\n onChangeText={(text) => {\r\n setEditDetails({ ...editDetails, lastName: text });\r\n }}\r\n value={(editDetails[\"lastName\"] || \"\")?.toString()}\r\n />\r\n </>\r\n )}\r\n </View>\r\n )}\r\n {bankEntityTypeList.includes(EntityTypeId) && (\r\n <>\r\n <View>\r\n <Title\r\n text={`Which bank is this for?`}\r\n style={{ marginBottom: 15, marginTop: 15 }}\r\n />\r\n <Dropdown\r\n isValid={true}\r\n label=\"Bank\"\r\n options={bankOption}\r\n value={ientityId}\r\n onSelect={(item) => {\r\n setEditDetails({\r\n ...editDetails,\r\n ientityId: item[\"value\"],\r\n });\r\n }}\r\n isMap={true}\r\n // disabled={docId == 43}\r\n />\r\n {editDetails[\"ientityId\"] === 1 && (\r\n <InputBox\r\n validate={!(editDetails[\"BankName\"] || \"\")}\r\n label=\"Bank Name\"\r\n placeholder=\"Bank Name\"\r\n onChangeText={(text) => {\r\n setEditDetails({ ...editDetails, BankName: text });\r\n }}\r\n value={(editDetails[\"BankName\"] || \"\")?.toString()}\r\n />\r\n )}\r\n </View>\r\n </>\r\n )}\r\n {borrowerEmployerEntityTypeList.includes(EntityTypeId) && (\r\n <>\r\n <View>\r\n <Title\r\n text={`Which Employer is this for?`}\r\n style={{ marginBottom: 15, marginTop: 15 }}\r\n />\r\n <Dropdown\r\n isValid={true}\r\n label=\"Employer\"\r\n options={employerOption}\r\n value={editDetails[\"ientityId\"]}\r\n onSelect={(item) => {\r\n setEditDetails({\r\n ...editDetails,\r\n ientityId: parseInt(item[\"value\"]),\r\n });\r\n }}\r\n isMap={true}\r\n />\r\n {editDetails[\"ientityId\"] === 1 && (\r\n <InputBox\r\n validate={!(editDetails[\"employerName\"] || \"\")}\r\n label=\"Employer Name\"\r\n placeholder=\"Employer Name\"\r\n onChangeText={(text) => {\r\n try {\r\n setEditDetails({ ...editDetails, employerName: text });\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }}\r\n value={(editDetails[\"employerName\"] || \"\")?.toString()}\r\n />\r\n )}\r\n </View>\r\n </>\r\n )}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignSelf:\r\n processingStatus === \"cancelConfirmation\"\r\n ? \"flex-start\"\r\n : \"flex-end\",\r\n }}\r\n >\r\n {isSaving && (\r\n <View style={{ flexDirection: \"row\" }}>\r\n <ArrowSpinner\r\n style={{ height: 22, alignSelf: \"flex-end\" }}\r\n size={20}\r\n />\r\n <CustomText style={{ fontSize: 14, alignSelf: \"flex-end\" }}>\r\n {\" \"}\r\n File is Uploading...{\" \"}\r\n </CustomText>\r\n </View>\r\n )}\r\n {processingStatus === \"cancelConfirmation\" && web && (\r\n <View style={{ flexDirection: \"column\" }}>\r\n <View>\r\n <Title\r\n style={{ fontSize: web ? 22 : 18 }}\r\n text=\"Are you sure you want to Cancel?\"\r\n />\r\n </View>\r\n <View style={{ flexDirection: \"row\" }}>\r\n <IconButton\r\n buttonType=\"secondary\"\r\n title=\"No\"\r\n onPress={async () => {\r\n setProcessingStatus(null);\r\n }}\r\n style={{ marginRight: 15 }}\r\n />\r\n <IconButton\r\n title=\"Yes\"\r\n onPress={async () => {\r\n setAcceptedFiles(null);\r\n setEditDetails({ ...editDetails, isVisible: false });\r\n setProcessingStatus(null);\r\n }}\r\n style={{ marginRight: 5 }}\r\n />\r\n </View>\r\n </View>\r\n )}\r\n {(processingStatus !== \"cancelConfirmation\" || !web) && (\r\n <View style={{ flexDirection: \"row\", height: 43 }}>\r\n <IconButton\r\n buttonType=\"secondary\"\r\n style={{\r\n marginRight: 15,\r\n }}\r\n title=\"Cancel\"\r\n onPress={async () => {\r\n if ((acceptedFiles || []).length) {\r\n setProcessingStatus(\"cancelConfirmation\");\r\n\r\n handleCancelConfirmation();\r\n } else {\r\n setEditDetails({ ...editDetails, isVisible: false });\r\n\r\n setUploadIndex(null);\r\n }\r\n }}\r\n />\r\n\r\n <IconButton\r\n title={<>Save</>}\r\n onPress={() => {\r\n setIsSaving(true);\r\n handleSaveEditDetails();\r\n setProcessingStatus(null);\r\n }}\r\n />\r\n </View>\r\n )}\r\n </View>\r\n <Separator />\r\n <Separator />\r\n </View>\r\n );\r\n };\r\n\r\n const handleSaveAdditionalInfo = async (\r\n flag,\r\n InputJSON,\r\n CustId = 0,\r\n type\r\n ) => {\r\n return await handleAPI({\r\n name: \"SaveAdditionalInfo\",\r\n params: {\r\n CustId,\r\n LoanId: loanId,\r\n InputJSON: JSON.stringify(InputJSON || {}),\r\n flag: flag,\r\n SessionId: SessionId,\r\n },\r\n })\r\n .then((CustId) => {\r\n handleAPIGetLoanDetails();\r\n CustId = Number(CustId);\r\n handleGetOptionDetails();\r\n let key = \"iRecId\";\r\n\r\n if (type === \"Borrower\") {\r\n key = \"iRecId\";\r\n const { FirstName, LastName } = InputJSON[0],\r\n option = {\r\n value: CustId,\r\n label: `${FirstName} ${LastName}`,\r\n };\r\n setBorrowerOption((prevBorrowerOption) => {\r\n return [...prevBorrowerOption, option];\r\n });\r\n } else if (type === \"Employer\") {\r\n key = \"ientityId\";\r\n const { Empmt_Emp_Name } = InputJSON[0],\r\n option = {\r\n value: CustId,\r\n label: Empmt_Emp_Name,\r\n };\r\n setEmployerOption((prevEmployerOption) => {\r\n return [...prevEmployerOption, option];\r\n });\r\n } else if (type === \"Bank\") {\r\n key = \"ientityId\";\r\n const { Bank_Name } = InputJSON[0],\r\n option = {\r\n value: CustId,\r\n label: Bank_Name,\r\n };\r\n setBankOption((prevBankOption) => {\r\n return [...prevBankOption, option];\r\n });\r\n }\r\n setEditDetails({\r\n ...editDetails,\r\n [key]: parseInt(CustId),\r\n });\r\n return CustId;\r\n })\r\n .catch((e) => console.error(\"Error from SaveAdditionalInfo ====>\", e));\r\n };\r\n\r\n const handleSaveEditDetails = async (acceptedFiles, iUploadDetails) => {\r\n let {\r\n docId,\r\n ientityId,\r\n iRecId,\r\n firstName,\r\n lastName,\r\n employerName,\r\n EntityTypeId,\r\n BankName,\r\n } = iUploadDetails || editDetails;\r\n\r\n if (\r\n (bankEntityTypeList.includes(EntityTypeId)\r\n ? bankOption\r\n : employerOption\r\n ).filter((item) => item.value == ientityId).length == 0\r\n ) {\r\n ientityId = -99;\r\n }\r\n\r\n if (borrowerEmployerEntityTypeList.includes(EntityTypeId)) {\r\n let WhichBorrower = loanData[\"UserId\"],\r\n WhichEntity = loanData[\"Employer_name\"];\r\n\r\n if (iRecId) {\r\n WhichBorrower =\r\n iRecId > 1\r\n ? iRecId\r\n : await handleSaveAdditionalInfo(\r\n -99,\r\n [\r\n {\r\n FirstName: firstName || \"Borrower First\",\r\n LastName: lastName || \"Borrower Last\",\r\n },\r\n ],\r\n 0,\r\n \"Borrower\"\r\n );\r\n }\r\n\r\n WhichEntity =\r\n ientityId > 1\r\n ? ientityId\r\n : await handleSaveAdditionalInfo(\r\n -11,\r\n [{ Empmt_Emp_Name: employerName || \"Employer\" }],\r\n WhichBorrower,\r\n \"Employer\"\r\n );\r\n\r\n handleSaveUploadedFiles(\r\n WhichEntity,\r\n WhichBorrower,\r\n docId,\r\n acceptedFiles,\r\n iUploadDetails\r\n );\r\n }\r\n\r\n if (bankEntityTypeList.includes(EntityTypeId)) {\r\n let WhichBorrower = loanData[\"UserId\"],\r\n WhichEntity = 0;\r\n\r\n if (iRecId) {\r\n WhichBorrower =\r\n iRecId > 1\r\n ? iRecId\r\n : await handleSaveAdditionalInfo(\r\n -99,\r\n [\r\n {\r\n FirstName: firstName || \"Borrower First\",\r\n LastName: lastName || \"Borrower Last\",\r\n },\r\n ],\r\n 0,\r\n \"Borrower\"\r\n );\r\n }\r\n\r\n WhichEntity =\r\n ientityId > 1\r\n ? ientityId\r\n : await handleSaveAdditionalInfo(\r\n -33,\r\n [{ Bank_Name: BankName || \"Bank\", AccType: 0 }],\r\n WhichBorrower,\r\n \"Bank\"\r\n );\r\n\r\n handleSaveUploadedFiles(\r\n WhichEntity,\r\n WhichBorrower,\r\n docId,\r\n acceptedFiles,\r\n iUploadDetails\r\n );\r\n }\r\n\r\n if (\r\n [...borrowerEntityTypeList, ...loanEntityTypeList].includes(EntityTypeId)\r\n ) {\r\n let WhichBorrower = loanData[\"UserId\"],\r\n WhichEntity = 0;\r\n if (iRecId) {\r\n WhichBorrower =\r\n iRecId > 1\r\n ? iRecId\r\n : await handleSaveAdditionalInfo(\r\n -99,\r\n [\r\n {\r\n FirstName: firstName || \"Borrower First\",\r\n LastName: lastName || \"Borrower Last\",\r\n },\r\n ],\r\n 0,\r\n \"Borrower\"\r\n );\r\n }\r\n handleSaveUploadedFiles(\r\n WhichEntity,\r\n WhichBorrower,\r\n docId,\r\n acceptedFiles,\r\n iUploadDetails\r\n );\r\n }\r\n };\r\n\r\n const handleSaveScanDocDetails = (\r\n scandocid,\r\n ientityid,\r\n EntityTypeId,\r\n irecid,\r\n loadFlag\r\n ) => {\r\n let xml = `<root><row><scandocid>${scandocid}</scandocid><ientityid>${ientityid}</ientityid><irecid>${irecid}</irecid><ientitytypeid>${EntityTypeId}</ientitytypeid></row></root>`;\r\n handleAPI({\r\n name: \"savescandocdetails\",\r\n params: { loanid: loanId, xml: xml },\r\n })\r\n .then(async () => {\r\n if (loadFlag) {\r\n setIsSaving(false);\r\n\r\n let SecureDocResult = await handleGetSecureDoc();\r\n\r\n let SplitSecureResult = SecureDocResult.split(\"~\"),\r\n jsonObj = JSON.parse(SplitSecureResult[0]),\r\n jsonObj_ =\r\n SplitSecureResult[1].length > 0\r\n ? JSON.parse(SplitSecureResult[1])\r\n : [];\r\n\r\n setModObjDoc(jsonObj || []);\r\n //setModObjDoc(handleGetModObjDoc(jsonObj) || []);\r\n setJsonObjDoc([...[], ...jsonObj_]);\r\n\r\n //Go Back to upload window\r\n setEditDetails({ ...{}, isVisible: false });\r\n\r\n setUploadIndex(null);\r\n setAcceptedFiles(null);\r\n }\r\n if (uploadIndex == -99) {\r\n handleToggleDrawer(false, false);\r\n }\r\n if (web) {\r\n childWindow?.document?.getElementById(\"buttonReloadDoc\")?.click();\r\n window?.opener?.document?.getElementById(\"buttonReloadDoc\")?.click();\r\n }\r\n })\r\n .catch((e) => {\r\n setIsSaving(false);\r\n console.error(\"Error from savescandocdetails ====> \", e);\r\n });\r\n };\r\n const handleToggleDrawer = async (isShow, isReload) => {\r\n if (isReload) {\r\n prePare();\r\n }\r\n\r\n setDrawerDetails((prevDrawerDetails) => {\r\n return {\r\n ...prevDrawerDetails,\r\n isShow: isShow,\r\n };\r\n });\r\n };\r\n\r\n const handleOpenFile = async (iEditUploadDetails, acceptedFiles = []) => {\r\n const { ScanDocId, docId, ientityId, iiEntityId, EntityTypeId } =\r\n iEditUploadDetails;\r\n\r\n if (web) {\r\n setDocumentViewProps({\r\n ...{\r\n iEntityId: ientityId,\r\n EntityTypeId,\r\n iiEntityId: iiEntityId,\r\n doctype: docId,\r\n SessionId,\r\n Title: iEditUploadDetails[\"Title\"],\r\n LoanId: loanId,\r\n ScanDocId: ScanDocId,\r\n isVisible: true,\r\n navigation: navigation,\r\n iEditUploadDetails,\r\n documentArray: jsonObjDoc,\r\n iAcceptedFiles: acceptedFiles,\r\n handleToggleDrawer: handleToggleDrawer,\r\n handleSelectFileDocView: () => {\r\n setEditUploadDetails(iEditUploadDetails);\r\n handleFilePickOption(iEditUploadDetails);\r\n },\r\n },\r\n });\r\n } else {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n cacheDocDetails: null,\r\n };\r\n });\r\n\r\n // setDocViewerDetails({\r\n // isVisible: true,\r\n // SessionId,\r\n // Id: ScanDocId,\r\n // doctype: docId,\r\n // LoanId: loanId,\r\n // iEntityId: ientityId,\r\n // iiEntityId: iiEntityId,\r\n // entityTypeId: EntityTypeId,\r\n // });\r\n setHideProgressBar(true);\r\n setDrawerDetails({\r\n ...drawerDetails,\r\n ...{\r\n body: (\r\n <>\r\n <DocumentViewer\r\n iEntityId={ientityId}\r\n iiEntityId={iiEntityId}\r\n EntityTypeId={EntityTypeId}\r\n doctype={docId}\r\n SessionId={SessionId}\r\n Title={iEditUploadDetails[\"Title\"]}\r\n LoanId={loanId}\r\n ScanDocId={ScanDocId}\r\n navigation={navigation}\r\n documentArray={jsonObjDoc}\r\n handleToggleDrawer={handleToggleDrawer}\r\n handleSelectFileDocView={() => {\r\n setEditUploadDetails(iEditUploadDetails);\r\n handleFilePickOption(iEditUploadDetails);\r\n }}\r\n />\r\n </>\r\n ),\r\n isShow: true,\r\n onClose: () => {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n },\r\n },\r\n });\r\n }\r\n };\r\n\r\n const scanDocument = async (isPickFile) => {\r\n try {\r\n if (!web) {\r\n const { status } = await ImagePicker.requestCameraPermissionsAsync();\r\n\r\n let result;\r\n if (status !== \"granted\") {\r\n console.error(\"Sorry, we need camera permissions to make this work!\");\r\n } else {\r\n if (isPickFile) {\r\n try {\r\n result = await ImagePicker.launchImageLibraryAsync({\r\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\r\n allowsEditing: true,\r\n quality: 1,\r\n });\r\n } catch (error) {\r\n console.error(\r\n \"Error form ImagePicker.launchImageLibraryAsync ===> \",\r\n error\r\n );\r\n }\r\n result = result[\"assets\"];\r\n } else {\r\n try {\r\n const { scannedImages } = await DocumentScanner.scanDocument({\r\n maxNumDocuments: 1,\r\n });\r\n\r\n if (scannedImages?.length > 0) {\r\n result = scannedImages.map((uri) => ({\r\n uri: uri,\r\n }));\r\n }\r\n } catch (error) {\r\n Alert.alert(\"Error form DocumentScanner\", error.message);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n } catch (error) {\r\n Alert.alert(\"Error form requestCameraPermissionsAsync\", error.message);\r\n return null;\r\n }\r\n };\r\n\r\n const handleSaveUploadedFiles = (\r\n iEntityId,\r\n iRecId,\r\n DocTypeId,\r\n iAcceptedFiles,\r\n iEditDetails\r\n ) => {\r\n // let editDetails_ = {...iEditDetails ,...editDetails},\r\n let editDetails_ = iEditDetails || editDetails,\r\n acceptedFiles_ = iAcceptedFiles || acceptedFiles,\r\n details = {\r\n LoanId: loanId,\r\n sessionid: SessionId,\r\n DocTypeId,\r\n entityid: iEntityId || editDetails_[\"ientityId\"] || 0,\r\n iRecId: iRecId || editDetails_[\"iRecId\"] || 0,\r\n Category: editDetails_[\"Category\"] || 0,\r\n description: editDetails_[\"Descript\"] || \"\",\r\n usedoc: editDetails_[\"UseDoc\"] || 2,\r\n entitytypeid: editDetails_[\"EntityTypeId\"] || 0,\r\n conditonid: 0,\r\n },\r\n index = 1;\r\n\r\n if (acceptedFiles_) {\r\n acceptedFiles_.forEach(async (file) => {\r\n let formData = new FormData();\r\n if (web) formData.append(\"\", file);\r\n else {\r\n let randomString = require(\"randomstring\"),\r\n GuiId = randomString.generate(5),\r\n fileName = `$ScannedImage_${GuiId}.jpg`;\r\n\r\n formData.append(\"file_attachment\", {\r\n uri: file.uri,\r\n name: file.name || fileName || \"ScannedImage.jpg\",\r\n type: file.mimeType || \"image/jpg\",\r\n });\r\n }\r\n let requestOptions = {\r\n method: \"POST\",\r\n body: formData,\r\n redirect: \"follow\",\r\n };\r\n\r\n await handleAPI({\r\n name: \"UploadFilesdocs\",\r\n params: details || {},\r\n requestOptions: requestOptions,\r\n })\r\n .then((ScanDocId) => {\r\n log(\"Response form UploadFilesdocs ====> \", ScanDocId);\r\n if (ScanDocId)\r\n handleSaveScanDocDetails(\r\n ScanDocId,\r\n iEntityId,\r\n editDetails_[\"EntityTypeId\"],\r\n editDetails_[\"iRecId\"] || iRecId || 0,\r\n index === acceptedFiles_.length\r\n );\r\n\r\n index++;\r\n })\r\n .catch((e) => console.error(\"Error form UploadFilesdocs ====> \", e));\r\n });\r\n } else {\r\n handleSaveScanDocDetails(\r\n editDetails_[\"scandocid\"],\r\n iEntityId,\r\n editDetails_[\"EntityTypeId\"],\r\n editDetails_[\"iRecId\"] || iRecId || 0,\r\n true\r\n );\r\n }\r\n };\r\n\r\n const handlePostUpload = (acceptedFiles, UploadDetails) => {\r\n let iUploadDetails = UploadDetails || iEditUploadDetails;\r\n\r\n const { EntityTypeId } = iUploadDetails;\r\n\r\n let DocTypeId = Number(iUploadDetails[\"docId\"]),\r\n WhichEntity =\r\n iUploadDetails[\"ientityId\"] || iUploadDetails[\"iiEntityId\"] || 0;\r\n\r\n if (\r\n (borrowerEntityTypeList.includes(EntityTypeId) &&\r\n borrowerOption.length >= 3) ||\r\n (bankEntityTypeList.includes(EntityTypeId) && bankOption.length >= 3) ||\r\n (borrowerEmployerEntityTypeList.includes(EntityTypeId) &&\r\n borrowerOption.length == 3 &&\r\n employerOption.length == 3) ||\r\n loanEntityTypeList.includes(EntityTypeId)\r\n ) {\r\n if (\r\n bankEntityTypeList.includes(EntityTypeId) &&\r\n !WhichEntity &&\r\n bankOption.length == 3\r\n ) {\r\n WhichEntity = bankOption[1][\"value\"];\r\n }\r\n\r\n handleSaveEditDetails(acceptedFiles, iUploadDetails);\r\n setUploadIndex(iUploadDetails[\"index\"]);\r\n\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n } else {\r\n setUploadIndex(-99);\r\n if (Object.keys(iUploadDetails)?.length > 0) {\r\n setEditDetails({ ...iUploadDetails });\r\n handleToggleDrawer(true, false);\r\n }\r\n setAcceptedFiles(acceptedFiles);\r\n }\r\n };\r\n\r\n const DropzoneWeb = ({\r\n Message,\r\n EntityName,\r\n icon,\r\n editUploadDetails = {},\r\n }) => {\r\n const onDrop = useCallback((acceptedFiles) => {\r\n const { EntityTypeId } = editUploadDetails,\r\n isDirectSave =\r\n (borrowerEntityTypeList.includes(EntityTypeId) &&\r\n borrowerOption.length >= 3) ||\r\n (bankEntityTypeList.includes(EntityTypeId) &&\r\n bankOption.length >= 3) ||\r\n loanEntityTypeList.includes(EntityTypeId);\r\n\r\n if (isDirectSave) handlePostUpload(acceptedFiles, editUploadDetails);\r\n else handleOpenFile(editUploadDetails, acceptedFiles);\r\n }, []);\r\n\r\n let userAgent = navigator.userAgent,\r\n isFireFox = userAgent.indexOf(\"Firefox\") !== -1,\r\n isSafari = userAgent.indexOf(\"Safari\") !== -1;\r\n\r\n const { getRootProps, getInputProps } = useDropzone({ onDrop });\r\n\r\n const getFile = () => {\r\n const input = document.createElement(\"input\");\r\n input.type = \"file\";\r\n\r\n input.addEventListener(\"change\", async (event) => {\r\n const files = Array.from(event.target.files);\r\n if (files) {\r\n onDrop(files);\r\n }\r\n });\r\n input.click();\r\n };\r\n\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={0.5}\r\n style={[style.dropContainer]}\r\n key={props[\"key\"]}\r\n onPress={() => {\r\n setEditDetails({ ...editUploadDetails });\r\n }}\r\n >\r\n <div\r\n {...(editUploadDetails[\"isUploaded\"]\r\n ? {\r\n onClick: () => handleOpenFile(editUploadDetails),\r\n }\r\n : isFireFox\r\n ? {\r\n ...getRootProps(),\r\n onClick: () => getFile(),\r\n }\r\n : isSafari\r\n ? {\r\n ...getRootProps(),\r\n onClick: () => getFile(),\r\n onTouchStart: () => getFile(),\r\n }\r\n : getRootProps())}\r\n style={{\r\n //height: 55,\r\n minHeight: 55,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n display: \"flex\",\r\n }}\r\n >\r\n {!editUploadDetails[\"isUploaded\"] && <input {...getInputProps()} />}\r\n <View\r\n style={{\r\n width: \"80%\",\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: 13,\r\n minHeight: EntityName === \"\" ? 40 : 25,\r\n cursor: \"pointer\",\r\n display: \"grid\",\r\n alignContent: \"center\",\r\n fontWeight: \"bold\",\r\n paddingVertical: 0,\r\n }}\r\n >\r\n {Message}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n fontSize: 13,\r\n cursor: \"pointer\",\r\n display: \"grid\",\r\n alignContent: \"center\",\r\n }}\r\n >\r\n {EntityName}\r\n </CustomText>\r\n </View>\r\n {icon}\r\n </div>\r\n </TouchableOpacity>\r\n );\r\n };\r\n\r\n const handleFilePickOption = (editUploadDetails) => {\r\n setDrawerDetails({\r\n body: (\r\n <View style={{ flex: 1 }}>\r\n <CustomText\r\n style={{ fontSize: web ? 22 : 20, alignSelf: \"center\" }}\r\n bold={true}\r\n >\r\n {editUploadDetails[\"Title\"]}\r\n </CustomText>\r\n <CustomText style={{ fontSize: web ? 16 : 14, alignSelf: \"center\" }}>\r\n {editUploadDetails[\"EntityName\"]}\r\n </CustomText>\r\n\r\n <Separator />\r\n <ModalButton\r\n icon={\r\n <View style={{ marginBottom: -1 }}>\r\n <MaterialIcons name=\"insert-photo\" color=\"#fff\" size={14} />\r\n </View>\r\n }\r\n onPress={() => {\r\n handleSelectFile(true, editUploadDetails, true);\r\n }}\r\n title=\" Select Photo\"\r\n textStyle={{\r\n alignSelf: \"center\",\r\n color: \"#fff\",\r\n fontSize: 13,\r\n }}\r\n style={{\r\n borderRadius: 25,\r\n marginBottom: 10,\r\n backgroundColor: \"#295B9A\",\r\n height: 45,\r\n }}\r\n />\r\n <ModalButton\r\n onPress={() => {\r\n handleSelectFile(true, editUploadDetails);\r\n }}\r\n title=\" Take Photo\"\r\n icon={\r\n <View style={{ marginBottom: 0 }}>\r\n <MaterialIcons name=\"add-a-photo\" color=\"#295b9a\" size={14} />\r\n </View>\r\n }\r\n textStyle={{\r\n alignSelf: \"center\",\r\n color: \"#295b9a\",\r\n fontSize: 13,\r\n }}\r\n style={{\r\n borderRadius: 25,\r\n marginBottom: 10,\r\n backgroundColor: \"#fff\",\r\n borderWidth: 1,\r\n borderColor: \"#295b9a\",\r\n height: 45,\r\n }}\r\n />\r\n\r\n <ModalButton\r\n icon={\r\n <View style={{ marginBottom: -1 }}>\r\n <MaterialIcons name=\"photo-library\" color=\"#295b9a\" size={14} />\r\n </View>\r\n }\r\n onPress={() => {\r\n handleSelectFile(false, editUploadDetails);\r\n }}\r\n title=\" Add From Library\"\r\n textStyle={{ alignSelf: \"center\", fontSize: 13, color: \"#295b9a\" }}\r\n style={{\r\n borderRadius: 25,\r\n height: 45,\r\n marginBottom: 10,\r\n backgroundColor: \"#fff\",\r\n borderWidth: 1,\r\n borderColor: \"#295b9a\",\r\n }}\r\n />\r\n {editUploadDetails[\"isUploaded\"] && (\r\n <ModalButton\r\n icon={\r\n <View style={{ marginBottom: -1 }}>\r\n <MaterialCommunityIcons\r\n name=\"file-document-multiple\"\r\n color=\"#295b9a\"\r\n size={14}\r\n />\r\n </View>\r\n }\r\n onPress={() => handleOpenFile(editUploadDetails)}\r\n title=\" View Uploaded Documents\"\r\n textStyle={{\r\n alignSelf: \"center\",\r\n fontSize: 13,\r\n color: \"#295b9a\",\r\n }}\r\n style={{\r\n borderRadius: 25,\r\n marginBottom: 10,\r\n backgroundColor: \"#fff\",\r\n borderWidth: 1,\r\n borderColor: \"#295b9a\",\r\n height: 45,\r\n }}\r\n />\r\n )}\r\n\r\n <Separator />\r\n <Separator />\r\n </View>\r\n ),\r\n isShow: true,\r\n onClose: \"CustomClose\",\r\n });\r\n };\r\n\r\n const handleSelectFile = async (isScan, editUploadDetails, isPickFile) => {\r\n try {\r\n if (isScan) {\r\n let scannedImage = await scanDocument(isPickFile);\r\n scannedImage && handlePostUpload(scannedImage, editUploadDetails);\r\n } else {\r\n try {\r\n const result = await DocumentPicker.getDocumentAsync({\r\n copyToCacheDirectory: false,\r\n type: [\r\n \"application/pdf\",\r\n \"image/jpeg\",\r\n \"image/png\",\r\n \"image/gif\",\r\n \"image/heic\",\r\n \"image/heif\",\r\n ],\r\n });\r\n\r\n if (result[\"type\"] === \"success\") {\r\n const allowedExtensions = [\r\n \"pdf\",\r\n \"jpg\",\r\n \"jpeg\",\r\n \"png\",\r\n \"gif\",\r\n \"heic\",\r\n \"heif\",\r\n ];\r\n const fileExtension = result.name.split(\".\").pop().toLowerCase();\r\n\r\n if (allowedExtensions.includes(fileExtension)) {\r\n let file = [];\r\n file.push(result);\r\n handlePostUpload(file, editUploadDetails);\r\n } else {\r\n Alert.alert(\r\n \"Invalid File\",\r\n \"Please select a valid PDF or image file.\"\r\n );\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"Error From FileUpload ====> \", error);\r\n }\r\n }\r\n } catch (err) {\r\n console.warn(err);\r\n return false;\r\n }\r\n };\r\n\r\n const DropzoneMobile = ({\r\n editUploadDetails = {},\r\n Message = \"\",\r\n EntityName = \"\",\r\n icon = <></>,\r\n }) => {\r\n return (\r\n <TouchableOpacity\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n flex: 1,\r\n }}\r\n activeOpacity={1}\r\n key={props[\"key\"]}\r\n onPress={() => {\r\n log(\"DocId\", editUploadDetails[\"docId\"]);\r\n\r\n setEditUploadDetails({\r\n ...{ ...editUploadDetails, isVisible: true },\r\n });\r\n if (editUploadDetails[\"isUploaded\"])\r\n handleOpenFile(editUploadDetails);\r\n else handleFilePickOption(editUploadDetails);\r\n }}\r\n >\r\n <View\r\n style={{\r\n width: \"90%\",\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n <CustomText style={[{ fontSize: web ? 13 : 11 }]} bold={true}>\r\n {Message}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 13 : 11,\r\n paddingVertical: 5,\r\n }}\r\n >\r\n {EntityName}\r\n </CustomText>\r\n </View>\r\n <View\r\n style={{\r\n width: \"10%\",\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n <CustomText>{icon}</CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n );\r\n };\r\n\r\n return (\r\n <ScrollView>\r\n <View style={[web ? { paddingHorizontal: 10 } : {}]}>\r\n <>\r\n <>\r\n <CustomText\r\n style={{ fontSize: 20, textAlign: \"center\" }}\r\n bold={true}\r\n >\r\n {documentUploadFlag[\"headerText\"]\r\n ? documentUploadFlag[\"headerText\"]\r\n : \"Upload Your Documents Here\"}\r\n </CustomText>\r\n <Separator />\r\n <View style={style.container}>\r\n <View style={style.tabs}>\r\n {renderTab(\"Required Documents\", 0)}\r\n {renderTab(\" Uploaded\", 1)}\r\n </View>\r\n <View style={style.tabContent}>\r\n {modObjDoc.length > 0 ? (\r\n <DropZone activeTab={activeTab} />\r\n ) : (\r\n <Spinner />\r\n )}\r\n </View>\r\n </View>\r\n </>\r\n\r\n {!web && (\r\n <DrawerView\r\n bodyName={android ? \"android\" : \"DocumentUpload\"}\r\n isShow={drawerDetails[\"isShow\"]}\r\n From={\r\n android && !editDetails[\"isVisible\"] ? \"pickFileOption\" : \"\"\r\n }\r\n body={\r\n editDetails[\"isVisible\"]\r\n ? GetEditScreen({ iUploadDetails: null })\r\n : drawerDetails[\"body\"]\r\n }\r\n onClose={() => {\r\n if (drawerDetails[\"onClose\"] === \"CustomClose\") {\r\n if ((acceptedFiles || []).length) {\r\n handleCancelConfirmation();\r\n } else {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n }\r\n } else {\r\n drawerDetails[\"onClose\"]();\r\n }\r\n }}\r\n />\r\n )}\r\n </>\r\n {web && (\r\n <div\r\n id=\"buttonReloadDoc\"\r\n onClick={() => {\r\n handleToggleDrawer(false, true);\r\n }}\r\n ></div>\r\n )}\r\n </View>\r\n </ScrollView>\r\n );\r\n};\r\n\r\nconst style = StyleSheet.create({\r\n container: {\r\n flex: 1,\r\n backgroundColor: \"#fff\",\r\n },\r\n tabs: {\r\n flexDirection: \"row\",\r\n borderBottomWidth: 1,\r\n borderBottomColor: \"#ccc\",\r\n // justifyContent: \"center\",\r\n marginBottom: 10,\r\n },\r\n tab: {\r\n padding: 10,\r\n borderBottomWidth: 2,\r\n borderBottomColor: \"transparent\",\r\n minWidth: \"50%\",\r\n textAlign: \"center\",\r\n justifyContent: \"center\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n },\r\n activeTab: {\r\n borderBottomColor: \"black\",\r\n },\r\n tabText: {\r\n fontSize: 12,\r\n marginRight: 5,\r\n },\r\n tabContent: {\r\n flex: 1,\r\n justifyContent: \"center\",\r\n //alignItems: \"center\",\r\n },\r\n\r\n dropContainer: {\r\n minHeight: 45,\r\n borderRadius: 5,\r\n paddingHorizontal: 10,\r\n paddingVertical: 5,\r\n width: \"100%\",\r\n },\r\n optionContainer: [\r\n {\r\n backgroundColor: \"#f2f5f8\",\r\n borderRadius: 18,\r\n paddingVertical: web ? 6 : 3,\r\n paddingHorizontal: web ? 12 : 0,\r\n borderColor: \"#606060\",\r\n borderWidth: 1,\r\n marginRight: 5,\r\n marginTop: 10,\r\n flexDirection: \"row\",\r\n },\r\n !web && { width: 70 },\r\n ],\r\n optionText: {\r\n fontSize: 13,\r\n color: \"#787878\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n flex: 1,\r\n flexShrink: 1,\r\n paddingHorizontal: 15,\r\n paddingVertical: 2,\r\n },\r\n buttonContainer: {\r\n backgroundColor: \"rgb(44, 134, 209)\",\r\n paddingHorizontal: 15,\r\n paddingVertical: 10,\r\n marginLeft: 8,\r\n borderRadius: 3,\r\n },\r\n buttonText: { color: \"#fff\", fontSize: 16 },\r\n});\r\nexport default DocumentUpload;\r\n","import Checkbox from \"expo-checkbox\";\r\nimport { StyleSheet, View } from \"react-native\";\r\nimport CustomText from \"./CustomText\";\r\nimport { TouchableOpacity } from \"react-native\";\r\nimport Icon from \"react-native-vector-icons/MaterialCommunityIcons\";\r\n\r\nconst CustomCheckBoxSelection = ({\r\n isMultiple = false,\r\n options = [],\r\n value = 0, // bitwise value\r\n onChange = () => {},\r\n size = 23,\r\n labelStyle = {},\r\n color = \"#508BC9\",\r\n defaultValue = 0,\r\n}) => {\r\n const handleOnValueChange = ({ iValue, isChecked }) => {\r\n const bitValue = parseInt(iValue, 10);\r\n let nValue;\r\n\r\n if (isMultiple) {\r\n nValue = isChecked ? value & ~bitValue : value | bitValue;\r\n } else {\r\n nValue = isChecked ? 0 : bitValue;\r\n }\r\n onChange(nValue || defaultValue);\r\n };\r\n\r\n return (\r\n <View style={styles.container}>\r\n {options.map(({ value: iValue, label }) => {\r\n const bitValue = parseInt(iValue, 10);\r\n const isChecked = (value & bitValue) !== 0;\r\n return (\r\n <View key={label} style={styles.section}>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => handleOnValueChange({ iValue, isChecked })}\r\n >\r\n <Icon\r\n name={isChecked ? \"checkbox-outline\" : \"checkbox-blank-outline\"}\r\n size={size}\r\n color={color}\r\n />\r\n </TouchableOpacity>\r\n <CustomText\r\n style={[styles.text, labelStyle]}\r\n onPress={() => handleOnValueChange({ iValue, isChecked })}\r\n >\r\n {label}\r\n </CustomText>\r\n </View>\r\n );\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flexDirection: \"column\",\r\n marginBottom: 5,\r\n },\r\n section: { flexDirection: \"row\", marginVertical: 3, alignItems: \"flex-end\" },\r\n text: { fontSize: 10, marginLeft: 3, marginRight: 3 },\r\n});\r\nexport default CustomCheckBoxSelection;\r\n","import React from \"react\";\r\nimport { View, TouchableOpacity, Text, ViewPropTypes } from \"react-native\";\r\nimport PropTypes from \"prop-types\";\r\nimport CustomText from \"./CustomText\";\r\n\r\nexport const RadioButtonGroup = (props) => {\r\n const {\r\n selected,\r\n size,\r\n onSelected,\r\n children,\r\n containerStyle,\r\n containerOptionStyle,\r\n radioStyle,\r\n radioBackground,\r\n labelStyle,\r\n } = props;\r\n\r\n return (\r\n <View style={{ ...containerStyle }}>\r\n {!children?.length ? (\r\n <TouchableOpacity\r\n onPress={() => onSelected(children?.props?.value)}\r\n activeOpacity={1}\r\n >\r\n {React.cloneElement(children, {\r\n selected,\r\n radioBackground,\r\n radioStyle,\r\n containerOptionStyle,\r\n labelStyle,\r\n size,\r\n })}\r\n </TouchableOpacity>\r\n ) : (\r\n children?.map((child, index) => {\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => onSelected(child?.props?.value)}\r\n key={index}\r\n >\r\n {React.cloneElement(child, {\r\n selected,\r\n radioBackground,\r\n radioStyle,\r\n containerOptionStyle,\r\n labelStyle,\r\n size,\r\n })}\r\n </TouchableOpacity>\r\n );\r\n })\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nexport function RadioButtonItem(props) {\r\n const {\r\n selected,\r\n value,\r\n size = 25,\r\n containerOptionStyle,\r\n radioStyle,\r\n radioBackground = \"blue\",\r\n labelStyle,\r\n label,\r\n style,\r\n } = props;\r\n\r\n return (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n ...containerOptionStyle,\r\n }}\r\n >\r\n <View\r\n style={{\r\n borderWidth: 2,\r\n borderColor: \"#828282\",\r\n padding: 2,\r\n width: size - 1,\r\n height: size,\r\n borderRadius: 50,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n ...radioStyle,\r\n ...style,\r\n }}\r\n >\r\n <View\r\n style={{\r\n backgroundColor:\r\n selected == value ? radioBackground : \"rgba(0,0,0,0)\",\r\n width: \"80%\",\r\n height: \"80%\",\r\n borderRadius: 50,\r\n }}\r\n ></View>\r\n </View>\r\n\r\n {typeof label == \"string\" ? (\r\n <CustomText style={{ marginLeft: 3, ...labelStyle }}>\r\n {label}\r\n </CustomText>\r\n ) : (\r\n React.cloneElement(label, {\r\n style: { marginLeft: 3, ...label.props.style },\r\n })\r\n )}\r\n </View>\r\n );\r\n}\r\n\r\nRadioButtonGroup.propTypes = {\r\n selected: PropTypes.any,\r\n onSelected: PropTypes.func,\r\n containerStyle: PropTypes.any,\r\n containerOptionStyle: PropTypes.any,\r\n radioStyle: PropTypes.any,\r\n labelStyle: PropTypes.any,\r\n radioBackground: PropTypes.string,\r\n size: PropTypes.number,\r\n};\r\n\r\nRadioButtonItem.propTypes = {\r\n value: PropTypes.any,\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\r\n style: PropTypes.any,\r\n};\r\n\r\nexport default RadioButtonGroup;\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { Modal, TouchableOpacity, View } from \"react-native\";\r\nimport CustomText from \"./CustomText\";\r\nimport { android, web } from \"./Platform\";\r\nimport Icon from \"react-native-vector-icons/MaterialCommunityIcons\";\r\nconst DropDownButton = (props) => {\r\n let { options = [], value = null, onSelect = () => {}, width = 75 } = props,\r\n [optionDetails, setOptionDetails] = useState({\r\n visible: false,\r\n top: 0,\r\n left: 0,\r\n opacity: 0,\r\n }),\r\n [selectedOption, setSelectedOption] = useState([]),\r\n OptionButton = useRef();\r\n useEffect(() => {\r\n try {\r\n let isSelectedOption = [{ value: 0, label: \"Select\" }];\r\n if (value) {\r\n isSelectedOption = options.filter(\r\n (state) =>\r\n state[\"value\"].toString().toLowerCase() ===\r\n value?.toString().toLowerCase()\r\n );\r\n }\r\n setSelectedOption(isSelectedOption);\r\n } catch (error) {}\r\n }, [value]);\r\n const handleOpenOption = () => {\r\n OptionButton.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setOptionDetails({\r\n visible: true,\r\n top: py + h - (android ? 22 : 0),\r\n left: _px - 1,\r\n width: _w - 30,\r\n opacity: 1,\r\n });\r\n });\r\n };\r\n\r\n return (\r\n <View\r\n style={{\r\n zIndex: 2,\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n <TouchableOpacity\r\n ref={OptionButton}\r\n activeOpacity={1}\r\n onPress={handleOpenOption}\r\n style={{\r\n zIndex: 111,\r\n paddingVertical: 2,\r\n paddingHorizontal: 5,\r\n borderRadius: 3,\r\n borderWidth: 1,\r\n width,\r\n backgroundColor: \"#fff\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: 12,\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {selectedOption[0]?.[\"label\"]}\r\n </CustomText>\r\n <Icon\r\n size={web ? 17 : 15}\r\n name={`chevron-${optionDetails[\"visible\"] ? \"up\" : \"down\"}`}\r\n />\r\n </TouchableOpacity>\r\n\r\n <Modal\r\n visible={optionDetails[\"visible\"]}\r\n transparent\r\n animationType=\"fade\"\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n height: \"100%\",\r\n }}\r\n onPress={() => setOptionDetails({ ...optionDetails, visible: false })}\r\n >\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n position: \"relative\",\r\n zIndex: 2,\r\n borderColor: \"#d3dadf\",\r\n borderWidth: 2,\r\n boxShadow: \"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)\",\r\n width,\r\n },\r\n {\r\n top: optionDetails[\"top\"],\r\n left: optionDetails[\"left\"],\r\n opacity: optionDetails[\"opacity\"],\r\n },\r\n ]}\r\n >\r\n <>\r\n {options.map((item, index) => (\r\n <CustomText\r\n onPress={() => {\r\n onSelect(item);\r\n setOptionDetails({ ...optionDetails, visible: false });\r\n }}\r\n key={index}\r\n style={{\r\n paddingVertical: 5,\r\n paddingHorizontal: 10,\r\n fontSize: 12,\r\n alignItem: \"center\",\r\n backgroundColor:\r\n selectedOption[0]?.[\"value\"] == item[\"value\"]\r\n ? \"#f2f2f2\"\r\n : \"#fff\",\r\n }}\r\n >\r\n {item.label}\r\n </CustomText>\r\n ))}\r\n </>\r\n </View>\r\n </TouchableOpacity>\r\n </Modal>\r\n </View>\r\n );\r\n};\r\n\r\nexport default DropDownButton;\r\n","import {\r\n Dimensions,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Modal,\r\n View,\r\n Alert,\r\n} from \"react-native\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport {\r\n forwardRef,\r\n useContext,\r\n useEffect,\r\n useImperativeHandle,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport CustomCheckBoxSelection from \"../../accessories/CustomCheckBoxSelection\";\r\nimport {\r\n cleanValue,\r\n handleAPI,\r\n formatPercentage,\r\n generateBoxShadowStyle,\r\n testSSN,\r\n handleGetZipCodeDetails,\r\n formatSSN,\r\n formatCurrency,\r\n sortByKeyNumber,\r\n} from \"../../accessories/CommonFunctions\";\r\nimport Icon from \"react-native-vector-icons/MaterialCommunityIcons\";\r\nimport MaterialIcons from \"react-native-vector-icons/MaterialIcons\";\r\nimport {\r\n context,\r\n InputBox,\r\n ModalButton,\r\n Option,\r\n Title,\r\n} from \"../../accessories/accessories\";\r\nimport ArrowSpinner from \"../../accessories/ArrowSpinner\";\r\nimport { android, ios, web } from \"../../accessories/Platform\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport XMLParser from \"react-xml-parser\";\r\nimport { LinearGradient } from \"expo-linear-gradient\";\r\nimport ScrollContainer from \"../../accessories/ScrollContainer\";\r\nimport RadioButtonGroup, {\r\n RadioButtonItem,\r\n} from \"../../accessories/RadioButtonGroup\";\r\nimport DropDownButton from \"../../accessories/DropDownButton\";\r\nimport CustomTextInput from \"../../accessories/CustomTextInput\";\r\n\r\nconst isSmallScreen =\r\n (web && window.innerWidth < 900) || Dimensions.get(\"window\").width < 900,\r\n isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n\r\nconst loanProgramTypeOptions = [\r\n { value: 2, label: \"Conventional\" },\r\n { value: 128, label: \"FHA\" },\r\n { value: 2048, label: \"VA\" },\r\n { value: 4161552, label: \"Other\" },\r\n ],\r\n loanTermOptions = [\r\n { value: 64, label: \"30 Years\" },\r\n { value: 32, label: \"25 Years\" },\r\n { value: 16, label: \"20 Years\" },\r\n { value: 8, label: \"15 Years\" },\r\n { value: 4, label: \"10 Years\" },\r\n { value: 2, label: \"7 Years\" },\r\n { value: 1, label: \"5 Years\" },\r\n // { value: 128, label: \"40 Years\" },\r\n ],\r\n amortTypeOptions = [\r\n { value: 1, label: \"Fixed Rate\" },\r\n { value: 4, label: \"ARM\" },\r\n { value: 32, label: \"Buydown\" },\r\n { value: 474, label: \"Other\" },\r\n ],\r\n lienPositionOptions = [\r\n { value: 1, label: \"1st\" },\r\n { value: 2, label: \"2nd\" },\r\n ],\r\n lockPeriodOptions = [\r\n { value: \"0\", label: \"Select\" },\r\n { value: \"2\", label: \"12\" },\r\n { value: \"4\", label: \"30\" },\r\n { value: \"5\", label: \"45\" },\r\n { value: \"6\", label: \"60\" },\r\n { value: \"7\", label: \"75\" },\r\n { value: \"8\", label: \"90\" },\r\n { value: \"9\", label: \"120\" },\r\n { value: \"10\", label: \"150\" },\r\n { value: \"11\", label: \"180\" },\r\n ];\r\nconst formatDate = (dateString) => {\r\n try {\r\n const [month, day, year] = dateString.split(\"/\"),\r\n date = new Date(`${year}-${month}-${day}`),\r\n daysOfWeek = [\r\n \"Sunday\",\r\n \"Monday\",\r\n \"Tuesday\",\r\n \"Wednesday\",\r\n \"Thursday\",\r\n \"Friday\",\r\n \"Saturday\",\r\n ],\r\n monthsOfYear = [\r\n \"January\",\r\n \"February\",\r\n \"March\",\r\n \"April\",\r\n \"May\",\r\n \"June\",\r\n \"July\",\r\n \"August\",\r\n \"September\",\r\n \"October\",\r\n \"November\",\r\n \"December\",\r\n ],\r\n dayName = daysOfWeek[date.getDay()],\r\n monthName = monthsOfYear[date.getMonth()];\r\n\r\n return `${dayName}, ${monthName} ${day}, ${year}`;\r\n } catch (error) {\r\n console.log(\"Error in date format\");\r\n return null;\r\n }\r\n};\r\nconst IsLoanProgramSelected = async (LoanId, callBack = () => {}) => {\r\n return await handleAPI({\r\n name: \"IsLoanProgramSelected\",\r\n params: { LoanId },\r\n apiName: \"GenericAPI\",\r\n method: \"GET\",\r\n }).then((response) => {\r\n const iIsSelected = JSON[\"parse\"](response)[\"Table\"][0][\"Column1\"] > 0;\r\n callBack(iIsSelected);\r\n return iIsSelected;\r\n });\r\n};\r\n\r\nconst getPoints = (points) => {\r\n if (points < 0) {\r\n return `(${formatPercentage(points * -1)})`;\r\n }\r\n return formatPercentage(points);\r\n};\r\nconst removeUnwantedBitwise = (bitwise, options) => {\r\n let filteredValue = 0;\r\n options.forEach((option) => {\r\n if ((bitwise & option.value) === option.value) {\r\n filteredValue |= option.value;\r\n }\r\n });\r\n\r\n return filteredValue;\r\n};\r\nconst fnGetIndex = (data, key) => {\r\n let Index = data.findIndex((e) => Object.keys(e) == key);\r\n return Index;\r\n};\r\n\r\nconst Button = ({\r\n disabled = false,\r\n onPress = () => {},\r\n title = <></>,\r\n style = {},\r\n buttonType = \"primary\",\r\n}) => {\r\n return (\r\n <ModalButton\r\n disabled={buttonType == \"primary\" && disabled}\r\n onPress={onPress}\r\n title={title}\r\n buttonType={buttonType}\r\n style={[\r\n {\r\n alignSelf: \"center\",\r\n padding: 20,\r\n height: web ? 43 : 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n borderRadius: 8,\r\n },\r\n buttonType == \"primary\"\r\n ? {\r\n backgroundColor: \"#508BC9\",\r\n borderColor: !disabled ? \"#295B9A\" : \"\",\r\n borderWidth: !disabled ? 1 : 0,\r\n }\r\n : {\r\n backgroundColor: disabled ? \"#f2f2f2\" : \"#fff\",\r\n borderWidth: 3,\r\n borderColor: \"#508BC9\",\r\n },\r\n style,\r\n web\r\n ? {\r\n boxShadow: \"rgba(0, 0, 0, 30%) 0px 4px 6px\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n }\r\n : generateBoxShadowStyle(2, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n textStyle={{\r\n marginTop: web ? \"-3px\" : 0,\r\n }}\r\n />\r\n );\r\n};\r\nconst RateOption = ({ onPress = () => {}, children, disable = false }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n return (\r\n <>\r\n <LinearGradient\r\n colors={[\"#404040\", \"#232323\", \"#232323\"]}\r\n style={{\r\n alignItems: \"center\",\r\n justifyContent: \"space-evenly\",\r\n width: web ? 250 : 190,\r\n }}\r\n >\r\n <TouchableOpacity\r\n style={[\r\n {\r\n paddingHorizontal: 10,\r\n paddingVertical: web ? 14 : 8,\r\n borderWidth: 1,\r\n borderColor: \"#5f5f5f\",\r\n width: \"100%\",\r\n opacity: disable ? 0.5 : 1,\r\n },\r\n isHovered && {\r\n backgroundColor: \"#6c757d\",\r\n },\r\n ]}\r\n onPress={onPress}\r\n activeOpacity={1}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n >\r\n <CustomText\r\n bold\r\n style={[\r\n {\r\n color: \"#fff\",\r\n fontSize: web ? 14 : 12,\r\n },\r\n\r\n web && {\r\n fontWeight: \"500\",\r\n },\r\n ]}\r\n onPress={onPress}\r\n >\r\n {children}\r\n </CustomText>\r\n </TouchableOpacity>\r\n </LinearGradient>\r\n </>\r\n );\r\n};\r\nconst handleGetShortLoanProductName = async (progName) => {\r\n return await handleAPI({\r\n name: \"GetShortLoanProgram\",\r\n params: { progName },\r\n }).then((response) => {\r\n return response;\r\n });\r\n};\r\nconst IsLockedLoan = async (LoanId) => {\r\n return await handleAPI({\r\n name: \"IsLoanLocked\",\r\n params: { LoanId },\r\n apiName: \"RateLockAPI\",\r\n }).then((response) => {\r\n return response;\r\n });\r\n};\r\nconst RateRow = forwardRef((props, ref) => {\r\n const { backgroundColor, children } = props,\r\n handlePress = () => {\r\n if (props.onPress) {\r\n props.onPress();\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n triggerPress: handlePress,\r\n }));\r\n\r\n return (\r\n <TouchableOpacity\r\n style={[\r\n styles[\"rateTableRow\"],\r\n {\r\n backgroundColor,\r\n borderBottomColor: \"#a5a5a5\",\r\n borderBottomWidth: 1,\r\n },\r\n ]}\r\n activeOpacity={0.8}\r\n onPress={handlePress}\r\n >\r\n {children}\r\n </TouchableOpacity>\r\n );\r\n});\r\n\r\nconst handleGetJournalPost = async (LoanId) => {\r\n return await handleAPI({\r\n name: \"getJournalPostStatus\",\r\n params: { LoanId },\r\n apiName: \"RateLockAPI\",\r\n }).then((response) => {\r\n return response;\r\n });\r\n};\r\nconst handleUnPostJournal = async (XmlDataIn) => {\r\n return await handleAPI({\r\n name: \"getJournalPostStatus\",\r\n params: { XmlDataIn },\r\n }).then((response) => {\r\n return response;\r\n });\r\n};\r\nconst SaveLockRateCancelReason = async (\r\n Loanid,\r\n EmpNum,\r\n CancelReason,\r\n CancelType\r\n) => {\r\n return await handleAPI({\r\n name: \"SaveLockRateCancelReason\",\r\n params: {\r\n Loanid,\r\n EmpNum,\r\n CancelReason: CancelReason || \"\",\r\n CancelType,\r\n },\r\n }).then((response) => {\r\n return response;\r\n });\r\n};\r\nconst getMidRate = async (LoanID, callBack = () => {}) => {\r\n handleAPI({\r\n name: \"GetMidRate\",\r\n params: { LoanID },\r\n apiName: \"GenericAPI\",\r\n method: \"POST\",\r\n }).then((response) => {\r\n callBack(JSON.parse(response)[0]);\r\n });\r\n};\r\nconst handleGetLimitedRateArray = (\r\n midRateDetails = {},\r\n rowData,\r\n COlID,\r\n totalAddons\r\n ) => {\r\n let {\r\n chargerebate: chargeRebate,\r\n nearestcharge: nearestCharge,\r\n ratemethod: rateMethod,\r\n ratetarget: rateTarget,\r\n } = midRateDetails;\r\n\r\n /* \r\n rateMethod = 1; --desired rate\r\n rateTarget = 8.625;\r\n\r\n\r\n rateMethod = 2; --rate formula\r\n nearestCharge = 1; 1 --equal and above,2 --equal or below\r\n chargeRebate = 1.889;\r\n */\r\n\r\n let midRate = 0,\r\n filteredRatesArray = [];\r\n\r\n if (rateMethod == 1) {\r\n midRate = Number(cleanValue(rateTarget));\r\n } else if (rateMethod == 2) {\r\n rowData = rowData.map((row) => {\r\n row[\"finalPoints\"] = Number(\r\n cleanValue(getPoints(parseFloat(row[COlID]) + totalAddons))\r\n );\r\n return row;\r\n });\r\n\r\n // if (nearestCharge === 1) {\r\n // //Equal or Above\r\n // filteredRatesArray = rowData.filter(\r\n // ({ finalPoints }) => finalPoints >= chargeRebate\r\n // );\r\n // if (filteredRatesArray.length === 0) {\r\n // filteredRatesArray = sortByKeyNumber(rowData, \"finalPoints\", !true);\r\n // } else {\r\n // filteredRatesArray = sortByKeyNumber(\r\n // filteredRatesArray,\r\n // \"finalPoints\",\r\n // true\r\n // );\r\n // }\r\n // } else {\r\n // //Equal or Below\r\n // filteredRatesArray = rowData.filter(\r\n // ({ finalPoints }) => finalPoints <= chargeRebate\r\n // );\r\n // if (filteredRatesArray.length === 0) {\r\n // filteredRatesArray = sortByKeyNumber(rowData, \"finalPoints\", !false);\r\n // } else {\r\n // filteredRatesArray = sortByKeyNumber(\r\n // filteredRatesArray,\r\n // \"finalPoints\",\r\n // false\r\n // );\r\n // }\r\n // }\r\n\r\n // Determine the comparison based on nearestCharge\r\n const compare = nearestCharge === 1 ? (a, b) => a >= b : (a, b) => a <= b;\r\n\r\n filteredRatesArray = rowData.filter(({ finalPoints }) =>\r\n compare(finalPoints, chargeRebate)\r\n );\r\n\r\n filteredRatesArray = filteredRatesArray.length\r\n ? sortByKeyNumber(\r\n filteredRatesArray,\r\n \"finalPoints\",\r\n nearestCharge === 1\r\n )\r\n : sortByKeyNumber(rowData, \"finalPoints\", nearestCharge === 1);\r\n\r\n midRate = Number(cleanValue(filteredRatesArray[0][\"Rate\"]));\r\n }\r\n let sRate = roundOfRate(midRate) - 0.25,\r\n eRate = roundOfRate(midRate) + 0.25;\r\n return [sRate, midRate, eRate];\r\n },\r\n roundOfRate = (rate) => {\r\n return isFloat(rate / 0.125) ? Math.round(rate) : rate;\r\n },\r\n isFloat = (n) => {\r\n return Number(n) === n && n % 1 !== 0;\r\n };\r\n\r\nconst handlePricingError = (params) => {\r\n handleAPI({\r\n name: \"pricingErrorHanding\",\r\n params,\r\n apiName: \"RateLockAPI\",\r\n }).then((response) => {\r\n console.log(\"Mail Queued\");\r\n });\r\n};\r\n\r\nconst InterestRate = ({\r\n SessionId,\r\n loanId,\r\n userId: EmpNum,\r\n stateOptions = [],\r\n userName,\r\n handleGetLeftNavStatus = () => {},\r\n LoanData: iLoanData = {},\r\n handleRequiredFieldData = () => {},\r\n handleSaveSubjectProperty = () => {},\r\n propertyTypeOption = [],\r\n handleCalculateDownPaymentPer = () => {},\r\n DownPmtOnChange = () => {},\r\n LnAmtExcChange = () => {},\r\n CalculateDownPayment = () => {},\r\n CalculateLnAmt = () => {},\r\n handleSaveRequiredFields = () => {},\r\n handleGetBorrowerUrl = () => {},\r\n handleNextClick = () => {},\r\n}) => {\r\n const [loanBoardingData, setLoanBoardingData] = useState(null),\r\n [rateData, setRateData] = useState(null),\r\n [rowStatus, setRowStatus] = useState([]),\r\n [searchInfo, setSearchInfo] = useState({ isEditMode: true }),\r\n [processingStatus, setProcessingStatus] = useState(\"pageLoading\"),\r\n [selectedRate, setSelectedRate] = useState({}),\r\n [aprRateState, setAprRateState] = useState({}),\r\n [cashToCloseDetails, setCashToCloseDetails] = useState({}),\r\n [rateDisplayDetails, setRateDisplayDetails] = useState({\r\n expandedLineId: [],\r\n }),\r\n // [lockExpDate, setLockExpDate] = useState(null),\r\n [optionDetails, setOptionDetails] = useState({\r\n visible: false,\r\n top: 0,\r\n left: 0,\r\n opacity: 0,\r\n }),\r\n [priceAvailability, setPriceAvailability] = useState(null),\r\n [lockConfirmationDetails, setLockConfirmationDetails] = useState({\r\n lockExpDate: null,\r\n }),\r\n [extendDetails, setExtendDetails] = useState([]),\r\n [floatDownRate, setFloatDownRate] = useState([]),\r\n [alertDetails, setAlertDetails] = useState({\r\n visible: false,\r\n head: \"\",\r\n body: \"\",\r\n }),\r\n [modalDetails, setModalDetails] = useState({ visible: false }),\r\n [loanTermDetails, setLoanTermDetails] = useState({\r\n isExpand: false,\r\n viewCount: 4,\r\n totalCount: loanTermOptions[\"length\"],\r\n }),\r\n { contextDetails, setContextDetails } = useContext(context),\r\n targetRef = useRef(null),\r\n scrollViewRef = useRef(null),\r\n OptionButton = useRef(),\r\n { processName = \"rateSelection\" } = lockConfirmationDetails,\r\n [requiredFieldsObj, setRequiredFieldsObj] = useState([]);\r\n\r\n const handleGetRequiredFields = () => {\r\n let iRequiredFieldsArray = [\r\n !Number(iLoanData[\"Propertybe\"]) && {\r\n Title: \"Please tell us about your occupancy\",\r\n Options: [\r\n { value: 1, text: \"Primary Residence\" },\r\n { value: 2, text: \"Second Home\" },\r\n { value: 3, text: \"Investment Property\" },\r\n ],\r\n ColumnName: \"Propertybe\",\r\n type: 1,\r\n },\r\n !Number(iLoanData[\"LoanSummaryPropertyType\"]) && {\r\n Title: \"What is the Property Type?\",\r\n label: \"Property Type\",\r\n ColumnName: \"LoanSummaryPropertyType\",\r\n onBlur: () => {},\r\n type: 3,\r\n Option: propertyTypeOption,\r\n isMap: true,\r\n },\r\n\r\n !iLoanData[\"subjectZip\"] && {\r\n Title: \"Subject Property Zip Code\",\r\n label: \"Zip Code\",\r\n ColumnName: \"subjectZip\",\r\n keyboardType: \"numeric\",\r\n maxLength: 5,\r\n type: 2,\r\n },\r\n ].filter((_) => _);\r\n\r\n if (iLoanData[\"LoanPurpose\"] === 2 && !iLoanData[\"Pri_purpose_Refi\"]) {\r\n iRequiredFieldsArray.push({\r\n Title: \"What is the primary purpose of your refinance?\",\r\n Options: [\r\n { value: 1, text: \"Lower my payment\" },\r\n { value: 2, text: \"Cash out\" },\r\n ],\r\n ColumnName: \"Pri_purpose_Refi\",\r\n type: 1,\r\n });\r\n }\r\n if (\r\n iLoanData[\"LoanPurpose\"] == 1 &&\r\n (!Number(cleanValue(iLoanData[\"Purchase_Estm_Pur_Price\"])) ||\r\n !Number(cleanValue(iLoanData[\"Purchase_Estm_LnAmt\"])))\r\n ) {\r\n iRequiredFieldsArray.push(\r\n ...[\r\n {\r\n Title: \"What is the estimated purchase price?\",\r\n label: \"Estimated purchase value\",\r\n ColumnName: \"Purchase_Estm_Pur_Price\",\r\n isValid: cleanValue(iLoanData[\"Purchase_Estm_Pur_Price\"]) == 0,\r\n isCurrency: true,\r\n onBlurFunction: \"handleCalculateDownPaymentPer\",\r\n },\r\n {\r\n Title: \"What is the estimated Down Payment?\",\r\n label: \"Down Payment\",\r\n field: [\r\n {\r\n ColumnName: \"DownPayment\",\r\n ColumnValue: iLoanData[\"DownPayment\"],\r\n isCurrency: true,\r\n onBlurFunction: \"DownPmtOnChange\",\r\n },\r\n {\r\n ColumnName: \"DownPaymentPercent\",\r\n ColumnValue: iLoanData[\"DownPaymentPercent\"],\r\n isCurrency: true,\r\n onBlurFunction: \"CalculateDownPayment\",\r\n },\r\n ],\r\n },\r\n {\r\n Title: \"What would be your estimated loan amount?\",\r\n label: \"Estimated Loan Amount\",\r\n ColumnName: \"Purchase_Estm_LnAmt\",\r\n isValid: cleanValue(iLoanData[\"Purchase_Estm_LnAmt\"]) == 0,\r\n isCurrency: true,\r\n onBlurFunction: \"LnAmtExcChange\",\r\n },\r\n ]\r\n );\r\n }\r\n\r\n if (\r\n iLoanData[\"LoanPurpose\"] == 2 &&\r\n (!Number(cleanValue(iLoanData[\"Refi_Estmt_Prop_Lnval\"])) ||\r\n !Number(cleanValue(iLoanData[\"Refi_Estmt_LnAmt\"])))\r\n ) {\r\n iRequiredFieldsArray.push(\r\n ...[\r\n {\r\n Title: \"What is the estimated property value?\",\r\n label: \"Estimated Property Value\",\r\n isValid: cleanValue(iLoanData[\"Refi_Estmt_Prop_Lnval\"]) == 0,\r\n ColumnName: \"Refi_Estmt_Prop_Lnval\",\r\n ColumnValue: iLoanData[\"Refi_Estmt_Prop_Lnval\"],\r\n isCurrency: true,\r\n onBlur: () => {\r\n // setLoanData({\r\n // ...iLoanData,\r\n // Refi_Estmt_Prop_Lnval: formatCurrency(\r\n // LoanData[\"Refi_Estmt_Prop_Lnval\"],\r\n // 2\r\n // ),\r\n // });\r\n },\r\n },\r\n {\r\n Title: \"Loan Amount of Loan Being Paid Off?\",\r\n label: \"Loan Being Paid Off\",\r\n ColumnName: \"PaidOff\",\r\n isCurrency: true,\r\n onBlurFunction: \"PaidOff\",\r\n // () => {\r\n // CalculateLnAmt(\"PaidOff\");\r\n // },\r\n },\r\n iLoanData[\"Pri_purpose_Refi\"] === 2\r\n ? {\r\n Title: \"Cash Out Amount Requested?\",\r\n label: \"Cash Out Amount\",\r\n ColumnName: \"CashOutAmount\",\r\n isCurrency: true,\r\n onBlurFunction: \"CashOutAmount\",\r\n // () => {\r\n // CalculateLnAmt(\"CashOutAmount\");\r\n // },\r\n }\r\n : null,\r\n {\r\n Title: \"What would be your estimated loan amount?\",\r\n label: \"Estimated Loan Amount\",\r\n ColumnName: \"Refi_Estmt_LnAmt\",\r\n isValid: cleanValue(iLoanData[\"Refi_Estmt_LnAmt\"]) == 0,\r\n isCurrency: true,\r\n onBlurFunction: \"Refi_Estmt_LnAmt\",\r\n // () => {\r\n // CalculateLnAmt(\"Refi_Estmt_LnAmt\");\r\n // },\r\n },\r\n ].filter((_) => _)\r\n );\r\n }\r\n console.log(iRequiredFieldsArray);\r\n\r\n setRequiredFieldsObj(iRequiredFieldsArray);\r\n return (iRequiredFieldsArray || []).length > 0;\r\n };\r\n\r\n const handleOpenOption = () => {\r\n OptionButton.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setOptionDetails((prevOptionDetails) => ({\r\n visible: !prevOptionDetails[\"visible\"],\r\n top: py + h - (android ? 22 : 0),\r\n bottom: _fy - (android ? 8 : 0),\r\n left: _px - 1,\r\n width: _w - 30,\r\n opacity: 1,\r\n }));\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n handleGetLoanBoardingData(undefined, { processName: \"selectLoanProduct\" });\r\n getMidRate(loanId, (rateDetails) => {\r\n setRateDisplayDetails(() => {\r\n return { expandedLineId: [], ...rateDetails };\r\n });\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (priceAvailability === \"priceChanged\") {\r\n setProcessingStatus(\"pageLoading\");\r\n setTimeout(() => {\r\n handleGetLoanBoardingData();\r\n }, 1500);\r\n setRateData(null);\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n setLoanBoardingData(null);\r\n }\r\n }, [priceAvailability]);\r\n\r\n const handleAutoSelectLoanProduct = (needToSelect, callBack = () => {}) => {\r\n if (needToSelect) {\r\n setProcessingStatus(\"autoSelectingProduct\");\r\n handleAPI({\r\n name: \"RunLoanSelection_NewLoan\",\r\n params: {\r\n LoanId: loanId,\r\n },\r\n })\r\n .then((response) => {\r\n setTimeout(() => callBack(1), 1000);\r\n })\r\n .catch((err) =>\r\n console.error(\"Error form RunLoanSelection_NewLoan ====> \", err)\r\n );\r\n } else {\r\n callBack();\r\n }\r\n };\r\n\r\n const handleGetLoanBoardingData = async (isLocked, paramsObj = {}) => {\r\n let { processName } = paramsObj;\r\n if (processName !== \"selectLoanProduct\") {\r\n setProcessingStatus(\"pageLoading\");\r\n }\r\n isLocked = [0, 1].includes(isLocked)\r\n ? isLocked\r\n : await IsLockedLoan(loanId);\r\n\r\n if (isLocked == 0) {\r\n if (handleGetRequiredFields()) {\r\n setProcessingStatus(\"addressInfoSection-BestFit\");\r\n setModalDetails({\r\n visible: true,\r\n });\r\n } else {\r\n IsLoanProgramSelected(loanId, (isFloated) => {\r\n setTimeout(() => {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n isFloated,\r\n isLoadingFloatedRate: true,\r\n };\r\n });\r\n }, 1000);\r\n });\r\n handleAutoSelectLoanProduct(\r\n processName === \"selectLoanProduct\",\r\n async (retryCount = 0) => {\r\n setProcessingStatus(\"pageLoading\");\r\n handleAPI({\r\n name: \"GetLoanBoardingData\",\r\n apiName: \"RateLockAPI\",\r\n params: {\r\n LoanID: loanId,\r\n EmpNum,\r\n WhatProcess: 1,\r\n Testing: 0,\r\n SessionId,\r\n },\r\n })\r\n .then(async (response) => {\r\n response = JSON.parse(response);\r\n __DEV__ && console.log(\"response\", response);\r\n\r\n let dataOutIndex = fnGetIndex(response[\"DataOut\"], \"DataOut\"),\r\n LineId = 0,\r\n IsNoProgramSelected = true;\r\n if (dataOutIndex != -1) {\r\n LineId = Object.keys(\r\n response[\"DataOut\"]?.[dataOutIndex]?.[\"DataOut\"]?.[1] || []\r\n );\r\n }\r\n\r\n if (LineId.length && false)\r\n LineId = LineId?.[0].split(\"_\")?.[1] || 0;\r\n else {\r\n // let progIndex = fnGetIndex(\r\n // response[\"DataOut\"],\r\n // \"ProgramName\"\r\n // );\r\n // IsNoProgramSelected =\r\n // (\r\n // response[\"DataOut\"][progIndex]?.[\"ProgramName\"]?.[0][\r\n // \"ProgramName\"\r\n // ] || \"\"\r\n // )?.length == 0;\r\n\r\n // if (!IsNoProgramSelected) {\r\n // handleCancelConfirmation({\r\n // head: \"Error\",\r\n // body: \"Exception occurred on Loading Selected Loan Product.\",\r\n // });\r\n // return;\r\n // }\r\n\r\n let pgIndex = fnGetIndex(\r\n response[\"DataOut\"],\r\n \"LoanSearchInfo\"\r\n );\r\n let { LoanProgNum = \"\", LoadSelectedProduct = 0 } =\r\n response[\"DataOut\"][pgIndex]?.[\"LoanSearchInfo\"]?.[0] || \"\";\r\n if (LoanProgNum.length > 3 && LoadSelectedProduct == 1) {\r\n handleSearchLoanProducts({\r\n LoanProgNum,\r\n loanBoardingData: response,\r\n });\r\n }\r\n }\r\n // if ([\"changeRate\", \"floatDown\"].includes(processName)) {\r\n // let mergedData = response[\"DataOut\"][dataOutIndex],\r\n // keysToBeModify = [\r\n // \"RateCol\",\r\n // \"RateData\",\r\n // \"Addons\",\r\n // \"LockPeriod\",\r\n // ],\r\n // worseCaseRaw = await handleGetChangeRate(LineId),\r\n // worseCaseData =\r\n // worseCaseRaw?.[\"DataOut\"]?.[1]?.[\"DataOut\"] || [],\r\n // obj =\r\n // mergedData?.[\"DataOut\"]?.[1]?.[`LineDataOut_${LineId}`];\r\n // for (let index = 0; index < obj.length; index++) {\r\n // let row = obj[index],\r\n // key = Object.keys(row)[0] || \"Addons\";\r\n // if (keysToBeModify.indexOf(key) != -1) {\r\n // let point = fnGetIndex(worseCaseData, key),\r\n // replacingData = worseCaseData[point]?.[key] || [];\r\n // obj[index][key] = replacingData;\r\n // }\r\n // }\r\n // mergedData[\"DataOut\"][1][`LineDataOut_${LineId}`] = obj;\r\n // response[\"DataOut\"][dataOutIndex] = mergedData;\r\n // }\r\n\r\n setLoanBoardingData(response);\r\n\r\n // let iRateData = [\r\n // ...(response[\"DataOut\"]?.[7]?.[\"DataOut\"] || []),\r\n // ];\r\n // const loanProgramOrder = iRateData.pop();\r\n // iRateData.shift();\r\n\r\n // const loanProgramsList = await loanProgramOrder[\r\n // \"LoanProgramsList\"\r\n // ].reduce(async (acc, { LPA_CommonData, CommonProgramName }) => {\r\n // acc[LPA_CommonData] = await handleGetShortLoanProductName(\r\n // CommonProgramName\r\n // );\r\n // return acc;\r\n // }, {});\r\n // iRateData = replaceLoanProductName(\r\n // iRateData,\r\n // loanProgramsList,\r\n // \"LPA_CommonData\"\r\n // );\r\n\r\n // iRateData[0][\"isExpand\"] = true;\r\n // let {\r\n // LineId: lineId,\r\n // LnProgActiveId,\r\n // LockDays,\r\n // InterestRate,\r\n // RateSheetId,\r\n // } = Object.values(iRateData[0])[0][1][\r\n // \"LoanProgramDetails\"\r\n // ][0],\r\n // { LockPeriod = [] } = Object.values(iRateData[0])[0][4];\r\n\r\n // let LockPeriodArray = LockPeriod.filter(\r\n // ({ LockExpDate }) => LockExpDate == LockDays\r\n // );\r\n // if (LockPeriodArray.length == 0) {\r\n // LockPeriodArray = LockPeriod.filter(\r\n // ({ LockPeriodID }) => LockPeriodID == 4\r\n // );\r\n // }\r\n // const { LockPeriods, COlID } = LockPeriodArray[0] || {},\r\n // { [COlID]: BasePoints } =\r\n // Object.values(iRateData[0])[0][5][\"RateData\"].filter(\r\n // ({ Rate }) => Rate == InterestRate\r\n // )?.[0] || {};\r\n\r\n // if (\r\n // ![\"changeRate\", \"floatDown\"].includes(processName) &&\r\n // !__DEV__\r\n // ) {\r\n // const iPriceAvailability = await handleGetRateAvailability({\r\n // LineId,\r\n // RateSheetId,\r\n // BaseRate: InterestRate,\r\n // BasePoints: BasePoints,\r\n // ParPeriod: LockPeriods,\r\n // });\r\n // setPriceAvailability(iPriceAvailability);\r\n // }\r\n\r\n // setRateData(iRateData);\r\n // if (iRateData.length === 0) {\r\n // handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n // }\r\n\r\n // // setSelectedRate({\r\n // // Rate: cleanValue(InterestRate),\r\n // // LineId: lineId,\r\n // // LnProgActiveId,\r\n // // });\r\n\r\n // handleUpdateSearchInfo(\"isEditMode\", false, false);\r\n let LoanSearchInfoIndex = fnGetIndex(\r\n response[\"DataOut\"],\r\n \"LoanSearchInfo\"\r\n ),\r\n PropertyInfoIndex = fnGetIndex(\r\n response[\"DataOut\"],\r\n \"PropertyInfo\"\r\n ),\r\n {\r\n AmortType,\r\n LoanType,\r\n Term,\r\n LockPeriod: lockPeriod,\r\n } = response[\"DataOut\"][LoanSearchInfoIndex][\r\n \"LoanSearchInfo\"\r\n ][0],\r\n { LienPosition = 1 } =\r\n response[\"DataOut\"][PropertyInfoIndex][\"PropertyInfo\"][0];\r\n\r\n AmortType = removeUnwantedBitwise(AmortType, amortTypeOptions);\r\n LoanType = removeUnwantedBitwise(\r\n LoanType,\r\n loanProgramTypeOptions\r\n );\r\n Term = removeUnwantedBitwise(Term, loanTermOptions);\r\n\r\n setSearchInfo({\r\n amortType: Number(AmortType),\r\n loanType: Number(LoanType),\r\n term: Number(Term),\r\n lienPosition: Number(LienPosition) || 1,\r\n lockPeriod: Number(lockPeriod),\r\n isEditMode: true,\r\n });\r\n setProcessingStatus(\"searchingProducts\");\r\n })\r\n .catch((error) => {\r\n console.error(\"Error from GetLoanBoardingData ====> \", error);\r\n if (retryCount === 1) {\r\n setProcessingStatus(\"searchingProducts\");\r\n handleGetLoanBoardingData(0);\r\n } else {\r\n handleCancelConfirmation({\r\n head: \"Error\",\r\n body: \"Exception occurred on Loading Selected Loan Product.\",\r\n });\r\n setProcessingStatus(null);\r\n setRateData([]);\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n }\r\n });\r\n }\r\n );\r\n }\r\n } else {\r\n handleGetRateLockDetails();\r\n // handleGetExtendRateDetails();\r\n setProcessingStatus(null);\r\n }\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n isLocked,\r\n };\r\n });\r\n };\r\n const handleGetLineIdLockPeriod = ({ rate }) => {\r\n handleAPI({\r\n name: \"GetCashFromBorr\",\r\n apiName: \"GenericAPI\",\r\n params: { loanId },\r\n method: \"GET\",\r\n }).then((response) => {\r\n const { \"Cash To Borrower\": cashToClose } =\r\n JSON.parse(response)[\"Table\"][0];\r\n setSelectedRate((prevSelectedRate) => {\r\n return {\r\n ...prevSelectedRate,\r\n cashToClose,\r\n };\r\n });\r\n });\r\n return;\r\n handleAPI({\r\n name: \"GetLineIdLockPeriod\",\r\n apiName: \"GenericAPI\",\r\n params: { loanId },\r\n method: \"GET\",\r\n }).then((response) => {\r\n const { lineId = 0, lockPeriod = 2 } = JSON.parse(response)[\"Table\"][0];\r\n if (lineId && lockPeriod) {\r\n handleGetCashToClose(\r\n lineId,\r\n lockPeriod,\r\n true,\r\n Number(cleanValue(rate))\r\n );\r\n }\r\n });\r\n };\r\n const handleGetMonthlyPayment = () => {\r\n handleAPI({\r\n name: \"GetMonthlyPayment\",\r\n apiName: \"GenericAPI\",\r\n params: { loanId },\r\n method: \"GET\",\r\n })\r\n .then((response) => {\r\n const { MonthlyPayment = \"-\" } = JSON.parse(response)[\"Table\"][0];\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n MonthlyPayment: MonthlyPayment.toFixed(2),\r\n };\r\n });\r\n })\r\n .catch((e) => {\r\n console.error(\"Error form ====> DoLockRateProcess\", e);\r\n });\r\n };\r\n //\r\n const handleLoanApr = (aprPollingCount = 0) => {\r\n if (aprPollingCount < 15) {\r\n handleAPI({\r\n name: \"GetLoanApr\",\r\n apiName: \"GenericAPI\",\r\n params: { loanId },\r\n method: \"GET\",\r\n })\r\n .then((response) => {\r\n const { TILAPR: APR } = JSON.parse(response)[\"Table\"][0];\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n APR,\r\n };\r\n });\r\n\r\n setTimeout(() => {\r\n handleLoanApr(aprPollingCount + 1);\r\n }, 1500);\r\n })\r\n .catch((e) => {\r\n console.error(\"Error form ====> DoLockRateProcess\", e);\r\n });\r\n }\r\n };\r\n const numberWithCommas = (x) => {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n };\r\n const formatBaseAmount = (baseamt) => {\r\n baseamt = baseamt.toFixed(2);\r\n let value = numberWithCommas(baseamt);\r\n if (value.toString().includes(\"-\")) {\r\n value = `($${value.toString().replaceAll(\"-\", \"\")})`;\r\n } else value = `$${value}`;\r\n return value;\r\n };\r\n const handleChangeRate = ({ iMessage, closeOnly }) => {\r\n let {\r\n allowlockstatus: AllowLockStatus,\r\n progchanged: progChanged,\r\n ratesheetused: RateSheetID,\r\n } = lockConfirmationDetails,\r\n message = iMessage || \"\",\r\n isCloseOnly = closeOnly || false;\r\n\r\n setOptionDetails({\r\n ...optionDetails,\r\n visible: false,\r\n });\r\n if (!message) {\r\n if (progChanged == 0) {\r\n message = (\r\n <>\r\n The lock will be priced as of rate sheet id{\" \"}\r\n <CustomText bold>{RateSheetID}</CustomText>. Do you want to proceed?\r\n </>\r\n );\r\n } else {\r\n message =\r\n \"Since this program on this lock has changed the lock may be subject to worse case pricing. Do you want to proceed?\";\r\n }\r\n }\r\n\r\n handleCancelConfirmation({\r\n head: \"Select a Different Rate\",\r\n body: message,\r\n needCancel: !isCloseOnly,\r\n successButtonText: isCloseOnly ? \"Ok\" : \"Proceed\",\r\n preventSuccessPress: true,\r\n successButtonOnPress: async () => {\r\n const ChangeRateSet = await handleGetChangeRateSet();\r\n if (ChangeRateSet != 1) {\r\n handleCancelConfirmation({\r\n head: \"Error\",\r\n body:\r\n \"Error occurred in setting up the loan for changing the rate \" +\r\n ChangeRateSet +\r\n \". Please try again or contact support@directcorp.com for additional assistance\",\r\n });\r\n } else {\r\n setProcessingStatus(null);\r\n setRateData(null);\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n setLoanBoardingData(null);\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n processName: \"changeRate\",\r\n };\r\n });\r\n handleGetLoanBoardingData(0, { processName: \"changeRate\" });\r\n handleSetSessionDataValue();\r\n setAlertDetails({\r\n visible: false,\r\n });\r\n setModalDetails({\r\n visible: false,\r\n });\r\n }\r\n },\r\n });\r\n };\r\n\r\n const handleFloatDown = () => {\r\n let {\r\n allowlockstatus: AllowLockStatus,\r\n floatdownallowed: FloatDownAllowed,\r\n showfloatdown: showFloatDown,\r\n maximumFloatDown: MaxFloatDownAllowed,\r\n floatdownflag: FloatDownFlag,\r\n } = lockConfirmationDetails,\r\n message = \"\",\r\n isCloseOnly = true;\r\n\r\n setOptionDetails({\r\n ...optionDetails,\r\n visible: false,\r\n });\r\n\r\n if (FloatDownFlag == 1) {\r\n message =\r\n \"The Float Down Option has already been used and can only be used once.\";\r\n } else if (FloatDownAllowed == 0) {\r\n message = \"The Float Down Option is not allowed on this program.\";\r\n } else if (showFloatDown == 0) {\r\n message = (\r\n <CustomText>\r\n The rate lock is no longer eligible to Float Down because it has\r\n reached the maximum{\" \"}\r\n <CustomText bold>{MaxFloatDownAllowed}</CustomText>\r\n {\". \"}Float down(s) allowed. Please contact the Lock Desk if you need\r\n additional assistance.\r\n </CustomText>\r\n );\r\n } else if (FloatDownAllowed == 3) {\r\n message =\r\n \"This lock is not eligible for a float-down because the loan amount falls within the new, temporary FHA loan amount limits.\";\r\n } else {\r\n isCloseOnly = false;\r\n message = `Selecting the Float Down option may cause your expiration date to change, so please note your new expiration date.${\"\\n\"}${\"\\n\"}Do you want to proceed?`;\r\n }\r\n handleCancelConfirmation({\r\n head: \"Float Down Option\",\r\n body: message,\r\n needCancel: !isCloseOnly,\r\n successButtonText: isCloseOnly ? \"Ok\" : \"Proceed\",\r\n preventSuccessPress: true,\r\n successButtonOnPress: async () => {\r\n const FloatDownSet = await handleGetFloatDownSet();\r\n if (FloatDownSet != 1) {\r\n handleCancelConfirmation({\r\n head: \"Error\",\r\n body:\r\n \"Error occurred in setting up the loan for changing the rate \" +\r\n FloatDownSet +\r\n \". Please try again or contact support@directcorp.com for additional assistance\",\r\n });\r\n } else {\r\n setProcessingStatus(null);\r\n setRateData(null);\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n setLoanBoardingData(null);\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n processName: \"floatDown\",\r\n };\r\n });\r\n handleGetLoanBoardingData(0, { processName: \"floatDown\" });\r\n handleSetSessionDataValue();\r\n setAlertDetails({\r\n visible: false,\r\n });\r\n setModalDetails({\r\n visible: false,\r\n });\r\n }\r\n },\r\n });\r\n };\r\n const handleGetChangeRate = async (LineId) => {\r\n return await handleAPI({\r\n name: \"ChangeRate\",\r\n apiName: \"RateLockAPI\",\r\n params: { LineId, EmpNum, LoanId: loanId, SessionId },\r\n }).then((response) => {\r\n response = JSON.parse(response);\r\n return response;\r\n });\r\n };\r\n\r\n const handleGetFloatDownRates = async () => {\r\n handleAPI({\r\n name: \"LockRateXMLCreate\",\r\n params: {\r\n LineId: rateDetails[\"lineid\"],\r\n EmpNum,\r\n LoanId: loanId,\r\n },\r\n })\r\n .then((response) => {\r\n //Come here\r\n response = new XMLParser().parseFromString(response);\r\n const loanAmt = RateDetails[\"LoanAmount\"];\r\n const RateArray = response[\"children\"][4][\"children\"].map((rate) => {\r\n let iRate = parseFloat(rate[\"attributes\"][\"Rate\"]),\r\n basePoint = parseFloat(rate[\"attributes\"][\"Col1\"]),\r\n baseAmt = formatBaseAmount((loanAmt * basePoint) / 100);\r\n basePoint = parseFloat(\r\n basePoint.toString().replaceAll(\"-\", \"\")\r\n ).toFixed(3);\r\n basePoint = basePoint < 0 ? \"(\" + basePoint + \"%)\" : basePoint + \"%\";\r\n\r\n return [iRate, basePoint, baseAmt];\r\n });\r\n\r\n setFloatDownRate(RateArray);\r\n })\r\n .catch((err) => console.error(\"Error form ChangeRateSet ====> \", err));\r\n };\r\n const handleGetFloatDownSet = async () => {\r\n return await handleAPI({\r\n name: \"FloatDownSet\",\r\n apiName: \"RateLockAPI\",\r\n params: { LoanId: loanId, EmpNum },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) => console.error(\"Error form LockFloatDownSet ====> \", err));\r\n };\r\n const handleGetChangeRateSet = async () => {\r\n return await handleAPI({\r\n name: \"ChangeRateSet\",\r\n apiName: \"RateLockAPI\",\r\n params: { LoanId: loanId },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) => console.error(\"Error form ChangeRateSet ====> \", err));\r\n };\r\n const handleSetSessionDataValue = async () => {\r\n return await handleAPI({\r\n name: \"SetSessionVar\",\r\n params: {\r\n VarValue: loanId,\r\n SessionID: SessionId,\r\n VarName: \"RateLock_LoanId\",\r\n },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) => console.error(\"Error form ChangeRateSet ====> \", err));\r\n };\r\n const handleExtendRateLock = ({\r\n DisclosureSigned: iDisclosureSigned,\r\n AddressValidation: iAddressValidation,\r\n }) => {\r\n let {\r\n allowlockstatus: AllowLockStatus,\r\n disclosureSigned: DisclosureSigned,\r\n addresschangedaftervalidation: addressValidation,\r\n } = lockConfirmationDetails,\r\n message = \"\",\r\n WholesaleIntAccess = 1,\r\n isCloseOnly = false,\r\n validatedFlag = 0,\r\n isAddressValidation = 1;\r\n //Allowing User to Extend the Lock\r\n AllowLockStatus = 1;\r\n addressValidation = iAddressValidation || addressValidation;\r\n DisclosureSigned = iDisclosureSigned || DisclosureSigned;\r\n\r\n if (AllowLockStatus != 1) {\r\n if ([4, 5].includes(AllowLockStatus)) {\r\n message =\r\n \"Interest Rates are currently unavailable. Please check back later for pricing and rate lock options.\";\r\n isCloseOnly = true;\r\n }\r\n } else if (AllowLockStatus == 1) {\r\n if (DisclosureSigned == 0) {\r\n if (WholesaleIntAccess != 0) {\r\n validatedFlag = 1;\r\n message =\r\n \"A lock extension is not allowed until after the initial disclosures are eSigned.\";\r\n } else {\r\n message =\r\n \"A lock extension is not allowed until after the initial disclosures are eSigned.\";\r\n isCloseOnly = true;\r\n }\r\n } else if (addressValidation == 1) {\r\n if (WholesaleIntAccess != \"0\") {\r\n if (validatedFlag != 1) {\r\n message =\r\n \"A lock extension is not allowed if the property address has changed from the original Rate Lock.\";\r\n isAddressValidation = \"0\";\r\n }\r\n } else {\r\n message =\r\n \"A lock extension is not allowed if the property address has changed from the original Rate Lock.\";\r\n isCloseOnly = true;\r\n }\r\n }\r\n\r\n setProcessingStatus(\"ExtendLockConfirm\");\r\n setOptionDetails({\r\n ...optionDetails,\r\n visible: false,\r\n });\r\n\r\n if (DisclosureSigned == 1 && addressValidation == 0) {\r\n setProcessingStatus(\"ExtendLockRateView\");\r\n handleGetExtendRateView();\r\n } else if (message) {\r\n handleCancelConfirmation({\r\n head: \"Confirmation\",\r\n body: message,\r\n needCancel: !isCloseOnly,\r\n successButtonText: isCloseOnly ? \"Ok\" : \"Override\",\r\n preventSuccessPress: true,\r\n successButtonOnPress: () => {\r\n if (!isCloseOnly) {\r\n if (DisclosureSigned == 0) {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n DisclosureSigned: true,\r\n iDisclosureSigned: DisclosureSigned,\r\n };\r\n });\r\n handleExtendRateLock({ DisclosureSigned: true });\r\n } else if (isAddressValidation == 0) {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n DisclosureSigned: true,\r\n iDisclosureSigned: DisclosureSigned,\r\n };\r\n });\r\n handleExtendRateLock({\r\n AddressValidation: isAddressValidation,\r\n DisclosureSigned: true,\r\n });\r\n }\r\n }\r\n },\r\n });\r\n }\r\n }\r\n };\r\n useEffect(() => {\r\n if (extendDetails.length && processingStatus === \"ExtendLockRateView\") {\r\n handleGetExtendRateView();\r\n }\r\n }, [extendDetails]);\r\n const handleGetExtendRateView = async () => {\r\n const headers = [\"Select\", \"Extension Days\", \"Price\", \"Expiration Date\"];\r\n handleCancelConfirmation({\r\n head: `Extend Lock - ${loanId}`,\r\n body: (\r\n <>\r\n <View\r\n style={[\r\n { width: \"100%\" },\r\n android && {\r\n minWidth: Dimensions.get(\"screen\")[\"width\"] - 88,\r\n },\r\n ]}\r\n >\r\n <View\r\n style={[\r\n styles.tableRow,\r\n {\r\n backgroundColor: \"#307ecc\",\r\n paddingVertical: 10,\r\n borderBottomWidth: 1,\r\n },\r\n ]}\r\n >\r\n {headers.map((header, index) => {\r\n return (\r\n <CustomText\r\n key={index}\r\n bold\r\n style={[\r\n styles.cellOne,\r\n {\r\n color: \"#fff\",\r\n },\r\n ]}\r\n >\r\n {header}\r\n </CustomText>\r\n );\r\n })}\r\n </View>\r\n </View>\r\n <View\r\n style={[\r\n { width: \"100%\" },\r\n android && {\r\n minWidth: Dimensions.get(\"screen\")[\"width\"] - 88,\r\n },\r\n ]}\r\n >\r\n {extendDetails.map((rowDetails, index) => {\r\n return (\r\n <View\r\n key={index}\r\n style={[\r\n styles.tableRow,\r\n index % 2 == 0 && { backgroundColor: \"#f3f3f3\" },\r\n ]}\r\n >\r\n <CustomText\r\n bold\r\n style={[\r\n styles.cellOne,\r\n {\r\n opacity:\r\n lockConfirmationDetails[\"extensionUsed\"] == 1 &&\r\n rowDetails[\"TypeOption\"] == 1\r\n ? 0.3\r\n : 1,\r\n },\r\n ]}\r\n >\r\n <RadioButtonGroup\r\n selected={extendDetails[index][\"isSelected\"] || null}\r\n onSelected={(value) => {\r\n if (\r\n !(\r\n lockConfirmationDetails[\"extensionUsed\"] == 1 &&\r\n rowDetails[\"TypeOption\"] == 1\r\n )\r\n ) {\r\n setExtendDetails((prevExtendDetails) => {\r\n prevExtendDetails.forEach(\r\n (item) => (item[\"isSelected\"] = false)\r\n );\r\n prevExtendDetails[index][\"isSelected\"] = true;\r\n return [...prevExtendDetails];\r\n });\r\n }\r\n }}\r\n radioBackground=\"#295b9a\"\r\n size={18}\r\n >\r\n <RadioButtonItem\r\n value={extendDetails[index][\"isSelected\"] || false}\r\n label=\"\"\r\n />\r\n </RadioButtonGroup>\r\n </CustomText>\r\n <CustomText bold style={[styles.cellOne]}>\r\n {rowDetails[\"TypeDesc\"]}\r\n </CustomText>\r\n <CustomText bold style={[styles.cellOne]}>\r\n {parseFloat(rowDetails[\"OtherLookUp\"] || 0.0).toFixed(4)}\r\n </CustomText>\r\n <CustomText bold style={[styles.cellOne]}>\r\n {rowDetails[\"Expiration\"]}\r\n </CustomText>\r\n </View>\r\n );\r\n })}\r\n </View>\r\n {lockConfirmationDetails[\"LockExtensionRestriction\"] == 1 ? (\r\n <CustomText style={{ alignSelf: \"flex-end\", paddingVertical: 15 }}>\r\n Lock Extension is restricted on this Second Home,\r\n Conforming/SuperConforming/HighBalance loan. Please contact\r\n LockDesk.\r\n </CustomText>\r\n ) : (\r\n <></>\r\n )}\r\n </>\r\n ),\r\n successButtonText: \"Save\",\r\n successButtonOnPress: () => {\r\n handleInitExtendLock();\r\n // if (lockConfirmationDetails[\"LockExtensionRestriction\"] == 0) {\r\n // }\r\n },\r\n disableSuccessButton:\r\n lockConfirmationDetails[\"LockExtensionRestriction\"] == 1,\r\n needCancel: true,\r\n preventSuccessPress: true,\r\n });\r\n };\r\n const handleInitExtendLock = () => {\r\n let selectedOption = extendDetails.filter((item) => item[\"isSelected\"]),\r\n isCloseOnly = false;\r\n if (selectedOption.length) {\r\n selectedOption = selectedOption[0];\r\n\r\n let { TypeOption: LockPeriod, OtherLookUp: LockFee } = selectedOption,\r\n TotalExtDays =\r\n parseInt(LockPeriod) +\r\n parseInt(lockConfirmationDetails[\"TotalExtendedLock\"]),\r\n message = \"\";\r\n\r\n if (LockFee == \"\") {\r\n message =\r\n \"Atleast one option should be selected for extending the lock rate.\";\r\n isCloseOnly = true;\r\n }\r\n\r\n if (TotalExtDays > 31) {\r\n if (lockConfirmationDetails[\"WholesaleIntAccess\"] != \"0\") {\r\n message =\r\n \"With this extension, you would exceed the 30-day maximum lock extension timeframe. The total days of all Lock extensions are not allowed to be extended beyond 30 days.\";\r\n } else {\r\n message =\r\n \"With this extension, you would exceed the 30-day maximum lock extension timeframe. The total days of all Lock extensions are not allowed to be extended beyond 30 days.\";\r\n isCloseOnly = true;\r\n }\r\n handleCancelConfirmation({\r\n head: \"Confirmation\",\r\n body: message,\r\n needCancel: !isCloseOnly,\r\n successButtonText: isCloseOnly ? \"Ok\" : \"Override\",\r\n successButtonOnPress: () => handleSaveExtendLock(1),\r\n cancelButtonOnPress: () => {\r\n handleResetExtendDetails();\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setAlertDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n },\r\n });\r\n } else {\r\n handleSaveExtendLock(0);\r\n }\r\n }\r\n };\r\n const handleSaveExtendLock = (override) => {\r\n let selectedOption = extendDetails.filter((item) => item[\"isSelected\"]);\r\n if (selectedOption.length) {\r\n selectedOption = selectedOption[0];\r\n\r\n let { TypeOption: LockPeriod, OtherLookUp: LockFee } = selectedOption,\r\n strXML = `<root lockperiod=\"${LockPeriod}\" lockfee=\"${LockFee}\" overriden=\"${override}\"></root>`,\r\n body = `Loan will be extended for ${LockPeriod} days at a cost of ${LockFee}. Do you want to proceed?`;\r\n\r\n handleCancelConfirmation({\r\n head: \"Confirmation\",\r\n body,\r\n needCancel: true,\r\n successButtonText: \"Proceed\",\r\n preventSuccessPress: true,\r\n successButtonOnPress: () => {\r\n setProcessingStatus(\"savingRateExtendLock\");\r\n setAlertDetails({ visible: false });\r\n handleAPI({\r\n name: \"SaveLockRateExtendLock\",\r\n params: {\r\n LoanId: loanId,\r\n EmpNum,\r\n strXML,\r\n },\r\n })\r\n .then((response) => {\r\n setProcessingStatus(\"refreshingLockExpiryDate\");\r\n handleGetLockExpiryDate(0);\r\n })\r\n .catch((e) => {\r\n console.error(\"Error form ====> SaveLockRateExtendLock\", e);\r\n });\r\n },\r\n });\r\n }\r\n };\r\n const handleGetLockExpiryDate = (LockTimer) => {\r\n const prevLockDate = formatDate(lockConfirmationDetails[\"complockexpire\"]);\r\n\r\n handleAPI({\r\n name: \"GetLockExpiryDate\",\r\n params: {\r\n LoanId: loanId,\r\n },\r\n })\r\n .then((response) => {\r\n if (\r\n response !== \"\" &&\r\n response !== \"Monday, January 1, 1900\" &&\r\n prevLockDate != response\r\n ) {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...{\r\n ...prevLockConfirmationDetails,\r\n lockExpDate: response,\r\n },\r\n };\r\n });\r\n setProcessingStatus(null);\r\n } else if (LockTimer <= 10) {\r\n setTimeout(function () {\r\n handleGetLockExpiryDate(LockTimer++);\r\n }, 1000);\r\n }\r\n })\r\n .catch((e) => console.error(\"Error From GetLockExpiryDate ====> \", e));\r\n };\r\n const handleGetRateLockDetails = (Polling) => {\r\n handleAPI({\r\n name: \"DoLockRateProcess\",\r\n apiName: \"RateLockAPI\",\r\n params: {\r\n LineID: 0,\r\n EmpNum,\r\n BaseRate: \"\",\r\n BasePoints: \"\",\r\n ParPeriod: \"\",\r\n LoanId: loanId,\r\n RateSheetId: 0,\r\n LockType: \"\",\r\n SessionID: SessionId,\r\n FinalPoints: \"\",\r\n ProcessType: 2,\r\n NeedJson: 1,\r\n },\r\n }).then((response) => {\r\n try {\r\n response = JSON.parse(response)[\"DataOut\"];\r\n\r\n if (Object.keys(response?.[2]).length == 0 && Polling < 4) {\r\n setTimeout(() => {\r\n handleGetRateLockDetails(Polling + 1);\r\n }, 500);\r\n } else if (Polling > 4) {\r\n console.log(\"Polling count DoLockRateProcess (Get) ==>\", Polling);\r\n } else {\r\n handleLoanApr();\r\n\r\n handleGetMonthlyPayment();\r\n let {\r\n showchangeintrate,\r\n allowlockstatus,\r\n funded,\r\n settled,\r\n withdrawn,\r\n showrelock,\r\n finaluw,\r\n closed,\r\n ClosingDocsSent,\r\n lockaccess,\r\n } = response?.[1]?.[\"LockConfObjects\"]?.[0];\r\n setExtendDetails(response[8][\"ExtendOptions\"]);\r\n const { comprateadj: rate } = response?.[1]?.[\"LockConfObjects\"]?.[0];\r\n\r\n handleGetLineIdLockPeriod({ rate });\r\n let showLockExtend = 0,\r\n showLockBtn = 0,\r\n showChangeRate = 0,\r\n showCancelLock = 0,\r\n showFloatDown = 0,\r\n showRelock = 0;\r\n\r\n if (\r\n showchangeintrate == \"1\" &&\r\n (allowlockstatus == \"1\" || allowlockstatus == \"0\") &&\r\n funded == \"0\" &&\r\n settled == \"0\" &&\r\n withdrawn == 0\r\n )\r\n showLockExtend = 1;\r\n if (showrelock == \"1\" && settled == \"0\" && finaluw == \"1\")\r\n showLockBtn = 1;\r\n if (\r\n showchangeintrate == \"1\" &&\r\n funded == \"0\" &&\r\n settled == \"0\" &&\r\n finaluw == \"0\"\r\n )\r\n showChangeRate = 1;\r\n if (funded == \"0\" && settled == \"0\") showCancelLock = 1;\r\n if (\r\n showchangeintrate == \"1\" &&\r\n (allowlockstatus == \"1\" || allowlockstatus == \"0\") &&\r\n funded == \"0\" &&\r\n settled == \"0\" &&\r\n withdrawn == \"0\" &&\r\n closed == \"0\"\r\n )\r\n showFloatDown = 1;\r\n if (\r\n showchangeintrate == \"0\" &&\r\n lockaccess == \"1\" &&\r\n funded == \"0\" &&\r\n settled == \"0\" &&\r\n ClosingDocsSent == \"0\" &&\r\n withdrawn == 0\r\n )\r\n showRelock = 1;\r\n\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n const iLockConfirmationDetails = {\r\n ...prevLockConfirmationDetails,\r\n ...response?.[0]?.[\"RootObjects\"]?.[0],\r\n ...response?.[1]?.[\"LockConfObjects\"]?.[0],\r\n ...response?.[9]?.[\"InvestorInfo\"]?.[0],\r\n showLockExtend,\r\n showLockBtn,\r\n showChangeRate,\r\n showCancelLock,\r\n showFloatDown,\r\n showRelock,\r\n APR: undefined,\r\n };\r\n return iLockConfirmationDetails;\r\n });\r\n\r\n handleGetLeftNavStatus(true, true);\r\n }\r\n } catch (error) {\r\n console.log(\"DoLockRateProcess Error ==>\", error);\r\n }\r\n });\r\n };\r\n\r\n const handleUpdateSearchInfo = (key, value, isClear = true) => {\r\n if (isClear) {\r\n processingStatus && setProcessingStatus(null);\r\n setRateData([]);\r\n }\r\n\r\n setSearchInfo((prevSearchInfo) => ({ ...prevSearchInfo, [key]: value }));\r\n };\r\n const handleFilterValidation = () => {\r\n let { loanType, term, amortType, lienPosition, lockPeriod } = searchInfo;\r\n\r\n return !(loanType && term && amortType && lienPosition && lockPeriod);\r\n };\r\n const handleConstructInputs = (params) => {\r\n try {\r\n const {\r\n LoanProgNum = \"\",\r\n loanBoardingData: iLoanBoardingData = loanBoardingData,\r\n } = params || {};\r\n\r\n let { BorrInfo } = iLoanBoardingData[\"DataOut\"][2],\r\n { PropertyInfo } = iLoanBoardingData[\"DataOut\"][3],\r\n { LoanParamInfo } = iLoanBoardingData[\"DataOut\"][4],\r\n { LoanSearchInfo } = iLoanBoardingData[\"DataOut\"][5],\r\n { LoanOfficer } = iLoanBoardingData[\"DataOut\"][8],\r\n { RootObjects } = iLoanBoardingData[\"DataOut\"][0],\r\n { EmpNumber: LoanOfficerId } = LoanOfficer[0],\r\n { CompNum, compname, EmpRights } = RootObjects[0];\r\n\r\n BorrInfo.forEach((info, index) => {\r\n BorrInfo[index] = {\r\n ...info,\r\n firstTimeHomeBuyer: info.firstTimeHomeBuyer == \"No\" ? 0 : 1,\r\n };\r\n });\r\n\r\n const { amortType, loanType, term, lienPosition, lockPeriod } =\r\n searchInfo;\r\n if (!(params && LoanProgNum)) {\r\n LoanSearchInfo[0] = {\r\n ...LoanSearchInfo[0],\r\n AmortType: Number(amortType),\r\n LoanType: Number(loanType),\r\n Term: Number(term),\r\n LockPeriod: Number(lockPeriod),\r\n };\r\n }\r\n let QualifyingFICO = fnFindMinFICO(BorrInfo),\r\n iLoanSearchInfo = [{}];\r\n [\r\n \"DesiredRate\",\r\n \"ddlRateMethod\",\r\n \"ChargeRebate\",\r\n \"NearestCharge\",\r\n \"LockPeriod\",\r\n \"FeesinRate\",\r\n \"RequestEscrow\",\r\n \"EnergyEffMort\",\r\n \"PropertylistedonMLS\",\r\n \"QualifyingFICO\",\r\n \"LoanProgNum\",\r\n \"NonProfitGiftFund\",\r\n \"LenderBorrowerPaid\",\r\n \"LoanType\",\r\n \"AmortType\",\r\n \"Term\",\r\n \"AmortizeTime\",\r\n \"ARMIndex\",\r\n \"FixedPeriod\",\r\n \"MortIns\",\r\n \"FHADate\",\r\n \"ExistingGovtLoan\",\r\n \"HudREPO\",\r\n \"DisplayLenderComp\",\r\n \"CompensationType\",\r\n \"LawEnforceGrant\",\r\n \"SearchNoPPP\",\r\n \"LendersToSearch\",\r\n \"TBD\",\r\n \"MortInsPremium\",\r\n ].forEach((key) => {\r\n iLoanSearchInfo[0][key] = LoanSearchInfo[0][key];\r\n });\r\n\r\n iLoanSearchInfo[0][\"CompensationType\"] = 2;\r\n iLoanSearchInfo[0][\"HudREPO\"] = \"0\";\r\n iLoanSearchInfo[0][\"LendersToSearch\"] = \"\";\r\n iLoanSearchInfo[0][\"QualifyingFICO\"] = QualifyingFICO;\r\n iLoanSearchInfo[0][\"SearchNoPPP\"] = iLoanSearchInfo[0][\"SearchNoPPP\"]\r\n .SearchNoPPP\r\n ? 1\r\n : 0;\r\n\r\n iLoanSearchInfo[0][\"LoanProgNum\"] = LoanProgNum || \"\";\r\n\r\n if (!(params && LoanProgNum)) {\r\n PropertyInfo[0] = {\r\n ...PropertyInfo[0],\r\n LienPosition: Number(lienPosition) || 1,\r\n };\r\n }\r\n LoanParamInfo[0] = {\r\n ...LoanParamInfo[0],\r\n IsSelfEmployed: LoanParamInfo[0].IsSelfEmployed ? 1 : 0,\r\n LoanOfficer: LoanOfficerId,\r\n };\r\n delete LoanParamInfo[0].ExistingLiens;\r\n let InputData = {\r\n DataIn: [\r\n {\r\n RootObjects: [\r\n {\r\n ViewType: \"CV\",\r\n SessionId: SessionId,\r\n FromNewRateLock: 1,\r\n IISSessionId: \"kk0htdbpzh3gg1kw5gprve4p\",\r\n LoanID: loanId,\r\n EmpNum,\r\n CompNum,\r\n compname: compname.replace(\"&\", \"~amp~\"),\r\n EmpRights,\r\n BorrCount: BorrInfo.length || 0,\r\n Prequal: 0,\r\n },\r\n ],\r\n },\r\n {\r\n BorrInfo,\r\n },\r\n {\r\n PropertyInfo,\r\n },\r\n {\r\n LoanParamInfo,\r\n },\r\n {\r\n LoanSearchInfo: iLoanSearchInfo,\r\n },\r\n ],\r\n };\r\n\r\n return InputData;\r\n } catch (error) {\r\n // setModalOpen({\r\n // ...modalOpen,\r\n // RateSheetRunWarning: true,\r\n // Msg: \" Error while searching loan products, Please check the inputs and Try again. \",\r\n // });\r\n }\r\n };\r\n\r\n const handleGetRateAvailability = async ({\r\n LineId,\r\n RateSheetId,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod,\r\n }) => {\r\n let strXML = await handleLockRateValidation(\r\n LineId,\r\n EmpNum,\r\n loanId,\r\n RateSheetId\r\n ),\r\n iPriceAvailability = null;\r\n strXML = new XMLParser().parseFromString(strXML);\r\n let { Status } = strXML[\"attributes\"],\r\n { value } = strXML[\"children\"][0];\r\n\r\n if (Status == 1) {\r\n let iStrXML = await handleLockRateValidation_DBChecks(\r\n LineId,\r\n EmpNum,\r\n loanId,\r\n RateSheetId,\r\n 0,\r\n SessionId,\r\n 1,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod\r\n );\r\n iStrXML = new XMLParser().parseFromString(iStrXML);\r\n\r\n Status = iStrXML[\"children\"][1][\"attributes\"][\"Status\"];\r\n value = iStrXML[\"children\"][1][\"children\"][0][\"value\"];\r\n\r\n if (Status == 0) {\r\n if (value) {\r\n iPriceAvailability = value.includes(\"price change has occurred\")\r\n ? \"priceChanged\"\r\n : value.includes(\"expired\")\r\n ? \"ratesExpired\"\r\n : value;\r\n } else {\r\n // iPriceAvailability =\r\n // \"Error occurred in locking the rate and selecting the loan program. Please try again or contact support@directcorp.com for additional assistance.\";\r\n }\r\n }\r\n } else {\r\n if (value.includes(\"expired\")) {\r\n iPriceAvailability = \"ratesExpired\";\r\n } else {\r\n handleCancelConfirmation({\r\n head: !value ? \"Error\" : \"\",\r\n body:\r\n value ||\r\n \"Error occurred in locking the loan program. Please try again or contact support@directcorp.com for additional assistance\",\r\n });\r\n }\r\n }\r\n return iPriceAvailability;\r\n };\r\n const fnFindMinFICO = (data) => {\r\n let minFicoScore = data[0][\"FICO\"];\r\n data.forEach(({ FICO }) => {\r\n const ficoScore = parseInt(FICO);\r\n minFicoScore = ficoScore < minFicoScore ? ficoScore : minFicoScore;\r\n });\r\n\r\n return minFicoScore;\r\n };\r\n const handleValidateSSN = () => {\r\n const { BorrInfo } = loanBoardingData[\"DataOut\"][2];\r\n return BorrInfo.filter(({ SSN }) => testSSN(SSN)).length > 0;\r\n };\r\n const handleLockRateValidation = async (\r\n LineID,\r\n EmpNum,\r\n LoanId,\r\n RateSheetId\r\n ) => {\r\n return await handleAPI({\r\n name: \"LockRateValidation\",\r\n params: { LineID, EmpNum, LoanId, RateSheetId },\r\n apiName: \"RateLockAPI\",\r\n }).then((response) => {\r\n return response;\r\n });\r\n };\r\n const handleLockRate = async (form) => {\r\n if (form === \"AddressInfoSection\") {\r\n if (handleValidateSSN()) {\r\n setProcessingStatus(\"SSNDetails\");\r\n return;\r\n }\r\n }\r\n setProcessingStatus(\"rateSelect&Lock\");\r\n if (form) {\r\n await handleSaveLoanBoardingData();\r\n }\r\n const {\r\n LineId,\r\n RateSheetId,\r\n Rate: BaseRate,\r\n LockPeriods: ParPeriod,\r\n BasePoints,\r\n points: FinalPoints,\r\n } = selectedRate;\r\n if ([\"changeRate\", \"floatDown\"].includes(processName)) {\r\n handleDoLockRateProcess(\r\n LineId,\r\n EmpNum,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod,\r\n loanId,\r\n RateSheetId,\r\n \"\",\r\n SessionId,\r\n FinalPoints,\r\n 1,\r\n 1\r\n );\r\n return;\r\n }\r\n let strXML = await handleLockRateValidation(\r\n LineId,\r\n EmpNum,\r\n loanId,\r\n RateSheetId\r\n );\r\n strXML = new XMLParser().parseFromString(strXML);\r\n let { Status } = strXML[\"attributes\"],\r\n { value } = strXML[\"children\"][0];\r\n\r\n if (Status == 1) {\r\n let iStrXML = await handleLockRateValidation_DBChecks(\r\n LineId,\r\n EmpNum,\r\n loanId,\r\n RateSheetId,\r\n 0,\r\n SessionId,\r\n 1,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod\r\n );\r\n iStrXML = new XMLParser().parseFromString(iStrXML);\r\n let { WarnStatus } = iStrXML[\"children\"][2][\"attributes\"];\r\n Status = iStrXML[\"children\"][1][\"attributes\"][\"Status\"];\r\n value = iStrXML[\"children\"][1][\"children\"][0][\"value\"];\r\n if (Status == 0) {\r\n let body = \"\",\r\n successButtonText = \"Ok\",\r\n successButtonOnPress = () => {};\r\n if (value != \"\") {\r\n if (value.includes(\"price change has occurred\")) {\r\n body =\r\n \"Pricing has changed since your last search. Click Refresh to see current pricing.\";\r\n successButtonText = \"Refresh\";\r\n successButtonOnPress = () => {\r\n setPriceAvailability(priceChanged);\r\n };\r\n } else {\r\n body = value;\r\n }\r\n } else\r\n body =\r\n \"Error occurred in locking the rate and selecting the loan program. Please try again or contact support@directcorp.com for additional assistance\";\r\n\r\n handleCancelConfirmation({\r\n head: \"\",\r\n body,\r\n successButtonText,\r\n successButtonOnPress,\r\n });\r\n } else {\r\n if (WarnStatus == 1) {\r\n let Msg = iStrXML[\"children\"][2][\"children\"][0][\"value\"];\r\n\r\n handleCancelConfirmation({\r\n head: \"Confirmation\",\r\n body: (\r\n <CustomText>\r\n {Msg.split(\"~\").map((e, index) => (\r\n <CustomText key={index}>{e}</CustomText>\r\n ))}\r\n </CustomText>\r\n ),\r\n needCancel: true,\r\n successButtonText: \"Proceed\",\r\n });\r\n }\r\n if (WarnStatus == 99) {\r\n // if all validations are good - then will call the Actual Lock Rate process\r\n handleDoLockRateProcess(\r\n LineId,\r\n EmpNum,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod,\r\n loanId,\r\n RateSheetId,\r\n \"\",\r\n SessionId,\r\n FinalPoints,\r\n 1,\r\n 1\r\n );\r\n }\r\n }\r\n } else {\r\n handleCancelConfirmation({\r\n head: \"\",\r\n body:\r\n value ||\r\n \"Error occurred in locking the loan program. Please try again or contact support@directcorp.com for additional assistance\",\r\n });\r\n }\r\n };\r\n const handleDoLockRateProcess = (\r\n LineId,\r\n EmpNum,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod,\r\n LoanId,\r\n RateSheetId,\r\n LockType,\r\n SessionId,\r\n FinalPoints,\r\n ProcessType,\r\n NeedJson\r\n ) => {\r\n if (FinalPoints.includes(\"(\") != -1) {\r\n FinalPoints = FinalPoints.replace(\"(\", \"-\").replace(\")\", \"\");\r\n }\r\n let obj = {\r\n LineID: LineId,\r\n EmpNum,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod,\r\n LoanId,\r\n RateSheetId,\r\n LockType,\r\n SessionID: SessionId,\r\n FinalPoints,\r\n ProcessType,\r\n NeedJson,\r\n };\r\n\r\n handleAPI({\r\n name: \"DoLockRateProcess\",\r\n params: obj,\r\n apiName: \"RateLockAPI\",\r\n }).then((response) => {\r\n setLockConfirmationDetails({\r\n lockExpDate: null,\r\n isLocked: true,\r\n processName,\r\n });\r\n setModalDetails({\r\n visible: false,\r\n });\r\n console.log(\"DoLockRateProcess response ==>\", response);\r\n setTimeout(() => {\r\n handleCheckRateLockPool(0);\r\n }, 1000);\r\n if (!web || isSmallScreen) handlePricingBasedOnDefaultSettings();\r\n });\r\n };\r\n const handleCheckRateLockPool = async (pollingCount = 0) => {\r\n console.log(\"handleCheckRateLockPool ==>>\", pollingCount);\r\n const isLocked = await IsLockedLoan(loanId);\r\n if (isLocked == 1) {\r\n handleGetLoanBoardingData(isLocked);\r\n setProcessingStatus(null);\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setAlertDetails({ visible: false });\r\n } else if (pollingCount < 10) {\r\n setTimeout(() => {\r\n handleCheckRateLockPool(pollingCount + 1);\r\n }, 1500);\r\n } else {\r\n handleGetLoanBoardingData(isLocked);\r\n }\r\n };\r\n const handleLockRateValidation_DBChecks = async (\r\n LineId,\r\n EmpNum,\r\n LoanId,\r\n RateSheetId,\r\n ChangeLnPrgm,\r\n SessionId,\r\n flag,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod\r\n ) => {\r\n let obj = {\r\n LineID: LineId,\r\n EmpNum,\r\n LoanId,\r\n RateSheetId,\r\n ChangeLnPrgm,\r\n Sessionid: SessionId,\r\n flag,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod,\r\n };\r\n return await handleAPI({\r\n name: \"LockRateValidation_DBChecks\",\r\n params: obj,\r\n apiName: \"RateLockAPI\",\r\n }).then((response) => {\r\n return response;\r\n });\r\n };\r\n const handleSelectRate = async () => {\r\n handleSaveLoanBoardingData();\r\n\r\n const {\r\n LineId: LineID,\r\n Rate: BaseRate,\r\n BasePoints,\r\n points: FinalPoints,\r\n LockPeriods: ParPeriod,\r\n RateSheetId,\r\n } = selectedRate;\r\n\r\n handleAPI({\r\n name: \"RateLockOption_SelectOnly\",\r\n apiName: \"RateLockAPI\",\r\n params: {\r\n LineID,\r\n EmpNum,\r\n BaseRate,\r\n BasePoints,\r\n ParPeriod,\r\n LoanId: loanId,\r\n RateSheetId,\r\n LockType: \"\",\r\n SessionID: SessionId,\r\n FinalPoints,\r\n },\r\n }).then((response) => {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n prevLockConfirmationDetails[\"isFloated\"] = true;\r\n prevLockConfirmationDetails[\"isFloatedGrettings\"] = true;\r\n return { ...prevLockConfirmationDetails };\r\n });\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n if (!web || isSmallScreen) handlePricingBasedOnDefaultSettings();\r\n });\r\n };\r\n const handlePricingBasedOnDefaultSettings = () => {\r\n try {\r\n handleAPI({\r\n name: \"PricingBasedOnDefaultSettings\",\r\n params: {\r\n LoanId: loanId,\r\n SessionId,\r\n },\r\n })\r\n .then(async (response) => {\r\n console.log(\r\n \"response form PricingBasedOnDefaultSettings ===> \",\r\n response\r\n );\r\n // await Alert.alert(\r\n // \"Info\",\r\n // \"E-sign package generation has been initiated, and you will be navigated to the Document Upload page\"\r\n // );\r\n if (response == 1) handleGetBorrowerUrl({ landOn: \"eSign\" });\r\n })\r\n .catch((error) =>\r\n console.error(\r\n \"Error from PricingBasedOnDefaultSettings ====> \",\r\n error\r\n )\r\n );\r\n } catch (error) {}\r\n };\r\n const handleCancelConfirmation = ({\r\n head = \"\",\r\n body = \"\",\r\n needCancel = false,\r\n needSuccessButton = true,\r\n successButtonText = \"Ok\",\r\n cancelButtonOnPress = null,\r\n successButtonOnPress = () => {\r\n setProcessingStatus(null);\r\n },\r\n disableSuccessButton = false,\r\n preventSuccessPress = false,\r\n }) => {\r\n setModalDetails({ visible: false });\r\n setAlertDetails({\r\n visible: true,\r\n head,\r\n body,\r\n needCancel,\r\n successButtonText,\r\n successButtonOnPress,\r\n disableSuccessButton,\r\n cancelButtonOnPress,\r\n preventSuccessPress,\r\n needSuccessButton,\r\n });\r\n };\r\n const handleLockRateProceed = () => {\r\n const { PropertyInfo } = loanBoardingData[\"DataOut\"][3],\r\n { SubjectAddress = \"\", SubjectZip = \"\" } = PropertyInfo[0];\r\n if (SubjectAddress && SubjectZip) {\r\n if (handleValidateSSN()) {\r\n setProcessingStatus(\"SSNDetails\");\r\n } else {\r\n setProcessingStatus(\"rateSelect&Lock\");\r\n handleLockRate();\r\n }\r\n } else {\r\n setProcessingStatus(\"addressInfoSection\");\r\n setModalDetails((prevModalDetails) => {\r\n return { ...prevModalDetails, visible: true };\r\n });\r\n }\r\n };\r\n\r\n const handleSearchLoanProducts = async (params) => {\r\n let res = \"\";\r\n\r\n let InputData = handleConstructInputs(params);\r\n\r\n __DEV__ && console.log(\" handleLoanProductsSearch Input ===>>\", InputData);\r\n\r\n handleAPI({\r\n name: \"DOSLPTasks_\",\r\n apiName: \"RateLockAPI\",\r\n params: {},\r\n requestOptions: {\r\n method: \"POST\",\r\n redirect: \"follow\",\r\n mode: \"cors\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n InputJSON: JSON.stringify(InputData || \"\"),\r\n }),\r\n },\r\n }).then((response) => {\r\n if (!response) return;\r\n console.log(\r\n \"============================ Got the Run Id==================\"\r\n );\r\n response = JSON.parse(response);\r\n let { RetStatus, Error, LatestRun } =\r\n response[\"DataOut\"][0][\"RootObjects\"][0];\r\n // console.log({ RetStatus });\r\n\r\n if (RetStatus == 99) {\r\n setProcessingStatus(\"searchingProducts\");\r\n setTimeout(() => {\r\n handleGetLoanProducts(RetStatus, LatestRun, 0, res, params); //16009895 ,16018701 , 16034653,16040931 - 66\r\n }, 500);\r\n\r\n // try {\r\n // handleLogDWCallToActionEventParent(\r\n // \"Search for Loan Products\",\r\n // contextDetails[\"parentQueryString\"][\"email\"],\r\n // isMobileWeb,\r\n // GlobleValue[\"LO\"]\r\n // );\r\n // } catch (error) {\r\n // console.error(\r\n // \"Error in handleLogDWCallToActionEventParent ==>\",\r\n // error\r\n // );\r\n // }\r\n // Interest Rates are Temporarily Unavailable\r\n } else if (RetStatus == -2) {\r\n handleCancelConfirmation({\r\n head: \"Error\",\r\n body: Error,\r\n });\r\n setProcessingStatus(null);\r\n handleGetLoanProducts(\"\", 16018701, 0, res, params); // when error occurs\r\n } else if (RetStatus == -5 || RetStatus == -1) {\r\n handleCancelConfirmation({\r\n head: \"Interest Rates are Temporarily Unavailable\",\r\n body:\r\n RetStatus == -5\r\n ? \"Interest Rates are currently being updated. This typically takes about 10 minutes. Please try again in a few minutes\"\r\n : Error,\r\n });\r\n setProcessingStatus(null);\r\n // setModalOpen({ ...modalOpen, RateSheetRunWarning: true, Msg: Error });\r\n // handleStatus({ Searching: false });\r\n }\r\n\r\n __DEV__ && console.log(\"DOSLPTasks ==>>\", response);\r\n });\r\n };\r\n const handleGetLoanProducts = async (\r\n Status,\r\n LatestRun,\r\n pollingCount,\r\n res,\r\n params\r\n ) => {\r\n console.log(\"pollingCount ==>>\", pollingCount);\r\n // let EmpNum = await handleGetSessionData(\r\n // contextDetails[\"queryString\"][\"SessionId\"],\r\n // \"empnum\"\r\n // );\r\n // if (EmpNum == \"Output\") {\r\n // setModalOpen({\r\n // ...modalOpen,\r\n // RateSheetRunWarning: true,\r\n // Msg: \" Your Session is InActive!!! \",\r\n // });\r\n // return;\r\n // }\r\n let obj = {\r\n DataIn: [\r\n {\r\n RootObjects: [\r\n {\r\n LoanId: loanId,\r\n EmpNum,\r\n Run: LatestRun || 0,\r\n ExcludeLines: \"\",\r\n IU_PollingCounter: pollingCount,\r\n UserType: \"E\" || \"C\",\r\n IsSearchedLoan: \"0\",\r\n blCompressJson: \"0\",\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n\r\n handleAPI({\r\n name: \"Get_LoanProgramIU\",\r\n // apiName: \"RateLockAPI\",\r\n params: {\r\n OutFlag: 1,\r\n Inputjson: JSON.stringify(obj),\r\n processFlag: params ? 1 : 0,\r\n },\r\n }).then(async (response) => {\r\n try {\r\n if (response.includes(\"Unable to cast object\")) {\r\n if (pollingCount < 8) {\r\n // Looping till the program return\r\n setTimeout(() => {\r\n handleGetLoanProducts(\r\n \"\",\r\n LatestRun,\r\n pollingCount + 1,\r\n res,\r\n params\r\n );\r\n }, 500);\r\n } else {\r\n handleCancelConfirmation({\r\n head: \"Error\",\r\n body: \"Error occurred in showing loan programs.\",\r\n });\r\n\r\n handlePricingError({\r\n EmpNum,\r\n Loan: loanId,\r\n ErrorMessage: JSON.stringify(response),\r\n type: 2,\r\n });\r\n return;\r\n }\r\n } else {\r\n // debugger;\r\n response = JSON.parse(response);\r\n __DEV__ && console.log(\"response\", response);\r\n\r\n let FewLinesErrored =\r\n response?.[\"DataOut\"]?.[0]?.[\"RootObjects\"]?.[0]?.[\r\n \"FewLinesErrored\"\r\n ] || \"0\";\r\n\r\n if (FewLinesErrored == 1) {\r\n handleCancelConfirmation({\r\n head: \"Error\",\r\n body: \"Error occurred in showing loan programs.\",\r\n });\r\n\r\n handlePricingError({\r\n EmpNum: EmpNum,\r\n Loan: loanId,\r\n ErrorMessage: JSON.stringify(\r\n response?.[\"DataOut\"]?.[0]?.[\"RootObjects\"]?.[0] || \"{}\"\r\n ),\r\n type: 1,\r\n });\r\n return;\r\n }\r\n\r\n let iRateData = [...response[\"DataOut\"]],\r\n loanProgramsList = {};\r\n\r\n const loanProgramOrder = iRateData.pop();\r\n iRateData.shift();\r\n\r\n __DEV__ && console.log(loanProgramOrder);\r\n\r\n if (loanProgramOrder[\"LoanProgramsList\"]) {\r\n iRateData = orderLoanProgram(\r\n iRateData,\r\n loanProgramOrder[\"LoanProgramsList\"]?.map(\r\n ({ LPA_CommonData }) => LPA_CommonData\r\n ),\r\n loanProgramOrder[\"LoanProgramsList\"]?.map(({ LineID }) => LineID)\r\n );\r\n\r\n loanProgramsList = loanProgramOrder[\"LoanProgramsList\"].reduce(\r\n (acc, { LineID, CommonProgramName }) => {\r\n acc[LineID] = CommonProgramName;\r\n return acc;\r\n },\r\n {}\r\n );\r\n\r\n if (Object.keys(loanProgramsList).length) {\r\n iRateData = replaceLoanProductName(\r\n iRateData,\r\n loanProgramsList,\r\n \"LineId\"\r\n );\r\n }\r\n iRateData[0][\"isExpand\"] = true;\r\n\r\n let {\r\n LineId: lineId,\r\n LockDays,\r\n Name: programName,\r\n InterestRate,\r\n RateSheetId,\r\n } = Object.values(iRateData[0])[0][1][\"LoanProgramDetails\"][0],\r\n { LockPeriod = [] } = Object.values(iRateData[0])[0][4],\r\n { Addons = [] } = Object.values(iRateData[0])[0][6],\r\n { LoanData = [] } = Object.values(iRateData[0])[0][2],\r\n { LenderCompAmt = 0, LoanAmt = 0 } = LoanData[0];\r\n\r\n let LockPeriodArray = LockPeriod.filter(\r\n ({ LockExpDate }) => LockExpDate == LockDays\r\n );\r\n if (LockPeriodArray.length == 0) {\r\n LockPeriodArray = LockPeriod.filter(\r\n ({ LockPeriodID }) => LockPeriodID == 4\r\n );\r\n }\r\n // const { LockPeriods, COlID, LockPeriodID } =\r\n // LockPeriodArray[0] || {},\r\n // { [COlID]: BasePoints } =\r\n // Object.values(iRateData[0])[0][5][\"RateData\"].filter(\r\n // ({ Rate }) => Rate == InterestRate\r\n // )?.[0] || {};\r\n let LenderCompPoints =\r\n (parseFloat(LenderCompAmt) / parseFloat(cleanValue(LoanAmt))) *\r\n 100;\r\n\r\n const totalAddons = Addons.reduce((acc, { Disc }) => {\r\n return acc + parseFloat(Disc);\r\n }, 0);\r\n const { LockPeriods, COlID, LockPeriodID } =\r\n LockPeriodArray[0] || {},\r\n selectedRateObject =\r\n Object.values(iRateData[0])[0][5][\"RateData\"].filter(\r\n ({ Rate }) => Rate == InterestRate\r\n )?.[0] || {},\r\n { RateSheetName, LnProgActiveId, MonthlyPayment } =\r\n selectedRateObject,\r\n { [COlID]: BasePoints } = selectedRateObject;\r\n\r\n if (\r\n ![\"changeRate\", \"floatDown\"].includes(processName)\r\n // && !__DEV__\r\n ) {\r\n const iPriceAvailability = await handleGetRateAvailability({\r\n LineId: lineId,\r\n RateSheetId,\r\n BaseRate: InterestRate,\r\n BasePoints: BasePoints,\r\n ParPeriod: LockPeriods,\r\n });\r\n setPriceAvailability(iPriceAvailability);\r\n }\r\n setRateData(iRateData);\r\n handleGetAPR(\r\n lineId,\r\n Number(cleanValue(InterestRate)),\r\n LockPeriods,\r\n true\r\n );\r\n handleGetCashToClose(\r\n lineId,\r\n LockPeriodID,\r\n true,\r\n Number(cleanValue(InterestRate))\r\n );\r\n setSelectedRate({\r\n RateSheetName,\r\n Rate: Number(cleanValue(InterestRate)),\r\n LineId: lineId,\r\n LnProgActiveId,\r\n points: getPoints(\r\n parseFloat(BasePoints) + totalAddons + LenderCompPoints\r\n ).toString(),\r\n MonthlyPayment,\r\n // cashtoclose\r\n LockPeriod,\r\n BasePoints: parseFloat(BasePoints),\r\n RateSheetId,\r\n programName,\r\n });\r\n if (iRateData.length === 0) {\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n }\r\n handleUpdateSearchInfo(\"isEditMode\", false, false);\r\n } else {\r\n setRateData([]);\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n const { NumLoanPrograms = 0, NumLineIds = 0 } =\r\n response?.[\"DataOut\"]?.[0]?.[\"RootObjects\"]?.[0];\r\n\r\n handlePricingError({\r\n EmpNum: EmpNum,\r\n Loan: loanId,\r\n ErrorMessage: JSON.stringify({\r\n Run: LatestRun,\r\n FewLinesErrored: \"1\",\r\n NumLoanPrograms,\r\n NumLineIds,\r\n }),\r\n type: 1,\r\n });\r\n }\r\n\r\n setProcessingStatus(\"searchFinished\");\r\n __DEV__ && console.log(\"Get_LoanProgramIU == >\", response);\r\n }\r\n } catch (error) {\r\n if (pollingCount < 5) {\r\n // Looping till the program return\r\n setTimeout(() => {\r\n handleGetLoanProducts(\"\", LatestRun, pollingCount + 1, res);\r\n }, 500);\r\n }\r\n console.log(\r\n `Error while parsing the loan programs at ${pollingCount} polling`\r\n );\r\n console.error(\"Error while parsing the loan programs ===> \", error);\r\n }\r\n });\r\n };\r\n const handleLayout = () => {\r\n // setTimeout(() => {\r\n // targetRef?.current?.measureLayout(\r\n // scrollViewRef.current,\r\n // (x, y, width, height) => {\r\n // const centerY =\r\n // y - scrollViewRef.current.clientHeight / 2 + height / 2;\r\n // if (centerY < 100) return;\r\n // scrollViewRef.current.scrollTo({\r\n // y: centerY,\r\n // animated: true,\r\n // behavior: \"smooth\",\r\n // });\r\n // },\r\n // (error) => {\r\n // console.error(error);\r\n // }\r\n // );\r\n // }, 100);\r\n };\r\n const orderLoanProgram = (array, order, lineIdArr) => {\r\n let neArr = array.filter((a) => {\r\n return lineIdArr.includes(Number(Object.keys(a)[0].split(\"_\")[1]));\r\n });\r\n neArr = neArr.sort((a, b) => {\r\n const aValue =\r\n Object.values(a)[0][1].LoanProgramDetails[0].LPA_CommonData;\r\n const bValue =\r\n Object.values(b)[0][1].LoanProgramDetails[0].LPA_CommonData;\r\n return order.indexOf(aValue) - order.indexOf(bValue);\r\n });\r\n return neArr;\r\n };\r\n const replaceLoanProductName = (array, loanProductName, key) => {\r\n return array.map((item) => {\r\n let name =\r\n loanProductName[\r\n item[Object.keys(item)[0]][1].LoanProgramDetails[0][key]\r\n ];\r\n if (name) {\r\n name = name.replace(\"DirectPro\", \"\");\r\n item[Object.keys(item)[0]][1].LoanProgramDetails[0].Name = name;\r\n }\r\n\r\n return item;\r\n });\r\n };\r\n const handleGetRowColor = ({ index, LineId, Rate, iIndex }) => {\r\n const { LineId: iLineId = 0, Rate: iRate = 0 } = selectedRate;\r\n if (Number(LineId) === Number(iLineId) && Number(Rate) === Number(iRate)) {\r\n return { backgroundColor: \"#BCD4E3\", active: true };\r\n }\r\n\r\n if (iIndex % 2 > 0) {\r\n return { backgroundColor: \"#F6F9FC\", active: false };\r\n } else {\r\n return { backgroundColor: \"#fff\", active: false };\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n try {\r\n if ((rateData || []).length > 0) {\r\n rateData?.forEach((itemArray, index) => {\r\n const { LineId, LockDays } =\r\n Object.values(itemArray)[0][1][\"LoanProgramDetails\"][0],\r\n { LockPeriod = [] } = Object.values(itemArray)[0][4],\r\n isExpand = rateData[index][\"isExpand\"] || false,\r\n { RateData: rowData = [] } = Object.values(itemArray)[0][5];\r\n\r\n const { LockPeriods, LockPeriodID } =\r\n LockPeriod[\"length\"] > 1\r\n ? LockPeriod.filter(\r\n ({ LockExpDate }) => LockExpDate == LockDays\r\n )?.[0] || {}\r\n : LockPeriod[0] || {};\r\n\r\n if (isExpand) {\r\n if (!cashToCloseDetails?.[LineId])\r\n handleGetCashToClose(LineId, LockPeriodID);\r\n rowData.forEach(({ Rate }) => {\r\n Rate = cleanValue(Rate);\r\n\r\n const { APR = \"Calculating\" } =\r\n aprRateState?.[LineId]?.[Rate] || {};\r\n\r\n if (\r\n APR == \"Calculating\"\r\n // && priceAvailability !== \"ratesExpired\"\r\n ) {\r\n handleGetAPR(LineId, Rate, LockPeriods);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n } catch (error) {\r\n console.error(\"Error in useEffect (rateData) ===> \", error);\r\n }\r\n }, [rateData]);\r\n const handleResetExtendDetails = () => {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n let disclosureSigned =\r\n prevLockConfirmationDetails[\"iDisclosureSigned\"] || false;\r\n delete prevLockConfirmationDetails[\"iDisclosureSigned\"];\r\n return {\r\n ...prevLockConfirmationDetails,\r\n DisclosureSigned: disclosureSigned,\r\n };\r\n });\r\n };\r\n const handleSaveLoanBoardingData = async () => {\r\n const InputData = handleConstructInputs(),\r\n body = { LoanID: loanId, SaveJson: JSON.stringify(InputData || \"\") };\r\n\r\n let response = await handleAPI({\r\n name: \"LoanBoardingSave_\",\r\n apiName: \"RateLockAPI\",\r\n params: {},\r\n requestOptions: {\r\n method: \"POST\",\r\n redirect: \"follow\",\r\n mode: \"cors\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(body),\r\n },\r\n }).then((response) => {\r\n return response;\r\n });\r\n\r\n __DEV__ && console.log(\"handleSaveLoanBoardingData ==>>\", response);\r\n };\r\n const handleCancelLock = async () => {\r\n let { cancelLockReason } = lockConfirmationDetails;\r\n\r\n let Response = await handleGetJournalPost(loanId);\r\n let Result = \"\";\r\n Response = Response.split(\"~\");\r\n if (Response[0] == \"\") {\r\n //Do Nothing\r\n } else if (Response[0] == \"0\" || Response[2] != \"1\") {\r\n let XmlDataIn =\r\n '<param Name=\"LoanID\">' +\r\n loanId +\r\n '</param><param Name=\"ProcessId\">1</param><param Name=\"Posting_Action\">0</param><param Name=\"EmpNum\">' +\r\n EmpNum +\r\n \"</param>\";\r\n Result = await handleUnPostJournal(XmlDataIn);\r\n }\r\n\r\n Result = await SaveLockRateCancelReason(\r\n loanId,\r\n EmpNum,\r\n cancelLockReason,\r\n \"BrokerCancel\"\r\n );\r\n if (Result != 1) {\r\n handleCancelConfirmation({\r\n head: \"Error\",\r\n body: \"Error occurred in cancelling the lock.\",\r\n });\r\n } else {\r\n handleGetLeftNavStatus(true);\r\n }\r\n };\r\n const handleGetCancelLock = () => {\r\n handleCancelConfirmation({\r\n ...{\r\n head: `Cancel Lock - ${loanId}`,\r\n body: \"cancelLockReason\",\r\n needCancel: true,\r\n successButtonText: \"Cancel Lock\",\r\n cancelButtonOnPress: () => {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n delete prevLockConfirmationDetails[\"cancelLockReason\"];\r\n delete prevLockConfirmationDetails[\"isCancelLock\"];\r\n delete prevLockConfirmationDetails[\"isFloated\"];\r\n return {\r\n ...prevLockConfirmationDetails,\r\n };\r\n });\r\n setAlertDetails({\r\n visible: false,\r\n });\r\n },\r\n preventSuccessPress: true,\r\n successButtonOnPress: () => {\r\n setLockConfirmationDetails({\r\n lockExpDate: null,\r\n isLocked: 0,\r\n });\r\n setAlertDetails({\r\n visible: false,\r\n });\r\n setRateData(null);\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n setLoanBoardingData(null);\r\n handleGetLoanBoardingData(0);\r\n handleCancelLock();\r\n },\r\n disableSuccessButton: !lockConfirmationDetails[\"cancelLockReason\"],\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n if (lockConfirmationDetails[\"isCancelLock\"]) {\r\n handleGetCancelLock();\r\n }\r\n }, [lockConfirmationDetails[\"cancelLockReason\"]]);\r\n\r\n const handleGetAPR = async (\r\n lineid,\r\n IntRate,\r\n LockPeriod,\r\n isUpdateSelectedRate\r\n ) => {\r\n if (!Number(lineid) || !IntRate || !LockPeriod) return \"0.0000%\";\r\n try {\r\n handleAPI({\r\n name: \"GetAPRValue\",\r\n apiName: \"RateLockAPI\",\r\n params: { lineid, IntRate },\r\n }).then((response) => {\r\n response = response.split(\"~\")[1];\r\n response = JSON.parse(response);\r\n response = response[\"DataOut\"] && response[\"DataOut\"][0][\"APRData\"][0];\r\n let { APR } = response,\r\n { count = 0 } = aprRateState?.[lineid]?.[IntRate] || {};\r\n\r\n if (APR == \"0.0000%\" && count < 6) {\r\n count = count + 1;\r\n setAprRateState((prevAprRate) => {\r\n if (!prevAprRate[lineid]) prevAprRate[lineid] = {};\r\n if (!prevAprRate[lineid][IntRate])\r\n prevAprRate[lineid][IntRate] = {};\r\n prevAprRate[lineid][IntRate][\"count\"] = count;\r\n return { ...prevAprRate };\r\n });\r\n handleGetARM(lineid, IntRate, LockPeriod);\r\n } else {\r\n setAprRateState((prevAprRate) => {\r\n if (!prevAprRate[lineid]) prevAprRate[lineid] = {};\r\n if (!prevAprRate[lineid][IntRate])\r\n prevAprRate[lineid][IntRate] = {};\r\n prevAprRate[lineid][IntRate][\"APR\"] = APR;\r\n return { ...prevAprRate };\r\n });\r\n if (isUpdateSelectedRate) {\r\n setSelectedRate((prevSelectedRate) => {\r\n return { ...prevSelectedRate, APR };\r\n });\r\n }\r\n }\r\n return APR;\r\n });\r\n } catch (error) {\r\n console.log(\"Error in handleGetAPR ==>\", error);\r\n }\r\n };\r\n const handleGetCashToClose = async (\r\n lineId,\r\n lockPeriodId,\r\n isUpdateSelectedRate,\r\n rate\r\n ) => {\r\n handleAPI({\r\n name: \"getCashToClose\",\r\n params: { loanId, lineId },\r\n }).then((response) => {\r\n const iCashToClose = JSON.parse(response)\r\n .filter(({ lockperiod }) => lockperiod == lockPeriodId)\r\n .reduce((acc, { IntRate, cashtoclose }) => {\r\n acc[IntRate.toFixed(4)] = cashtoclose;\r\n return acc;\r\n }, {});\r\n setCashToCloseDetails((prevCashToCloseDetails) => {\r\n return { ...prevCashToCloseDetails, [lineId]: iCashToClose };\r\n });\r\n if (isUpdateSelectedRate) {\r\n setSelectedRate((prevSelectedRate) => {\r\n return {\r\n ...prevSelectedRate,\r\n cashToClose: iCashToClose[rate?.toFixed(4)],\r\n };\r\n });\r\n }\r\n });\r\n };\r\n const handleGetARM = async (lineid, IntRate, LockPeriod) => {\r\n handleAPI({\r\n name: \"GetARMDetails\",\r\n apiName: \"RateLockAPI\",\r\n params: { lineid, IntRate, LockPeriodID: LockPeriod },\r\n }).then(() => {\r\n setTimeout(() => {\r\n handleGetAPR(lineid, IntRate, LockPeriod);\r\n }, 2000);\r\n });\r\n };\r\n const handleUpdatePropertyInfo = (key, value) => {\r\n setLoanBoardingData((prevLoanBoardingData) => {\r\n prevLoanBoardingData[\"DataOut\"][3][\"PropertyInfo\"][0][key] = value;\r\n return { ...prevLoanBoardingData };\r\n });\r\n };\r\n const handleUpdateBorrower = (index, key, value) => {\r\n setLoanBoardingData((prevLoanBoardingData) => {\r\n prevLoanBoardingData[\"DataOut\"][2][\"BorrInfo\"][index][key] = value;\r\n return { ...prevLoanBoardingData };\r\n });\r\n };\r\n\r\n const AddressInformationBestFit = () => {\r\n const isButtonDisabled =\r\n true || !subjectZip || [\"rateSelect&BestFit\"].includes(processingStatus);\r\n\r\n return (\r\n <View style={{ width: \"100%\", paddingBottom: 10 }}>\r\n <CustomText bold style={styles[\"rateSummary\"]}>\r\n Missing Information\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 16 : 14,\r\n marginBottom: 15,\r\n paddingHorizontal: 20,\r\n }}\r\n >\r\n Please enter the following information to continue.\r\n </CustomText>\r\n <View\r\n style={{\r\n width: web ? \"100%\" : \"90%\",\r\n alignSelf: \"center\",\r\n marginTop: 15,\r\n maxHeight: web ? \"55vh\" : Dimensions.get(\"window\").height - 450,\r\n }}\r\n >\r\n {requiredFieldsObj.length > 0 && (\r\n <ScrollContainer showScrollBar>\r\n {requiredFieldsObj.map((item, index) => {\r\n if (item[\"field\"]) {\r\n item[\"field\"].forEach((field) => {\r\n field[\"ColumnValue\"] = iLoanData[field[\"ColumnName\"]] || \"\";\r\n });\r\n } else\r\n item[\"ColumnValue\"] = iLoanData[item[\"ColumnName\"]] || \"\";\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n key={index}\r\n style={{\r\n marginHorizontal: web ? 20 : 0,\r\n }}\r\n >\r\n <Title\r\n text={item[\"Title\"]}\r\n style={{\r\n ...styles[\"rateSummary\"],\r\n alignSelf: \"flex-start\",\r\n textAlign: \"left\",\r\n fontSize: web ? 20 : 19,\r\n }}\r\n />\r\n {item[\"type\"] === 1 ? (\r\n <View style={{ flex: 1 }}>\r\n {item[\"Options\"]?.map((item_, index) => (\r\n <Option\r\n autoFocus={index == 0}\r\n key={index}\r\n style={{}}\r\n text={item_[\"text\"]}\r\n value={item_[\"value\"] === item[\"ColumnValue\"]}\r\n onPress={() =>\r\n handleRequiredFieldData(\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n )\r\n }\r\n />\r\n ))}\r\n </View>\r\n ) : item[\"type\"] === 3 ? (\r\n <>\r\n <Dropdown\r\n isValid={item[\"isValid\"]}\r\n label={item[\"label\"]}\r\n options={item[\"Option\"]}\r\n value={item[\"ColumnValue\"]}\r\n onSelect={(item_) => {\r\n handleRequiredFieldData(\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n }}\r\n placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : item[\"label\"] !== \"Down Payment\" ? (\r\n <InputBox\r\n keyboardType={item[\"keyboardType\"]}\r\n maxLength={item[\"maxLength\"]}\r\n validate={item[\"isValid\"]}\r\n forceValidation={item[\"forceValidation\"]}\r\n autoFocus={index == 0}\r\n label={item[\"label\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={async () => {\r\n if (item[\"onBlurFunction\"]) {\r\n if (\r\n \"handleCalculateDownPaymentPer\" ===\r\n item[\"onBlurFunction\"]\r\n ) {\r\n handleCalculateDownPaymentPer();\r\n } else if (\r\n \"DownPmtOnChange\" === item[\"onBlurFunction\"]\r\n ) {\r\n DownPmtOnChange();\r\n } else if (\r\n \"LnAmtExcChange\" === item[\"onBlurFunction\"]\r\n ) {\r\n LnAmtExcChange();\r\n } else if (\r\n \"CalculateDownPayment\" === item[\"onBlurFunction\"]\r\n ) {\r\n CalculateDownPayment();\r\n } else if (\r\n [\r\n \"Refi_Estmt_LnAmt\",\r\n \"CashOutAmount\",\r\n \"PaidOff\",\r\n ].includes(item[\"onBlurFunction\"])\r\n ) {\r\n CalculateLnAmt(item[\"onBlurFunction\"]);\r\n }\r\n } else if (item[\"ColumnName\"] === \"subjectZip\") {\r\n let zipCode = iLoanData[\"subjectZip\"];\r\n if (zipCode.length === 5) {\r\n let { city, state } =\r\n await handleGetZipCodeDetails(zipCode);\r\n handleRequiredFieldData(\"subjectCity\", city);\r\n handleRequiredFieldData(\"subjectState\", state);\r\n }\r\n }\r\n }}\r\n onChangeText={(text) => {\r\n try {\r\n handleRequiredFieldData(item[\"ColumnName\"], text);\r\n } catch (e) {}\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n />\r\n ) : (\r\n <>\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <View\r\n style={[\r\n styles.inputBoxContainer,\r\n {\r\n borderColor: \"gray\",\r\n width: \"100%\",\r\n },\r\n ]}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={styles.inputBoxLabel}\r\n >\r\n {item[\"label\"] || \"\"}\r\n </CustomText>\r\n <CustomTextInput\r\n onChangeText={(text) => {\r\n handleRequiredFieldData(\r\n item[\"field\"][0][\"ColumnName\"],\r\n text\r\n );\r\n }}\r\n isCurrency={item[\"field\"][0][\"isCurrency\"]}\r\n keyboardType={item[\"field\"][0][\"keyboardType\"]}\r\n value={\r\n item[\"field\"][0][\"ColumnValue\"]?.toString() ||\r\n \"\"\r\n }\r\n onBlur={DownPmtOnChange}\r\n placeholder={\r\n item[\"field\"][0][\"placeholder\"] ||\r\n item[\"field\"][0][\"label\"]\r\n }\r\n style={[\r\n styles.inputBox,\r\n { width: \"63%\", marginRight: 10 },\r\n ]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomTextInput\r\n onChangeText={(text) =>\r\n handleRequiredFieldData(\r\n item[\"field\"][1][\"ColumnName\"],\r\n text\r\n )\r\n }\r\n value={\r\n item[\"field\"][1][\"ColumnValue\"]?.toString() ||\r\n \"\"\r\n }\r\n keyboardType={item[\"field\"][1][\"keyboardType\"]}\r\n isCurrency={item[\"field\"][1][\"isCurrency\"]}\r\n onBlur={CalculateDownPayment}\r\n placeholder={\r\n item[\"field\"][1][\"placeholder\"] ||\r\n item[\"field\"][1][\"label\"]\r\n }\r\n style={[styles.inputBox, { width: \"30%\" }]}\r\n autoCapitalize={\"none\"}\r\n />\r\n <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 14,\r\n marginTop: 5,\r\n marginLeft: 3,\r\n }}\r\n bold={true}\r\n >\r\n %\r\n </CustomText>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n </TouchableOpacity>\r\n );\r\n })}\r\n </ScrollContainer>\r\n )}\r\n </View>\r\n <Button\r\n // disabled={isButtonDisabled }\r\n onPress={() => {\r\n if (!isButtonDisabled || true) {\r\n setProcessingStatus(\"rateSelect&BestFit\");\r\n\r\n const fieldObj = requiredFieldsObj.flatMap((item) => {\r\n if (item[\"field\"])\r\n return item[\"field\"].map(({ ColumnName }) => ({\r\n ColumnName,\r\n ColumnValue: iLoanData[ColumnName],\r\n }));\r\n return {\r\n ColumnName: item[\"ColumnName\"],\r\n ColumnValue: iLoanData[item[\"ColumnName\"]],\r\n };\r\n });\r\n if (\r\n fieldObj\r\n .map(({ ColumnName }) => ColumnName)\r\n .includes(\"subjectZip\")\r\n ) {\r\n handleSaveSubjectProperty();\r\n // () => {\r\n // setModalDetails({\r\n // visible: false,\r\n // });\r\n // handleGetLoanBoardingData(0, {\r\n // processName: \"selectLoanProduct\",\r\n // });\r\n // }\r\n }\r\n handleSaveRequiredFields(fieldObj, () => {\r\n handleGetLoanBoardingData(0, {\r\n processName: \"selectLoanProduct\",\r\n });\r\n });\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(\"autoSelectingProduct\");\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n <View>\r\n {[\"rateSelect&BestFit\"].includes(processingStatus) && (\r\n <View style={{ width: 18, height: 12 }}>\r\n <ArrowSpinner color=\"#fff\" isSpinner={true} size={18} />\r\n </View>\r\n )}\r\n </View>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#fff\",\r\n }}\r\n >\r\n {[\"rateSelect&BestFit\"].includes(processingStatus)\r\n ? \" Saving...\"\r\n : \"Save\"}\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <Button\r\n disabled={[\"rateSelect&Lock\", \"rateSelect\"].includes(\r\n processingStatus\r\n )}\r\n buttonType=\"secondary\"\r\n onPress={() => {\r\n if (![\"rateSelect&BestFit\"].includes(processingStatus)) {\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n );\r\n };\r\n const AddressInformation = () => {\r\n const { PropertyInfo } = loanBoardingData[\"DataOut\"][3],\r\n {\r\n SubjectAddress = \"\",\r\n SubjectZip = \"\",\r\n SubjectCity = \"\",\r\n SubjectState,\r\n } = PropertyInfo[0];\r\n\r\n const isButtonDisabled =\r\n !SubjectAddress ||\r\n !SubjectZip ||\r\n !SubjectCity ||\r\n !SubjectState ||\r\n [\"rateSelect&Lock\", \"rateSelect\"].includes(processingStatus);\r\n\r\n return (\r\n <View style={{ width: \"100%\" }}>\r\n <CustomText bold style={styles[\"rateSummary\"]}>\r\n Property Address Information\r\n </CustomText>\r\n <View style={{ width: \"90%\", alignSelf: \"center\", marginTop: 15 }}>\r\n <InputBox\r\n label=\"Property Street Address\"\r\n placeholder=\"Property Street Address\"\r\n onChangeText={(text) =>\r\n handleUpdatePropertyInfo(\"SubjectAddress\", text)\r\n }\r\n value={SubjectAddress}\r\n />\r\n <InputBox\r\n label=\"Property Zip Code\"\r\n placeholder=\"Property Zip Code\"\r\n onChangeText={(text) =>\r\n handleUpdatePropertyInfo(\"SubjectZip\", text)\r\n }\r\n keyboardType=\"numeric\"\r\n value={SubjectZip}\r\n onBlur={async () => {\r\n let zipCode = SubjectZip;\r\n if (zipCode.length === 5) {\r\n let { city, state } = await handleGetZipCodeDetails(zipCode);\r\n\r\n handleUpdatePropertyInfo(\"SubjectCity\", city);\r\n handleUpdatePropertyInfo(\"SubjectState\", state);\r\n }\r\n }}\r\n />\r\n <InputBox\r\n label=\"Property City\"\r\n placeholder=\"Property City\"\r\n onChangeText={(text) =>\r\n handleUpdatePropertyInfo(\"SubjectCity\", text)\r\n }\r\n value={SubjectCity}\r\n />\r\n <Dropdown\r\n label=\"Property State\"\r\n options={stateOptions}\r\n value={\r\n !true\r\n ? stateOptions.filter((e) => e[\"value\"] == SubjectState)[0]\r\n ?.label\r\n : SubjectState\r\n }\r\n onSelect={({ value }) => {\r\n handleUpdatePropertyInfo(\"SubjectState\", value);\r\n }}\r\n placeholder=\"State\"\r\n isMap={true}\r\n />\r\n </View>\r\n <Button\r\n disabled={isButtonDisabled}\r\n onPress={() => {\r\n if (!isButtonDisabled) {\r\n handleLockRate(\"AddressInfoSection\");\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n <View>\r\n {[\"rateSelect&Lock\", \"Saving\"].includes(processingStatus) && (\r\n <View style={{ width: 18, height: 12 }}>\r\n <ArrowSpinner color=\"#fff\" isSpinner={true} size={18} />\r\n </View>\r\n )}\r\n </View>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#fff\",\r\n }}\r\n >\r\n {[\"rateSelect&Lock\", \"Saving\"].includes(processingStatus) ? (\r\n <>\r\n {processingStatus === \"Saving\"\r\n ? \" Saving...\"\r\n : \" Locking your rate...\"}\r\n </>\r\n ) : (\r\n \"Save & Lock\"\r\n )}\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <Button\r\n disabled={[\"rateSelect&Lock\", \"rateSelect\"].includes(\r\n processingStatus\r\n )}\r\n buttonType=\"secondary\"\r\n onPress={() => {\r\n if (![\"rateSelect&Lock\", \"rateSelect\"].includes(processingStatus)) {\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n );\r\n };\r\n const SSNInformation = () => {\r\n const { BorrInfo } = loanBoardingData[\"DataOut\"][2],\r\n isButtonDisabled =\r\n BorrInfo.filter(({ SSN }) => testSSN(SSN)).length ||\r\n [\"rateSelect&Lock\", \"rateSelect\"].includes(processingStatus);\r\n return (\r\n <View>\r\n <CustomText bold style={styles[\"rateSummary\"]}>\r\n Please Confirm Borrower Information\r\n </CustomText>\r\n <CustomText style={{ fontSize: web ? 15 : 13 }}>\r\n Great, let's Lock your Rate. Before proceeding, please enter the\r\n Social Security Number.\r\n </CustomText>\r\n <View style={{ width: \"90%\", alignSelf: \"center\", marginTop: 15 }}>\r\n {BorrInfo.map(\r\n ({ FirstName = \"\", LastName = \"\", SSN = \"\" }, index) => {\r\n return (\r\n <View key={index}>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 16 : 14,\r\n color: \"black\",\r\n height: 35,\r\n }}\r\n bold\r\n >\r\n {FirstName || LastName\r\n ? `${FirstName} ${LastName}`\r\n : `borrower ${index + 1}`}\r\n </CustomText>\r\n <InputBox\r\n label=\"Social Security Number\"\r\n placeholder=\"SSN\"\r\n maxLength={9}\r\n keyboardType=\"numeric\"\r\n forceValidation={testSSN(SSN)}\r\n onBlur={() => {\r\n handleUpdateBorrower(index, \"SSN\", formatSSN(SSN));\r\n }}\r\n onChangeText={(text) => {\r\n handleUpdateBorrower(index, \"SSN\", text);\r\n }}\r\n value={SSN}\r\n />\r\n </View>\r\n );\r\n }\r\n )}\r\n </View>\r\n <Button\r\n disabled={isButtonDisabled}\r\n onPress={() => {\r\n if (!isButtonDisabled) {\r\n setProcessingStatus(\"rateSelect&Lock\");\r\n handleLockRate(\"SSNSection\");\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#fff\",\r\n }}\r\n >\r\n {[\"rateSelect&Lock\", \"Saving\"].includes(processingStatus) ? (\r\n <>\r\n <ArrowSpinner color=\"#fff\" isSpinner={true} size={18} />\r\n {processingStatus === \"Saving\"\r\n ? \" Saving...\"\r\n : \" Locking your rate...\"}\r\n </>\r\n ) : (\r\n \"Save & Lock\"\r\n )}\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <Button\r\n disabled={[\"rateSelect&Lock\", \"rateSelect\"].includes(\r\n processingStatus\r\n )}\r\n buttonType=\"secondary\"\r\n onPress={() => {\r\n if (![\"rateSelect&Lock\", \"rateSelect\"].includes(processingStatus)) {\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n );\r\n };\r\n const RateSummary = () => {\r\n const { Rate, LineId, points, MonthlyPayment, cashToClose } = selectedRate,\r\n { APR = \"Calculating\" } = aprRateState?.[LineId]?.[Rate] || {};\r\n\r\n return (\r\n <View style={{ width: \"100%\" }}>\r\n <CustomText bold style={styles[\"rateSummary\"]}>\r\n Interest Rate Summary\r\n </CustomText>\r\n <View\r\n style={{\r\n borderBottomColor: \"#C6C6C6\",\r\n borderBottomWidth: 2,\r\n width: \"90%\",\r\n flexDirection: \"row\",\r\n alignSelf: \"center\",\r\n }}\r\n ></View>\r\n <View style={[styles[\"rateSummaryRow\"], { justifyContent: \"center\" }]}>\r\n <View\r\n style={[\r\n {\r\n width: 140,\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n },\r\n web\r\n ? { boxShadow: \"0px 1px 4px 0px #00000073\" }\r\n : generateBoxShadowStyle(1, 2, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n <LinearGradient\r\n colors={[\"#C6F561\", \"#B4F231\", \"#B4F231\"]}\r\n style={[\r\n {\r\n paddingHorizontal: 0,\r\n paddingVertical: web ? 15 : 12,\r\n borderRadius: web ? 12 : 8,\r\n overflow: \"hidden\",\r\n },\r\n ]}\r\n >\r\n <CustomText\r\n style={[styles[\"rateValue\"], { color: \"black\" }]}\r\n bold\r\n >\r\n {![\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n formatPercentage(Rate)\r\n ) : (\r\n <ArrowSpinner color=\"black\" isSpinner={true} size={20} />\r\n )}\r\n </CustomText>\r\n <CustomText\r\n style={[styles[\"rateValueLabel\"], { color: \"black\" }]}\r\n >\r\n Interest Rate\r\n </CustomText>\r\n </LinearGradient>\r\n </View>\r\n </View>\r\n <View style={styles[\"rateSummaryRow\"]}>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {APR === \"Calculating\" ? (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n APR\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>APR</CustomText>\r\n </View>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {points}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>Points</CustomText>\r\n </View>\r\n </View>\r\n <View style={styles[\"rateSummaryRow\"]}>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {![\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n formatCurrency(cleanValue(MonthlyPayment), 2)\r\n ) : (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Estimated Payment (P&I)\r\n </CustomText>\r\n </View>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {[\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n formatCurrency(cleanValue(cashToClose), 2)\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Estimated Cash to Close\r\n </CustomText>\r\n </View>\r\n </View>\r\n {priceAvailability === \"ratesExpired\" && (\r\n <CustomText\r\n style={{\r\n fontSize: web ? 12 : 10,\r\n color: \"#B73333\",\r\n marginTop: 15,\r\n textAlign: \"center\",\r\n }}\r\n bold\r\n >\r\n Interest Rates are currently unavailable.\r\n </CustomText>\r\n )}\r\n <Button\r\n disabled={\r\n [\"rateSelect&Lock\", \"rateSelect\"].includes(processingStatus) ||\r\n priceAvailability === \"ratesExpired\"\r\n }\r\n onPress={() => {\r\n // setProcessingStatus(\"SSNDetails\");\r\n handleLockRateProceed();\r\n }}\r\n style={{\r\n width: \"91%\",\r\n marginHorizontal: 0,\r\n marginVertical: 8,\r\n marginTop: 10,\r\n }}\r\n title={\r\n <>\r\n <View>\r\n {[\"rateSelect&Lock\"].includes(processingStatus) && (\r\n <View style={{ width: 18, height: 12 }}>\r\n <ArrowSpinner color=\"#fff\" isSpinner={true} size={18} />\r\n </View>\r\n )}\r\n </View>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#fff\",\r\n }}\r\n >\r\n {[\"rateSelect&Lock\"].includes(processingStatus)\r\n ? \" Locking your rate...\"\r\n : \"Lock This Rate\"}\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n {![\"changeRate\", \"floatDown\"].includes(processName) && ( // && isSmallScreen\r\n <Button\r\n disabled={[\"rateSelect&Lock\", \"rateSelect\"].includes(\r\n processingStatus\r\n )}\r\n buttonType=\"secondary\"\r\n onPress={() => {\r\n if (\r\n ![\"rateSelect&Lock\", \"rateSelect\"].includes(processingStatus)\r\n ) {\r\n setProcessingStatus(\"rateSelect\");\r\n handleSelectRate();\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n {[\"rateSelect\"].includes(processingStatus) && (\r\n <View style={{ width: 18, height: 12 }}>\r\n <ArrowSpinner color=\"#508BC9\" isSpinner={true} size={18} />\r\n </View>\r\n )}\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n {[\"rateSelect\"].includes(processingStatus)\r\n ? \" Floating your rate...\"\r\n : \"Float This Rate\"}\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n )}\r\n <Button\r\n disabled={[\"rateSelect&Lock\", \"rateSelect\"].includes(\r\n processingStatus\r\n )}\r\n buttonType=\"secondary\"\r\n onPress={() => {\r\n if (![\"rateSelect&Lock\", \"rateSelect\"].includes(processingStatus)) {\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n }\r\n }}\r\n style={{ width: \"91%\", marginHorizontal: 0, marginVertical: 8 }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n );\r\n };\r\n const ViewRateOption = useMemo(() => {\r\n const {\r\n showFloatDown = false,\r\n showChangeRate = false,\r\n showCancelLock = false,\r\n showLockExtend = false,\r\n showLockBtn = false,\r\n } = lockConfirmationDetails,\r\n extendLock = showLockExtend || showLockBtn;\r\n let count = 1;\r\n if (extendLock) count++;\r\n if (showChangeRate) count++;\r\n if (showFloatDown) count++;\r\n\r\n return (\r\n <View\r\n style={{\r\n zIndex: 2,\r\n alignSelf: \"center\",\r\n marginTop: web ? 15 : 10,\r\n marginBottom: web ? 20 : 10,\r\n flexDirection: web ? \"column\" : \"column-reverse\",\r\n }}\r\n >\r\n <TouchableOpacity\r\n ref={OptionButton}\r\n activeOpacity={1}\r\n onPress={handleOpenOption}\r\n style={{\r\n zIndex: 2,\r\n paddingHorizontal: 30,\r\n paddingVertical: web ? 10 : 8,\r\n borderRadius: 0,\r\n width: web ? 250 : 195,\r\n backgroundColor: \"#508BC9\",\r\n borderWidth: 1,\r\n borderColor: \"#295B9A\",\r\n borderRadius: 5,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n fontSize: web ? 14 : 12,\r\n }}\r\n bold\r\n >\r\n View Rate Options{\" \"}\r\n <Icon\r\n size={web ? 17 : 15}\r\n name={`chevron-${optionDetails[\"visible\"] ? \"up\" : \"down\"}`}\r\n />\r\n </CustomText>\r\n </TouchableOpacity>\r\n {optionDetails[\"visible\"] && (\r\n <>\r\n {/* <Modal visible={true} transparent animationType=\"fade\"> */}\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={[\r\n {\r\n height: \"100%\",\r\n },\r\n !web && {\r\n position: \"absolute\",\r\n },\r\n ]}\r\n onPress={() =>\r\n setOptionDetails({ ...optionDetails, visible: false })\r\n }\r\n >\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n position: web ? \"absolute\" : \"relative\",\r\n zIndex: 3,\r\n width: web ? 250 : 190,\r\n borderColor: \"#d3dadf\",\r\n borderWidth: 2,\r\n boxShadow: \"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)\",\r\n },\r\n !web && {\r\n bottom: optionDetails[\"bottom\"] + 39.5 * count,\r\n // left: optionDetails[\"left\"],\r\n opacity: optionDetails[\"opacity\"],\r\n },\r\n ]}\r\n >\r\n <>\r\n {Boolean(extendLock) && (\r\n <RateOption\r\n onPress={() => {\r\n handleExtendRateLock({});\r\n }}\r\n >\r\n Extend Rate Lock\r\n </RateOption>\r\n )}\r\n\r\n {Boolean(showChangeRate) && (\r\n <RateOption\r\n onPress={async () => {\r\n handleChangeRate({});\r\n }}\r\n >\r\n Select a Different Interest Rate\r\n </RateOption>\r\n )}\r\n {Boolean(showFloatDown) && (\r\n <RateOption\r\n onPress={() => {\r\n handleFloatDown();\r\n }}\r\n >\r\n Rate Float Down\r\n </RateOption>\r\n )}\r\n <RateOption\r\n disable={!showCancelLock}\r\n onPress={() => {\r\n setLockConfirmationDetails(\r\n (prevLockConfirmationDetails) => ({\r\n ...prevLockConfirmationDetails,\r\n cancelLockReason: \"\",\r\n isCancelLock: true,\r\n })\r\n );\r\n setOptionDetails({\r\n ...optionDetails,\r\n visible: false,\r\n });\r\n // setProcessingStatus(\"cancelLockSection\");\r\n handleGetCancelLock();\r\n }}\r\n >\r\n Cancel Rate Lock{\" \"}\r\n </RateOption>\r\n </>\r\n </View>\r\n </TouchableOpacity>\r\n {/* </Modal> */}\r\n </>\r\n )}\r\n </View>\r\n );\r\n }, [optionDetails, lockConfirmationDetails]);\r\n\r\n const FloatedGrettings = () => {\r\n let { Rate = \"\", programName = \"\" } = selectedRate;\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n setOptionDetails({ ...optionDetails, visible: false });\r\n }}\r\n style={{ backgroundColor: \"#fff\", flex: 1 }}\r\n >\r\n <View style={[styles[\"titleWrapper\"], { marginBottom: web ? 25 : 0 }]}>\r\n <CustomText\r\n style={[styles[\"title\"], { marginTop: web ? 10 : 5 }]}\r\n bold\r\n >\r\n Rate Floated\r\n </CustomText>\r\n </View>\r\n <LinearGradient\r\n colors={[\"#f6f6f6\", \"#e8e8e8\", \"#e8e8e8\"]}\r\n style={[\r\n {\r\n alignItems: \"center\",\r\n justifyContent: \"space-evenly\",\r\n margin: 18,\r\n padding: 20,\r\n borderRadius: 12,\r\n paddingBottom: 0,\r\n },\r\n web ? { boxShadow: \"0px 4px 16px 0px #00000040\" } : {},\r\n ]}\r\n >\r\n <View style={{ width: \"100%\" }}>\r\n <LinearGradient\r\n colors={[\"#C6F561\", \"#B4F231\", \"#B4F231\"]}\r\n style={[\r\n {\r\n paddingHorizontal: 10,\r\n paddingVertical: web ? 15 : 12,\r\n borderRadius: 12,\r\n flexDirection: \"row\",\r\n paddingLeft: 15,\r\n },\r\n web\r\n ? { boxShadow: \"0px 1px 4px 0px #00000073\" }\r\n : generateBoxShadowStyle(2, 5, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n <MaterialIcons name=\"check-circle\" size={20} color=\"black\" />\r\n <CustomText\r\n style={{\r\n marginLeft: 15,\r\n }}\r\n >\r\n <View>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 16 : 13,\r\n color: \"#000000\",\r\n paddingRight: 10,\r\n }}\r\n bold\r\n >\r\n Congratulations, {userName}!\r\n </CustomText>\r\n </View>\r\n <View style={{ marginTop: web ? 5 : 0 }}>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 15 : 12,\r\n color: \"#000000\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n Your rate has been floated.\r\n </CustomText>\r\n </View>\r\n </CustomText>\r\n </LinearGradient>\r\n\r\n <View\r\n style={{\r\n marginTop: 15,\r\n borderBottomColor: \"#C6C6C6\",\r\n borderBottomWidth: web ? 2 : 1,\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n alignSelf: \"center\",\r\n }}\r\n ></View>\r\n <View\r\n style={[styles[\"rateSummaryRow\"], { justifyContent: \"center\" }]}\r\n >\r\n <View\r\n style={[\r\n {\r\n width: 140,\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n },\r\n web\r\n ? { boxShadow: \"0px 1px 4px 0px #00000073\" }\r\n : generateBoxShadowStyle(1, 2, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n <LinearGradient\r\n colors={[\"#f8f8f8\", \"#f8f8f8\", \"#f8f8f8\"]}\r\n style={[\r\n {\r\n paddingHorizontal: 0,\r\n paddingVertical: web ? 15 : 12,\r\n borderRadius: web ? 12 : 8,\r\n overflow: \"hidden\",\r\n },\r\n ]}\r\n >\r\n <CustomText\r\n style={[styles[\"rateValue\"], { color: \"black\" }]}\r\n bold\r\n >\r\n {formatPercentage(cleanValue(Rate))}\r\n </CustomText>\r\n <CustomText\r\n style={[styles[\"rateValueLabel\"], { color: \"black\" }]}\r\n >\r\n Interest Rate\r\n </CustomText>\r\n </LinearGradient>\r\n </View>\r\n </View>\r\n <CustomText\r\n style={[\r\n {\r\n color: \"#404040\",\r\n textAlign: \"center\",\r\n fontSize: web ? 12 : 10,\r\n marginTop: 10,\r\n marginBottom: 5,\r\n },\r\n web\r\n ? {\r\n fontWeight: 400,\r\n }\r\n : ios\r\n ? { alignSelf: \"center\" }\r\n : {},\r\n ]}\r\n bold\r\n >\r\n Loan Program:{\" \"}\r\n {programName ? (\r\n programName\r\n ) : (\r\n <View style={{ width: 12, height: 6 }}>\r\n <ArrowSpinner size={12} isSpinner={true} color=\"black\" />\r\n </View>\r\n )}\r\n </CustomText>\r\n </View>\r\n <Button\r\n onPress={handleNextClick}\r\n style={{\r\n width: \"50%\",\r\n marginHorizontal: 0,\r\n marginVertical: 20,\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#fff\",\r\n }}\r\n >\r\n Continue\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <CustomText\r\n style={{ marginBottom: web ? 20 : 15, fontSize: web ? 11 : 9 }}\r\n >\r\n If you have any questions about the below info, please reach out to\r\n your Loan Officer\r\n </CustomText>\r\n </LinearGradient>\r\n </TouchableOpacity>\r\n );\r\n };\r\n const LockConfirmation = () => {\r\n let {\r\n comprateadj: Rate = \"-\",\r\n ratepattern: loanProgramName,\r\n compperiodreq: lockPeriodDaysCount,\r\n complockexpire: lockPeriodDate,\r\n comppointsadj: iPoints = \"-\",\r\n MonthlyPayment = \"-\",\r\n compexpiredate: cashToClose = \"-\",\r\n ProcessLineId,\r\n lockExpDate = null,\r\n APR = \"Calculating\",\r\n } = lockConfirmationDetails,\r\n // { APR = \"Calculating\" } =\r\n // aprRateState?.[ProcessLineId]?.[cleanValue(Rate)] || {},\r\n points = getPoints(iPoints) || \"\";\r\n\r\n if (cashToClose === \"-\" && selectedRate[\"cashToClose\"]) {\r\n cashToClose = selectedRate[\"cashToClose\"];\r\n }\r\n\r\n lockExpDate =\r\n lockExpDate ||\r\n (lockPeriodDate && lockPeriodDaysCount\r\n ? `${formatDate(lockPeriodDate)}`\r\n : null);\r\n\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n setOptionDetails({ ...optionDetails, visible: false });\r\n }}\r\n style={{ backgroundColor: \"#fff\", flex: 1 }}\r\n >\r\n <View style={[styles[\"titleWrapper\"], { marginBottom: web ? 25 : 0 }]}>\r\n <CustomText\r\n style={[styles[\"title\"], { marginTop: web ? 10 : 5 }]}\r\n bold\r\n >\r\n Rate Lock Details\r\n </CustomText>\r\n </View>\r\n <LinearGradient\r\n colors={[\"#f6f6f6\", \"#e8e8e8\", \"#e8e8e8\"]}\r\n style={[\r\n {\r\n alignItems: \"center\",\r\n justifyContent: \"space-evenly\",\r\n margin: 18,\r\n padding: 20,\r\n borderRadius: 12,\r\n paddingBottom: 0,\r\n },\r\n web ? { boxShadow: \"0px 4px 16px 0px #00000040\" } : {},\r\n ]}\r\n >\r\n <View style={{ width: \"100%\" }}>\r\n <LinearGradient\r\n colors={[\"#C6F561\", \"#B4F231\", \"#B4F231\"]}\r\n style={[\r\n {\r\n paddingHorizontal: 10,\r\n paddingVertical: web ? 15 : 12,\r\n borderRadius: 12,\r\n flexDirection: \"row\",\r\n paddingLeft: 15,\r\n },\r\n web\r\n ? { boxShadow: \"0px 1px 4px 0px #00000073\" }\r\n : generateBoxShadowStyle(2, 5, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n <MaterialIcons name=\"lock\" size={20} color=\"black\" />\r\n <CustomText\r\n style={{\r\n marginLeft: 15,\r\n }}\r\n >\r\n <View>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 16 : 13,\r\n color: \"#000000\",\r\n paddingRight: 10,\r\n }}\r\n bold\r\n >\r\n Congratulations, {userName}!\r\n </CustomText>\r\n </View>\r\n <View style={{ marginTop: web ? 5 : 0 }}>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 15 : 12,\r\n color: \"#000000\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n Your interest rate is Locked.\r\n </CustomText>\r\n </View>\r\n </CustomText>\r\n </LinearGradient>\r\n\r\n <View\r\n style={{\r\n marginTop: 15,\r\n borderBottomColor: \"#C6C6C6\",\r\n borderBottomWidth: web ? 2 : 1,\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n alignSelf: \"center\",\r\n }}\r\n ></View>\r\n\r\n <CustomText\r\n style={[\r\n {\r\n color: \"#404040\",\r\n textAlign: \"center\",\r\n fontSize: web ? 14 : 12,\r\n marginTop: 10,\r\n marginBottom: 5,\r\n },\r\n web\r\n ? {\r\n fontWeight: 400,\r\n }\r\n : ios\r\n ? { alignSelf: \"center\" }\r\n : {},\r\n ]}\r\n bold\r\n >\r\n Loan Program:{\" \"}\r\n {loanProgramName ? (\r\n loanProgramName\r\n ) : (\r\n <View style={{ width: 12, height: 6 }}>\r\n <ArrowSpinner size={12} isSpinner={true} color=\"black\" />\r\n </View>\r\n )}\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignSelf: \"center\",\r\n marginBottom: web ? 0 : 5,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: web ? 11 : 9,\r\n color: \"#666666\",\r\n }}\r\n >\r\n Lock Expires On{\" \"}\r\n {lockExpDate &&\r\n ![\"refreshingLockExpiryDate\", \"savingRateExtendLock\"].includes(\r\n processingStatus\r\n ) ? (\r\n <>{lockExpDate}</>\r\n ) : (\r\n <View style={{ width: 12, height: 6 }}>\r\n <ArrowSpinner size={12} isSpinner={true} color=\"black\" />\r\n </View>\r\n )}\r\n </CustomText>\r\n </View>\r\n\r\n <View\r\n style={[styles[\"rateSummaryRow\"], { justifyContent: \"center\" }]}\r\n >\r\n <View\r\n style={[\r\n {\r\n width: 140,\r\n textAlign: \"center\",\r\n borderRadius: 10,\r\n },\r\n web\r\n ? { boxShadow: \"0px 1px 4px 0px #00000073\" }\r\n : generateBoxShadowStyle(1, 2, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n <LinearGradient\r\n colors={[\"#f8f8f8\", \"#f8f8f8\", \"#f8f8f8\"]}\r\n style={[\r\n {\r\n paddingHorizontal: 0,\r\n paddingVertical: web ? 15 : 12,\r\n borderRadius: web ? 12 : 8,\r\n overflow: \"hidden\",\r\n },\r\n ]}\r\n >\r\n <CustomText\r\n style={[styles[\"rateValue\"], { color: \"black\" }]}\r\n bold\r\n >\r\n {Rate == \"-\" ||\r\n [\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n formatPercentage(cleanValue(Rate))\r\n )}\r\n </CustomText>\r\n <CustomText\r\n style={[styles[\"rateValueLabel\"], { color: \"black\" }]}\r\n >\r\n Interest Rate\r\n </CustomText>\r\n </LinearGradient>\r\n </View>\r\n </View>\r\n <View style={styles[\"rateSummaryRow\"]}>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {APR === \"Calculating\" ? (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n formatPercentage((APR * 100).toFixed(3))\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>APR</CustomText>\r\n </View>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText\r\n style={[\r\n styles[\"rateValue\"],\r\n {\r\n color: points.includes(\"(\") ? \"#88AB35\" : \"#c14242\",\r\n },\r\n ]}\r\n bold\r\n >\r\n {points ? (\r\n points\r\n ) : (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Points\r\n </CustomText>\r\n </View>\r\n </View>\r\n <View style={styles[\"rateSummaryRow\"]}>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {MonthlyPayment !== \"-\" &&\r\n ![\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n formatCurrency(cleanValue(MonthlyPayment), 2)\r\n ) : (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Estimated Payment (P&I)\r\n </CustomText>\r\n </View>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {[\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) || cashToClose === \"-\" ? (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n formatCurrency(cleanValue(cashToClose), 2)\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Estimated Cash to Close\r\n </CustomText>\r\n </View>\r\n </View>\r\n </View>\r\n\r\n {ViewRateOption}\r\n <CustomText\r\n style={{ marginBottom: web ? 20 : 15, fontSize: web ? 11 : 9 }}\r\n >\r\n If you have any questions about the below info, please reach out to\r\n your Loan Officer\r\n </CustomText>\r\n </LinearGradient>\r\n </TouchableOpacity>\r\n );\r\n };\r\n const FloatConfirmation = () => {\r\n let {\r\n Rate = \"\",\r\n LineId = \"\",\r\n points = \"\",\r\n MonthlyPayment = \"\",\r\n cashToClose = \"Calculating\",\r\n programName = \"\",\r\n } = selectedRate,\r\n { APR = \"Calculating\" } = aprRateState?.[LineId]?.[Rate] || {};\r\n\r\n if (APR == \"Calculating\") {\r\n APR = selectedRate[\"APR\"] || \"Calculating\";\r\n }\r\n\r\n return (\r\n <View style={{ backgroundColor: \"#fff\", flex: 1 }}>\r\n <View style={[styles[\"titleWrapper\"], { marginBottom: web ? 25 : 0 }]}>\r\n <CustomText style={[styles[\"title\"], { marginTop: 10 }]} bold>\r\n Review Your Interest Rate\r\n </CustomText>\r\n </View>\r\n <LinearGradient\r\n colors={[\"#f6f6f6\", \"#e8e8e8\", \"#e8e8e8\"]}\r\n style={[\r\n {\r\n alignItems: \"center\",\r\n justifyContent: \"space-evenly\",\r\n margin: 18,\r\n padding: 20,\r\n borderRadius: 12,\r\n },\r\n web ? { boxShadow: \"0px 4px 16px 0px #00000040\" } : {},\r\n ]}\r\n >\r\n <View style={{ width: \"100%\" }}>\r\n <CustomText\r\n style={{\r\n marginBottom: 10,\r\n textAlign: \"center\",\r\n fontSize: web ? 13 : 11,\r\n }}\r\n bold\r\n >\r\n You are currently floating your interest rate. You can lock in\r\n your rate using the button below.\r\n </CustomText>\r\n <View\r\n style={{\r\n borderTopColor: \"#C6C6C6\",\r\n borderTopWidth: web ? 2 : 1,\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n alignSelf: \"center\",\r\n }}\r\n ></View>\r\n\r\n <CustomText\r\n style={[\r\n {\r\n color: \"#404040\",\r\n marginTop: 10,\r\n textAlign: \"center\",\r\n fontSize: web ? 11 : 9,\r\n marginBottom: 5,\r\n },\r\n web\r\n ? {\r\n fontWeight: 400,\r\n }\r\n : ios\r\n ? { alignSelf: \"center\" }\r\n : {},\r\n ]}\r\n bold\r\n >\r\n Loan Program:{\" \"}\r\n {programName ? (\r\n programName\r\n ) : (\r\n <View style={{ width: 12, height: 6 }}>\r\n <ArrowSpinner size={12} isSpinner={true} color=\"black\" />\r\n </View>\r\n )}\r\n </CustomText>\r\n\r\n <View\r\n style={[styles[\"rateSummaryRow\"], { justifyContent: \"center\" }]}\r\n >\r\n <View\r\n style={[\r\n { width: 140, textAlign: \"center\", borderRadius: 10 },\r\n web\r\n ? { boxShadow: \"0px 1px 4px 0px #00000073\" }\r\n : generateBoxShadowStyle(1, 2, \"black\", 0.2, 1, 8, \"black\"),\r\n ]}\r\n >\r\n <LinearGradient\r\n colors={[\"#C6F561\", \"#B4F231\", \"#B4F231\"]}\r\n style={[\r\n {\r\n paddingHorizontal: 0,\r\n paddingVertical: web ? 15 : 12,\r\n borderRadius: web ? 12 : 8,\r\n overflow: \"hidden\",\r\n },\r\n ]}\r\n >\r\n <CustomText\r\n style={[styles[\"rateValue\"], { color: \"black\" }]}\r\n bold\r\n >\r\n {Rate == \"-\" ||\r\n [\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n formatPercentage(cleanValue(Rate))\r\n )}\r\n </CustomText>\r\n <CustomText\r\n style={[styles[\"rateValueLabel\"], { color: \"black\" }]}\r\n >\r\n Interest Rate\r\n </CustomText>\r\n </LinearGradient>\r\n </View>\r\n </View>\r\n <View style={styles[\"rateSummaryRow\"]}>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {APR === \"Calculating\" ||\r\n [\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n <View style={{ width: 20, height: 20 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n APR\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>APR</CustomText>\r\n </View>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText\r\n style={[\r\n styles[\"rateValue\"],\r\n {\r\n color: points.includes(\"(\") ? \"#88AB35\" : \"#c14242\",\r\n },\r\n ]}\r\n bold\r\n >\r\n {points ? (\r\n points\r\n ) : (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Points\r\n </CustomText>\r\n </View>\r\n </View>\r\n <View style={styles[\"rateSummaryRow\"]}>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {MonthlyPayment !== \"-\" &&\r\n ![\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ? (\r\n formatCurrency(cleanValue(MonthlyPayment), 2)\r\n ) : (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Estimated Payment (P&I)\r\n </CustomText>\r\n </View>\r\n <View style={styles[\"rateValueWrapper\"]}>\r\n <CustomText style={[styles[\"rateValue\"]]} bold>\r\n {[\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus) ||\r\n cashToClose === \"Calculating\" ? (\r\n <View style={{ width: 20, height: 10 }}>\r\n <ArrowSpinner\r\n size={web ? 19 : 15}\r\n isSpinner={true}\r\n color=\"black\"\r\n />\r\n </View>\r\n ) : (\r\n formatCurrency(cleanValue(cashToClose), 2)\r\n )}\r\n </CustomText>\r\n <CustomText style={[styles[\"rateValueLabel\"]]}>\r\n Estimated Cash to Close\r\n </CustomText>\r\n </View>\r\n </View>\r\n </View>\r\n {priceAvailability === \"ratesExpired\" && (\r\n <CustomText\r\n style={{\r\n fontSize: web ? 12 : 10,\r\n color: \"#B73333\",\r\n marginTop: 15,\r\n textAlign: \"center\",\r\n }}\r\n bold\r\n >\r\n Interest Rates are currently unavailable.\r\n </CustomText>\r\n )}\r\n <Button\r\n disabled={\r\n priceAvailability === \"ratesExpired\" ||\r\n [\r\n \"rateSelect&Lock\",\r\n \"rateSelect\",\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n \"searchingProducts\",\r\n ].includes(processingStatus)\r\n }\r\n onPress={() => {\r\n handleLockRateProceed();\r\n }}\r\n style={{\r\n width: \"91%\",\r\n marginHorizontal: 0,\r\n marginVertical: 8,\r\n marginTop: 10,\r\n }}\r\n title={\r\n <>\r\n {[\"rateSelect&Lock\"].includes(processingStatus) && (\r\n <View style={{ width: 18, height: 12 }}>\r\n <ArrowSpinner color=\"#fff\" isSpinner={true} size={18} />\r\n </View>\r\n )}\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#fff\",\r\n }}\r\n >\r\n {[\"rateSelect&Lock\"].includes(processingStatus)\r\n ? \" Locking your rate...\"\r\n : \"Lock This Rate\"}\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <Button\r\n disabled={[\"rateSelect&Lock\", \"rateSelect\"].includes(\r\n processingStatus\r\n )}\r\n buttonType=\"secondary\"\r\n onPress={() => {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n prevLockConfirmationDetails[\"isFloated\"] = false;\r\n return { ...prevLockConfirmationDetails };\r\n });\r\n }}\r\n style={{\r\n width: \"91%\",\r\n marginHorizontal: 0,\r\n marginVertical: 8,\r\n marginTop: 10,\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 17,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Change Interest Rate\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n\r\n <CustomText style={{ marginBottom: 20, fontSize: web ? 11 : 9 }}>\r\n If you have any questions about the below info, please reach out to\r\n your Loan Officer\r\n </CustomText>\r\n </LinearGradient>\r\n </View>\r\n );\r\n };\r\n const ModalComponent = useMemo(() => {\r\n const { width } = Dimensions.get(\"window\"),\r\n modalStyle = [\r\n web\r\n ? {\r\n width: 422,\r\n bottom: 0,\r\n position: \"absolute\",\r\n height: \"calc(100% - 86px)\",\r\n height: \"91%\",\r\n backgroundColor: \"#00000082\",\r\n justifyContent: \"center\",\r\n }\r\n : {\r\n position: \"absolute\",\r\n height: \"100%\",\r\n backgroundColor: \"#00000082\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n },\r\n !isSmallScreen &&\r\n web && {\r\n left: 377,\r\n },\r\n ];\r\n return (\r\n <Modal\r\n visible={modalDetails[\"visible\"]}\r\n testID={\r\n !isSmallScreen ? \"InterestRateModal\" : \"InterestRateModalMobile\"\r\n }\r\n transparent\r\n animationType=\"fade\"\r\n deviceWidth={web ? 422 : width}\r\n style={modalStyle}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={modalStyle}\r\n onPress={() => {}}\r\n >\r\n <LinearGradient\r\n colors={\r\n [\r\n \"SSNDetails\",\r\n \"addressInfoSection\",\r\n \"addressInfoSection-BestFit\",\r\n \"rateSelect&BestFit\",\r\n ].includes(processingStatus)\r\n ? [\"#fff\", \"#fff\", \"#fff\"]\r\n : [\"#f6f6f6\", \"#e8e8e8\", \"#e8e8e8\"]\r\n }\r\n style={[\r\n {\r\n alignItems: \"center\",\r\n justifyContent: \"space-evenly\",\r\n margin: 18,\r\n paddingHorizontal: [\r\n \"rateSelect&BestFit\",\r\n \"addressInfoSection-BestFit\",\r\n ].includes(processingStatus)\r\n ? 10\r\n : 20,\r\n paddingVertical: 20,\r\n borderRadius: 12,\r\n },\r\n web ? { boxShadow: \"0px 4px 16px 0px #00000040\" } : {},\r\n ]}\r\n >\r\n {processingStatus === \"SSNDetails\" ? (\r\n <>{SSNInformation()}</>\r\n ) : processingStatus === \"addressInfoSection\" ? (\r\n <>{AddressInformation()}</>\r\n ) : [\"rateSelect&BestFit\", \"addressInfoSection-BestFit\"].includes(\r\n processingStatus\r\n ) ? (\r\n <>{AddressInformationBestFit()}</>\r\n ) : (\r\n <RateSummary />\r\n )}\r\n </LinearGradient>\r\n </TouchableOpacity>\r\n </Modal>\r\n );\r\n }, [\r\n modalDetails,\r\n processingStatus,\r\n aprRateState,\r\n loanBoardingData,\r\n lockConfirmationDetails,\r\n iLoanData,\r\n propertyTypeOption,\r\n requiredFieldsObj,\r\n ]);\r\n\r\n const AlertComponent = useMemo(() => {\r\n const {\r\n visible,\r\n head = \"Error\",\r\n body,\r\n needCancel,\r\n needSuccessButton,\r\n successButtonText,\r\n successButtonOnPress,\r\n cancelButtonOnPress = null,\r\n disableSuccessButton = false,\r\n preventSuccessPress = false,\r\n } = alertDetails,\r\n { width } = Dimensions.get(\"window\"),\r\n modalStyle = [\r\n web\r\n ? {\r\n width: 422,\r\n bottom: 0,\r\n position: \"absolute\",\r\n height: \"calc(100% - 86px)\",\r\n height: \"91%\",\r\n backgroundColor: \"#00000082\",\r\n justifyContent: \"center\",\r\n }\r\n : {\r\n position: \"absolute\",\r\n height: \"100%\",\r\n backgroundColor: \"#00000082\",\r\n justifyContent: \"center\",\r\n width: \"100%\",\r\n },\r\n !isSmallScreen &&\r\n web && {\r\n left: 377,\r\n },\r\n ];\r\n\r\n return (\r\n <Modal\r\n testID={\r\n !isSmallScreen ? \"InterestRateModal\" : \"InterestRateModalMobile\"\r\n }\r\n visible={visible}\r\n transparent\r\n animationType=\"fade\"\r\n deviceWidth={web ? 422 : width}\r\n style={modalStyle}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={modalStyle}\r\n onPress={() => {\r\n // setModalDetails({\r\n // ...modalDetails,\r\n // visible: false,\r\n // })\r\n //setProcessingStatus(null);\r\n }}\r\n >\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n margin: 25,\r\n padding: 20,\r\n borderRadius: 12,\r\n },\r\n web ? { boxShadow: \"0px 4px 16px 0px #00000040\" } : {},\r\n ]}\r\n >\r\n {head && (\r\n <View\r\n style={{\r\n paddingBottom: 8,\r\n borderBottomWidth: 1,\r\n borderBottomColor: \"#cccccc\",\r\n marginBottom: web ? 20 : 10,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: web ? 20 : 16,\r\n }}\r\n bold\r\n >\r\n {head}\r\n </CustomText>\r\n </View>\r\n )}\r\n {body === \"cancelLockReason\" ? (\r\n <InputBox\r\n label=\"Reason\"\r\n autoFocus={true}\r\n textAlignVertical=\"top\"\r\n multiline={true}\r\n onChangeText={(text) => {\r\n setLockConfirmationDetails((prevLockConfirmationDetails) => {\r\n return {\r\n ...prevLockConfirmationDetails,\r\n cancelLockReason: text,\r\n };\r\n });\r\n }}\r\n value={lockConfirmationDetails[\"cancelLockReason\"]?.toString()}\r\n />\r\n ) : (\r\n <CustomText style={{ fontSize: web ? 16 : 14 }}>\r\n {body}\r\n </CustomText>\r\n )}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n display: \"flex\",\r\n paddingTop: 10,\r\n marginTop: 15,\r\n justifyContent: \"flex-end\",\r\n borderTopWidth: 1,\r\n borderTopColor: \"#cccccc\",\r\n }}\r\n >\r\n {needCancel && (\r\n <ModalButton\r\n buttonType=\"secondary\"\r\n style={{\r\n backgroundColor: \"rgb(108, 117, 125)\",\r\n }}\r\n textStyle={{ color: \"#fff\" }}\r\n onPress={() => {\r\n if (cancelButtonOnPress) {\r\n cancelButtonOnPress();\r\n } else {\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setAlertDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n }\r\n }}\r\n title=\"Cancel\"\r\n />\r\n )}\r\n {needSuccessButton && (\r\n <ModalButton\r\n disableBackgroundColor={\r\n lockConfirmationDetails[\"isCancelLock\"] && \"#508BC9\"\r\n }\r\n style={{ backgroundColor: \"#508BC9\" }}\r\n disabled={disableSuccessButton}\r\n onPress={() => {\r\n if (preventSuccessPress) {\r\n successButtonOnPress();\r\n } else {\r\n successButtonOnPress();\r\n setModalDetails({\r\n visible: false,\r\n });\r\n setAlertDetails({\r\n visible: false,\r\n });\r\n setProcessingStatus(null);\r\n setRateData([]);\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n }\r\n }}\r\n title={successButtonText}\r\n />\r\n )}\r\n </View>\r\n </View>\r\n </TouchableOpacity>\r\n </Modal>\r\n );\r\n }, [alertDetails]);\r\n\r\n return (\r\n <>\r\n <View\r\n style={[\r\n {\r\n marginVertical: 20,\r\n marginHorizontal: web ? 20 : 10,\r\n marginBottom: 50,\r\n flex: 1,\r\n },\r\n ]}\r\n >\r\n {processingStatus === \"selectingInProgress\" && (\r\n <>\r\n <View style={styles[\"titleWrapper\"]}>\r\n <CustomText style={styles[\"title\"]} bold>\r\n Select Your Interest Rate\r\n </CustomText>\r\n <CustomText style={styles[\"titleDescription\"]} bold>\r\n Click on any rate below to see your estimated Payment and Cash\r\n to Close.\r\n </CustomText>\r\n </View>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 15 : 13,\r\n color: \"#646464\",\r\n marginTop: 15,\r\n textAlign: \"center\",\r\n }}\r\n bold\r\n >\r\n <ArrowSpinner color=\"black\" isSpinner={true} size={15} /> Just one\r\n moment while we Find the Best Loan Product for you!\r\n </CustomText>\r\n </>\r\n )}\r\n {lockConfirmationDetails[\"isLocked\"] == true ? (\r\n <>\r\n <LockConfirmation />\r\n {web && (\r\n <View\r\n style={{\r\n height: optionDetails[\"visible\"] ? 150 : 0,\r\n zIndex: -1,\r\n }}\r\n ></View>\r\n )}\r\n </>\r\n ) : lockConfirmationDetails[\"isFloated\"] ? (\r\n <>\r\n {lockConfirmationDetails[\"isFloatedGrettings\"] ? (\r\n <FloatedGrettings />\r\n ) : (\r\n <FloatConfirmation />\r\n )}\r\n </>\r\n ) : lockConfirmationDetails[\"isLocked\"] == false ? (\r\n <>\r\n <ScrollContainer showScrollBar>\r\n <View style={styles[\"titleWrapper\"]}>\r\n <CustomText style={styles[\"title\"]} bold>\r\n Select Your Interest Rate\r\n </CustomText>\r\n <CustomText style={styles[\"titleDescription\"]} bold>\r\n Click on any rate below to see your estimated Payment and Cash\r\n to Close.\r\n </CustomText>\r\n </View>\r\n {[\"changeRate\", \"floatDown\"].includes(processName) ? (\r\n <>\r\n {/* <Button\r\n buttonType=\"secondary\"\r\n disabled={false}\r\n style={{\r\n marginTop: 10,\r\n width: \"35%\",\r\n marginLeft: 0,\r\n alignSelf: \"flex-start\",\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(null);\r\n setLockConfirmationDetails(\r\n (prevLockConfirmationDetails) => {\r\n delete prevLockConfirmationDetails[\"processName\"];\r\n return {\r\n ...prevLockConfirmationDetails,\r\n isLocked: true,\r\n };\r\n }\r\n );\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 14,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n /> */}\r\n </>\r\n ) : (\r\n <View style={[styles[\"filterWrapper\"]]}>\r\n {[\"autoSelectingProduct\", \"pageLoading\"].includes(\r\n processingStatus\r\n ) && (\r\n <View\r\n style={[\r\n {\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n position: \"absolute\",\r\n top: \"45%\",\r\n width: \"100%\",\r\n },\r\n ]}\r\n >\r\n <ArrowSpinner\r\n color=\"#508BC9\"\r\n isSpinner={true}\r\n size={30}\r\n />\r\n </View>\r\n )}\r\n <View\r\n pointerEvents={\r\n (priceAvailability &&\r\n priceAvailability !== \"ratesExpired\") ||\r\n [\"autoSelectingProduct\", \"pageLoading\"].includes(\r\n processingStatus\r\n )\r\n ? \"none\"\r\n : \"auto\"\r\n }\r\n style={\r\n ([\"changeRate\", \"floatDown\"].includes(processName) ||\r\n [\"autoSelectingProduct\", \"pageLoading\"].includes(\r\n processingStatus\r\n )) && { opacity: 0.5 }\r\n }\r\n >\r\n <TouchableOpacity\r\n activeOpacity={0.8}\r\n style={[\r\n styles[\"filetHeader\"],\r\n !searchInfo[\"isEditMode\"] && { paddingTop: 10 },\r\n ]}\r\n onPress={() => {\r\n handleUpdateSearchInfo(\"isEditMode\", true, false);\r\n }}\r\n >\r\n <CustomText bold style={{ color: \"#4D4D4D\" }}>\r\n Loan Program Filters\r\n </CustomText>\r\n {!searchInfo[\"isEditMode\"] && (\r\n <CustomText\r\n style={{\r\n color: \"#2672CB\",\r\n alignSelf: \"center\",\r\n fontSize: 12,\r\n marginLeft: 15,\r\n }}\r\n bold\r\n >\r\n Edit\r\n </CustomText>\r\n )}\r\n </TouchableOpacity>\r\n {searchInfo[\"isEditMode\"] && (\r\n <>\r\n <View style={styles[\"filterContainerWrapper\"]}>\r\n <View style={styles[\"filterContainer\"]}>\r\n <CustomText bold style={styles[\"filterHead\"]}>\r\n Loan Program Type\r\n </CustomText>\r\n <CustomCheckBoxSelection\r\n isMultiple={true}\r\n options={loanProgramTypeOptions}\r\n color=\"#508BC9\"\r\n value={searchInfo[\"loanType\"] || 0}\r\n onChange={(value) =>\r\n handleUpdateSearchInfo(\"loanType\", value)\r\n }\r\n size={15}\r\n />\r\n </View>\r\n <View style={styles[\"filterContainer\"]}>\r\n <CustomText bold style={styles[\"filterHead\"]}>\r\n Loan Term\r\n </CustomText>\r\n <View>\r\n <CustomCheckBoxSelection\r\n isMultiple={true}\r\n options={loanTermOptions.slice(\r\n 0,\r\n loanTermDetails[\r\n loanTermDetails[\"isExpand\"]\r\n ? \"totalCount\"\r\n : \"viewCount\"\r\n ]\r\n )}\r\n color=\"#508BC9\"\r\n value={searchInfo[\"term\"] || 0}\r\n onChange={(value) =>\r\n handleUpdateSearchInfo(\"term\", value)\r\n }\r\n size={15}\r\n />\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n setLoanTermDetails((prevLoanTermDetails) => {\r\n prevLoanTermDetails[\"isExpand\"] =\r\n !prevLoanTermDetails[\"isExpand\"];\r\n return { ...prevLoanTermDetails };\r\n });\r\n }}\r\n style={[\r\n {\r\n display: \"flex\",\r\n alignSelf: \"center\",\r\n flexDirection: \"row\",\r\n },\r\n web && { cursor: \"pointer\" },\r\n ]}\r\n >\r\n <CustomText\r\n style={{ fontSize: 13, color: \"#508BC9\" }}\r\n bold\r\n >\r\n {loanTermDetails[\"isExpand\"] ? \"-\" : \"+\"}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n fontSize: 10,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n height: 17,\r\n marginLeft: 3,\r\n }}\r\n >\r\n {loanTermDetails[\"isExpand\"]\r\n ? \"Less\"\r\n : \"More\"}\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n <View style={styles[\"filterContainer\"]}>\r\n <CustomText bold style={styles[\"filterHead\"]}>\r\n Amortization Type\r\n </CustomText>\r\n <CustomCheckBoxSelection\r\n isMultiple={true}\r\n options={amortTypeOptions}\r\n color=\"#508BC9\"\r\n value={searchInfo[\"amortType\"] || 0}\r\n onChange={(value) =>\r\n handleUpdateSearchInfo(\"amortType\", value)\r\n }\r\n size={15}\r\n />\r\n </View>\r\n <View style={styles[\"filterContainer\"]}>\r\n <CustomText bold style={styles[\"filterHead\"]}>\r\n Lien Position\r\n </CustomText>\r\n <CustomCheckBoxSelection\r\n isMultiple={false}\r\n options={lienPositionOptions}\r\n color=\"#508BC9\"\r\n value={searchInfo[\"lienPosition\"] || 0}\r\n onChange={(value) =>\r\n handleUpdateSearchInfo(\"lienPosition\", value)\r\n }\r\n size={15}\r\n />\r\n </View>\r\n </View>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n marginTop: 15,\r\n }}\r\n >\r\n <CustomText\r\n bold\r\n style={[\r\n styles[\"filterHead\"],\r\n { paddingBottom: 0 },\r\n ]}\r\n >\r\n Locked Days {\" \"}\r\n </CustomText>\r\n <DropDownButton\r\n width={60}\r\n options={lockPeriodOptions}\r\n value={searchInfo[\"lockPeriod\"] || 0}\r\n onSelect={({ value }) =>\r\n handleUpdateSearchInfo(\"lockPeriod\", value)\r\n }\r\n />\r\n </View>\r\n <ModalButton\r\n disabled={\r\n // priceAvailability ||\r\n handleFilterValidation() ||\r\n [\r\n \"searchingProducts\",\r\n \"savingProducts\",\r\n \"searchFinished\",\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n ].includes(processingStatus)\r\n }\r\n onPress={() => {\r\n if (handleGetRequiredFields()) {\r\n setProcessingStatus(\r\n \"addressInfoSection-BestFit\"\r\n );\r\n setModalDetails({\r\n visible: true,\r\n });\r\n } else {\r\n setRateData(null);\r\n handleUpdateSearchInfo(\r\n \"isEditMode\",\r\n true,\r\n false\r\n );\r\n setProcessingStatus(\"savingProducts\");\r\n handleSearchLoanProducts();\r\n }\r\n }}\r\n style={{\r\n alignSelf: \"flex-end\",\r\n paddingVertical: 5,\r\n paddingHorizontal: 10,\r\n height: 28,\r\n width: 200,\r\n display: \"flex\",\r\n backgroundColor: \"#508BC9\",\r\n alignItems: \"center\",\r\n marginTop: 10,\r\n }}\r\n // textStyle={{ marginTop: web ? \"-3px\" : 0 }}\r\n title={\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"center\",\r\n height: web ? 18 : 28,\r\n }}\r\n >\r\n {[\r\n \"searchingProducts\",\r\n \"savingProducts\",\r\n ].includes(processingStatus) && (\r\n <View\r\n style={{ width: 18, height: web ? 17 : 28 }}\r\n >\r\n <ArrowSpinner\r\n color=\"#fff\"\r\n isSpinner={true}\r\n size={web ? 18 : 14}\r\n />\r\n </View>\r\n )}\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 11,\r\n color: \"#fff\",\r\n paddingTop: web ? 0 : 3,\r\n }}\r\n >\r\n {[\r\n \"searchingProducts\",\r\n \"savingProducts\",\r\n ].includes(processingStatus)\r\n ? \" Searching...\"\r\n : \"Save & Refresh Loan Products\"}\r\n </CustomText>\r\n </View>\r\n }\r\n />\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n {\r\n // priceAvailability === \"ratesExpired\" ? (\r\n // <CustomText\r\n // style={{\r\n // fontSize: web ? 15 : 13,\r\n // color: \"#B73333\",\r\n // marginTop: 15,\r\n // }}\r\n // bold\r\n // >\r\n // Interest Rates are currently unavailable.\r\n // </CustomText>\r\n // ) :\r\n priceAvailability === \"priceChanged\" ? (\r\n <CustomText\r\n style={{\r\n fontSize: web ? 15 : 13,\r\n color: \"#646464\",\r\n marginTop: 15,\r\n textAlign: \"center\",\r\n }}\r\n bold\r\n >\r\n <ArrowSpinner color=\"black\" isSpinner={true} size={15} />{\" \"}\r\n Please wait a moment while we refresh this list and obtain\r\n the current interest rate pricing...\r\n </CustomText>\r\n ) : (\r\n <></>\r\n )\r\n }\r\n {rateData && rateData.length === 0 && (\r\n <View\r\n style={[\r\n styles[\"rateContainerWrapper\"],\r\n {\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"row\",\r\n },\r\n ]}\r\n >\r\n <CustomText style={{ fontSize: 14 }} bold>\r\n No Loan Products Found\r\n </CustomText>\r\n </View>\r\n )}\r\n {rateData ? (\r\n <>\r\n {rateData?.map((itemArray, index) => {\r\n const { RateData: rowData = [] } =\r\n Object.values(itemArray)[0][5],\r\n { LockPeriod = [] } = Object.values(itemArray)[0][4],\r\n { Addons = [] } = Object.values(itemArray)[0][6],\r\n { LoanProgramDetails = [] } =\r\n Object.values(itemArray)[0][1],\r\n { LoanData = [] } = Object.values(itemArray)[0][2],\r\n { LenderCompAmt = 0, LoanAmt = 0 } = LoanData[0],\r\n { RateSheetId } = LoanProgramDetails[0];\r\n\r\n let LenderCompPoints =\r\n (parseFloat(LenderCompAmt) /\r\n parseFloat(cleanValue(LoanAmt))) *\r\n 100;\r\n\r\n const totalAddons = Addons.reduce((acc, { Disc }) => {\r\n return acc + parseFloat(Disc);\r\n }, 0);\r\n let {\r\n Name: programName,\r\n LineId,\r\n LnProgActiveId,\r\n LockDays,\r\n } = Object.values(itemArray)[0][1][\r\n \"LoanProgramDetails\"\r\n ][0],\r\n LockPeriodArray =\r\n LockPeriod[\"length\"] > 1\r\n ? LockPeriod.filter(\r\n ({ LockExpDate }) => LockExpDate == LockDays\r\n )\r\n : LockPeriod[0];\r\n\r\n if (LockPeriodArray.length == 0) {\r\n LockPeriodArray = LockPeriod.filter(\r\n ({ LockPeriodID }) => LockPeriodID == 4\r\n );\r\n }\r\n\r\n const { COlID, LockPeriods } = LockPeriodArray[0] || {},\r\n isExpand = rateData[index][\"isExpand\"] || false,\r\n isViewAllRates =\r\n rateDisplayDetails[\"expandedLineId\"]?.includes(\r\n LineId\r\n ) ?? false,\r\n limitedRateArray = !isViewAllRates\r\n ? handleGetLimitedRateArray(\r\n rateDisplayDetails,\r\n [...rowData],\r\n COlID,\r\n totalAddons\r\n )\r\n : [];\r\n\r\n return (\r\n <View\r\n pointerEvents={\r\n // priceAvailability === \"ratesExpired\" ||\r\n [\"autoSelectingProduct\", \"pageLoading\"].includes(\r\n processingStatus\r\n )\r\n ? \"none\"\r\n : \"auto\"\r\n }\r\n style={[styles[\"rateContainerWrapper\"]]}\r\n key={index}\r\n >\r\n <View\r\n // style={[\r\n // web &&\r\n // priceAvailability === \"ratesExpired\" && {\r\n // filter: \"blur(2px)\",\r\n // },\r\n // !web &&\r\n // priceAvailability === \"ratesExpired\" && {\r\n // opacity: 0.5,\r\n // },\r\n // ]}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n setRateData((prevRateData) => {\r\n prevRateData[index][\"isExpand\"] =\r\n !prevRateData[index][\"isExpand\"];\r\n return [...prevRateData];\r\n });\r\n }}\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Icon\r\n name={`chevron-${isExpand ? \"down\" : \"right\"}`}\r\n size={28}\r\n />\r\n <CustomText style={[styles[\"productName\"]]} bold>\r\n {programName}\r\n </CustomText>\r\n </TouchableOpacity>\r\n {isExpand && (\r\n <View\r\n style={[\r\n styles[\"productRateTable\"],\r\n !(\r\n !web && priceAvailability === \"ratesExpired\"\r\n ) &&\r\n generateBoxShadowStyle(\r\n 2,\r\n 6,\r\n \"black\",\r\n 0.2,\r\n 3,\r\n 8,\r\n \"black\"\r\n ),\r\n ]}\r\n onLayout={handleLayout}\r\n >\r\n <View style={styles[\"rateTableHeader\"]}>\r\n <CustomText\r\n style={[\r\n styles[\"rateTableHeaderTitle\"],\r\n styles[\"column1\"],\r\n ]}\r\n bold\r\n >\r\n <Icon\r\n name=\"chevron-right\"\r\n color=\"#508bc9\"\r\n size={20}\r\n style={{\r\n position: \"relative\",\r\n left: -10,\r\n }}\r\n />\r\n Interest Rate\r\n </CustomText>\r\n <CustomText\r\n style={[\r\n styles[\"rateTableHeaderTitle\"],\r\n styles[\"columnAPR\"],\r\n ]}\r\n bold\r\n >\r\n APR\r\n </CustomText>\r\n <CustomText\r\n style={[\r\n styles[\"rateTableHeaderTitle\"],\r\n styles[\"column2\"],\r\n ]}\r\n bold\r\n >\r\n Points\r\n </CustomText>\r\n </View>\r\n <View>\r\n <ScrollContainer>\r\n <View style={styles[\"rateTableBody\"]}>\r\n {(priceAvailability === \"priceChanged\"\r\n ? [{}]\r\n : rowData\r\n )\r\n .filter(\r\n ({ [COlID]: Col }) =>\r\n parseInt(Col) !== 1000\r\n )\r\n .filter(({ Rate }) => {\r\n return isViewAllRates\r\n ? isViewAllRates\r\n : limitedRateArray.includes(\r\n Number(cleanValue(Rate))\r\n );\r\n })\r\n .map(\r\n (\r\n {\r\n Rate = \"-\",\r\n MonthlyPayment = \"-\",\r\n RateSheetName = \"-\",\r\n [COlID]: Col = \"-\",\r\n },\r\n iIndex\r\n ) => {\r\n Rate = cleanValue(Rate);\r\n const {\r\n // priceAvailability ===\r\n // \"ratesExpired\"\r\n // ? Rate\r\n // :\r\n APR = \"Calculating\",\r\n } =\r\n aprRateState?.[LineId]?.[Rate] ||\r\n {},\r\n cashToClose =\r\n cashToCloseDetails?.[LineId]?.[\r\n Rate\r\n ] || \"Calculating\",\r\n point = getPoints(\r\n parseFloat(Col) +\r\n totalAddons +\r\n LenderCompPoints\r\n ).toString();\r\n const { backgroundColor, active } =\r\n handleGetRowColor({\r\n index,\r\n LineId,\r\n Rate,\r\n iIndex,\r\n }),\r\n rowIdentity = `${LineId}-${Rate}`,\r\n isRowExpand =\r\n rowStatus.includes(rowIdentity);\r\n\r\n return (\r\n <RateRow\r\n onPress={() => {\r\n setRowStatus(\r\n (prevRowStatus) => {\r\n return [\r\n ...prevRowStatus.filter(\r\n (iRowIdentity) =>\r\n iRowIdentity !==\r\n selectedRate[\r\n \"rowIdentity\"\r\n ]\r\n ),\r\n rowIdentity,\r\n ];\r\n }\r\n );\r\n setSelectedRate({\r\n RateSheetName,\r\n Rate,\r\n LineId,\r\n LnProgActiveId,\r\n points: point,\r\n MonthlyPayment,\r\n cashToClose:\r\n cashToClose || \"-\",\r\n LockPeriods,\r\n BasePoints: parseFloat(Col),\r\n RateSheetId,\r\n programName,\r\n rowIdentity,\r\n });\r\n }}\r\n backgroundColor={backgroundColor}\r\n key={iIndex}\r\n ref={active ? targetRef : null}\r\n >\r\n <View\r\n style={[\r\n styles[\"rateTableRowChild\"],\r\n ]}\r\n >\r\n <CustomText\r\n style={[\r\n styles[\"rateTableRowText\"],\r\n styles[\"column1\"],\r\n { textAlign: \"left\" },\r\n ]}\r\n >\r\n <Icon\r\n name={`chevron-${\r\n isRowExpand\r\n ? \"down\"\r\n : \"right\"\r\n }`}\r\n onPress={() => {\r\n setRowStatus(\r\n (prevRowStatus) => {\r\n if (\r\n prevRowStatus.includes(\r\n rowIdentity\r\n )\r\n ) {\r\n return prevRowStatus.filter(\r\n (item) =>\r\n item !==\r\n rowIdentity\r\n );\r\n } else {\r\n return [\r\n ...prevRowStatus,\r\n rowIdentity,\r\n ];\r\n }\r\n }\r\n );\r\n }}\r\n size={20}\r\n />\r\n {\" \"}\r\n {Rate !== \"-\" ? (\r\n <>\r\n {formatPercentage(Rate)}\r\n </>\r\n ) : (\r\n \"-\"\r\n )}\r\n </CustomText>\r\n\r\n {APR == \"Calculating\" ? (\r\n <View\r\n style={[\r\n {\r\n height: 20,\r\n },\r\n styles[\"columnAPR\"],\r\n ]}\r\n >\r\n <ArrowSpinner\r\n color=\"black\"\r\n isSpinner={true}\r\n size={13}\r\n style={{ marginTop: 10 }}\r\n />\r\n </View>\r\n ) : (\r\n <CustomText\r\n style={[\r\n styles[\r\n \"rateTableRowText\"\r\n ],\r\n styles[\"columnAPR\"],\r\n ]}\r\n >\r\n {formatPercentage(\r\n cleanValue(APR)\r\n )}\r\n </CustomText>\r\n )}\r\n\r\n <CustomText\r\n style={[\r\n styles[\"rateTableRowText\"],\r\n styles[\"column2\"],\r\n {\r\n color: point.includes(\"(\")\r\n ? \"#246c23\"\r\n : \"#c14242\",\r\n },\r\n ]}\r\n >\r\n {Rate !== \"-\" ? point : \"-\"}\r\n </CustomText>\r\n </View>\r\n {isRowExpand && (\r\n <>\r\n <View\r\n style={[\r\n styles[\r\n \"rateTableRowChild\"\r\n ],\r\n {\r\n justifyContent:\r\n \"space-around\",\r\n marginBottom: 8,\r\n },\r\n ]}\r\n >\r\n <View\r\n style={{\r\n backgroundColor: active\r\n ? \"#c9dde9\"\r\n : \"#EEF4FA\",\r\n borderRadius: 6,\r\n paddingVertical: 7,\r\n paddingHorizontal: 15,\r\n }}\r\n >\r\n <CustomText\r\n style={[\r\n styles[\r\n \"rateTableRowText\"\r\n ],\r\n ]}\r\n >\r\n {formatCurrency(\r\n cleanValue(\r\n MonthlyPayment\r\n ),\r\n 2\r\n )}\r\n </CustomText>\r\n <CustomText\r\n style={[\r\n styles[\r\n \"rateTableHeaderTitle\"\r\n ],\r\n {\r\n color: \"black\",\r\n fontSize: web\r\n ? 12\r\n : 11,\r\n marginTop: 5,\r\n },\r\n ]}\r\n >\r\n Monthly Payment\r\n </CustomText>\r\n </View>\r\n <View\r\n style={{\r\n backgroundColor: active\r\n ? \"#c9dde9\"\r\n : \"#EEF4FA\",\r\n borderRadius: 6,\r\n paddingVertical: 7,\r\n paddingHorizontal: 15,\r\n }}\r\n >\r\n <CustomText\r\n style={[\r\n styles[\r\n \"rateTableRowText\"\r\n ],\r\n ]}\r\n >\r\n {cashToClose ==\r\n \"Calculating\" ? (\r\n <View\r\n style={[\r\n {\r\n height: 20,\r\n },\r\n styles[\r\n \"rateTableRowText\"\r\n ],\r\n ]}\r\n >\r\n <ArrowSpinner\r\n color=\"black\"\r\n isSpinner={true}\r\n size={13}\r\n style={{\r\n marginTop: 10,\r\n }}\r\n />\r\n </View>\r\n ) : (\r\n formatCurrency(\r\n cleanValue(\r\n cashToClose\r\n )\r\n )\r\n )}\r\n </CustomText>\r\n <CustomText\r\n style={[\r\n styles[\r\n \"rateTableHeaderTitle\"\r\n ],\r\n {\r\n color: \"black\",\r\n fontSize: web\r\n ? 12\r\n : 11,\r\n marginTop: 5,\r\n },\r\n ]}\r\n >\r\n Cash to Close\r\n </CustomText>\r\n </View>\r\n </View>\r\n <Button\r\n disabled={\r\n priceAvailability &&\r\n priceAvailability !==\r\n \"ratesExpired\"\r\n }\r\n style={{\r\n paddingVertical: 5,\r\n paddingHorizontal: 10,\r\n width: 160,\r\n height: 35,\r\n marginLeft: 0,\r\n marginBottom: 10,\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(null);\r\n if (!active) {\r\n setSelectedRate({\r\n RateSheetName,\r\n Rate,\r\n LineId,\r\n LnProgActiveId,\r\n points: point,\r\n MonthlyPayment,\r\n cashToClose:\r\n cashToClose || \"-\",\r\n LockPeriods,\r\n BasePoints:\r\n parseFloat(Col),\r\n RateSheetId,\r\n programName,\r\n rowIdentity,\r\n });\r\n } else\r\n targetRef.current.triggerPress();\r\n setModalDetails({\r\n visible: true,\r\n });\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 15,\r\n color: \"#fff\",\r\n }}\r\n >\r\n Select This Rate\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </>\r\n )}\r\n </RateRow>\r\n );\r\n }\r\n )}\r\n </View>\r\n </ScrollContainer>\r\n <TouchableOpacity\r\n onPress={() => {\r\n setRateDisplayDetails(\r\n (prevRateDisplayDetails) => {\r\n return {\r\n ...prevRateDisplayDetails,\r\n expandedLineId: rateDisplayDetails[\r\n \"expandedLineId\"\r\n ].includes(LineId)\r\n ? rateDisplayDetails[\r\n \"expandedLineId\"\r\n ].filter(\r\n (item) => item !== LineId\r\n )\r\n : [\r\n ...rateDisplayDetails[\r\n \"expandedLineId\"\r\n ],\r\n LineId,\r\n ],\r\n };\r\n }\r\n );\r\n }}\r\n activeOpacity={0.7}\r\n style={{\r\n backgroundColor: \"#fafafa\",\r\n padding: 5,\r\n borderTopWidth: 1,\r\n borderTopColor: \"#cccccc\",\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n color: \"#2672CB\",\r\n alignSelf: \"center\",\r\n fontSize: web ? 16 : 14,\r\n }}\r\n >\r\n View {!isViewAllRates ? \"all\" : \"suggested\"}{\" \"}\r\n rates\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n );\r\n })}\r\n </>\r\n ) : (\r\n processingStatus && (\r\n <View style={{ minHeight: 250 }}>\r\n <View\r\n style={[\r\n styles[\"rateContainerWrapper\"],\r\n {\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"row\",\r\n },\r\n ]}\r\n >\r\n <View\r\n style={{\r\n width: 20,\r\n }}\r\n >\r\n <ArrowSpinner\r\n color=\"#508BC9\"\r\n isSpinner={true}\r\n size={20}\r\n />\r\n </View>\r\n <CustomText\r\n style={[styles[\"rateTableRowText\"], { fontSize: 14 }]}\r\n >\r\n {\" \"}\r\n {[\"searchingProducts\", \"savingProducts\"].includes(\r\n processingStatus\r\n ) ? (\r\n <>\r\n {\" \"}\r\n {\r\n processingStatus === \"searchingProducts\"\r\n ? \"Searching Loan Products...\"\r\n : \"Searching Loan Products...\"\r\n // \"Saving Filter Details...\"\r\n }\r\n </>\r\n ) : processingStatus === \"autoSelectingProduct\" ? (\r\n \"Finding the best loan product for you!\"\r\n ) : (\r\n \"Loading...\"\r\n )}\r\n </CustomText>\r\n </View>\r\n </View>\r\n )\r\n )}\r\n <View style={{ minHeight: web ? 180 : 300 }}></View>\r\n </ScrollContainer>\r\n {/* {[\"changeRate\", \"floatDown\"].includes(processName) && (\r\n <>\r\n <View\r\n style={{\r\n position: web ? \"fixed\" : \"relative\",\r\n bottom: web\r\n ? 110\r\n : 70 +\r\n ([\"changeRate\", \"floatDown\"].includes(processName)\r\n ? 45\r\n : 0),\r\n paddingVertical: 15,\r\n width: !web ? \"100%\" : isMobileWeb ? \"91.5%\" : 420,\r\n backgroundColor: \"#fff\",\r\n borderTopWidth: 1,\r\n borderTopColor: \"#cccccc\",\r\n }}\r\n >\r\n <Button\r\n buttonType=\"secondary\"\r\n disabled={false}\r\n style={{\r\n marginTop: 10,\r\n width: \"75%\",\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(null);\r\n setLockConfirmationDetails(\r\n (prevLockConfirmationDetails) => {\r\n delete prevLockConfirmationDetails[\"processName\"];\r\n return {\r\n ...prevLockConfirmationDetails,\r\n isLocked: true,\r\n };\r\n }\r\n );\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 14,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n </>\r\n )} */}\r\n <View\r\n style={{\r\n position: web ? \"fixed\" : \"relative\",\r\n bottom: web\r\n ? 110\r\n : 70 +\r\n ([\"changeRate\", \"floatDown\"].includes(processName)\r\n ? 45\r\n : 0),\r\n paddingVertical: 15,\r\n width: !web ? \"100%\" : isMobileWeb ? \"91.5%\" : 420,\r\n backgroundColor: \"#fff\",\r\n borderTopWidth: 1,\r\n borderTopColor: \"#cccccc\",\r\n }}\r\n >\r\n <Button\r\n disabled={\r\n (priceAvailability && priceAvailability !== \"ratesExpired\") ||\r\n Object.keys(selectedRate).length === 0 ||\r\n [\r\n \"searchingProducts\",\r\n \"savingProducts\",\r\n \"pageLoading\",\r\n \"autoSelectingProduct\",\r\n ].includes(processingStatus)\r\n }\r\n onPress={() => {\r\n setProcessingStatus(null);\r\n\r\n targetRef.current.triggerPress();\r\n setModalDetails({\r\n visible: true,\r\n });\r\n }}\r\n style={{ width: \"75%\" }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 19,\r\n color: \"#fff\",\r\n }}\r\n >\r\n Select Rate\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n {[\"changeRate\", \"floatDown\"].includes(processName) && (\r\n <>\r\n <Button\r\n buttonType=\"secondary\"\r\n disabled={false}\r\n style={{\r\n marginTop: 10,\r\n width: \"75%\",\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(null);\r\n setLockConfirmationDetails(\r\n (prevLockConfirmationDetails) => {\r\n delete prevLockConfirmationDetails[\"processName\"];\r\n return {\r\n ...prevLockConfirmationDetails,\r\n isLocked: true,\r\n };\r\n }\r\n );\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold\r\n style={{\r\n fontSize: 14,\r\n color: \"#508BC9\",\r\n }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </>\r\n )}\r\n </View>\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </View>\r\n {!alertDetails[\"visible\"] && modalDetails[\"visible\"] && ModalComponent}\r\n {!modalDetails[\"visible\"] && alertDetails[\"visible\"] && AlertComponent}\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n titleWrapper: {\r\n ...{\r\n padding: web ? 10 : 5,\r\n backgroundColor: \"#395D82\",\r\n },\r\n ...(web\r\n ? {\r\n boxShadow: \"0px 6px 12px 0px #00000059\",\r\n }\r\n : {}),\r\n },\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n // outlineWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n title: {\r\n fontSize: web ? 20 : 18,\r\n marginBottom: web ? 10 : 10,\r\n alignSelf: \"center\",\r\n color: \"#fff\",\r\n },\r\n titleDescription: {\r\n fontSize: 9,\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n },\r\n filterWrapper: {\r\n borderWidth: 1,\r\n borderColor: \"black\",\r\n padding: 10,\r\n marginTop: 15,\r\n backgroundColor: \"#FAFAFA\",\r\n },\r\n filterContainerWrapper: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignItems: \"flex-start\",\r\n },\r\n filetHeader: {\r\n alignSelf: \"center\",\r\n fontSize: 13,\r\n paddingBottom: 13,\r\n flexDirection: \"row\",\r\n },\r\n filterHead: {\r\n fontSize: 10,\r\n color: \"#4D4D4D\",\r\n paddingBottom: 5,\r\n textAlign: \"center\",\r\n },\r\n filterContainer: { color: \"#4D4D4D\" },\r\n rateContainerWrapper: {\r\n marginTop: 20,\r\n borderWidth: 1,\r\n borderColor: \"#96b9de\",\r\n backgroundColor: \"#dce8f4\",\r\n padding: 10,\r\n },\r\n productName: {\r\n fontSize: 15,\r\n },\r\n productRateTable: [\r\n {\r\n marginTop: 10,\r\n borderWidth: 1,\r\n borderColor: \"#96b9de\",\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.5,\r\n },\r\n ],\r\n rateTableHeader: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n backgroundColor: \"#508BC9\",\r\n textAlign: \"center\",\r\n paddingHorizontal: 5,\r\n paddingTop: 5,\r\n paddingBottom: 7,\r\n },\r\n rateTableHeaderTitle: {\r\n color: \"#fff\",\r\n fontSize: web ? 15 : 13,\r\n textAlign: \"center\",\r\n },\r\n tableRow: {\r\n flexDirection: \"row\",\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n },\r\n cellOne: {\r\n fontSize: 10,\r\n color: \"#595959\",\r\n lineHeight: 15,\r\n textAlign: \"center\",\r\n },\r\n cellTwo: {\r\n color: \"#595959\",\r\n fontSize: 10,\r\n flex: 1,\r\n },\r\n rateTableBody: {\r\n ...{},\r\n ...(web\r\n ? {\r\n // overflow: \"auto\",\r\n }\r\n : {}),\r\n },\r\n rateTableRow: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n // padding: 5,\r\n },\r\n rateTableRowText: {\r\n ...{\r\n color: \"black\",\r\n fontSize: web ? 16 : 14,\r\n textAlign: \"center\",\r\n },\r\n ...(web ? { fontWeight: 500 } : {}),\r\n },\r\n rateTableRowChild: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n padding: 5,\r\n },\r\n column1: {\r\n width: \"35%\",\r\n },\r\n columnAPR: {\r\n width: \"23%\",\r\n },\r\n column2: {\r\n width: web ? \"25%\" : \"22%\",\r\n },\r\n column3: {\r\n width: \"20%\",\r\n },\r\n column4: {\r\n width: web ? \"31%\" : \"25%\",\r\n },\r\n rateSummary: {\r\n color: \"#646464\", //\"#395D82\",\r\n alignSelf: \"center\",\r\n fontSize: web ? 22 : 20,\r\n marginBottom: 15,\r\n marginTop: 10,\r\n textAlign: \"center\",\r\n },\r\n rateSummaryRow: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignSelf: \"center\",\r\n width: \"85%\",\r\n paddingVertical: 10,\r\n },\r\n rateValue: {\r\n alignSelf: \"center\",\r\n fontSize: web ? 19 : 17,\r\n color: \"#404040\",\r\n marginBottom: 3,\r\n },\r\n rateValueLabel: {\r\n ...{\r\n alignSelf: \"center\",\r\n fontSize: web ? 14 : 12,\r\n color: \"#696767\",\r\n textAlign: \"center\",\r\n },\r\n ...(web ? { fontWeight: 500 } : {}),\r\n },\r\n rateValueWrapper: { width: 110, textAlign: \"center\" },\r\n rateSummaryContainer: {\r\n backgroundColor: \"#F2F2F2\",\r\n borderRadius: 8,\r\n marginBottom: 15,\r\n height: 53,\r\n paddingVertical: 10,\r\n marginHorizontal: 15,\r\n justifyContent: \"space-around\",\r\n },\r\n rateText: { alignSelf: \"center\", fontSize: web ? 14 : 12 },\r\n rateTextLabel: { alignSelf: \"center\", fontSize: web ? 12 : 10 },\r\n});\r\n\r\nexport default InterestRate;\r\n","import Checkbox from \"expo-checkbox\";\r\nimport { StyleSheet, View } from \"react-native\";\r\nimport CustomText from \"./CustomText\";\r\n\r\nconst CheckBoxSelection = ({\r\n isMultiple = false,\r\n options = [],\r\n value = \"\",\r\n onChange = () => {},\r\n}) => {\r\n const selectedValue =\r\n (value || \"\")\r\n .toString()\r\n ?.split(\",\")\r\n .map((iValue) => (iValue || \"\").toString())\r\n .filter((_) => _) || [];\r\n\r\n const handleOnValueChange = ({ iValue, isChecked }) => {\r\n let nValue = iValue;\r\n if (isMultiple) {\r\n nValue = selectedValue;\r\n if (isChecked) {\r\n nValue = nValue.filter((val) => val != iValue);\r\n } else {\r\n nValue.push(iValue);\r\n }\r\n nValue = nValue.join(\",\");\r\n }\r\n\r\n onChange(nValue);\r\n };\r\n\r\n return (\r\n <View style={styles.container}>\r\n {options.map(({ value: iValue, label }) => {\r\n const isChecked = selectedValue.includes((iValue || \"\").toString());\r\n return (\r\n <View key={label} style={styles.section}>\r\n <Checkbox\r\n style={styles.checkbox}\r\n value={isChecked}\r\n onValueChange={() => {\r\n handleOnValueChange({ iValue, isChecked });\r\n }}\r\n color={isChecked ? \"#043888\" : undefined}\r\n />\r\n <CustomText\r\n style={[styles.text]}\r\n onPress={() => {\r\n handleOnValueChange({ iValue, isChecked });\r\n }}\r\n >\r\n {label}\r\n </CustomText>\r\n </View>\r\n );\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flexDirection: \"column\",\r\n marginBottom: 20,\r\n },\r\n section: { flexDirection: \"row\", marginVertical: 5, alignItems: \"flex-end\" },\r\n checkbox: { marginRight: 15, width: 23, height: 23 },\r\n text: { fontSize: 16 },\r\n});\r\nexport default CheckBoxSelection;\r\n","import React from \"react\";\r\nimport { View, StyleSheet, TouchableOpacity } from \"react-native\";\r\nimport {\r\n Option,\r\n Title,\r\n InputBox,\r\n Separator,\r\n} from \"../../accessories/accessories\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport {\r\n cleanValue,\r\n formatDateTimeNew,\r\n log,\r\n} from \"../../accessories/CommonFunctions\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport CheckBoxSelection from \"../../accessories/CheckBoxSelection\";\r\n\r\nconst Income = ({ detailsArr, handleOptionPress }) => {\r\n detailsArr[\"subFields\"] = detailsArr[\"subFields\"]?.filter((e) => e !== null);\r\n const typeTwoFields =\r\n detailsArr[\"subFields\"]?.length > 0 ? detailsArr[\"subFields\"] : [];\r\n\r\n return (\r\n <View>\r\n <Title text={detailsArr[\"Title\"]} />\r\n <View>\r\n <View\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { flexDirection: \"row\", justifyContent: \"space-around\" }\r\n : { flex: 1 }\r\n }\r\n >\r\n {detailsArr[\"Options\"]?.map((item, index) => (\r\n <Option\r\n key={index}\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { width: detailsArr[\"widthOption\"] }\r\n : {}\r\n }\r\n text={item[\"text\"]}\r\n value={item[\"value\"] === detailsArr[\"ColumnValue\"]}\r\n onPress={() =>\r\n handleOptionPress(\r\n item[\"value\"],\r\n null,\r\n null,\r\n null,\r\n detailsArr[\"ColumnName\"] === \"CurrentlyEmployed\"\r\n ? detailsArr[\"ColumnName\"]\r\n : null\r\n )\r\n }\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n {typeTwoFields?.length > 0 && (\r\n <>\r\n <View>\r\n {typeTwoFields?.map((item, index) => (\r\n <View key={index}>\r\n <Title\r\n text={item[\"Title\"]}\r\n style={{ marginBottom: item[\"type\"] === 1 ? 10 : 15 }}\r\n />\r\n {item[\"type\"] === 2 ? (\r\n <InputBox\r\n keyboardType={item[\"keyboardType\"]}\r\n maxLength={item[\"maxLength\"]}\r\n forceValidation={item[\"forceValidation\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n label={\r\n item[\"label\"] === \"Employed To\" ? (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n formatDateTimeNew(new Date().toISOString(), 2)\r\n );\r\n else\r\n handleOptionPress(\r\n formatDateTimeNew(new Date().toISOString(), 2),\r\n true,\r\n index\r\n );\r\n }}\r\n style={{\r\n width: web ? 150 : 150,\r\n height: web ? \"auto\" : 20,\r\n // borderWidth: 1,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: web ? -12 : 0,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n }}\r\n bold={!web}\r\n >\r\n {item[\"label\"]}\r\n </CustomText>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n formatDateTimeNew(new Date().toISOString(), 2)\r\n );\r\n else\r\n handleOptionPress(\r\n formatDateTimeNew(\r\n new Date().toISOString(),\r\n 2\r\n ),\r\n true,\r\n index\r\n );\r\n }}\r\n style={[\r\n styles.optionContainer,\r\n {\r\n left: 100,\r\n top: web ? -12 : 6,\r\n // width: 55,\r\n // height: 25,\r\n // position: \"absolute\",\r\n },\r\n ]}\r\n >\r\n <CustomText style={styles.optionText}>\r\n Today\r\n </CustomText>\r\n </TouchableOpacity>\r\n </TouchableOpacity>\r\n ) : (\r\n item[\"label\"]\r\n )\r\n }\r\n disabled={item[\"disabled\"] || false}\r\n validate={item[\"isValid\"] || false}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={() =>\r\n item[\"onBlur\"] !== undefined ? item[\"onBlur\"]() : () => {}\r\n }\r\n onChangeText={(text) => {\r\n try {\r\n if (item[\"keyboardType\"]) {\r\n text = text.replace(/[^0-9]/g, \"\");\r\n }\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](item[\"ColumnName\"], text);\r\n else handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n onFocus={(event) => {\r\n let val = item[\"ColumnValue\"],\r\n text =\r\n cleanValue(val) == 0\r\n ? \"\"\r\n : val?.toString()?.replaceAll(\"$\", \"\");\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](item[\"ColumnName\"], text);\r\n else handleOptionPress(text, true, index);\r\n }}\r\n />\r\n ) : item[\"type\"] === 3 ? (\r\n <>\r\n <Dropdown\r\n isValid={item[\"isValid\"]}\r\n label={item[\"label\"]}\r\n options={[\r\n { label: \"Select\", value: -99 },\r\n ...item[\"Option\"],\r\n ]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onSelect={(item_) => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : item[\"type\"] === 1 ? (\r\n <>\r\n <View>\r\n <View\r\n style={\r\n item[\"widthOption\"] !== undefined\r\n ? {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n }\r\n : { flex: 1 }\r\n }\r\n >\r\n {item[\"Options\"]?.map((item_, index) => (\r\n <Option\r\n key={index}\r\n style={\r\n item[\"widthOption\"] !== undefined\r\n ? { width: item[\"widthOption\"] }\r\n : {}\r\n }\r\n text={item_[\"text\"]}\r\n value={item_[\"value\"] === item[\"ColumnValue\"]}\r\n onPress={() => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n null,\r\n null\r\n );\r\n }}\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n </>\r\n ) : item[\"type\"] === 6 ? (\r\n <>\r\n <CheckBoxSelection\r\n isMultiple={item[\"isMultiple\"] || false}\r\n options={item[\"Option\"]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onChange={(value) => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](item[\"ColumnName\"], value);\r\n else\r\n handleOptionPress(\r\n value,\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n />\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </View>\r\n ))}\r\n </View>\r\n {detailsArr[\"footerButton\"] && detailsArr[\"footerButton\"]}\r\n\r\n {detailsArr[\"removeContent\"] && detailsArr[\"isRemove\"] && (\r\n <>\r\n <Separator />\r\n {detailsArr[\"removeContent\"]}\r\n </>\r\n )}\r\n </>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n marginTop: 8,\r\n paddingTop: web ? \"5px\" : null,\r\n alignSelf: \"flex-start\",\r\n padding: 30,\r\n },\r\n optionContainer: {\r\n backgroundColor: \"#f2f5f8\",\r\n borderRadius: 17,\r\n paddingVertical: web ? 6 : 3,\r\n paddingHorizontal: 12,\r\n borderColor: \"#606060\",\r\n borderWidth: 1,\r\n marginTop: -8,\r\n position: \"absolute\",\r\n },\r\n optionText: {\r\n fontSize: web ? 12 : 10,\r\n color: \"#787878\",\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n flex: 1,\r\n flexShrink: 1,\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n});\r\n\r\nexport default Income;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n StyleSheet,\r\n TouchableOpacity,\r\n Modal,\r\n View,\r\n Keyboard,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport CustomText from \"./CustomText\";\r\nimport Icon from \"react-native-vector-icons/Entypo\";\r\nimport { ios, web } from \"./Platform\";\r\nimport { KeyboardAwareFlatList } from \"react-native-keyboard-aware-scroll-view\";\r\nimport { WrappedTextView } from \"./CommonFunctions\";\r\nconst screenWidth = Dimensions.get(\"screen\").width;\r\n\r\nconst Dropdown = (props) => {\r\n let { label, options, onSelect, value, isValid } = props;\r\n\r\n value = (value || \"\").toString()?.split(\",\") || [];\r\n value = value.map((num) => Number(num));\r\n value = value.filter((num) => num != 0);\r\n\r\n const DropdownButton = useRef();\r\n const [visible, setVisible] = useState(false);\r\n const [dropdown, setDropdown] = useState({ top: 0, left: 0 });\r\n const [hoveredItem, setHoveredItem] = useState(null);\r\n const [selectedItems, setSelectedItems] = useState([]);\r\n useEffect(() => {\r\n setSelectedItems(value);\r\n }, [props]);\r\n\r\n const toggleItem = (item) => {\r\n let selectedItems_ = selectedItems;\r\n if (selectedItems_.includes(item)) {\r\n selectedItems_ = selectedItems_.filter(\r\n (selectedItem) => selectedItem != item\r\n );\r\n } else {\r\n selectedItems_ = [...selectedItems, item];\r\n }\r\n selectedItems_ = selectedItems_.filter((num) => Number(num) != 0);\r\n selectedItems_.forEach((item) => Number(item));\r\n\r\n setSelectedItems([...selectedItems_]);\r\n onSelect({ value: selectedItems_.join(\",\") });\r\n };\r\n\r\n const handleMouseEnter = (item) => {\r\n setHoveredItem(item);\r\n };\r\n const flatListRef = useRef(null);\r\n\r\n if (web) {\r\n useEffect(() => {\r\n if (flatListRef.current) {\r\n setTimeout(() => {\r\n flatListRef.current\r\n .getScrollResponder()\r\n ._innerViewRef.childNodes[0].childNodes[0].focus();\r\n }, 200);\r\n }\r\n }, [flatListRef.current]);\r\n useEffect(() => {\r\n DropdownButton?.current?.setNativeProps({\r\n tabIndex: -1,\r\n });\r\n }, [DropdownButton.current]);\r\n }\r\n\r\n const toggleDropdown = () => {\r\n visible ? setVisible(false) : openDropdown();\r\n };\r\n\r\n const openDropdown = async () => {\r\n if (!web) {\r\n await new Promise((resolve) => {\r\n Keyboard.dismiss();\r\n setTimeout(resolve, 100);\r\n });\r\n\r\n setTimeout(() => {\r\n DropdownButton.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setDropdown({ top: py + (h - 29), left: _px + 12, width: _w - 22 });\r\n });\r\n setVisible(true);\r\n }, 100);\r\n } else {\r\n DropdownButton.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setDropdown({ top: py + (h - 29), left: _px + 12, width: _w - 22 });\r\n });\r\n setVisible(true);\r\n }\r\n };\r\n\r\n const getFocusProps = () => {\r\n if (!web)\r\n return { tabIndex: 1, accessible: true, accessibilityRole: \"button\" };\r\n return {};\r\n };\r\n\r\n const renderItem = ({ item, index }) => {\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={[\r\n styles.item,\r\n item == hoveredItem ? { backgroundColor: \"#318CE7\" } : {},\r\n ]}\r\n onPress={() => toggleItem(Number(item[\"value\"]))}\r\n onMouseEnter={() => handleMouseEnter(item)}\r\n onMouseLeave={() => setHoveredItem(null)}\r\n >\r\n <CustomText\r\n style={[\r\n {\r\n paddingHorizontal: 15,\r\n paddingVertical: 7,\r\n fontSize: 15,\r\n },\r\n item == hoveredItem ? { color: \"#fff\" } : {},\r\n ]}\r\n >\r\n {item.label}\r\n </CustomText>\r\n {selectedItems.includes(Number(item[\"value\"]?.toString().trim())) && (\r\n <Icon\r\n name=\"check\"\r\n size={18}\r\n color={item == hoveredItem ? \"#fff\" : \"black\"}\r\n style={{ marginRight: 10, alignSelf: \"center\" }}\r\n />\r\n )}\r\n </TouchableOpacity>\r\n );\r\n };\r\n\r\n const renderDropdown = () => {\r\n return (\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <View\r\n style={[\r\n styles.inputBoxContainer,\r\n {\r\n borderColor: \"gray\",\r\n width: \"100%\",\r\n borderColor: isValid ? \"red\" : \"silver\",\r\n },\r\n ]}\r\n >\r\n <CustomText bold={true} style={styles.inputBoxLabel}>\r\n {label || \"\"}\r\n </CustomText>\r\n\r\n <TouchableOpacity\r\n onPress={toggleDropdown}\r\n {...getFocusProps()}\r\n style={[\r\n styles.inputBox,\r\n {\r\n width: \"100%\",\r\n marginRight: 10,\r\n },\r\n ]}\r\n >\r\n <Modal visible={visible} transparent animationType=\"fade\">\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={styles.overlay}\r\n onPress={() => setVisible(false)}\r\n >\r\n <View\r\n style={[\r\n styles.dropdown,\r\n {\r\n top: dropdown[\"top\"],\r\n left: dropdown[\"left\"],\r\n width: dropdown[\"width\"],\r\n },\r\n dropdown[\"top\"] == 0 &&\r\n dropdown[\"left\"] == 0 && { zIndex: -11111 },\r\n web ? { overflow: \"auto\", maxHeight: 300 } : {},\r\n ]}\r\n >\r\n <KeyboardAwareFlatList\r\n ref={flatListRef}\r\n data={options}\r\n renderItem={renderItem}\r\n />\r\n </View>\r\n </TouchableOpacity>\r\n </Modal>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n );\r\n };\r\n const getLabelByValue = (value) => {\r\n const option = options.find((item) => item.value == value);\r\n return option ? option.label : \"\";\r\n };\r\n const getSelectedText = () => {\r\n let text = [];\r\n selectedItems.forEach((item, index) => text.push(getLabelByValue(item)));\r\n if (text.length == 0) return \"Nothing selected\";\r\n const selectedText = text.filter((_) => _).join(\", \");\r\n return web\r\n ? selectedText\r\n : WrappedTextView({\r\n text: selectedText,\r\n maxLength: Math.floor((ios ? 41.5 : 47) * (screenWidth / 375)),\r\n });\r\n };\r\n\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n tabIndex={-1}\r\n ref={DropdownButton}\r\n style={styles.button}\r\n onPress={toggleDropdown}\r\n >\r\n {renderDropdown()}\r\n <CustomText style={[styles.buttonText]}>\r\n <CustomText\r\n style={[\r\n {\r\n maxWidth: \"100%\",\r\n overflow: \"hidden\",\r\n },\r\n web && {\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n display: \"inline-block\",\r\n },\r\n ]}\r\n >\r\n {getSelectedText()}\r\n </CustomText>\r\n </CustomText>\r\n <Icon style={styles.icon} name={`chevron-${visible ? \"up\" : \"down\"}`} />\r\n </TouchableOpacity>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n button: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n zIndex: 1,\r\n },\r\n buttonText: [\r\n {\r\n flex: 1,\r\n color: \"rgb(81, 87, 93)\",\r\n textAlign: \"left\",\r\n position: \"absolute\",\r\n top: 20,\r\n left: 15,\r\n maxWidth: \"89%\",\r\n overflow: \"hidden\",\r\n },\r\n web && {\r\n whiteSpace: \"nowrap\",\r\n display: \"inline-block\",\r\n textOverflow: \"ellipsis\",\r\n },\r\n ],\r\n icon: {\r\n right: 20,\r\n top: 22,\r\n position: \"absolute\",\r\n },\r\n dropdown: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n width: 350,\r\n // shadowColor: \"#000000\",\r\n // shadowRadius: 4,\r\n // shadowOffset: { height: 4, width: 0 },\r\n // shadowOpacity: 0.5,\r\n borderWidth: 1,\r\n borderColor: \"#999\",\r\n borderRadius: 3,\r\n },\r\n overlay: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n item: {\r\n borderBottomWidth: 1,\r\n borderBottomColor: \"rgba(0,0,0,.04)\",\r\n justifyContent: \"space-between\",\r\n flexDirection: \"row\",\r\n },\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n height: 35,\r\n },\r\n },\r\n});\r\n\r\nexport default Dropdown;\r\n","import React from \"react\";\r\nimport { View, StyleSheet, TouchableOpacity } from \"react-native\";\r\nimport {\r\n Option,\r\n Title,\r\n InputBox,\r\n Separator,\r\n} from \"../../accessories/accessories\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport { cleanValue, log } from \"../../accessories/CommonFunctions\";\r\nimport MultiSelect from \"../../accessories/MultiSelect\";\r\nimport CheckBoxSelection from \"../../accessories/CheckBoxSelection\";\r\n\r\nconst Assets = ({ detailsArr, handleOptionPress }) => {\r\n detailsArr[\"subFields\"] = detailsArr[\"subFields\"]?.filter((e) => e !== null);\r\n\r\n const typeTwoFields =\r\n detailsArr[\"subFields\"]?.length > 0 ? detailsArr[\"subFields\"] : [];\r\n return (\r\n <View>\r\n <Title text={detailsArr[\"Title\"]} />\r\n <View>\r\n <View\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { flexDirection: \"row\", justifyContent: \"space-around\" }\r\n : { flex: 1 }\r\n }\r\n >\r\n {detailsArr[\"Options\"]?.map((item, index) => (\r\n <Option\r\n key={index}\r\n style={\r\n detailsArr[\"widthOption\"] !== undefined\r\n ? { width: detailsArr[\"widthOption\"] }\r\n : {}\r\n }\r\n text={item[\"text\"]}\r\n value={item[\"value\"] === detailsArr[\"ColumnValue\"]}\r\n onPress={() =>\r\n handleOptionPress(item[\"value\"], null, null, null, null)\r\n }\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n {typeTwoFields?.length > 0 && (\r\n <>\r\n <View>\r\n {typeTwoFields?.map((item, index) => (\r\n <View key={index}>\r\n <Title\r\n text={item[\"Title\"]}\r\n style={{ marginBottom: item[\"type\"] === 1 ? 10 : 15 }}\r\n />\r\n {item[\"type\"] === 2 ? (\r\n <InputBox\r\n keyboardType={item[\"keyboardType\"]}\r\n maxLength={item[\"maxLength\"]}\r\n forceValidation={item[\"forceValidation\"]}\r\n isCurrency={item[\"isCurrency\"]}\r\n label={item[\"label\"]}\r\n disabled={item[\"disabled\"] || false}\r\n validate={item[\"isValid\"] || false}\r\n placeholder={item[\"placeholder\"] || item[\"label\"]}\r\n onBlur={() =>\r\n item[\"onBlur\"] !== undefined ? item[\"onBlur\"]() : () => {}\r\n }\r\n onChangeText={(text) => {\r\n try {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](item[\"ColumnName\"], text);\r\n else handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from ====> \", e);\r\n }\r\n }}\r\n value={item[\"ColumnValue\"]?.toString()}\r\n onFocus={() => {\r\n let val = cleanValue(item[\"ColumnValue\"] || \"\"),\r\n text =\r\n val == 0 ? \"\" : val?.toString()?.replaceAll(\"$\", \"\");\r\n try {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](item[\"ColumnName\"], text);\r\n else handleOptionPress(text, true, index);\r\n } catch (e) {\r\n log(\"Error from Assets onFocus ====> \", e);\r\n }\r\n }}\r\n />\r\n ) : item[\"type\"] === 3 ? (\r\n <>\r\n <Dropdown\r\n isValid={item[\"isValid\"]}\r\n label={item[\"label\"]}\r\n options={item[\"Option\"]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onSelect={(item_) => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : item[\"type\"] === 1 ? (\r\n <>\r\n <View>\r\n <View\r\n style={\r\n item[\"widthOption\"] !== undefined\r\n ? {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n }\r\n : { flex: 1 }\r\n }\r\n >\r\n {item[\"Options\"]?.map((item_, index) => (\r\n <Option\r\n key={index}\r\n style={\r\n item[\"widthOption\"] !== undefined\r\n ? { width: item[\"widthOption\"] }\r\n : {}\r\n }\r\n text={item_[\"text\"]}\r\n value={item_[\"value\"] === item[\"ColumnValue\"]}\r\n onPress={() => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"],\r\n null\r\n );\r\n }}\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n </>\r\n ) : item[\"type\"] === 4 ? (\r\n <>\r\n <MultiSelect\r\n label={item[\"label\"]}\r\n options={item[\"Option\"]}\r\n isValid={item[\"isValid\"]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onSelect={(item_) => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](\r\n item[\"ColumnName\"],\r\n item_[\"value\"]\r\n );\r\n else\r\n handleOptionPress(\r\n item_[\"value\"],\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n // placeholder={item[\"placeholder\"] || \"\"}\r\n isMap={item[\"isMap\"]}\r\n />\r\n </>\r\n ) : item[\"type\"] === 6 ? (\r\n <>\r\n <CheckBoxSelection\r\n isMultiple={item[\"isMultiple\"] || false}\r\n options={item[\"Option\"]}\r\n value={\r\n item[\"isMap\"]\r\n ? item[\"Option\"].filter(\r\n (e) => e[\"value\"] == item[\"ColumnValue\"]\r\n )[0]?.label\r\n : item[\"ColumnValue\"]\r\n }\r\n onChange={(value) => {\r\n if (detailsArr[\"onChangeText\"])\r\n detailsArr[\"onChangeText\"](item[\"ColumnName\"], value);\r\n else\r\n handleOptionPress(\r\n value,\r\n null,\r\n null,\r\n item[\"ColumnName\"]\r\n );\r\n }}\r\n />\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </View>\r\n ))}\r\n </View>\r\n </>\r\n )}\r\n {detailsArr[\"footerButton\"] && detailsArr[\"footerButton\"]}\r\n {detailsArr[\"removeContent\"] && detailsArr[\"isRemove\"] && (\r\n <>\r\n <Separator />\r\n {detailsArr[\"removeContent\"]}\r\n </>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n inputBoxContainer: {\r\n flexDirection: \"row\",\r\n borderColor: \"gray\",\r\n borderWidth: 1,\r\n borderRadius: 8,\r\n padding: 10,\r\n marginBottom: 20,\r\n },\r\n iconButtonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n marginTop: 8,\r\n paddingTop: web ? \"5px\" : null,\r\n alignSelf: \"flex-start\",\r\n padding: 30,\r\n },\r\n iconButtonText: {\r\n fontSize: 18,\r\n color: \"#fff\",\r\n },\r\n inputBoxLabel: {\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n top: -12,\r\n left: 3,\r\n fontSize: 14,\r\n color: \"gray\",\r\n paddingHorizontal: 3,\r\n },\r\n inputBox: {\r\n ...{\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n fontSize: web ? 15 : 16,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n color: \"#51575d\",\r\n width: \"100%\",\r\n padding: 5,\r\n },\r\n },\r\n});\r\n\r\nexport default Assets;\r\n","import { View, StyleSheet, Text, Dimensions } from \"react-native\";\r\nimport Plaid from \"./Plaid\";\r\nimport { Title } from \"../accessories/accessories\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport RadioButtonGroup, {\r\n RadioButtonItem,\r\n} from \"../accessories/RadioButtonGroup\";\r\nimport ExternalSourceViewer from \"../accessories/ExternalSourceViewer\";\r\n\r\nconst BorrowerVerification = ({\r\n detailsArr,\r\n handleOptionPress,\r\n LockLoanApp,\r\n loanId,\r\n userId,\r\n assetVendor = \"Truv\",\r\n handleNavigation = () => {},\r\n handleGetBankEmpDetails = () => {},\r\n}) => {\r\n return (\r\n <View>\r\n {!(\r\n detailsArr[\"bodyContent\"] === \"LinkBankAccount\" &&\r\n detailsArr[\"isBankAccountLinked\"] !== 1 &&\r\n detailsArr[\"viewPlaid\"]\r\n ) && (\r\n <>\r\n <Title text={detailsArr[\"Title\"]} />\r\n <RadioButtonGroup\r\n size={22}\r\n radioBackground=\"#295b9a\"\r\n onSelected={(value) => handleOptionPress(value)}\r\n selected={detailsArr[\"ColumnValue\"]}\r\n >\r\n {detailsArr[\"Options\"]?.map((item, index) => {\r\n return (\r\n <RadioButtonItem\r\n key={index}\r\n style={{ alignSelf: \"flex-start\", marginTop: 8 }}\r\n value={item[\"value\"]}\r\n label={\r\n <View style={{ flexDirection: \"column\" }}>\r\n <CustomText bold={true} style={[styles.labelStyle]}>\r\n {item[\"text\"]}\r\n </CustomText>\r\n {item[\"additionalText\"] && (\r\n <CustomText\r\n style={{\r\n fontSize: 13,\r\n marginTop: 7,\r\n marginBottom: 15,\r\n marginLeft: 5,\r\n }}\r\n >\r\n {item[\"additionalText\"]}\r\n </CustomText>\r\n )}\r\n </View>\r\n }\r\n />\r\n );\r\n })}\r\n </RadioButtonGroup>\r\n </>\r\n )}\r\n {detailsArr[\"bodyContent\"] &&\r\n detailsArr[\"bodyContent\"] === \"LinkBankAccount\" &&\r\n detailsArr[\"viewPlaid\"] && (\r\n <>\r\n {assetVendor === \"Truv\" ? (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n height: Dimensions.get(\"window\").height - 320,\r\n }}\r\n >\r\n <ExternalSourceViewer\r\n handleNavigation={handleNavigation}\r\n handleGetBankEmpDetails={handleGetBankEmpDetails}\r\n url={`https://directmortgage.com/Truv/?lId=${loanId}&cId=${userId}&t=income`}\r\n style={{ height: Dimensions.get(\"window\").height - 320 }}\r\n wStyle={{ height: Dimensions.get(\"window\").height - 320 }}\r\n />\r\n </View>\r\n ) : (\r\n <Plaid\r\n handleFrameNavigation={detailsArr[\"handleFrameNavigation\"]}\r\n handleOptionPress={handleOptionPress}\r\n details={detailsArr[\"details\"]}\r\n handleSaveLoanInformation={\r\n detailsArr[\"handleSaveLoanInformation\"]\r\n }\r\n isBankAccountLinked={detailsArr[\"isBankAccountLinked\"]}\r\n />\r\n )}\r\n\r\n {web && (\r\n <>\r\n <div id=\"divPlaidContainer\"></div>\r\n <a id=\"downloadAnchorElem\" style={{ display: \"none\" }}></a>\r\n </>\r\n )}\r\n </>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n labelStyle: {\r\n fontSize: 16,\r\n marginLeft: 5,\r\n marginTop: 7,\r\n },\r\n});\r\n\r\nexport default BorrowerVerification;\r\n","import {\r\n Alert,\r\n Dimensions,\r\n Linking,\r\n ScrollView,\r\n StyleSheet,\r\n TouchableOpacity,\r\n View,\r\n} from \"react-native\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport {\r\n AccordionItem,\r\n Button,\r\n InputBox,\r\n Separator,\r\n Title,\r\n WebPageView,\r\n context,\r\n} from \"../../accessories/accessories\";\r\nimport { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport {\r\n cleanValue,\r\n formatCurrency,\r\n getNextNoYear,\r\n handleAPI,\r\n handleGetZipCodeDetails,\r\n handleOpenPageURL,\r\n log,\r\n} from \"../../accessories/CommonFunctions\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport ScrollContainer from \"../../accessories/ScrollContainer\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport XMLParser from \"react-xml-parser\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport ArrowSpinner from \"../../accessories/ArrowSpinner\";\r\nimport { Modal } from \"react-native\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport { Switch } from \"react-native\";\r\nimport { shareHtmlContent } from \"../../accessories/RNComponents\";\r\n\r\nconst isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\nconst AppraisalPayment = (props) => {\r\n const { contextDetails, setContextDetails } = useContext(context);\r\n const {\r\n footerButton = <></>,\r\n loanId = \"\",\r\n stateOptions = [],\r\n loanPurpose = \"\",\r\n UserId = 0,\r\n isSmallScreen = false,\r\n navigation,\r\n setTopEdge = () => {},\r\n triggerHiddenButtonClick = false,\r\n triggerHiddenButtonClickDone = () => {},\r\n ProcessPaymentDisabled = () => {},\r\n ProcessingStatus = () => {},\r\n alertMessage = {},\r\n setAlertMessage = () => {},\r\n setIsPaymentDone = () => {},\r\n } = props;\r\n\r\n const { userName, SessionId, loanId: iLoanId } = contextDetails;\r\n //============= State values===============//\r\n\r\n const [productDescription, setProductDescription] = useState(null),\r\n [borrowerPropertyAddress, setBorrowerPropertyAddress] = useState([]),\r\n productTitle = [\"Product Description\", \"Product Amount\"],\r\n [expirationOption] = useState({\r\n month: [\r\n { value: \"0\", label: \"--Select--\" },\r\n { value: \"01\", label: \"01 - Jan\" },\r\n { value: \"02\", label: \"02 - Feb\" },\r\n { value: \"03\", label: \"03 - Mar\" },\r\n { value: \"04\", label: \"04 - Apr\" },\r\n { value: \"05\", label: \"05 - May\" },\r\n { value: \"06\", label: \"06 - Jun\" },\r\n { value: \"07\", label: \"07 - Jul\" },\r\n { value: \"08\", label: \"08 - Aug\" },\r\n { value: \"09\", label: \"09 - Sep\" },\r\n { value: \"10\", label: \"10 - Oct\" },\r\n { value: \"11\", label: \"11 - Nov\" },\r\n { value: \"12\", label: \"12 - Dec\" },\r\n ],\r\n year: [{ value: \"0\", label: \"--Select--\" }, ...getNextNoYear(10)],\r\n }),\r\n [creditCardDetails, setCreditCardDetails] = useState({\r\n paymentType: 0,\r\n CardNum: \"\",\r\n CardSecurityCode: \"\",\r\n ExpMonth: \"\",\r\n ExpYear: \"\",\r\n CardType: \"\",\r\n FirstName: \"\",\r\n LastName: \"\",\r\n Address: \"\",\r\n ZipCode: \"\",\r\n City: \"\",\r\n State: \"\",\r\n CardEmail: \"\",\r\n }),\r\n [creditCardDetailsValidation, setCreditCardDetailsValidation] = useState(\r\n []\r\n ),\r\n [showWarning, setShowWarning] = useState(false),\r\n [processingStatus, setProcessingStatus] = useState(\"pageLoading\"),\r\n [alertModalMessage, setAlertModalMessage] = useState({\r\n messageArray: null,\r\n isShow: false,\r\n }),\r\n [pageConditions, setPageCondition] = useState({\r\n intRequestType: 3,\r\n iPayor: 2,\r\n whdnPayerValue: 0,\r\n strCMSLeftNavPayor: 2,\r\n loanPurpose,\r\n }),\r\n [borrowerToPay, setBorrowerToPay] = useState([]),\r\n [borrowerToPayAmount, setBorrowerToPayAmount] = useState(0),\r\n [rawJsonCardDetails, setRawJsonCardDetails] = useState({}),\r\n [productTotalAmount, setProductTotalAmount] = useState(0),\r\n [isPaid, setIsPaid] = useState(null),\r\n [selectedFeeId, SetSelectedFeeId] = useState([]);\r\n\r\n //============= State vales - End ===============//\r\n\r\n //============= UseEffect ===============//\r\n useEffect(() => {\r\n // Click the hidden button when triggerHiddenButtonClick is called\r\n\r\n // alert(triggerHiddenButtonClick + \" \" + processingStatus + \" \" + pageConditions[\"Proceed\"] + \" \" + productDescription?.length + \" \" + triggerHiddenButtonClick);\r\n if (triggerHiddenButtonClick) {\r\n if (\r\n processingStatus !== \"Next\" &&\r\n pageConditions[\"Proceed\"] != 0 &&\r\n productDescription?.length > 0 &&\r\n creditCardDetails[\"paymentType\"] !== 0\r\n ) {\r\n // setProcessingStatus(\"Next\");\r\n handleNextClick();\r\n triggerHiddenButtonClickDone(true);\r\n }\r\n }\r\n }, [triggerHiddenButtonClick]);\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n let disabled =\r\n processingStatus === \"Next\" ||\r\n pageConditions[\"Proceed\"] == 0 ||\r\n productDescription?.length == 0 ||\r\n creditCardDetails[\"paymentType\"] === 0 ||\r\n creditCardDetails[\"paymentType\"] === \"0\" ||\r\n creditCardDetails[\"paymentType\"] === undefined;\r\n ProcessPaymentDisabled(disabled);\r\n }, 500);\r\n }, [\r\n processingStatus,\r\n pageConditions,\r\n productDescription,\r\n creditCardDetails,\r\n ProcessPaymentDisabled,\r\n ]);\r\n\r\n useEffect(() => {\r\n ProcessingStatus(processingStatus);\r\n }, [processingStatus]);\r\n\r\n useEffect(() => {\r\n borrowerToPay.length > 0 &&\r\n setAlertModalMessage({\r\n messageArray: (\r\n <>\r\n <View style={{ flexDirection: \"row\", marginBottom: 10 }}>\r\n <CustomText style={{ width: \"33.3%\" }}>Borrower</CustomText>\r\n <CustomText style={{ width: \"33.3%\" }}>Amount</CustomText>\r\n <CustomText style={{ width: \"33.3%\" }}>\r\n Include in order\r\n </CustomText>\r\n </View>\r\n {borrowerToPay.map((row, index) => {\r\n return (\r\n <Fragment key={index}>\r\n <View style={{ flexDirection: \"row\" }}>\r\n <CustomText style={{ width: \"33.3%\" }}>\r\n {row[\"Name\"]}\r\n </CustomText>\r\n <CustomText style={{ width: \"33.3%\" }}>\r\n {formatCurrency(row[\"amount\"])}\r\n </CustomText>\r\n <CustomText style={{ width: \"33.3%\" }}>\r\n <Switch\r\n trackColor={{ false: \"#767577\", true: \"#468fcc\" }}\r\n thumbColor={row[\"isSelected\"] ? \"#f8f8ff\" : \"#f8f8ff\"}\r\n ios_backgroundColor=\"#3e3e3e\"\r\n onValueChange={() => {\r\n let iBorrowerToPay = borrowerToPay;\r\n iBorrowerToPay[index][\"isSelected\"] =\r\n !iBorrowerToPay[index][\"isSelected\"];\r\n setBorrowerToPay([...iBorrowerToPay]);\r\n iBorrowerToPay.filter((item) => !item.isSelected);\r\n let len = iBorrowerToPay.filter(\r\n (item) => !item.isSelected\r\n ).length,\r\n iTotal = (iBorrowerToPay || []).reduce(\r\n (acc, item) =>\r\n acc + parseFloat(cleanValue(item.amount)),\r\n 0\r\n );\r\n setBorrowerToPayAmount(iTotal - len * 30);\r\n }}\r\n value={row[\"isSelected\"]}\r\n />\r\n </CustomText>\r\n </View>\r\n </Fragment>\r\n );\r\n })}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n marginTop: 10,\r\n borderTopWidth: 1,\r\n borderTopColor: \"#999\",\r\n paddingTop: 15,\r\n }}\r\n >\r\n <CustomText style={{ width: \"33.3%\" }}>Total</CustomText>\r\n <CustomText style={{ width: \"33.3%\" }}>\r\n {formatCurrency(borrowerToPayAmount)}\r\n </CustomText>\r\n </View>\r\n </>\r\n ),\r\n isShow: true,\r\n headerMessage: \"Choose Borrowers and Pay\",\r\n footerButton: (\r\n <>\r\n <ModalButton\r\n onPress={(e) => {\r\n let totalAmount = cleanValue(borrowerToPayAmount);\r\n if (borrowerToPayAmount == 0) {\r\n setProcessingStatus(null);\r\n handleAlertMessage(\"Please choose any borrower to continue.\");\r\n return;\r\n } else {\r\n let CustIds = borrowerToPay\r\n .map((item) => item.CustId)\r\n .join(\",\");\r\n setPageCondition({ ...pageConditions, hdnTalxProd: 0 });\r\n handleAPI({\r\n name: \"UpdateBorrForTalx\",\r\n params: { LoanId: loanId, BorIds: CustIds },\r\n })\r\n .then((response) => {\r\n handleProceedNext();\r\n })\r\n .catch((err) =>\r\n console.error(\r\n \"Error from UpdateTalxBorrowers ====> \",\r\n err\r\n )\r\n );\r\n }\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 13, color: \"#fff\" }}\r\n >\r\n Pay Now\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: web ? 13 : 10, color: \"#fff\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </>\r\n ),\r\n });\r\n }, [borrowerToPay]);\r\n useEffect(() => {\r\n if ((productDescription || []).length) {\r\n setProductTotalAmount(\r\n (productDescription || []).reduce(\r\n (acc, item) => acc + parseFloat(cleanValue(item.TotalAMount)),\r\n 0\r\n )\r\n );\r\n }\r\n }, [productDescription]);\r\n\r\n useEffect(() => {\r\n if (UserId) {\r\n handleAPI({\r\n name: \"GetCreditDetails\", //CMS_SP_GetCreditDetails\r\n params: { CustId: UserId },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response)[\"Table\"];\r\n //console.log(response);\r\n setCreditCardDetails(\r\n response.length > 0\r\n ? {\r\n ...response[0],\r\n paymentType: 0,\r\n // CardNum: 4342343244432,\r\n // CardSecurityCode: 1253,\r\n // paymentType: 1,\r\n ExpMonth: 0,\r\n ExpYear: 0,\r\n CardType: 0,\r\n }\r\n : {}\r\n );\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from GetCreditCardDetails ====> \", err)\r\n );\r\n }\r\n }, [UserId]);\r\n useEffect(() => setIsPaymentDone(isPaid), [isPaid]);\r\n useEffect(() => {\r\n if (loanId) {\r\n handleAPI({\r\n name: \"GetShoppingCartDetails\",\r\n params: { LoanId: loanId, AppraisalOnly: 0, Payor: 3 },\r\n })\r\n .then((responseXML) => {\r\n const responseJSON = JSON.parse(responseXML)[\"Root\"][0]; //new XMLParser().parseFromString(responseXML);\r\n if (JSON.parse(responseJSON[\"Status\"])?.Status == 1) {\r\n setProductTotalAmount(cleanValue(responseJSON[\"AppraisalAmt\"]));\r\n setIsPaid(true);\r\n } else {\r\n setIsPaid(false);\r\n }\r\n setRawJsonCardDetails(responseJSON);\r\n let ShoppingCart = JSON.parse(responseJSON[\"ShoppingCart\"] || \"[]\");\r\n let iPageConditions = {};\r\n ShoppingCart.forEach((item) => {\r\n if (item.ProductCategory == \"1\") {\r\n iPageConditions[\"hdnAppProd\"] = 1;\r\n }\r\n if (item.ProductID == \"21\") {\r\n iPageConditions[\"hdnFHAProd\"] = 1;\r\n }\r\n if (item.ProductID == \"367\") {\r\n iPageConditions[\"hdnTalxProd\"] = 1;\r\n }\r\n if (item.ProductID == \"37\" || item.ProductID == \"370\") {\r\n iPageConditions[\"isAppPresent\"] = 1;\r\n iPageConditions[\"reinspectiondate\"] = item[\"reinspectiondate\"];\r\n }\r\n });\r\n setPageCondition((prevPageConditions) => {\r\n return { ...prevPageConditions, ...iPageConditions };\r\n });\r\n\r\n setProductDescription(ShoppingCart);\r\n setProcessingStatus(null);\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from eSign_ShoppingCart_Details ====> \", err)\r\n );\r\n handleAPI({\r\n name: \"eSign_Loan_PropertyAddress\",\r\n params: { LoanId: loanId },\r\n })\r\n .then((response) => {\r\n response = (response || \"\").split(\",\");\r\n let [Street, City, State, ZipCode] = response;\r\n setBorrowerPropertyAddress({ Street, ZipCode, City, State });\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from eSign_Loan_PropertyAddress ====> \", err)\r\n );\r\n handleAPI({\r\n name: \"CheckSession\",\r\n params: { SessionId },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response)[\"Table\"].reduce((result, session) => {\r\n result[session.sessionname] = session.sessionvalue;\r\n return result;\r\n }, {});\r\n setPageCondition((prevPageConditions) => {\r\n return { ...prevPageConditions, ...response };\r\n });\r\n })\r\n .catch((err) => console.error(\"Error from CheckSession ====> \", err));\r\n\r\n if (UserId) {\r\n handleAPI({\r\n name: \"GetCreditDetails\", //CMS_SP_GetCreditDetails\r\n params: { CustId: UserId },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response)[\"Table\"];\r\n // console.log(response);\r\n setCreditCardDetails(\r\n response.length > 0\r\n ? {\r\n ...response[0],\r\n paymentType: 0,\r\n // CardNum: 4342343244432,\r\n // CardSecurityCode: 1253,\r\n // paymentType: 1,\r\n ExpMonth: 0,\r\n ExpYear: 0,\r\n CardType: 0,\r\n }\r\n : {}\r\n );\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from GetCreditCardDetails ====> \", err)\r\n );\r\n }\r\n handleAPI({\r\n name: \"checkFHACaseNumber\",\r\n params: {\r\n LoanId: loanId,\r\n },\r\n })\r\n .then((response) => {\r\n setPageCondition((prevPageConditions) => {\r\n return { ...prevPageConditions, hdnFhaCase: response };\r\n });\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from checkFHACaseNumber ====> \", err)\r\n );\r\n handleAPI({\r\n name: \"CheckPackageSigned\",\r\n params: {\r\n LoanId: loanId,\r\n RequestId: 3,\r\n PayorId: 1,\r\n },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response)[\"Response\"][0];\r\n setPageCondition((prevPageConditions) => {\r\n return { ...prevPageConditions, ...response };\r\n });\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from CheckPackageSigned ====> \", err)\r\n );\r\n }\r\n }, [loanId]);\r\n //============= UseEffect - End ===============//\r\n\r\n //============= Components ===============//\r\n function CreditCardValidation() {\r\n try {\r\n let strMessage = \"\";\r\n const {\r\n CardNum: CardNumber = \"\",\r\n paymentType: paymentType = \"\",\r\n CardTypeName = \"\",\r\n CardType: CardType,\r\n } = creditCardDetails;\r\n\r\n if (CardNumber === null) CardNumber = \"\";\r\n if ((CardNumber || \"\").match(\" \")) {\r\n strMessage = \"Spaces are not allowed in Card Number\";\r\n } else {\r\n const fLetter = CardNumber.charAt(0);\r\n if (\r\n (CardType === 1 && fLetter !== \"3\") ||\r\n (CardType === 2 && fLetter !== \"4\") ||\r\n (CardType === 3 && fLetter !== \"5\") ||\r\n (CardType === 4 && fLetter !== \"6\")\r\n ) {\r\n strMessage = `A ${CardTypeName} card number should begin with the number ${fLetter}.`;\r\n }\r\n }\r\n return strMessage;\r\n } catch (ex) {\r\n //alert(ex.message);\r\n }\r\n }\r\n function CardTypeValidation() {\r\n try {\r\n var strMessage = \"\";\r\n const {\r\n CardNum: CardNumber,\r\n paymentType: paymentType,\r\n CardTypeName = \"\",\r\n CardType: CardType,\r\n } = creditCardDetails;\r\n\r\n var cardLength = CardNumber.length;\r\n if (CardType == 1 && cardLength != 15) {\r\n strMessage = `The ${CardTypeName} card number length must be 15 digits.`;\r\n } else if (CardType === 2 && !(cardLength === 13 || cardLength === 16)) {\r\n strMessage = `The ${CardTypeName} card number length must be 13 or 16 digits.`;\r\n } else if (CardType == 3 && cardLength != 16) {\r\n strMessage = `The ${CardTypeName} card number length must be 16 digits.`;\r\n }\r\n if (strMessage != \"\") return strMessage;\r\n if (cardLength > 20) {\r\n strMessage = \"The Card Number length cannot be more than 20 digits\";\r\n }\r\n return strMessage;\r\n } catch (ex) {}\r\n }\r\n function SecurityCodeValidation() {\r\n try {\r\n let strMessage = \"\",\r\n {\r\n CardSecurityCode: SecurityCode,\r\n paymentType: paymentType,\r\n CardType: CardType,\r\n } = creditCardDetails,\r\n SecurityCodeLength = SecurityCode?.toString().length;\r\n\r\n if ((CardType == 2 || CardType == 3) && SecurityCodeLength != 3) {\r\n strMessage = \"Card Security Code should be 3 digits\";\r\n } else if (CardType == 1 && SecurityCodeLength != 4) {\r\n strMessage = \"Card Security Code should be 4 digits\";\r\n }\r\n return strMessage;\r\n } catch (ex) {}\r\n }\r\n function ValidateMonth() {\r\n try {\r\n const { ExpMonth, ExpYear } = creditCardDetails;\r\n let strMessage = \"\";\r\n if (ExpYear != 0) {\r\n let today = new Date(),\r\n month = today.getMonth() + 1,\r\n year = today.getFullYear().toString().substr(2, 2);\r\n\r\n if (\r\n ExpYear == year &&\r\n parseInt(ExpMonth) != 0 &&\r\n parseInt(ExpMonth) < month\r\n ) {\r\n strMessage = \"Month - The input should not be less than today`s date\";\r\n }\r\n }\r\n return strMessage;\r\n } catch (ex) {\r\n alert(ex.message);\r\n }\r\n }\r\n const handleAlertMessage = (message) => {\r\n if (web) {\r\n alert(message);\r\n } else {\r\n Alert.alert(message);\r\n }\r\n };\r\n const handleNextClick = () => {\r\n let iCreditCardDetailsValidation = [];\r\n if (\r\n !(\r\n pageConditions[\"hdnAppProd\"] === 1 &&\r\n creditCardDetails[\"paymentType\"] == 2\r\n )\r\n ) {\r\n iCreditCardDetailsValidation = Object.keys(creditCardDetails)\r\n .map((key) => {\r\n let value = creditCardDetails[key];\r\n\r\n if (value === \"0\") value = 0;\r\n\r\n if (\r\n !value &&\r\n ![\r\n \"AutoPay\",\r\n \"CustID\",\r\n \"DefaultCard\",\r\n \"ID\",\r\n \"NoLongerUse\",\r\n \"RejectCode\",\r\n \"UserId\",\r\n \"Valid\",\r\n ].includes(key)\r\n ) {\r\n // log(key, value);\r\n return key;\r\n }\r\n })\r\n .filter((item) => item);\r\n setCreditCardDetailsValidation([...iCreditCardDetailsValidation]);\r\n }\r\n\r\n if (iCreditCardDetailsValidation.length === 0) {\r\n setAlertMessage({\r\n message: null,\r\n isShow: false,\r\n type: null,\r\n });\r\n setProcessingStatus(\"Next\");\r\n handleNext();\r\n }\r\n };\r\n const handleValidateMessage = (flag) => {\r\n try {\r\n let CardNumErrMessage = flag != 3 ? CreditCardValidation() : \"\",\r\n CardTypeErrMessage = flag != 3 ? CardTypeValidation() : \"\",\r\n SecCodeMessage = SecurityCodeValidation(),\r\n MonthErrMessage = ValidateMonth(),\r\n iValidationMessage = [];\r\n\r\n if (CardNumErrMessage) iValidationMessage.push(CardNumErrMessage);\r\n if (CardTypeErrMessage) iValidationMessage.push(CardTypeErrMessage);\r\n if (SecCodeMessage) iValidationMessage.push(SecCodeMessage);\r\n if (MonthErrMessage) iValidationMessage.push(MonthErrMessage);\r\n\r\n if (iValidationMessage.length > 0) {\r\n setProcessingStatus(null);\r\n setAlertModalMessage({\r\n messageArray: iValidationMessage,\r\n isShow: true,\r\n headerMessage:\r\n flag == 0\r\n ? \"Please enter the correct value on the following fields.\"\r\n : \"Any edit to a credit card requires the card number to be re-input\",\r\n });\r\n return false;\r\n }\r\n return true;\r\n } catch (ex) {}\r\n };\r\n const handleNext = () => {\r\n let isValid = 1,\r\n iWarningMessage = \"\";\r\n if (\r\n pageConditions[\"hdnFHAProd\"] == 1 &&\r\n pageConditions[\"hdnFhaCase\"] === 1\r\n ) {\r\n setAlertModalMessage({\r\n messageArray: (\r\n <CustomText>\r\n This loan has a case number assigned to it. Would you like to:\r\n </CustomText>\r\n ),\r\n isShow: true,\r\n headerMessage: \"FHA Case number exists\",\r\n footerButton: (\r\n <View>\r\n <View style={{ flexDirection: \"row\", alignSelf: \"flex-end\" }}>\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n setPageCondition({ ...pageConditions, hdnFhaCase: 0 });\r\n handleNextClick();\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: web ? 13 : 10, color: \"#fff\" }}\r\n >\r\n Update The Existing Case #\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n let url = `../../../BorrowerApplication/Presentation/Webforms/LoanAppTabs.aspx?RemHeadFootr=0&LoanId=${loanId}&CustId=${UserId}&SessionId=${SessionId}&PageName=LoanPropertyInfo&HideNav=1`;\r\n if (web) {\r\n handleOpenPageURL(url);\r\n } else if (!web) {\r\n url = url.replace(\"../../../\", REDIRECT_URL);\r\n navigation.navigate(\"Pdf\", {\r\n url,\r\n backTo: \"Home\",\r\n GoToNav: 11,\r\n isNeedBack: true,\r\n });\r\n }\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: web ? 13 : 10, color: \"#fff\" }}\r\n >\r\n Update The Address\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: web ? 13 : 10, color: \"#fff\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n <View\r\n style={{\r\n width: !web ? \"80%\" : 560,\r\n marginTop: 10,\r\n }}\r\n >\r\n <CustomText>\r\n * To get a new case number, you must first go to the loan\r\n application and delete the FHA case number entry.\r\n </CustomText>\r\n </View>\r\n </View>\r\n ),\r\n });\r\n setProcessingStatus(null);\r\n } else {\r\n if (\r\n pageConditions[\"hdnAppProd\"] === 1 &&\r\n creditCardDetails[\"paymentType\"] == 2\r\n ) {\r\n if (\r\n pageConditions[\"IsAppPresent\"] === 1 &&\r\n productDescription.length == 1\r\n ) {\r\n isValid = 1;\r\n } else if (\r\n creditCardDetails[\"paymentType\"] == 2 &&\r\n productDescription.length >= 2\r\n ) {\r\n iWarningMessage =\r\n \"One of the products selected is not available for a credit line option. Please change the payment type, or only process payment for 1 product at a time.\";\r\n isValid = 0;\r\n } else {\r\n iWarningMessage =\r\n \"Appraisal products cannot be ordered using the DMC Credit Line payment method.\";\r\n isValid = 0;\r\n }\r\n setAlertMessage({\r\n message: iWarningMessage,\r\n isShow: true,\r\n type: \"danger\",\r\n });\r\n }\r\n\r\n if (isValid === 1) {\r\n handleProceedNext();\r\n } else {\r\n setProcessingStatus(null);\r\n }\r\n }\r\n };\r\n const handleValidateContinue = () => {\r\n handleAPI({\r\n name: \"AddressValidation_WebserviceCall\", //change\r\n params: { LoanId: loanId, SessionId, CustId: 0, EmpNum: UserId },\r\n })\r\n .then((response) => {\r\n let array = response.split(\"~\")?.map((item) => item.trim()),\r\n [valid, returnText] = array;\r\n handleUSPSCheckAddressValid(valid, returnText, array); //fnUSPSCheckAddressValid(0, 'Address Not Found.', [\"0\",\"Address Not Found.\",\"\",\"\",\"\",\"\"])\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from AddressValidation ====> \", err)\r\n );\r\n };\r\n const handleSaveUspsAddress = (street, state, city, zip, flag) => {\r\n handleAPI({\r\n name: \"Save_UspsAddressdetails\",\r\n params: {\r\n LoanId: loanId,\r\n address: street,\r\n state,\r\n city,\r\n zip,\r\n flag,\r\n SessionId,\r\n },\r\n })\r\n .then((response) => {\r\n setBorrowerPropertyAddress({\r\n Street: street,\r\n ZipCode: zip,\r\n City: city,\r\n State: state,\r\n });\r\n })\r\n .catch((err) => console.error(\"Error from SaveUspsAddress ====> \", err));\r\n };\r\n const handleSavePropertyInfo = () => {\r\n try {\r\n const { Street, ZipCode, City, State } = borrowerPropertyAddress,\r\n Row = `<row FieldId=\"42\" SelectedVal=\"${Street}\"/>\r\n <row FieldId=\"46\" SelectedVal=\"${ZipCode}\"/>\r\n <row FieldId=\"44\" SelectedVal=\"${State}\"/>\r\n <row FieldId=\"43\" SelectedVal=\"${City}\"/>`,\r\n strXmlIn = `<root><PropertyInfo>${Row}</PropertyInfo></root>`;\r\n\r\n handleAPI({\r\n name: \"UpdatePropertyInfo\",\r\n params: { LoanId: loanId, strXmlIn },\r\n })\r\n .then((response) => {})\r\n .catch((err) =>\r\n console.error(\"Error from UpdatePropertyInfo ====> \", err)\r\n );\r\n } catch (e) {\r\n alert(\"fnSavePropertyInfo()\" + e.message);\r\n }\r\n };\r\n\r\n const onMessage = async (event) => {\r\n const { type, base64 } = JSON.parse(event.nativeEvent.data);\r\n if (base64 && type === \"base64\" && !__DEV__) {\r\n shareHtmlContent(base64, (status) => {});\r\n }\r\n };\r\n const setFrameHeight = () => {\r\n const iFrameHeight = document.querySelector(\".frame.card.container\");\r\n if (iFrameHeight || true) {\r\n const styleElement = document.createElement(\"style\");\r\n styleElement.innerHTML = `\r\n #webIframe {min-height: ${\r\n (1024 || iFrameHeight.scrollHeight) + 150\r\n }px !important\r\n }\r\n .frame.card.container{\r\n margin:0 !important;\r\n padding:0 10px !important;\r\n width:100% !important;\r\n }\r\n `;\r\n document.head.appendChild(styleElement);\r\n } else {\r\n setTimeout(() => {\r\n setFrameHeight();\r\n }, 200);\r\n }\r\n };\r\n\r\n const handleUSPSCheckAddressValid = (isValid, returnMessage, details) => {\r\n if (isValid == 1) {\r\n let [valid, street = \"\", zip = \"\", city = \"\", state = \"\"] = details;\r\n handleAPI({\r\n name: \"USPS_AddressValidation\",\r\n params: { LoanId: loanId, EmpNum: UserId },\r\n })\r\n .then((response) => {\r\n response = new XMLParser().parseFromString(response);\r\n let addressArray = response[\"children\"].filter(\r\n (item) => item[\"name\"] === \"address\"\r\n ),\r\n addressObj =\r\n addressArray.length > 0\r\n ? response[\"children\"].filter(\r\n (item) => item[\"name\"] === \"address\"\r\n )[0][\"children\"][0][\"attributes\"]\r\n : {};\r\n let {\r\n Street = \"\",\r\n City = \"\",\r\n Zip = \"\",\r\n State = \"\",\r\n ValidAddress = 0,\r\n } = addressObj;\r\n if (street != Street || city != City || zip != Zip) {\r\n setAlertModalMessage({\r\n messageArray: (\r\n <View\r\n style={{\r\n flexDirection: web ? \"row\" : \"column\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <AccordionItem\r\n title=\"Existing Address:\"\r\n isExpand={true}\r\n isAccordion={false}\r\n style={{ width: web ? \"48%\" : \"100%\" }}\r\n >\r\n <>\r\n <Separator />\r\n <InputBox\r\n disabled={true}\r\n label=\"Property Address\"\r\n placeholder=\"Property Address\"\r\n value={Street}\r\n />\r\n <InputBox\r\n disabled={true}\r\n label=\"Zip Code\"\r\n placeholder=\"Zip Code\"\r\n value={Zip}\r\n keyboardType=\"numeric\"\r\n />\r\n <InputBox\r\n disabled={true}\r\n label=\"City\"\r\n placeholder=\"City\"\r\n value={City}\r\n />\r\n <InputBox\r\n disabled={true}\r\n label=\"State\"\r\n placeholder=\"State\"\r\n value={State}\r\n />\r\n <ModalButton\r\n onPress={(e) => {\r\n handleSaveUspsAddress(street, state, city, zip, 0);\r\n }}\r\n title={\r\n <>\r\n <Icon size={15} name=\"check\" color={\"#fff\"} />\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 13 : 10,\r\n color: \"#fff\",\r\n marginLeft: 5,\r\n }}\r\n >\r\n Use this Address\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </>\r\n </AccordionItem>\r\n <AccordionItem\r\n title=\"Address from Verification Agency:\"\r\n isExpand={true}\r\n isAccordion={false}\r\n style={{ width: web ? \"48%\" : \"100%\" }}\r\n >\r\n <>\r\n <Separator />\r\n <InputBox\r\n disabled={true}\r\n label=\"Property Address\"\r\n placeholder=\"Property Address\"\r\n value={street}\r\n />\r\n <InputBox\r\n disabled={true}\r\n label=\"Zip Code\"\r\n placeholder=\"Zip Code\"\r\n value={zip}\r\n keyboardType=\"numeric\"\r\n />\r\n <InputBox\r\n disabled={true}\r\n label=\"City\"\r\n placeholder=\"City\"\r\n value={city}\r\n />\r\n <InputBox\r\n disabled={true}\r\n label=\"State\"\r\n placeholder=\"State\"\r\n value={state}\r\n />\r\n <ModalButton\r\n onPress={(e) => {\r\n handleSaveUspsAddress(street, state, city, zip, 0);\r\n }}\r\n title={\r\n <>\r\n <Icon size={15} name=\"check\" color={\"#fff\"} />\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 13 : 10,\r\n color: \"#fff\",\r\n marginLeft: 5,\r\n }}\r\n >\r\n Use this Address\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </>\r\n </AccordionItem>\r\n </View>\r\n ),\r\n isShow: true,\r\n headerMessage: \"Address Confirmation\",\r\n footerButton: (\r\n <View>\r\n <View style={{ flexDirection: \"row\", alignSelf: \"flex-end\" }}>\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n }}\r\n title={\r\n <>\r\n <Icon size={15} name={\"close\"} color={\"#fff\"} />\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 13 : 10,\r\n color: \"#fff\",\r\n marginLeft: 5,\r\n }}\r\n >\r\n Don't Validate Now\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n {!web && (\r\n <>\r\n <Separator />\r\n <Separator />\r\n <Separator />\r\n </>\r\n )}\r\n </View>\r\n ),\r\n });\r\n } else if (ValidAddress != 1) {\r\n handleSaveUspsAddress(street, state, city, zip, 0);\r\n }\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from USPS_AddressValidation ====> \", err)\r\n );\r\n } else if (isValid == 0) {\r\n setAlertModalMessage({\r\n messageArray: (\r\n <>\r\n <View style={{ marginLeft: web ? 10 : 1 }}>\r\n <View\r\n style={[\r\n styles.tableRow,\r\n {\r\n backgroundColor: \"#307ecc\",\r\n paddingVertical: 8,\r\n borderBottomWidth: 1,\r\n },\r\n ]}\r\n >\r\n {[\r\n \"Select\",\r\n \"Property Address\",\r\n \"Zip Code\",\r\n \"City\",\r\n \"State\",\r\n ].map((head, index) => {\r\n return (\r\n <CustomText\r\n bold={true}\r\n style={[\r\n styles.cell,\r\n {\r\n color: \"#fff\",\r\n },\r\n index === 0\r\n ? {\r\n maxWidth: web ? 215 : 35,\r\n minWidth: web ? 215 : 35,\r\n }\r\n : {},\r\n ]}\r\n >\r\n {head}\r\n </CustomText>\r\n );\r\n })}\r\n </View>\r\n <View style={[styles.tableRow, { paddingHorizontal: 0 }]}>\r\n {[\r\n <ModalButton\r\n onPress={(e) => {\r\n handleAPI({\r\n name: \"ValidateNewConstructionAddress\",\r\n params: {\r\n LoanId: loanId,\r\n EmpNum: UserId,\r\n SessionId,\r\n },\r\n })\r\n .then((response) => {\r\n setBorrowerPropertyAddress({\r\n Street: street,\r\n ZipCode: zip,\r\n City: city,\r\n State: state,\r\n });\r\n })\r\n .catch((err) =>\r\n console.error(\r\n \"Error from SaveUspsAddress ====> \",\r\n err\r\n )\r\n );\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n }}\r\n style={{ margin: 0, marginRight: 5 }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 11 : 7,\r\n color: \"#fff\",\r\n padding: 5,\r\n }}\r\n >\r\n Use This Address\r\n </CustomText>\r\n </>\r\n }\r\n />,\r\n borrowerPropertyAddress[\"Street\"],\r\n borrowerPropertyAddress[\"ZipCode\"],\r\n borrowerPropertyAddress[\"City\"],\r\n borrowerPropertyAddress[\"State\"],\r\n ].map((cell, index) => {\r\n return (\r\n <CustomText\r\n style={[\r\n styles.cell,\r\n index === 0\r\n ? {\r\n margin: 0,\r\n width: web ? 215 : 35,\r\n }\r\n : {},\r\n ]}\r\n >\r\n {cell}\r\n </CustomText>\r\n );\r\n })}\r\n </View>\r\n </View>\r\n </>\r\n ),\r\n isShow: true,\r\n headerMessage: \"Validate address and continue\",\r\n footerButton: (\r\n <View>\r\n <View style={{ flexDirection: \"row\", alignSelf: \"flex-end\" }}>\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n }}\r\n title={\r\n <>\r\n <Icon size={15} name={\"close\"} color={\"#fff\"} />\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 13 : 10,\r\n color: \"#fff\",\r\n marginLeft: 5,\r\n }}\r\n >\r\n Don't Validate Now\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n </View>\r\n ),\r\n });\r\n }\r\n };\r\n const handleAddressValidation = () => {\r\n setAlertModalMessage({\r\n messageArray: (\r\n <CustomText>\r\n This product requires a property address validation. Would you like to\r\n do that now?\r\n </CustomText>\r\n ),\r\n isShow: true,\r\n headerMessage: \"Validate address and continue\",\r\n footerButton: (\r\n <View>\r\n <View style={{ flexDirection: \"row\", alignSelf: \"flex-end\" }}>\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: web ? 13 : 10, color: \"#fff\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <ModalButton\r\n onPress={(e) => {\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n });\r\n handleValidateContinue();\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: web ? 13 : 10, color: \"#fff\" }}\r\n >\r\n Validate and Continue\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n </View>\r\n ),\r\n });\r\n };\r\n const handleProceedNext = async () => {\r\n let isProceed = true,\r\n strFieldId = \"\",\r\n selectedID = [],\r\n creditReportOrder = 0,\r\n NotCreditReport = 0,\r\n index,\r\n IsAddressValid;\r\n isProceed = handleValidateMessage();\r\n\r\n let CardId = 0;\r\n if (isProceed) {\r\n if (creditCardDetails[\"paymentType\"] == 1) {\r\n CardId = await handleUpdateCardDetails();\r\n }\r\n } else {\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n productDescription.forEach(async (product, index) => {\r\n let { Amount, productcategory, ID } = product;\r\n if (productcategory == 7 && Amount != \"0.00\" && Amount != \"\")\r\n creditReportOrder++;\r\n else NotCreditReport++;\r\n selectedID.push(ID);\r\n\r\n if (ID == \"21\") {\r\n IsAddressValid = await handleValidateAddress(loanId);\r\n if (IsAddressValid == 0) {\r\n handleAlertMessage(\r\n \"The property address must be validated before an FHA Case Number is ordered.\"\r\n );\r\n let url = `../../../BorrowerApplication/Presentation/Webforms/addressValidation.asp?SessionID=${SessionId}&LoanID=${LoanId}`;\r\n if (web) {\r\n handleOpenPageURL(url);\r\n } else if (!web) {\r\n url = url.replace(\"../../../\", REDIRECT_URL);\r\n navigation.navigate(\"Pdf\", {\r\n url,\r\n backTo: \"Home\",\r\n GoToNav: 11,\r\n isNeedBack: true,\r\n });\r\n }\r\n }\r\n }\r\n });\r\n SetSelectedFeeId(selectedID);\r\n if (IsAddressValid == 0) return false;\r\n\r\n if (pageConditions[\"hdnTalxProd\"] === 1) {\r\n handleCheckTalxBorrowers();\r\n return;\r\n }\r\n if (selectedID.length == 0) {\r\n setProcessingStatus(null);\r\n handleAlertMessage(\"No shopping cart product selected.\");\r\n return;\r\n }\r\n\r\n let isAddressReq = await handleGetAddressValidReqProducts(\r\n selectedID.join(\",\"),\r\n loanId\r\n );\r\n if (isAddressReq == 999 && IsAddressValid == 999) {\r\n handleAddressValidation();\r\n } else {\r\n let {\r\n intRequestType,\r\n iPayor,\r\n compnum = 0,\r\n empnum = 0,\r\n CustId = 0,\r\n } = pageConditions;\r\n let intCompNum = 0,\r\n intUserId = UserId || empnum,\r\n intCustId = CustId || 0,\r\n ccPayorID = CardId || 0, // CardId needs to passed in this variable\r\n iRequestType = intRequestType,\r\n intWhoPaid = 0;\r\n\r\n intCompNum = compnum;\r\n\r\n let totalAmount =\r\n (\r\n productTotalAmount?.toString().replace(/[^0-9.-]/g, \"\") || \"\"\r\n ).trim() || 0;\r\n\r\n if (iRequestType == 2) intWhoPaid = intUserId;\r\n else if (iRequestType == 3) intWhoPaid = intCustId;\r\n else intWhoPaid = intUserId;\r\n\r\n let { Proceed, DateExceed, PackageExists, Signed } = pageConditions;\r\n\r\n let blSigned = \"1\" || Signed,\r\n blProceed = Proceed,\r\n blDate = DateExceed,\r\n blPackageExists = PackageExists,\r\n strDetails =\r\n '<request LoanId=\"' +\r\n loanId +\r\n '\" RequestType=\"' +\r\n iRequestType +\r\n '\" Payor=\"1\"></request>',\r\n sType = 3,\r\n checked = sType === 3;\r\n\r\n try {\r\n if (\r\n creditReportOrder != 0 &&\r\n NotCreditReport != 0 &&\r\n blPackageExists == 0\r\n ) {\r\n handleAlertMessage(\r\n \"You can only pay for the Credit Report since an eSign package has to be generated and sent to the borrower(s). .\"\r\n );\r\n\r\n setProcessingStatus(null);\r\n return;\r\n } else if (\r\n creditReportOrder != 0 &&\r\n NotCreditReport != 0 &&\r\n blPackageExists != 0 &&\r\n blSigned == 0 &&\r\n blDate == 0\r\n ) {\r\n if (totalAmount != \"0.00\" && totalAmount != \"\") {\r\n if (PackageExists == 0 && TotalAmount != 0) {\r\n handleAlertMessage(\r\n \"There has been no eSign package generated. To pay for products an eSign package has to be generated and sent to the borrower(s).\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n } else if (Proceed == 1 && Date == 0 && blSigned == 0) {\r\n handleAlertMessage(\r\n \"Payment before Early Disclosures are received by the borrower is not permitted. You can pay only after 3 business days from the date the disclosures were sent to the borrower, or after the borrower signs the disclosures, whichever is sooner.\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n } else if (Proceed == 0 && Date == 0 && blSigned == 0) {\r\n handleAlertMessage(\r\n \"Payment before Early Disclosures are received by the borrower is not permitted. You can pay only after 3 business days from the date the disclosures were sent to the borrower, or after the borrower signs the disclosures, whichever is sooner.\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n }\r\n } else if (creditReportOrder == 0 && blSigned == 0 && blDate == 0) {\r\n if (totalAmount != \"0.00\" && totalAmount != \"\") {\r\n if (blPackageExists == 0 && totalAmount != 0) {\r\n handleAlertMessage(\r\n \"There has been no eSign package generated. To pay for products an eSign package has to be generated and sent to the borrower(s).\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n } else if (Proceed == 1 && Date == 0 && Signed == 0) {\r\n handleAlertMessage(\r\n \"Payment before Early Disclosures are received by the borrower is not permitted. You can pay only after 3 business days from the date the disclosures were sent to the borrower, or after the borrower signs the disclosures, whichever is sooner.\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n } else if (Proceed == 0 && Date == 0 && Signed == 0) {\r\n handleAlertMessage(\r\n \"Payment before Early Disclosures are received by the borrower is not permitted. You can pay only after 3 business days from the date the disclosures were sent to the borrower, or after the borrower signs the disclosures, whichever is sooner.\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n }\r\n } else {\r\n if (\r\n creditReportOrder != 0 &&\r\n NotCreditReport != 0 &&\r\n blPackageExists == 0\r\n ) {\r\n handleAlertMessage(\r\n \"You can only pay for the Credit Report since an eSign package has to be generated and sent to the borrower(s). .\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n } else if (\r\n creditReportOrder != 0 &&\r\n NotCreditReport != 0 &&\r\n blPackageExists != 0 &&\r\n blSigned == 0 &&\r\n blDate == 0\r\n ) {\r\n if (blPackageExists == 0 && TotalAmount != 0) {\r\n handleAlertMessage(\r\n \"There has been no eSign package generated. To pay for products an eSign package has to be generated and sent to the borrower(s).\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n } else if (blProceed == 1 && Date == 0 && blSigned == 0) {\r\n handleAlertMessage(\r\n \"Payment before Early Disclosures are received by the borrower is not permitted. You can pay only after 3 business days from the date the disclosures were sent to the borrower, or after the borrower signs the disclosures, whichever is sooner.\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n } else if (blProceed == 0 && Date == 0 && blSigned == 0) {\r\n handleAlertMessage(\r\n \"Payment before Early Disclosures are received by the borrower is not permitted. You can pay only after 3 business days from the date the disclosures were sent to the borrower, or after the borrower signs the disclosures, whichever is sooner.\"\r\n );\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n } else if (\r\n totalAmount != \".00\" &&\r\n totalAmount != \"0\" &&\r\n totalAmount != \"\" &&\r\n totalAmount != \"0.00\"\r\n ) {\r\n if (blPackageExists == 0 && blDate == 0) {\r\n setAlertMessage({\r\n message:\r\n \"Before loan products can be ordered, Early Disclosures (via eSign) must be delivered to the borrower. Please try again after the eSignatures are completed\",\r\n isShow: true,\r\n type: \"danger\",\r\n });\r\n setProcessingStatus(null);\r\n return;\r\n } else if (blProceed == 1 && blDate == 0 && blSigned == 0) {\r\n if (\r\n totalAmount != \".00\" &&\r\n totalAmount != \"0\" &&\r\n totalAmount != \"\" &&\r\n totalAmount != \"0.00\"\r\n ) {\r\n setAlertMessage({\r\n message:\r\n \"Before loan products can be ordered, Early Disclosures (via eSign) must be delivered to the borrower. Please try again after the eSignatures are completed\",\r\n isShow: true,\r\n type: \"danger\",\r\n });\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n } else if (blProceed == 0 && blDate == 0 && blSigned == 0) {\r\n if (\r\n totalAmount != \".00\" &&\r\n totalAmount != \"0\" &&\r\n totalAmount != \"\" &&\r\n totalAmount != \"0.00\"\r\n ) {\r\n setAlertMessage({\r\n message:\r\n \"Before loan products can be ordered, Early Disclosures (via eSign) must be delivered to the borrower. Please try again after the eSignatures are completed\",\r\n isShow: true,\r\n type: \"danger\",\r\n });\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n } catch (err) {\r\n setAlertMessage({\r\n message: err.message,\r\n isShow: true,\r\n type: \"danger\",\r\n });\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n\r\n const retReinspecDate = pageConditions[\"reinspectiondate\"] || \"\",\r\n {\r\n payeeEmail = pageConditions[\"EmailOutside\"] || \"\",\r\n FirstName,\r\n LastName,\r\n CardEmail,\r\n } = creditCardDetails,\r\n TaskId = \"\",\r\n LinkType = \"OrderAppraisal\",\r\n CIPhone1 = \"\",\r\n CIEmailAddress = CardEmail || pageConditions[\"EmailOutside\"] || \"\"; //get form CMSOS_SP_FETCHBORROWERS_ShoppingCart\r\n const PaymentInfo = `<totalAmount>${totalAmount}</totalAmount><iRequestType>${iRequestType}</iRequestType><intCompNum>${intCompNum}</intCompNum><intUserId>${intUserId}</intUserId><intCustId>${intCustId}</intCustId><ccPayorID>${ccPayorID}</ccPayorID><dblFee>${totalAmount}</dblFee><selectedID>${selectedID}</selectedID><intWhoPaid>${intWhoPaid}</intWhoPaid><payeeEmail>${payeeEmail}</payeeEmail><TaskId>${TaskId}</TaskId><LinkType>${LinkType}</LinkType><FirstName>${FirstName}</FirstName><LastName>${LastName}</LastName><CIPhone1>${CIPhone1}</CIPhone1><CIPhone2>${\"\"}</CIPhone2><Reinspectiondate>${retReinspecDate}</Reinspectiondate><CIEmailAddress>${CIEmailAddress}</CIEmailAddress>`;\r\n\r\n const XMLin = `<root><PaymentInfo>${PaymentInfo}</PaymentInfo></root>`;\r\n // setIsPaid(true);\r\n // setProcessingStatus(null);\r\n // return;\r\n\r\n handleAPI({\r\n name: \"Esgin_ShoppingCartProcessPayment\",\r\n params: { LoanId: loanId, SessionId: SessionId, XMLin: XMLin },\r\n })\r\n .then((response) => {\r\n // response = JSON.parse(response);\r\n\r\n setProcessingStatus(null);\r\n if (response) {\r\n setAlertMessage({\r\n message: response,\r\n isShow: true,\r\n type: \"danger\",\r\n });\r\n setProcessingStatus(null);\r\n return;\r\n }\r\n if (\r\n totalAmount == \".00\" ||\r\n totalAmount == \"0\" ||\r\n totalAmount == \"\" ||\r\n totalAmount == \"0.00\"\r\n ) {\r\n setAlertMessage({\r\n message: \"Thank you. Your order has been placed successfully.\",\r\n isShow: true,\r\n type: \"success\",\r\n });\r\n setProcessingStatus(null);\r\n } else {\r\n if (sType == \"3\") {\r\n setAlertMessage({\r\n message:\r\n \"Thank you. Your credit card payment has been processed.\" +\r\n payeeEmail,\r\n isShow: true,\r\n type: \"success\",\r\n });\r\n setProcessingStatus(null);\r\n } else {\r\n setAlertMessage({\r\n message:\r\n \"Thank you. Your credit card payment has been processed.\" +\r\n payeeEmail,\r\n isShow: true,\r\n type: \"success\",\r\n });\r\n setProcessingStatus(null);\r\n }\r\n }\r\n setIsPaid(true);\r\n // GetEsignCompletedTransaction(0);// No need for borrower - sType is 3\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from CheckAddressValidity ====> \", err)\r\n );\r\n }\r\n };\r\n const handleGetAddressValidReqProducts = async (selectedID, iLoanId) => {\r\n return await handleAPI({\r\n name: \"GetAddressValidReqProducts\",\r\n params: { LoanId: iLoanId || loanId, GroupIds: selectedID },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from CheckAddressValidity ====> \", err)\r\n );\r\n };\r\n // useEffect(() => {\r\n // console.log(\"alertModalMessage\", alertModalMessage);\r\n // }, [alertModalMessage]);\r\n\r\n const handleCheckTalxBorrowers = () => {\r\n handleAPI({\r\n name: \"GetPaymentBorrDet\",\r\n params: { LoanId: loanId },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response)[\"Table\"];\r\n if (response.length > 1) {\r\n response.forEach((item) => (item.isSelected = true));\r\n setBorrowerToPay(response);\r\n let iTotal = (response || []).reduce(\r\n (acc, item) => acc + parseFloat(cleanValue(item.amount)),\r\n 0\r\n );\r\n setBorrowerToPayAmount(iTotal);\r\n setProcessingStatus(null);\r\n } else {\r\n setPageCondition({ ...pageConditions, hdnTalxProd: 0 });\r\n handleAPI({\r\n name: \"UpdateBorrForTalx\",\r\n params: { LoanId: loanId, BorIds: response[0][\"CustId\"] },\r\n })\r\n .then((response) => {\r\n handleProceedNext();\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from UpdateTalxBorrowers ====> \", err)\r\n );\r\n }\r\n })\r\n .catch((err) => console.error(\"Error from GetBorrDet ====> \", err));\r\n };\r\n const handleValidateAddress = async (LoanId) => {\r\n return await handleAPI({\r\n name: \"CheckAddressValidity\",\r\n params: { LoanId: LoanId || loanId },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from CheckAddressValidity ====> \", err)\r\n );\r\n };\r\n\r\n function ValidateCardType(iCardNumber) {\r\n let CardNumber = iCardNumber || creditCardDetails[\"CardNum\"],\r\n returnValue = 0;\r\n\r\n if (String(CardNumber).substring(0, 1) == 3) returnValue = 1;\r\n else if (String(CardNumber).substring(0, 1) == 4) returnValue = 2;\r\n else if (String(CardNumber).substring(0, 1) == 5) returnValue = 3;\r\n else if (String(CardNumber).substring(0, 1) == 6) returnValue = 4;\r\n\r\n return returnValue;\r\n }\r\n const handleUpdateCardDetails = async () => {\r\n const {\r\n FirstName,\r\n LastName,\r\n Address,\r\n City,\r\n State,\r\n CardNum,\r\n ExpMonth,\r\n ExpYear,\r\n ZipCode,\r\n CardSecurityCode,\r\n CardType,\r\n CardEmail,\r\n } = creditCardDetails,\r\n { intRequestType } = pageConditions;\r\n\r\n return await handleAPI({\r\n name: \"UpdateCreditCardDetails\",\r\n params: {\r\n Id: UserId,\r\n FirstName,\r\n LastName,\r\n Address,\r\n City,\r\n State,\r\n Zipcode: ZipCode,\r\n CardNum,\r\n ExpMonth,\r\n ExpYear,\r\n CardSecurityCode,\r\n NoLongerUse: 1,\r\n RequestType: intRequestType,\r\n CustId: UserId,\r\n CardType,\r\n Email: CardEmail,\r\n },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from eSign_Check_PackageSigned ====> \", err)\r\n );\r\n };\r\n const ProductDescription = () => {\r\n return (\r\n <>\r\n {productDescription?.length > 0 ? (\r\n <>\r\n {productDescription.map((productRow, index) => {\r\n return (\r\n <Fragment key={index}>\r\n <View style={styles.productRow}>\r\n <View style={[styles.productCell, { width: `70%` }]}>\r\n <CustomText style={[styles.productTitle]} bold={true}>\r\n Product Description\r\n </CustomText>\r\n <CustomText\r\n style={[styles[\"productName\"]]}\r\n bold={true}\r\n onPress={() =>\r\n Linking.openURL(productRow[\"ProductURL\"])\r\n }\r\n >\r\n {productRow[\"ProductDesc\"]}\r\n </CustomText>\r\n </View>\r\n <View style={[styles.productCell, { width: `30%` }]}>\r\n <CustomText\r\n style={[styles.productTitle, { fontSize: 11 }]}\r\n bold={true}\r\n >\r\n Product Amount\r\n </CustomText>\r\n <CustomText style={[styles[\"productAmount\"]]} bold={true}>\r\n {formatCurrency(productRow[\"TotalAMount\"])}\r\n </CustomText>\r\n </View>\r\n </View>\r\n </Fragment>\r\n );\r\n })}\r\n {productDescription.length > 0 && (\r\n <View style={{ alignItems: \"flex-end\" }}>\r\n <View style={{ flexDirection: \"row\", alignItems: \"flex-end\" }}>\r\n {\r\n <>\r\n <CustomText\r\n style={[\r\n styles.productTitle,\r\n { fontSize: 11, paddingHorizontal: 10 },\r\n ]}\r\n bold={true}\r\n >\r\n Total\r\n </CustomText>\r\n <CustomText style={[styles[\"productAmount\"]]} bold={true}>\r\n {formatCurrency(productTotalAmount)}\r\n </CustomText>\r\n </>\r\n }\r\n </View>\r\n </View>\r\n )}\r\n </>\r\n ) : productDescription?.length == 0 ? (\r\n <>\r\n <CustomText bold={true}>\r\n <FontAwesome\r\n name=\"check\"\r\n size={18}\r\n color=\"green\"\r\n style={{ marginRight: 5 }}\r\n />\r\n There are no products to pay for, or all payments have been\r\n processed.\r\n </CustomText>\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </>\r\n );\r\n };\r\n const BorrowerDetails = () => {\r\n return (\r\n <View>\r\n <Separator />\r\n <View style={{}}>\r\n <CustomText style={[styles.borrowerTitle]} bold={true}>\r\n Property Information\r\n </CustomText>\r\n {Object.keys(borrowerPropertyAddress).length > 0 && (\r\n <>\r\n <CustomText>{borrowerPropertyAddress[\"Street\"]}</CustomText>\r\n <CustomText>{`${borrowerPropertyAddress[\"City\"]},${borrowerPropertyAddress[\"State\"]} ${borrowerPropertyAddress[\"ZipCode\"]}`}</CustomText>\r\n </>\r\n )}\r\n </View>\r\n\r\n <View style={[styles.row, { marginTop: 6 }]}>\r\n <CustomText style={[styles.borrowerTitle]}>\r\n <CustomText bold={true}>Loan ID:</CustomText> {loanId}\r\n </CustomText>\r\n </View>\r\n </View>\r\n );\r\n };\r\n const handleChangeText = (name, value) => {\r\n let valueObj = { [name]: value };\r\n if (name === \"paymentType\")\r\n valueObj = { [name]: value[\"value\"], CardTypeName: value[\"label\"] };\r\n else if (name === \"CardNum\") {\r\n valueObj = {\r\n [name]: value,\r\n CardType: ValidateCardType(value),\r\n };\r\n }\r\n\r\n setCreditCardDetails((prevCreditCardDetails) => {\r\n return { ...prevCreditCardDetails, ...valueObj };\r\n });\r\n };\r\n const ModalButton = ({\r\n onPress,\r\n bold = true,\r\n title,\r\n style = {},\r\n textStyle = {},\r\n }) => (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={onPress}\r\n style={[\r\n styles.buttonContainer,\r\n {\r\n borderRadius: 5,\r\n paddingVertical: 6,\r\n marginLeft: 8,\r\n height: web ? 35 : 30,\r\n },\r\n style,\r\n ]}\r\n >\r\n <CustomText style={{ ...{ color: \"#fff\" }, ...textStyle }} bold={bold}>\r\n {title}\r\n </CustomText>\r\n </TouchableOpacity>\r\n );\r\n //============= Components - End ===============//\r\n return (\r\n <>\r\n <View\r\n onLayout={(event) => {\r\n if (!web) {\r\n let layout = event.nativeEvent.layout;\r\n setTopEdge((prev) => {\r\n return {\r\n ...prev,\r\n contentWrapperY: layout.y,\r\n contentWrapperHeight: layout.height,\r\n };\r\n });\r\n }\r\n }}\r\n pointerEvents={\"auto\"}\r\n style={[\r\n styles.container,\r\n isSmallScreen && web ? { alignItems: \"center\" } : {},\r\n ]}\r\n >\r\n {processingStatus === \"pageLoading\" ? (\r\n <View\r\n style={{\r\n flex: 1,\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n height: web ? 22 : 16,\r\n width: web ? 22 : 16,\r\n }}\r\n >\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={web ? 22 : 16}\r\n color=\"#376596\"\r\n style={{\r\n top: !web ? 4 : 0,\r\n }}\r\n />\r\n </View>\r\n <CustomText bold> Loading...</CustomText>\r\n </View>\r\n ) : (\r\n <ScrollContainer style={{ width: \"100%\" }}>\r\n <View>\r\n {isPaid ? (\r\n <>\r\n {processingStatus === \"showReceipt\" ? (\r\n <>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => setProcessingStatus(null)}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={{ paddingVertical: 10, paddingHorizontal: 10 }}\r\n >\r\n <Icon name=\"angle-left\" size={16} /> Back\r\n </CustomText>\r\n </TouchableOpacity>\r\n <WebPageView\r\n url={`../../../BorrowerApplication/Presentation/Webforms/PaymentReceiptNew.htm?LoanId=${loanId}&OrderId=${\r\n rawJsonCardDetails[\"orderId\"]\r\n }&from=GoDirect&fType=${web ? \"w\" : \"m\"}`}\r\n // onLoad={setFrameHeight}\r\n onMessage={onMessage}\r\n from=\"AppraisalPayment\"\r\n injectedJavaScript={`\r\n (function() {\r\n function sendHeight() {\r\n const height = document.documentElement.scrollHeight || document.body.scrollHeight;\r\n window.ReactNativeWebView.postMessage(JSON.stringify({ type: 'height', height }));\r\n }\r\n setTimeout(sendHeight, 100);\r\n window.addEventListener('resize', sendHeight);\r\n })();\r\n\r\n (function() {\r\n const iDocument = document.documentElement || document.body;\r\n const divWrapper = iDocument.querySelector('.div-wrapper');\r\n\r\n if (divWrapper) {\r\n divWrapper.removeAttribute('onclick');\r\n divWrapper.addEventListener('click', async () => {\r\n try {\r\n imageFrame.style.display=''\r\n const base64Pdf = await document.getElementById('imageFrame').contentWindow.getBase64()\r\n imageFrame.style.display='none'\r\n window.ReactNativeWebView.postMessage(JSON.stringify({ type: 'base64', base64: base64Pdf }));\r\n } catch (error) {\r\n window.ReactNativeWebView.postMessage(JSON.stringify({ type: 'error', error: error.message }));\r\n }\r\n });\r\n }\r\n })();\r\n `}\r\n />\r\n </>\r\n ) : (\r\n <>\r\n <Separator />\r\n <View>\r\n <CustomText\r\n style={{ fontSize: web ? 24 : 20 }}\r\n bold={true}\r\n >{`Thank you. Your payment has been processed. \r\n\r\nA payment for ${formatCurrency(\r\n productTotalAmount\r\n )} will appear from Direct Services LLC on your bank statement.\r\n\r\n`}</CustomText>\r\n\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n width: web ? 170 : 150,\r\n }}\r\n >\r\n <CustomText\r\n onPress={() => {\r\n setProcessingStatus(\"showReceipt\");\r\n return;\r\n if (processingStatus !== \"DownloadReceipt\") {\r\n setProcessingStatus(\"DownloadReceipt\");\r\n handleAPI({\r\n name: \"GetPaymentReceipts\",\r\n params: {\r\n LoanId: loanId,\r\n selectedFeeId: selectedFeeId?.join(\",\"),\r\n },\r\n })\r\n .then((response) => {\r\n try {\r\n let url =\r\n JSON.parse(response)[\"Table\"][0][\r\n \"ImagePath\"\r\n ]; //JSON.parse(response);\r\n\r\n url = url.replace(\r\n \"../../../\",\r\n REDIRECT_URL\r\n );\r\n\r\n if (web) {\r\n window.open(\r\n url,\r\n \"_blank\",\r\n \"width=750,height=780,resizable=1,scrollbars=1\"\r\n );\r\n } else {\r\n navigation.navigate(\"Pdf\", {\r\n url,\r\n backTo: \"Home\",\r\n GoToNav: 11,\r\n isNeedBack: true,\r\n });\r\n }\r\n setProcessingStatus(null);\r\n } catch (e) {\r\n console.error(\r\n \"Error form GetPaymentReceipts ====> \",\r\n e\r\n );\r\n }\r\n })\r\n .catch((err) =>\r\n console.error(\r\n \"Error from GetPaymentReceipts ====> \",\r\n err\r\n )\r\n );\r\n }\r\n }}\r\n style={{\r\n ...{\r\n fontSize: 16,\r\n color: \"#1172c1\",\r\n marginRight: 10,\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n ...(processingStatus == \"DownloadReceipt\"\r\n ? {\r\n opacity: 0.5,\r\n }\r\n : {}),\r\n }}\r\n >\r\n Download Receipt\r\n </CustomText>\r\n {processingStatus === \"DownloadReceipt\" && (\r\n <View\r\n style={{\r\n marginTop: 7,\r\n }}\r\n >\r\n <ArrowSpinner isSpinner={true} size={15} />\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n <Separator />\r\n <Separator />\r\n </>\r\n )}\r\n </>\r\n ) : (\r\n <View style={{ width: \"100%\" }}>\r\n <Title text=\"Pay for Appraisal\" />\r\n <AccordionItem\r\n title=\"Product Description\"\r\n isExpand={true}\r\n isAccordion={false}\r\n >\r\n <ProductDescription />\r\n <BorrowerDetails />\r\n </AccordionItem>\r\n <AccordionItem\r\n title=\"Enter Credit Card Information\"\r\n isExpand={true}\r\n isAccordion={false}\r\n >\r\n <>\r\n {(showWarning || pageConditions[\"Proceed\"] == 0) && (\r\n <View\r\n style={{\r\n backgroundColor: \"#fcf8e3\",\r\n borderWidth: 1,\r\n borderColor: \"#faebcc\",\r\n padding: 10,\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <CustomText style={{ color: \"#8a6d3b\" }}>\r\n You cannot order an appraisal until all borrowers\r\n authorize their intent to proceed by completing\r\n their Initial Disclosure eSign process.\r\n </CustomText>\r\n {/* <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n setShowWarning(false);\r\n }}\r\n >\r\n <Icon\r\n name=\"close\"\r\n size={14}\r\n color=\"#8a6d3b\"\r\n style={{ opacity: 0.5 }}\r\n />\r\n </TouchableOpacity> */}\r\n </View>\r\n )}\r\n <View style={{ height: 20 }}></View>\r\n <Dropdown\r\n isValid={creditCardDetailsValidation.includes(\r\n \"paymentType\"\r\n )}\r\n label={\"Payment Type\"}\r\n options={[\r\n { value: 0, label: \"Select Payment Type\" },\r\n {\r\n value: 1,\r\n label: \"New Visa | Mastercard | Discover | AMEX\",\r\n },\r\n // { value: 2, label: \"DMC Credit Line\" },\r\n ]}\r\n value={creditCardDetails[\"paymentType\"]}\r\n onSelect={(item) => {\r\n handleChangeText(\"paymentType\", item);\r\n }}\r\n isMap={true}\r\n />\r\n {creditCardDetails[\"paymentType\"] == 1 && (\r\n <>\r\n <InputBox\r\n keyboardType=\"numeric\"\r\n validate={creditCardDetailsValidation.includes(\r\n \"CardNum\"\r\n )}\r\n label=\"Card Number\"\r\n placeholder=\"Card Number\"\r\n onChangeText={(text) => {\r\n handleChangeText(\"CardNum\", text);\r\n }}\r\n value={creditCardDetails[\"CardNum\"]}\r\n />\r\n\r\n <InputBox\r\n keyboardType=\"numeric\"\r\n validate={creditCardDetailsValidation.includes(\r\n \"CardSecurityCode\"\r\n )}\r\n label=\"Card Security Code\"\r\n placeholder=\"Card Security Code\"\r\n onChangeText={(text) => {\r\n handleChangeText(\"CardSecurityCode\", text);\r\n }}\r\n value={creditCardDetails[\"CardSecurityCode\"]}\r\n />\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <Dropdown\r\n width=\"48%\"\r\n isValid={creditCardDetailsValidation.includes(\r\n \"ExpMonth\"\r\n )}\r\n label={\"Expiration Month\"}\r\n options={\r\n expirationOption[\"month\"] || [\r\n { value: 0, label: \"--Select--\" },\r\n ]\r\n }\r\n value={creditCardDetails[\"ExpMonth\"]}\r\n onSelect={(item) => {\r\n handleChangeText(\"ExpMonth\", item[\"value\"]);\r\n }}\r\n isMap={true}\r\n />\r\n <Dropdown\r\n width=\"48%\"\r\n isValid={creditCardDetailsValidation.includes(\r\n \"ExpYear\"\r\n )}\r\n label={\"Expiration Year\"}\r\n options={\r\n expirationOption[\"year\"] || [\r\n { value: 0, label: \"--Select--\" },\r\n ]\r\n }\r\n value={creditCardDetails[\"ExpYear\"]}\r\n onSelect={(item) => {\r\n handleChangeText(\"ExpYear\", item[\"value\"]);\r\n }}\r\n isMap={true}\r\n />\r\n </View>\r\n <Dropdown\r\n isValid={creditCardDetailsValidation.includes(\r\n \"CardType\"\r\n )}\r\n label={\"Card Type\"}\r\n options={[\r\n { value: 0, label: \"--Select--\" },\r\n { value: 1, label: \"American Express\" },\r\n { value: 2, label: \"Visa\" },\r\n { value: 3, label: \"MasterCard\" },\r\n { value: 4, label: \"Discover Card\" },\r\n ]}\r\n value={creditCardDetails[\"CardType\"]}\r\n onSelect={(item) => {\r\n handleChangeText(\"CardType\", item[\"value\"]);\r\n }}\r\n isMap={true}\r\n />\r\n <InputBox\r\n validate={creditCardDetailsValidation.includes(\r\n \"FirstName\"\r\n )}\r\n label=\"First Name\"\r\n placeholder=\"First Name\"\r\n onChangeText={(text) => {\r\n handleChangeText(\"FirstName\", text);\r\n }}\r\n value={creditCardDetails[\"FirstName\"]}\r\n />\r\n <InputBox\r\n validate={creditCardDetailsValidation.includes(\r\n \"LastName\"\r\n )}\r\n label=\"Last Name\"\r\n placeholder=\"Last Name\"\r\n onChangeText={(text) => {\r\n handleChangeText(\"LastName\", text);\r\n }}\r\n value={creditCardDetails[\"LastName\"]}\r\n />\r\n\r\n <InputBox\r\n validate={creditCardDetailsValidation.includes(\r\n \"Address\"\r\n )}\r\n label=\"Billing Street Address\"\r\n placeholder=\"Billing Street Address\"\r\n onChangeText={(text) => {\r\n handleChangeText(\"Address\", text);\r\n }}\r\n value={creditCardDetails[\"Address\"]}\r\n />\r\n\r\n <InputBox\r\n keyboardType=\"numeric\"\r\n validate={creditCardDetailsValidation.includes(\r\n \"ZipCode\"\r\n )}\r\n label=\"Zip Code\"\r\n placeholder=\"Zip Code\"\r\n onChangeText={async (text) => {\r\n handleChangeText(\"ZipCode\", text);\r\n }}\r\n onBlur={async () => {\r\n if (creditCardDetails[\"ZipCode\"]) {\r\n let { City, State } =\r\n await handleGetZipCodeDetails(\r\n creditCardDetails[\"ZipCode\"]\r\n );\r\n setCreditCardDetails({\r\n ...creditCardDetails,\r\n ...{ City, State },\r\n });\r\n }\r\n }}\r\n value={creditCardDetails[\"ZipCode\"]\r\n ?.toString()\r\n .trim()}\r\n />\r\n <InputBox\r\n validate={creditCardDetailsValidation.includes(\r\n \"City\"\r\n )}\r\n label=\"City\"\r\n placeholder=\"City\"\r\n onChangeText={(text) => {\r\n handleChangeText(\"City\", text);\r\n }}\r\n value={creditCardDetails[\"City\"]}\r\n />\r\n <Dropdown\r\n isValid={creditCardDetailsValidation.includes(\r\n \"State\"\r\n )}\r\n label={\"State\"}\r\n options={stateOptions}\r\n value={creditCardDetails[\"State\"]}\r\n onSelect={(item) => {\r\n handleChangeText(\"State\", item[\"value\"]);\r\n }}\r\n isMap={true}\r\n />\r\n\r\n <InputBox\r\n validate={creditCardDetailsValidation.includes(\r\n \"CardEmail\"\r\n )}\r\n label=\"Email a Copy of the Receipt to\"\r\n placeholder=\"Email a Copy of the Receipt to\"\r\n onChangeText={(text) => {\r\n handleChangeText(\"CardEmail\", text);\r\n }}\r\n value={creditCardDetails[\"CardEmail\"]}\r\n />\r\n </>\r\n )}\r\n </>\r\n </AccordionItem>\r\n\r\n <View style={{ marginBottom: 25, display: \"none\" }}>\r\n <Button\r\n disabled={\r\n processingStatus === \"Next\" ||\r\n pageConditions[\"Proceed\"] == 0 ||\r\n productDescription?.length == 0 ||\r\n creditCardDetails[\"paymentType\"] === 0\r\n }\r\n onPress={(e) => {\r\n if (\r\n processingStatus !== \"Next\" &&\r\n pageConditions[\"Proceed\"] != 0 &&\r\n productDescription?.length > 0 &&\r\n creditCardDetails[\"paymentType\"] !== 0\r\n ) {\r\n // setProcessingStatus(\"Next\");\r\n handleNextClick();\r\n }\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={[\r\n {\r\n fontSize: 16,\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n flex: 1,\r\n },\r\n web && { textAlign: \"center\" },\r\n ]}\r\n >\r\n Next - Process Payment\r\n </CustomText>\r\n {processingStatus === \"Next\" && (\r\n <>\r\n {\" \"}\r\n <ArrowSpinner color=\"#fff\" />\r\n </>\r\n )}\r\n </>\r\n }\r\n />\r\n <CustomText style={{ fontSize: 12 }}>\r\n A charge will appear from Direct Services, LLC.\r\n </CustomText>\r\n <Separator />\r\n <Separator />\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n\r\n {footerButton}\r\n\r\n <View\r\n // ref={footerContainerRef}\r\n onLayout={(event) => {\r\n if (!web) {\r\n let layout = event.nativeEvent.layout;\r\n setTopEdge((prev) => {\r\n return {\r\n ...prev,\r\n contentY: layout.y,\r\n contentHeight: layout.height,\r\n };\r\n });\r\n }\r\n }}\r\n style={{\r\n height: 50,\r\n }}\r\n ></View>\r\n </ScrollContainer>\r\n )}\r\n </View>\r\n\r\n <>\r\n <Modal\r\n visible={\r\n alertModalMessage[\"messageArray\"] && alertModalMessage[\"isShow\"]\r\n }\r\n transparent\r\n animationType=\"fade\"\r\n >\r\n <ScrollView style={{ flex: 1 }}>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n height: \"100%\",\r\n backgroundColor: \"#5454546e\",\r\n minHeight: Dimensions.get(\"window\").height - 30,\r\n }}\r\n onPress={\r\n () => {}\r\n // setAlertModalMessage({\r\n // messageArray: null,\r\n // isShow: false,\r\n // headerMessage: null,\r\n // })\r\n }\r\n >\r\n <ScrollView>\r\n <View\r\n style={[\r\n {\r\n width: !web ? \"90%\" : 600,\r\n borderColor: \"#d3dadf\",\r\n borderWidth: 0,\r\n borderRadius: 5,\r\n boxShadow: \"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)\",\r\n alignSelf: \"center\",\r\n\r\n top: web ? \"30%\" : \"5%\",\r\n // left: web ? \"40%\" : 0,\r\n left: 0,\r\n opacity: 1,\r\n margin: 10,\r\n },\r\n ]}\r\n >\r\n <View\r\n style={[styles.modalView, { maxWidth: !web ? 500 : 800 }]}\r\n >\r\n {/* Header */}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n borderBottomColor: \"#999\",\r\n borderBottomWidth: 1,\r\n }}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={[\r\n {\r\n color: \"#595959\",\r\n fontSize: 20,\r\n top: -20,\r\n alignItems: \"flex-start\",\r\n flex: 1,\r\n },\r\n web && {\r\n fontWeight: \"bold\",\r\n position: \"relative\",\r\n },\r\n ]}\r\n >\r\n {alertModalMessage[\"headerMessage\"]}\r\n </CustomText>\r\n <View style={{ top: -20 }}>\r\n <Icon\r\n name=\"close\"\r\n color=\"#888\"\r\n size={20}\r\n onPress={() =>\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n })\r\n }\r\n />\r\n </View>\r\n </View>\r\n {/* Body */}\r\n <View\r\n style={{\r\n paddingVertical: 15,\r\n borderBottomColor: \"#999\",\r\n borderBottomWidth: 1,\r\n }}\r\n >\r\n {alertModalMessage[\"messageArray\"]?.length > 0 ? (\r\n <>\r\n {alertModalMessage[\"messageArray\"]?.map(\r\n (item, index) => {\r\n return (\r\n <Fragment key={index}>\r\n <CustomText\r\n style={{\r\n fontSize: 15,\r\n marginBottom: 5,\r\n }}\r\n >{`${index + 1}. ${item}`}</CustomText>\r\n </Fragment>\r\n );\r\n }\r\n )}\r\n </>\r\n ) : (\r\n alertModalMessage[\"messageArray\"]\r\n )}\r\n </View>\r\n {/* Footer */}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n {alertModalMessage[\"footerButton\"] ? (\r\n alertModalMessage[\"footerButton\"]\r\n ) : (\r\n <ModalButton\r\n title=\"Ok\"\r\n onPress={() =>\r\n setAlertModalMessage({\r\n messageArray: null,\r\n isShow: false,\r\n headerMessage: null,\r\n })\r\n }\r\n />\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n </ScrollView>\r\n </TouchableOpacity>\r\n </ScrollView>\r\n </Modal>\r\n </>\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: [\r\n {\r\n backgroundColor: \"#fff\",\r\n borderRadius: 5,\r\n overflow: \"hidden\",\r\n flex: 1,\r\n margin: 20,\r\n },\r\n web && {\r\n boxShadow: \"3px 7px 10px 4px rgb(0 0 0 / 8%)\",\r\n maxWidth: 420,\r\n minWidth: isMobileWeb ? 363 : 420,\r\n overflow: \"hidden\",\r\n flex: \"none\",\r\n padding: 20,\r\n },\r\n ],\r\n\r\n textSmall: {\r\n // fontSize: 16,\r\n },\r\n productTitle: {\r\n fontSize: 13,\r\n marginBottom: 10,\r\n },\r\n productRow: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n },\r\n productCell: {\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n alignSelf: \"flex-start\",\r\n marginBottom: 25,\r\n },\r\n productName: [\r\n {\r\n color: \"#428bca\",\r\n fontSize: 14,\r\n },\r\n web ? { cursor: \"pointer\" } : {},\r\n ],\r\n productAmount: [\r\n {\r\n fontSize: 12,\r\n paddingHorizontal: 10,\r\n paddingVertical: 8,\r\n backgroundColor: \"#f5f5f5\",\r\n textAlign: \"right\",\r\n },\r\n ],\r\n row: { flexDirection: \"row\", marginBottom: 5 },\r\n\r\n borrowerTitle: {\r\n minWidth: 150,\r\n // textAlign: \"right\",\r\n // marginRight: 10,\r\n },\r\n modalView: {\r\n // margin: 20,\r\n width: \"100%\",\r\n backgroundColor: \"white\",\r\n borderRadius: 5,\r\n paddingVertical: 35,\r\n paddingHorizontal: 20,\r\n // alignItems: \"center\",\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2,\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 5,\r\n top: \"50%\",\r\n },\r\n buttonContainer: {\r\n backgroundColor: \"#295b9a\",\r\n borderRadius: 25,\r\n height: 45,\r\n paddingVertical: web ? 10 : 5,\r\n paddingHorizontal: web ? 10 : 5,\r\n marginTop: 20,\r\n paddingTop: web ? \"5px\" : null,\r\n alignSelf: \"flex-start\",\r\n justifyContent: \"center\",\r\n // marginLeft: 15,\r\n },\r\n tableRow: {\r\n flexDirection: \"row\",\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n alignItems: \"center\",\r\n },\r\n cell: {\r\n fontSize: web ? 13 : 12,\r\n maxWidth: web ? 150 : 100,\r\n minWidth: web ? 150 : 50,\r\n color: \"#595959\",\r\n lineHeight: 15,\r\n marginRight: 15,\r\n },\r\n});\r\nexport default AppraisalPayment;\r\n","import React, { useContext, useEffect, useId, useState } from \"react\";\r\nimport {\r\n Dimensions,\r\n StyleSheet,\r\n Text,\r\n TouchableOpacity,\r\n View,\r\n} from \"react-native\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport CustomText from \"./CustomText\";\r\nimport { context } from \"./accessories\";\r\nimport { web } from \"./Platform\";\r\n\r\nconst isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n\r\nconst Footer = (props) => {\r\n const { contextDetails, setContextDetails } = useContext(context),\r\n { iLoanId, firstActiveLoan, SessionId: iSessionId } = contextDetails,\r\n {\r\n navigate,\r\n From,\r\n iLoanId: loanId,\r\n UserId,\r\n userName,\r\n SessionId,\r\n setFloatPage = () => {},\r\n preventNavigation = false,\r\n handleClearState = () => {},\r\n } = props,\r\n [footerArray, setFooterArray] = useState([]);\r\n\r\n useEffect(() => {\r\n const iFooterArray = [\r\n {\r\n name: \"Home\",\r\n iconName: \"home\",\r\n iconSize: 25,\r\n navigateTo: \"DashBoard\",\r\n navigateParams: {\r\n flag: \"changeActiveIndex\",\r\n },\r\n },\r\n {\r\n name: \"Docs\",\r\n iconName: \"file-text\",\r\n iconSize: 20,\r\n navigateTo: loanId || iLoanId ? \"Home\" : \"DashBoard\",\r\n navigateParams:\r\n {\r\n loanId: loanId || iLoanId,\r\n Path: \"Home\",\r\n GoToNav: 9,\r\n FormId: 34,\r\n } || {},\r\n },\r\n {\r\n name: \"Calculator\",\r\n iconName: \"calculator\",\r\n iconSize: 20,\r\n navigateTo: \"CalculatorMenu\",\r\n navigateParams: {\r\n From,\r\n LoanId:\r\n From == \"Home\"\r\n ? contextDetails[\"loanId\"] || 0\r\n : contextDetails[\"iLoanId\"] || 0,\r\n UserId,\r\n },\r\n },\r\n {\r\n name: \"Share\",\r\n iconName: \"share\",\r\n iconSize: 20,\r\n navigateTo: \"ShareApp\",\r\n navigateParams: { From, userName },\r\n },\r\n {\r\n name: \"Contacts\",\r\n iconName: \"address-book\",\r\n iconSize: 20,\r\n navigateTo:\r\n (From == \"Home\" && contextDetails[\"loanId\"]) ||\r\n (From != \"Home\" && contextDetails[\"iLoanId\"])\r\n ? \"LoanContacts\"\r\n : \"DashBoard\",\r\n navigateParams: {\r\n From,\r\n LoanId:\r\n From == \"Home\"\r\n ? contextDetails[\"loanId\"] || 0\r\n : contextDetails[\"iLoanId\"] || 0,\r\n UserId,\r\n SessionId: SessionId || iSessionId,\r\n },\r\n },\r\n ];\r\n\r\n setFooterArray(iFooterArray);\r\n }, [props, contextDetails]);\r\n\r\n const handleNavigate = (path, option) => {\r\n let { loanId } = option;\r\n loanId && setContextDetails({ ...contextDetails, loanId });\r\n if (web && [\"ShareApp\", \"LoanContacts\", \"CalculatorMenu\"].includes(path)) {\r\n setFloatPage({ ...{ path, option } });\r\n } else {\r\n path == \"DashBoard\" && handleClearState();\r\n navigate(path, option);\r\n }\r\n };\r\n return (\r\n <View style={styles.footer}>\r\n {footerArray.map((navBar, index) => {\r\n return (\r\n <TouchableOpacity\r\n key={index}\r\n style={[styles.IconContainer, index === 0 ? { marginTop: -5 } : {}]}\r\n onPress={() => {\r\n if (!(preventNavigation && [\"Docs\"].includes(navBar[\"name\"])))\r\n handleNavigate(navBar[\"navigateTo\"], navBar[\"navigateParams\"]);\r\n }}\r\n >\r\n <Icon\r\n name={navBar[\"iconName\"]}\r\n size={navBar[\"iconSize\"]}\r\n color=\"#999999\"\r\n style={styles.footerIcon}\r\n />\r\n <CustomText style={[styles.footerText]}>\r\n {navBar[\"name\"]}\r\n </CustomText>\r\n </TouchableOpacity>\r\n );\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n footer: {\r\n ...{\r\n height: 50,\r\n backgroundColor: \"#f0f0f0\",\r\n justifyContent: \"space-around\",\r\n borderTopWidth: 1,\r\n borderTopColor: \"#ccc\",\r\n flexDirection: \"row\",\r\n },\r\n ...(web && isMobileWeb\r\n ? { bottom: 0, position: \"fixed\", width: \"100%\" }\r\n : {}),\r\n },\r\n IconContainer: {\r\n justifyContent: \"space-between\",\r\n fontSize: 5,\r\n color: \"#999999\",\r\n alignItems: \"center\",\r\n paddingVertical: 5,\r\n },\r\n footerText: {\r\n fontSize: 12,\r\n justifyContent: \"center\",\r\n },\r\n footerIcon: {\r\n justifyContent: \"center\",\r\n },\r\n});\r\n\r\nexport default Footer;\r\n","import React, { useState, useEffect, memo } from \"react\";\r\nimport { StyleSheet, View, TouchableOpacity, BackHandler } from \"react-native\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport * as Clipboard from \"expo-clipboard\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport EvilIcons from \"react-native-vector-icons/EvilIcons\";\r\nimport {\r\n InputBox,\r\n Option,\r\n Button,\r\n SmallSpinner,\r\n Spinner,\r\n Separator,\r\n} from \"../accessories/accessories\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\nimport {\r\n handleAPI,\r\n FormatPhoneLogin,\r\n updateWebURL,\r\n getQueryString\r\n} from \"../accessories/CommonFunctions.js\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport Footer from \"../accessories/footer\";\r\n\r\nconst ShareApp = (props) => {\r\n const { navigation, route } = props;\r\n \r\n \r\n const [shareOption, setShareOption] = useState({ email: true, text: true });\r\n const [shareDetails, setShareDetails] = useState({\r\n name: \"\",\r\n cellPhone: \"\",\r\n email: \"\",\r\n });\r\n const [statusMessage, setStatusMessage] = useState({\r\n isShow: false,\r\n messageColor: \"green\",\r\n iconName: \"check\",\r\n });\r\n const [showSpinner, setShowSpinner] = useState(false);\r\n const [validateArray, setValidateArray] = useState([]);\r\n\r\n const handleBackAction = () => {\r\n if (web) {\r\n props?.setFloatPage(null);\r\n } else {\r\n navigation.navigate(route?.params?.From || \"DashBoard\");\r\n }\r\n };\r\n const navigate = (path, option) => {\r\n updateWebURL({ ...option, Path: path });\r\n (navigation || props[\"navigation\"]).navigate(path, option || {});\r\n };\r\n\r\n useEffect(() => {\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n handleBackAction\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n\r\n const handleValidateField = () => {\r\n let { email, cellPhone, name } = shareDetails,\r\n { email: Email, text } = shareOption,\r\n iValidatedArray = [];\r\n\r\n if (!name) iValidatedArray.push(\"name\");\r\n\r\n if (Email && !email) iValidatedArray.push(\"email\");\r\n if (text && !cellPhone) iValidatedArray.push(\"cellPhone\");\r\n\r\n setValidateArray(iValidatedArray);\r\n return iValidatedArray.length !== 0;\r\n };\r\n\r\n const handleShareApp = async () => {\r\n if (handleValidateField()) return false;\r\n\r\n let { email, cellPhone, name } = shareDetails;\r\n if ((cellPhone || email) && name != \"\") {\r\n setShowSpinner(true);\r\n\r\n handleAPI({\r\n name: \"SendShareApp\",\r\n params: {\r\n Name: name,\r\n CellPhone: cellPhone,\r\n Email: email,\r\n Sender: route?.params?.userName || \"\" ,\r\n SessionId: route?.SessionId || (web) ? getQueryString(\"SessionId\", \"\") : \"\",\r\n },\r\n })\r\n .then((response) => {\r\n const jsonObject = JSON.parse(response);\r\n const status = jsonObject.Table[0].Column1\r\n ? JSON.parse(jsonObject.Table[0].Column1).Status\r\n : null;\r\n const statusMessage = jsonObject.Table[0].Column1\r\n ? JSON.parse(jsonObject.Table[0].Column1).StatusMessage\r\n : null;\r\n\r\n setStatusMessage({\r\n isShow: true,\r\n messageColor: status === \"Success\" ? \"green\" : \"red\",\r\n statusMessage: `${\r\n status === \"Success\" ? \" Success: \" : \" Error: \"\r\n }${statusMessage}`,\r\n iconName: status === \"Success\" ? \"check\" : \"close\",\r\n });\r\n setShowSpinner(false);\r\n setShareDetails({\r\n name: \"\",\r\n cellPhone: \"\",\r\n email: \"\",\r\n });\r\n setTimeout(() => {\r\n setStatusMessage({\r\n isShow: false,\r\n messageColor: \"green\",\r\n iconName: \"check\",\r\n });\r\n }, 4000);\r\n })\r\n .catch((err) => {\r\n console.error(\"Error Form SendShareApp =====> \", err);\r\n setShowSpinner(false);\r\n });\r\n } else {\r\n setShowSpinner(false);\r\n }\r\n };\r\n\r\n const ShareAppButton = memo(() => {\r\n return (\r\n <>\r\n {(shareOption[\"text\"] || shareOption[\"email\"]) && (\r\n <View\r\n style={[\r\n {\r\n marginTop: 20,\r\n alignItems: \"flex-end\",\r\n },\r\n ]}\r\n >\r\n <Button\r\n disabled={showSpinner}\r\n onPress={(e) => {\r\n handleShareApp();\r\n }}\r\n title={\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"flex-end\",\r\n flex: 1,\r\n width: 105,\r\n }}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 16,\r\n color: \"#fff\",\r\n }}\r\n >\r\n Share App{\" \"}\r\n </CustomText>\r\n {showSpinner ? (\r\n <ArrowSpinner color=\"#fff\" size={15} />\r\n ) : (\r\n <Icon\r\n name=\"arrow-circle-right\"\r\n size={17}\r\n color=\"#fff\"\r\n style={{\r\n justifyContent: \"space-around\",\r\n }}\r\n />\r\n )}\r\n </View>\r\n }\r\n />\r\n </View>\r\n )}\r\n <Separator />\r\n <Separator />\r\n </>\r\n );\r\n }, [showSpinner]);\r\n\r\n const handleShareOptionPress = (name) => {\r\n setShareOption({ ...shareOption, [name]: !shareOption[name] });\r\n };\r\n const handleShareDetails = (name, value) => {\r\n setShareDetails({ ...shareDetails, [name]: value });\r\n };\r\n\r\n return (\r\n <>\r\n <View style={[{ backgroundColor: \"white\", flex: 1 }]}>\r\n <View style={{ position: \"absolute\", zIndex: 1 }}>\r\n <TouchableOpacity activeOpacity={1} onPress={handleBackAction}>\r\n <CustomText\r\n bold={true}\r\n style={[\r\n { paddingVertical: 10, paddingHorizontal: 10 },\r\n web ? { cursor: \"pointer\" } : {},\r\n ]}\r\n >\r\n {web ? (\r\n <>\r\n <Icon size={16} name=\"close\" color=\"red\" /> Close\r\n </>\r\n ) : (\r\n <>\r\n <Icon name=\"angle-left\" size={16} /> Back\r\n </>\r\n )}\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n <View style={{ alignItems: \"center\", marginTop: 5 }}>\r\n <CustomText style={{ fontSize: 22 }} bold={true}>\r\n Share App\r\n </CustomText>\r\n </View>\r\n <View style={{ flex: 1 }}>\r\n <ScrollContainer>\r\n <View style={{ marginHorizontal: 25 }}>\r\n <CustomText\r\n style={{\r\n marginTop: 40,\r\n fontSize: 18,\r\n }}\r\n bold={true}\r\n >\r\n How would you like to share the app?\r\n </CustomText>\r\n\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n paddingVertical: 10,\r\n justifyContent: \"space-between\",\r\n marginTop: 20,\r\n }}\r\n >\r\n <Option\r\n style={{ width: web ? \"40%\" : \"48%\" }}\r\n text=\"Text\"\r\n value={shareOption[\"text\"]}\r\n onPress={() => handleShareOptionPress(\"text\")}\r\n />\r\n <Option\r\n style={{ width: \"48%\" }}\r\n text=\"Email\"\r\n value={shareOption[\"email\"]}\r\n onPress={() => handleShareOptionPress(\"email\")}\r\n />\r\n </View>\r\n {(shareOption[\"text\"] || shareOption[\"email\"]) && (\r\n <InputBox\r\n validate={validateArray.includes(\"name\")}\r\n label=\"Name\"\r\n // autoFocus\r\n placeholder=\"Enter Name\"\r\n value={shareDetails[\"name\"]}\r\n onChangeText={(text) => {\r\n handleShareDetails(\"name\", text);\r\n }}\r\n />\r\n )}\r\n {shareOption[\"text\"] && (\r\n <InputBox\r\n validate={validateArray.includes(\"cellPhone\")}\r\n label=\"Cell Phone\"\r\n placeholder=\"Enter your Cell Phone\"\r\n keyboardType=\"numeric\"\r\n value={shareDetails[\"cellPhone\"]}\r\n onBlur={() => {\r\n let text = shareDetails[\"cellPhone\"] || \"\";\r\n text = text\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n text = FormatPhoneLogin(text);\r\n handleShareDetails(\"cellPhone\", text);\r\n }}\r\n onChangeText={(text) => {\r\n handleShareDetails(\"cellPhone\", text);\r\n }}\r\n />\r\n )}\r\n {shareOption[\"email\"] && (\r\n <InputBox\r\n validate={validateArray.includes(\"email\")}\r\n label=\"Email Address\"\r\n value={shareDetails[\"email\"]}\r\n placeholder=\"Enter your Email Address\"\r\n onChangeText={(text) => {\r\n handleShareDetails(\"email\", text);\r\n }}\r\n />\r\n )}\r\n <View>\r\n <CustomText>\r\n Want to share the app on social media or other places? Use the\r\n link below:\r\n </CustomText>\r\n {/* <Separator /> */}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n borderWidth: 1,\r\n borderColor: \"#999\",\r\n marginTop: 10,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n paddingHorizontal: 10,\r\n paddingVertical: 15,\r\n flex: 3,\r\n backgroundColor: \"rgba(0,0,0,.04)\",\r\n }}\r\n numberOfLines={1}\r\n ellipsizeMode=\"tail\"\r\n >\r\n https://www.directmortgage.com/Login/Presentation/Webforms/DownloadApp.htm\r\n </CustomText>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={async () => {\r\n await Clipboard.setStringAsync(\r\n \"https://www.directmortgage.com/Login/Presentation/Webforms/DownloadApp.htm\"\r\n );\r\n setStatusMessage({\r\n isShow: true,\r\n messageColor: \"green\",\r\n statusMessage: \" Link Copied.\",\r\n iconName: \"check\",\r\n });\r\n setTimeout(() => {\r\n setStatusMessage({\r\n isShow: false,\r\n messageColor: \"green\",\r\n iconName: \"check\",\r\n });\r\n }, 4000);\r\n }}\r\n style={{\r\n width: 120,\r\n borderLeftColor: \"#999\",\r\n borderLeftWidth: 1,\r\n paddingHorizontal: 10,\r\n paddingVertical: 15,\r\n flexDirection: \"row\",\r\n flex: 1.5,\r\n }}\r\n >\r\n <EvilIcons name=\"link\" size={25} />\r\n <CustomText bold={true}>Copy Link</CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n <View\r\n style={{\r\n justifyContent: \"space-around\",\r\n marginTop: 20,\r\n alignItems: \"flex-end\",\r\n }}\r\n >\r\n {statusMessage[\"isShow\"] ? (\r\n <CustomText style={{ color: statusMessage[\"messageColor\"] }}>\r\n <Icon\r\n size={15}\r\n name={statusMessage[\"iconName\"]}\r\n color={statusMessage[\"messageColor\"]}\r\n />\r\n\r\n {statusMessage[\"statusMessage\"] || \"\"}\r\n </CustomText>\r\n ) : (\r\n <CustomText> </CustomText>\r\n )}\r\n </View>\r\n <ShareAppButton />\r\n </View>\r\n </ScrollContainer>\r\n </View>\r\n </View>\r\n {!web && (\r\n <Footer iLoanId={0} navigate={navigate} From=\"DashBoard\" UserId={0} />\r\n )}\r\n </>\r\n );\r\n};\r\n//Style Section\r\nconst styles = StyleSheet.create({\r\n errorMessage: {\r\n color: \"red\",\r\n fontSize: 15,\r\n padding: 10,\r\n },\r\n container: [\r\n {\r\n backgroundColor: \"#fff\",\r\n padding: 20,\r\n marginBottom: 20,\r\n marginLeft: 20,\r\n marginRight: 20,\r\n marginTop: 0,\r\n alignItems: \"center\",\r\n borderRadius: 5,\r\n overflow: \"hidden\",\r\n // justifyContent: \"center\",\r\n boxShadow: \"3px 7px 10px 4px rgb(0 0 0 / 8%)\",\r\n flex: 1,\r\n },\r\n web && { maxWidth: 420, minWidth: 420, overflow: \"hidden\", flex: \"none\" },\r\n ],\r\n});\r\n\r\nexport default ShareApp;\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n AdditionalPage,\r\n Separator,\r\n Spinner,\r\n InputBox,\r\n ModalButton,\r\n PageBottom,\r\n} from \"../accessories/accessories\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport {\r\n BackHandler,\r\n Dimensions,\r\n FlatList,\r\n Linking,\r\n Modal,\r\n ScrollView,\r\n StyleSheet,\r\n TextInput,\r\n TouchableOpacity,\r\n View,\r\n} from \"react-native\";\r\nimport {\r\n FormatPhoneLogin,\r\n getInitials,\r\n handleAPI,\r\n sortByKey,\r\n} from \"../accessories/CommonFunctions\";\r\nimport MaterialIcons from \"react-native-vector-icons/MaterialIcons\";\r\nimport EvilIcons from \"react-native-vector-icons/EvilIcons\";\r\nimport Feather from \"react-native-vector-icons/Feather\";\r\nimport MaterialCommunityIcons from \"react-native-vector-icons/MaterialCommunityIcons\";\r\nimport Entypo from \"react-native-vector-icons/Entypo\";\r\nimport Footer from \"../accessories/footer\";\r\nimport { android, ios, web } from \"../accessories/Platform\";\r\nimport { updateWebURL } from \"../accessories/CommonFunctions\";\r\nimport * as Contacts from \"expo-contacts\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer\";\r\n\r\nconst LoanContacts = (props) => {\r\n const { UserId = 0, LoanId, From, SessionId } = props.route.params;\r\n\r\n const { navigation } = props;\r\n const [searchValue, setSearchValue] = useState(null);\r\n const [activeIndex, setActiveIndex] = useState(null);\r\n\r\n const loanContact = [],\r\n scrollViewRef = useRef(null),\r\n width = web ? 700 : Dimensions.get(\"window\").width - 30;\r\n\r\n const [TabDetails, setTabDetails] = useState([]);\r\n const [ContactData, setContactData] = useState([]);\r\n const [LoanContactDetails, setLoanContactDetails] = useState(null);\r\n const [ProspectDetails, setProspectDetails] = useState([]);\r\n const [PhoneContacts, setPhoneContacts] = useState([]);\r\n const [LeadDetails, setLeadDetails] = useState([]);\r\n const [PageView, setPageView] = useState([]);\r\n const [AllLoanContactDetails, setAllLoanContactDetails] =\r\n useState(loanContact);\r\n const isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n const [newContactDetails, setNewContactDetails] = useState({\r\n firstName: \"\",\r\n lastName: \"\",\r\n cell: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n });\r\n\r\n const handleContactDetails = (name, value) => {\r\n setNewContactDetails({ ...newContactDetails, [name]: value });\r\n };\r\n const groupByKey = (input, key) => {\r\n let data = input.reduce((acc, currentValue) => {\r\n let groupKey = currentValue[key];\r\n if (!acc[groupKey]) {\r\n acc[groupKey] = [];\r\n }\r\n acc[groupKey].push(currentValue);\r\n return acc;\r\n }, {});\r\n\r\n return data;\r\n };\r\n\r\n const handleGetContactWithInitial = () => {\r\n const contacts = sortByKey(\r\n LoanContactDetails[TabDetails[activeIndex]?.Name] || [],\r\n \"Name\"\r\n );\r\n if (activeIndex == 0) return contacts;\r\n\r\n const groupedContacts = contacts.reduce((acc, contact) => {\r\n const firstLetter = contact.Name.charAt(0).toUpperCase();\r\n if (!acc[firstLetter]) {\r\n acc[firstLetter] = [];\r\n }\r\n acc[firstLetter].push(contact);\r\n return acc;\r\n }, {});\r\n\r\n return Object.entries(groupedContacts).flatMap(([letter, contacts]) => [\r\n { title: letter, isInitial: true },\r\n ...contacts,\r\n ]);\r\n };\r\n\r\n useEffect(() => {\r\n scrollViewRef?.current?.scrollTo({\r\n animated: true,\r\n x: (web ? 700 : Dimensions.get(\"window\").width - 30) * activeIndex,\r\n y: 0,\r\n });\r\n }, [activeIndex]);\r\n\r\n const AccessPhoneContacts = async () => {\r\n const { status } = await Contacts.requestPermissionsAsync();\r\n if (status === \"granted\") {\r\n const { data } = await Contacts.getContactsAsync();\r\n\r\n let phoneContacts =\r\n (data || [])\r\n .filter(({ name }) => !name.includes(\"null\"))\r\n .map((contact) => {\r\n let phoneNumberList = contact?.phoneNumbers || [],\r\n Cell = \"\",\r\n Phone = \"\",\r\n Name = contact.name,\r\n EmailList = contact?.emails || [],\r\n Email = \"\";\r\n if (EmailList.length) {\r\n EmailList = EmailList.map((emails) => emails.email).map(\r\n (email) => email\r\n );\r\n if (EmailList.length) Email = EmailList[0];\r\n }\r\n phoneNumberList.forEach((phone) => {\r\n if (phone.label === \"mobile\") Cell = phone.number;\r\n if (phone.label === \"home\") Phone = phone.number;\r\n });\r\n\r\n if (Name) {\r\n return {\r\n title: \"Contact\",\r\n TabName: \"Contacts\",\r\n Name,\r\n Phone,\r\n Cell,\r\n Email,\r\n };\r\n }\r\n return null;\r\n })\r\n .filter(Boolean) || [];\r\n\r\n return phoneContacts || [];\r\n }\r\n };\r\n\r\n const [modalContactDetails, setModalContactDetails] = useState({\r\n isShow: false,\r\n });\r\n const [modalAddContact, setModalAddContact] = useState({\r\n isShow: false,\r\n });\r\n\r\n const navigate = (path, option) => {\r\n updateWebURL({ ...option, Path: path });\r\n (navigation || props[\"navigation\"]).navigate(path, option || {});\r\n };\r\n\r\n const AddContactDetails = async () => {\r\n try {\r\n let { firstName, lastName, cell, phone, email } = newContactDetails;\r\n\r\n const contact = {\r\n [Contacts.Fields.FirstName]: firstName,\r\n [Contacts.Fields.LastName]: lastName,\r\n [Contacts.Fields.PhoneNumbers]: [\r\n {\r\n label: \"mobile\",\r\n number: cell,\r\n },\r\n {\r\n label: \"home\",\r\n number: phone,\r\n },\r\n ],\r\n [Contacts.Fields.Emails]: [{ label: \"work\", email: email }],\r\n };\r\n\r\n const { status } = await Contacts.requestPermissionsAsync();\r\n if (status === \"granted\") {\r\n const contactId = await Contacts.addContactAsync(contact);\r\n setTimeout(() => {\r\n handleGetPhoneContact();\r\n setModalAddContact({\r\n isShow: false,\r\n });\r\n }, 500);\r\n }\r\n } catch (error) {\r\n console.error(\"Error form addContactAsync\", error);\r\n }\r\n };\r\n\r\n const handleBackAction = () => {\r\n if (web) {\r\n props?.setFloatPage(null);\r\n } else {\r\n navigation.navigate(From || \"DashBoard\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setLoanContactDetails(AllLoanContactDetails);\r\n }, [AllLoanContactDetails]);\r\n\r\n const handleGetPhoneContact = async () => {\r\n let iPhoneContacts = PhoneContacts || [];\r\n if (iPhoneContacts.length == 0) {\r\n iPhoneContacts = await AccessPhoneContacts();\r\n // setPhoneContacts(iPhoneContacts);\r\n setAllLoanContactDetails((prevContact) => {\r\n return {\r\n ...prevContact,\r\n Contacts: iPhoneContacts,\r\n };\r\n });\r\n\r\n setTabDetails((prevTabDetails) => {\r\n let iTabDetails = prevTabDetails.length ? prevTabDetails : TabDetails;\r\n return iTabDetails.map((item) => {\r\n if (item[\"Name\"] === \"Contacts\")\r\n item[\"count\"] = iPhoneContacts?.length || 0;\r\n return item;\r\n });\r\n });\r\n }\r\n };\r\n useEffect(() => {\r\n handleGetPhoneContact();\r\n handleAPI({\r\n name: \"GetNewLoanAppContacts\",\r\n params: {\r\n SessionId: SessionId,\r\n },\r\n })\r\n .then((contactData) => {\r\n contactData = JSON.parse(contactData).Table;\r\n\r\n setContactData(contactData);\r\n\r\n contactData = groupByKey(contactData, \"TabName\");\r\n\r\n const distinctNames = Object.keys(contactData).map((key) => {\r\n return {\r\n Name: key,\r\n count: contactData[key]?.length || 0,\r\n };\r\n });\r\n\r\n !web &&\r\n distinctNames.push({\r\n Name: \"Contacts\",\r\n count: 0,\r\n });\r\n\r\n setTabDetails((prevTabDetails) => {\r\n return distinctNames.map((item, index) => {\r\n if (item[\"Name\"] === \"Contacts\")\r\n item[\"count\"] = prevTabDetails[index]?.count || 0;\r\n return item;\r\n });\r\n });\r\n // setLoanContactDetails(contactData[\"Loan Contacts\"] || []);\r\n // setProspectDetails(contactData[\"Prospects\"] || []);\r\n // setLeadDetails(contactData[\"Leads\"] || []);\r\n setActiveIndex(0);\r\n setAllLoanContactDetails((prevContact) => {\r\n return {\r\n ...prevContact,\r\n ...contactData,\r\n };\r\n });\r\n })\r\n .catch((error) =>\r\n console.error(\"Error form GetLoanContacts =====> \", error)\r\n );\r\n\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n handleBackAction\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n\r\n const handleSearchContact = (value) => {\r\n const matchingArrays = {};\r\n\r\n for (const key in AllLoanContactDetails) {\r\n const matchedEntries = AllLoanContactDetails[key].filter((entry) =>\r\n Object.values(entry).some((val) =>\r\n val?.toString()?.toLowerCase()?.includes(value?.toLowerCase())\r\n )\r\n );\r\n if (matchedEntries.length > 0) {\r\n matchingArrays[key] = matchedEntries;\r\n }\r\n }\r\n\r\n return Object.keys(matchingArrays).length > 0 ? matchingArrays : null;\r\n };\r\n useEffect(() => {\r\n let filteredData = searchValue?.toString().trim()\r\n ? handleSearchContact(searchValue?.toString().trim())\r\n : AllLoanContactDetails;\r\n setLoanContactDetails(filteredData);\r\n }, [searchValue]);\r\n\r\n const formatPhoneNumber = (Type) => {\r\n handleContactDetails(Type, FormatPhoneLogin(newContactDetails[Type] || \"\"));\r\n };\r\n\r\n const RenderItem = ({ item: contact, index }) => {\r\n let { title, Name, Phone, Cell, Email, isInitial = false } = contact;\r\n\r\n return (\r\n <>\r\n {isInitial && (\r\n <View key={index}>\r\n <CustomText\r\n style={{\r\n paddingHorizontal: 10,\r\n backgroundColor: \"#f5f5f5\",\r\n fontSize: 16,\r\n paddingVertical: 5,\r\n }}\r\n bold={true}\r\n >\r\n {title}\r\n </CustomText>\r\n </View>\r\n )}\r\n {activeIndex == 0 && (\r\n <View key={index}>\r\n <CustomText\r\n style={{\r\n paddingHorizontal: 10,\r\n backgroundColor: \"#f5f5f5\",\r\n fontSize: 16,\r\n paddingVertical: 5,\r\n }}\r\n bold={true}\r\n >\r\n {title}\r\n </CustomText>\r\n </View>\r\n )}\r\n {!isInitial && (\r\n <View style={{ flexDirection: \"row\", paddingVertical: 10 }}>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{ flexDirection: \"row\", flex: 1 }}\r\n onPress={() => {\r\n setModalContactDetails({\r\n ...{\r\n isShow: true,\r\n Title: title,\r\n },\r\n ...{ Name, Phone, Cell: Cell || Phone, Email },\r\n });\r\n }}\r\n >\r\n <View\r\n style={{\r\n borderRadius: 50,\r\n backgroundColor: \"#295b9a\",\r\n marginRight: 10,\r\n minWidth: 40,\r\n maxWidth: 40,\r\n minHeight: 40,\r\n maxHeight: 40,\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <CustomText style={{ color: \"#fff\", alignSelf: \"center\" }}>\r\n {getInitials(Name || \"\")}\r\n </CustomText>\r\n </View>\r\n <View>\r\n <CustomText style={{ fontSize: 17 }}>{Name}</CustomText>\r\n\r\n <CustomText style={{ fontSize: 12 }}>\r\n {FormatPhoneLogin(Phone || Cell || \"\")}\r\n </CustomText>\r\n </View>\r\n <EvilIcons\r\n name=\"chevron-right\"\r\n size={30}\r\n style={{\r\n position: \"absolute\",\r\n alignSelf: \"center\",\r\n right: 10,\r\n }}\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n {/* {index ==\r\n (LoanContactDetails[TabDetails[activeIndex]?.Name] || []).length -\r\n 1 && (\r\n <>\r\n <View style={{ marginTop: 15, marginBottom: 150 }}>\r\n <PageBottom />\r\n </View>\r\n </>\r\n )} */}\r\n </>\r\n );\r\n };\r\n\r\n const handleSliderPage = (event) => {\r\n const { x } = event.nativeEvent.contentOffset,\r\n indexOfNextScreen = Math.round(x / width);\r\n setActiveIndex(indexOfNextScreen);\r\n // setIndex(indexOfNextScreen);\r\n };\r\n\r\n return (\r\n <>\r\n <AdditionalPage\r\n title=\"Contacts\"\r\n handleBack={handleBackAction}\r\n isClose={web}\r\n rightContent={\r\n <View style={{ marginRight: 3 }}>\r\n <MaterialIcons\r\n name=\"person-add-alt-1\"\r\n size={25}\r\n onPress={() => {\r\n setModalAddContact({\r\n ...{\r\n isShow: true,\r\n Title: \"Add Contacts\",\r\n },\r\n });\r\n }}\r\n />\r\n </View>\r\n }\r\n >\r\n <View\r\n style={{\r\n paddingHorizontal: 15,\r\n }}\r\n >\r\n <View\r\n style={{\r\n borderBottomColor: \"black\",\r\n borderBottomWidth: 1,\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <EvilIcons\r\n name=\"search\"\r\n size={25}\r\n color=\"#999\"\r\n style={{ alignSelf: \"center\", marginTop: android ? -5 : 0 }}\r\n />\r\n <TextInput\r\n style={{\r\n padding: 5,\r\n height: 34,\r\n // color: \"#999\",\r\n fontFamily: web\r\n ? `\"Helvetica Neue\",Helvetica,Arial,sans-serif`\r\n : \"Regular\",\r\n flex: 1,\r\n }}\r\n placeholder=\"Search Contacts\"\r\n value={searchValue || \"\"}\r\n onChangeText={(text) => {\r\n setSearchValue(text);\r\n }}\r\n />\r\n {searchValue && (\r\n <FontAwesome\r\n name=\"close\"\r\n size={15}\r\n color=\"red\"\r\n onPress={() => setSearchValue(\"\")}\r\n style={{ alignSelf: \"center\", marginRight: 10 }}\r\n />\r\n )}\r\n </View>\r\n {LoanContactDetails == null ? (\r\n <View style={{ paddingVertical: 20 }}>\r\n <CustomText\r\n style={{ fontSize: 16, marginBottom: 25, alignSelf: \"center\" }}\r\n bold={true}\r\n >\r\n No Contact Found!\r\n </CustomText>\r\n <PageBottom />\r\n </View>\r\n ) : Object.keys(LoanContactDetails || {}).length === 0 ? (\r\n <View style={{ paddingVertical: 20 }}>\r\n <Spinner />\r\n </View>\r\n ) : (\r\n <></>\r\n )}\r\n <View style={{ flexDirection: \"row\", paddingVertical: 15 }}>\r\n <ScrollView horizontal showsHorizontalScrollIndicator={false}>\r\n {LoanContactDetails != null && (\r\n <>\r\n {TabDetails.map((tabDetails, index) => {\r\n let { Name, count } = tabDetails;\r\n count = (LoanContactDetails || {})[Name]?.length || 0;\r\n return (\r\n <TouchableOpacity\r\n key={index}\r\n activeOpacity={0.5}\r\n style={{\r\n paddingHorizontal: 15,\r\n marginHorizontal: 5,\r\n paddingVertical: 10,\r\n borderBottomWidth: 1,\r\n borderBottomColor:\r\n activeIndex === index ? \"#295b9a\" : \"black\",\r\n }}\r\n onPress={() => {\r\n // setSearchValue(\"\");\r\n setActiveIndex(index);\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n color: activeIndex === index ? \"#295b9a\" : \"\",\r\n }}\r\n bold={true}\r\n >\r\n {`${Name} ${count ? `(${count})` : \"\"}`}\r\n </CustomText>\r\n </TouchableOpacity>\r\n );\r\n })}\r\n </>\r\n )}\r\n </ScrollView>\r\n </View>\r\n {Object.keys(LoanContactDetails || {}).length > 0 ? (\r\n <>\r\n {LoanContactDetails[TabDetails[activeIndex]?.Name]?.length > 0 ? (\r\n <ScrollContainer showScrollBar={false}>\r\n <FlatList\r\n showsVerticalScrollIndicator={false}\r\n style={\r\n ios && {\r\n flex: 1,\r\n height: Dimensions.get(\"window\").height - 305,\r\n }\r\n }\r\n data={handleGetContactWithInitial()}\r\n keyExtractor={(item, index) => {\r\n return index.toString();\r\n }}\r\n renderItem={RenderItem}\r\n onEndReachedThreshold={0.1}\r\n ListFooterComponent={\r\n <View style={{ marginTop: 15, marginBottom: 150 }}>\r\n <PageBottom />\r\n </View>\r\n }\r\n />\r\n </ScrollContainer>\r\n ) : searchValue ? (\r\n <View style={{ paddingVertical: 20 }}>\r\n <CustomText\r\n style={{\r\n fontSize: 16,\r\n marginBottom: 25,\r\n alignSelf: \"center\",\r\n }}\r\n bold={true}\r\n >\r\n {`No ${TabDetails[activeIndex]?.Name || \"Contact\"} Found!`}\r\n </CustomText>\r\n <PageBottom />\r\n </View>\r\n ) : (\r\n <View style={{ paddingVertical: 20 }}>\r\n <Spinner />\r\n </View>\r\n )}\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </View>\r\n </AdditionalPage>\r\n <Modal\r\n visible={modalContactDetails[\"isShow\"]}\r\n transparent\r\n animationType=\"slide\"\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={[\r\n {\r\n height: \"100%\",\r\n flex: 1,\r\n backgroundColor: \"#535252a3\",\r\n },\r\n web\r\n ? {\r\n width:\r\n props[\"from\"] == \"DashBoard\"\r\n ? 750\r\n : isMobileWeb\r\n ? \"100%\"\r\n : 422,\r\n left: isMobileWeb\r\n ? 0\r\n : 369 - (props[\"from\"] == \"DashBoard\" ? 15 : 0),\r\n bottom: 0,\r\n position: \"absolute\",\r\n height: \"calc(100% - 86px)\",\r\n }\r\n : {},\r\n ]}\r\n onPress={() => {\r\n setModalContactDetails({ isShow: false });\r\n }}\r\n ></TouchableOpacity>\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n zIndex: 111,\r\n width: \"100%\",\r\n borderColor: \"#d3dadf\",\r\n borderWidth: 2,\r\n borderRadius: 5,\r\n boxShadow: \"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)\",\r\n alignSelf: \"flex-end\",\r\n justifyContent: \"flex-end\",\r\n position: \"absolute\",\r\n bottom: 0,\r\n },\r\n // web ? { width: isMobileWeb ? \"100%\" : 750 } : {},\r\n ]}\r\n >\r\n <View\r\n style={\r\n web\r\n ? {\r\n width:\r\n props[\"from\"] == \"DashBoard\"\r\n ? 750\r\n : isMobileWeb\r\n ? \"100%\"\r\n : 419,\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n left: isMobileWeb\r\n ? 0\r\n : 369 - (props[\"from\"] == \"DashBoard\" ? 15 : 0),\r\n }\r\n : {}\r\n }\r\n >\r\n <TouchableOpacity\r\n style={{ alignItems: \"center\", backgroundColor: \"#f5f5f5\" }}\r\n activeOpacity={1}\r\n onPress={() => {\r\n setModalContactDetails({ isShow: false });\r\n }}\r\n >\r\n <EvilIcons name=\"chevron-down\" size={45} />\r\n </TouchableOpacity>\r\n <View\r\n style={{\r\n paddingHorizontal: 20,\r\n paddingVertical: 10,\r\n borderBottomWidth: 1.5,\r\n borderBottomColor: \"#f5f5f5\",\r\n }}\r\n >\r\n <CustomText style={[{ fontSize: 17, color: \"black\" }]}>\r\n {modalContactDetails[\"Name\"]}\r\n </CustomText>\r\n <CustomText style={[{ fontSize: 13, color: \"#999\" }]}>\r\n {modalContactDetails[\"Title\"]}\r\n </CustomText>\r\n </View>\r\n {/* {TabDetails[activeIndex]?.Name != \"Contacts\" && (\r\n <View style={[styles.modalRow]}>\r\n <MaterialIcons\r\n name=\"person-outline\"\r\n size={25}\r\n color=\"#999999\"\r\n style={styles.modalIcon}\r\n />\r\n <View style={{ flexDirection: \"row\" }}>\r\n <CustomText style={[styles.modalTitle]}>\r\n SERVICER:{\" \"}\r\n </CustomText>\r\n <CustomText style={[styles.modalTitle]}>\r\n {modalContactDetails[\"Name\"]?.toUpperCase()}\r\n </CustomText>\r\n </View>\r\n </View>\r\n )} */}\r\n <View style={styles.modalRow}>\r\n <Feather\r\n name=\"phone\"\r\n size={20}\r\n color=\"#999999\"\r\n style={styles.modalIcon}\r\n />\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{ flex: 1 }}\r\n onPress={() => {\r\n let phoneNumber = modalContactDetails[\"Cell\"]\r\n ?.replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n\r\n phoneNumber = `tel://${phoneNumber}`;\r\n Linking.canOpenURL(phoneNumber)\r\n .then((supported) => {\r\n if (!supported) {\r\n console.log(\"Phone number is not available\");\r\n } else {\r\n return Linking.openURL(phoneNumber);\r\n }\r\n })\r\n .catch((err) => console.log(err));\r\n }}\r\n >\r\n <CustomText style={[styles.modalTitle]}>CALL</CustomText>\r\n {modalContactDetails[\"Cell\"] && (\r\n <CustomText style={[styles.modalContent]}>\r\n {FormatPhoneLogin(modalContactDetails[\"Cell\"] || \"\")}\r\n </CustomText>\r\n )}\r\n </TouchableOpacity>\r\n </View>\r\n <View style={styles.modalRow}>\r\n <MaterialCommunityIcons\r\n name=\"email-outline\"\r\n size={25}\r\n color=\"#999999\"\r\n style={styles.modalIcon}\r\n />\r\n <TouchableOpacity\r\n style={{ flex: 1 }}\r\n activeOpacity={1}\r\n onPress={() => {\r\n let subject = \"\",\r\n body = \"\";\r\n\r\n const emailUrl = `mailto:${\r\n modalContactDetails[\"Email\"]\r\n }?subject=${encodeURIComponent(\r\n subject\r\n )}&body=${encodeURIComponent(body)}`;\r\n modalContactDetails[\"Email\"] && Linking.openURL(emailUrl);\r\n }}\r\n >\r\n <CustomText style={[styles.modalTitle]}>EMAIL</CustomText>\r\n {modalContactDetails[\"Email\"] && (\r\n <CustomText style={[styles.modalContent]}>\r\n {modalContactDetails[\"Email\"]}\r\n </CustomText>\r\n )}\r\n </TouchableOpacity>\r\n </View>\r\n\r\n <View style={styles.modalRow}>\r\n <Entypo\r\n name=\"export\"\r\n size={22}\r\n color=\"#999999\"\r\n style={[styles.modalIcon, { marginTop: -35 }]}\r\n />\r\n <TouchableOpacity\r\n onPress={async () => {\r\n let phoneNumber = modalContactDetails[\"Cell\"]\r\n ?.replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n\r\n phoneNumber = `sms:${phoneNumber}`;\r\n\r\n modalContactDetails[\"Cell\"] &&\r\n Linking.canOpenURL(phoneNumber)\r\n .then((supported) => {\r\n if (!supported) {\r\n console.log(\"Phone number is not available\");\r\n } else {\r\n return Linking.openURL(phoneNumber);\r\n }\r\n })\r\n .catch((err) => console.log(err));\r\n }}\r\n style={{ flexDirection: \"row\" }}\r\n >\r\n <CustomText style={[styles.modalTitle]}>Send a Text</CustomText>\r\n </TouchableOpacity>\r\n <View style={{ height: 60 }}></View>\r\n </View>\r\n </View>\r\n </View>\r\n </Modal>\r\n <Modal\r\n visible={modalAddContact[\"isShow\"]}\r\n transparent\r\n animationType=\"slide\"\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={[\r\n {\r\n height: \"100%\",\r\n flex: 1,\r\n backgroundColor: \"#535252a3\",\r\n },\r\n web\r\n ? {\r\n width:\r\n props[\"from\"] == \"DashBoard\"\r\n ? 750\r\n : isMobileWeb\r\n ? \"100%\"\r\n : 422,\r\n left: isMobileWeb\r\n ? 0\r\n : 369 - (props[\"from\"] == \"DashBoard\" ? 15 : 0),\r\n bottom: 0,\r\n position: \"absolute\",\r\n height: \"calc(100% - 86px)\",\r\n }\r\n : {},\r\n ]}\r\n onPress={() => {\r\n setModalAddContact({ isShow: false });\r\n }}\r\n ></TouchableOpacity>\r\n <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n zIndex: 111,\r\n width: \"100%\",\r\n borderColor: \"#d3dadf\",\r\n borderWidth: 2,\r\n borderRadius: 5,\r\n boxShadow: \"0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)\",\r\n alignSelf: \"flex-end\",\r\n justifyContent: \"flex-end\",\r\n position: \"absolute\",\r\n bottom: 0,\r\n },\r\n web\r\n ? {\r\n width: isMobileWeb\r\n ? \"100%\"\r\n : props[\"from\"] == \"DashBoard\"\r\n ? 750\r\n : 419,\r\n position: \"absolute\",\r\n backgroundColor: \"#fff\",\r\n left: isMobileWeb\r\n ? 0\r\n : 369 - (props[\"from\"] == \"DashBoard\" ? 15 : 0),\r\n }\r\n : {},\r\n ]}\r\n >\r\n <View>\r\n <TouchableOpacity\r\n style={{ alignItems: \"center\", backgroundColor: \"#f5f5f5\" }}\r\n activeOpacity={1}\r\n onPress={() => {\r\n setModalAddContact({ isShow: false });\r\n }}\r\n >\r\n <EvilIcons name=\"chevron-down\" size={45} />\r\n </TouchableOpacity>\r\n <View\r\n style={{\r\n paddingHorizontal: 20,\r\n paddingVertical: 10,\r\n borderBottomWidth: 1.5,\r\n borderBottomColor: \"#f5f5f5\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <CustomText style={{ fontSize: 18 }} bold={true}>\r\n {modalAddContact[\"Title\"]}\r\n </CustomText>\r\n </View>\r\n\r\n <View style={[styles.modalColumn]}>\r\n <View style={{ flexDirection: \"row\", paddingBottom: 1 }}>\r\n <InputBox\r\n label=\"First Name\"\r\n placeholder=\"Enter First Name\"\r\n onChangeText={(text) => {\r\n handleContactDetails(\"firstName\", text);\r\n }}\r\n />\r\n </View>\r\n\r\n <View style={{ flexDirection: \"row\", paddingBottom: 1 }}>\r\n <InputBox\r\n label=\"Last Name\"\r\n placeholder=\"Enter Last Name\"\r\n onChangeText={(text) => {\r\n handleContactDetails(\"lastName\", text);\r\n }}\r\n />\r\n </View>\r\n <View style={{ flexDirection: \"row\" }}>\r\n <InputBox\r\n keyboardType=\"numeric\"\r\n label=\"Cell Phone\"\r\n placeholder=\"Enter Cell Phone\"\r\n value={newContactDetails[\"cell\"]}\r\n onBlur={() => {\r\n formatPhoneNumber(\"cell\");\r\n }}\r\n onChangeText={(text) => {\r\n handleContactDetails(\"cell\", text);\r\n }}\r\n />\r\n </View>\r\n <View style={{ flexDirection: \"row\" }}>\r\n <InputBox\r\n keyboardType=\"numeric\"\r\n label=\"Home Phone\"\r\n placeholder=\"Enter Home Phone\"\r\n value={newContactDetails[\"phone\"]}\r\n onBlur={() => {\r\n formatPhoneNumber(\"phone\");\r\n }}\r\n onChangeText={(text) => {\r\n handleContactDetails(\"phone\", text);\r\n }}\r\n />\r\n </View>\r\n <View style={{ flexDirection: \"row\" }}>\r\n <InputBox\r\n label=\"Email Address\"\r\n placeholder=\"Enter Email Address\"\r\n onChangeText={(text) => {\r\n handleContactDetails(\"email\", text);\r\n }}\r\n />\r\n </View>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignSelf: \"flex-end\",\r\n }}\r\n >\r\n <ModalButton\r\n //disabled={showSpinner}\r\n onPress={(e) => {\r\n AddContactDetails();\r\n }}\r\n title=\"Add Contact\"\r\n />\r\n </View>\r\n <Separator />\r\n </View>\r\n </View>\r\n </View>\r\n </Modal>\r\n {/* <View\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n flexDirection: \"row\",\r\n position: \"absolute\",\r\n bottom: 50,\r\n paddingVertical: 10,\r\n },\r\n web && {\r\n paddingTop: 10,\r\n width: currentPage === pageArray[pageId[\"eSign\"]] ? 880 : 425,\r\n marginLeft: 20,\r\n position: \"fixed\",\r\n borderTopWidth: 2,\r\n borderTopColor: \"#ccc\",\r\n },\r\n ]}\r\n >\r\n {<RenderFooter />}\r\n </View> */}\r\n {!web && (\r\n <Footer\r\n iLoanId={LoanId}\r\n navigate={navigate}\r\n From=\"DashBoard\"\r\n UserId={UserId}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n modalRow: {\r\n paddingHorizontal: 20,\r\n paddingVertical: 13,\r\n borderBottomWidth: 1.5,\r\n borderBottomColor: \"#f5f5f5\",\r\n flexDirection: \"row\",\r\n },\r\n modalColumn: {\r\n paddingHorizontal: 20,\r\n paddingVertical: 13,\r\n borderBottomWidth: 1.5,\r\n borderBottomColor: \"#f5f5f5\",\r\n flexDirection: \"column\",\r\n },\r\n modalTitle: {\r\n color: \"black\",\r\n letterSpacing: 1.5,\r\n fontSize: 15,\r\n marginBottom: 2,\r\n },\r\n modalContent: {\r\n fontSize: 13,\r\n },\r\n modalIcon: {\r\n marginRight: 10,\r\n alignSelf: \"center\",\r\n },\r\n});\r\n\r\nexport default LoanContacts;\r\n","import { useEffect, useState } from \"react\";\r\nimport { Alert, ScrollView, View } from \"react-native\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport { InputBox, ModalButton, Separator } from \"../accessories/accessories\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport { handleAPI } from \"../accessories/CommonFunctions\";\r\nimport XMLParser from \"react-xml-parser\";\r\nimport { web } from \"../accessories/Platform\";\r\n\r\nconst ChangePassword = (props) => {\r\n const { WebLoginId, closeModal } = props;\r\n const [passwordMisMatch, setPasswordMisMatch] = useState(\"\");\r\n const [newPasswordMessage, setNewPasswordMessage] = useState({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n\r\n const [newPassword, setNewPassword] = useState({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n\r\n const [newIsPasswordSecure, setNewIsPasswordSecure] = useState({\r\n password: true,\r\n confirmPassword: true,\r\n });\r\n const [errorMessage, setErrorMessage] = useState({\r\n text: \"\",\r\n color: \"red\",\r\n });\r\n const validatePassword = (key, text) => {\r\n setPasswordMisMatch(\"\");\r\n setNewPassword({ ...newPassword, ...{ [key]: text, key: key } });\r\n };\r\n\r\n useEffect(() => {\r\n let strength = 0,\r\n key = newPassword[\"key\"],\r\n text = newPassword[key];\r\n if (text !== undefined) {\r\n if (text.length > 6) strength += 1;\r\n if (text.match(/([A-Z])/) && text.match(/([0-9])/)) strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)) strength += 1;\r\n let msg = ``;\r\n if (strength < 3) {\r\n msg = `Password does not meet complexity Requirements.`;\r\n } else {\r\n msg = `Password Meets Complexity Requirements`;\r\n }\r\n if (key === \"confirmPassword\" && text !== newPassword[\"password\"]) {\r\n msg = `Password Does Not Match`;\r\n strength = 0;\r\n }\r\n if (\r\n (newPassword[\"password\"] === \"\" && key === \"password\") ||\r\n (newPassword[\"confirmPassword\"] === \"\" && key === \"confirmPassword\")\r\n ) {\r\n msg = \"\";\r\n } else {\r\n msg = (\r\n <View style={{ marginTop: -10, marginBottom: 10 }}>\r\n <FontAwesome\r\n name={strength < 3 ? \"close\" : \"check\"}\r\n size={22}\r\n color={strength < 3 ? \"red\" : \"green\"}\r\n />\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -20,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n {msg}\r\n </CustomText>\r\n </View>\r\n );\r\n }\r\n setNewPasswordMessage({ ...newPasswordMessage, [`${key}Msg`]: msg });\r\n }\r\n }, [newPassword]);\r\n\r\n return (\r\n <ScrollView>\r\n <View\r\n style={[\r\n { marginHorizontal: 10 },\r\n // web\r\n // ? { width: 750, right: 0, position: \"absolute\", height: \"100%\" }\r\n // : {},\r\n ]}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: 15,\r\n color: \"#999\",\r\n marginBottom: 30,\r\n }}\r\n >\r\n <CustomText bold={true} style={{ color: \"#999\" }}>\r\n Password Requirements:\r\n </CustomText>{\" \"}\r\n Minimum length of 6 characters Must contain 1 number, 1 capital\r\n letter, and 1 special character such as: (@!*&).\r\n </CustomText>\r\n <View>\r\n <View>\r\n <InputBox\r\n label=\"Password\"\r\n autoFocus\r\n type=\"default\"\r\n secureTextEntry={newIsPasswordSecure[\"password\"]}\r\n placeholder=\"Please enter your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"password\", text);\r\n }}\r\n value={newPassword[\"password\"]}\r\n border=\"#333\"\r\n />\r\n\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 15,\r\n }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n password: !newIsPasswordSecure[\"password\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"password\"] ? (\r\n <FontAwesome name=\"eye\" color=\"gray\" size={25} />\r\n ) : (\r\n <FontAwesome name=\"eye-slash\" color=\"gray\" size={25} />\r\n )}\r\n </CustomText>\r\n {newPasswordMessage[\"passwordMsg\"] !== \"\" &&\r\n newPassword[\"password\"] !== \"\" && (\r\n <>{newPasswordMessage[\"passwordMsg\"]}</>\r\n )}\r\n </View>\r\n <View>\r\n <InputBox\r\n label=\"Confirm Password\"\r\n type=\"default\"\r\n secureTextEntry={newIsPasswordSecure[\"confirmPassword\"]}\r\n placeholder=\"Confirm your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"confirmPassword\", text);\r\n }}\r\n value={newPassword[\"confirmPassword\"]}\r\n border=\"#333\"\r\n />\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 15,\r\n }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n confirmPassword: !newIsPasswordSecure[\"confirmPassword\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"confirmPassword\"] ? (\r\n <FontAwesome name=\"eye\" color=\"gray\" size={25} />\r\n ) : (\r\n <FontAwesome name=\"eye-slash\" color=\"gray\" size={25} />\r\n )}\r\n </CustomText>\r\n {newPasswordMessage[\"confirmPasswordMsg\"] !== \"\" &&\r\n newPassword[\"confirmPassword\"] !== \"\" && (\r\n <>{newPasswordMessage[\"confirmPasswordMsg\"]}</>\r\n )}\r\n {errorMessage[\"text\"] !== \"\" && (\r\n <CustomText\r\n bold={true}\r\n italic={errorMessage[\"italic\"] === undefined ? true : false}\r\n style={[\r\n styles.errorMessage,\r\n {\r\n color: errorMessage[\"color\"] || \"red\",\r\n marginTop: -5,\r\n marginBottom: 0,\r\n },\r\n ]}\r\n >\r\n {errorMessage[\"text\"]}\r\n </CustomText>\r\n )}\r\n </View>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <ModalButton\r\n onPress={() => {\r\n if (newPassword[\"password\"] === \"\") {\r\n setPasswordMisMatch(\"Please enter the New Password.\");\r\n return false;\r\n }\r\n if (newPassword[\"confirmPassword\"] === \"\") {\r\n setPasswordMisMatch(\"Please enter the Confirm New Password.\");\r\n return false;\r\n }\r\n if (\r\n newPassword[\"confirmPassword\"] !== newPassword[\"password\"]\r\n ) {\r\n setPasswordMisMatch(\r\n \"The new password and confirmed password do not match.\"\r\n );\r\n return false;\r\n }\r\n\r\n let strength = 0,\r\n text = newPassword[\"password\"];\r\n if (text.length > 6) strength += 1;\r\n if (text.match(/([A-Z])/) && text.match(/([0-9])/))\r\n strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)) strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\nMinimum length of 6 characters \r\nMust contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n strength = 0;\r\n text = newPassword[\"confirmPassword\"];\r\n if (text.length > 6) strength += 1;\r\n if (text.match(/([A-Z])/) && text.match(/([0-9])/))\r\n strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)) strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\nMinimum length of 6 characters \r\nMust contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n if (\r\n newPassword[\"password\"] === newPassword[\"confirmPassword\"]\r\n ) {\r\n console.log({\r\n WebLoginId,\r\n Password: newPassword[\"password\"],\r\n });\r\n handleAPI({\r\n name: \"SavePasswordRedirect\",\r\n params: {\r\n WebLoginId,\r\n Password: newPassword[\"password\"],\r\n },\r\n }).then((response) => {\r\n console.log(response);\r\n response =\r\n JSON.parse(response)[\"Table\"][0][\"Column1\"].toString();\r\n response = new XMLParser().parseFromString(response)[\r\n \"children\"\r\n ][0][\"attributes\"];\r\n let msg = response[\"Message\"];\r\n setErrorMessage({ text: \"\" });\r\n if (msg === \"Password updated successfully.\") {\r\n closeModal(msg);\r\n } else setPasswordMisMatch(msg);\r\n });\r\n }\r\n }}\r\n icon={true}\r\n title={`Save`}\r\n style={{ marginBottom: 10, color: \"#fff\" }}\r\n />\r\n </View>\r\n {passwordMisMatch !== \"\" && (\r\n <View\r\n style={{\r\n borderWidth: 1,\r\n borderColor: \"#ebccd1\",\r\n backgroundColor: \"#f2dede\",\r\n borderRadius: 5,\r\n marginBottom: 10,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 15,\r\n padding: 15,\r\n }}\r\n bold={true}\r\n >\r\n {passwordMisMatch}\r\n </CustomText>\r\n </View>\r\n )}\r\n <Separator />\r\n </View>\r\n </View>\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default ChangePassword;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { View, Text, StyleSheet, TouchableOpacity } from \"react-native\";\r\nimport { Switch } from \"react-native-switch\";\r\nimport Ionicons from \"react-native-vector-icons/Ionicons\";\r\nimport { android, web } from \"./Platform\";\r\n\r\nconst Swatch = ({ size = 15, value = true, onChange = () => {} }) => {\r\n const [iValue, setIValue] = useState(value);\r\n useEffect(() => {\r\n setIValue(value);\r\n }, [value]);\r\n return (\r\n <View\r\n style={[\r\n {\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flex: 1,\r\n },\r\n web ? { cursor: \"pointer\" } : {},\r\n ]}\r\n >\r\n <Switch\r\n value={value}\r\n onValueChange={() => {\r\n setIValue(!value);\r\n onChange(!value);\r\n }}\r\n activeText=\"YES\"\r\n inActiveText=\"NO\"\r\n activeTextStyle={{\r\n color: \"white\",\r\n fontWeight: \"bold\",\r\n fontSize: size - 2 || 15,\r\n fontFamily: web\r\n ? '\"Helvetica Neue\", Helvetica, Arial, sans-serif'\r\n : \"OpenSansBold\",\r\n }}\r\n inactiveTextStyle={{\r\n color: \"#777\",\r\n fontWeight: \"bold\",\r\n fontSize: size - 2 || 15,\r\n fontFamily: web\r\n ? '\"Helvetica Neue\", Helvetica, Arial, sans-serif'\r\n : \"OpenSansBold\",\r\n }}\r\n barHeight={size ? size + 10 : 25}\r\n circleSize={size ? size + 15 : 30}\r\n switchLeftPx={5}\r\n switchRightPx={android ? 3 : 5}\r\n circleBorderActiveColor=\"#8AB2C9\"\r\n backgroundActive=\"#8AB2C9\"\r\n backgroundInactive=\"#0000003d\"\r\n circleBorderInActiveColor=\"#797979\"\r\n innerCircleStyle={{\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 3 },\r\n shadowOpacity: 0.5,\r\n shadowRadius: 9,\r\n }}\r\n renderInsideCircle={() => (\r\n <View\r\n style={{\r\n height: size || 15,\r\n transform: [{ rotate: \"270deg\" }],\r\n }}\r\n >\r\n <Ionicons\r\n name=\"menu\"\r\n size={size || 15}\r\n color={iValue ? \"#8AB2C9\" : \"#777\"}\r\n />\r\n </View>\r\n )}\r\n />\r\n </View>\r\n );\r\n};\r\n\r\nexport default Swatch;\r\n","import { Alert, BackHandler, Dimensions, Linking, View } from \"react-native\";\r\nimport {\r\n AdditionalPage,\r\n DrawerView,\r\n InputBox,\r\n ModalButton,\r\n Option,\r\n Separator,\r\n} from \"../accessories/accessories\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { FormatPhoneLogin, handleAPI } from \"../accessories/CommonFunctions\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport { android, ios, web } from \"../accessories/Platform\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport ChangePassword from \"./ChangePassword\";\r\nimport * as LocalAuthentication from \"expo-local-authentication\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport Swatch from \"../accessories/Swatch\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\n\r\nconst Settings = (props) => {\r\n const { From, SessionId, WebLoginId } = props.route.params;\r\n\r\n const { navigation } = props;\r\n const [details, setDetails] = useState({});\r\n const [drawerDetails, setDrawerDetails] = useState({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n const handleBackAction = () => {\r\n navigation.navigate(From || \"DashBoard\");\r\n };\r\n const [statusMessage, setStatusMessage] = useState({\r\n isShow: false,\r\n messageColor: \"green\",\r\n iconName: \"check\",\r\n });\r\n const [isBiometricSupported, setIsBiometricSupported] = useState(false);\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n\r\n const handleSettingsDetails = async () => {\r\n return await handleAPI({\r\n name: \"GetSettingsForWebLoginAccount\",\r\n params: { WebLoginId, BioMetric: \"''\" },\r\n })\r\n .then(async function (response) {\r\n return response;\r\n })\r\n .catch(function (err) {\r\n console.error(`Error from GetSettingsForWebLoginAccount ====> ${err}`);\r\n });\r\n };\r\n const GetDetails = async () => {\r\n let userDetails = await handleSettingsDetails(SessionId),\r\n useFaceId = false,\r\n BioMetricId = JSON.parse(\r\n (await AsyncStorage.getItem(\"visitorId\")) || null\r\n );\r\n userDetails = JSON.parse(userDetails)[\"Table\"];\r\n await AsyncStorage.setItem(\r\n \"bioMetricLoginDetails\",\r\n JSON.stringify(userDetails)\r\n );\r\n userDetails = userDetails[0];\r\n\r\n AsyncStorage.setItem(\"bioMetricLoginDetails\", JSON.stringify(userDetails));\r\n try {\r\n let iBiometricWebLoginId = userDetails[\"BioMetricId\"];\r\n iBiometricWebLoginId =\r\n iBiometricWebLoginId == \"null\" ? \"\" : iBiometricWebLoginId;\r\n useFaceId = userDetails[\"BioMetricId\"] == BioMetricId;\r\n iBiometricWebLoginId ? true : false;\r\n } catch (error) {}\r\n\r\n setDetails({\r\n cellPhone: FormatPhoneLogin(userDetails[\"cellPhone\"]),\r\n emailId: userDetails[\"emailId\"],\r\n WebLoginId: userDetails[\"WebloginId\"],\r\n useFaceId,\r\n });\r\n\r\n !web && setIsBiometricSupported(await isFaceIdAvailable());\r\n };\r\n useEffect(() => {\r\n GetDetails();\r\n }, [props]);\r\n const isFaceIdAvailable = async () => {\r\n const hardwareSupport = await LocalAuthentication.hasHardwareAsync(),\r\n available = await LocalAuthentication.supportedAuthenticationTypesAsync();\r\n\r\n return (\r\n hardwareSupport &&\r\n available.includes(\r\n LocalAuthentication.AuthenticationType[\r\n ios ? \"FACIAL_RECOGNITION\" : \"FINGERPRINT\"\r\n ]\r\n )\r\n );\r\n };\r\n useEffect(() => {\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n handleBackAction\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n\r\n const handleStatusMessage = (message, isSuccess) => {\r\n setStatusMessage({\r\n isShow: true,\r\n messageColor: isSuccess ? \"green\" : \"red\",\r\n statusMessage: message,\r\n iconName: isSuccess ? \"check\" : \"close\",\r\n });\r\n setTimeout(() => {\r\n setStatusMessage({\r\n isShow: false,\r\n messageColor: \"green\",\r\n iconName: \"check\",\r\n });\r\n }, 4000);\r\n };\r\n const handleSaveSettingsDetails = async (flag) => {\r\n let BioMetric = flag\r\n ? JSON.parse(await AsyncStorage.getItem(\"visitorId\"))\r\n : \"\";\r\n\r\n handleAPI({\r\n name: \"SaveFaceIdToWebLoginAccount\",\r\n params: { WebLoginId, BioMetric },\r\n })\r\n .then(async function (response) {\r\n if (flag) {\r\n GetDetails();\r\n handleStatusMessage(\r\n `${ios ? \"Face\" : \"Touch\"} ID has been enabled for login`,\r\n flag\r\n );\r\n } else {\r\n handleStatusMessage(\r\n `${ios ? \"Face\" : \"Touch\"} ID has been disabled for login`,\r\n flag\r\n );\r\n await AsyncStorage.removeItem(\"bioMetricLoginDetails\");\r\n }\r\n setProcessingStatus(null);\r\n })\r\n .catch(function (err) {\r\n console.log(`Error from SaveFaceIdToWebLoginAccount ====> ${err}`);\r\n });\r\n };\r\n\r\n const handleLocalAuthentication = async () => {\r\n try {\r\n const enroll = await LocalAuthentication.isEnrolledAsync();\r\n if (enroll) {\r\n try {\r\n const biometricAuth = await LocalAuthentication.authenticateAsync({\r\n promptMessage: `Confirm your ${ios ? \"Face\" : \"Touch\"} ID`,\r\n disableDeviceFallback: true,\r\n cancelLabel: \"Cancel\",\r\n });\r\n\r\n if (biometricAuth.success) {\r\n setProcessingStatus(\"isSaving\");\r\n handleSetDetails(\"useFaceId\", true);\r\n handleSaveSettingsDetails(true);\r\n } else {\r\n handleSetDetails(\"useFaceId\", false);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n } else {\r\n Alert.alert(\r\n \"Enable Biometrics\",\r\n \"Please enable biometrics on your device for a secure login experience.\",\r\n [\r\n {\r\n text: \"Ok\",\r\n onPress: () => {\r\n if (ios) {\r\n Linking.openURL(\"app-settings:\");\r\n } else if (android) {\r\n Linking.openSettings();\r\n }\r\n },\r\n },\r\n {\r\n text: \"Cancel\",\r\n onPress: () => {},\r\n },\r\n ]\r\n );\r\n }\r\n } catch (error) {\r\n Alert.alert(\"Error form handleLocalAuthentication\", error.message);\r\n }\r\n };\r\n\r\n const handleSetDetails = (name, text) => {\r\n setDetails({ ...details, [name]: text });\r\n };\r\n\r\n return (\r\n <AdditionalPage\r\n title=\"Settings\"\r\n isClose={web}\r\n handleBack={() => {\r\n web ? props.setFloatPage(null) : handleBackAction();\r\n }}\r\n >\r\n <Separator />\r\n <Separator />\r\n <View style={{ paddingHorizontal: 15 }}>\r\n <InputBox\r\n label=\"Cell Phone\"\r\n placeholder=\"Enter your Cell Phone\"\r\n keyboardType=\"numeric\"\r\n onBlur={() => {\r\n let text = details[\"cellPhone\"] || \"\";\r\n text = text\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n text = FormatPhoneLogin(text);\r\n handleSetDetails(\"cellPhone\", text);\r\n }}\r\n onChangeText={(text) => {\r\n handleSetDetails(\"cellPhone\", text);\r\n }}\r\n value={details[\"cellPhone\"]}\r\n />\r\n <InputBox\r\n label=\"Email Address\"\r\n placeholder=\"Enter your Email Address\"\r\n onChangeText={(text) => {\r\n handleSetDetails(\"emailId\", text);\r\n }}\r\n value={details[\"emailId\"]}\r\n />\r\n {isBiometricSupported && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <View>\r\n <CustomText style={{ fontSize: 16 }} bold={true}>\r\n Enable {ios ? \"Face\" : \"Touch\"} ID for Login\r\n </CustomText>\r\n </View>\r\n <View\r\n style={{\r\n position: \"absolute\",\r\n right: 0,\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n {processingStatus == \"isSaving\" && (\r\n <View style={{ width: 20, marginRight: 5 }}>\r\n <ArrowSpinner isSpinner={true} size={15} duration={1100} />\r\n </View>\r\n )}\r\n <Swatch\r\n size={12}\r\n value={details[\"useFaceId\"]}\r\n onChange={async (value) => {\r\n if (value) {\r\n !details[\"useFaceId\"] && handleLocalAuthentication();\r\n } else {\r\n setProcessingStatus(\"isSaving\");\r\n await AsyncStorage.removeItem(\"bioMetricLoginDetails\");\r\n await handleSaveSettingsDetails(false);\r\n handleSetDetails(\"useFaceId\", false);\r\n }\r\n }}\r\n />\r\n </View>\r\n\r\n <Separator />\r\n </View>\r\n )}\r\n <View\r\n style={{\r\n marginTop: 20,\r\n flexDirection: \"row\",\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <ModalButton\r\n onPress={(e) => {\r\n setDrawerDetails({\r\n isShow: true,\r\n body: <></>,\r\n\r\n onClose: () => {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n },\r\n });\r\n }}\r\n title={\r\n <CustomText bold={true} style={{ fontSize: 16, color: \"#fff\" }}>\r\n Change Password\r\n </CustomText>\r\n }\r\n />\r\n\r\n <ModalButton\r\n onPress={(e) => {\r\n handleAPI({\r\n name: \"SaveSettingsInfo\",\r\n params: {\r\n WebLoginId: details[\"WebLoginId\"],\r\n Email: details[\"emailId\"],\r\n CellPhone: details[\"cellPhone\"],\r\n // UseFaceId:details['useFaceId']\r\n },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response)[\"Table\"];\r\n let isUserExist = response[0][\"EmailExists\"];\r\n if (isUserExist == 1) {\r\n setStatusMessage({\r\n isShow: true,\r\n messageColor: \"red\",\r\n statusMessage:\r\n \"Entered email id already associated with another user.\",\r\n iconName: \"close\",\r\n });\r\n } else if (isUserExist == 0) {\r\n handleStatusMessage(\"Details updated successfully.\", true);\r\n } else {\r\n setStatusMessage({\r\n isShow: false,\r\n messageColor: \"\",\r\n statusMessage: \"\",\r\n iconName: \"close\",\r\n });\r\n }\r\n })\r\n .catch((error) => {});\r\n }}\r\n title={\r\n <CustomText bold={true} style={{ fontSize: 16, color: \"#fff\" }}>\r\n Save\r\n </CustomText>\r\n }\r\n />\r\n </View>\r\n <View\r\n style={{\r\n justifyContent: \"space-around\",\r\n marginTop: 20,\r\n alignItems: \"flex-end\",\r\n }}\r\n >\r\n {statusMessage[\"isShow\"] ? (\r\n <CustomText style={{ color: statusMessage[\"messageColor\"] }}>\r\n <Icon\r\n size={15}\r\n name={statusMessage[\"iconName\"]}\r\n color={statusMessage[\"messageColor\"]}\r\n />{\" \"}\r\n {statusMessage[\"statusMessage\"] || \"\"}\r\n </CustomText>\r\n ) : (\r\n <CustomText> </CustomText>\r\n )}\r\n </View>\r\n </View>\r\n <DrawerView\r\n bodyName={android ? \"android\" : \"ChangePassword\"}\r\n isShow={drawerDetails[\"isShow\"]}\r\n From={From || props[\"from\"]}\r\n body={\r\n <View\r\n style={\r\n !web\r\n ? {\r\n maxHeight: Dimensions.get(\"screen\").height / 1.4,\r\n minHeight: Dimensions.get(\"screen\").height / 1.4,\r\n flex: 1,\r\n flexDirection: \"row\",\r\n }\r\n : {}\r\n }\r\n >\r\n <ChangePassword\r\n WebLoginId={details[\"WebLoginId\"]}\r\n closeModal={(statusMessage) => {\r\n handleStatusMessage(statusMessage, true);\r\n\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n }}\r\n />\r\n </View>\r\n }\r\n onClose={drawerDetails[\"onClose\"]}\r\n />\r\n </AdditionalPage>\r\n );\r\n};\r\n\r\nexport default Settings;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { BackHandler, Dimensions, TouchableOpacity, View } from \"react-native\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport ExternalSourceViewer from \"../accessories/ExternalSourceViewer\";\r\nimport Footer from \"../accessories/footer\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\n\r\nconst CalculatorApp = (props) => {\r\n let LoanId = 0;\r\n const { navigation, route, setFloatPage = () => {}, LoanId: pLoanId } = props;\r\n const { params = {} } = route;\r\n const { From, UserId, type, LoanId: iLoanId } = params;\r\n const [processingStatus, setProcessingStatus] = useState(\"pageLoading\");\r\n LoanId = pLoanId || iLoanId;\r\n\r\n const handleBackAction = () => {\r\n navigation?.navigate(From || \"DashBoard\", params);\r\n setFloatPage(\r\n web ? { path: \"CalculatorMenu\", From, options: { From } } : null\r\n );\r\n return true;\r\n };\r\n useEffect(() => {\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n handleBackAction\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n const { width } = Dimensions.get(\"window\"),\r\n isMobileWeb = width <= 480,\r\n url = __DEV__\r\n ? `http://localhost:3000/MortgageCalculator/index.html?type=${type}&loanId=${LoanId}&w=${parseInt(\r\n width\r\n )}&f=m&p=${web ? 0 : 1}`\r\n : `https://www.directmortgage.com/MortgageCalculator/index.html?type=${type}&loanId=${LoanId}&w=${parseInt(\r\n width\r\n )}&f=m&p=${web ? 0 : 1}`;\r\n console.log(url);\r\n\r\n return (\r\n <>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n // style={{ borderBottomWidth: 1, borderColor: \"#d9d9d9\" }}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={{ paddingVertical: 10, paddingHorizontal: 10 }}\r\n onPress={handleBackAction}\r\n >\r\n <FontAwesome name=\"angle-left\" size={16} /> Back\r\n </CustomText>\r\n </TouchableOpacity>\r\n {processingStatus === \"pageLoading\" && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n height: web ? 22 : 16,\r\n width: web ? 22 : 16,\r\n }}\r\n >\r\n <ArrowSpinner size={web ? 22 : 16} color=\"#376596\" isSpinner />\r\n </View>\r\n <CustomText bold>{\" Loading...\"}</CustomText>\r\n </View>\r\n )}\r\n <ExternalSourceViewer\r\n url={url}\r\n onLoad={() => {\r\n setProcessingStatus(\"frameLoaded\");\r\n }}\r\n isNeedBack={false}\r\n />\r\n {(!web || isMobileWeb) && (\r\n <Footer\r\n iLoanId={LoanId}\r\n navigate={navigation?.navigate}\r\n From={From}\r\n UserId={UserId}\r\n setFloatPage={setFloatPage}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default CalculatorApp;\r\n","import {\r\n Dimensions,\r\n Modal,\r\n StyleSheet,\r\n TouchableOpacity,\r\n View,\r\n} from \"react-native\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { web } from \"./Platform\";\r\nimport CustomText from \"./CustomText\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport { Separator } from \"./accessories\";\r\nimport { generateBoxShadowStyle } from \"./CommonFunctions\";\r\nimport Footer from \"./footer\";\r\n\r\nconst options = [\r\n { Name: \"Compare an Adjustable Rate with a Fixed Rate\", type: \"aF\" },\r\n { Name: \"Blended Rate Analysis\", type: \"bR\" },\r\n { Name: \"Buy vs Rent\", type: \"rB\" },\r\n { Name: \"Affordability\", type: \"aFF\" },\r\n { Name: \"Appreciation\", type: \"aA\" },\r\n { Name: \"Bid Over Asking Price\", type: \"bOA\" },\r\n { Name: \"Payment Calculator\", type: \"hP\" },\r\n];\r\n\r\nconst CalculatorMenu = ({\r\n menuNode: MenuNode,\r\n onPress,\r\n navigation,\r\n route,\r\n setFloatPage,\r\n}) => {\r\n const { From, LoanId, UserId, type } = route?.params || {};\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [navPosition, setNavPosition] = useState({\r\n top: 0,\r\n left: 0,\r\n opacity: 0,\r\n bottom: 0,\r\n });\r\n const isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n const rightNavRef = useRef();\r\n const handleRightNavOpen = () => {\r\n rightNavRef.current.measure((_fx, _fy, _w, h, _px, py) => {\r\n setNavPosition({\r\n ...{\r\n bottom: 90 || py + (web ? 73 : 50),\r\n\r\n opacity: 1,\r\n },\r\n ...(web ? { left: _px - 100 } : {}),\r\n });\r\n });\r\n };\r\n useEffect(() => {\r\n rightNavRef?.current?.setNativeProps({\r\n tabIndex: -1,\r\n });\r\n }, [rightNavRef.current]);\r\n\r\n const handleBackAction = () => {\r\n if (web) setFloatPage(null);\r\n else\r\n navigation?.navigate(\r\n route?.params?.From || From || \"DashBoard\",\r\n route?.params\r\n );\r\n return true;\r\n };\r\n\r\n return (\r\n <>\r\n <View style={{ backgroundColor: \"#fff\", flex: 1 }}>\r\n <TouchableOpacity activeOpacity={1} onPress={handleBackAction}>\r\n <CustomText\r\n bold={true}\r\n style={{ paddingVertical: 10, paddingHorizontal: 10 }}\r\n >\r\n {!web ? (\r\n <>\r\n <Icon name=\"angle-left\" size={16} /> Back\r\n </>\r\n ) : (\r\n <>\r\n <Icon size={16} name=\"close\" color=\"red\" /> Close\r\n </>\r\n )}\r\n </CustomText>\r\n </TouchableOpacity>\r\n\r\n <View style={{ marginHorizontal: 15 }}>\r\n <CustomText bold={true} style={{ fontSize: 25, marginVertical: 5 }}>\r\n Calculators\r\n </CustomText>\r\n <CustomText style={{ fontSize: 18 }}>\r\n Here are some helpful calculators.\r\n </CustomText>\r\n\r\n <Separator />\r\n <View style={{ marginBottom: 35 }}>\r\n {options.map((item, index) => {\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={0.5}\r\n onPress={() => {\r\n if (web) {\r\n setFloatPage({\r\n path: \"Calculator\",\r\n option: {\r\n From: \"CalculatorMenu\",\r\n type: item[\"type\"],\r\n LoanId,\r\n style: {\r\n minHeight: \"75vh\",\r\n },\r\n },\r\n });\r\n } else {\r\n navigation.navigate(\"Calculator\", {\r\n From: \"CalculatorMenu\",\r\n type: item[\"type\"],\r\n LoanId,\r\n style: {\r\n width: \"60%\",\r\n minWidth: item[\"type\"] === \"bR\" ? 900 : 860,\r\n },\r\n });\r\n }\r\n }}\r\n key={index}\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n marginBottom: 20,\r\n borderRadius: 5,\r\n minHeight: 50,\r\n paddingHorizontal: 10,\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.5,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n !web ? { flexDirection: \"row\", alignItems: \"center\" } : {},\r\n generateBoxShadowStyle(2, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n <CustomText style={[styles.calcName]}>\r\n {item[\"Name\"]}\r\n </CustomText>\r\n </TouchableOpacity>\r\n );\r\n })}\r\n </View>\r\n </View>\r\n </View>\r\n {(!web || isMobileWeb) && (\r\n <Footer\r\n iLoanId={LoanId}\r\n navigate={navigation?.navigate}\r\n From={From}\r\n UserId={UserId}\r\n setFloatPage={setFloatPage}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default CalculatorMenu;\r\n\r\nconst styles = StyleSheet.create({\r\n calcName: {\r\n fontSize: 16,\r\n marginBottom: 5,\r\n },\r\n});\r\n","import { Fragment, useState } from \"react\";\r\nimport Dropdown from \"../../accessories/DropDown\";\r\nimport {\r\n IconButton,\r\n InputBox,\r\n Option,\r\n Title,\r\n} from \"../../accessories/accessories\";\r\nimport { Dimensions, ScrollView, View } from \"react-native\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport {\r\n FormatPhoneLogin,\r\n handleAPI,\r\n handleGetZipCodeDetails,\r\n} from \"../../accessories/CommonFunctions\";\r\nimport { web } from \"../../accessories/Platform\";\r\nimport ScrollContainer from \"../../accessories/ScrollContainer\";\r\n\r\nconst OtherLoanVendor = ({\r\n stateOptions,\r\n drawerDetails,\r\n onClose,\r\n loanId,\r\n bankIndex,\r\n handlePostVendorAdd,\r\n SessionId: SessionID,\r\n}) => {\r\n const [vendorType, setVendorType] = useState(null);\r\n\r\n //type ==> 1 - text, 2 - CellPhone, 3 - DropDown, 4 - Zip\r\n const [otherLoanVendorDetails, setOtherLoanVendorDetails] = useState({\r\n 1: [\r\n { name: \"AgentID\", value: 0 },\r\n { name: \"ContactSourceType\", value: \"S\" },\r\n { name: \"ContactType\", value: 0 },\r\n { name: \"ContactTypename\", value: \"Seller\" },\r\n { name: \"IsModified\", value: 1 },\r\n { name: \"IsNew\", value: 0 },\r\n { name: \"Loanid\", value: loanId },\r\n { name: \"VendorId\", value: 0 },\r\n { name: \"isCard\", value: 1 },\r\n { name: \"tempAgentID\", value: 0 },\r\n\r\n {\r\n name: \"FirstName\",\r\n label: \"First Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"LastName\",\r\n label: \"Last Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"Companyname\",\r\n label: \"Entity Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"Phone\",\r\n label: \"Cell Phone\",\r\n type: 2,\r\n value: \"\",\r\n },\r\n {\r\n name: \"AgentEmail\",\r\n label: \"Email\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyStreetAddr\",\r\n label: \"Seller Street Address\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyZip\",\r\n label: \"Zip Code\",\r\n type: 4,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyCity\",\r\n label: \"City\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyState\",\r\n label: \"State\",\r\n type: 3,\r\n value: \"\",\r\n },\r\n ],\r\n 2: [\r\n { name: \"ContactType\", value: 4 },\r\n { name: \"ContactTypename\", value: \"Escrow (for borrower)\" },\r\n { name: \"IsModified\", value: 1 },\r\n { name: \"IsNew\", value: 1 },\r\n { name: \"Loanid\", value: loanId },\r\n { name: \"iNoRealtorReprestation\", value: 0 },\r\n { name: \"isCard\", value: 1 },\r\n {\r\n name: \"Companyname\",\r\n label: \"Company Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"FirstName\",\r\n // label: \"Agent First Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"LastName\",\r\n // label: \"Agent Last Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"Phone\",\r\n // label: \"Agent Cell Phone\",\r\n type: 2,\r\n value: \"\",\r\n },\r\n {\r\n name: \"AgentEmail\",\r\n // label: \"Agent Email\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"AgentLicense\",\r\n // label: \"Agent License Number\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyStreetAddr\",\r\n label: \"Company Street Address\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyZip\",\r\n label: \"Company Zip Code\",\r\n type: 4,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyCity\",\r\n label: \"Company City\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyState\",\r\n label: \"Company State\",\r\n type: 3,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompPhone\",\r\n label: \"Company Phone\",\r\n type: 2,\r\n value: \"\",\r\n },\r\n\r\n {\r\n name: \"CompanyLicense\",\r\n // label: \"Company License Number\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"FileNumber\",\r\n // label: \"File Number\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n ],\r\n 3: [\r\n { name: \"ContactType\", value: 50 },\r\n { name: \"Loanid\", value: loanId },\r\n { name: \"IsModified\", value: 1 },\r\n { name: \"IsNew\", value: 1 },\r\n { name: \"iNoRealtorReprestation\", value: 0 },\r\n { name: \"isCard\", value: 1 },\r\n { name: \"ContactTypename\", value: \"Realtor (for borrower)\" },\r\n\r\n {\r\n name: \"Companyname\",\r\n label: \"Company Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"FirstName\",\r\n // label: \"Agent First Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"LastName\",\r\n // label: \"Agent Last Name\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"Phone\",\r\n // label: \"Agent Cell Phone\",\r\n type: 2,\r\n value: \"\",\r\n },\r\n {\r\n name: \"AgentEmail\",\r\n // label: \"Agent Email\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"AgentLicense\",\r\n // label: \"Agent License Number\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyStreetAddr\",\r\n label: \"Company Street Address\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyZip\",\r\n label: \"Company Zip Code\",\r\n type: 4,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyCity\",\r\n label: \"Company City\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyState\",\r\n label: \"Company State\",\r\n type: 3,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompPhone\",\r\n label: \"Company Phone\",\r\n type: 2,\r\n value: \"\",\r\n },\r\n {\r\n name: \"CompanyLicense\",\r\n // label: \"Company License Number\",\r\n type: 1,\r\n value: \"\",\r\n },\r\n ],\r\n });\r\n\r\n const handleOnchange = ({ text, index }) => {\r\n setOtherLoanVendorDetails((prevOtherLoanVendorDetails) => {\r\n prevOtherLoanVendorDetails[vendorType][index][\"value\"] = text;\r\n return { ...prevOtherLoanVendorDetails };\r\n });\r\n };\r\n\r\n const handleValidation = () => {\r\n return (\r\n otherLoanVendorDetails[vendorType].filter(({ label, value, type }) => {\r\n let isValid = label && !value;\r\n if ([2, 4].includes(type) && value) {\r\n isValid = !(\r\n value\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\")\r\n .replaceAll(\"-\", \"\").length ==\r\n (type == 2 ? 10 : type == 4 ? 5 : 0)\r\n );\r\n }\r\n return isValid || false;\r\n }).length > 0\r\n );\r\n };\r\n return (\r\n <>\r\n <Title text=\"Add New Vendor\" style={{ textAlign: \"center\" }} />\r\n <View\r\n style={{\r\n maxHeight: web ? 600 : Dimensions.get(\"window\").height / 2 - 30,\r\n minHeight: web ? 600 : Dimensions.get(\"window\").height / 2 - 30,\r\n flex: 1,\r\n }}\r\n >\r\n <ScrollView>\r\n <View style={{ paddingHorizontal: web ? 15 : 10 }}>\r\n <View>\r\n <CustomText style={{ fontSize: 20, marginBottom: 25 }}>\r\n Is your Earnest Money deposit held by the{\" \"}\r\n <CustomText bold={true}>Realtor</CustomText>, an{\" \"}\r\n <CustomText bold={true}>Escrow Company</CustomText>, or the{\" \"}\r\n <CustomText bold={true}>Seller</CustomText> ?\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n }}\r\n >\r\n {[\r\n { value: 1, text: \"Seller\" },\r\n { value: 2, text: \"Escrow\" },\r\n { value: 3, text: \"Realtor\" },\r\n ]?.map(({ text, value }, iIndex) => (\r\n <Option\r\n key={iIndex}\r\n style={{ width: web ? \"23%\" : \"30%\" }}\r\n text={text}\r\n value={value == vendorType}\r\n textStyle={{ fontSize: 13 }}\r\n iconSize={15}\r\n onPress={() =>\r\n setVendorType(value == vendorType ? null : value)\r\n }\r\n />\r\n ))}\r\n </View>\r\n </View>\r\n {vendorType && (\r\n <>\r\n {otherLoanVendorDetails[vendorType].map(\r\n ({ name, label, type, value, Options = [] }, index) => {\r\n return (\r\n <Fragment key={index}>\r\n {label ? (\r\n <>\r\n {[1, 2, 4].includes(type) ? (\r\n <InputBox\r\n label={label}\r\n keyboardType={\r\n [2, 4].includes(type) ? \"numeric\" : \"default\"\r\n }\r\n maxLength={\r\n type == 2 //Phone\r\n ? 10\r\n : type == 4 //Zip\r\n ? 5\r\n : 1000\r\n }\r\n placeholder={label}\r\n onBlur={async () => {\r\n if (type == 4) {\r\n let zipCode = value;\r\n if (zipCode.length === 5) {\r\n let { city, state } =\r\n await handleGetZipCodeDetails(zipCode);\r\n setOtherLoanVendorDetails(\r\n (prevOtherLoanVendorDetails) => {\r\n prevOtherLoanVendorDetails[\r\n vendorType\r\n ][index + 1][\"value\"] = city;\r\n prevOtherLoanVendorDetails[\r\n vendorType\r\n ][index + 2][\"value\"] = state;\r\n return {\r\n ...prevOtherLoanVendorDetails,\r\n };\r\n }\r\n );\r\n }\r\n } else if (type == 2) {\r\n setOtherLoanVendorDetails(\r\n (prevOtherLoanVendorDetails) => {\r\n prevOtherLoanVendorDetails[vendorType][\r\n index\r\n ][\"value\"] = FormatPhoneLogin(\r\n value || \"\"\r\n );\r\n\r\n return {\r\n ...prevOtherLoanVendorDetails,\r\n };\r\n }\r\n );\r\n }\r\n }}\r\n onChangeText={(text) => {\r\n handleOnchange({ text, index });\r\n }}\r\n value={value?.toString()}\r\n validate={!value}\r\n />\r\n ) : type === 3 ? (\r\n <Dropdown\r\n isValid={!Number(value)}\r\n label={label}\r\n options={stateOptions}\r\n value={value}\r\n onSelect={({ value }) => {\r\n handleOnchange({ text: value, index });\r\n }}\r\n isMap={true}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </Fragment>\r\n );\r\n }\r\n )}\r\n </>\r\n )}\r\n </View>\r\n </ScrollView>\r\n </View>\r\n {vendorType && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"flex-end\",\r\n marginVertical: 10,\r\n }}\r\n >\r\n <IconButton\r\n buttonType=\"secondary\"\r\n style={{\r\n marginRight: 10,\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n onPress={onClose}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#508BC9\" }}\r\n >\r\n Close\r\n </CustomText>\r\n }\r\n />\r\n <IconButton\r\n disable={handleValidation()}\r\n style={{\r\n marginRight: 10,\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n onPress={() => {\r\n const SaveJson = {};\r\n otherLoanVendorDetails[vendorType].forEach(({ name, value }) => {\r\n SaveJson[name] = value;\r\n });\r\n // console[\"log\"](SaveJson);\r\n\r\n // return;\r\n\r\n handleAPI({\r\n apiName: \"VendorAPI\",\r\n name: \"Save_VendorLoanInfo_API\", //\"Save_VendorLoanInfo\",\r\n params: {\r\n SessionID,\r\n SaveJson: JSON[\"stringify\"]([SaveJson])\r\n .replaceAll(\"#\", \"|H|\")\r\n .replaceAll(\"&\", \"|A|\"),\r\n },\r\n method: \"POST\",\r\n }).then((response) => {\r\n const { VendorId } = JSON.parse(response)[0];\r\n handlePostVendorAdd({\r\n LoanID: loanId,\r\n bankIndex,\r\n\r\n VendorId,\r\n });\r\n onClose();\r\n });\r\n }}\r\n title={\r\n <CustomText bold={true} style={{ fontSize: 16, color: \"#fff\" }}>\r\n Save\r\n </CustomText>\r\n }\r\n />\r\n </View>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default OtherLoanVendor;\r\n","import { useContext, useEffect, useRef } from \"react\";\r\nimport {\r\n StyleSheet,\r\n View,\r\n TouchableOpacity,\r\n Dimensions,\r\n Linking,\r\n BackHandler,\r\n Animated,\r\n} from \"react-native\";\r\nimport SummaryInfo from \"./SummaryInfo/SummaryInfo\";\r\nimport NavBar from \"../NavBar/NavBar.js\";\r\nimport { useState } from \"react\";\r\nimport {\r\n Separator,\r\n Button,\r\n LoanId,\r\n context,\r\n Title,\r\n InputBox,\r\n Spinner,\r\n AddRemoveButton,\r\n PageBottom,\r\n DrawerView,\r\n IconButton,\r\n} from \"../accessories/accessories.js\";\r\nimport CustomText from \"../accessories/CustomText.js\";\r\nimport Icon from \"react-native-vector-icons/FontAwesome\";\r\nimport Entypo from \"react-native-vector-icons/Entypo\";\r\nimport {\r\n handleAPI,\r\n formatCurrency,\r\n roundNumber,\r\n cleanValue,\r\n updateWebURL,\r\n log,\r\n FormatPhoneLogin,\r\n formatDateTimeNew,\r\n formatSSN,\r\n handleGetEmpDetails,\r\n groupByKey,\r\n handleUserDetails,\r\n handleLogDWCallToActionEventParent,\r\n queryStringToObject,\r\n sortByKey,\r\n handleGetZipCodeDetails,\r\n handleGetPlatformName,\r\n calculateAge,\r\n handleOpenScanDocFile,\r\n generateBoxShadowStyle,\r\n getQueryString,\r\n handleStructuredClone,\r\n removeDuplicates,\r\n handleGetSubjectPropertyAddress,\r\n handleSelectLoanProgram,\r\n capitalizeFirstLetter,\r\n} from \"../accessories/CommonFunctions.js\";\r\nimport LeftNavBar from \"../NavBar/leftNavBar.js\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer.js\";\r\nimport ContactInfo from \"./ContactInfo/ContactInfo\";\r\nimport AddressHistory from \"./AddressHistory/AddressHistory\";\r\nimport CreditScore from \"./CreditScore/CreditScore\";\r\nimport Government from \"./Government/Government\";\r\nimport DocumentUpload from \"./DocumentUpload/DocumentUpload\";\r\nimport InterestRate from \"./InterestRate/InterestRate\";\r\nimport Income from \"./InCome/Income\";\r\nimport Assets from \"./Assets/Assets\";\r\nimport { android, ios, web } from \"../accessories/Platform\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport ExternalSourceViewer from \"../accessories/ExternalSourceViewer\";\r\nimport BorrowerVerification from \"../Plaid/BorrowerVerification\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport AppraisalPayment from \"./AppraisalPayment/AppraisalPayment\";\r\nimport Footer from \"../accessories/footer\";\r\nimport ShareApp from \"../NavigationBar/ShareApp\";\r\nimport LoanContacts from \"../NavigationBar/LoanContacts\";\r\nimport DocumentViewer from \"./DocumentUpload/DocumentViewer\";\r\nimport Settings from \"../NavigationBar/Setting\";\r\nimport CalculatorApp from \"../NavigationBar/Calculator\";\r\nimport Swatch from \"../accessories/Swatch\";\r\nimport {\r\n iActivePageArray,\r\n iPageArray,\r\n iPageIdObj,\r\n} from \"../NavBar/NavAccessories\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\nimport CalculatorMenu from \"../accessories/CalculatorMenu\";\r\nimport OtherLoanVendor from \"./Assets/OtherLoanVendor\";\r\n\r\nlet GoToNav = 0;\r\n\r\nexport default function Home(props) {\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n\r\n const { userName, SessionId = \"\", loanId: iLoanId } = contextDetails;\r\n\r\n GoToNav = Number(\r\n contextDetails[\"GoToNav\"] || props.route.params?.GoToNav || 0\r\n );\r\n const { navigation } = props;\r\n\r\n //=======================================State Declaration================================================\r\n const [pageArray, setPageArray] = useState([\r\n \"summaryInfo\",\r\n \"borrowerInfo\",\r\n \"borrowerVerification\",\r\n \"bankAccounts\",\r\n \"addressHistory\",\r\n \"creditScore\",\r\n \"employment\",\r\n \"realEstateOwned\",\r\n \"government\",\r\n \"documentUpload\",\r\n \"eSign\",\r\n \"appraisalPayment\",\r\n \"reviewYourInterestRate\",\r\n \"completed\",\r\n ]);\r\n // console.log(iPageArray, iPageId, iActivePageArray);\r\n const [pageId, setPageId] = useState({\r\n summaryInfo: 0,\r\n borrowerInfo: 1,\r\n borrowerVerification: 2,\r\n bankAccounts: 3,\r\n addressHistory: 4,\r\n creditScore: 5,\r\n income: 6,\r\n realEstateOwned: 7,\r\n government: 8,\r\n documentUpload: 9,\r\n eSign: 10,\r\n appraisalPayment: 11,\r\n reviewYourInterestRate: 12,\r\n completed: 13,\r\n });\r\n const [activePageArray, setActivePageArray] = useState([\r\n \"Summary Info\",\r\n \"Borrower Info\",\r\n \"Verify Bank Accounts\",\r\n \"Bank Accounts\",\r\n \"Address History\",\r\n \"Credit Scores\",\r\n \"Employment\",\r\n \"Real Estate Owned\",\r\n \"Government\",\r\n \"Document Upload\",\r\n \"eSign\",\r\n \"Appraisal Payment\",\r\n \"Review Your Interest Rate\",\r\n \"Completed\",\r\n ]);\r\n\r\n const [currentPage, setCurrentPage] = useState(pageArray[0]);\r\n const [isDisableNext, setIsDisableNext] = useState(false);\r\n const [progressPercentage, setProgressPercentage] = useState(0);\r\n const [loanOfficerOption, setLoanOfficerOption] = useState([]);\r\n const [loanId, setLoanId] = useState(0);\r\n const [landOnScreen, setLandOnScreen] = useState(null);\r\n const [pageIndex, setPageIndex] = useState({\r\n page: 0,\r\n subPage: 0,\r\n }),\r\n //App Payment Alert\r\n [alertMessage, setAlertMessage] = useState({\r\n message: null,\r\n isShow: false,\r\n type: null,\r\n });\r\n\r\n const [clickProcessPayment, setClickProcessPayment] = useState(false);\r\n const [isPaymentDone, setIsPaymentDone] = useState(false);\r\n const [processPaymentDisabled, setProcessPaymentDisabled] = useState(true);\r\n const [processingStatus, setProcessingStatus] = useState(true);\r\n // useEffect(() => {\r\n const handleHiddenButtonClickDone = () => {\r\n // Reset triggerHiddenButtonClick after its work is done\r\n setClickProcessPayment(false);\r\n };\r\n\r\n const handleProcessPaymentDisabled = (disabled) => {\r\n // Receive the disabled attribute value from the child\r\n\r\n setProcessPaymentDisabled(disabled);\r\n };\r\n\r\n const handleProcessingStatus = (ProcessingStatus) => {\r\n // Reset triggerHiddenButtonClick after its work is done\r\n setProcessingStatus(ProcessingStatus);\r\n };\r\n\r\n // //const eventEmitter = new NativeEventEmitter(NativeModules.MyNativeModule);\r\n // //const eventEmitter=new DeviceEventEmitter();\r\n\r\n // // Listen for the event sent from AppDelegate\r\n // // const subscription = DeviceEventEmitter.addListener('URLDataReceived', ({ data }) => {\r\n // // // console.log('Received data in React Native:', data);\r\n // // setLoanOfficerId(data);\r\n // // AsyncStorage.setItem(\"LoEmpNum\", data || null);\r\n // // });\r\n\r\n // // Clean up subscription when component unmounts\r\n // return () => subscription.remove();\r\n // }, []);\r\n\r\n const [loanProductSelectionStatus, setLoanProductSelectionStatus] = useState({\r\n isSelected: false,\r\n status: null,\r\n });\r\n\r\n const [stickyHeader, setStickyHeader] = useState(false);\r\n const [hideFooterButtons, setHideFooterButtons] = useState(false);\r\n const [containerHeightDetails, setContainerHeightDetails] = useState({\r\n containerHeight: 0,\r\n contentHeight: 0,\r\n });\r\n const bodyContainerRef = useRef(null);\r\n const bodyContentRef = useRef(null);\r\n const footerContainerRef = useRef(null);\r\n const [pullDownRefresh, setPullDownRefresh] = useState(false);\r\n const [completedPage, setCompletedPage] = useState(null);\r\n const [inCompletedSubPage, setInCompletedSubPage] = useState([]);\r\n const [inCompletedSubPageObj, setInCompletedSubPageObj] = useState({});\r\n\r\n const [leftNavStatus, setLeftNavStatus] = useState([]);\r\n const [scrollToTop, setScrollToTop] = useState(false);\r\n const [loaderDetails, setLoaderDetails] = useState({ isLoad: false });\r\n const [documentUploadFlag, setDocumentUploadFlag] = useState({\r\n headerText: null,\r\n });\r\n const [propertyTypeOption, setPropertyTypeOption] = useState([\r\n { label: \"-Select-\", value: \"\" },\r\n ]);\r\n const [processStatus, setProcessStatus] = useState(\"onLoad\");\r\n const [LoanData, setLoanData] = useState({});\r\n const [InterestRateStatus, setInterestRateStatus] = useState(null);\r\n const [DetailsArr, setDetailsArr] = useState([]);\r\n const [additionalBorrowerInfo, setAdditionalBorrowerInfo] = useState([]);\r\n const [additionalEmploymentInfo, setAdditionalEmploymentInfo] = useState([]);\r\n const [additionalCounsellingInfo, setAdditionalCounsellingInfo] = useState(\r\n []\r\n );\r\n const [additionalOtherIncomeInfo, setAdditionalOtherIncomeInfo] = useState(\r\n []\r\n );\r\n const [additionalPropertyInfo, setAdditionalPropertyInfo] = useState([]);\r\n const [additionalBankInfo, setAdditionalBankInfo] = useState([]);\r\n const [otherIncomeOption, setOtherIncomeOption] = useState([\r\n { label: \"-Select-\", value: \"\" },\r\n ]);\r\n const [stateOptions, setStateOptions] = useState([\r\n { label: \"-Select-\", value: \"\" },\r\n ]);\r\n\r\n const [giftOptions, setGiftOptions] = useState([\r\n { value: 0, label: \"Gift Source\" },\r\n { value: 2, label: \"Relative\" },\r\n { value: 3, label: \"Government Assistance\" },\r\n { value: 4, label: \"Employer\" },\r\n { value: 5, label: \"Non-Profit\" },\r\n { value: 6, label: \"Local Agency\" },\r\n ]);\r\n const [otherAccountTypeOption, setOtherAccountTypeOption] = useState([\r\n { value: \"0\", label: \"Other Account Type\" },\r\n { value: \"11\", label: \"Bridge Loan\" },\r\n { value: \"4\", label: \"Earnest Money Deposit\" }, //BordataAssetDetails\r\n { value: \"5\", label: \"Certificate of Deposit\" },\r\n { value: \"3\", label: \"Gift in Borrower Possession\" },\r\n { value: \"20\", label: \"Gift of Equity\" },\r\n { value: \"19\", label: \"Gift to Be Given at Closing\" },\r\n { value: \"22\", label: \"Life Insurance\" }, //BordataAssetDetails\r\n { value: \"6\", label: \"Money Market Fund\" },\r\n { value: \"7\", label: \"Mutual Funds\" },\r\n { value: \"17\", label: \"Net Equity\" },\r\n { value: \"12\", label: \"Retirement Funds\" }, //BordataAssetDetails\r\n { value: \"10\", label: \"Secured Borrowed Funds\" },\r\n { value: \"33\", label: \"Stocks and Bonds\" }, //BordataAssetDetails\r\n { value: \"14\", label: \"Trust Funds\" },\r\n { value: \"37\", label: \"Grant\" },\r\n ]);\r\n\r\n const [accountTypeOption, setAccountTypeOption] = useState([\r\n { label: \"-Select-\", value: \"\" },\r\n { label: \"Checking\", value: \"1\" },\r\n { label: \"Savings\", value: \"2\" },\r\n { label: \"Other Types\", value: \"-1\" },\r\n ]);\r\n const [vendorOptions, setVendorOptions] = useState([\r\n { label: \"-Select-\", value: \"\" },\r\n ]);\r\n const [maritalStatusOptions, setMaritalStatusOptions] = useState([\r\n { value: \"0\", label: \"Select\" },\r\n // { value: \"1\", label: \"Married to Person Not On This Loan\" },\r\n { value: \"1\", label: \"Married - Person Not Yet Entered\" },\r\n { value: \"3\", label: \"Not Married\" },\r\n { value: \"2\", label: \"Separated\" },\r\n ]);\r\n const [UserId, setUserId] = useState(0);\r\n const [loanOfficerId, setLoanOfficerId] = useState(0);\r\n const [creditScoreDetails, SetCreditScoreDetails] = useState({\r\n Status: -1,\r\n isAlready: -1,\r\n Details: [],\r\n ErrMsg: \"\",\r\n });\r\n const [floatPage, setFloatPage] = useState(null);\r\n\r\n const [isFromDashBoard, setIsFromDashBoard] = useState(true);\r\n const [DocumentViewProps, setDocumentViewProps] = useState(null);\r\n\r\n const [drawerDetails, setDrawerDetails] = useState({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n const [loanOfficers, setLoanOfficers] = useState(\r\n web\r\n ? queryStringToObject(window.location?.href || \"\")[\"loanOfficerId\"] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0\r\n );\r\n const [loanURLDetails, setLoanURLDetails] = useState({});\r\n\r\n const [excludePageIndex, setExcludePageIndex] = useState({\r\n Ids: [],\r\n index: [],\r\n });\r\n const [screenSize, setScreenSize] = useState(\r\n web ? [window.innerWidth, window.innerHeight] : [0, 0]\r\n );\r\n const [WebLoginId, setWebLoginId] = useState(null);\r\n const [hideProgress, setHideProgress] = useState(false);\r\n const [platformType, setPlatformType] = useState(\"\");\r\n const [pdfView, setPdfView] = useState(false);\r\n const [showEsignMenu, setShowEsignMenu] = useState(false);\r\n const [webviewRef, setWebviewRef] = useState(null);\r\n const [iFrameviewRef, setiFrameviewRef] = useState(null);\r\n const [isDataLoadedForDocUpload, setIsDataLoadedForDocUpload] =\r\n useState(false);\r\n\r\n //=======================================useEffect================================================\r\n if (web) {\r\n useEffect(() => {\r\n const styleElement = document.createElement(\"style\");\r\n styleElement.innerHTML = `\r\n :focus-visible {\r\n outline: black auto 1px;\r\n }\r\n [data-testid=\"statusIcon\"]{\r\n font-weight: 600 !important;\r\n }\r\n [data-testid=\"InterestRateModalMobile\"] > div{\r\n align-items: center;\r\n }\r\n [data-testid=\"InterestRateModal\"] > div{\r\n align-items: center;\r\n left:-8px;\r\n }\r\n `;\r\n document.head.appendChild(styleElement);\r\n return () => {\r\n document.head.removeChild(styleElement);\r\n };\r\n //if (!web) setHideProgress(false);\r\n }, []);\r\n useEffect(() => {\r\n try {\r\n if (LoanData[\"LockLoanApp\"] == 1) {\r\n window.addEventListener(\"keydown\", keydownHandler);\r\n window.addEventListener(\"mousedown\", keydownHandler);\r\n } else {\r\n window.removeEventListener(\"mousedown\", keydownHandler);\r\n\r\n window.removeEventListener(\"keydown\", keydownHandler);\r\n }\r\n } catch (error) {}\r\n return () => {\r\n window.removeEventListener(\"keydown\", keydownHandler);\r\n window.removeEventListener(\"mousedown\", keydownHandler);\r\n };\r\n }, [LoanData[\"LockLoanApp\"], currentPage]);\r\n }\r\n useEffect(() => {\r\n if (\r\n [pageId[\"bankAccounts\"], pageId[\"income\"]].includes(pageIndex[\"page\"])\r\n ) {\r\n handleGetBankEmpDetails();\r\n } else if (\r\n pageIndex[\"page\"] == pageId[\"borrowerVerification\"] &&\r\n LoanData[\"viewPlaid\"]\r\n ) {\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n viewPlaid: false,\r\n LinkBankAccount: null,\r\n }));\r\n }\r\n }, [pageIndex[\"page\"]]);\r\n\r\n useEffect(() => {\r\n if (additionalBorrowerInfo.length) {\r\n let { FirstName, NickName = \"\", MiddleName, LastName, Suffix } = LoanData;\r\n FirstName = FirstName || (NickName || \"\").trim();\r\n const options = [\r\n { value: \"0\", label: \"Select\" },\r\n //{ value: \"1\", label: \"Married to a person not on this Loan\" },\r\n { value: \"1\", label: \"Married - Person Not Yet Entered\" },\r\n {\r\n value: Number(LoanData[\"UserId\"]),\r\n label: `Married to ${FirstName} ${MiddleName} ${LastName} ${Suffix}`,\r\n },\r\n ...additionalBorrowerInfo\r\n .slice(1)\r\n .map(\r\n ({\r\n FirstName = (NickName || \"\").trim(),\r\n LastName,\r\n MiddleName,\r\n Suffix,\r\n CustId,\r\n }) => {\r\n return {\r\n value: Number(CustId),\r\n label: `Married to ${FirstName} ${MiddleName} ${LastName} ${Suffix}`,\r\n };\r\n }\r\n ),\r\n { value: \"3\", label: \"Not Married\" },\r\n { value: \"2\", label: \"Separated\" },\r\n ];\r\n\r\n setMaritalStatusOptions([...options]);\r\n }\r\n }, [\r\n additionalBorrowerInfo,\r\n LoanData[\"FirstName\"],\r\n LoanData[\"NickName\"],\r\n LoanData[\"MiddleName\"],\r\n LoanData[\"LastName\"],\r\n LoanData[\"Suffix\"],\r\n ]);\r\n\r\n const handleMaritalStatusChange = ({\r\n iAdditionalBorrowerInfo = [...additionalBorrowerInfo],\r\n changedId,\r\n isPrimary = false,\r\n custId = 0,\r\n index = 0,\r\n }) => {\r\n const { UserId, MaritalStatus } = LoanData,\r\n iMaritalStatus =\r\n MaritalStatus == custId\r\n ? 0\r\n : UserId == changedId\r\n ? custId\r\n : MaritalStatus,\r\n changesIndex = [];\r\n\r\n const newCustId = Number(isPrimary ? UserId : custId);\r\n\r\n iAdditionalBorrowerInfo.slice(1).forEach((borrower, iIndex) => {\r\n if (index != iIndex + 1) {\r\n const { CustId } = borrower;\r\n if (\r\n [changedId, newCustId].includes(Number(borrower[\"MaritalStatus\"]))\r\n ) {\r\n borrower[\"MaritalStatus\"] = 0;\r\n changesIndex.push(iIndex);\r\n }\r\n if (CustId == changedId) {\r\n borrower[\"MaritalStatus\"] = newCustId;\r\n changesIndex.push(iIndex);\r\n }\r\n }\r\n });\r\n\r\n if (iMaritalStatus !== null || changesIndex.length) {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n MaritalStatus: iMaritalStatus,\r\n isMaritalStatusChanged: iMaritalStatus != MaritalStatus,\r\n maritalStatusChangesIndex: changesIndex,\r\n };\r\n });\r\n }\r\n setAdditionalBorrowerInfo([...iAdditionalBorrowerInfo]);\r\n };\r\n\r\n useEffect(() => {\r\n if (android) {\r\n setPlatformType(\"android\");\r\n } else if (ios) {\r\n setPlatformType(\"ios\");\r\n } else if (isMobileWeb) {\r\n setPlatformType(\"isMobileWeb\");\r\n } else if (web) {\r\n setPlatformType(\"web\");\r\n } else {\r\n setPlatformType(\"\");\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const prePare = async () => {\r\n setLoanId(loanId || iLoanId);\r\n handleGetWebLoginId();\r\n await handleLogDWCallToActionEventParent(\r\n \"Borrower_Loan_Application\",\r\n \"LogDWVisitorsEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n LoanId: loanId || iLoanId || 0,\r\n Email:\r\n additionalBorrowerInfo.length > 0\r\n ? additionalBorrowerInfo[0][\"Email\"] || \"\"\r\n : LoanData[\"EmailId\"] || \"\",\r\n },\r\n activePageArray[pageIndex[\"page\"]]?.replaceAll(\" \", \"\")\r\n );\r\n\r\n // handleInsertEventToDW();\r\n };\r\n prePare();\r\n }, [props]);\r\n useEffect(() => {\r\n if (processStatus === \"orderPlaced\") {\r\n setTimeout(() => {\r\n setProcessStatus(null);\r\n }, 3000);\r\n }\r\n }, [processStatus]);\r\n useEffect(() => {\r\n const prePre = async () => {\r\n let data = await handleGetEmpDetails(SessionId);\r\n if (data && data[\"Message\"] !== \"An error has occurred.\") {\r\n data = JSON.parse(data);\r\n let userName = data[\"Table4\"][0][\"EmpNum\"],\r\n userType = data[\"Table1\"][0][\"Type\"],\r\n // AppDownload = data[\"Table5\"][0][\"appDownloadFlag\"],\r\n webPlatForm = handleGetPlatformName();\r\n\r\n // if (\r\n // AppDownload == 0 &&\r\n // web &&\r\n // [\"iOS\", \"Android\"].includes(webPlatForm)\r\n // ) {\r\n // setIsDisableNext(false);\r\n // AppDownload = true;\r\n // } else {\r\n // AppDownload = false;\r\n // setIsDisableNext(true);\r\n // }\r\n\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n ...{\r\n userName,\r\n userType,\r\n taskTableIndex: !contextDetails[\"taskTableIndex\"],\r\n // appDownloadFlag: AppDownload,\r\n webPlatForm,\r\n },\r\n };\r\n });\r\n }\r\n if (web) {\r\n function updateSize() {\r\n setScreenSize([window.innerWidth, window.innerHeight]);\r\n handleGetContainerHeight();\r\n }\r\n window.addEventListener(\"resize\", updateSize);\r\n updateSize();\r\n return () => window.removeEventListener(\"resize\", updateSize);\r\n }\r\n };\r\n prePre();\r\n }, [SessionId]);\r\n\r\n useEffect(() => {\r\n updateWebURL({ Screen: currentPage.replaceAll(\" \", \"\") });\r\n const handleEventsLog = async () => {\r\n if (loanId && UserId !== 0) {\r\n handleInsertEventToDW();\r\n }\r\n };\r\n\r\n if (\r\n web &&\r\n currentPage !== pageArray[pageId[\"eSign\"]] &&\r\n currentPage !== pageArray[pageId[\"documentUpload\"]] &&\r\n currentPage !== pageArray[pageId[\"appraisalPayment\"]]\r\n ) {\r\n (document.querySelectorAll(\".externalFrame\") || [])?.forEach((item) => {\r\n item.src = \"\";\r\n });\r\n }\r\n\r\n handleEventsLog();\r\n }, [currentPage, UserId]);\r\n\r\n useEffect(() => {\r\n if (\r\n Object.keys(LoanData).length > 0 &&\r\n (additionalBorrowerInfo.length > 0 || loanId == -999)\r\n ) {\r\n let { iDetailsArr } = handlePageDetails();\r\n\r\n setDetailsArr(iDetailsArr);\r\n\r\n if (currentPage !== pageArray[pageId[\"documentUpload\"]])\r\n if (isFromDashBoard && loanId > 0) {\r\n if ([0].includes(GoToNav)) {\r\n let { iPageIndex, iCurrentPage } = handleGetPageNumber(false);\r\n setPageIndex({ ...iPageIndex });\r\n\r\n iCurrentPage && setCurrentPage(iCurrentPage);\r\n } else if (GoToNav) {\r\n let { iSubPage } = handleGetPageNumber(true, GoToNav);\r\n if (GoToNav !== 12) {\r\n setPageIndex({\r\n page: GoToNav,\r\n subPage: iSubPage < 0 ? 0 : iSubPage || 0,\r\n });\r\n }\r\n }\r\n setIsFromDashBoard(false);\r\n }\r\n loanId > 0 && handleUpdateCompletedPage();\r\n } else if (true) {\r\n let { iDetailsArr } = handlePageDetails();\r\n\r\n setDetailsArr(iDetailsArr);\r\n }\r\n handleGetContainerHeight();\r\n }, [\r\n pageIndex,\r\n LoanData,\r\n loanOfficers,\r\n additionalBorrowerInfo,\r\n additionalEmploymentInfo,\r\n additionalOtherIncomeInfo,\r\n additionalBankInfo,\r\n additionalPropertyInfo,\r\n additionalCounsellingInfo,\r\n processStatus,\r\n creditScoreDetails,\r\n vendorOptions,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!contextDetails[\"appDownloadFlag\"]) {\r\n setIsDisableNext(![1, 2].includes(LoanData[\"LoanPurpose\"]));\r\n }\r\n }, [LoanData, contextDetails[\"appDownloadFlag\"]]);\r\n\r\n useEffect(() => {\r\n setLoanId(contextDetails.loanId);\r\n }, [contextDetails.loanId]);\r\n //alert(currentPage + \" \" + pageArray[pageId[\"appraisalPayment\"]] );\r\n\r\n useEffect(() => {\r\n if ([1, 2].includes(LoanData[\"LoanPurpose\"])) {\r\n let iAddressTBD = LoanData[\"prevAddressTBD\"];\r\n if (LoanData[\"LoanPurpose\"] == 2) {\r\n iAddressTBD = false;\r\n }\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n AddressTBD: iAddressTBD,\r\n };\r\n });\r\n }\r\n if (loanId < 0) {\r\n handleNavigateSubPage(0, 0);\r\n }\r\n }, [LoanData[\"LoanPurpose\"]]);\r\n\r\n useEffect(() => {\r\n if (contextDetails[\"isAssetPullCompleted\"]) {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n isAssetPullCompleted: false,\r\n pulledAssetCount: 0,\r\n };\r\n });\r\n\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n blAssetOption: (contextDetails[\"pulledAssetCount\"] || 0) === 0 ? 1 : 0,\r\n assetPullCompleted: true,\r\n }));\r\n }\r\n }, [contextDetails]);\r\n\r\n useEffect(() => {\r\n if (Object.keys(loanURLDetails).length > 0) {\r\n pageArray[GoToNav] && setCurrentPage(pageArray[GoToNav]);\r\n setPageIndex({\r\n ...{},\r\n ...{\r\n page: GoToNav,\r\n subPage: pageIndex[\"subPage\"],\r\n },\r\n });\r\n }\r\n }, [props]);\r\n\r\n useEffect(() => {\r\n try {\r\n let queryObj = queryStringToObject(window.location?.href || \"\");\r\n if (!queryObj[\"loanId\"] && queryObj[\"Path\"] == \"Home\") {\r\n updateWebURL({ loanId: -999 });\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, loanId: -999, Path: \"Home\" };\r\n });\r\n }\r\n } catch (error) {}\r\n\r\n setIsFromDashBoard(true);\r\n handleGetBorrowerUrl();\r\n\r\n if (!contextDetails[\"isNewLoanCreated\"]) {\r\n pageArray[GoToNav] && setCurrentPage(pageArray[GoToNav]);\r\n\r\n setPageIndex({\r\n ...{},\r\n ...{\r\n page: GoToNav,\r\n subPage: pageIndex[\"subPage\"] || 0,\r\n },\r\n });\r\n }\r\n let LoanId = Number(iLoanId || loanId);\r\n\r\n if (LoanId) {\r\n handleAPIGetLoanDetails(LoanId, true);\r\n\r\n handleAPI({\r\n name: \"GetLoanOfficerList\",\r\n params: { LoanId },\r\n })\r\n .then((response) => {\r\n setLoanOfficerOption(\r\n JSON.parse(response)[\"Table\"].map((e) => {\r\n return { value: e.EmpNumber, label: e.name };\r\n })\r\n );\r\n })\r\n .catch((err) =>\r\n console.error(\"Error form GetLoanOfficerList ====> \", err)\r\n );\r\n\r\n handleGetLeftNavStatus();\r\n getCreditDetails(LoanId);\r\n setProcessStatus(null);\r\n }\r\n }, [\r\n contextDetails[\"GoToNav\"] || props.route.params?.GoToNav,\r\n contextDetails.loanId,\r\n ]);\r\n\r\n useEffect(() => {\r\n handleUpdateCompletedPage();\r\n handleGetContainerHeight();\r\n }, [pageIndex, loanOfficerId]);\r\n\r\n useEffect(() => {\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n () => {\r\n navigate(\"DashBoard\", { from: \"Home\" });\r\n }\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (\r\n creditScoreDetails.Status === 5 ||\r\n creditScoreDetails?.Details[0]?.iFinalScanDocID\r\n )\r\n handleUpdateCompletedPage();\r\n }, [creditScoreDetails]);\r\n\r\n const handleGetContainerHeight = () => {\r\n if (web) {\r\n try {\r\n setTimeout(async () => {\r\n (web && currentPage != pageArray[pageId[\"appraisalPayment\"]]\r\n ? bodyContentRef?.current?.childNodes[\r\n currentPage === pageArray[pageId[\"reviewYourInterestRate\"]]\r\n ? 0\r\n : 1\r\n ]\r\n : bodyContentRef.current\r\n )?.measure((x, y, width, height) => {\r\n setContainerHeightDetails((prevContainerHeightDetails) => {\r\n return { ...prevContainerHeightDetails, contentHeight: height };\r\n });\r\n });\r\n bodyContainerRef.current?.measure((x, y, width, height) => {\r\n setContainerHeightDetails((prevContainerHeightDetails) => {\r\n return { ...prevContainerHeightDetails, containerHeight: height };\r\n });\r\n });\r\n footerContainerRef.current?.measure((x, y, width, height) => {\r\n setContainerHeightDetails((prevContainerHeightDetails) => {\r\n return {\r\n ...prevContainerHeightDetails,\r\n footerContainerHeight: height,\r\n };\r\n });\r\n });\r\n }, 100);\r\n } catch (error) {\r\n console.error(\"Error form ===> \", error);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n let { containerHeight = 0, contentHeight = 0 } = containerHeightDetails,\r\n iStickyHeader = false;\r\n containerHeight = containerHeight - 70;\r\n\r\n if (containerHeight <= contentHeight) iStickyHeader = true;\r\n\r\n if (currentPage === pageArray[pageId[\"eSign\"]]) {\r\n iStickyHeader = true;\r\n } else if (currentPage === pageArray[pageId[\"reviewYourInterestRate\"]]) {\r\n iStickyHeader = true;\r\n } else if (currentPage === pageArray[pageId[\"appraisalPayment\"]]) {\r\n iStickyHeader = false;\r\n }\r\n setStickyHeader(iStickyHeader);\r\n }, [containerHeightDetails]);\r\n\r\n const handleAppDownloadSave = () => {\r\n handleAPI({\r\n name: \"SaveAppDownloadOption\",\r\n params: { WebLoginId: Number(WebLoginId) },\r\n })\r\n .then(() => {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n ...{ appDownloadFlag: false, appDownloadSkip: true },\r\n };\r\n });\r\n })\r\n .catch((err) =>\r\n console.error(\"Error form handleAppDownloadSave ====> \", err)\r\n );\r\n };\r\n const handleGoToApp = () => {\r\n window.parent.location.href = \"https://directmortgage.com/S/f6QTt\";\r\n };\r\n const handleNextFrameNavigation = () => {\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: Number(pageIndex[\"subPage\"]) + 1,\r\n });\r\n };\r\n const handleInsertEventToDW = async () => {\r\n let data = await handleGetEmpDetails(SessionId),\r\n iUserName = \"\",\r\n iUserId = \"\";\r\n if (data && data[\"Message\"] !== \"An error has occurred.\") {\r\n data = JSON.parse(data);\r\n iUserName = data[\"Table4\"][0][\"EmpNum\"];\r\n iUserId = data[\"Table2\"][0][\"EmpNum\"];\r\n }\r\n\r\n let eventName = activePageArray[pageIndex[\"page\"]];\r\n handleLogDWCallToActionEventParent(\r\n eventName,\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n LoanId: loanId || iLoanId || 0,\r\n Email:\r\n additionalBorrowerInfo.length > 0\r\n ? additionalBorrowerInfo[0][\"Email\"] || \"\"\r\n : LoanData[\"EmailId\"] || \"\",\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\"loanOfficerId\"] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n },\r\n activePageArray[pageIndex[\"page\"]]?.replaceAll(\" \", \"\")\r\n );\r\n };\r\n const keydownHandler = (event) => {\r\n if (\r\n LoanData[\"LockLoanApp\"] == 1 &&\r\n !(\r\n currentPage === pageArray[pageId[\"documentUpload\"]] ||\r\n currentPage === pageArray[pageId[\"creditScore\"]] ||\r\n currentPage === pageArray[pageId[\"appraisalPayment\"]]\r\n )\r\n ) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n };\r\n const handleGetBorrowerUrl = ({ landOn = \"\" } = {}) => {\r\n const LoanId = loanId || contextDetails[\"loanId\"];\r\n\r\n // if (\r\n // LoanId > 0\r\n // // &&\r\n // // Object.keys(loanURLDetails).length === 0\r\n // ) {\r\n if (LoanId)\r\n handleAPI({\r\n name: \"GetBorrowerRedirectURLs\",\r\n params: {\r\n SessionId: SessionId,\r\n LoanId: LoanId,\r\n LoanOff: loanOfficers,\r\n },\r\n })\r\n .then((response) => {\r\n response = response.split(\"~\");\r\n\r\n setLoanURLDetails({\r\n apprURL: response[0],\r\n docURL: response[1],\r\n esignURL: response[2],\r\n loanLocked: response[3],\r\n exisLoanId: response[4],\r\n noeSignExists: response[7],\r\n blLoanAppRateOptions: response[8],\r\n assetVendor:\r\n Number(response[11]) === 106917\r\n ? \"Truv\"\r\n : Number(response[11]) === 105075\r\n ? \"Plaid\"\r\n : \"\",\r\n });\r\n\r\n let Ids = [], //7,8,11\r\n index = []; //10,11,12\r\n\r\n //eSign\r\n if (response[7] == 1 && landOn != \"eSign\") {\r\n Ids.push(7);\r\n index.push(10);\r\n }\r\n //App Payment\r\n if (!response[0]) {\r\n Ids.push(8);\r\n index.push(11);\r\n }\r\n // Rate page\r\n if (response[8] == 2) {\r\n Ids.push(11);\r\n index.push(12);\r\n }\r\n //Credit Report Page\r\n if (response[9] == 0) {\r\n Ids.push(2);\r\n index.push(5);\r\n }\r\n setExcludePageIndex({ Ids, index });\r\n\r\n const newPageArray = handleStructuredClone(iPageArray);\r\n\r\n //==========================\r\n let array = newPageArray.filter(\r\n (item, iIndex) => !index.includes(iIndex)\r\n );\r\n\r\n setPageArray([...array]);\r\n //==========================\r\n let iGoToNav = GoToNav;\r\n if (iGoToNav === newPageArray.indexOf(\"reviewYourInterestRate\")) {\r\n if (index.includes(newPageArray.indexOf(\"appraisalPayment\")))\r\n iGoToNav--;\r\n if (index.includes(newPageArray.indexOf(\"eSign\"))) iGoToNav--;\r\n if (index.includes(newPageArray.indexOf(\"creditScore\"))) iGoToNav--;\r\n } else if (\r\n iGoToNav === newPageArray.indexOf(\"documentUpload\") &&\r\n index.includes(newPageArray.indexOf(\"creditScore\"))\r\n ) {\r\n iGoToNav--;\r\n } else if (\r\n iGoToNav === newPageArray.indexOf(\"eSign\") &&\r\n index.includes(newPageArray.indexOf(\"creditScore\"))\r\n ) {\r\n iGoToNav--;\r\n } else if (\r\n iGoToNav === newPageArray.indexOf(\"appraisalPayment\") &&\r\n index.includes(newPageArray.indexOf(\"creditScore\"))\r\n ) {\r\n iGoToNav--;\r\n }\r\n // if (landOn) {\r\n // if (landOn === \"eSign\") {\r\n // setLandOnScreen(landOn);\r\n // }\r\n // const landOnIndex = array.indexOf(landOn);\r\n // array[iGoToNav] && setCurrentPage(array[landOnIndex]);\r\n // setPageIndex((prevPageIndex) => {\r\n // return {\r\n // ...{\r\n // page: landOnIndex,\r\n // subPage: prevPageIndex[\"subPage\"],\r\n // },\r\n // };\r\n // });\r\n // } else\r\n if (landOn !== \"eSign\") {\r\n array[iGoToNav] && setCurrentPage(array[iGoToNav]);\r\n setPageIndex((prevPageIndex) => {\r\n return {\r\n ...{\r\n page: iGoToNav,\r\n subPage: prevPageIndex[\"subPage\"],\r\n },\r\n };\r\n });\r\n }\r\n //==========================\r\n\r\n let newPageId = handleStructuredClone(iPageIdObj);\r\n index.forEach((index) => {\r\n const key = Object.keys(newPageId).find(\r\n (k) => newPageId[k] === index\r\n );\r\n if (key) {\r\n delete newPageId[key];\r\n }\r\n });\r\n array.forEach((key, index) => {\r\n newPageId[key] = index;\r\n });\r\n\r\n setPageId({ ...newPageId });\r\n\r\n //==========================\r\n\r\n array = handleStructuredClone(iActivePageArray).filter(\r\n (item, iIndex) => !index.includes(iIndex)\r\n );\r\n\r\n setActivePageArray([...array]);\r\n //==========================\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from GetBorrowerRedirectURLs ====> \", err)\r\n );\r\n //}\r\n };\r\n const getCreditDetails = async (LoanId, poolCount) => {\r\n let { Status, isAlready, Details, ErrMsg } =\r\n creditScoreDetails[\"Details\"].length === 0 || !ErrMsg\r\n ? await handleGetCreditScoreDetails(LoanId, poolCount !== undefined)\r\n : creditScoreDetails;\r\n\r\n const inValidData = (Details || []).filter(({ FICOMid }) => !FICOMid);\r\n\r\n if (\r\n (poolCount && poolCount <= 10 && Details.length == 0 && !ErrMsg) ||\r\n (processStatus != \"onLoad\" &&\r\n (inValidData.length > 0 ||\r\n (Details || []).length == additionalBorrowerInfo.length))\r\n ) {\r\n setTimeout(() => {\r\n handleGetCreditScoreDetailsPooling(poolCount);\r\n }, 2500);\r\n } else {\r\n if (Details.length > 0) {\r\n Status = Details[0].iStatus;\r\n }\r\n Details = Details.reduce((acc, currentValue) => {\r\n let groupKey = currentValue[\"iFinalScanDocID\"];\r\n if (!acc[groupKey]) {\r\n acc[groupKey] = [];\r\n }\r\n acc[groupKey].push(currentValue);\r\n return acc;\r\n }, {});\r\n Details = Object.values(Details).flatMap((subArray) => {\r\n if (subArray.length > 1) {\r\n let sortOrder = [subArray[0]].flatMap((obj) => {\r\n return Object.entries(obj)\r\n .filter(([key]) => key.includes(\"BorName\"))\r\n .map(([, value]) => value);\r\n });\r\n subArray = subArray.sort((a, b) => {\r\n const fullNameA = a.FullName,\r\n fullNameB = b.FullName,\r\n indexA = sortOrder.indexOf(fullNameA),\r\n indexB = sortOrder.indexOf(fullNameB);\r\n return indexA - indexB;\r\n });\r\n }\r\n // if (subArray.length > 0) {\r\n // subArray[0][\"scanDocID\"] = subArray[0][\"iFinalScanDocID\"];\r\n // }\r\n return subArray;\r\n });\r\n SetCreditScoreDetails({ Status, isAlready, Details, ErrMsg });\r\n handleGetLoanOfficerId(loanId || LoanId);\r\n }\r\n };\r\n const handleGetLoanOfficerId = async (loanId) => {\r\n if (loanId > 0) {\r\n let loanOfficerId_ = await handleLoanOfficerCredit(loanId);\r\n\r\n setLoanOfficerId(Number(loanOfficerId_));\r\n setLoanOfficers(Number(loanOfficerId_));\r\n } else {\r\n let LoEmpNum = (await AsyncStorage.getItem(\"LoEmpNum\")) || null;\r\n if (LoEmpNum > 0) {\r\n setLoanOfficerId(Number(LoEmpNum));\r\n setLoanOfficers(Number(LoEmpNum));\r\n }\r\n }\r\n };\r\n const GetLeftNavStatus = async (LoanId) => {\r\n return await handleAPI({\r\n name: \"GetLeftNavStatus\",\r\n params: { LoanId },\r\n })\r\n .then((response) => {\r\n if (!response || __DEV__) response = \"[]\";\r\n\r\n if (\r\n pageId[\"reviewYourInterestRate\"] === GoToNav &&\r\n LoanData[\"subjectZip\"]\r\n ) {\r\n handleSelectLoanProgram(LoanId, (loanProductStatus) => {\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, loanProductStatus };\r\n });\r\n });\r\n }\r\n\r\n if (response && response[\"Message\"] !== \"An error has occurred.\") {\r\n return [...(JSON.parse(response) || [])];\r\n } else {\r\n return [];\r\n }\r\n })\r\n .catch((err) => console.error(\"Error from GetLeftNavStatus ====> \", err));\r\n };\r\n\r\n const handleGetLeftNavStatus = async (statusChangePage, isInclude) => {\r\n const jLoanId = loanId || iLoanId;\r\n if (jLoanId > 0) {\r\n if (statusChangePage) {\r\n let { page } = pageIndex,\r\n iLeftNavStatus = isInclude\r\n ? [...new Set([...leftNavStatus, ...[page]])]\r\n : leftNavStatus.filter((item) => {\r\n item !== page;\r\n });\r\n\r\n setLeftNavStatus([...iLeftNavStatus]);\r\n setCompletedPage([...(iLeftNavStatus || [])]);\r\n } else {\r\n setLeftNavStatus((await GetLeftNavStatus(jLoanId)) || []);\r\n }\r\n }\r\n };\r\n const handleGetCellPhone = (cellPhone) => {\r\n let val = cellPhone || \"\";\r\n if (val.includes(\"*5*\")) {\r\n val = val.split(\"*5*\")[1];\r\n } else if (val.includes(\"*8*\")) {\r\n val = val.split(\"*8*\")[1];\r\n }\r\n val = val.replaceAll(\"*\", \"\");\r\n return val;\r\n };\r\n // useEffect(() => {\r\n // console.log(\"pageArray\", pageArray.length);\r\n // console.log(\"activePageArray\", activePageArray.length);\r\n // console.log(\"pageId\", Object.keys(pageId).length);\r\n // }, [pageArray, activePageArray, pageId]);\r\n\r\n const handleClearState = () => {\r\n log(\"Cleared\", \"State Values\");\r\n // setTimeout(() => {\r\n setProcessStatus(null);\r\n setPageArray(handleStructuredClone(iPageArray));\r\n setActivePageArray(handleStructuredClone(iActivePageArray));\r\n setPageId(handleStructuredClone(iPageIdObj));\r\n setExcludePageIndex({ Ids: [], index: [] });\r\n setCurrentPage(pageArray[0]);\r\n setLoanOfficerOption([]);\r\n setLoanId(0);\r\n setPageIndex({ page: 0, subPage: 0 });\r\n setCompletedPage(null);\r\n setScrollToTop(false);\r\n setLoaderDetails({ isLoad: false });\r\n setDocumentUploadFlag({ headerText: null });\r\n setLoanData([]);\r\n setDetailsArr([]);\r\n setAdditionalBorrowerInfo([]);\r\n setAdditionalEmploymentInfo([]);\r\n setAdditionalCounsellingInfo([]);\r\n setAdditionalOtherIncomeInfo([]);\r\n setAdditionalPropertyInfo([]);\r\n setAdditionalBankInfo([]);\r\n setOtherIncomeOption([]);\r\n setStateOptions([]);\r\n setUserId(0);\r\n setLoanOfficerId(0);\r\n SetCreditScoreDetails({\r\n Status: -1,\r\n isAlready: -1,\r\n Details: [],\r\n });\r\n setIsFromDashBoard(true);\r\n setLoanOfficers(0);\r\n setContextDetails((prevContextDetails) => {\r\n delete prevContextDetails[\"GoToNav\"];\r\n delete prevContextDetails[\"loanId\"];\r\n delete prevContextDetails[\"UserId\"];\r\n prevContextDetails[\"Path\"] = \"DashBoard\";\r\n prevContextDetails[\"loanProductStatus\"] = null;\r\n\r\n return { ...prevContextDetails };\r\n });\r\n // }, 100);\r\n };\r\n\r\n const handleOrderAdditionalBorrowerInfo = (array, Id, key) => {\r\n return array.sort((a, b) => {\r\n if (a[key] === Id) return -1;\r\n if (b[key] === Id) return 1;\r\n return 0;\r\n });\r\n };\r\n const handleDuplicateEmail = (emailId, changedIndex) => {\r\n const iAdditionalBorrowerInfo = additionalBorrowerInfo;\r\n iAdditionalBorrowerInfo.forEach((borrower, index) => {\r\n if (borrower[\"Email\"] == emailId && index !== changedIndex) {\r\n if (index === 0) {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n EmailId: \"\",\r\n };\r\n });\r\n handleSaveLoanInformation([\r\n { ColumnName: \"EmailId\", ColumnValue: \"\" },\r\n ]);\r\n }\r\n iAdditionalBorrowerInfo[index][\"Email\"] = \"\";\r\n handleSaveAdditionalInfo(\r\n index - 1,\r\n 11,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n iAdditionalBorrowerInfo\r\n );\r\n }\r\n });\r\n setAdditionalBorrowerInfo([...iAdditionalBorrowerInfo]);\r\n };\r\n\r\n const handleGetWebLoginId = async () => {\r\n try {\r\n let iWebLoginId = await handleUserDetails(SessionId);\r\n\r\n iWebLoginId = iWebLoginId.split(\"~\");\r\n setWebLoginId(Number(iWebLoginId[6]));\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, Email: iWebLoginId[4] };\r\n });\r\n } catch (error) {}\r\n };\r\n const handleGetBorrowerOption = () => {\r\n return [\r\n ...additionalBorrowerInfo.map((borr) => {\r\n return {\r\n value: borr[\"CustId\"],\r\n label: `${borr[\"FirstName\"] ? borr[\"FirstName\"] : \"\"}${\r\n borr[\"LastName\"] ? \" \" + borr[\"LastName\"] : \"\"\r\n }`?.trim(),\r\n };\r\n }),\r\n ].filter((item) => item[\"label\"]);\r\n };\r\n const handleAPIGetLoanDetails = async (\r\n iLoanId,\r\n iFlag,\r\n iStoreCamp,\r\n poolCount = 0\r\n ) => {\r\n iLoanId = Number(iLoanId) || Number(loanId);\r\n if (iLoanId > 0) {\r\n if (loanOfficerId === 0) {\r\n handleGetLoanOfficerId(iLoanId);\r\n }\r\n\r\n if (vendorOptions.length === 1) {\r\n handleGetVendorListForNewLoanApp(iLoanId);\r\n }\r\n }\r\n if (stateOptions.length <= 1) {\r\n handleGetLoanAppOptions({ iLoanId });\r\n }\r\n\r\n handleAPI({\r\n name: \"GetLoanAppWizard\",\r\n params: { LoanId: iLoanId, SessionId: SessionId, btnflag: 0 },\r\n })\r\n .then(async (response) => {\r\n response = response.split(\"~\");\r\n\r\n let iUserId = 0;\r\n if (response[3] != \"\" && response[3] != null) {\r\n iUserId = JSON.parse(response[3]);\r\n setUserId(iUserId);\r\n }\r\n\r\n let iLoanData = JSON.parse(response[0] || \"[{}]\")[0],\r\n iAdditionalBorrowerInfo = JSON.parse(response[8] || \"[]\") || [];\r\n\r\n if (\r\n (iAdditionalBorrowerInfo.length == 0 ||\r\n Object.keys(iLoanData)[\"length\"] == 0) &&\r\n iLoanId > 0 &&\r\n poolCount < 10\r\n ) {\r\n setTimeout(() => {\r\n handleAPIGetLoanDetails(iLoanId, iFlag, iStoreCamp, poolCount + 1);\r\n }, 1000);\r\n } else {\r\n let loanData_ = {};\r\n\r\n iAdditionalBorrowerInfo = handleOrderAdditionalBorrowerInfo(\r\n iAdditionalBorrowerInfo,\r\n iLoanData.UserId,\r\n \"CustId\"\r\n );\r\n iAdditionalBorrowerInfo = iAdditionalBorrowerInfo.map((item) => {\r\n item[\"MaritalStatus\"] = Number(item[\"MaritalStatus\"]);\r\n return item;\r\n });\r\n\r\n if (iStoreCamp && iLoanData[\"LoanPurpose\"]) {\r\n handleStoreCampaignDetails(iLoanData);\r\n }\r\n\r\n let empDetails = [];\r\n\r\n if (response[12] != \"\" && response[12] != null) {\r\n empDetails = JSON.parse(response[12]);\r\n if (!empDetails[0][\"CustId\"])\r\n empDetails[0][\"CustId\"] = JSON.parse(response[3]);\r\n empDetails.forEach((employment) => {\r\n employment[\"Monthly_Base_Pay\"] = formatCurrency(\r\n employment[\"Monthly_Base_Pay\"],\r\n 2\r\n );\r\n employment[\"Monthly_Overtime_Amt\"] = formatCurrency(\r\n employment[\"Monthly_Overtime_Amt\"],\r\n 2\r\n );\r\n employment[\"Monthly_Bonus_Amt\"] = formatCurrency(\r\n employment[\"Monthly_Bonus_Amt\"],\r\n 2\r\n );\r\n employment[\"Monthly_Commission_Amt\"] = formatCurrency(\r\n employment[\"Monthly_Commission_Amt\"],\r\n 2\r\n );\r\n employment[\"Monthly_Total_Pay\"] = formatCurrency(\r\n employment[\"Monthly_Total_Pay\"],\r\n 2\r\n );\r\n\r\n employment[\"CurrentYrsInLineofwork\"] = employment[\r\n \"CurrentYrsInLineofwork\"\r\n ]\r\n ? employment[\"CurrentYrsInLineofwork\"]\r\n : \"\";\r\n });\r\n\r\n empDetails = empDetails.filter((employment) => {\r\n if (employment[\"CustId\"] === 0) {\r\n handleSaveAdditionalInfo(-1, 6, employment[\"Id\"]); // Deleting empty employment on page load\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n setAdditionalEmploymentInfo(\r\n handleEmploymentOrder(empDetails, iAdditionalBorrowerInfo)\r\n );\r\n }\r\n\r\n if (response[0] != \"\" && response[0] != null && iFlag) {\r\n loanData_ = JSON.parse(response[0])[0];\r\n loanData_ = {\r\n ...loanData_,\r\n CreditRpt_Auth: loanData_[\"CreditRpt_Auth\"] ?? 1,\r\n FrozenCredit: loanData_[\"FrozenCredit\"] || 0,\r\n prevBankAccountLinked: loanData_[\"BankAccountLinked\"],\r\n prevLinkBankAccount: loanData_[\"LinkBankAccount\"],\r\n blAssetOption: 0,\r\n Real_est_prop: 0,\r\n LanguagePreference: loanData_[\"LanguagePreference\"] || 1,\r\n iSpouse_AddBorrower: 0,\r\n prevAddressTBD: loanData_[\"AddressTBD\"],\r\n AddressTBD: loanData_[\"AddressTBD\"] == 1 || false,\r\n OtherIncomeCustId: loanData_[\"OtherIncomeCustId\"] || iUserId,\r\n CashOutAmount: formatCurrency(\r\n loanData_[\"CashOutAmount\"],\r\n 2,\r\n false\r\n ),\r\n Refi_Estmt_LnAmt: formatCurrency(\r\n loanData_[\"Refi_Estmt_LnAmt\"],\r\n 2,\r\n false\r\n ),\r\n Purchase_Estm_LnAmt: formatCurrency(\r\n loanData_[\"Purchase_Estm_LnAmt\"],\r\n 2,\r\n false\r\n ),\r\n Purchase_Estm_Pur_Price: formatCurrency(\r\n loanData_[\"Purchase_Estm_Pur_Price\"],\r\n 2,\r\n false\r\n ),\r\n PaidOff: formatCurrency(loanData_[\"PaidOff\"], 2, false),\r\n Refi_Estmt_Prop_Lnval: formatCurrency(\r\n loanData_[\"Refi_Estmt_Prop_Lnval\"],\r\n 2,\r\n false\r\n ),\r\n DownPayment: formatCurrency(loanData_[\"DownPayment\"], 2, false),\r\n Monthly_Rent: formatCurrency(loanData_[\"Monthly_Rent\"], 2, false),\r\n Monthly_Rent1: formatCurrency(\r\n loanData_[\"Monthly_Rent1\"],\r\n 2,\r\n false\r\n ),\r\n Monthly_Rent2: formatCurrency(\r\n loanData_[\"Monthly_Rent2\"],\r\n 2,\r\n false\r\n ),\r\n Monthly_Rent3: formatCurrency(\r\n loanData_[\"Monthly_Rent3\"],\r\n 2,\r\n false\r\n ),\r\n Bor_money_Amt: formatCurrency(\r\n loanData_[\"Bor_money_Amt\"],\r\n 2,\r\n false\r\n ),\r\n Own1: loanData_[\"Own1\"] == 1,\r\n Own2: loanData_[\"Own2\"] == 1,\r\n Own3: loanData_[\"Own3\"] == 1,\r\n Rent1: loanData_[\"Rent1\"] == 1,\r\n Rent2: loanData_[\"Rent2\"] == 1,\r\n Rent3: loanData_[\"Rent3\"] == 1,\r\n Living_Rent_Free1: loanData_[\"Living_Rent_Free1\"] == 1,\r\n Living_Rent_Free2: loanData_[\"Living_Rent_Free2\"] == 1,\r\n Living_Rent_Free3: loanData_[\"Living_Rent_Free3\"] == 1,\r\n Monthly_Alimony_Expense: formatCurrency(\r\n loanData_[\"Monthly_Alimony_Expense\"],\r\n 2,\r\n false\r\n ),\r\n Monthly_Alimony_Income: formatCurrency(\r\n loanData_[\"Monthly_Alimony_Income\"],\r\n 2,\r\n false\r\n ),\r\n Monthly_ChildSupportExpense: formatCurrency(\r\n loanData_[\"Monthly_ChildSupportExpense\"],\r\n 2,\r\n false\r\n ),\r\n Monthly_ChildSupportIncome: formatCurrency(\r\n loanData_[\"Monthly_ChildSupportIncome\"],\r\n 2,\r\n false\r\n ),\r\n Monthly_Base_Pay: formatCurrency(\r\n loanData_[\"Monthly_Base_Pay\"],\r\n 2,\r\n false\r\n ),\r\n Monthly_Amount: formatCurrency(loanData_[\"Monthly_Amount\"], 2),\r\n Bank_Amount: formatCurrency(loanData_[\"Bank_Amount\"], 2),\r\n Presnt_Markt_Val: formatCurrency(\r\n loanData_[\"Presnt_Markt_Val\"],\r\n 2\r\n ),\r\n VA_Entitlmt_Amt: formatCurrency(\r\n loanData_[\"VA_Entitlmt_Amt\"],\r\n 2,\r\n false\r\n ),\r\n VA_Entitlmt_Amt_used: formatCurrency(\r\n loanData_[\"VA_Entitlmt_Amt_used\"],\r\n 2,\r\n false\r\n ),\r\n currently_employed:\r\n empDetails.length > 0 &&\r\n !loanData_[\"Retired\"] &&\r\n !loanData_[\"Not_CurrentlyEmployed\"]\r\n ? 1\r\n : loanData_[\"currently_employed\"],\r\n Living_Rent_Free:\r\n (loanData_[\"Rent\"] &&\r\n cleanValue(loanData_[\"Monthly_Rent\"]) == 0) ||\r\n loanData_[\"Living_Rent_Free\"],\r\n Addrshistry_Years:\r\n loanData_[\"Addrshistry_Months\"] &&\r\n !loanData_[\"Addrshistry_Years\"]\r\n ? 0\r\n : loanData_[\"Addrshistry_Years\"],\r\n Addrshistry_Months:\r\n !loanData_[\"Addrshistry_Months\"] &&\r\n loanData_[\"Addrshistry_Years\"]\r\n ? 0\r\n : loanData_[\"Addrshistry_Months\"],\r\n SSN: loanData_[\"SSN\"]\r\n ?.toString()\r\n .replaceAll(\"undefined\", \"\")\r\n .replaceAll(\"null\", \"\"),\r\n };\r\n if (__DEV__) loanData_[\"LockLoanApp\"] = 0;\r\n if (empDetails.length === 0 && loanData_[\"currently_employed\"]) {\r\n loanData_ = {\r\n ...loanData_,\r\n currently_employed: 0,\r\n Retired: 0,\r\n Not_CurrentlyEmployed: true,\r\n };\r\n }\r\n\r\n try {\r\n if (!loanData_[\"Addrshistry_Months\"]) {\r\n let [year, month] = (loanData_[\"Addrshistry_Years\"] || \"\")\r\n .split(\".\")\r\n .slice(0, 2);\r\n loanData_[\"Addrshistry_Months\"] = month || 0;\r\n loanData_[\"Addrshistry_Years\"] = year || 0;\r\n }\r\n } catch (error) {}\r\n\r\n //Getting DownPayment value during load\r\n try {\r\n if (Number(loanData_[\"LoanPurpose\"]) === 1) {\r\n let AppVal = cleanValue(loanData_[\"Purchase_Estm_Pur_Price\"]),\r\n lnAmtTxt = cleanValue(loanData_[\"Purchase_Estm_LnAmt\"]),\r\n DownPayment = parseFloat(AppVal) - parseFloat(lnAmtTxt),\r\n DownPay = cleanValue(DownPayment),\r\n DownPaymentPercent = roundNumber(\r\n (parseFloat(DownPay) / parseFloat(AppVal)) * 100,\r\n 2\r\n );\r\n\r\n if (isNaN(DownPaymentPercent)) DownPaymentPercent = \"0.00\";\r\n loanData_ = {\r\n ...loanData_,\r\n ...{\r\n Purchase_Estm_Pur_Price: formatCurrency(AppVal, 2),\r\n DownPayment: formatCurrency(DownPayment, 2),\r\n DownPaymentPercent: DownPaymentPercent,\r\n Purchase_Estm_LnAmt: formatCurrency(\r\n loanData_[\"Purchase_Estm_LnAmt\"],\r\n 2\r\n ),\r\n },\r\n };\r\n }\r\n } catch (ex) {\r\n console.error(\"Getting DownPayment value during load ===> \", ex);\r\n }\r\n if (!(loanData_[\"NickName\"] || \"\").trim())\r\n loanData_[\"NickName\"] = (loanData_[\"FirstName\"] || \"\").trim();\r\n\r\n let subjectPropertyAddress = await handleGetSubjectPropertyAddress(\r\n iLoanId\r\n );\r\n loanData_ = { ...subjectPropertyAddress, ...loanData_ };\r\n }\r\n\r\n if (response[8] != \"\" && response[8] != null) {\r\n iAdditionalBorrowerInfo.forEach((borrower) => {\r\n borrower[\"Present Rent\"] = formatCurrency(\r\n borrower[\"Present Rent\"],\r\n 2\r\n );\r\n\r\n borrower[\"Present Rent1\"] = formatCurrency(\r\n borrower[\"Present Rent1\"],\r\n 2\r\n );\r\n borrower[\"Present Rent2\"] = formatCurrency(\r\n borrower[\"Present Rent2\"],\r\n 2\r\n );\r\n borrower[\"Present Rent3\"] = formatCurrency(\r\n borrower[\"Present Rent3\"],\r\n 2\r\n );\r\n borrower[\"Bor Own\"] =\r\n borrower[\"Bor Own\"] == \"R\" &&\r\n cleanValue(borrower[\"Present Rent\"]) == 0\r\n ? \"L\"\r\n : borrower[\"Bor Own\"];\r\n\r\n borrower[\"VA_Entitlmt_Amt\"] = formatCurrency(\r\n borrower[\"VA_Entitlmt_Amt\"],\r\n 2\r\n );\r\n borrower[\"VA_Entitlmt_Amt_used\"] = formatCurrency(\r\n borrower[\"VA_Entitlmt_Amt_used\"],\r\n 2\r\n );\r\n borrower[\"MoneyBorrowedForDown\"] = formatCurrency(\r\n borrower[\"MoneyBorrowedForDown\"],\r\n 2\r\n );\r\n\r\n if (!(borrower[\"NickName\"] || \"\").trim())\r\n borrower[\"NickName\"] = (borrower[\"FirstName\"] || \"\").trim();\r\n });\r\n\r\n setAdditionalBorrowerInfo(\r\n sortByKey(iAdditionalBorrowerInfo, \"CustId\")\r\n );\r\n }\r\n\r\n if (response[9] != \"\" && response[9] != null) {\r\n let iAdditionalOtherIncome = JSON.parse(response[9]);\r\n iAdditionalOtherIncome.forEach((income) => {\r\n income[\"Monthly_Amount\"] = formatCurrency(\r\n income[\"Monthly_Amount\"],\r\n 2\r\n );\r\n });\r\n\r\n setAdditionalOtherIncomeInfo(iAdditionalOtherIncome);\r\n }\r\n\r\n if (response[10] != \"\" && response[10] != null) {\r\n let iAdditionalPropertyInfo = JSON.parse(response[10]);\r\n iAdditionalPropertyInfo.forEach((property) => {\r\n property[\"Presnt_Markt_Val\"] = formatCurrency(\r\n property[\"Presnt_Markt_Val\"],\r\n 2\r\n );\r\n });\r\n setAdditionalPropertyInfo(iAdditionalPropertyInfo);\r\n }\r\n\r\n if (response[11] != \"\" && response[11] != null) {\r\n let iAdditionalBankInfo = JSON.parse(response[11]);\r\n\r\n iAdditionalBankInfo.forEach((bank) => {\r\n const { AccType, AccTypeName } = bank;\r\n bank[\"Amount\"] = formatCurrency(bank[\"Amount\"], 2);\r\n if (AccType == 1 && !AccTypeName)\r\n bank[\"AccTypeName\"] = \"Checking\";\r\n else if (AccType == 2 && !AccTypeName)\r\n bank[\"AccTypeName\"] = \"Savings\";\r\n else if (![1, 2].includes(Number(AccType))) {\r\n bank[\"AccType\"] = \"-1\";\r\n bank[\"AccTypeName\"] = \"Other Type\";\r\n bank[\"OtherAccType\"] = AccType?.toString();\r\n bank[\"TypeDesc\"] = getOtherAccountDesc(AccType);\r\n bank[\"EarnestMoneyPaidTo\"] =\r\n bank[\"paidToId\"] + \"####\" + bank[\"paidToType\"];\r\n }\r\n });\r\n\r\n setAdditionalBankInfo(iAdditionalBankInfo);\r\n } else if (loanData_[\"blAssetOption\"] == 1) {\r\n handleSaveAdditionalInfo(-1, -3, -3, true);\r\n }\r\n\r\n let iAdditionalCounsellingInfo = [];\r\n if (response[14] != \"\" && response[14] != null) {\r\n iAdditionalCounsellingInfo = JSON.parse(response[14]);\r\n }\r\n\r\n iAdditionalBorrowerInfo.forEach((obj) => {\r\n const existingObject = iAdditionalCounsellingInfo.find(\r\n (item) => item[\"CustID\"] === obj[\"CustId\"]\r\n );\r\n\r\n if (existingObject) {\r\n // If an object with the same id exists, update its properties\r\n Object.assign(existingObject, {});\r\n } else {\r\n // If no object with the same id exists, push the new object to arr\r\n iAdditionalCounsellingInfo.push({\r\n Couns_Confirm: null,\r\n Couns_Comp_Date: null,\r\n Couns_Type: null,\r\n Couns_Agency_Name: null,\r\n LanguagePreference: null,\r\n OtherLanguageDescription: null,\r\n CustID: obj[\"CustId\"],\r\n });\r\n }\r\n });\r\n iAdditionalCounsellingInfo = sortByKey(\r\n iAdditionalCounsellingInfo,\r\n \"CustID\"\r\n );\r\n iAdditionalCounsellingInfo = iAdditionalCounsellingInfo.map(\r\n (item) => {\r\n item[\"LanguagePreference\"] = item[\"LanguagePreference\"] || 1;\r\n return item;\r\n }\r\n );\r\n\r\n setAdditionalCounsellingInfo(iAdditionalCounsellingInfo);\r\n\r\n setLoanData((prevLoanData) => {\r\n if (\r\n currentPage === pageArray[pageId[\"documentUpload\"]] &&\r\n empDetails.length > 0\r\n ) {\r\n prevLoanData[\"currently_employed\"] = 1;\r\n }\r\n return { ...loanData_, ...prevLoanData, isLoaded: true };\r\n });\r\n setIsDataLoadedForDocUpload(true);\r\n }\r\n })\r\n .catch((err) => console.error(\"Error from GetLoanAppWizard ====> \", err));\r\n };\r\n const handleGetLoanAppOptions = async ({ iLoanId }) => {\r\n handleAPI({\r\n name: \"GetOtherVendorTypeForNewLoanApp\",\r\n params: { LoanId: iLoanId },\r\n })\r\n .then(async (response) => {\r\n const { parse } = JSON;\r\n response = JSON[\"parse\"](response)[\"Table\"][0];\r\n\r\n for (const key in response) {\r\n response[key] = JSON.parse(response[key] || \"[]\");\r\n }\r\n\r\n const {\r\n StateOptionsJson,\r\n OtherIncomeOptionsJson,\r\n PropertyTypeOptionsJson,\r\n AccTypeOption,\r\n giftOption,\r\n } = response;\r\n\r\n setOtherIncomeOption(\r\n OtherIncomeOptionsJson.map((e) => {\r\n return { value: e.TypeOption, label: e.TypeDesc };\r\n })\r\n );\r\n\r\n setStateOptions(\r\n StateOptionsJson[\"State\"].map((e) => {\r\n return { value: e.TypeOption, label: e.TypeDesc };\r\n })\r\n );\r\n\r\n setPropertyTypeOption(\r\n PropertyTypeOptionsJson.map((e) => {\r\n return { value: e.TypeOption, label: e.TypeDesc };\r\n })\r\n );\r\n\r\n setAccountTypeOption(AccTypeOption);\r\n\r\n setGiftOptions(giftOption);\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from GetOtherVendorTypeForNewLoanApp ====> \", err)\r\n );\r\n };\r\n const handleGetVendorListForNewLoanApp = async (LoanID) => {\r\n handleAPI({\r\n name: \"GetVendorListForNewLoanApp\",\r\n params: { LoanID },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response);\r\n response = response\r\n .filter(({ VendorName, sortname }) => VendorName && sortname)\r\n .map(({ VendorIdType: value, VendorName: label }) => ({\r\n value,\r\n label,\r\n }));\r\n setVendorOptions(response);\r\n })\r\n .catch((err) =>\r\n console.error(\"Error form GetLoanOfficerList ====> \", err)\r\n );\r\n };\r\n const handlePostVendorAdd = async ({ LoanID, bankIndex, VendorId }) => {\r\n handleGetVendorListForNewLoanApp(LoanID);\r\n handleUpdateAddtionalBank(bankIndex, \"EarnestMoneyPaidTo\", VendorId);\r\n };\r\n const navigate = (path, option) => {\r\n if (path === \"DashBoard\") {\r\n handleClearState();\r\n }\r\n updateWebURL({ ...option, Path: path });\r\n (navigation || props[\"navigation\"]).navigate(path, option || {});\r\n };\r\n const handleGetFirstPageField = (source, cFields, index, cIndex) => {\r\n let isBlank = cFields.filter((item) => {\r\n let value = (\r\n item[\"name\"] === \"CellPhone\"\r\n ? source[item[\"name\"]]?.split(\"*5*\")[1]\r\n : source[item[\"name\"]]\r\n )\r\n ?.toString()\r\n ?.replaceAll(\"$\", \"\")\r\n ?.replaceAll(\",\", \"\")\r\n ?.replaceAll(\"0.00\", \"\")\r\n ?.replaceAll(\"%\", \"\");\r\n\r\n return value == item[\"value\"];\r\n });\r\n return isBlank.length > 0 && index === -1 ? cIndex : index;\r\n };\r\n const handleGetFirstPageFieldNew = (source, cFields) => {\r\n let isBlank = cFields.filter((item) => {\r\n let value =\r\n item[\"name\"] === \"CellPhone\"\r\n ? source[item[\"name\"]]?.replaceAll(\"*5*\", \"\")\r\n : source[item[\"name\"]];\r\n\r\n if (item[\"falseCheck\"]) return !Number(value);\r\n\r\n if (item[\"lengthLimit\"]) {\r\n return (\r\n value?.toString().replace(/[(),\\-,\\* ]/g, \"\").length !=\r\n item[\"lengthLimit\"]\r\n );\r\n }\r\n\r\n value = value\r\n ?.toString()\r\n ?.replaceAll(\"$\", \"\")\r\n ?.replaceAll(\",\", \"\")\r\n ?.replaceAll(\"0.00\", \"\")\r\n ?.replaceAll(\"%\", \"\");\r\n\r\n item[\"value\"] = item[\"value\"]\r\n ?.toString()\r\n ?.replaceAll(\"$\", \"\")\r\n ?.replaceAll(\",\", \"\")\r\n ?.replaceAll(\"0.00\", \"\")\r\n ?.replaceAll(\"%\", \"\");\r\n\r\n return value == (item[\"value\"] || \"\");\r\n });\r\n return isBlank.length > 0 || false;\r\n };\r\n\r\n const handleEmploymentOrder = (\r\n unOrderedEmployment,\r\n iAdditionalBorrowerInfo,\r\n isChangePage\r\n ) => {\r\n let subPage = pageIndex[\"subPage\"],\r\n currentIndex = unOrderedEmployment[subPage - 1];\r\n\r\n if (additionalBorrowerInfo?.length > 0)\r\n iAdditionalBorrowerInfo = additionalBorrowerInfo;\r\n\r\n let orderedEmployment = groupByKey(\r\n additionalEmploymentInfo.map((employment, index) => {\r\n let empRow =\r\n iAdditionalBorrowerInfo?.filter(\r\n (borrower) =>\r\n Number(borrower[\"CustId\"]) === Number(employment[\"CustId\"])\r\n ) || [];\r\n if (empRow.length > 0) empRow = empRow[0];\r\n return {\r\n Name:\r\n empRow[\"FirstName\"] || empRow[\"LastName\"]\r\n ? `${empRow[\"FirstName\"]} ${empRow[\"LastName\"]}`\r\n : `Employment ${index + 1}`,\r\n CustId: employment[\"CustId\"],\r\n subName:\r\n `${employment[\"Empmt_Emp_Name\"]} ${employment[\"Job_Title\"]}`.trim() ||\r\n `Employment ${index + 1}`,\r\n Id: employment[\"Id\"],\r\n };\r\n }),\r\n \"Name\"\r\n );\r\n\r\n orderedEmployment = orderedEmployment.reduce((result, item) => {\r\n return result.concat(item.subMenu);\r\n }, []);\r\n\r\n unOrderedEmployment = sortByKey(unOrderedEmployment, \"CustId\");\r\n\r\n let newRow = [],\r\n existingRow = [];\r\n unOrderedEmployment.forEach((item) => {\r\n if (item[\"CustId\"] == 0) newRow.push(item);\r\n else existingRow.push(item);\r\n });\r\n unOrderedEmployment = [...existingRow, ...newRow];\r\n isChangePage &&\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: unOrderedEmployment.indexOf(currentIndex) + 1,\r\n });\r\n\r\n return unOrderedEmployment;\r\n };\r\n const handleGetFirstPageOption = (value, options, index, cIndex) => {\r\n value = (isNaN(value) ? value : Number(value)) || \"\";\r\n return index === -1 && options.indexOf(value) === -1 ? cIndex : index;\r\n };\r\n const handleLoaderDetails = ({ isLoad, text }) => {\r\n setLoaderDetails({\r\n ...loaderDetails,\r\n ...{ isLoad: isLoad, text: text || \"Loading...\" },\r\n });\r\n };\r\n const handleLogOut = () => {\r\n handleAPI({\r\n name: \"LogOutSession\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then(() => {\r\n let Path = web ? \"Login\" : \"StartScreen\";\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, Path };\r\n });\r\n navigate(Path, { userName: userName });\r\n })\r\n .catch((err) => console.error(\"Error from LogOutSession ====> \", err));\r\n };\r\n\r\n const handleUpdateCompletedPage = (iLeftNavStatus) => {\r\n if (Object.keys(LoanData).length > 0) {\r\n iLeftNavStatus = iLeftNavStatus || leftNavStatus;\r\n let { iCompletedPage = [], iInCompletedSubPage } = handleGetPageNumber(\r\n true,\r\n undefined,\r\n iLeftNavStatus\r\n );\r\n\r\n iCompletedPage = [\r\n ...new Set([...iLeftNavStatus, ...iCompletedPage]),\r\n ].sort();\r\n\r\n setCompletedPage(iCompletedPage);\r\n setInCompletedSubPage(iInCompletedSubPage);\r\n }\r\n };\r\n const handleGetPageNumber = (iExp, iIndex, iLeftNavStatus) => {\r\n let iPage = 0,\r\n iSubPage = -1,\r\n iCompletedPage = [],\r\n currentPage_ = currentPage,\r\n iInCompletedSubPage = [],\r\n inCompletedSubPageObjNew = {};\r\n\r\n iLeftNavStatus = iLeftNavStatus || leftNavStatus;\r\n\r\n if (Object.keys(LoanData).length > 0) {\r\n //TODO ======= Summary Info =======\r\n let iPageId = pageId[\"summaryInfo\"];\r\n\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n const {\r\n LoanPurpose,\r\n Propertybe: ProperType,\r\n LoanSummaryPropertyType,\r\n AddressTBD,\r\n subjectAddress,\r\n subjectZip,\r\n subjectCity,\r\n subjectState,\r\n Prop_Years,\r\n Pri_purpose_Refi: priPurpose,\r\n } = LoanData;\r\n\r\n if (![1, 2].includes(Number(LoanPurpose))) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n if (![1, 2, 3].includes(Number(ProperType))) {\r\n iInCompletedSubPage.push(LoanPurpose == 1 ? 5 : 4);\r\n }\r\n if (!(parseInt(loanOfficerId) && parseInt(loanOfficers))) {\r\n iInCompletedSubPage.push(LoanPurpose == 1 ? 4 : 3);\r\n }\r\n if (!Number(LoanSummaryPropertyType)) {\r\n iInCompletedSubPage.push(LoanPurpose == 1 ? 5 : 4);\r\n }\r\n\r\n if (\r\n LoanPurpose == 1 &&\r\n !AddressTBD &&\r\n (!subjectAddress ||\r\n subjectZip?.toString().length != 5 ||\r\n !subjectCity ||\r\n !subjectState ||\r\n !Prop_Years)\r\n ) {\r\n iInCompletedSubPage.push(LoanPurpose == 1 ? 5 : 4);\r\n } else if (\r\n LoanPurpose != 1 &&\r\n (!subjectAddress ||\r\n subjectZip?.toString().length != 5 ||\r\n !subjectCity ||\r\n !subjectState ||\r\n !Prop_Years)\r\n ) {\r\n iInCompletedSubPage.push(LoanPurpose == 1 ? 5 : 4);\r\n }\r\n\r\n if (LoanPurpose == 2 && ![1, 2].includes(Number(priPurpose))) {\r\n iInCompletedSubPage.push(5);\r\n }\r\n\r\n if (LoanPurpose == 1) {\r\n if (\r\n handleGetFirstPageFieldNew(LoanData, [\r\n { name: \"Purchase_Estm_Pur_Price\", value: \"\" },\r\n // { name: \"DownPayment\", value: 0 },\r\n // { name: \"DownPaymentPercent\", value: 0 },\r\n { name: \"Purchase_Estm_LnAmt\", value: \"\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(6);\r\n }\r\n } else {\r\n if (\r\n handleGetFirstPageFieldNew(LoanData, [\r\n { name: \"Refi_Estmt_Prop_Lnval\", value: \"\" },\r\n { name: \"Refi_Estmt_LnAmt\", value: \"\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(6);\r\n }\r\n }\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = iInCompletedSubPage;\r\n\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (iSubPage === -1) iCompletedPage.push(iPageId);\r\n\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n } else if (iPage === iPageId && iSubPage === -1 && !iIndex) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n //TODO ======= Contact Info =======\r\n iPageId = pageId[\"borrowerInfo\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n iInCompletedSubPage = [];\r\n if (\r\n handleGetFirstPageFieldNew(LoanData, [\r\n { name: \"FirstName\", value: \"\" },\r\n { name: \"LastName\", value: \"\" },\r\n { name: \"CellPhone\", value: \"\", lengthLimit: 10 },\r\n { name: \"EmailId\", value: \"\" },\r\n { name: \"BirthDate\", value: \"\" },\r\n { name: \"MaritalStatus\", value: \"0\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n\r\n if (additionalBorrowerInfo.length > 1) {\r\n additionalBorrowerInfo.slice(1).map((borrower, index) => {\r\n if (\r\n handleGetFirstPageFieldNew(borrower, [\r\n { name: \"FirstName\", value: \"\" },\r\n { name: \"LastName\", value: \"\" },\r\n { name: \"CellPhone\", value: \"\", lengthLimit: 10 },\r\n { name: \"Email\", value: \"\" },\r\n { name: \"BirthDate\", value: \"\" },\r\n { name: \"MaritalStatus\", value: \"0\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(index + 1);\r\n }\r\n });\r\n }\r\n\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = iInCompletedSubPage;\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (iSubPage === -1) iCompletedPage.push(iPageId);\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n //TODO ======= Borrower Verification =======\r\n iPageId = pageId[\"borrowerVerification\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n const { LinkBankAccount, BankAccountLinked } = LoanData;\r\n iInCompletedSubPage = [];\r\n\r\n if (LinkBankAccount == 1 && BankAccountLinked != 0) {\r\n iInCompletedSubPage.push(-1);\r\n } else if (LinkBankAccount == 2) {\r\n iInCompletedSubPage.push(-1);\r\n } else if (LinkBankAccount == 1) {\r\n iInCompletedSubPage.push(0);\r\n } else {\r\n iInCompletedSubPage.push(0);\r\n }\r\n\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n inCompletedSubPageObjNew[pageArray[iPageId]] =\r\n iInCompletedSubPage.filter((_) => _ >= 0);\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (iSubPage === -1) iCompletedPage.push(iPageId);\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n //TODO ======= Assets =======\r\n iPageId = pageId[\"bankAccounts\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n iInCompletedSubPage = [];\r\n const { blAssetOption } = LoanData;\r\n\r\n if (\r\n additionalBankInfo.length === 0 &&\r\n ![0, 1].includes(Number(blAssetOption))\r\n ) {\r\n iInCompletedSubPage.push(0);\r\n } else {\r\n additionalBankInfo.map((bank, index) => {\r\n const { OtherAccType, AccType } = bank;\r\n if (!OtherAccType) bank[\"OtherAccType\"] = \"0\";\r\n\r\n if (\r\n handleGetFirstPageFieldNew(\r\n bank,\r\n [\r\n { name: \"AccType\", value: \"\" },\r\n AccType == \"-1\" && { name: \"OtherAccType\", value: \"0\" },\r\n ((![3, 4, 12, 19, 20, 33, 37, 22].includes(\r\n Number(OtherAccType)\r\n ) &&\r\n Number(OtherAccType)) ||\r\n AccType != \"-1\") && { name: \"BankName\", value: \"\" },\r\n\r\n ...(AccType == \"-1\"\r\n ? [12, 33].includes(Number(OtherAccType))\r\n ? [{ name: \"Description\", value: \"\" }]\r\n : [4].includes(Number(OtherAccType))\r\n ? [{ name: \"Description\", value: \"\" }]\r\n : [3, 19, 20, 37].includes(Number(OtherAccType))\r\n ? [\r\n { name: \"BankName\", value: \"\" },\r\n { name: \"giftfrom\", value: \"\" },\r\n { name: \"Account\", value: \"\" },\r\n ]\r\n : [22].includes(Number(OtherAccType))\r\n ? [\r\n { name: \"Description\", value: \"\" },\r\n { name: \"lifeInsFace\", value: 0, falseCheck: true },\r\n { name: \"lifeInsValue\", value: 0, falseCheck: true },\r\n ]\r\n : []\r\n : []),\r\n\r\n ((![22].includes(Number(OtherAccType)) &&\r\n Number(OtherAccType)) ||\r\n AccType != \"-1\") && {\r\n name: \"Amount\",\r\n value: \"\",\r\n },\r\n (Number(OtherAccType) || AccType != \"-1\") && {\r\n name: \"OwnerIdList\",\r\n value: \"\",\r\n },\r\n ].filter((item) => item)\r\n )\r\n ) {\r\n iInCompletedSubPage.push(index);\r\n }\r\n });\r\n }\r\n\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = iInCompletedSubPage;\r\n\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (\r\n iSubPage === -1 &&\r\n (additionalBankInfo.length > 0 || LoanData[\"blAssetOption\"] == 0)\r\n ) {\r\n iCompletedPage.push(iPageId);\r\n }\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n //TODO ======= Address History =======\r\n iPageId = pageId[\"addressHistory\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n iInCompletedSubPage = [];\r\n const {\r\n Addrshistry_Years,\r\n Addrshistry_Months,\r\n Own,\r\n Rent,\r\n Living_Rent_Free,\r\n Monthly_Rent,\r\n } = LoanData;\r\n\r\n let pageCrossCount = 0;\r\n\r\n //Primary Borr Section\r\n if (\r\n handleGetFirstPageFieldNew(LoanData, [\r\n { name: \"Current_Street_Address\", value: \"\" },\r\n { name: \"Addrshistry_ZipCode\", value: \"\", lengthLimit: 5 },\r\n { name: \"Addrshistry_City\", value: \"\" },\r\n { name: \"Addrshistry_State\", value: \"\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n if (!parseInt(Addrshistry_Years) && !parseInt(Addrshistry_Months)) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n if (!Own && !Rent && !Living_Rent_Free) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n if (Rent && cleanValue(Monthly_Rent || 0) == 0) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n //For Previous Address Info\r\n let monthCount = handleGetMonthCount(\r\n Addrshistry_Months || 0,\r\n Addrshistry_Years || 0\r\n ),\r\n totalMonthCount = monthCount;\r\n\r\n if (totalMonthCount < 24) {\r\n for (let i = 1; i < 4; i++) {\r\n monthCount = handleGetMonthCount(\r\n LoanData[`Addrshistry_Months${i}`] || 0,\r\n LoanData[`Addrshistry_Years${i}`] || 0\r\n );\r\n\r\n if (totalMonthCount < 24) {\r\n pageCrossCount++;\r\n totalMonthCount = totalMonthCount + monthCount;\r\n if (\r\n handleGetFirstPageFieldNew(LoanData, [\r\n { name: `PrevCurrent_Street_Address${i}`, value: \"\" },\r\n {\r\n name: `Addrshistry_ZipCode${i}`,\r\n value: \"\",\r\n lengthLimit: 5,\r\n },\r\n { name: `Addrshistry_City${i}`, value: \"\" },\r\n { name: `Addrshistry_State${i}`, value: \"\" },\r\n { name: `Addrshistry_Years${i}`, value: \"\" },\r\n { name: `Addrshistry_Months${i}`, value: \"\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(i);\r\n }\r\n\r\n if (\r\n !parseInt(LoanData[`Addrshistry_Years${i}`]) &&\r\n !parseInt(LoanData[`Addrshistry_Months${i}`])\r\n ) {\r\n iInCompletedSubPage.push(i);\r\n }\r\n\r\n if (\r\n !LoanData[`Own${i}`] &&\r\n !LoanData[`Rent${i}`] &&\r\n !LoanData[`Living_Rent_Free${i}`]\r\n ) {\r\n iInCompletedSubPage.push(i);\r\n }\r\n if (\r\n LoanData[`Rent${i}`] &&\r\n cleanValue(LoanData[`Monthly_Rent${i}`] || 0) == 0\r\n ) {\r\n iInCompletedSubPage.push(i);\r\n }\r\n }\r\n }\r\n }\r\n //============================================\r\n if (additionalBorrowerInfo.length > 1) {\r\n //Additional Borr Section\r\n\r\n additionalBorrowerInfo.slice(1).forEach((borrower, index) => {\r\n //For Previous Address Info\r\n pageCrossCount++;\r\n\r\n if (\r\n handleGetFirstPageFieldNew(borrower, [\r\n { name: \"Address1\", value: \"\" },\r\n { name: \"Zip\", value: \"\", lengthLimit: 5 },\r\n { name: \"City\", value: \"\" },\r\n { name: \"State\", value: \"\" },\r\n { name: \"Bor Own Period\", value: \"\" },\r\n ])\r\n ) {\r\n // inCompletePage.push(index + 1);\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n\r\n if (\r\n borrower[\"Bor Own\"] === \"R\" &&\r\n (cleanValue(borrower[\"Present Rent\"]) || 0) == 0\r\n ) {\r\n // inCompletePage.push(index + 1);\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n\r\n if (\r\n borrower[\"Bor Own\"] !== \"O\" &&\r\n borrower[\"Bor Own\"] !== \"R\" &&\r\n borrower[\"Bor Own\"] !== \"L\"\r\n ) {\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n\r\n let month = handleGetBorrYearMonth(\r\n borrower[\"Bor Own Period\"],\r\n \"Months\"\r\n ),\r\n year = handleGetBorrYearMonth(\r\n borrower[\"Bor Own Period\"],\r\n \"Years\"\r\n );\r\n\r\n monthCount = handleGetMonthCount(month, year);\r\n\r\n if (!parseInt(year) && !parseInt(month)) {\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n\r\n totalMonthCount = monthCount;\r\n\r\n for (let i = 1; i < 4; i++) {\r\n if (totalMonthCount < 24) {\r\n pageCrossCount++;\r\n month = handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Months\"\r\n );\r\n year = handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Years\"\r\n );\r\n monthCount = handleGetMonthCount(month, year);\r\n if (\r\n handleGetFirstPageFieldNew(borrower, [\r\n { name: `Bor For Add${i}`, value: \"\" },\r\n { name: `BorForZip${i + 1}`, value: \"\", lengthLimit: 5 },\r\n { name: `BorForCity${i + 1}`, value: \"\" },\r\n { name: `BorForState${i + 1}`, value: \"\" },\r\n ])\r\n ) {\r\n // inCompletePage.push(index + 1);\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n if (!parseInt(year) && !parseInt(month)) {\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n\r\n if (\r\n borrower[`Bor For Add${i} Own`] !== \"O\" &&\r\n borrower[`Bor For Add${i} Own`] !== \"R\" &&\r\n borrower[`Bor For Add${i} Own`] !== \"L\"\r\n ) {\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n\r\n if (\r\n borrower[`Bor For Add${i} Own`] == \"R\" &&\r\n cleanValue(borrower[`Present Rent${i}`] || 0) == 0\r\n ) {\r\n iInCompletedSubPage.push(pageCrossCount);\r\n }\r\n\r\n totalMonthCount = totalMonthCount + monthCount;\r\n }\r\n }\r\n });\r\n }\r\n\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = iInCompletedSubPage;\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n // iInCompletedSubPage = convertToArrayCategory(iInCompletedSubPage);\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (iSubPage === -1) iCompletedPage.push(iPageId);\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n\r\n //============================================\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n //TODO ======= Credit Report =======\r\n iPageId = pageId[\"creditScore\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId) &&\r\n iPageId) ||\r\n (iExp && iIndex === iPageId && iPageId)\r\n ) {\r\n let { Status, Details } = creditScoreDetails;\r\n iInCompletedSubPage = [];\r\n const { CreditReport, FrozenCredit, SSN, CreditRpt_Auth } = LoanData;\r\n if (![0, 1].includes(Number(CreditReport ?? -1))) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n if (Number(CreditReport ?? -1) == 1) {\r\n if (\r\n ![0, 1].includes(Number(FrozenCredit == null ? -1 : FrozenCredit))\r\n ) {\r\n iInCompletedSubPage.push(1);\r\n }\r\n\r\n if (Number(FrozenCredit) === 0) {\r\n if (SSN?.toString().replace(/-/g, \"\").length != 9)\r\n iInCompletedSubPage.push(2);\r\n\r\n additionalBorrowerInfo.slice(1).map((borrower) => {\r\n if (borrower[\"SSN\"]?.toString().replace(/-/g, \"\").length != 9)\r\n iInCompletedSubPage.push(2);\r\n });\r\n\r\n if (![0, 1].includes(Number(CreditRpt_Auth ?? -1))) {\r\n iInCompletedSubPage.push(3);\r\n }\r\n }\r\n }\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = iInCompletedSubPage;\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (Status !== 5 && !Details[0]?.iFinalScanDocID) iSubPage = -2;\r\n if (iExp) {\r\n iPage++;\r\n if (iSubPage === -1) iCompletedPage.push(iPageId);\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n if (iSubPage === -2) iSubPage = -1;\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n\r\n //TODO ======= Income =======\r\n iPageId = pageId[\"employment\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n iInCompletedSubPage = [];\r\n\r\n const {\r\n currently_employed,\r\n Retired,\r\n Not_CurrentlyEmployed,\r\n IsOtherIncome,\r\n IsAlimonyChildSupport,\r\n } = LoanData,\r\n iInCompletedSubPage_ = [];\r\n\r\n if (!currently_employed && !Retired && !Not_CurrentlyEmployed) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n\r\n if (currently_employed === 1) {\r\n if (additionalEmploymentInfo.length == 0) iInCompletedSubPage.push(0);\r\n let prevCustId = additionalEmploymentInfo[0]?.[\"CustId\"] || 0,\r\n iIndex = 0;\r\n additionalEmploymentInfo.forEach((employment, index) => {\r\n let { CustId } = employment;\r\n if (CustId != prevCustId) {\r\n prevCustId = CustId;\r\n iIndex = iIndex + 1;\r\n }\r\n\r\n if (\r\n handleGetFirstPageFieldNew(employment, [\r\n { name: \"CustId\", value: \"\" },\r\n { name: \"Empmt_Emp_Name\", value: \"\" },\r\n { name: \"Emp_Strt_Addrs\", value: \"\" },\r\n { name: \"Emp_ZipCode\", value: \"\", lengthLimit: 5 },\r\n { name: \"Emp_City\", value: \"\" },\r\n { name: \"Emp_State\", value: \"\" },\r\n { name: \"Emp_phone\", value: \"\", lengthLimit: 10 },\r\n { name: \"Job_Title\", value: \"\" },\r\n { name: \"Employed_From\", value: \"\" },\r\n { name: \"Employed_To\", value: \"\" },\r\n { name: \"CurrentYrsInLineofwork\", value: 0, falseCheck: true },\r\n ])\r\n ) {\r\n iInCompletedSubPage_.push(iIndex + 1);\r\n }\r\n\r\n iIndex++;\r\n });\r\n } else {\r\n if (IsOtherIncome) {\r\n if (\r\n handleGetFirstPageFieldNew(LoanData, [\r\n { name: \"Payor_Name\", value: \"\" },\r\n { name: \"Source_Other_Incm\", value: \"0\" },\r\n { name: \"Monthly_Amount\", value: \"\" },\r\n { name: \"OtherIncomeCustId\", value: \"-99\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(1);\r\n }\r\n\r\n additionalOtherIncomeInfo.forEach((income, index) => {\r\n if (\r\n handleGetFirstPageFieldNew(income, [\r\n { name: \"Payor_Name\", value: \"\" },\r\n { name: \"Source_Other_Incm\", value: \"0\" },\r\n { name: \"Monthly_Amount\", value: \"\" },\r\n { name: \"CustId\", value: \"-99\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(index + 2);\r\n }\r\n });\r\n }\r\n }\r\n let additionalPageCount =\r\n currently_employed === 1\r\n ? removeDuplicates(additionalEmploymentInfo, \"CustId\")[\"length\"] ||\r\n 0\r\n : 2;\r\n\r\n if (![0, 1].includes(Number(IsAlimonyChildSupport ?? -1))) {\r\n iInCompletedSubPage.push(\r\n additionalPageCount + additionalOtherIncomeInfo.length + 2\r\n );\r\n }\r\n\r\n if ([1].includes(Number(IsAlimonyChildSupport ?? -1))) {\r\n if (\r\n handleGetFirstPageFieldNew(LoanData, [\r\n { name: \"OtherAlimonyIncomeCustId\", value: \"-99\" },\r\n // { name: \"Monthly_Alimony_Expense\", value: \"\" },\r\n // { name: \"Monthly_Alimony_Income\", value: \"\" },\r\n // { name: \"Monthly_ChildSupportExpense\", value: \"\" },\r\n // { name: \"Monthly_ChildSupportIncome\", value: \"\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(\r\n additionalPageCount +\r\n (LoanData[\"currently_employed\"] === 1\r\n ? additionalEmploymentInfo.length\r\n : additionalOtherIncomeInfo.length) +\r\n 1\r\n );\r\n }\r\n }\r\n\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = [\r\n iInCompletedSubPage,\r\n iInCompletedSubPage_,\r\n ];\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iInCompletedSubPage_.length\r\n ? iInCompletedSubPage_[0]\r\n : iSubPage;\r\n\r\n if (iIndex === iPageId) {\r\n iSubPage =\r\n additionalEmploymentInfo.length > 0 &&\r\n iSubPage == -1 &&\r\n currently_employed === 1\r\n ? 1\r\n : iSubPage;\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (iSubPage === -1) iCompletedPage.push(iPageId);\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n\r\n //TODO ======= REO =======\r\n iPageId = pageId[\"realEstateOwned\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n iInCompletedSubPage = [];\r\n const { Real_est_prop } = LoanData;\r\n\r\n if (![0, 1].includes(Number(Real_est_prop ?? -1))) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n\r\n if (additionalPropertyInfo.length > 0) {\r\n additionalPropertyInfo.map((property, index) => {\r\n const {\r\n Real_est_Prop_Status,\r\n Real_est_Subj_Prop,\r\n Current_residence,\r\n } = property;\r\n if (\r\n handleGetFirstPageFieldNew(property, [\r\n { name: \"Real_est_prop_Addrs\", value: \"\" },\r\n { name: \"Real_est_ZipCode\", value: \"\", lengthLimit: 5 },\r\n { name: \"Real_est_City\", value: \"\" },\r\n { name: \"Real_est_State\", value: \"\" },\r\n { name: \"Presnt_Markt_Val\", value: \"\" },\r\n { name: \"Real_est_Prop_Status\", value: \"\" },\r\n { name: \"PropertyType\", value: \"\" },\r\n { name: \"Months_Ownd_Prop\", value: 0, falseCheck: true },\r\n { name: \"OwnerIdList\", value: \"\" },\r\n ])\r\n ) {\r\n iInCompletedSubPage.push(index);\r\n }\r\n if (![1, 2, 3, 4].includes(Number(Real_est_Prop_Status ?? -1))) {\r\n iInCompletedSubPage.push(index);\r\n }\r\n\r\n if (![0, 1].includes(Number(Real_est_Subj_Prop ?? -1))) {\r\n iInCompletedSubPage.push(index);\r\n }\r\n\r\n if (![0, 1].includes(Number(Current_residence ?? -1))) {\r\n iInCompletedSubPage.push(index);\r\n }\r\n });\r\n }\r\n\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = iInCompletedSubPage;\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (\r\n iSubPage === -1 &&\r\n LoanData[\"Real_est_prop\"] !== null &&\r\n LoanData[\"Real_est_prop\"] !== undefined\r\n )\r\n iCompletedPage.push(iPageId);\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n //TODO ======= Government =======\r\n iPageId = pageId[\"government\"];\r\n if (\r\n ((currentPage_ === pageArray[iPageId] || iExp) &&\r\n !iLeftNavStatus.includes(iPageId)) ||\r\n (iExp && iIndex === iPageId)\r\n ) {\r\n iInCompletedSubPage = [];\r\n //* Declaration Section\r\n const {\r\n Citizenship_Status,\r\n Pri_residence,\r\n Ownership_intst_Othr_Prop,\r\n Prop_own,\r\n Prop_hold,\r\n Purchase_Transaction,\r\n Bor_money_realest_trans,\r\n Apply_mortloan_otherprop,\r\n Apply_newcredit,\r\n Prop_sub_to_lien,\r\n Co_signer,\r\n Outstanding_judgments,\r\n Cur_delinquent,\r\n Party_to_lawsuit,\r\n Prop_lieu_foreclosure,\r\n Pre_foreclosure_sale,\r\n Prop_foreclosed,\r\n Declare_bankruptcy,\r\n Types_bankruptcy,\r\n bType1stBuyer,\r\n Bor_money_Amt,\r\n } = LoanData;\r\n\r\n if (\r\n ![1, 2, 3].includes(Citizenship_Status) ||\r\n ![0, 1].includes(Pri_residence) ||\r\n ![0, 1].includes(Ownership_intst_Othr_Prop) ||\r\n (Ownership_intst_Othr_Prop === 1 && ![1, 2, 3].includes(Prop_own)) ||\r\n (Ownership_intst_Othr_Prop === 1 && ![1, 2, 3].includes(Prop_hold)) ||\r\n ![0, 1].includes(Purchase_Transaction) ||\r\n ![0, 1].includes(Bor_money_realest_trans) ||\r\n ![0, 1].includes(Apply_mortloan_otherprop) ||\r\n ![0, 1].includes(Apply_newcredit) ||\r\n ![0, 1].includes(Prop_sub_to_lien) ||\r\n ![0, 1].includes(Co_signer) ||\r\n ![0, 1].includes(Outstanding_judgments) ||\r\n ![0, 1].includes(Cur_delinquent) ||\r\n ![0, 1].includes(Party_to_lawsuit) ||\r\n ![0, 1].includes(Prop_lieu_foreclosure) ||\r\n ![0, 1].includes(Pre_foreclosure_sale) ||\r\n ![0, 1].includes(Prop_foreclosed) ||\r\n ![0, 1].includes(Declare_bankruptcy) ||\r\n (Declare_bankruptcy === 1 &&\r\n ![1, 2, 3, 4].includes(Types_bankruptcy)) ||\r\n ![0, 1].includes(bType1stBuyer) ||\r\n (Bor_money_realest_trans === 1 && cleanValue(Bor_money_Amt) == 0)\r\n ) {\r\n iInCompletedSubPage.push(0);\r\n }\r\n\r\n additionalBorrowerInfo.slice(1).forEach((borrower, index) => {\r\n const {\r\n Citizenship_Status,\r\n OccupyProperty,\r\n [\"Owe Property\"]: OweProperty,\r\n [\"Type Prop Own\"]: TypePropOwn,\r\n [\"Hold Title\"]: HoldTitle,\r\n BusinessaffWithSeller,\r\n LoanOnAnotherProp,\r\n MoneyBorrowedForDown,\r\n Downpayment,\r\n ApplyingNewCredit,\r\n PropAssCleanEnergy,\r\n [\"Co-maker\"]: CoMaker,\r\n Jugdements,\r\n Delinquent,\r\n Lawsuit,\r\n ConveyedTitle,\r\n Obligated,\r\n Forclosed,\r\n Bankruptcy,\r\n blChapter7,\r\n blChapter11,\r\n blChapter12,\r\n blChapter13,\r\n bType1stBuyer,\r\n } = borrower;\r\n\r\n if (\r\n ![1, 2, 3].includes(parseInt(Citizenship_Status)) ||\r\n ![0, 1].includes(parseInt(OccupyProperty)) ||\r\n ![0, 1].includes(parseInt(OweProperty)) ||\r\n (OweProperty === 1 && ![1, 2, 3].includes(parseInt(TypePropOwn))) ||\r\n (OweProperty === 1 && ![1, 2, 3].includes(parseInt(HoldTitle))) ||\r\n ![0, 1].includes(parseInt(BusinessaffWithSeller)) ||\r\n ![0, 1].includes(parseInt(LoanOnAnotherProp)) ||\r\n (parseInt(LoanOnAnotherProp) === 1 &&\r\n cleanValue(MoneyBorrowedForDown) == 0) ||\r\n ![0, 1].includes(parseInt(Downpayment)) ||\r\n ![0, 1].includes(parseInt(ApplyingNewCredit)) ||\r\n ![0, 1].includes(parseInt(PropAssCleanEnergy)) ||\r\n ![0, 1].includes(parseInt(CoMaker)) ||\r\n ![0, 1].includes(parseInt(Jugdements)) ||\r\n ![0, 1].includes(parseInt(Delinquent)) ||\r\n ![0, 1].includes(parseInt(Lawsuit)) ||\r\n ![0, 1].includes(parseInt(ConveyedTitle)) ||\r\n ![0, 1].includes(parseInt(Obligated)) ||\r\n ![0, 1].includes(parseInt(Forclosed)) ||\r\n ![0, 1].includes(parseInt(Bankruptcy)) ||\r\n (parseInt(Bankruptcy) === 1 &&\r\n ![1, 2, 3, 4].includes(parseInt(blChapter7)) &&\r\n ![1, 2, 3, 4].includes(parseInt(blChapter11)) &&\r\n ![1, 2, 3, 4].includes(parseInt(blChapter12)) &&\r\n ![1, 2, 3, 4].includes(parseInt(blChapter13))) ||\r\n ![0, 1].includes(parseInt(bType1stBuyer))\r\n ) {\r\n iInCompletedSubPage.push((index + 1) * 4);\r\n }\r\n });\r\n\r\n //* Demographic Section\r\n\r\n const {\r\n Demographic_Info,\r\n Sex,\r\n Ethinicity,\r\n HispanicSubcategory,\r\n OtherOrigin,\r\n Race,\r\n PrincipalTribe,\r\n NaticHawaiSubCategory,\r\n OtherPacificIslandRace,\r\n AsianRaceSubCategory,\r\n OtherAsianRace,\r\n } = LoanData;\r\n\r\n if (\r\n ![1, 2, 3, 4].includes(parseInt(Demographic_Info)) ||\r\n Number(Sex) === 4 ||\r\n Number(Ethinicity) === 3 ||\r\n (Number(Ethinicity) === 1 && parseInt(HispanicSubcategory) === 0) ||\r\n ((8 & Number(HispanicSubcategory)) === 8 &&\r\n Number(Ethinicity) === 1 &&\r\n !OtherOrigin) ||\r\n parseInt(Race) === 0 ||\r\n ((1 & Number(Race)) === 1 && !PrincipalTribe) ||\r\n ((2 & Number(Race)) === 2 && parseInt(NaticHawaiSubCategory) === 0) ||\r\n ((8 & Number(NaticHawaiSubCategory)) === 8 &&\r\n (2 & Number(Race)) === 2 &&\r\n !OtherPacificIslandRace) ||\r\n ((4 & Number(Race)) === 4 && parseInt(AsianRaceSubCategory) === 0) ||\r\n ((64 & Number(AsianRaceSubCategory)) === 64 &&\r\n (4 & Number(Race)) === 4 &&\r\n !OtherAsianRace)\r\n ) {\r\n iInCompletedSubPage.push(1);\r\n }\r\n\r\n additionalBorrowerInfo.slice(1).forEach((borrower, index) => {\r\n const {\r\n Demographic_Info: borrowerDemographic_Info,\r\n Sex: borrowerSex,\r\n Ethnicity: borrowerEthnicity,\r\n HispanicSubcategory: borrowerHispanicSubcategory,\r\n RaceIndian: borrowerRaceIndian,\r\n RaceHawaiian: borrowerRaceHawaiian,\r\n RaceAsian: borrowerRaceAsian,\r\n RaceWhite: borrowerRaceWhite,\r\n RaceBlack: borrowerRaceBlack,\r\n PrincipalTribe: borrowerPrincipalTribe,\r\n NaticHawaiSubCategory: borrowerNaticHawaiSubCategory,\r\n AsianRaceSubCategory: borrowerAsianRaceSubCategory,\r\n OtherAsianRace: borrowerOtherAsianRace,\r\n OtherOrigin,\r\n } = borrower;\r\n\r\n if (\r\n ![1, 2, 3, 4].includes(Number(borrowerDemographic_Info)) ||\r\n parseInt(borrowerSex) === 4 ||\r\n Number(borrowerEthnicity) === 3 ||\r\n (Number(borrowerEthnicity) === 1 &&\r\n parseInt(borrowerHispanicSubcategory) === 0) ||\r\n ((8 & Number(borrowerHispanicSubcategory)) === 8 &&\r\n Number(borrowerEthnicity) === 1 &&\r\n !OtherOrigin) ||\r\n (parseInt(borrowerRaceIndian || 0) != 1 &&\r\n parseInt(borrowerRaceHawaiian || 0) != 1 &&\r\n parseInt(borrowerRaceAsian || 0) != 1 &&\r\n parseInt(borrowerRaceWhite || 0) != 1 &&\r\n parseInt(borrowerRaceBlack || 0) != 1 &&\r\n parseInt(borrowerRaceBlack || 0) != 1) ||\r\n (Number(borrowerRaceIndian) === 1 && !borrowerPrincipalTribe) ||\r\n (Number(borrowerRaceHawaiian) === 1 &&\r\n parseInt(borrowerAsianRaceSubCategory) === 0) ||\r\n ((64 & Number(borrowerAsianRaceSubCategory)) === 64 &&\r\n Number(borrowerRaceAsian) === 1 &&\r\n !borrowerOtherAsianRace)\r\n ) {\r\n iInCompletedSubPage.push((index + 1) * 4 + 1);\r\n }\r\n });\r\n\r\n //* VA Section\r\n\r\n const {\r\n Military_Status,\r\n Reserves_Active,\r\n Branch_Service,\r\n SerMilitaryStatus,\r\n VA_Entitlmt_Amt,\r\n VA_Entitlmt_Amt_used,\r\n VA_Entitlmt_Code,\r\n VA_Loan_FTU,\r\n VA_Funding_Fee,\r\n Currently_serving,\r\n Currently_retired,\r\n Active_National_Guard,\r\n Surviving_spouse,\r\n } = LoanData;\r\n\r\n if (![1, 2, 8].includes(Number(Military_Status))) {\r\n iInCompletedSubPage.push(2);\r\n }\r\n\r\n if (Military_Status !== 8) {\r\n if (\r\n ![1, 0].includes(parseInt(Reserves_Active)) ||\r\n ![1, 2, 3, 4, 5, 6].includes(Number(Branch_Service)) ||\r\n ![1, 2].includes(Number(SerMilitaryStatus)) ||\r\n cleanValue(VA_Entitlmt_Amt) == 0 ||\r\n cleanValue(VA_Entitlmt_Amt_used) == 0 ||\r\n !VA_Entitlmt_Code ||\r\n ![0, 1].includes(parseInt(VA_Loan_FTU)) ||\r\n ![0, 1].includes(parseInt(VA_Funding_Fee)) ||\r\n ![0, 1].includes(parseInt(Currently_serving)) ||\r\n ![0, 1].includes(parseInt(Currently_retired)) ||\r\n ![0, 1].includes(parseInt(Active_National_Guard)) ||\r\n ![0, 1].includes(parseInt(Surviving_spouse))\r\n ) {\r\n iInCompletedSubPage.push(2);\r\n }\r\n }\r\n\r\n additionalBorrowerInfo.slice(1).forEach((borrower, index) => {\r\n const {\r\n VA_Military_Status,\r\n VA_Entitlmt_Amt: borrower_VA_Entitlmt_Amt,\r\n VA_Entitlmt_Amt_used: borrower_VA_Entitlmt_Amt_used,\r\n VA_Entitlmt_Code: borrower_VA_Entitlmt_Code,\r\n Reserves_Active: borrower_Reserves_Active,\r\n Branch_Service: borrower_Branch_Service,\r\n VAMilitaryServiceStatus: borrower_VAMilitaryServiceStatus,\r\n VA_Loan_FTU: borrower_VA_Loan_FTU,\r\n VA_Funding_Fee: borrower_VA_Funding_Fee,\r\n Currently_serving: borrower_Currently_serving,\r\n Currently_retired: borrower_Currently_retired,\r\n Active_National_Guard: borrower_Active_National_Guard,\r\n Surviving_spouse: borrower_Surviving_spouse,\r\n } = borrower;\r\n\r\n if (![1, 2, 8].includes(parseInt(VA_Military_Status))) {\r\n iInCompletedSubPage.push((index + 1) * 4 + 2);\r\n }\r\n\r\n if (VA_Military_Status !== 8) {\r\n if (\r\n cleanValue(borrower_VA_Entitlmt_Amt) == 0 ||\r\n cleanValue(borrower_VA_Entitlmt_Amt_used) == 0 ||\r\n !borrower_VA_Entitlmt_Code ||\r\n ![1, 0].includes(parseInt(borrower_Reserves_Active)) ||\r\n ![1, 2, 3, 4, 5, 6].includes(parseInt(borrower_Branch_Service)) ||\r\n ![1, 2].includes(parseInt(borrower_VAMilitaryServiceStatus)) ||\r\n ![0, 1].includes(parseInt(borrower_VA_Loan_FTU)) ||\r\n ![0, 1].includes(parseInt(borrower_VA_Funding_Fee)) ||\r\n ![0, 1].includes(parseInt(borrower_Currently_serving)) ||\r\n ![0, 1].includes(parseInt(borrower_Currently_retired)) ||\r\n ![0, 1].includes(parseInt(borrower_Active_National_Guard)) ||\r\n ![0, 1].includes(parseInt(borrower_Surviving_spouse))\r\n ) {\r\n iInCompletedSubPage.push((index + 1) * 4 + 2);\r\n }\r\n }\r\n });\r\n\r\n const {\r\n Couns_Confirm,\r\n Couns_Comp_Date,\r\n Couns_Type,\r\n Couns_Agency_Name,\r\n LanguagePreference,\r\n OtherLanguageDescription,\r\n } = LoanData;\r\n\r\n if (![1, 2].includes(parseInt(Couns_Confirm))) {\r\n iInCompletedSubPage.push(3);\r\n }\r\n\r\n if (\r\n Couns_Confirm === 1 &&\r\n (!Couns_Comp_Date ||\r\n ![2, 1].includes(Couns_Type) ||\r\n !Couns_Agency_Name ||\r\n !LanguagePreference ||\r\n (LanguagePreference == 7 && !OtherLanguageDescription))\r\n ) {\r\n iInCompletedSubPage.push(3);\r\n }\r\n\r\n additionalCounsellingInfo.slice(1).forEach((borrower, index) => {\r\n const {\r\n Couns_Confirm: borrower_Couns_Confirm,\r\n Couns_Comp_Date: borrower_Couns_Comp_Date,\r\n Couns_Type: borrower_Couns_Type,\r\n Couns_Agency_Name: borrower_Couns_Agency_Name,\r\n LanguagePreference: borrower_LanguagePreference,\r\n OtherLanguageDescription: borrower_OtherLanguageDescription,\r\n } = borrower;\r\n\r\n if (![1, 2].includes(parseInt(borrower_Couns_Confirm))) {\r\n iInCompletedSubPage.push((index + 1) * 4 + 3);\r\n }\r\n\r\n if (\r\n borrower_Couns_Confirm === 1 &&\r\n (!borrower_Couns_Comp_Date ||\r\n ![2, 1].includes(borrower_Couns_Type) ||\r\n !borrower_Couns_Agency_Name ||\r\n !borrower_LanguagePreference ||\r\n (borrower_LanguagePreference == 7 &&\r\n !borrower_OtherLanguageDescription))\r\n ) {\r\n iInCompletedSubPage.push((index + 1) * 4 + 3);\r\n }\r\n });\r\n\r\n inCompletedSubPageObjNew[pageArray[iPageId]] = iInCompletedSubPage;\r\n\r\n iSubPage = iInCompletedSubPage.length\r\n ? iInCompletedSubPage[0]\r\n : iSubPage;\r\n\r\n if (iIndex === iPageId) {\r\n return { iPage, iSubPage, iInCompletedSubPage };\r\n } else if (iExp) {\r\n iPage++;\r\n if (iSubPage === -1) iCompletedPage.push(iPageId);\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n } else if (iPage === iPageId && iSubPage === -1) {\r\n iPage++;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n }\r\n if ((iPage === 0 || iPage === 9) && iSubPage === -1) {\r\n if (!iLeftNavStatus.includes(pageId[\"documentUpload\"])) {\r\n iPage = pageId[\"documentUpload\"];\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (!iLeftNavStatus.includes(pageId[\"eSign\"])) {\r\n iPage = pageId[\"eSign\"];\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (!iLeftNavStatus.includes(pageId[\"reviewYourInterestRate\"])) {\r\n iPage = pageId[\"reviewYourInterestRate\"];\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n } else if (loanURLDetails[\"apprURL\"]) {\r\n iPage = pageArray.length - 1;\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n\r\n if (iPage === 9 && iLeftNavStatus.includes(pageId[\"documentUpload\"])) {\r\n iPage = 0;\r\n iSubPage = -1;\r\n currentPage_ = pageArray[iPage];\r\n }\r\n }\r\n // console.log({ inCompletedSubPageObj });\r\n setInCompletedSubPageObj(inCompletedSubPageObjNew);\r\n return {\r\n iPageIndex: contextDetails[\"isNewLoanCreated\"]\r\n ? pageIndex\r\n : {\r\n page: iPage,\r\n subPage:\r\n iSubPage > 0\r\n ? iSubPage\r\n : inCompletedSubPageObjNew[pageArray[iPage]]?.[0] || 0,\r\n },\r\n iCurrentPage: contextDetails[\"isNewLoanCreated\"]\r\n ? currentPage\r\n : currentPage_,\r\n iCompletedPage,\r\n iInCompletedSubPage:\r\n (inCompletedSubPageObjNew[currentPage] || []).length === 1\r\n ? [\r\n ...new Set(\r\n (inCompletedSubPageObjNew[currentPage] || []).filter(\r\n (subPageIndex) => subPageIndex > -1\r\n )\r\n ),\r\n ]\r\n : inCompletedSubPageObjNew[currentPage] || [],\r\n };\r\n };\r\n const handlePageDetails = (page, iLoanId, noLoan) => {\r\n let currentPage_ = page || currentPage,\r\n arr = [{ currentPage: currentPage_ }];\r\n\r\n if (Object.keys(LoanData).length > 0 || noLoan) {\r\n if (currentPage_ === pageArray[pageId[\"summaryInfo\"]]) {\r\n arr.push({\r\n Title: \"Is this loan for a home purchase or for a refinance?\",\r\n Options: [\r\n { value: 1, text: \"Purchase\" },\r\n { value: 2, text: \"Refinance\" },\r\n ],\r\n ColumnName: \"LoanPurpose\",\r\n ColumnValue: LoanData[\"LoanPurpose\"],\r\n type: 1,\r\n });\r\n\r\n if (LoanData[\"LoanPurpose\"] === 1) {\r\n arr.push({\r\n Title: \"Congrats! Where are you in the process?\",\r\n Options: [\r\n { value: 1, text: `I've found the home I want` },\r\n { value: 2, text: `I'm just looking` },\r\n { value: 3, text: `I'm making offers` },\r\n ],\r\n ColumnName: \"WhichProcess\",\r\n ColumnValue: LoanData[\"WhichProcess\"],\r\n type: 1,\r\n });\r\n }\r\n if (LoanData[\"LoanPurpose\"] === 2) {\r\n arr.push({\r\n Title: \"Thank you. What is the purpose of doing a refinance?\",\r\n Options: [\r\n { value: 1, text: \"I want to lower my payment\" },\r\n { value: 2, text: \"I want to drop mortgage insurance\" },\r\n { value: 3, text: `I'd like to pull cash out` },\r\n { value: 4, text: \"I want to lower my rate\" },\r\n {\r\n value: 5,\r\n text: \"I want to shorten my term (pay off my mortgage sooner)\",\r\n },\r\n ],\r\n ColumnName: \"RefinanceOptions\",\r\n ColumnValue: LoanData[\"RefinanceOptions\"],\r\n type: 1,\r\n });\r\n }\r\n if (\r\n (LoanData[\"WhichProcess\"] || 1) === 1 &&\r\n LoanData[\"LoanPurpose\"] === 1\r\n ) {\r\n arr.push({\r\n Title: \"Great! How can we help you most?\",\r\n Options: [\r\n {\r\n value: 1,\r\n text: `I want to see what my rate and monthly payment might be.`,\r\n },\r\n {\r\n value: 2,\r\n text: `I want to make an offer. I need a pre-qualification letter.`,\r\n },\r\n { value: 3, text: `I want to get my application started.` },\r\n {\r\n value: 4,\r\n text: `I have a quote from another lender. Can you beat it?`,\r\n },\r\n { value: 5, text: `My offer was accepted.` },\r\n ],\r\n ColumnName: \"How can we help\",\r\n ColumnValue: LoanData[\"How can we help\"],\r\n type: 1,\r\n });\r\n }\r\n if (LoanData[\"WhichProcess\"] === 2 && LoanData[\"LoanPurpose\"] === 1) {\r\n arr.push({\r\n Title: \"Cool! How can we help you most right now?\",\r\n Options: [\r\n {\r\n value: 1,\r\n text: `Show me what my rate and payment might be.`,\r\n },\r\n {\r\n value: 2,\r\n text: `See today's rates.`,\r\n },\r\n { value: 3, text: `Show me how much I can afford.` },\r\n {\r\n value: 4,\r\n text: `I'd just like to talk to a real person`,\r\n },\r\n ],\r\n ColumnName: \"How can we help1\",\r\n ColumnValue: LoanData[\"How can we help1\"],\r\n type: 1,\r\n });\r\n }\r\n if (LoanData[\"WhichProcess\"] === 3 && LoanData[\"LoanPurpose\"] === 1) {\r\n arr.push({\r\n Title: \"That's exciting! How can we help you most right now?\",\r\n Options: [\r\n {\r\n value: 1,\r\n text: `I want to see what my rate and monthly payment might be.`,\r\n },\r\n {\r\n value: 2,\r\n text: `I'd love to see what my payment might be.`,\r\n },\r\n { value: 3, text: `I need a pre-qualification letter ASAP.` },\r\n {\r\n value: 4,\r\n text: `Chat with someone`,\r\n },\r\n ],\r\n ColumnName: \"How can we help2\",\r\n ColumnValue: LoanData[\"How can we help2\"],\r\n type: 1,\r\n });\r\n }\r\n arr.push({\r\n Title: \"Were you referred to us?\",\r\n widthOption: \"40%\",\r\n Options: [\r\n { value: 1, text: \"Yes\" },\r\n { value: 0, text: \"No\" },\r\n ],\r\n ColumnName: \"IsReferred\",\r\n ColumnValue: LoanData[\"IsReferred\"],\r\n type: 1,\r\n subFields:\r\n LoanData[\"IsReferred\"] === 1\r\n ? [\r\n {\r\n Title: \"Referring you?\",\r\n label: \"Refer\",\r\n ColumnName: \"WhoReferred\",\r\n ColumnValue:\r\n LoanData[\"WhoReferred\"] != 0\r\n ? LoanData[\"WhoReferred\"]\r\n : \"\",\r\n type: 2,\r\n },\r\n ]\r\n : [],\r\n });\r\n\r\n arr.push({\r\n Title:\r\n \"The following loan officer will be assigned to you. Please confirm this is correct, or you can also select a different loan officer.\",\r\n label: \"Loan Officer\",\r\n ColumnName: \"loanOfficers\",\r\n ColumnValue: parseInt(loanOfficerId) || parseInt(loanOfficers),\r\n isMap: true,\r\n onChange: (option) => {\r\n if (option[\"value\"]) {\r\n let LoNum = option[\"value\"];\r\n if (LoNum == \"-99\") LoNum = 1;\r\n setLoanOfficers(LoNum);\r\n setLoanOfficerId(LoNum);\r\n handleSaveLoanOfficer(LoNum);\r\n } else {\r\n setLoanOfficers(0);\r\n setLoanOfficerId(0);\r\n }\r\n },\r\n type: 3,\r\n loanId: iLoanId || loanId,\r\n isLoanCreating: false,\r\n Option: loanOfficerOption,\r\n isDisable: LoanData[\"LockLoanApp\"] == 1,\r\n });\r\n\r\n arr.push({\r\n Title: \"Please tell us about your occupancy\",\r\n Options: [\r\n { value: 1, text: \"Primary Residence\" },\r\n { value: 2, text: \"Second Home\" },\r\n { value: 3, text: \"Investment Property\" },\r\n ],\r\n ColumnName: \"Propertybe\",\r\n ColumnValue: LoanData[\"Propertybe\"],\r\n type: 1,\r\n subFields: [\r\n {\r\n Title: \"What is the Property Type?\",\r\n label: \"Property Type\",\r\n isValid: !LoanData[\"LoanSummaryPropertyType\"],\r\n ColumnName: \"LoanSummaryPropertyType\",\r\n ColumnValue: LoanData[\"LoanSummaryPropertyType\"]?.toString(),\r\n onBlur: () => {},\r\n type: 3,\r\n Option: propertyTypeOption,\r\n isMap: true,\r\n },\r\n\r\n {\r\n Title: \"Subject Property Address\",\r\n label: \"Property Street Address\",\r\n ColumnName: \"subjectAddress\",\r\n ColumnValue: LoanData[\"subjectAddress\"],\r\n isValid:\r\n (LoanData[\"LoanPurpose\"] == 1 &&\r\n !LoanData[\"AddressTBD\"] &&\r\n !LoanData[\"subjectAddress\"]) ||\r\n (LoanData[\"LoanPurpose\"] == 2 && !LoanData[\"subjectAddress\"]),\r\n type: 2,\r\n addTopField: (\r\n <>\r\n {LoanData[\"LoanPurpose\"] !== 2 && (\r\n <>\r\n <Separator />\r\n <View style={{ flexDirection: \"row\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: web ? 17 : 16, color: \"#0f203a\" }}\r\n >\r\n The address is To Be Determined\r\n </CustomText>\r\n <Swatch\r\n size={15}\r\n value={Boolean(LoanData[\"AddressTBD\"])}\r\n onChange={async (value) => {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n AddressTBD: !LoanData[\"AddressTBD\"],\r\n };\r\n });\r\n }}\r\n />\r\n </View>\r\n <Separator />\r\n </>\r\n )}\r\n </>\r\n ),\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Property Zip Code\",\r\n ColumnName: \"subjectZip\",\r\n keyboardType: \"numeric\",\r\n maxLength: 5,\r\n ColumnValue: LoanData[\"subjectZip\"],\r\n forceValidation:\r\n (LoanData[\"LoanPurpose\"] == 1 &&\r\n !LoanData[\"AddressTBD\"] &&\r\n LoanData[\"subjectZip\"]?.toString().length != 5) ||\r\n (LoanData[\"LoanPurpose\"] == 2 &&\r\n LoanData[\"subjectZip\"]?.toString().length != 5),\r\n type: 2,\r\n onBlur: async () => {\r\n let zipCode = LoanData[\"subjectZip\"];\r\n if (zipCode.length === 5) {\r\n let { city, state } = await handleGetZipCodeDetails(zipCode);\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n [`subjectCity`]: city,\r\n [`subjectState`]: state,\r\n };\r\n });\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Property City\",\r\n ColumnName: \"subjectCity\",\r\n ColumnValue: LoanData[\"subjectCity\"],\r\n isValid:\r\n (LoanData[\"LoanPurpose\"] == 1 &&\r\n !LoanData[\"AddressTBD\"] &&\r\n !LoanData[\"subjectCity\"]) ||\r\n (LoanData[\"LoanPurpose\"] == 2 && !LoanData[\"subjectCity\"]),\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Property State\",\r\n ColumnName: \"subjectState\",\r\n isValid: !LoanData[\"subjectState\"],\r\n ColumnValue: LoanData[\"subjectState\"],\r\n isValid:\r\n (LoanData[\"LoanPurpose\"] == 1 &&\r\n !LoanData[\"AddressTBD\"] &&\r\n !LoanData[\"subjectState\"]) ||\r\n (LoanData[\"LoanPurpose\"] == 2 && !LoanData[\"subjectState\"]),\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Year Property Built\",\r\n ColumnName: \"Prop_Years\",\r\n isValid: !LoanData[\"Prop_Years\"],\r\n ColumnValue: LoanData[\"Prop_Years\"],\r\n isValid:\r\n (LoanData[\"LoanPurpose\"] == 1 &&\r\n !LoanData[\"AddressTBD\"] &&\r\n !LoanData[\"Prop_Years\"]) ||\r\n (LoanData[\"LoanPurpose\"] == 2 && !LoanData[\"Prop_Years\"]),\r\n type: 2,\r\n keyboardType: \"numeric\",\r\n maxLength: 4,\r\n },\r\n ],\r\n });\r\n\r\n if (LoanData[\"LoanPurpose\"] === 2) {\r\n arr.push({\r\n Title: \"What is the primary purpose of your refinance?\",\r\n Options: [\r\n { value: 1, text: \"Lower my payment\" },\r\n { value: 2, text: \"Cash out\" },\r\n ],\r\n ColumnName: \"Pri_purpose_Refi\",\r\n ColumnValue: LoanData[\"Pri_purpose_Refi\"],\r\n type: 1,\r\n });\r\n }\r\n if (LoanData[\"LoanPurpose\"] === 1) {\r\n arr.push({\r\n type: 2,\r\n subFields: [\r\n {\r\n Title: \"What is the estimated purchase price?\",\r\n label: \"Estimated purchase value\",\r\n ColumnName: \"Purchase_Estm_Pur_Price\",\r\n ColumnValue: LoanData[\"Purchase_Estm_Pur_Price\"],\r\n isValid: cleanValue(LoanData[\"Purchase_Estm_Pur_Price\"]) == 0,\r\n isCurrency: true,\r\n onBlur: handleCalculateDownPaymentPer,\r\n },\r\n {\r\n Title: \"What is the estimated Down Payment?\",\r\n label: \"Down Payment\",\r\n field: [\r\n {\r\n ColumnName: \"DownPayment\",\r\n ColumnValue: LoanData[\"DownPayment\"],\r\n isCurrency: true,\r\n onBlur: DownPmtOnChange,\r\n },\r\n {\r\n ColumnName: \"DownPaymentPercent\",\r\n ColumnValue: LoanData[\"DownPaymentPercent\"],\r\n isCurrency: true,\r\n onBlur: CalculateDownPayment,\r\n },\r\n ],\r\n },\r\n {\r\n Title: \"What would be your estimated loan amount?\",\r\n label: \"Estimated Loan Amount\",\r\n ColumnName: \"Purchase_Estm_LnAmt\",\r\n isValid: cleanValue(LoanData[\"Purchase_Estm_LnAmt\"]) == 0,\r\n isCurrency: true,\r\n ColumnValue: LoanData[\"Purchase_Estm_LnAmt\"],\r\n onBlur: LnAmtExcChange,\r\n },\r\n ],\r\n });\r\n } else {\r\n arr.push({\r\n type: 2,\r\n subFields: [\r\n {\r\n Title: \"What is the estimated property value?\",\r\n label: \"Estimated Property Value\",\r\n isValid: cleanValue(LoanData[\"Refi_Estmt_Prop_Lnval\"]) == 0,\r\n ColumnName: \"Refi_Estmt_Prop_Lnval\",\r\n ColumnValue: LoanData[\"Refi_Estmt_Prop_Lnval\"],\r\n isCurrency: true,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Refi_Estmt_Prop_Lnval: formatCurrency(\r\n LoanData[\"Refi_Estmt_Prop_Lnval\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n Title: \"Loan Amount of Loan Being Paid Off?\",\r\n label: \"Loan Being Paid Off\",\r\n ColumnName: \"PaidOff\",\r\n ColumnValue: LoanData[\"PaidOff\"],\r\n isCurrency: true,\r\n onBlur: () => {\r\n CalculateLnAmt(\"PaidOff\");\r\n },\r\n },\r\n LoanData[\"Pri_purpose_Refi\"] === 2\r\n ? {\r\n Title: \"Cash Out Amount Requested?\",\r\n label: \"Cash Out Amount\",\r\n ColumnName: \"CashOutAmount\",\r\n ColumnValue: LoanData[\"CashOutAmount\"],\r\n isCurrency: true,\r\n onBlur: () => {\r\n CalculateLnAmt(\"CashOutAmount\");\r\n },\r\n }\r\n : null,\r\n {\r\n Title: \"What would be your estimated loan amount?\",\r\n label: \"Estimated Loan Amount\",\r\n ColumnName: \"Refi_Estmt_LnAmt\",\r\n isValid: cleanValue(LoanData[\"Refi_Estmt_LnAmt\"]) == 0,\r\n ColumnValue: LoanData[\"Refi_Estmt_LnAmt\"],\r\n isCurrency: true,\r\n onBlur: () => {\r\n CalculateLnAmt(\"Refi_Estmt_LnAmt\");\r\n },\r\n },\r\n ].filter((_) => _),\r\n });\r\n }\r\n } else if (currentPage_ === pageArray[pageId[\"borrowerInfo\"]]) {\r\n arr.push(\r\n ...[\r\n {\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Complete your contact information for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n type: 2,\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"First Name\",\r\n ColumnName: \"FirstName\",\r\n isValid: !LoanData[\"FirstName\"],\r\n ColumnValue: LoanData[\"FirstName\"] || \"\",\r\n onBlur: () => {\r\n if (\r\n (LoanData[\"NickName\"] || \"\")?.toString().trim() === \"\"\r\n ) {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n NickName: capitalizeFirstLetter(\r\n LoanData[\"FirstName\"]\r\n ),\r\n };\r\n });\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Nickname\",\r\n ColumnName: \"NickName\",\r\n ColumnValue: LoanData[\"NickName\"]?.toString().trim(),\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Middle Name\",\r\n ColumnName: \"MiddleName\",\r\n ColumnValue: LoanData[\"MiddleName\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Last Name\",\r\n ColumnName: \"LastName\",\r\n isValid: !LoanData[\"LastName\"],\r\n ColumnValue: LoanData[\"LastName\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Social Security Number\",\r\n ColumnName: \"SSN\",\r\n keyboardType: \"numeric\",\r\n ColumnValue: LoanData[\"SSN\"],\r\n maxLength: 9,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n SSN: formatSSN(LoanData[\"SSN\"], 2),\r\n });\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Suffix\",\r\n placeholder: \"Suffix\",\r\n ColumnName: \"Suffix\",\r\n ColumnValue: LoanData[\"Suffix\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: [\r\n { value: \"\", label: \"-None-\" },\r\n { value: \"I\", label: \"I\" },\r\n { value: \"II\", label: \"II\" },\r\n { value: \"III\", label: \"III\" },\r\n { value: \"IV\", label: \"IV\" },\r\n { value: \"Jr\", label: \"Jr\" },\r\n { value: \"Sr\", label: \"Sr\" },\r\n { value: \"V\", label: \"V\" },\r\n ],\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Birthdate\",\r\n ColumnName: \"BirthDate\",\r\n charLength: 10,\r\n placeholder: \"MM/DD/YYYY\",\r\n ColumnValue: LoanData[\"BirthDate\"],\r\n isValid: !LoanData[\"BirthDate\"],\r\n forceValidation: !(\r\n calculateAge(formatDateTimeNew(LoanData[\"BirthDate\"], 2)) >=\r\n 18\r\n ),\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n BirthDate: formatDateTimeNew(LoanData[\"BirthDate\"], 2),\r\n });\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Cell\",\r\n ColumnName: \"CellPhone\",\r\n maxLength: 10,\r\n ColumnValue: handleGetCellPhone(LoanData[\"CellPhone\"]),\r\n forceValidation:\r\n handleGetCellPhone(LoanData[\"CellPhone\"])\r\n .toString()\r\n .replace(/[(),\\- ]/g, \"\").length != 10,\r\n keyboardType: \"phone-pad\",\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n CellPhone: `*5*${FormatPhoneLogin(\r\n handleGetCellPhone(LoanData[\"CellPhone\"]) || \"\"\r\n )}`,\r\n });\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Email\",\r\n ColumnName: \"EmailId\",\r\n ColumnValue: LoanData[\"EmailId\"],\r\n isValid: !LoanData[\"EmailId\"],\r\n // keyboardType: \"email-address\",\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Number of Dependents\",\r\n ColumnName: \"Dependents\",\r\n ColumnValue: LoanData[\"Dependents\"],\r\n onBlur: () => {},\r\n keyboardType: \"numeric\",\r\n charLength: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Ages of Dependents\",\r\n ColumnName: \"Ages_Dependents\",\r\n ColumnValue: LoanData[\"Ages_Dependents\"],\r\n onBlur: () => {\r\n // let iBirthDate = formatDateTimeNew(\r\n // LoanData[\"BirthDate\"],\r\n // 2\r\n // );\r\n // let age = calculateAge(iBirthDate);\r\n // setLoanData({\r\n // ...LoanData,\r\n // Ages_Dependents: age,\r\n // });\r\n },\r\n // type: \"numeric\",\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Marital Status\",\r\n ColumnName: \"MaritalStatus\",\r\n ColumnValue: LoanData[\"MaritalStatus\"],\r\n onBlur: () => {},\r\n isValid: LoanData[\"MaritalStatus\"] == 0,\r\n type: 3,\r\n isMap: true,\r\n Option: maritalStatusOptions.filter(\r\n ({ value }) => Number(value) !== Number(LoanData[\"UserId\"])\r\n ),\r\n },\r\n ],\r\n },\r\n ]\r\n );\r\n\r\n arr.push(\r\n ...additionalBorrowerInfo.slice(1).map((borrower, index) => {\r\n let obj = {\r\n isAdditionalBorr: true,\r\n CustId: borrower[\"CustId\"],\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Complete your contact information for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"]} ${borrower[\"LastName\"]}`\r\n : `borrower ${index + 2}`}\r\n </CustomText>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n removeContent: (\r\n <View>\r\n <Title\r\n style={{ fontSize: web ? 22 : 18 }}\r\n text=\"Are you sure you want to remove?\"\r\n />\r\n <View\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row-reverse\",\r\n marginTop: -10,\r\n alignSelf: \"flex-start\",\r\n }}\r\n >\r\n <IconButton\r\n onPress={() => {\r\n let addBorr = additionalBorrowerInfo.filter(\r\n (e, index_) => index + 1 !== index_\r\n );\r\n\r\n if (addBorr.length === 1) {\r\n setLoanData({\r\n ...LoanData,\r\n ...{\r\n Spouse_AddBorrower: 0,\r\n iSpouse_AddBorrower: 0,\r\n },\r\n });\r\n handleSaveLoanInformation([\r\n {\r\n ColumnName: \"Spouse_AddBorrower\",\r\n ColumnValue: 0,\r\n },\r\n ]);\r\n }\r\n\r\n handleUpdateAddtionalBorrower(index, \"isRemove\", false);\r\n setAdditionalBorrowerInfo([...addBorr]);\r\n\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: Number(pageIndex[\"subPage\"]) - 1,\r\n });\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 5,\r\n additionalBorrowerInfo[index + 1][\"CustId\"]\r\n );\r\n setScrollToTop(true);\r\n }}\r\n style={{\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#fff\" }}\r\n >\r\n Remove\r\n </CustomText>\r\n }\r\n />\r\n <IconButton\r\n style={{\r\n marginRight: 10,\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n buttonType=\"secondary\"\r\n onPress={() => {\r\n handleUpdateAddtionalBorrower(index, \"isRemove\", false);\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#508BC9\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n }\r\n />\r\n </View>\r\n </View>\r\n ),\r\n footerContent: (\r\n <>\r\n <AddRemoveButton\r\n onPress={() => {\r\n handleUpdateAddtionalBorrower(index, \"isRemove\", true);\r\n setScrollToTop(999);\r\n }}\r\n text={\r\n <>\r\n Remove{\" \"}\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"]} ${borrower[\"LastName\"]}`\r\n : `Borrower ${index + 2}`}\r\n </>\r\n }\r\n />\r\n </>\r\n ),\r\n index: index,\r\n onTextChange: handleUpdateAddtionalBorrower,\r\n isRemove: borrower[\"isRemove\"] || false,\r\n type: 2,\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"First Name\",\r\n ColumnName: \"FirstName\",\r\n ColumnValue: borrower[\"FirstName\"],\r\n isValid: !borrower[\"FirstName\"],\r\n onBlur: () => {\r\n if (\r\n (borrower[\"NickName\"] || \"\")?.toString().trim() === \"\"\r\n ) {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"NickName\",\r\n capitalizeFirstLetter(borrower[\"FirstName\"])\r\n );\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Nickname\",\r\n ColumnName: \"NickName\",\r\n ColumnValue: borrower[\"NickName\"].toString().trim(),\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Middle Name\",\r\n ColumnName: \"MiddleName\",\r\n ColumnValue: borrower[\"MiddleName\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Last Name\",\r\n ColumnName: \"LastName\",\r\n isValid: !borrower[\"LastName\"],\r\n ColumnValue: borrower[\"LastName\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Social Security Number\",\r\n ColumnName: \"SSN\",\r\n keyboardType: \"numeric\",\r\n maxLength: 9,\r\n ColumnValue: borrower[\"SSN\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"SSN\",\r\n formatSSN(borrower[\"SSN\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Suffix\",\r\n placeholder: \"Suffix\",\r\n ColumnName: \"Suffix\",\r\n ColumnValue: borrower[\"Suffix\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: [\r\n { value: \"\", label: \"-None-\" },\r\n { value: \"I\", label: \"I\" },\r\n { value: \"II\", label: \"II\" },\r\n { value: \"III\", label: \"III\" },\r\n { value: \"IV\", label: \"IV\" },\r\n { value: \"Jr\", label: \"Jr\" },\r\n { value: \"Sr\", label: \"Sr\" },\r\n { value: \"V\", label: \"v\" },\r\n ],\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Birthdate\",\r\n ColumnName: \"BirthDate\",\r\n placeholder: \"MM/DD/YYYY\",\r\n charLength: 10,\r\n ColumnValue: borrower[\"BirthDate\"],\r\n isValid: !borrower[\"BirthDate\"],\r\n forceValidation: !(\r\n calculateAge(formatDateTimeNew(borrower[\"BirthDate\"], 2)) >=\r\n 18\r\n ),\r\n onBlur: () => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"BirthDate\",\r\n formatDateTimeNew(borrower[\"BirthDate\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Cell\",\r\n ColumnName: \"CellPhone\",\r\n maxLength: 10,\r\n ColumnValue: handleGetCellPhone(borrower[\"CellPhone\"]),\r\n isValid: !handleGetCellPhone(borrower[\"CellPhone\"]),\r\n forceValidation:\r\n handleGetCellPhone(borrower[\"CellPhone\"])\r\n .toString()\r\n .replace(/[(),\\- ]/g, \"\").length != 10,\r\n keyboardType: \"phone-pad\",\r\n onBlur: () => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"CellPhone\",\r\n FormatPhoneLogin(\r\n handleGetCellPhone(borrower[\"CellPhone\"])\r\n )\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Email\",\r\n ColumnName: \"Email\",\r\n ColumnValue: borrower[\"Email\"],\r\n isValid: !borrower[\"Email\"],\r\n // keyboardType: \"email-address\",\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Number of Dependents\",\r\n ColumnName: \"Dependents\",\r\n keyboardType: \"numeric\",\r\n ColumnValue: borrower[\"Dependents\"],\r\n\r\n onBlur: () => {},\r\n charLength: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Ages of Dependents\",\r\n ColumnName: \"Ages_Dependents\",\r\n ColumnValue: borrower[\"Ages_Dependents\"],\r\n // type: \"numeric\",\r\n onBlur: () => {\r\n // let iBirthDate = formatDateTimeNew(\r\n // borrower[\"BirthDate\"],\r\n // 2\r\n // );\r\n // let age = calculateAge(iBirthDate);\r\n // handleUpdateAddtionalBorrower(\r\n // index,\r\n // \"Ages_Dependents\",\r\n // age\r\n // );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Marital Status\",\r\n ColumnName: \"MaritalStatus\",\r\n ColumnValue: borrower[\"MaritalStatus\"],\r\n isValid: borrower[\"MaritalStatus\"] == 0,\r\n onBlur: () => {},\r\n isMap: true,\r\n\r\n type: 3,\r\n Option: maritalStatusOptions.filter(\r\n ({ value }) => Number(value) !== Number(borrower[\"CustId\"])\r\n ),\r\n },\r\n ],\r\n };\r\n\r\n return obj;\r\n })\r\n );\r\n // if (additionalBorrowerInfo.length <= 1)\r\n arr.push({\r\n Title:\r\n \"Is there a spouse or any additional borrowers you would like to add to this loan?\",\r\n Options: [\r\n { value: 1, text: \"Add Spouse\" },\r\n { value: 2, text: \"Add Additional Borrower\" },\r\n { value: 0, text: \"No\" },\r\n ],\r\n ColumnName: \"iSpouse_AddBorrower\",\r\n ColumnValue: LoanData[\"iSpouse_AddBorrower\"] || 0,\r\n type: 1,\r\n });\r\n } else if (currentPage_ === pageArray[pageId[\"borrowerVerification\"]]) {\r\n arr.push({\r\n Title: \"How would you like to provide your bank account information?\",\r\n Options: [\r\n {\r\n value: 2,\r\n text: \"Input Manually\",\r\n additionalText:\r\n \"(Manually enter the bank account information. \\nAccount statements will be required)\",\r\n },\r\n {\r\n value: 1,\r\n text: \"Import Automatically\",\r\n additionalText: `(Bank Accounts are imported via ${loanURLDetails[\"assetVendor\"]}. \\nThis speeds up the Loan Application process)`,\r\n },\r\n ],\r\n ColumnName: \"LinkBankAccount\",\r\n ColumnValue: LoanData[\"LinkBankAccount\"],\r\n type: 1,\r\n viewPlaid: LoanData[\"viewPlaid\"],\r\n bodyContent: \"LinkBankAccount\",\r\n isBankAccountLinked: LoanData[\"BankAccountLinked\"] || 0,\r\n handleFrameNavigation: handleNextFrameNavigation,\r\n handleSaveLoanInformation: (value, isSave) => {\r\n setLoanData({\r\n ...LoanData,\r\n ...{ BankAccountLinked: value, LinkBankAccount: 1 },\r\n });\r\n isSave &&\r\n handleSaveLoanInformation(\r\n [\r\n {\r\n ColumnName: \"BankAccountLinked\",\r\n ColumnValue: value,\r\n },\r\n {\r\n ColumnName: \"LinkBankAccount\",\r\n ColumnValue: 1,\r\n },\r\n ],\r\n loanId\r\n );\r\n },\r\n handleResetPlaidDetails: handleResetPlaidDetails,\r\n details: {\r\n emailId:\r\n additionalBorrowerInfo.length > 0\r\n ? additionalBorrowerInfo[0]?.[\"Email\"]\r\n : LoanData[\"EmailId\"],\r\n userName: userName,\r\n loanId: loanId,\r\n loanOfficerId: loanOfficerId || 1,\r\n CustId: UserId,\r\n },\r\n });\r\n } else if (currentPage_ === pageArray[pageId[\"addressHistory\"]]) {\r\n //Primary Borr Section\r\n arr.push({\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Now tell us about your address history for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n type: 2,\r\n // isCheckMonthCount: true,\r\n footerContent: {\r\n Title: \"Do you Own or Rent?\",\r\n Options: [\r\n { value: 1, text: \"Own\" },\r\n { value: 2, text: \"Rent\" },\r\n { value: 3, text: \"Living Rent Free\" },\r\n ],\r\n ColumnName: \"Own or Rent\",\r\n ColumnValue: LoanData[\"Own\"]\r\n ? 1\r\n : LoanData[\"Rent\"]\r\n ? 2\r\n : LoanData[\"Living_Rent_Free\"]\r\n ? 3\r\n : 0,\r\n type: 1,\r\n subFields: LoanData[\"Rent\"]\r\n ? {\r\n Title: \"\",\r\n label: \"Monthly Rent\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Rent\",\r\n ColumnValue: LoanData[\"Monthly_Rent\"],\r\n isValid: cleanValue(LoanData[\"Monthly_Rent\"] || 0) == 0,\r\n type: 2,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Monthly_Rent: formatCurrency(LoanData[\"Monthly_Rent\"], 2)\r\n .toString()\r\n .replaceAll(\"-\", \"\"),\r\n });\r\n },\r\n }\r\n : {},\r\n },\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"Current Street Address\",\r\n ColumnName: \"Current_Street_Address\",\r\n ColumnValue: LoanData[\"Current_Street_Address\"],\r\n isValid: !LoanData[\"Current_Street_Address\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n keyboardType: \"numeric\",\r\n label: \"Zip Code\",\r\n maxLength: 5,\r\n placeholder: \"Zip Code\",\r\n ColumnName: \"Addrshistry_ZipCode\",\r\n ColumnValue:\r\n LoanData[\"Addrshistry_ZipCode\"] != 0\r\n ? LoanData[\"Addrshistry_ZipCode\"]\r\n : \"\",\r\n forceValidation:\r\n LoanData[\"Addrshistry_ZipCode\"]?.toString().length != 5,\r\n onBlur: async () => {\r\n let zipCode = LoanData[\"Addrshistry_ZipCode\"];\r\n if (zipCode) {\r\n let { city, state } = await handleGetZipCodeDetails(zipCode);\r\n setLoanData({\r\n ...LoanData,\r\n [`Addrshistry_City`]: city,\r\n [`Addrshistry_State`]: state,\r\n });\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"City\",\r\n ColumnName: \"Addrshistry_City\",\r\n ColumnValue: LoanData[\"Addrshistry_City\"],\r\n isValid: !LoanData[\"Addrshistry_City\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"State\",\r\n ColumnName: \"Addrshistry_State\",\r\n ColumnValue: LoanData[\"Addrshistry_State\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Years\",\r\n ColumnName: \"Addrshistry_Years\",\r\n ColumnValue: parseInt(LoanData[\"Addrshistry_Years\"] || 0) || 0,\r\n isValid:\r\n !parseInt(LoanData[\"Addrshistry_Years\"]) &&\r\n !parseInt(LoanData[\"Addrshistry_Months\"]),\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Months\",\r\n ColumnName: \"Addrshistry_Months\",\r\n ColumnValue: parseInt(LoanData[\"Addrshistry_Months\"] || 0) || 0,\r\n isValid:\r\n !parseInt(LoanData[\"Addrshistry_Months\"]) &&\r\n parseInt(LoanData[\"Addrshistry_Years\"] || 0) < 2,\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n onBlur: () => {},\r\n },\r\n ],\r\n });\r\n\r\n //For Previous Address Info\r\n\r\n let totalMonthCount = handleGetMonthCount(\r\n parseInt(LoanData[\"Addrshistry_Months\"] || 0) || 0,\r\n parseInt(LoanData[\"Addrshistry_Years\"] || 0) || 0\r\n );\r\n if (totalMonthCount < 24) {\r\n for (let i = 0; i < 4; i++) {\r\n if (totalMonthCount < 24) {\r\n totalMonthCount += handleGetMonthCount(\r\n parseInt(LoanData[`Addrshistry_Months${i}`] || 0) || 0,\r\n parseInt(LoanData[`Addrshistry_Years${i}`] || 0) || 0\r\n );\r\n i = i === 0 ? \"\" : i;\r\n if (i !== \"\")\r\n arr.push({\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Please continue to add a two year address history for\r\n {\" \\n\"}\r\n <CustomText\r\n bold={true}\r\n style={{ backgroundColor: \"cyan\" }}\r\n >\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `.`\r\n : `?`}\r\n </CustomText>\r\n ),\r\n type: 2,\r\n isCheckMonthCount: true,\r\n index: i,\r\n // [`isAddressHistory${i}`]: true,\r\n footerContent: {\r\n Title: \"Do you Own or Rent?\",\r\n Options: [\r\n { value: 1, text: \"Own\" },\r\n { value: 2, text: \"Rent\" },\r\n { value: 3, text: \"Living Rent Free\" },\r\n ],\r\n ColumnName: \"Own or Rent\",\r\n ColumnValue:\r\n Number(LoanData[`Own${i}`]) === 1\r\n ? 1\r\n : Number(LoanData[`Rent${i}`]) === 1\r\n ? 2\r\n : Number(LoanData[`Living_Rent_Free${i}`]) === 1\r\n ? 3\r\n : 0,\r\n type: 1,\r\n subFields:\r\n Number(LoanData[`Rent${i}`]) === 1\r\n ? {\r\n Title: \"\",\r\n label: \"Monthly Rent\",\r\n isCurrency: true,\r\n ColumnName: `Monthly_Rent${i}`,\r\n ColumnValue: LoanData[`Monthly_Rent${i}`],\r\n isValid:\r\n cleanValue(LoanData[`Monthly_Rent${i}`] || 0) ==\r\n 0,\r\n type: 2,\r\n onBlur: () => {\r\n setTimeout(() => {\r\n setLoanData({\r\n ...LoanData,\r\n [`Monthly_Rent${i}`]: formatCurrency(\r\n LoanData[`Monthly_Rent${i}`],\r\n 2\r\n )\r\n .toString()\r\n .replaceAll(\"-\", \"\"),\r\n });\r\n }, 100);\r\n },\r\n }\r\n : {},\r\n footerButton: (\r\n <>\r\n <AddRemoveButton\r\n onPress={() => {\r\n let iLoanData = LoanData;\r\n iLoanData[`Monthly_Rent${i}`] = \"$0.00\";\r\n iLoanData[`PrevCurrent_Street_Address${i}`] = \"\";\r\n iLoanData[`Addrshistry_ZipCode${i}`] = \"\";\r\n iLoanData[`Addrshistry_City${i}`] = \"\";\r\n iLoanData[`Addrshistry_State${i}`] = \"\";\r\n iLoanData[`Addrshistry_Years${i}`] = \"\";\r\n iLoanData[`Addrshistry_Months${i}`] = \"\";\r\n iLoanData[`Own${i}`] = null;\r\n iLoanData[`Rent${i}`] = null;\r\n iLoanData[`Living_Rent_Free${i}`] = null;\r\n setLoanData({ ...iLoanData });\r\n }}\r\n text={<>Remove Previous Address</>}\r\n />\r\n </>\r\n ),\r\n },\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"Street Address\",\r\n placeholder: \"Street\",\r\n ColumnName: `PrevCurrent_Street_Address${i}`,\r\n ColumnValue: LoanData[`PrevCurrent_Street_Address${i}`],\r\n isValid: !LoanData[`PrevCurrent_Street_Address${i}`],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n keyboardType: \"numeric\",\r\n label: \"Zip Code\",\r\n placeholder: \"Zip Code\",\r\n maxLength: 5,\r\n ColumnName: `Addrshistry_ZipCode${i}`,\r\n ColumnValue:\r\n LoanData[`Addrshistry_ZipCode${i}`] != 0\r\n ? LoanData[`Addrshistry_ZipCode${i}`]\r\n : \"\",\r\n forceValidation:\r\n LoanData[`Addrshistry_ZipCode${i}`]?.toString()\r\n .length != 5,\r\n onBlur: async () => {\r\n let zipCode = LoanData[`Addrshistry_ZipCode${i}`];\r\n if (zipCode) {\r\n let { city, state } = await handleGetZipCodeDetails(\r\n zipCode\r\n );\r\n setLoanData({\r\n ...LoanData,\r\n [`Addrshistry_City${i}`]: city,\r\n [`Addrshistry_State${i}`]: state,\r\n });\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"City\",\r\n ColumnName: `Addrshistry_City${i}`,\r\n ColumnValue: LoanData[`Addrshistry_City${i}`],\r\n isValid: !LoanData[`Addrshistry_City${i}`],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"State\",\r\n ColumnName: `Addrshistry_State${i}`,\r\n ColumnValue: LoanData[`Addrshistry_State${i}`],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Years\",\r\n ColumnName: `Addrshistry_Years${i}`,\r\n ColumnValue: LoanData[`Addrshistry_Years${i}`] || 0,\r\n isValid:\r\n !parseInt(LoanData[`Addrshistry_Years${i}`]) &&\r\n !parseInt(LoanData[`Addrshistry_Months${i}`]),\r\n onBlur: () => {},\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Months\",\r\n ColumnName: `Addrshistry_Months${i}`,\r\n ColumnValue:\r\n parseInt(LoanData[`Addrshistry_Months${i}`]) || 0,\r\n isValid:\r\n !parseInt(LoanData[`Addrshistry_Months${i}`]) &&\r\n parseInt(LoanData[`Addrshistry_Years${i}`] || 0) < 2,\r\n onBlur: () => {\r\n if (!parseInt(LoanData[`Addrshistry_Months${i}`]))\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n [`Addrshistry_Months${i}`]: 0,\r\n };\r\n });\r\n },\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n },\r\n ],\r\n });\r\n }\r\n }\r\n }\r\n //============================================\r\n\r\n //Additional Borr Section\r\n\r\n let sBorr = [];\r\n additionalBorrowerInfo.slice(1).forEach((borrower, index) => {\r\n totalMonthCount = handleGetMonthCount(\r\n parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Months\") || 0\r\n ) || 0,\r\n parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Years\") || 0\r\n ) || 0\r\n );\r\n sBorr.push({\r\n isCheckAddMonthCount: true,\r\n isAddressHistory: true,\r\n // BorrGroup: `Borr_${index}`,\r\n type: 2,\r\n index: index,\r\n flag: 12,\r\n handleCopyPriAddress: handleCopyPriAddress,\r\n onTextChange: handleUpdateAddtionalBorrower,\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Now tell us about your address history for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"] || \"\"} ${\r\n borrower[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n\r\n headerContent: {\r\n Title: (\r\n <>\r\n Is your{\" \"}\r\n <CustomText bold={true} style={{ backgroundColor: \"yellow\" }}>\r\n current\r\n </CustomText>{\" \"}\r\n address the same as the primary borrower's address?\r\n </>\r\n ),\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: `btnSameAsProperty${index + 1}`,\r\n ColumnValue:\r\n LoanData[`btnSameAsProperty${index + 1}`] == 1 ? 1 : 0,\r\n type: 1,\r\n widthOption: \"40%\",\r\n },\r\n footerContent: {\r\n Title: \"Do you Own or Rent?\",\r\n Options: [\r\n { value: 1, text: \"Own\" },\r\n { value: 2, text: \"Rent\" },\r\n { value: 3, text: \"Living Rent Free\" },\r\n ],\r\n ColumnName: \"Own or Rent\",\r\n ColumnValue:\r\n borrower[\"Bor Own\"] == \"O\"\r\n ? 1\r\n : borrower[\"Bor Own\"] == \"R\"\r\n ? 2\r\n : borrower[\"Bor Own\"] == \"L\"\r\n ? 3\r\n : 0,\r\n type: 1,\r\n subFields:\r\n borrower[\"Bor Own\"] == \"R\"\r\n ? {\r\n Title: \"\",\r\n label: \"Monthly Rent\",\r\n isCurrency: true,\r\n ColumnName: \"Present Rent\",\r\n ColumnValue: borrower[\"Present Rent\"],\r\n isValid: cleanValue(borrower[\"Present Rent\"] || 0) == 0,\r\n type: 2,\r\n onBlur: () => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"Present Rent\",\r\n formatCurrency(borrower[\"Present Rent\"], 2)\r\n .toString()\r\n .replaceAll(\"-\", \"\")\r\n );\r\n },\r\n }\r\n : {},\r\n },\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"Current Street Address\",\r\n ColumnName: \"Address1\",\r\n ColumnValue: borrower[\"Address1\"],\r\n isValid: !borrower[\"Address1\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n keyboardType: \"numeric\",\r\n label: \"Zip Code\",\r\n placeholder: \"Zip Code\",\r\n ColumnName: \"Zip\",\r\n maxLength: 5,\r\n ColumnValue: borrower[\"Zip\"] != 0 ? borrower[\"Zip\"] : \"\",\r\n forceValidation: borrower[\"Zip\"]?.toString().length != 5,\r\n onBlur: async () => {\r\n let zipCode = borrower[\"Zip\"];\r\n if (zipCode) {\r\n let { city, state } = await handleGetZipCodeDetails(\r\n zipCode\r\n );\r\n let additionalBorrowerInfo_ = additionalBorrowerInfo;\r\n additionalBorrowerInfo_[index + 1][\"City\"] = city;\r\n additionalBorrowerInfo_[index + 1][\"State\"] = state;\r\n setAdditionalBorrowerInfo([\r\n ...[],\r\n ...additionalBorrowerInfo_,\r\n ]);\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"City\",\r\n ColumnName: \"City\",\r\n ColumnValue: borrower[\"City\"],\r\n isValid: !borrower[\"City\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"State\",\r\n ColumnName: \"State\",\r\n ColumnValue: borrower[\"State\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Years\",\r\n ColumnName: \"Bor Own Period\",\r\n ColumnValue:\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Years\") ||\r\n 0,\r\n isValid:\r\n !parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Years\")\r\n ) &&\r\n !parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Months\")\r\n ),\r\n onBlur: () => {},\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Months\",\r\n ColumnName: \"Bor Own Period\",\r\n ColumnValue: handleGetBorrYearMonth(\r\n borrower[\"Bor Own Period\"],\r\n \"Months\"\r\n ),\r\n isValid:\r\n !parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Months\")\r\n ) &&\r\n (parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Years\")\r\n ) || 0) < 2,\r\n onBlur: () => {},\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n },\r\n ],\r\n });\r\n //For Previous Address Info\r\n if (totalMonthCount < 24) {\r\n for (let i = 1; i < 4; i++) {\r\n if (totalMonthCount < 24) {\r\n totalMonthCount += handleGetMonthCount(\r\n parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Months\"\r\n ) || 0\r\n ) || 0,\r\n parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Years\"\r\n ) || 0\r\n ) || 0\r\n );\r\n\r\n sBorr.push({\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Please continue to add a two year address history for\r\n {\" \\n\"}\r\n <CustomText\r\n bold={true}\r\n style={{ backgroundColor: \"cyan\" }}\r\n >\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"] || \"\"} ${\r\n borrower[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `.`\r\n : `?`}\r\n </CustomText>\r\n ),\r\n type: 2,\r\n // isCheckAddMonthCount: true,\r\n isAddressHistory: true,\r\n isAddtionalPrevAddressHistory: true,\r\n flag: i + 16, // DB update statement basedon this flag\r\n onTextChange: handleUpdateAddtionalBorrower,\r\n prevAddIndex: i,\r\n // BorrGroup: `Borr_${index}`,\r\n index: index,\r\n footerContent: {\r\n Title: \"Do you Own or Rent?\",\r\n Options: [\r\n { value: 1, text: \"Own\" },\r\n { value: 2, text: \"Rent\" },\r\n { value: 3, text: \"Living Rent Free\" },\r\n ],\r\n ColumnName: \"Own or Rent\",\r\n ColumnValue:\r\n borrower[`Bor For Add${i} Own`] == \"O\"\r\n ? 1\r\n : borrower[`Bor For Add${i} Own`] == \"R\"\r\n ? 2\r\n : borrower[`Bor For Add${i} Own`] == \"L\"\r\n ? 3\r\n : 0,\r\n type: 1,\r\n subFields:\r\n borrower[`Bor For Add${i} Own`] == \"R\"\r\n ? {\r\n Title: \"\",\r\n label: \"Monthly Rent\",\r\n isCurrency: true,\r\n ColumnName: `Present Rent${i}`,\r\n ColumnValue: borrower[`Present Rent${i}`],\r\n isValid:\r\n cleanValue(borrower[`Present Rent${i}`] || 0) ==\r\n 0,\r\n type: 2,\r\n onBlur: () => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n [`Present Rent${i}`],\r\n formatCurrency(borrower[`Present Rent${i}`], 2)\r\n .toString()\r\n .replaceAll(\"-\", \"\")\r\n );\r\n },\r\n }\r\n : {},\r\n footerButton: (\r\n <>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n let iAdditionalBorrowerInfo =\r\n additionalBorrowerInfo,\r\n borrower = iAdditionalBorrowerInfo[index + 1];\r\n borrower[`Bor For Add${i} Own`] = null;\r\n borrower[`Bor For Add${i}`] = \"\";\r\n borrower[`BorForZip${i + 1}`] = \"\";\r\n borrower[`BorForCity${i + 1}`] = \"\";\r\n borrower[`BorForState${i + 1}`] = \"\";\r\n borrower[`Bor For Add${i} Yrs`] = \"0.0\";\r\n borrower[`Present Rent${i}`] = \"$0.00\";\r\n iAdditionalBorrowerInfo[index + 1] = borrower;\r\n setAdditionalBorrowerInfo([\r\n ...iAdditionalBorrowerInfo,\r\n ]);\r\n }}\r\n style={[\r\n styles.buttonContainer,\r\n { backgroundColor: \"#d43f3a\" },\r\n ]}\r\n >\r\n <CustomText\r\n style={[\r\n {\r\n color: \"#fff\",\r\n marginTop: web ? 7 : 3,\r\n fontSize: 20,\r\n alignSelf: \"center\",\r\n },\r\n web ? { width: \"max-content\" } : {},\r\n ]}\r\n >\r\n {\" \"}Remove Previous Address{\" \"}\r\n </CustomText>\r\n </TouchableOpacity>\r\n </>\r\n ),\r\n },\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"Current Street Address\",\r\n ColumnName: `Bor For Add${i}`,\r\n ColumnValue: borrower[`Bor For Add${i}`],\r\n isValid: !borrower[`Bor For Add${i}`],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n keyboardType: \"numeric\",\r\n maxLength: 5,\r\n label: \"Zip Code\",\r\n placeholder: \"Zip Code\",\r\n ColumnName: `BorForZip${i + 1}`,\r\n ColumnValue:\r\n borrower[`BorForZip${i + 1}`] != 0\r\n ? borrower[`BorForZip${i + 1}`]\r\n : \"\",\r\n forceValidation:\r\n borrower[`BorForZip${i + 1}`]?.toString().length != 5,\r\n onBlur: async () => {\r\n let zipCode = borrower[`BorForZip${i + 1}`];\r\n if (zipCode) {\r\n let { city, state } = await handleGetZipCodeDetails(\r\n zipCode\r\n );\r\n let additionalBorrowerInfo_ = additionalBorrowerInfo;\r\n additionalBorrowerInfo_[index + 1][\r\n `BorForCity${i + 1}`\r\n ] = city;\r\n additionalBorrowerInfo_[index + 1][\r\n `BorForState${i + 1}`\r\n ] = state;\r\n setAdditionalBorrowerInfo([\r\n ...[],\r\n ...additionalBorrowerInfo_,\r\n ]);\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"City\",\r\n ColumnName: `BorForCity${i + 1}`,\r\n ColumnValue: borrower[`BorForCity${i + 1}`],\r\n isValid: !borrower[`BorForCity${i + 1}`],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"State\",\r\n ColumnName: `BorForState${i + 1}`,\r\n ColumnValue: borrower[`BorForState${i + 1}`],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Years\",\r\n ColumnName: `Bor For Add${i} Yrs`,\r\n ColumnValue:\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Years\"\r\n ) || 0,\r\n isValid:\r\n !parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Years\"\r\n )\r\n ) &&\r\n !parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Months\"\r\n )\r\n ),\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Months\",\r\n ColumnName: `Bor For Add${i} Yrs`,\r\n ColumnValue:\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Months\"\r\n ) || 0,\r\n isValid:\r\n !parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Months\"\r\n )\r\n ) &&\r\n (parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Years\"\r\n )\r\n ) || 0) < 2,\r\n keyboardType: \"numeric\",\r\n formatZero: true,\r\n onBlur: () => {},\r\n },\r\n ],\r\n });\r\n }\r\n }\r\n }\r\n });\r\n arr.push(...sBorr);\r\n\r\n //============================================\r\n } else if (currentPage_ === pageArray[pageId[\"creditScore\"]]) {\r\n let { Status, Details, ErrMsg } = creditScoreDetails;\r\n\r\n if (Status === 5 || Details[0]?.iFinalScanDocID) {\r\n arr.push({\r\n type: -1,\r\n bodyContent: (\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ color: \"#41464d\", fontSize: 22 }}\r\n >\r\n Credit Scores.\r\n </CustomText>\r\n <CustomText style={{ color: \"#41464d\", fontSize: 16 }}>\r\n Here are your credit scores.\r\n </CustomText>\r\n <Separator />\r\n <CustomText\r\n bold={true}\r\n style={{ color: \"#41464d\", fontSize: 22, marginBottom: 10 }}\r\n >\r\n Your Qualifying Score: {Details[0][\"FICOMid\"]}\r\n </CustomText>\r\n <Separator />\r\n <>\r\n {Details.map((item, index) => {\r\n return (\r\n <View key={index}>\r\n {/* <View style={{ flexDirection: \"row\" }}> */}\r\n <View style={{ flexDirection: web ? \"row\" : \"column\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#41464d\",\r\n fontSize: web ? 22 : 20,\r\n marginBottom: 5,\r\n }}\r\n >\r\n {/* {item[`BorName${index === 0 ? \"\" : \"1\"}`] || \"\"} */}\r\n {item[`FullName`] || \"\"}\r\n </CustomText>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n borderRadius: 20,\r\n paddingVertical: web ? 6 : 2,\r\n alignSelf: web ? \"center\" : \"flex-start\",\r\n paddingHorizontal: web ? 12 : 5,\r\n borderColor: \"#043888\",\r\n borderWidth: 2,\r\n marginBottom: web ? 25 : 5,\r\n marginLeft: 5,\r\n }}\r\n onPress={async () => {\r\n let ScanDocId = item[\"iFinalScanDocID\"],\r\n url = await handleOpenScanDocFile(\r\n SessionId,\r\n ScanDocId,\r\n loanId\r\n );\r\n if (ScanDocId != undefined) {\r\n // url = `../../../BorrowerApplication/Presentation/Webforms/ScanDocumentsManager.aspx?SessionId=${SessionId}&Id=${ScanDocId}`;\r\n if (web) {\r\n if (\r\n window.location.host.indexOf(\r\n \"localhost\"\r\n ) !== -1\r\n )\r\n url = url.replace(\"../../..\", REDIRECT_URL);\r\n }\r\n }\r\n if (web) {\r\n window.open(\r\n url,\r\n \"_blank\",\r\n \"toolbar=1, scrollbars=1, resizable=1, width=\" +\r\n 1015 +\r\n \", height=\" +\r\n 800\r\n );\r\n } else {\r\n navigation.navigate(\"Pdf\", {\r\n url,\r\n backTo: \"Home\",\r\n GoToNav: 5,\r\n isNeedBack: true,\r\n onBack: () => {},\r\n });\r\n }\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: web ? 11 : 12,\r\n color: \"#043888\",\r\n }}\r\n >\r\n View Credit Report\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n <CustomText\r\n style={{\r\n color: \"#41464d\",\r\n fontSize: 16,\r\n marginBottom: 5,\r\n }}\r\n >\r\n Experian: {item[\"FICOExp\"] || 0}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n color: \"#41464d\",\r\n fontSize: 16,\r\n marginBottom: 5,\r\n }}\r\n >\r\n Equifax: {item[\"FICOEqu\"] || 0}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n color: \"#41464d\",\r\n fontSize: 16,\r\n marginBottom: 5,\r\n }}\r\n >\r\n Transunion: {item[\"FICOTran\"] || 0}\r\n </CustomText>\r\n <Separator />\r\n </View>\r\n );\r\n })}\r\n </>\r\n </>\r\n ),\r\n });\r\n }\r\n\r\n arr.push({\r\n Title:\r\n \"The next step is your Credit Report. Would you like to order that now, or skip to the next step?\",\r\n Options: [\r\n { value: 1, text: \"Get Credit Report\" },\r\n { value: 0, text: \"Skip and Complete Later\" },\r\n ],\r\n ColumnName: \"CreditReport\",\r\n ColumnValue: LoanData[\"CreditReport\"],\r\n type: 1,\r\n });\r\n arr.push({\r\n Title:\r\n \"Good, let's get your credit report. Have you frozen your credit report?\",\r\n Options: [\r\n { value: 0, text: \"No\", type: \"primary\" },\r\n { value: 1, text: \"Yes\", type: \"secondary\" },\r\n ],\r\n ColumnName: \"FrozenCredit\",\r\n ColumnValue: LoanData[\"FrozenCredit\"],\r\n type: 1,\r\n widthOption: \"40%\",\r\n });\r\n arr.push({\r\n type: -1,\r\n isSSNDetails: true,\r\n bodyContent: (\r\n <>\r\n <Title\r\n text={\r\n \"Please provide the social security numbers requested below.\"\r\n }\r\n />\r\n <>\r\n <Title\r\n text={\r\n LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`\r\n }\r\n />\r\n <InputBox\r\n label=\"Social Security Number\"\r\n placeholder=\"SSN\"\r\n keyboardType=\"numeric\"\r\n maxLength={9}\r\n forceValidation={\r\n LoanData[\"SSN\"]?.toString().replace(/-/g, \"\").length != 9\r\n }\r\n onBlur={() => {\r\n handleOptionPress(\r\n formatSSN(LoanData[\"SSN\"]),\r\n true,\r\n null,\r\n \"SSN\"\r\n );\r\n }}\r\n onChangeText={(text) => {\r\n try {\r\n handleOptionPress(text, true, null, \"SSN\");\r\n } catch (e) {}\r\n }}\r\n value={LoanData[\"SSN\"] || \"\"}\r\n />\r\n </>\r\n <>\r\n {additionalBorrowerInfo.slice(1).map((borrower, index) => {\r\n return (\r\n <View key={index}>\r\n <Title\r\n text={\r\n borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"] || \"\"} ${\r\n borrower[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`\r\n }\r\n />\r\n <InputBox\r\n label=\"Social Security Number\" //\r\n placeholder=\"SSN\"\r\n maxLength={9}\r\n keyboardType=\"numeric\"\r\n forceValidation={\r\n borrower[\"SSN\"]?.toString().replace(/-/g, \"\")\r\n .length != 9\r\n }\r\n onBlur={() => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"SSN\",\r\n formatSSN(borrower[\"SSN\"])\r\n );\r\n }}\r\n onChangeText={(text) => {\r\n try {\r\n handleUpdateAddtionalBorrower(index, \"SSN\", text);\r\n } catch (e) {}\r\n }}\r\n value={borrower[\"SSN\"]}\r\n />\r\n </View>\r\n );\r\n })}\r\n </>\r\n </>\r\n ),\r\n });\r\n\r\n if (Number(LoanData[\"FrozenCredit\"]) === 1) {\r\n arr.push({\r\n type: -1,\r\n pageName: \"unFreeze\",\r\n bodyContent: (\r\n <>\r\n <CustomText>\r\n <CustomText style={{ fontSize: 17 }} bold={true}>\r\n No Problem...{\" \"}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n lineHeight: 25,\r\n fontSize: 16,\r\n }}\r\n >\r\n Before we can order your credit report you will need to\r\n unfreeze your account. Once completed, you can return to\r\n this credit report page and answer that your credit report\r\n is not frozen. Here are some helpful links with instructions\r\n to unfreeze your credit report.\r\n </CustomText>\r\n </CustomText>\r\n <Separator />\r\n <View>\r\n <CustomText\r\n style={{ lineHeight: 26, fontSize: 17 }}\r\n bold={true}\r\n >\r\n Experian\r\n </CustomText>\r\n <CustomText style={{ lineHeight: 26, fontSize: 16 }}>\r\n 888-397-3742\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n lineHeight: 25,\r\n fontSize: 16,\r\n color: \"#2971bf\",\r\n }}\r\n onPress={() =>\r\n Linking.openURL(\r\n \"https://www.experian.com/freeze/center.html\"\r\n )\r\n }\r\n >\r\n https://www.experian.com/freeze/center.html\r\n </CustomText>\r\n </View>\r\n <Separator />\r\n\r\n <View>\r\n <CustomText\r\n style={{ lineHeight: 26, fontSize: 17 }}\r\n bold={true}\r\n >\r\n Equifax\r\n </CustomText>\r\n <CustomText style={{ lineHeight: 26, fontSize: 16 }}>\r\n 888-298-0045\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n lineHeight: 25,\r\n fontSize: 16,\r\n color: \"#2971bf\",\r\n }}\r\n onPress={() =>\r\n Linking.openURL(\r\n \"https://www.equifax.com/personal/credit-report-services/credit-freeze/\"\r\n )\r\n }\r\n >\r\n https://www.equifax.com/personal/credit-report-services/credit-freeze/\r\n </CustomText>\r\n </View>\r\n <Separator />\r\n <View>\r\n <CustomText\r\n style={{ lineHeight: 26, fontSize: 17 }}\r\n bold={true}\r\n >\r\n Transunion\r\n </CustomText>\r\n <CustomText style={{ lineHeight: 26, fontSize: 16 }}>\r\n 800-916-8800\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n lineHeight: 25,\r\n fontSize: 16,\r\n color: \"#2971bf\",\r\n }}\r\n onPress={() =>\r\n Linking.openURL(\r\n \"https://www.transunion.com/credit-freeze\"\r\n )\r\n }\r\n >\r\n https://www.transunion.com/credit-freeze\r\n </CustomText>\r\n </View>\r\n <Separator />\r\n </>\r\n ),\r\n });\r\n }\r\n\r\n if (Number(LoanData[\"FrozenCredit\"] || 0) === 0) {\r\n arr.push({\r\n Title: \"We need your credit authorization\",\r\n Options: [\r\n { value: 0, text: \"No\", type: \"secondary\" },\r\n { value: 1, text: \"Yes\", type: \"primary\" },\r\n ],\r\n bodyText: (\r\n <>\r\n <CustomText\r\n style={{\r\n fontSize: web ? \"17px\" : 16,\r\n lineHeight: 25,\r\n }}\r\n >\r\n Your credit information will help us understand more about\r\n your personal and financial background and ensure we give you\r\n the most accurate mortage options. To help us, we need the\r\n following authorization.\r\n </CustomText>\r\n <Separator />\r\n <CustomText\r\n style={{\r\n fontSize: web ? \"17px\" : 16,\r\n lineHeight: 25,\r\n }}\r\n >\r\n I authorize Lender/Broker to order a consumer credit report\r\n and verify other credit information identified on such\r\n reports, including past and present mortgage and landlord\r\n references.\r\n </CustomText>\r\n <Separator />\r\n <Separator />\r\n </>\r\n ),\r\n ColumnName: \"CreditRpt_Auth\",\r\n ColumnValue: LoanData[\"CreditRpt_Auth\"],\r\n type: 1,\r\n widthOption: \"40%\",\r\n });\r\n }\r\n\r\n (LoanData[\"creditReportOrdered\"] ||\r\n Status === 5 ||\r\n Details[0]?.iFinalScanDocID) &&\r\n arr.push({\r\n Title: \"Credit Report Ordered\",\r\n bodyText: (\r\n <>\r\n <CustomText\r\n style={{\r\n fontSize: web ? \"17px\" : 16,\r\n lineHeight: 25,\r\n }}\r\n >\r\n Thank you. Your credit report has been ordered. This typically\r\n takes up to 2 minutes to complete.\r\n </CustomText>\r\n <Separator />\r\n <CustomText\r\n style={{\r\n fontSize: web ? \"17px\" : 16,\r\n lineHeight: 25,\r\n }}\r\n >\r\n You can wait on this screen for the result, or you can proceed\r\n to the next step. To come back later, simply click the pancake\r\n menu in the upper left, and click on the \"Credit Scores\" area\r\n in the left side navigation options.\r\n {\"\\n\\n\"}\r\n </CustomText>\r\n {ErrMsg && (\r\n <>\r\n <CustomText\r\n style={{\r\n fontSize: web ? \"17px\" : 16,\r\n lineHeight: 25,\r\n color: \"red\",\r\n }}\r\n >\r\n The following errors occurred. Please fix and request a\r\n new order.{\"\\n\\n\"}- {ErrMsg}\r\n </CustomText>\r\n\r\n <CustomText\r\n style={{\r\n ...{\r\n fontSize: !isMobileWeb && web ? 19 : 16,\r\n color: \"#1172c1\",\r\n marginTop: 20,\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n }}\r\n onPress={() => {\r\n setProcessStatus(\"creditReportReOrderded\");\r\n handleOrderCreditReport();\r\n }}\r\n >\r\n Try Again\r\n {processStatus === \"creditReportReOrderded\" && (\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={20}\r\n color=\"#295b9a\"\r\n style={{ marginLeft: 10 }}\r\n duration={1200}\r\n />\r\n )}\r\n {processStatus === \"orderPlaced\" && (\r\n <CustomText\r\n style={{\r\n fontSize: !isMobileWeb && web ? 18 : 15,\r\n marginLeft: 10,\r\n }}\r\n >\r\n <Icon size={20} name={\"check\"} color={\"green\"} />{\" \"}\r\n Order Placed.\r\n </CustomText>\r\n )}\r\n </CustomText>\r\n </>\r\n )}\r\n <Separator />\r\n <Separator />\r\n </>\r\n ),\r\n type: 1,\r\n widthOption: \"40%\",\r\n });\r\n } else if (currentPage_ === pageArray[pageId[\"employment\"]]) {\r\n arr.push({\r\n Title:\r\n \"Tell us about your employment history. What best describes your current employment?\",\r\n Options: [\r\n { value: 1, text: \"I’m currently employed\" }, //currently_employed\r\n { value: 2, text: \"I’m Retired\" }, //Retired\r\n { value: 3, text: \"I’m not currently employed.\" }, //Not_CurrentlyEmployed\r\n ],\r\n ColumnName: \"CurrentlyEmployed\",\r\n ColumnValue: LoanData[\"currently_employed\"]\r\n ? 1\r\n : LoanData[\"Retired\"]\r\n ? 2\r\n : LoanData[\"Not_CurrentlyEmployed\"]\r\n ? 3\r\n : 0,\r\n type: 1,\r\n footerContent: <></>,\r\n });\r\n if (LoanData[\"currently_employed\"] === 1) {\r\n let loopCustId = additionalEmploymentInfo.length\r\n ? additionalEmploymentInfo[0]?.[\"CustId\"]\r\n : 0;\r\n\r\n arr.push(\r\n ...handleEmploymentOrder(additionalEmploymentInfo)\r\n .map((employment, index) => {\r\n let empOption = {\r\n Title:\r\n index === 0\r\n ? \"Tell us about your Employment.\"\r\n : `Employment ${index + 1}?`,\r\n type: 2,\r\n index: index,\r\n isAdditionalEmployment: true, //!(index === 0),\r\n isRemove: employment[\"isRemove\"] || false,\r\n\r\n onChangeText: (name, value) =>\r\n handleUpdateAddtionalEmployment(index, name, value),\r\n subFields: [\r\n {\r\n ColumnName: \"Id\",\r\n ColumnValue: employment[\"Id\"],\r\n },\r\n {\r\n ColumnName: \"iCustId\",\r\n ColumnValue: employment[\"CustId\"],\r\n },\r\n {\r\n Title: \"For Which Borrower\",\r\n label: \"\",\r\n ColumnName: \"CustId\",\r\n ColumnValue: employment[\"CustId\"],\r\n onBlur: () => {},\r\n // isMap: !true,\r\n type: 6,\r\n Option: handleGetBorrowerOption(),\r\n },\r\n // {\r\n // Title: \"\",\r\n // label: \"For Which Borrower\",\r\n // ColumnName: \"CustId\",\r\n // ColumnValue: employment[\"CustId\"],\r\n // onBlur: () => {},\r\n // isMap: true,\r\n // type: 3,\r\n // Option: handleGetBorrowerOption(),\r\n // },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Employer Name\",\r\n ColumnName: \"Empmt_Emp_Name\",\r\n ColumnValue: employment[\"Empmt_Emp_Name\"],\r\n isValid: !employment[\"Empmt_Emp_Name\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Employer Street Address\",\r\n ColumnName: \"Emp_Strt_Addrs\",\r\n ColumnValue: employment[\"Emp_Strt_Addrs\"],\r\n isValid: !employment[\"Emp_Strt_Addrs\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n keyboardType: \"numeric\",\r\n maxLength: 5,\r\n // type: \"numeric\",\r\n label: \"Employer Zip Code\",\r\n placeholder: \"Zip Code\",\r\n ColumnName: \"Emp_ZipCode\",\r\n forceValidation:\r\n employment[\"Emp_ZipCode\"]?.toString().length != 5,\r\n ColumnValue:\r\n employment[\"Emp_ZipCode\"] != 0\r\n ? employment[\"Emp_ZipCode\"]\r\n : \"\",\r\n onBlur: async () => {\r\n let zipCode = employment[\"Emp_ZipCode\"];\r\n if (zipCode) {\r\n let { city, state } = await handleGetZipCodeDetails(\r\n zipCode\r\n );\r\n\r\n let additionalEmploymentInfo_ =\r\n additionalEmploymentInfo;\r\n additionalEmploymentInfo_[index][`Emp_City`] = city;\r\n additionalEmploymentInfo_[index][`Emp_State`] = state;\r\n setAdditionalEmploymentInfo(\r\n handleEmploymentOrder([...additionalEmploymentInfo])\r\n );\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Employer City\",\r\n isValid: !employment[\"Emp_City\"],\r\n ColumnName: \"Emp_City\",\r\n ColumnValue: employment[\"Emp_City\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"State\",\r\n isValid: !employment[\"Emp_State\"],\r\n ColumnName: \"Emp_State\",\r\n ColumnValue: employment[\"Emp_State\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Employer Phone\",\r\n isValid: !employment[\"Emp_phone\"],\r\n forceValidation:\r\n employment[\"Emp_phone\"]\r\n .toString()\r\n .replace(/[(),\\- ]/g, \"\").length != 10,\r\n ColumnName: \"Emp_phone\",\r\n keyboardType: \"phone-pad\",\r\n maxLength: 10,\r\n ColumnValue: employment[\"Emp_phone\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"Emp_phone\",\r\n FormatPhoneLogin(employment[\"Emp_phone\"])\r\n );\r\n },\r\n },\r\n {\r\n Title: \"What is your job title?\",\r\n type: 2,\r\n label: \"Job Title\",\r\n isValid: !employment[\"Job_Title\"],\r\n ColumnName: \"Job_Title\",\r\n ColumnValue: employment[\"Job_Title\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Are you Employed By Family?\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Employedbyfamily\",\r\n ColumnValue: employment[\"Employedbyfamily\"] || 0,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Are you Self Employed?\",\r\n Options: [\r\n { value: \"N\", text: \"No\" },\r\n { value: \"Y\", text: \"Yes\" },\r\n ],\r\n ColumnName: \"Self Employed\",\r\n ColumnValue: employment[\"Self Employed\"],\r\n },\r\n {\r\n Title: \"What date did you begin employment there?\",\r\n type: 2,\r\n label: \"Employed From\",\r\n placeholder: \"MM/DD/YYYY\",\r\n charLength: 10,\r\n isValid: !employment[\"Employed_From\"],\r\n ColumnName: \"Employed_From\",\r\n ColumnValue: employment[\"Employed_From\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"Employed_From\",\r\n formatDateTimeNew(employment[\"Employed_From\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Employed To\",\r\n placeholder: \"MM/DD/YYYY\",\r\n charLength: 10,\r\n isValid: !employment[\"Employed_To\"],\r\n ColumnName: \"Employed_To\",\r\n ColumnValue: employment[\"Employed_To\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"Employed_To\",\r\n formatDateTimeNew(employment[\"Employed_To\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Years In Line of Work\",\r\n forceValidation:\r\n Number(employment[\"CurrentYrsInLineofwork\"]) == 0,\r\n ColumnName: \"CurrentYrsInLineofwork\",\r\n ColumnValue: employment[\"CurrentYrsInLineofwork\"],\r\n keyboardType: \"numeric\",\r\n onBlur: () => {},\r\n },\r\n {\r\n Title:\r\n \"Who is the person or department and phone number to contact to verify your employment?\",\r\n type: 2,\r\n label: \"HR Contact Person\",\r\n ColumnName: \"HR_Contact_Person\",\r\n ColumnValue: employment[\"HR_Contact_Person\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"HR Phone\",\r\n ColumnName: \"HR_Phone\",\r\n keyboardType: \"phone-pad\",\r\n maxLength: 10,\r\n ColumnValue: employment[\"HR_Phone\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"HR_Phone\",\r\n FormatPhoneLogin(employment[\"HR_Phone\"])\r\n );\r\n },\r\n },\r\n {\r\n Title: \"What is your monthly income?\",\r\n type: 2,\r\n label: \"Monthly Base Pay\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Base_Pay\",\r\n ColumnValue: employment[\"Monthly_Base_Pay\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"Monthly_Base_Pay\",\r\n formatCurrency(employment[\"Monthly_Base_Pay\"], 2)\r\n );\r\n },\r\n },\r\n\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Monthly Overtime Amount\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Overtime_Amt\",\r\n ColumnValue: employment[\"Monthly_Overtime_Amt\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"Monthly_Overtime_Amt\",\r\n formatCurrency(employment[\"Monthly_Overtime_Amt\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Monthly Bonus Amount\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Bonus_Amt\",\r\n ColumnValue: employment[\"Monthly_Bonus_Amt\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"Monthly_Bonus_Amt\",\r\n formatCurrency(employment[\"Monthly_Bonus_Amt\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Monthly Commissions Amount\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Commission_Amt\",\r\n ColumnValue: employment[\"Monthly_Commission_Amt\"],\r\n onBlur: () => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"Monthly_Commission_Amt\",\r\n formatCurrency(\r\n employment[\"Monthly_Commission_Amt\"],\r\n 2\r\n )\r\n );\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Monthly Total Pay\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Total_Pay\",\r\n ColumnValue:\r\n formatCurrency(\r\n Number(cleanValue(employment[\"Monthly_Base_Pay\"])) +\r\n Number(\r\n cleanValue(employment[\"Monthly_Overtime_Amt\"])\r\n ) +\r\n Number(\r\n cleanValue(employment[\"Monthly_Bonus_Amt\"])\r\n ) +\r\n Number(\r\n cleanValue(employment[\"Monthly_Commission_Amt\"])\r\n ),\r\n 2\r\n ) || formatCurrency(employment[\"Monthly_Total_Pay\"], 2),\r\n onBlur: () => {},\r\n disabled: true,\r\n },\r\n ],\r\n removeContent: (\r\n <View>\r\n <Title\r\n style={{ fontSize: web ? 22 : 18 }}\r\n text={`Are you sure you want to remove ${employment[\"Empmt_Emp_Name\"]}?`}\r\n />\r\n <View\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row-reverse\",\r\n marginTop: -10,\r\n alignSelf: \"flex-start\",\r\n }}\r\n >\r\n <IconButton\r\n onPress={() => {\r\n let addEmp = additionalEmploymentInfo.filter(\r\n (e, index_) => index !== index_\r\n );\r\n\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"isRemove\",\r\n false\r\n );\r\n setAdditionalEmploymentInfo([...addEmp]);\r\n\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: Number(pageIndex[\"subPage\"]) - 1,\r\n });\r\n handleSaveAdditionalInfo(-1, 6, employment[\"Id\"]);\r\n setScrollToTop(true);\r\n }}\r\n style={{\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#fff\" }}\r\n >\r\n Remove\r\n </CustomText>\r\n }\r\n />\r\n <IconButton\r\n buttonType=\"secondary\"\r\n style={{\r\n marginRight: 10,\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n onPress={() => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"isRemove\",\r\n false\r\n );\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#508BC9\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n }\r\n />\r\n </View>\r\n </View>\r\n ),\r\n footerButton: (\r\n <>\r\n {/* {index === additionalEmploymentInfo.length - 1 && (\r\n <>\r\n <AddRemoveButton\r\n isAdd={true}\r\n onPress={async () => {\r\n let json = [],\r\n DetailsArr_ = DetailsArr.slice(1);\r\n DetailsArr_[pageIndex[\"subPage\"]][\r\n \"subFields\"\r\n ]?.forEach((item) => {\r\n if (item[\"field\"] !== undefined) {\r\n item[\"field\"].forEach((item_) => {\r\n json.push({\r\n ColumnName: item_[\"ColumnName\"],\r\n ColumnValue:\r\n item_[\"ColumnName\"] === \"CellPhone\"\r\n ? `*5*${item_[\"ColumnValue\"]}`\r\n : item_[\"ColumnValue\"],\r\n });\r\n });\r\n }\r\n if (\r\n item[\"ColumnName\"] !== undefined &&\r\n item[\"ColumnValue\"] !== undefined\r\n ) {\r\n json.push({\r\n ColumnName: item[\"ColumnName\"],\r\n ColumnValue:\r\n item[\"ColumnName\"] === \"CellPhone\"\r\n ? `*5*${item[\"ColumnValue\"]}`\r\n : item[\"ColumnValue\"],\r\n });\r\n }\r\n });\r\n let json_ = [{}];\r\n json.forEach((item) => {\r\n if (item.ColumnName === \"Self Employed\")\r\n json_[0][\"SelfEmployed\"] = item.ColumnValue;\r\n else\r\n json_[0][item.ColumnName] = item.ColumnValue;\r\n });\r\n await handleSaveAdditionalInfo(-2, -1, -4, true);\r\n\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 1,\r\n additionalEmploymentInfo[\r\n DetailsArr_[pageIndex[\"subPage\"]][\"index\"]\r\n ][\"Id\"],\r\n null,\r\n json_\r\n );\r\n }}\r\n text={\r\n <>\r\n Add {index + 2}\r\n {index + 2 === 2\r\n ? `nd`\r\n : index + 2 === 3\r\n ? \"rd\"\r\n : \"th\"}{\" \"}\r\n Employer\r\n </>\r\n }\r\n />\r\n </>\r\n )} */}\r\n\r\n <AddRemoveButton\r\n onPress={() => {\r\n handleUpdateAddtionalEmployment(\r\n index,\r\n \"isRemove\",\r\n true\r\n );\r\n setScrollToTop(999);\r\n }}\r\n text={<>Remove Employer</>}\r\n />\r\n </>\r\n ),\r\n };\r\n if (loopCustId != employment[\"CustId\"]) {\r\n let iLoopCustId = loopCustId;\r\n loopCustId = employment[\"CustId\"];\r\n\r\n return [\r\n {\r\n Title: \"Tell us about your employment history.\",\r\n Options: [\r\n { value: 1, text: \"Add More Employment\" },\r\n { value: 0, text: \"This Step Is Completed\" },\r\n ],\r\n isAddAdditionalEmployment: true,\r\n CustId: iLoopCustId,\r\n ColumnName: `blEmployment${index}`,\r\n ColumnValue: LoanData[`blEmployment${index}`] || 0,\r\n type: 1,\r\n footerContent: <></>,\r\n },\r\n empOption,\r\n ];\r\n } else {\r\n return empOption;\r\n }\r\n })\r\n .flat()\r\n );\r\n additionalEmploymentInfo.length &&\r\n arr.push({\r\n Title: \"Tell us about your employment history.\",\r\n Options: [\r\n { value: 1, text: \"Add More Employment\" },\r\n { value: 0, text: \"This Step Is Completed\" },\r\n ],\r\n isAddAdditionalEmployment: true,\r\n ColumnName: \"blEmployment\",\r\n CustId:\r\n additionalEmploymentInfo?.[additionalEmploymentInfo.length - 1][\r\n \"CustId\"\r\n ],\r\n\r\n ColumnValue: LoanData[\"blEmployment\"] || 0,\r\n type: 1,\r\n footerContent: <></>,\r\n });\r\n } else {\r\n arr.push({\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Do you receive other types of income?\",\r\n Options: [\r\n { value: false, text: \"No\" },\r\n { value: true, text: \"Yes\" },\r\n ],\r\n ColumnName: \"IsOtherIncome\",\r\n ColumnValue: LoanData[\"IsOtherIncome\"],\r\n subFields: LoanData[\"IsOtherIncome\"]\r\n ? [\r\n {\r\n Title: \"\",\r\n label: \"Payor Name\",\r\n ColumnName: \"Payor_Name\",\r\n ColumnValue: LoanData[\"Payor_Name\"],\r\n isValid: !LoanData[\"Payor_Name\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Source of Other Income\",\r\n ColumnName: \"Source_Other_Incm\",\r\n ColumnValue: LoanData[\"Source_Other_Incm\"],\r\n isValid: Number(LoanData[\"Source_Other_Incm\"]) === 0,\r\n isMap: true,\r\n onBlur: () => {},\r\n type: 3,\r\n Option: otherIncomeOption,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Monthly Amount\",\r\n ColumnName: \"Monthly_Amount\",\r\n isCurrency: true,\r\n ColumnValue: LoanData[\"Monthly_Amount\"],\r\n isValid:\r\n !LoanData[\"Monthly_Amount\"] ||\r\n LoanData[\"Monthly_Amount\"] === 0 ||\r\n LoanData[\"Monthly_Amount\"] === \"$0.00\",\r\n type: 2,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Monthly_Amount: formatCurrency(\r\n LoanData[\"Monthly_Amount\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n Title: \"For Which Borrower\",\r\n label: \"\",\r\n ColumnName: \"OtherIncomeCustId\",\r\n ColumnValue: LoanData[\"OtherIncomeCustId\"],\r\n isValid: LoanData[\"OtherIncomeCustId\"] == \"-99\",\r\n // isMap: true,\r\n onBlur: () => {},\r\n type: 6,\r\n Option: handleGetBorrowerOption(),\r\n },\r\n ]\r\n : [],\r\n });\r\n if (LoanData[\"IsOtherIncome\"]) {\r\n arr.push(\r\n ...additionalOtherIncomeInfo.map((income, index) => {\r\n return {\r\n type: 1,\r\n isAdditionalIncome: true,\r\n isRemove: income[\"isRemove\"] || false,\r\n custId: income[\"Id\"],\r\n Title: `Do you receive other types of income ${index + 2}?`,\r\n onChangeText: (name, value) =>\r\n handleUpdateAddtionalOtherIncome(index, name, value),\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"Payor Name\",\r\n ColumnName: \"Payor_Name\",\r\n ColumnValue: income[\"Payor_Name\"],\r\n isValid: !income[\"Payor_Name\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Source of Other Income\",\r\n ColumnName: \"Source_Other_Incm\",\r\n ColumnValue: income[\"Source_Other_Incm\"],\r\n isValid: Number(income[\"Source_Other_Incm\"]) === 0,\r\n isMap: true,\r\n onBlur: () => {},\r\n type: 3,\r\n Option: otherIncomeOption,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Monthly Amount\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Amount\",\r\n ColumnValue: income[\"Monthly_Amount\"],\r\n isValid:\r\n !income[\"Monthly_Amount\"] ||\r\n income[\"Monthly_Amount\"] === 0 ||\r\n income[\"Monthly_Amount\"] === \"$0.00\",\r\n type: 2,\r\n onBlur: () => {\r\n handleUpdateAddtionalOtherIncome(\r\n index,\r\n \"Monthly_Amount\",\r\n formatCurrency(income[\"Monthly_Amount\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"For Which Borrower\",\r\n label: \"\",\r\n ColumnName: \"CustId\",\r\n ColumnValue: income[\"CustId\"],\r\n isValid: income[\"CustId\"] == \"-99\",\r\n // isMap: true,\r\n onBlur: () => {},\r\n type: 6,\r\n Option: handleGetBorrowerOption(),\r\n },\r\n ],\r\n removeContent: (\r\n <View>\r\n <Title\r\n style={{ fontSize: web ? 22 : 18 }}\r\n text={`Are you sure you want to remove ${income[\"Payor_Name\"]}?`}\r\n />\r\n <View\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row-reverse\",\r\n marginTop: -10,\r\n alignSelf: \"flex-start\",\r\n }}\r\n >\r\n <IconButton\r\n onPress={() => {\r\n let addIncome = additionalOtherIncomeInfo.filter(\r\n (e, index_) => index !== index_\r\n );\r\n handleUpdateAddtionalOtherIncome(\r\n index,\r\n \"isRemove\",\r\n false\r\n );\r\n setAdditionalOtherIncomeInfo([...addIncome]);\r\n\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: Number(pageIndex[\"subPage\"]) - 1,\r\n });\r\n handleSaveAdditionalInfo(-1, 7, income[\"Id\"]);\r\n setScrollToTop(true);\r\n }}\r\n style={{\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#fff\" }}\r\n >\r\n Remove\r\n </CustomText>\r\n }\r\n />\r\n <IconButton\r\n buttonType=\"secondary\"\r\n style={{\r\n marginRight: 10,\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n onPress={() => {\r\n handleUpdateAddtionalOtherIncome(\r\n index,\r\n \"isRemove\",\r\n false\r\n );\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#508BC9\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n }\r\n />\r\n </View>\r\n </View>\r\n ),\r\n footerButton: (\r\n <>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleUpdateAddtionalOtherIncome(\r\n index,\r\n \"isRemove\",\r\n true\r\n );\r\n setScrollToTop(999);\r\n }}\r\n style={[\r\n styles.buttonContainer,\r\n { backgroundColor: \"#d43f3a\" },\r\n ]}\r\n >\r\n <CustomText\r\n style={[\r\n {\r\n color: \"#fff\",\r\n marginTop: web ? 7 : 3,\r\n fontSize: 20,\r\n alignSelf: \"center\",\r\n },\r\n web ? { width: \"max-content\" } : {},\r\n ]}\r\n >\r\n {\" \"}Remove Other Income{\" \"}\r\n </CustomText>\r\n </TouchableOpacity>\r\n </>\r\n ),\r\n };\r\n })\r\n );\r\n }\r\n arr.push({\r\n Title: \"Tell us about your Other Income.\",\r\n Options: [\r\n { value: 1, text: \"Add More Other Income\" },\r\n { value: 0, text: \"This Step Is Completed\" },\r\n ],\r\n isAddAdditionalOtherIncome: true,\r\n ColumnName: \"blOtherIncome\",\r\n ColumnValue: LoanData[\"blOtherIncome\"] || 0,\r\n type: 1,\r\n footerContent: <></>,\r\n });\r\n }\r\n arr.push({\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Is there any alimony or child support expenses or income?\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"IsAlimonyChildSupport\",\r\n ColumnValue: LoanData[\"IsAlimonyChildSupport\"],\r\n subFields: LoanData[\"IsAlimonyChildSupport\"]\r\n ? [\r\n {\r\n Title: \"For Which Borrower\",\r\n label: \"\",\r\n ColumnName: \"OtherAlimonyIncomeCustId\",\r\n isValid: LoanData[\"OtherAlimonyIncomeCustId\"] == \"-99\",\r\n ColumnValue:\r\n LoanData[\"OtherAlimonyIncomeCustId\"] ||\r\n additionalBorrowerInfo?.[0]?.[\"CustId\"] ||\r\n UserId,\r\n type: 6,\r\n // isMap: true,\r\n onBlur: () => {},\r\n Option: handleGetBorrowerOption(),\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Monthly Alimony Expense\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Alimony_Expense\",\r\n ColumnValue: LoanData[\"Monthly_Alimony_Expense\"],\r\n type: 2,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Monthly_Alimony_Expense: formatCurrency(\r\n LoanData[\"Monthly_Alimony_Expense\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Monthly Alimony Income\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_Alimony_Income\",\r\n ColumnValue: LoanData[\"Monthly_Alimony_Income\"],\r\n type: 2,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Monthly_Alimony_Income: formatCurrency(\r\n LoanData[\"Monthly_Alimony_Income\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Monthly Child Support Expense\",\r\n isCurrency: true,\r\n ColumnName: \"Monthly_ChildSupportExpense\",\r\n ColumnValue: LoanData[\"Monthly_ChildSupportExpense\"],\r\n type: 2,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Monthly_ChildSupportExpense: formatCurrency(\r\n LoanData[\"Monthly_ChildSupportExpense\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Monthly Child Support income\",\r\n ColumnName: \"Monthly_ChildSupportIncome\",\r\n isCurrency: true,\r\n ColumnValue: LoanData[\"Monthly_ChildSupportIncome\"],\r\n type: 2,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Monthly_ChildSupportIncome: formatCurrency(\r\n LoanData[\"Monthly_ChildSupportIncome\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n ]\r\n : [],\r\n });\r\n } else if (currentPage_ === pageArray[pageId[\"bankAccounts\"]]) {\r\n arr.push(\r\n ...additionalBankInfo.map((bank, index) => {\r\n return {\r\n type: 1,\r\n Title: `What is your ${index + 1}${\r\n index + 1 === 1\r\n ? \"st\"\r\n : index + 1 === 2\r\n ? `nd`\r\n : index + 1 === 3\r\n ? \"rd\"\r\n : \"th\"\r\n } bank name?`,\r\n index: index,\r\n isAdditionalBank: true,\r\n onChangeText: (name, value) => {\r\n handleUpdateAddtionalBank(index, name, value);\r\n },\r\n isRemove: bank[\"isRemove\"] || false,\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"Account Type\",\r\n ColumnName: \"AccType\",\r\n ColumnValue: bank[\"AccType\"],\r\n type: 3,\r\n Option: accountTypeOption,\r\n isMap: true,\r\n },\r\n bank[\"AccType\"] == \"-1\" && {\r\n Title: \"\",\r\n label: \"Other Type\",\r\n ColumnName: \"OtherAccType\",\r\n isValid: !bank[\"OtherAccType\"],\r\n ColumnValue: bank[\"OtherAccType\"],\r\n type: 3,\r\n Option: otherAccountTypeOption,\r\n isMap: true,\r\n },\r\n ((![3, 4, 12, 19, 20, 33, 37, 22].includes(\r\n Number(bank[\"OtherAccType\"])\r\n ) &&\r\n Number(bank[\"OtherAccType\"])) ||\r\n bank[\"AccType\"] != \"-1\") && {\r\n Title: \"\",\r\n label: \"Bank Name\",\r\n ColumnName: \"BankName\",\r\n ColumnValue: bank[\"BankName\"],\r\n isValid: !bank[\"BankName\"],\r\n type: 2,\r\n },\r\n\r\n ...(bank[\"AccType\"] == \"-1\"\r\n ? [11, 5, 6, 7, 17, 10, 14].includes(\r\n Number(bank[\"OtherAccType\"])\r\n )\r\n ? [\r\n {\r\n Title: \"\",\r\n label: \"Address\",\r\n ColumnName: \"BankAddress\",\r\n ColumnValue: bank[\"BankAddress\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n keyboardType: \"numeric\",\r\n maxLength: 5,\r\n label: \"Zip Code\",\r\n placeholder: \"Zip Code\",\r\n ColumnName: \"BankZip\",\r\n ColumnValue: bank[\"BankZip\"],\r\n onBlur: async () => {\r\n let zipCode = bank[\"BankZip\"];\r\n if (zipCode) {\r\n let { city, state } =\r\n await handleGetZipCodeDetails(zipCode);\r\n let iAdditionalBankInfo = additionalBankInfo;\r\n iAdditionalBankInfo[index][`BankCity`] = city;\r\n iAdditionalBankInfo[index][`BankState`] = state;\r\n setAdditionalBankInfo([...iAdditionalBankInfo]);\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"City\",\r\n ColumnName: \"BankCity\",\r\n ColumnValue: bank[\"BankCity\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"State\",\r\n ColumnName: \"BankState\",\r\n ColumnValue: bank[\"BankState\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n ]\r\n : [12, 33].includes(Number(bank[\"OtherAccType\"]))\r\n ? [\r\n {\r\n Title: \"\",\r\n label: \"Description\",\r\n ColumnName: \"Description\",\r\n ColumnValue: bank[\"Description\"],\r\n isValid: !bank[\"Description\"],\r\n type: 2,\r\n },\r\n ]\r\n : [4].includes(Number(bank[\"OtherAccType\"]))\r\n ? [\r\n {\r\n Title: \"\",\r\n label: \"Description\",\r\n ColumnName: \"Description\",\r\n ColumnValue: bank[\"Description\"],\r\n isValid: !bank[\"Description\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Earnest Money Paid To\",\r\n ColumnName: \"EarnestMoneyPaidTo\",\r\n ColumnValue: bank[\"EarnestMoneyPaidTo\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: vendorOptions,\r\n isMap: true,\r\n },\r\n ]\r\n : [3, 19, 20, 37].includes(Number(bank[\"OtherAccType\"]))\r\n ? [\r\n {\r\n Title: \"\",\r\n label: \"Donor Name\",\r\n ColumnName: \"BankName\",\r\n ColumnValue: bank[\"BankName\"],\r\n isValid: !bank[\"BankName\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Source of Funds\",\r\n ColumnName: \"AccountName\",\r\n ColumnValue: bank[\"AccountName\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Donor Address\",\r\n ColumnName: \"BankAddress\",\r\n ColumnValue: bank[\"BankAddress\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n keyboardType: \"numeric\",\r\n maxLength: 5,\r\n label: \"Zip Code\",\r\n placeholder: \"Zip Code\",\r\n ColumnName: \"BankZip\",\r\n ColumnValue: bank[\"BankZip\"],\r\n onBlur: async () => {\r\n let zipCode = bank[\"BankZip\"];\r\n if (zipCode) {\r\n let { city, state } =\r\n await handleGetZipCodeDetails(zipCode);\r\n let iAdditionalBankInfo = additionalBankInfo;\r\n iAdditionalBankInfo[index][`BankCity`] = city;\r\n iAdditionalBankInfo[index][`BankState`] = state;\r\n setAdditionalBankInfo([...iAdditionalBankInfo]);\r\n }\r\n },\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"City\",\r\n ColumnName: \"BankCity\",\r\n ColumnValue: bank[\"BankCity\"],\r\n onBlur: () => {},\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"BankState\",\r\n ColumnName: \"BankState\",\r\n ColumnValue: bank[\"BankState\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"Gift Source\",\r\n placeholder: \"giftfrom\",\r\n ColumnName: \"giftfrom\",\r\n isValid: !bank[\"giftfrom\"],\r\n ColumnValue: bank[\"giftfrom\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: giftOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n label: \"Relationship\",\r\n ColumnName: \"Account\",\r\n ColumnValue: bank[\"Account\"],\r\n isValid: !bank[\"Account\"],\r\n onBlur: () => {},\r\n },\r\n ]\r\n : [22].includes(Number(bank[\"OtherAccType\"]))\r\n ? [\r\n {\r\n Title: \"\",\r\n label: \"Description\",\r\n ColumnName: \"Description\",\r\n ColumnValue: bank[\"Description\"],\r\n isValid: !bank[\"Description\"],\r\n type: 2,\r\n },\r\n\r\n {\r\n Title: \"\",\r\n label: \"Life Insurance Face\",\r\n ColumnName: \"lifeInsFace\",\r\n ColumnValue: bank[\"lifeInsFace\"],\r\n isValid: !bank[\"lifeInsFace\"],\r\n type: 2,\r\n },\r\n\r\n {\r\n Title: \"\",\r\n label: \"Life Insurance Value\",\r\n ColumnName: \"lifeInsValue\",\r\n ColumnValue: bank[\"lifeInsValue\"],\r\n isValid: !bank[\"lifeInsValue\"],\r\n type: 2,\r\n },\r\n ]\r\n : []\r\n : []),\r\n\r\n ((![22].includes(Number(bank[\"OtherAccType\"])) &&\r\n Number(bank[\"OtherAccType\"])) ||\r\n bank[\"AccType\"] != \"-1\") && {\r\n Title: \"How much money do you keep there?\",\r\n label: \"Amount\",\r\n isCurrency: true,\r\n ColumnName: \"Amount\",\r\n ColumnValue: bank[\"Amount\"],\r\n isValid: !bank[\"Amount\"].replaceAll(\"$0.00\", \"\"),\r\n onBlur: () => {\r\n handleUpdateAddtionalBank(\r\n index,\r\n \"Amount\",\r\n formatCurrency(bank[\"Amount\"], 2)\r\n );\r\n },\r\n type: 2,\r\n },\r\n (Number(bank[\"OtherAccType\"]) || bank[\"AccType\"] != \"-1\") && {\r\n label: \"\",\r\n Title: \"Owner(s) of this Asset\",\r\n placeholder: \"Owner(s) of this Asset\",\r\n ColumnName: \"OwnerIdList\",\r\n ColumnValue: bank[\"OwnerIdList\"],\r\n type: 6,\r\n Option: handleGetBorrowerOption(),\r\n isMultiple: true,\r\n },\r\n {\r\n ColumnName: \"AssetId\",\r\n ColumnValue: bank[\"AssetId\"],\r\n },\r\n ].filter((item) => item),\r\n footerButton: (\r\n <>\r\n <AddRemoveButton\r\n onPress={() => {\r\n handleUpdateAddtionalBank(index, \"isRemove\", true);\r\n setScrollToTop(999);\r\n }}\r\n text={\"Remove Bank\"}\r\n />\r\n </>\r\n ),\r\n removeContent: (\r\n <View>\r\n <Title\r\n style={{ fontSize: web ? 22 : 18 }}\r\n text={`Are you sure you want to remove ${\r\n bank[\"BankName\"] || \"\"\r\n } ?`}\r\n />\r\n <View\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row-reverse\",\r\n marginTop: -10,\r\n alignSelf: \"flex-start\",\r\n }}\r\n >\r\n <IconButton\r\n onPress={() => {\r\n let addBank = additionalBankInfo.filter(\r\n (e, index_) => index !== index_\r\n );\r\n handleUpdateAddtionalBank(index, \"isRemove\", false);\r\n setAdditionalBankInfo([...addBank]);\r\n index !== 0 &&\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: Number(pageIndex[\"subPage\"]) - 1,\r\n });\r\n handleSaveAdditionalInfo(-1, 8, bank[\"Id\"]);\r\n setScrollToTop(true);\r\n }}\r\n style={{\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#fff\" }}\r\n >\r\n Remove\r\n </CustomText>\r\n }\r\n />\r\n <IconButton\r\n style={{\r\n marginRight: 10,\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n buttonType=\"secondary\"\r\n onPress={() =>\r\n handleUpdateAddtionalBank(index, \"isRemove\", false)\r\n }\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#508BC9\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n }\r\n />\r\n </View>\r\n </View>\r\n ),\r\n };\r\n })\r\n );\r\n\r\n arr.push({\r\n Title: \"Tell us about any additional Assets\",\r\n Options: [\r\n { value: 1, text: \"Add More Assets\" },\r\n { value: 0, text: \"This Step Is Completed\" },\r\n ],\r\n ColumnName: \"blAssetOption\",\r\n ColumnValue: LoanData[\"blAssetOption\"],\r\n type: 1,\r\n footerContent: <></>,\r\n });\r\n } else if (currentPage_ === pageArray[pageId[\"realEstateOwned\"]]) {\r\n // if (Number(LoanData[\"Real_est_prop\"]) === 1) {\r\n arr.push(\r\n ...additionalPropertyInfo.map((property, index) => {\r\n return {\r\n index: index,\r\n isAdditionalProperty: true,\r\n isRemove: property[\"isRemove\"] || false,\r\n onChangeText: (name, value) => {\r\n handleUpdateAddtionalPropertyInfo(index, name, value);\r\n },\r\n Title: `Real estate properties ${index + 1}?`,\r\n subFields: [\r\n {\r\n Title: \"\",\r\n label: \"Property Address\",\r\n ColumnName: \"Real_est_prop_Addrs\",\r\n ColumnValue: property[\"Real_est_prop_Addrs\"],\r\n isValid: !property[\"Real_est_prop_Addrs\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n type: 2,\r\n keyboardType: \"numeric\",\r\n maxLength: 5,\r\n label: \"Zip Code\",\r\n placeholder: \"Zip Code\",\r\n ColumnName: \"Real_est_ZipCode\",\r\n forceValidation:\r\n property[\"Real_est_ZipCode\"]?.toString().length != 5,\r\n ColumnValue:\r\n property[\"Real_est_ZipCode\"] != 0\r\n ? property[\"Real_est_ZipCode\"]\r\n : \"\",\r\n onBlur: async () => {\r\n let zipCode = property[\"Real_est_ZipCode\"];\r\n if (zipCode) {\r\n let { city, state } = await handleGetZipCodeDetails(\r\n zipCode\r\n );\r\n let additionalPropertyInfo_ = additionalPropertyInfo;\r\n additionalPropertyInfo_[index][`Real_est_City`] = city;\r\n additionalPropertyInfo_[index][`Real_est_State`] = state;\r\n setAdditionalPropertyInfo([...additionalPropertyInfo_]);\r\n }\r\n },\r\n },\r\n\r\n {\r\n Title: \"\",\r\n label: \"City\",\r\n ColumnName: \"Real_est_City\",\r\n isValid: !property[\"Real_est_City\"],\r\n ColumnValue: property[\"Real_est_City\"],\r\n type: 2,\r\n },\r\n {\r\n Title: \"\",\r\n label: \"State\",\r\n placeholder: \"State\",\r\n ColumnName: \"Real_est_State\",\r\n isValid: !property[\"Real_est_State\"],\r\n ColumnValue: property[\"Real_est_State\"],\r\n onBlur: () => {},\r\n type: 3,\r\n Option: stateOptions,\r\n isMap: true,\r\n },\r\n {\r\n Title: \"What is the estimated value of the property?\",\r\n label: \"Present Market Value\",\r\n isCurrency: true,\r\n placeholder: \"Market Value\",\r\n ColumnName: \"Presnt_Markt_Val\",\r\n isValid: cleanValue(property[\"Presnt_Markt_Val\"]) == 0,\r\n ColumnValue: property[\"Presnt_Markt_Val\"],\r\n type: 2,\r\n onBlur: () => {\r\n handleUpdateAddtionalPropertyInfo(\r\n index,\r\n \"Presnt_Markt_Val\",\r\n formatCurrency(property[\"Presnt_Markt_Val\"], 2)\r\n );\r\n },\r\n },\r\n {\r\n Title: \"What is the Property Status?\",\r\n\r\n Options: [\r\n { value: 1, text: \"Currently Own\" },\r\n { value: 2, text: \"2nd Home\" },\r\n { value: 3, text: \"Rental\" },\r\n { value: 4, text: \"Pending Sale\" },\r\n ],\r\n ColumnName: \"Real_est_Prop_Status\",\r\n ColumnValue: property[\"Real_est_Prop_Status\"],\r\n isValid: !property[\"Real_est_Prop_Status\"],\r\n type: 1,\r\n },\r\n {\r\n Title:\r\n \"The loan you are applying for – is it for this property\",\r\n widthOption: \"40%\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Real_est_Subj_Prop\",\r\n ColumnValue: property[\"Real_est_Subj_Prop\"],\r\n type: 1,\r\n },\r\n {\r\n Title: \"Is this your current residence?\",\r\n widthOption: \"40%\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Current_residence\",\r\n ColumnValue: property[\"Current_residence\"],\r\n type: 1,\r\n },\r\n\r\n {\r\n Title: \"What is the Property Type?\",\r\n label: \"Property Type\",\r\n placeholder: \"State\",\r\n ColumnName: \"PropertyType\",\r\n isValid: !property[\"PropertyType\"],\r\n ColumnValue: property[\"PropertyType\"]?.toString(),\r\n onBlur: () => {},\r\n type: 3,\r\n Option: [\r\n { value: \"\", label: \"--Select--\" },\r\n { value: \"SFR\", label: \"Single Family Residence\" },\r\n { value: \"2 unit\", label: \"2 unit\" },\r\n { value: \"3 unit\", label: \"3 unit\" },\r\n { value: \"4 unit\", label: \"4 unit\" },\r\n { value: \"5+ unit\", label: \"5+ unit\" },\r\n { value: \"Com\", label: \"Condominium\" },\r\n { value: \"Condo\", label: \"Commercial\" },\r\n { value: \"Ind\", label: \"Industrial\" },\r\n { value: \"Manu\", label: \"Manufactured\" },\r\n { value: \"Raw Land\", label: \"Raw Land\" },\r\n { value: \"Farm or Ranch\", label: \"Farm or Ranch\" },\r\n ],\r\n isMap: true,\r\n },\r\n {\r\n Title: \"How long have you owned this property?\",\r\n label: \"Months Owned Property\",\r\n placeholder: \"Months Owned Property\",\r\n ColumnName: \"Months_Ownd_Prop\",\r\n ColumnValue: property[\"Months_Ownd_Prop\"],\r\n isValid: !property[\"Months_Ownd_Prop\"],\r\n type: 2,\r\n keyboardType: \"numeric\",\r\n },\r\n {\r\n label: \"\",\r\n Title: \"Owner(s) of this Asset\",\r\n placeholder: \"Owner(s) of this Asset\",\r\n ColumnName: \"OwnerIdList\",\r\n ColumnValue: property[\"OwnerIdList\"],\r\n isValid: !property[\"OwnerIdList\"],\r\n type: 6,\r\n Option: handleGetBorrowerOption(),\r\n isMultiple: true,\r\n },\r\n ],\r\n footerButton: (\r\n <>\r\n <AddRemoveButton\r\n onPress={() => {\r\n handleUpdateAddtionalPropertyInfo(\r\n index,\r\n \"isRemove\",\r\n true\r\n );\r\n setScrollToTop(999);\r\n }}\r\n text={<>Remove Property</>}\r\n />\r\n </>\r\n ),\r\n removeContent: (\r\n <View style={{ marginTop: -10 }}>\r\n <Title\r\n text={`Are you sure you want to remove ${\r\n property[\"BankName\"] || \"\"\r\n } ?`}\r\n style={{ fontSize: web ? 22 : 18 }}\r\n />\r\n <View\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row-reverse\",\r\n marginBottom: 20,\r\n marginTop: -10,\r\n alignSelf: \"flex-start\",\r\n }}\r\n >\r\n <IconButton\r\n onPress={() => {\r\n let addProp = additionalPropertyInfo.filter(\r\n (e, index_) => index !== index_\r\n );\r\n handleUpdateAddtionalPropertyInfo(\r\n index,\r\n \"isRemove\",\r\n false\r\n );\r\n setAdditionalPropertyInfo([...addProp]);\r\n if (addProp.length) {\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: Number(pageIndex[\"subPage\"]) - 1,\r\n });\r\n }\r\n handleSaveAdditionalInfo(-1, 9, property[\"Id\"]);\r\n setScrollToTop(true);\r\n }}\r\n style={{\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#fff\" }}\r\n >\r\n Remove\r\n </CustomText>\r\n }\r\n />\r\n <IconButton\r\n style={{\r\n marginRight: 10,\r\n paddingVertical: 7,\r\n paddingHorizontal: 10,\r\n }}\r\n onPress={() =>\r\n handleUpdateAddtionalPropertyInfo(\r\n index,\r\n \"isRemove\",\r\n false\r\n )\r\n }\r\n buttonType=\"secondary\"\r\n title={\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 16, color: \"#508BC9\" }}\r\n >\r\n Cancel\r\n </CustomText>\r\n }\r\n />\r\n </View>\r\n </View>\r\n ),\r\n };\r\n })\r\n );\r\n // }\r\n arr.push({\r\n type: 1,\r\n Title: \"Tell us about any additional real estate properties\",\r\n Options: [\r\n { value: 0, text: \"I have none\" },\r\n {\r\n value: 1,\r\n text: `I do have additional real estate properties `,\r\n },\r\n ],\r\n ColumnName: \"Real_est_prop\",\r\n ColumnValue: LoanData[\"Real_est_prop\"],\r\n });\r\n } else if (currentPage_ === pageArray[pageId[\"government\"]]) {\r\n arr.push({\r\n Title:\r\n \"You are almost done. The following are government monitoring questions.\",\r\n // onChangeText: (name, value) => {},\r\n subFields: [\r\n {\r\n type: 1,\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Declarations for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n Options: [{ value: 1, text: \"Default Selections\" }],\r\n onPress: () => {\r\n setLoanData({\r\n ...LoanData,\r\n ...{\r\n Citizenship_Status: 1,\r\n Pri_residence: 1,\r\n Ownership_intst_Othr_Prop: 0,\r\n Purchase_Transaction: 0,\r\n Bor_money_realest_trans: 0,\r\n Bor_money_Amt: 0.0,\r\n Apply_mortloan_otherprop: 0,\r\n Apply_newcredit: 0,\r\n Prop_sub_to_lien: 0,\r\n Co_signer: 0,\r\n Outstanding_judgments: 0,\r\n Cur_delinquent: 0,\r\n Party_to_lawsuit: 0,\r\n Prop_lieu_foreclosure: 0,\r\n Pre_foreclosure_sale: 0,\r\n Prop_foreclosed: 0,\r\n Declare_bankruptcy: 0,\r\n Types_bankruptcy: null,\r\n bType1stBuyer: 0,\r\n },\r\n });\r\n },\r\n ColumnName: \"DefaultSelection\",\r\n ColumnValue: LoanData[\"DefaultSelection\"],\r\n },\r\n {\r\n type: 1,\r\n Title: `Specify Citizenship Status`,\r\n Options: [\r\n { value: 1, text: \"U.S. Citizen\" },\r\n { value: 2, text: \"Permanent Resident Alien\" },\r\n { value: 3, text: \"Non Permanant Resident Alien\" },\r\n ],\r\n ColumnName: \"Citizenship_Status\",\r\n ColumnValue: LoanData[\"Citizenship_Status\"],\r\n isYellow:\r\n [1, 2, 3].indexOf(LoanData[\"Citizenship_Status\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `A. Will you occupy the property as your primary residence?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Pri_residence\",\r\n ColumnValue: LoanData[\"Pri_residence\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Pri_residence\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `If YES, have you had an ownership interest in another property in the last three years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Ownership_intst_Othr_Prop\",\r\n ColumnValue: LoanData[\"Ownership_intst_Othr_Prop\"],\r\n isYellow:\r\n [0, 1].indexOf(LoanData[\"Ownership_intst_Othr_Prop\"]) === -1,\r\n },\r\n LoanData[\"Ownership_intst_Othr_Prop\"] === 1 && {\r\n type: 1,\r\n Title: `If YES, complete (1) and (2) below:`,\r\n isYellow: [1, 2, 3].indexOf(LoanData[\"Prop_own\"]) === -1,\r\n },\r\n LoanData[\"Ownership_intst_Othr_Prop\"] === 1 && {\r\n type: 1,\r\n Title: `(1) What type of property did you own: primary residence (PR), FHA secondary residence (SR), second home (SH), or investment property (IP)?`,\r\n Options: [\r\n { value: 1, text: \"Primary Residence\" },\r\n { value: 2, text: \"2nd Home\" },\r\n { value: 3, text: \"Investment Property\" },\r\n ],\r\n ColumnName: \"Prop_own\",\r\n ColumnValue: LoanData[\"Prop_own\"],\r\n isYellow: [1, 2, 3].indexOf(LoanData[\"Prop_own\"]) === -1,\r\n },\r\n LoanData[\"Ownership_intst_Othr_Prop\"] === 1 && {\r\n type: 1,\r\n Title: `(2) How did you hold title to the property: by yourself (S), jointly with your spouse (SP), or jointly with another person (O)?`,\r\n Options: [\r\n { value: 1, text: \"Self\" },\r\n { value: 2, text: \"Joint with spouse\" },\r\n { value: 3, text: \"Joint with other\" },\r\n ],\r\n ColumnName: \"Prop_hold\",\r\n ColumnValue: LoanData[\"Prop_hold\"],\r\n isYellow: [1, 2, 3].indexOf(LoanData[\"Prop_hold\"]) === -1,\r\n },\r\n\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `B. If this is a Purchase Transaction: Do you have a family relationship or business affiliation with the seller of the property?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Purchase_Transaction\",\r\n ColumnValue: LoanData[\"Purchase_Transaction\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Purchase_Transaction\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `C. Are you borrowing any money for this real estate transaction (e.g., money for your closing costs or down payment) or obtaining any money from another party, such as the seller or realtor, that you have not disclosed on this loan application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Bor_money_realest_trans\",\r\n ColumnValue: LoanData[\"Bor_money_realest_trans\"],\r\n isYellow:\r\n [0, 1].indexOf(LoanData[\"Bor_money_realest_trans\"]) === -1,\r\n },\r\n LoanData[\"Bor_money_realest_trans\"] === 1 && {\r\n type: 2,\r\n label: \"Amount\",\r\n isCurrency: true,\r\n Title: `If YES, what is the amount of this money?`,\r\n ColumnName: \"Bor_money_Amt\",\r\n ColumnValue: LoanData[\"Bor_money_Amt\"],\r\n isValid: cleanValue(LoanData[\"Bor_money_Amt\"]) == 0,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Bor_money_Amt: formatCurrency(LoanData[\"Bor_money_Amt\"], 2),\r\n });\r\n },\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `D. 1. Have you or will you be applying for a mortgage loan on another property (not the property securing this loan) on or before closing this transaction that is not disclosed on this loan application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Apply_mortloan_otherprop\",\r\n ColumnValue: LoanData[\"Apply_mortloan_otherprop\"],\r\n isYellow:\r\n [0, 1].indexOf(LoanData[\"Apply_mortloan_otherprop\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `D. 2.Have you or will you be applying for any new credit (e.g., installment loan, credit card, etc.) on or before closing this loan that is not disclosed on this application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Apply_newcredit\",\r\n ColumnValue: LoanData[\"Apply_newcredit\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Apply_newcredit\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `E. Will this property be subject to a lien that could take priority over the first mortgage lien, such as a clean energy lien paid through your property taxes (e.g., the Property Assessed Clean Energy Program)?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Prop_sub_to_lien\",\r\n ColumnValue: LoanData[\"Prop_sub_to_lien\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Prop_sub_to_lien\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `F. Are you a Co_signer or guarantor on any debt or loan that is not disclosed on this application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Co_signer\",\r\n ColumnValue: LoanData[\"Co_signer\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Co_signer\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `G. Are there any outstanding judgments against you?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Outstanding_judgments\",\r\n ColumnValue: LoanData[\"Outstanding_judgments\"],\r\n isYellow:\r\n [0, 1].indexOf(LoanData[\"Outstanding_judgments\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `H. Are you currently delinquent or in default on a Federal debt?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Cur_delinquent\",\r\n ColumnValue: LoanData[\"Cur_delinquent\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Cur_delinquent\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `I. Are you a party to a lawsuit in which you potentially have any personal financial liability?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Party_to_lawsuit\",\r\n ColumnValue: LoanData[\"Party_to_lawsuit\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Party_to_lawsuit\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `J. Have you conveyed title to any property in lieu of foreclosure in the past 7 years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Prop_lieu_foreclosure\",\r\n ColumnValue: LoanData[\"Prop_lieu_foreclosure\"],\r\n isYellow:\r\n [0, 1].indexOf(LoanData[\"Prop_lieu_foreclosure\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `K. Within the past 7 years, have you completed a pre-foreclosure sale or short sale, whereby the property was sold to a third party and the Lender agreed to accept less than the outstanding mortgage balance due?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Pre_foreclosure_sale\",\r\n ColumnValue: LoanData[\"Pre_foreclosure_sale\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Pre_foreclosure_sale\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `L. Have you had property foreclosed upon in the last 7 years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Prop_foreclosed\",\r\n ColumnValue: LoanData[\"Prop_foreclosed\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Prop_foreclosed\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `M. Have you declared bankruptcy within the past 7 years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Declare_bankruptcy\",\r\n ColumnValue: LoanData[\"Declare_bankruptcy\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"Declare_bankruptcy\"]) === -1,\r\n },\r\n LoanData[\"Declare_bankruptcy\"] === 1 && {\r\n type: 1,\r\n Title: `If YES, identify the type(s) of bankruptcy:`,\r\n Options: [\r\n { value: 1, text: \"Chapter 7\" },\r\n { value: 2, text: \"Chapter 11\" },\r\n { value: 3, text: \"Chapter 12\" },\r\n { value: 4, text: \"Chapter 13\" },\r\n ],\r\n ColumnName: \"Types_bankruptcy\",\r\n ColumnValue: LoanData[\"Types_bankruptcy\"],\r\n isYellow:\r\n [1, 2, 3, 4].indexOf(LoanData[\"Types_bankruptcy\"]) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `Are you a First Time Home Buyer?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"bType1stBuyer\",\r\n ColumnValue: LoanData[\"bType1stBuyer\"],\r\n isYellow: [0, 1].indexOf(LoanData[\"bType1stBuyer\"]) === -1,\r\n },\r\n ],\r\n });\r\n\r\n arr.push({\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Demographic Information for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n // onChangeText: (name, value) => {\r\n // // handleUpdateAddtionalBorrower(index, name, value);\r\n // },\r\n // isAddtionalDeclaration: true,\r\n subFields: [\r\n {\r\n type: 1,\r\n Title: \"Application was taken by\",\r\n Options: [\r\n { value: 1, text: \"Face-to-face (including video)\" },\r\n { value: 2, text: \"Mail or Fax\" },\r\n { value: 3, text: \"Telephone\" },\r\n { value: 4, text: \"Internet or Email\" },\r\n ],\r\n ColumnName: \"Demographic_Info\",\r\n ColumnValue: LoanData[\"Demographic_Info\"],\r\n isYellow:\r\n [1, 2, 3, 4].indexOf(parseInt(LoanData[\"Demographic_Info\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n Title: `Sex`,\r\n isBitWise: true,\r\n resetBitWise: 4,\r\n Options: [\r\n { value: 1, text: \"Male\" },\r\n { value: 2, text: \"Female\" },\r\n { value: 4, text: \"I do not wish to provide this information\" },\r\n ],\r\n ColumnName: \"Sex\",\r\n ColumnValue: Number(LoanData[\"Sex\"]),\r\n isYellow: Number(LoanData[\"Sex\"] || 0) === 0,\r\n },\r\n {\r\n type: 1,\r\n Title: `Ethinicity`,\r\n Options: [\r\n { value: 1, text: \"Hispanic or Latino\" },\r\n { value: 2, text: \"Not Hispanic nor Latino\" },\r\n { value: 3, text: \"I do not wish to provide this information\" },\r\n ],\r\n ColumnName: \"Ethinicity\",\r\n ColumnValue: Number(LoanData[\"Ethinicity\"]),\r\n isYellow: ![1, 2, 3].includes(Number(LoanData[\"Ethinicity\"])),\r\n },\r\n Number(LoanData[\"Ethinicity\"]) === 1 && {\r\n type: 1,\r\n Title: `Select Hispanic Type`,\r\n Options: [\r\n { value: 1, text: \"Mexican\" },\r\n { value: 2, text: \"Puerto Rican\" },\r\n { value: 4, text: \"Cuban\" },\r\n { value: 8, text: \"Other Hispanic or Latino\" },\r\n ],\r\n isBitWise: true,\r\n resetBitWise: -1,\r\n ColumnName: \"HispanicSubcategory\",\r\n ColumnValue: Number(LoanData[\"HispanicSubcategory\"]),\r\n isYellow: parseInt(LoanData[\"HispanicSubcategory\"]) === 0,\r\n },\r\n (8 & Number(LoanData[\"HispanicSubcategory\"])) === 8 &&\r\n Number(LoanData[\"Ethinicity\"]) === 1 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"Other Hispanic Type Description\",\r\n ColumnName: \"OtherOrigin\",\r\n ColumnValue: LoanData[\"OtherOrigin\"],\r\n isValid: !LoanData[\"OtherOrigin\"],\r\n },\r\n\r\n {\r\n type: 1,\r\n Title: `Race`,\r\n isYellow: parseInt(LoanData[\"Race\"]) === 0,\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n isBitWise: true,\r\n ColumnName: \"Race\",\r\n resetBitWise: 32,\r\n ColumnValue: LoanData[\"Race\"],\r\n Options: [{ value: 1, text: \"American Indian or Alaska Native\" }],\r\n },\r\n (1 & Number(LoanData[\"Race\"])) === 1 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"American Indian Type Description\",\r\n ColumnName: \"PrincipalTribe\",\r\n ColumnValue: LoanData[\"PrincipalTribe\"],\r\n isValid: !LoanData[\"PrincipalTribe\"],\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n isBitWise: true,\r\n resetBitWise: 32,\r\n ColumnName: \"Race\",\r\n ColumnValue: LoanData[\"Race\"],\r\n Options: [\r\n { value: 2, text: \"Native Hawaiian or Other pacific Islander\" },\r\n ],\r\n },\r\n (2 & Number(LoanData[\"Race\"])) === 2 && {\r\n type: 1,\r\n Title: \"Select Native Hawaiian Type\",\r\n isBitWise: true,\r\n resetBitWise: -1,\r\n ColumnName: \"NaticHawaiSubCategory\",\r\n ColumnValue: LoanData[\"NaticHawaiSubCategory\"],\r\n Options: [\r\n { value: 1, text: \"Native Hawaiian\" },\r\n { value: 2, text: \"Guamanian or Chamorro\" },\r\n { value: 4, text: \"Samoan\" },\r\n { value: 8, text: \"Other Pacific Islander\" },\r\n ],\r\n isYellow: parseInt(LoanData[\"NaticHawaiSubCategory\"]) == 0,\r\n },\r\n (8 & Number(LoanData[\"NaticHawaiSubCategory\"])) === 8 &&\r\n (2 & Number(LoanData[\"Race\"])) === 2 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"Other Pacific Islander Type Description\",\r\n ColumnName: \"OtherPacificIslandRace\",\r\n ColumnValue: LoanData[\"OtherPacificIslandRace\"],\r\n isValid: !LoanData[\"OtherPacificIslandRace\"],\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n isBitWise: true,\r\n resetBitWise: 32,\r\n ColumnName: \"Race\",\r\n ColumnValue: LoanData[\"Race\"],\r\n Options: [{ value: 4, text: \"Asian\" }],\r\n },\r\n (4 & Number(LoanData[\"Race\"])) === 4 && {\r\n type: 1,\r\n Title: \"Select Asian Type\",\r\n isBitWise: true,\r\n resetBitWise: -1,\r\n ColumnName: \"AsianRaceSubCategory\",\r\n ColumnValue: LoanData[\"AsianRaceSubCategory\"],\r\n Options: [\r\n { value: 1, text: \"Asian Indian\" },\r\n { value: 2, text: \"Chinese\" },\r\n { value: 4, text: \"Filipino\" },\r\n { value: 8, text: \"Japanese\" },\r\n { value: 16, text: \"Korean\" },\r\n { value: 32, text: \"Vietnamese\" },\r\n { value: 64, text: \"Other Asian\" },\r\n ],\r\n isYellow: parseInt(LoanData[\"AsianRaceSubCategory\"]) === 0,\r\n },\r\n (64 & Number(LoanData[\"AsianRaceSubCategory\"])) === 64 &&\r\n (4 & Number(LoanData[\"Race\"])) === 4 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"Other Asian Type Description\",\r\n ColumnName: \"OtherAsianRace\",\r\n ColumnValue: LoanData[\"OtherAsianRace\"],\r\n isValid: !LoanData[\"OtherAsianRace\"],\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n isBitWise: true,\r\n resetBitWise: 32,\r\n ColumnName: \"Race\",\r\n ColumnValue: LoanData[\"Race\"],\r\n Options: [{ value: 8, text: \"White\" }],\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n isBitWise: true,\r\n resetBitWise: 32,\r\n ColumnName: \"Race\",\r\n ColumnValue: LoanData[\"Race\"],\r\n Options: [{ value: 16, text: \"Black or African American\" }],\r\n },\r\n LoanData[\"Demographic_Info\"] !== 1 && {\r\n type: 1,\r\n Title: \"\",\r\n isBitWise: true,\r\n resetBitWise: 32,\r\n ColumnName: \"Race\",\r\n ColumnValue: LoanData[\"Race\"],\r\n Options: [\r\n {\r\n value: 32,\r\n text: \"I do not wish to provide this information\",\r\n },\r\n ],\r\n },\r\n ],\r\n });\r\n\r\n arr.push({\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n VA Section for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n subFields: [\r\n ...[\r\n {\r\n type: 1,\r\n Title: \"VA Military Status\",\r\n Options: [\r\n { value: 8, text: \"None\" },\r\n { value: 1, text: \"Regular Military\" },\r\n { value: 2, text: \"Reserves or National Guard\" },\r\n ],\r\n ColumnName: \"Military_Status\",\r\n ColumnValue: LoanData[\"Military_Status\"],\r\n isYellow:\r\n [1, 2, 8].indexOf(Number(LoanData[\"Military_Status\"])) == -1,\r\n },\r\n ],\r\n ...(LoanData[\"Military_Status\"] && LoanData[\"Military_Status\"] !== 8\r\n ? [\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"In Reserves and Active\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Reserves_Active\",\r\n ColumnValue: LoanData[\"Reserves_Active\"],\r\n isYellow:\r\n [1, 0].indexOf(parseInt(LoanData[\"Reserves_Active\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n Title: \"Branch Of Service\",\r\n Options: [\r\n { value: 1, text: \"Army\" },\r\n { value: 2, text: \"Navy\" },\r\n { value: 3, text: \"Air Force\" },\r\n { value: 4, text: \"Marine Corps\" },\r\n { value: 5, text: \"Coast Gaurd\" },\r\n { value: 6, text: \"Other\" },\r\n ],\r\n ColumnName: \"Branch_Service\",\r\n ColumnValue: LoanData[\"Branch_Service\"],\r\n isYellow:\r\n [1, 2, 3, 4, 5, 6].indexOf(\r\n Number(LoanData[\"Branch_Service\"])\r\n ) == -1,\r\n },\r\n {\r\n type: 1,\r\n Title: \"Military Status\",\r\n Options: [\r\n { value: 1, text: \"Separated from Service\" },\r\n { value: 2, text: \"In Service\" },\r\n ],\r\n ColumnName: \"SerMilitaryStatus\",\r\n ColumnValue: LoanData[\"SerMilitaryStatus\"],\r\n isYellow:\r\n [1, 2].indexOf(Number(LoanData[\"SerMilitaryStatus\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"VA Entitlement Amount\",\r\n placeholder: \"Amount\",\r\n isCurrency: true,\r\n ColumnName: \"VA_Entitlmt_Amt\",\r\n ColumnValue: LoanData[\"VA_Entitlmt_Amt\"],\r\n isValid: cleanValue(LoanData[\"VA_Entitlmt_Amt\"]) == 0,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n VA_Entitlmt_Amt: formatCurrency(\r\n LoanData[\"VA_Entitlmt_Amt\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"VA Entitlement Amount Used\",\r\n placeholder: \"Amount\",\r\n isCurrency: true,\r\n ColumnName: \"VA_Entitlmt_Amt_used\",\r\n ColumnValue: LoanData[\"VA_Entitlmt_Amt_used\"],\r\n isValid: cleanValue(LoanData[\"VA_Entitlmt_Amt_used\"]) == 0,\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n VA_Entitlmt_Amt_used: formatCurrency(\r\n LoanData[\"VA_Entitlmt_Amt_used\"],\r\n 2\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"VA Entitlement Code\",\r\n placeholder: \"VA Entitlement Code\",\r\n ColumnName: \"VA_Entitlmt_Code\",\r\n ColumnValue: LoanData[\"VA_Entitlmt_Code\"],\r\n isValid: !LoanData[\"VA_Entitlmt_Code\"],\r\n keyboardType: \"numeric\",\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"VA Loan - First Time Use\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"VA_Loan_FTU\",\r\n ColumnValue: LoanData[\"VA_Loan_FTU\"],\r\n isYellow:\r\n [0, 1].indexOf(parseInt(LoanData[\"VA_Loan_FTU\"])) == -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Exempt From VA Funding Fee\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"VA_Funding_Fee\",\r\n ColumnValue: LoanData[\"VA_Funding_Fee\"],\r\n isYellow:\r\n [0, 1].indexOf(parseInt(LoanData[\"VA_Funding_Fee\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title:\r\n \"Currently serving on active duty with projected expiration date of service/tour\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Currently_serving\",\r\n ColumnValue: LoanData[\"Currently_serving\"],\r\n isYellow:\r\n [0, 1].indexOf(parseInt(LoanData[\"Currently_serving\"])) ==\r\n -1,\r\n },\r\n LoanData[\"Currently_serving\"]\r\n ? {\r\n type: 2,\r\n Title: \"\",\r\n placeholder: \"Date (MM/DD/YYYY)\",\r\n charLength: 10,\r\n ColumnName: \"Exp_date_service\",\r\n ColumnValue: LoanData[\"Exp_date_service\"],\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Exp_date_service: formatDateTimeNew(\r\n LoanData[\"Exp_date_service\"]\r\n ),\r\n });\r\n },\r\n }\r\n : {},\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title:\r\n \"Currently retired, discharged, or separated from service\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Currently_retired\",\r\n ColumnValue: LoanData[\"Currently_retired\"],\r\n isYellow:\r\n [0, 1].indexOf(parseInt(LoanData[\"Currently_retired\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title:\r\n \"Only period of service was as a non-activated member of the Reserve or National Guard\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Active_National_Guard\",\r\n ColumnValue: LoanData[\"Active_National_Guard\"],\r\n isYellow:\r\n [0, 1].indexOf(\r\n parseInt(LoanData[\"Active_National_Guard\"])\r\n ) == -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Surviving spouse\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Surviving_spouse\",\r\n ColumnValue: LoanData[\"Surviving_spouse\"],\r\n isYellow:\r\n [0, 1].indexOf(parseInt(LoanData[\"Surviving_spouse\"])) ==\r\n -1,\r\n },\r\n ]\r\n : []),\r\n ],\r\n });\r\n arr.push({\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Have you attended a Homeownership Counseling Seminar within the\r\n last 12 Months? for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"] || \"\"} ${\r\n LoanData[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {LoanData[\"FirstName\"] || LoanData[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n subFields: [\r\n ...[\r\n {\r\n type: 1,\r\n Title: \"\",\r\n widthOption: \"40%\",\r\n Options: [\r\n { value: 2, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Couns_Confirm\",\r\n ColumnValue: LoanData[\"Couns_Confirm\"],\r\n },\r\n ],\r\n ...(LoanData[\"Couns_Confirm\"] === 1\r\n ? [\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"Counseling Completed Date\",\r\n placeholder: \"MM/DD/YYYY\",\r\n charLength: 10,\r\n ColumnName: \"Couns_Comp_Date\",\r\n ColumnValue: LoanData[\"Couns_Comp_Date\"],\r\n isValid: !LoanData[\"Couns_Comp_Date\"],\r\n onBlur: () => {\r\n setLoanData({\r\n ...LoanData,\r\n Couns_Comp_Date: formatDateTimeNew(\r\n LoanData[\"Couns_Comp_Date\"]\r\n ),\r\n });\r\n },\r\n },\r\n {\r\n type: 1,\r\n Title: \"Counseling Type\",\r\n Options: [\r\n { value: 1, text: \"Counseling\" },\r\n { value: 2, text: \"Education\" },\r\n ],\r\n ColumnName: \"Couns_Type\",\r\n ColumnValue: LoanData[\"Couns_Type\"],\r\n isYellow: [2, 1].indexOf(LoanData[\"Couns_Type\"]) == -1,\r\n },\r\n LoanData[\"Couns_Type\"] == 1\r\n ? {\r\n type: 3,\r\n isMap: true,\r\n label: \"What format was the counseling?\",\r\n Option: [\r\n { value: 0, label: \"Select\" },\r\n { value: 1, label: \"Face-to-Face\" },\r\n { value: 2, label: \"Telephone\" },\r\n { value: 3, label: \"Internet\" },\r\n { value: 4, label: \"Hybrid\" },\r\n ],\r\n ColumnName: \"Couns_FormatType2\",\r\n ColumnValue: LoanData[\"Couns_FormatType2\"],\r\n isYellow: !LoanData[\"Couns_FormatType2\"],\r\n }\r\n : LoanData[\"Couns_Type\"] == 2\r\n ? {\r\n type: 3,\r\n isMap: true,\r\n label: \"What format was the counseling?\",\r\n Option: [\r\n { value: 0, label: \"Select\" },\r\n { value: 1, label: \"Attended Workshop in Person\" },\r\n { value: 2, label: \"Completed Web-Based Workshop\" },\r\n ],\r\n ColumnName: \"Couns_FormatType\",\r\n ColumnValue: LoanData[\"Couns_FormatType\"],\r\n isYellow: !LoanData[\"Couns_FormatType\"],\r\n }\r\n : false,\r\n\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"Counseling Agency Name\",\r\n placeholder: \"Agency Name\",\r\n ColumnName: \"Couns_Agency_Name\",\r\n ColumnValue: LoanData[\"Couns_Agency_Name\"],\r\n isValid: !LoanData[\"Couns_Agency_Name\"],\r\n },\r\n {\r\n type: 3,\r\n isMap: true,\r\n label: \"Home Counseling Language\",\r\n Option: [\r\n { value: 1, label: \"English\" },\r\n { value: 2, label: \"Spanish\" },\r\n { value: 3, label: \"Chinese\" },\r\n { value: 4, label: \"Vietnamese\" },\r\n { value: 5, label: \"Korean\" },\r\n { value: 6, label: \"Tagalog\" },\r\n { value: 7, label: \"Other\" },\r\n ],\r\n ColumnName: \"LanguagePreference\",\r\n ColumnValue:\r\n Number(LoanData[\"LanguagePreference\"] || 0) || 0,\r\n isYellow: !LoanData[\"LanguagePreference\"],\r\n },\r\n LoanData[\"LanguagePreference\"] == 7 && {\r\n type: 2,\r\n Title: \"\",\r\n label: \"Other Language Description\",\r\n placeholder: \"Other Language\",\r\n ColumnName: \"OtherLanguageDescription\",\r\n ColumnValue: LoanData[\"OtherLanguageDescription\"],\r\n isValid: !LoanData[\"OtherLanguageDescription\"],\r\n },\r\n ]\r\n : []),\r\n ].filter((ele) => typeof ele !== \"boolean\"),\r\n });\r\n\r\n additionalBorrowerInfo.slice(1).forEach((borrower, index) => {\r\n let sBorr = [];\r\n sBorr.push({\r\n Title: \"\",\r\n onChangeText: (name, value) => {\r\n if (value == borrower[name]) value = null;\r\n handleUpdateAddtionalBorrower(index, name, value);\r\n },\r\n index: index + 1,\r\n isAddtionalDeclaration: true,\r\n subFields: [\r\n {\r\n type: 1,\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Declarations for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"] || \"\"} ${\r\n borrower[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n Options: [{ value: 1, text: \"Default Selections\" }],\r\n ColumnName: \"DefaultSelection\",\r\n ColumnValue: borrower[\"DefaultSelection\"],\r\n onPress: () => {\r\n let additionalBorrowerInfo_ = additionalBorrowerInfo;\r\n additionalBorrowerInfo_[index + 1] = {\r\n ...additionalBorrowerInfo_[index + 1],\r\n ...{\r\n Citizenship_Status: 1,\r\n OccupyProperty: 1,\r\n \"Owe Property\": 0,\r\n \"Type Prop Own\": 0,\r\n \"Hold Title\": 0,\r\n BusinessaffWithSeller: 0,\r\n LoanOnAnotherProp: 0,\r\n MoneyBorrowedForDown: \"$0.00\",\r\n Downpayment: 0,\r\n ApplyingNewCredit: 0,\r\n PropAssCleanEnergy: 0,\r\n \"Co-maker\": 0,\r\n Jugdements: 0,\r\n Delinquent: 0,\r\n Lawsuit: 0,\r\n ConveyedTitle: 0,\r\n Obligated: 0,\r\n Forclosed: 0,\r\n Bankruptcy: 0,\r\n blChapter7: 0,\r\n blChapter11: 0,\r\n blChapter12: 0,\r\n blChapter13: 0,\r\n bType1stBuyer: 0,\r\n },\r\n };\r\n setAdditionalBorrowerInfo([\r\n ...[],\r\n ...additionalBorrowerInfo_,\r\n ]);\r\n },\r\n },\r\n {\r\n type: 1,\r\n Title: `Specify Citizenship Status`,\r\n Options: [\r\n { value: 1, text: \"U.S. Citizen\" },\r\n { value: 2, text: \"Permanent Resident Alien\" },\r\n { value: 3, text: \"Non Permanant Resident Alien\" },\r\n ],\r\n ColumnName: \"Citizenship_Status\",\r\n ColumnValue: parseInt(borrower[\"Citizenship_Status\"]),\r\n isYellow:\r\n [1, 2, 3].indexOf(\r\n parseInt(borrower[\"Citizenship_Status\"])\r\n ) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `A. Will you occupy the property as your primary residence?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"OccupyProperty\",\r\n ColumnValue: parseInt(borrower[\"OccupyProperty\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"OccupyProperty\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `If YES, have you had an ownership interest in another property in the last three years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Owe Property\",\r\n ColumnValue: parseInt(borrower[\"Owe Property\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"Owe Property\"])) === -1,\r\n },\r\n parseInt(borrower[\"Owe Property\"]) === 1 && {\r\n type: 1,\r\n Title: `If YES, complete (1) and (2) below:`,\r\n isYellow:\r\n [1, 2, 3].indexOf(parseInt(borrower[\"Type Prop Own\"])) === -1,\r\n },\r\n parseInt(borrower[\"Owe Property\"]) === 1 && {\r\n type: 1,\r\n Title: `(1) What type of property did you own: primary residence (PR), FHA secondary residence (SR), second home (SH), or investment property (IP)?`,\r\n Options: [\r\n { value: 1, text: \"Primary Residence\" },\r\n { value: 2, text: \"2nd Home\" },\r\n { value: 3, text: \"Investment Property\" },\r\n ],\r\n ColumnName: \"Type Prop Own\",\r\n ColumnValue: parseInt(borrower[\"Type Prop Own\"]),\r\n isYellow:\r\n [1, 2, 3].indexOf(parseInt(borrower[\"Type Prop Own\"])) === -1,\r\n },\r\n parseInt(borrower[\"Owe Property\"]) === 1 && {\r\n type: 1,\r\n Title: `(2) How did you hold title to the property: by yourself (S), jointly with your spouse (SP), or jointly with another person (O)?`,\r\n Options: [\r\n { value: 1, text: \"Self\" },\r\n { value: 2, text: \"Joint with spouse\" },\r\n { value: 3, text: \"Joint with other\" },\r\n ],\r\n ColumnName: \"Hold Title\",\r\n ColumnValue: parseInt(borrower[\"Hold Title\"]),\r\n isYellow:\r\n [1, 2, 3].indexOf(parseInt(borrower[\"Hold Title\"])) === -1,\r\n },\r\n\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `B. If this is a Purchase Transaction: Do you have a family relationship or business affiliation with the seller of the property?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"BusinessaffWithSeller\",\r\n ColumnValue: parseInt(borrower[\"BusinessaffWithSeller\"]),\r\n isYellow:\r\n [0, 1].indexOf(\r\n parseInt(borrower[\"BusinessaffWithSeller\"])\r\n ) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `C. Are you borrowing any money for this real estate transaction (e.g., money for your closing costs or down payment) or obtaining any money from another party, such as the seller or realtor, that you have not disclosed on this loan application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"LoanOnAnotherProp\",\r\n ColumnValue: parseInt(borrower[\"LoanOnAnotherProp\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"LoanOnAnotherProp\"])) ===\r\n -1,\r\n },\r\n parseInt(borrower[\"LoanOnAnotherProp\"]) === 1 && {\r\n type: 2,\r\n label: \"Amount\",\r\n isCurrency: true,\r\n Title: `If YES, what is the amount of this money?`,\r\n ColumnName: \"MoneyBorrowedForDown\",\r\n ColumnValue: borrower[\"MoneyBorrowedForDown\"],\r\n isValid: cleanValue(borrower[\"MoneyBorrowedForDown\"]) == 0,\r\n onBlur: (iValue) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"MoneyBorrowedForDown\",\r\n formatCurrency(\r\n iValue || borrower[\"MoneyBorrowedForDown\"],\r\n 2\r\n )\r\n );\r\n },\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `D. 1. Have you or will you be applying for a mortgage loan on another property (not the property securing this loan) on or before closing this transaction that is not disclosed on this loan application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Downpayment\",\r\n ColumnValue: parseInt(borrower[\"Downpayment\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"Downpayment\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `D. 2.Have you or will you be applying for any new credit (e.g., installment loan, credit card, etc.) on or before closing this loan that is not disclosed on this application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"ApplyingNewCredit\",\r\n ColumnValue: parseInt(borrower[\"ApplyingNewCredit\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"ApplyingNewCredit\"])) ===\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `E. Will this property be subject to a lien that could take priority over the first mortgage lien, such as a clean energy lien paid through your property taxes (e.g., the Property Assessed Clean Energy Program)?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"PropAssCleanEnergy\",\r\n ColumnValue: parseInt(borrower[\"PropAssCleanEnergy\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"PropAssCleanEnergy\"])) ===\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `F. Are you a Co_signer or guarantor on any debt or loan that is not disclosed on this application?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Co-maker\",\r\n ColumnValue: parseInt(borrower[\"Co-maker\"]),\r\n isYellow: [0, 1].indexOf(parseInt(borrower[\"Co-maker\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `G. Are there any outstanding judgments against you?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Jugdements\",\r\n ColumnValue: parseInt(borrower[\"Jugdements\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"Jugdements\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `H. Are you currently delinquent or in default on a Federal debt?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Delinquent\",\r\n ColumnValue: parseInt(borrower[\"Delinquent\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"Delinquent\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `I. Are you a party to a lawsuit in which you potentially have any personal financial liability?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Lawsuit\",\r\n ColumnValue: parseInt(borrower[\"Lawsuit\"]),\r\n isYellow: [0, 1].indexOf(parseInt(borrower[\"Lawsuit\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `J. Have you conveyed title to any property in lieu of foreclosure in the past 7 years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"ConveyedTitle\",\r\n ColumnValue: parseInt(borrower[\"ConveyedTitle\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"ConveyedTitle\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `K. Within the past 7 years, have you completed a pre-foreclosure sale or short sale, whereby the property was sold to a third party and the Lender agreed to accept less than the outstanding mortgage balance due?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Obligated\",\r\n ColumnValue: parseInt(borrower[\"Obligated\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"Obligated\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `L. Have you had property foreclosed upon in the last 7 years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Forclosed\",\r\n ColumnValue: parseInt(borrower[\"Forclosed\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"Forclosed\"])) === -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `M. Have you declared bankruptcy within the past 7 years?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Bankruptcy\",\r\n ColumnValue: parseInt(borrower[\"Bankruptcy\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"Bankruptcy\"])) === -1,\r\n },\r\n parseInt(borrower[\"Bankruptcy\"]) === 1 && {\r\n type: 1,\r\n Title: `If YES, identify the type(s) of bankruptcy:`,\r\n Options: [\r\n { value: 1, text: \"Chapter 7\" },\r\n { value: 2, text: \"Chapter 11\" },\r\n { value: 3, text: \"Chapter 12\" },\r\n { value: 4, text: \"Chapter 13\" },\r\n ],\r\n ColumnName: \"Chapter\",\r\n ColumnValue:\r\n parseInt(borrower[\"blChapter7\"]) === 1\r\n ? 1\r\n : parseInt(borrower[\"blChapter11\"]) === 1\r\n ? 2\r\n : parseInt(borrower[\"blChapter12\"]) === 1\r\n ? 3\r\n : parseInt(borrower[\"blChapter13\"]) === 1\r\n ? 4\r\n : null,\r\n isYellow:\r\n parseInt(borrower[\"blChapter7\"]) !== 1 &&\r\n parseInt(borrower[\"blChapter11\"]) !== 1 &&\r\n parseInt(borrower[\"blChapter12\"]) !== 1 &&\r\n parseInt(borrower[\"blChapter13\"]) !== 1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: `Are you a First Time Home Buyer?`,\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"bType1stBuyer\",\r\n ColumnValue: parseInt(borrower[\"bType1stBuyer\"]),\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"bType1stBuyer\"])) === -1,\r\n },\r\n ],\r\n });\r\n arr.push(...sBorr);\r\n sBorr = [];\r\n sBorr.push({\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Demographic Information for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"] || \"\"} ${\r\n borrower[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n onChangeText: (name, value) => {\r\n handleUpdateAddtionalBorrower(index, name, value);\r\n },\r\n index: index + 1,\r\n isAddtionalDemographic: true,\r\n subFields: [\r\n {\r\n type: 1,\r\n Title: \"Application was taken by\",\r\n Options: [\r\n { value: 1, text: \"Face-to-face (including video)\" },\r\n { value: 2, text: \"Mail or Fax\" },\r\n { value: 3, text: \"Telephone\" },\r\n { value: 4, text: \" Internet or Email\" },\r\n ],\r\n ColumnName: \"Demographic_Info\",\r\n ColumnValue: borrower[\"Demographic_Info\"],\r\n isYellow:\r\n [1, 2, 3, 4].indexOf(Number(borrower[\"Demographic_Info\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n Title: `Sex`,\r\n isBitWise: true,\r\n resetBitWise: 4,\r\n Options: [\r\n { value: 1, text: \"Male\" },\r\n { value: 2, text: \"Female\" },\r\n {\r\n value: 4,\r\n text: \"I do not wish to provide this information\",\r\n },\r\n ],\r\n ColumnName: \"Sex\",\r\n ColumnValue: Number(borrower[\"Sex\"]),\r\n isYellow: Number(borrower[\"Sex\"] || 0) === 0,\r\n },\r\n {\r\n type: 1,\r\n Title: `Ethinicity`,\r\n Options: [\r\n { value: 1, text: \"Hispanic or Latino\" },\r\n { value: 2, text: \"Not Hispanic nor Latino\" },\r\n {\r\n value: 3,\r\n text: \"I do not wish to provide this information\",\r\n },\r\n ],\r\n ColumnName: \"Ethnicity\",\r\n ColumnValue: Number(borrower[\"Ethnicity\"]) || 0,\r\n isYellow: ![1, 2, 3].includes(Number(borrower[\"Ethnicity\"])),\r\n },\r\n Number(borrower[\"Ethnicity\"]) === 1 && {\r\n type: 1,\r\n Title: `Select Hispanic Type`,\r\n Options: [\r\n { value: 1, text: \"Mexican\" },\r\n { value: 2, text: \"Puerto Rican\" },\r\n { value: 4, text: \"Cuban\" },\r\n { value: 8, text: \"Other Hispanic or Latino\" },\r\n ],\r\n isBitWise: true,\r\n resetBitWise: -1,\r\n ColumnName: \"HispanicSubcategory\",\r\n ColumnValue: Number(borrower[\"HispanicSubcategory\"]),\r\n isYellow: parseInt(borrower[\"HispanicSubcategory\"]) === 0,\r\n },\r\n (8 & Number(borrower[\"HispanicSubcategory\"])) === 8 &&\r\n Number(borrower[\"Ethnicity\"]) === 1 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"Other Hispanic Type Description\",\r\n ColumnName: \"OtherOrigin\",\r\n ColumnValue: borrower[\"OtherOrigin\"],\r\n isValid: !borrower[\"OtherOrigin\"],\r\n onBlur: (iValue) => {\r\n handleUpdateAddtionalBorrower(index, \"OtherOrigin\", iValue);\r\n },\r\n },\r\n\r\n {\r\n type: 1,\r\n Title: `Race`,\r\n isYellow:\r\n parseInt(borrower[\"RaceIndian\"] || 0) != 1 &&\r\n parseInt(borrower[\"RaceHawaiian\"] || 0) != 1 &&\r\n parseInt(borrower[\"RaceAsian\"] || 0) != 1 &&\r\n parseInt(borrower[\"RaceWhite\"] || 0) != 1 &&\r\n parseInt(borrower[\"RaceBlack\"] || 0) != 1 &&\r\n parseInt(borrower[\"Race\"] || 0) != 1 &&\r\n parseInt(borrower[\"RaceBlack\"] || 0) != 1,\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n ColumnName: \"RaceIndian\",\r\n ColumnValue: borrower[\"RaceIndian\"],\r\n Options: [\r\n { value: 1, text: \"American Indian or Alaska Native\" },\r\n ],\r\n },\r\n Number(borrower[\"RaceIndian\"]) === 1 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"American Indian Type Description\",\r\n ColumnName: \"PrincipalTribe\",\r\n ColumnValue: borrower[\"PrincipalTribe\"],\r\n isValid: !borrower[\"PrincipalTribe\"],\r\n onBlur: (iValue) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"PrincipalTribe\",\r\n iValue\r\n );\r\n },\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n ColumnName: \"RaceHawaiian\",\r\n ColumnValue: borrower[\"RaceHawaiian\"],\r\n Options: [\r\n {\r\n value: 1,\r\n text: \"Native Hawaiian or Other pacific Islander\",\r\n },\r\n ],\r\n },\r\n Number(borrower[\"RaceHawaiian\"]) === 1 && {\r\n type: 1,\r\n Title: \"Select Native Hawaiian Type\",\r\n isBitWise: true,\r\n resetBitWise: -1,\r\n ColumnName: \"NaticHawaiSubCategory\",\r\n ColumnValue: borrower[\"NaticHawaiSubCategory\"],\r\n Options: [\r\n { value: 1, text: \"Native Hawaiian\" },\r\n { value: 2, text: \"Guamanian or Chamorro\" },\r\n { value: 4, text: \"Samoan\" },\r\n { value: 8, text: \"Other Pacific Islander\" },\r\n ],\r\n\r\n isYellow: parseInt(borrower[\"NaticHawaiSubCategory\"]) === 0,\r\n },\r\n (8 & Number(borrower[\"NaticHawaiSubCategory\"])) === 8 &&\r\n borrower[\"RaceHawaiian\"] === 1 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"Other Pacific Islander Type Description\",\r\n ColumnName: \"OtherPacificIslandRace\",\r\n ColumnValue: borrower[\"OtherPacificIslandRace\"],\r\n isValid: !borrower[\"OtherPacificIslandRace\"],\r\n onBlur: (iValue) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"OtherPacificIslandRace\",\r\n iValue\r\n );\r\n },\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n ColumnName: \"RaceAsian\",\r\n ColumnValue: borrower[\"RaceAsian\"],\r\n Options: [{ value: 1, text: \"Asian\" }],\r\n },\r\n Number(borrower[\"RaceAsian\"]) === 1 && {\r\n type: 1,\r\n Title: \"Select Asian Type\",\r\n isBitWise: true,\r\n resetBitWise: -1,\r\n ColumnName: \"AsianRaceSubCategory\",\r\n ColumnValue: borrower[\"AsianRaceSubCategory\"],\r\n Options: [\r\n { value: 1, text: \"Asian Indian\" },\r\n { value: 2, text: \"Chinese\" },\r\n { value: 4, text: \"Filipino\" },\r\n { value: 8, text: \"Japanese\" },\r\n { value: 16, text: \"Korean\" },\r\n { value: 32, text: \"Vietnamese\" },\r\n { value: 64, text: \"Other Asian\" },\r\n ],\r\n isYellow: parseInt(borrower[\"AsianRaceSubCategory\"]) === 0,\r\n },\r\n (64 & Number(borrower[\"AsianRaceSubCategory\"])) === 64 &&\r\n Number(borrower[\"RaceAsian\"]) === 1 && {\r\n type: 5,\r\n Title: ``,\r\n label: \"Other Asian Type Description\",\r\n ColumnName: \"OtherAsianRace\",\r\n ColumnValue: borrower[\"OtherAsianRace\"],\r\n isValid: !borrower[\"OtherAsianRace\"],\r\n onBlur: (iValue) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"OtherAsianRace\",\r\n iValue\r\n );\r\n },\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n ColumnName: \"RaceWhite\",\r\n ColumnValue: borrower[\"RaceWhite\"],\r\n Options: [{ value: 1, text: \"White\" }],\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n ColumnName: \"RaceBlack\",\r\n ColumnValue: borrower[\"RaceBlack\"],\r\n Options: [{ value: 1, text: \"Black or African American\" }],\r\n },\r\n {\r\n type: 1,\r\n Title: \"\",\r\n ColumnName: \"Race\",\r\n ColumnValue: borrower[\"Race\"],\r\n Options: [\r\n {\r\n value: 1,\r\n text: \"I do not wish to provide this information\",\r\n },\r\n ],\r\n },\r\n ].filter((ele) => typeof ele !== \"boolean\"),\r\n });\r\n arr.push(...sBorr);\r\n sBorr = [];\r\n sBorr.push({\r\n isVAMilitary: true,\r\n index: index + 1,\r\n onChangeText: (name, value) => {\r\n handleUpdateAddtionalBorrower(index, name, value);\r\n },\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n VA Section for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"] || \"\"} ${\r\n borrower[\"LastName\"] || \"\"\r\n }`\r\n : `borrower`}\r\n </CustomText>\r\n {borrower[\"FirstName\"] || borrower[\"LastName\"] ? `.` : `?`}\r\n </CustomText>\r\n ),\r\n\r\n subFields: [\r\n ...[\r\n {\r\n type: 1,\r\n Title: \"VA Military Status\",\r\n Options: [\r\n { value: 8, text: \"None\" },\r\n { value: 1, text: \"Regular Military\" },\r\n { value: 2, text: \"Reserves or National Guard\" },\r\n ],\r\n ColumnName: \"VA_Military_Status\",\r\n ColumnValue: parseInt(borrower[\"VA_Military_Status\"]),\r\n isYellow:\r\n [1, 2, 8].indexOf(Number(borrower[\"VA_Military_Status\"])) ==\r\n -1,\r\n },\r\n ],\r\n ...(borrower[\"VA_Military_Status\"] &&\r\n parseInt(borrower[\"VA_Military_Status\"]) !== 8\r\n ? [\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"In Reserves and Active\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Reserves_Active\",\r\n ColumnValue: borrower[\"Reserves_Active\"],\r\n isYellow:\r\n [1, 0].indexOf(parseInt(borrower[\"Reserves_Active\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n Title: \"Branch Of Service\",\r\n Options: [\r\n { value: 1, text: \"Army\" },\r\n { value: 2, text: \"Navy\" },\r\n { value: 3, text: \"Air Force\" },\r\n { value: 4, text: \"Marine Corps\" },\r\n { value: 5, text: \"Coast Gaurd\" },\r\n { value: 6, text: \"Other\" },\r\n ],\r\n ColumnName: \"Branch_Service\",\r\n ColumnValue: borrower[\"Branch_Service\"],\r\n isYellow:\r\n [1, 2, 3, 4, 5, 6].indexOf(\r\n Number(borrower[\"Branch_Service\"])\r\n ) == -1,\r\n },\r\n {\r\n type: 1,\r\n Title: \"Military Status\",\r\n Options: [\r\n { value: 1, text: \"Separated from Service\" },\r\n { value: 2, text: \"In Service\" },\r\n ],\r\n ColumnName: \"VAMilitaryServiceStatus\",\r\n ColumnValue: borrower[\"VAMilitaryServiceStatus\"],\r\n isYellow:\r\n [1, 2].indexOf(\r\n Number(borrower[\"VAMilitaryServiceStatus\"])\r\n ) == -1,\r\n },\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"VA Entitlement Amount\",\r\n placeholder: \"Amount\",\r\n isCurrency: true,\r\n ColumnName: \"VA_Entitlmt_Amt\",\r\n ColumnValue: borrower[\"VA_Entitlmt_Amt\"],\r\n isValid: cleanValue(borrower[\"VA_Entitlmt_Amt\"]) == 0,\r\n onBlur: (value) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"VA_Entitlmt_Amt\",\r\n formatCurrency(value, 2)\r\n );\r\n },\r\n },\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"VA Entitlement Amount Used\",\r\n placeholder: \"Amount\",\r\n isCurrency: true,\r\n ColumnName: \"VA_Entitlmt_Amt_used\",\r\n ColumnValue: borrower[\"VA_Entitlmt_Amt_used\"],\r\n isValid:\r\n cleanValue(borrower[\"VA_Entitlmt_Amt_used\"]) == 0,\r\n onBlur: (value) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"VA_Entitlmt_Amt_used\",\r\n formatCurrency(value, 2)\r\n );\r\n },\r\n },\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"VA Entitlement Code\",\r\n placeholder: \"Code\",\r\n ColumnName: \"VA_Entitlmt_Code\",\r\n ColumnValue: borrower[\"VA_Entitlmt_Code\"],\r\n isValid: !borrower[\"VA_Entitlmt_Code\"],\r\n keyboardType: \"numeric\",\r\n onBlur: (value) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"VA_Entitlmt_Code\",\r\n value\r\n );\r\n },\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"VA Loan - First Time Use\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"VA_Loan_FTU\",\r\n ColumnValue: borrower[\"VA_Loan_FTU\"],\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"VA_Loan_FTU\"])) == -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Exempt From VA Funding Fee\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"VA_Funding_Fee\",\r\n ColumnValue: borrower[\"VA_Funding_Fee\"],\r\n isYellow:\r\n [0, 1].indexOf(parseInt(borrower[\"VA_Funding_Fee\"])) ==\r\n -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title:\r\n \"Currently serving on active duty with projected expiration date of service/tour\",\r\n\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Currently_serving\",\r\n ColumnValue: borrower[\"Currently_serving\"],\r\n isYellow:\r\n [0, 1].indexOf(\r\n parseInt(borrower[\"Currently_serving\"])\r\n ) == -1,\r\n },\r\n parseInt(borrower[\"Currently_serving\"]) == 1\r\n ? {\r\n type: 2,\r\n Title: \"\",\r\n placeholder: \"Date (MM/DD/YYYY)\",\r\n charLength: 10,\r\n ColumnName: \"MilitaryServiceExpectedCompletionDate\",\r\n ColumnValue:\r\n borrower[\"MilitaryServiceExpectedCompletionDate\"],\r\n onBlur: (value) => {\r\n handleUpdateAddtionalBorrower(\r\n index,\r\n \"MilitaryServiceExpectedCompletionDate\",\r\n formatDateTimeNew(value)\r\n );\r\n },\r\n }\r\n : {},\r\n\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title:\r\n \"Currently retired, discharged, or separated from service\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Currently_retired\",\r\n ColumnValue: borrower[\"Currently_retired\"],\r\n isYellow:\r\n [0, 1].indexOf(\r\n parseInt(borrower[\"Currently_retired\"])\r\n ) == -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title:\r\n \"Only period of service was as a non-activated member of the Reserve or National Guard\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Active_National_Guard\",\r\n ColumnValue: borrower[\"Active_National_Guard\"],\r\n isYellow:\r\n [0, 1].indexOf(\r\n parseInt(borrower[\"Active_National_Guard\"])\r\n ) == -1,\r\n },\r\n {\r\n type: 1,\r\n widthOption: \"40%\",\r\n Title: \"Surviving spouse\",\r\n Options: [\r\n { value: 0, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Surviving_spouse\",\r\n ColumnValue: borrower[\"Surviving_spouse\"],\r\n isYellow:\r\n [0, 1].indexOf(\r\n parseInt(borrower[\"Surviving_spouse\"])\r\n ) == -1,\r\n },\r\n ]\r\n : []),\r\n ],\r\n });\r\n arr.push(...sBorr);\r\n sBorr = [];\r\n let Counselling = additionalCounsellingInfo[index + 1];\r\n\r\n sBorr.push({\r\n index: index + 1,\r\n isAddCounselling: true,\r\n onChangeText: (name, value) => {\r\n let additionalCounsellingInfo_ = additionalCounsellingInfo;\r\n if (!additionalCounsellingInfo_[index + 1]) {\r\n additionalCounsellingInfo_.push({\r\n Couns_Confirm: null,\r\n Couns_Comp_Date: null,\r\n Couns_Type: null,\r\n Couns_Agency_Name: null,\r\n LanguagePreference: null,\r\n OtherLanguageDescription: null,\r\n });\r\n }\r\n // if (additionalCounsellingInfo_[index + 1][name] == value)\r\n // value = null;\r\n\r\n additionalCounsellingInfo_[index + 1][name] = value;\r\n\r\n setAdditionalCounsellingInfo([...additionalCounsellingInfo_]);\r\n\r\n //handleUpdateAddtionalBorrower(index + 1, name, value);\r\n },\r\n Title: (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 24 : 21,\r\n marginBottom: web ? 30 : 15,\r\n color: \"#41464d\",\r\n }}\r\n >\r\n Have you attended a Homeownership Counseling Seminar within the\r\n last 12 Months? for{\" \\n\"}\r\n <CustomText bold={true} style={{ backgroundColor: \"cyan\" }}>\r\n {additionalBorrowerInfo[index + 1][\"FirstName\"] ||\r\n additionalBorrowerInfo[index + 1][\"LastName\"]\r\n ? `${\r\n additionalBorrowerInfo[index + 1][\"FirstName\"] || \"\"\r\n } ${additionalBorrowerInfo[index + 1][\"LastName\"] || \"\"}`\r\n : `borrower`}\r\n </CustomText>\r\n {additionalBorrowerInfo[index + 1][\"FirstName\"] ||\r\n additionalBorrowerInfo[index + 1][\"LastName\"]\r\n ? `.`\r\n : `?`}\r\n </CustomText>\r\n ),\r\n subFields: [\r\n ...[\r\n {\r\n type: 1,\r\n Title: \"\",\r\n widthOption: \"40%\",\r\n Options: [\r\n { value: 2, text: \"No\" },\r\n { value: 1, text: \"Yes\" },\r\n ],\r\n ColumnName: \"Couns_Confirm\",\r\n ColumnValue: Counselling?.Couns_Confirm,\r\n },\r\n ],\r\n ...(Counselling?.Couns_Confirm === 1\r\n ? [\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"Counseling Completed Date\",\r\n placeholder: \"Date\",\r\n ColumnName: \"Couns_Comp_Date\",\r\n ColumnValue: Counselling?.Couns_Comp_Date,\r\n isValid: !Counselling?.Couns_Comp_Date,\r\n onBlur: () => {\r\n let additionalCounsellingInfo_ =\r\n additionalCounsellingInfo;\r\n additionalCounsellingInfo_[index + 1][\r\n \"Couns_Comp_Date\"\r\n ] = formatDateTimeNew(\r\n additionalCounsellingInfo[index + 1][\r\n \"Couns_Comp_Date\"\r\n ]\r\n );\r\n setAdditionalCounsellingInfo([\r\n ...[],\r\n ...additionalCounsellingInfo_,\r\n ]);\r\n },\r\n },\r\n {\r\n type: 1,\r\n Title: \"Counseling Type\",\r\n Options: [\r\n { value: 1, text: \"Counseling\" },\r\n { value: 2, text: \"Education\" },\r\n ],\r\n ColumnName: \"Couns_Type\",\r\n ColumnValue: Counselling?.Couns_Type,\r\n isYellow:\r\n [2, 1].indexOf(parseInt(Counselling?.Couns_Type)) == -1,\r\n },\r\n Counselling?.Couns_Type == 1\r\n ? {\r\n type: 3,\r\n isMap: true,\r\n label: \"What format was the counseling?\",\r\n Option: [\r\n { value: 0, label: \"Select\" },\r\n { value: 1, label: \"Face-to-Face\" },\r\n { value: 2, label: \"Telephone\" },\r\n { value: 3, label: \"Internet\" },\r\n { value: 4, label: \"Hybrid\" },\r\n ],\r\n ColumnName: \"Couns_FormatType2\",\r\n ColumnValue: Counselling[\"Couns_FormatType2\"],\r\n isYellow: !Counselling[\"Couns_FormatType2\"],\r\n }\r\n : Counselling?.Couns_Type == 2\r\n ? {\r\n type: 3,\r\n isMap: true,\r\n label: \"What format was the counseling?\",\r\n Option: [\r\n { value: 0, label: \"Select\" },\r\n { value: 1, label: \"Attended Workshop in Person\" },\r\n { value: 2, label: \"Completed Web-Based Workshop\" },\r\n ],\r\n ColumnName: \"Couns_FormatType\",\r\n ColumnValue: Counselling[\"Couns_FormatType\"],\r\n isYellow: !Counselling[\"Couns_FormatType\"],\r\n }\r\n : false,\r\n {\r\n type: 2,\r\n Title: \"\",\r\n label: \"Counseling Agency Name\",\r\n placeholder: \"Agency Name\",\r\n ColumnName: \"Couns_Agency_Name\",\r\n ColumnValue: Counselling?.Couns_Agency_Name,\r\n isValid: !Counselling?.Couns_Agency_Name,\r\n },\r\n {\r\n type: 3,\r\n isMap: true,\r\n label: \"Home Counseling Language\",\r\n Option: [\r\n { value: 1, label: \"English\" },\r\n { value: 2, label: \"Spanish\" },\r\n { value: 3, label: \"Chinese\" },\r\n { value: 4, label: \"Vietnamese\" },\r\n { value: 5, label: \"Korean\" },\r\n { value: 6, label: \"Tagalog\" },\r\n { value: 7, label: \"Other\" },\r\n ],\r\n ColumnName: \"LanguagePreference\",\r\n ColumnValue: Counselling?.LanguagePreference,\r\n isYellow: !Counselling?.LanguagePreference,\r\n },\r\n Counselling?.LanguagePreference == 7 && {\r\n type: 2,\r\n Title: \"\",\r\n label: \"Other Language Description\",\r\n placeholder: \"Other Language\",\r\n ColumnName: \"OtherLanguageDescription\",\r\n ColumnValue: Counselling?.OtherLanguageDescription,\r\n isValid: !Counselling?.OtherLanguageDescription,\r\n },\r\n ]\r\n : []),\r\n ].filter((ele) => typeof ele !== \"boolean\"),\r\n });\r\n arr.push(...sBorr);\r\n });\r\n }\r\n }\r\n // console.log(arr);\r\n return {\r\n iDetailsArr: arr,\r\n };\r\n };\r\n const handleAddAddtionalProperty = (Id) => {\r\n let OwnerIdList = additionalBorrowerInfo[0][\"CustId\"] || UserId;\r\n\r\n let addProp = [\r\n ...additionalPropertyInfo,\r\n ...[\r\n {\r\n Id: Id,\r\n CustId: UserId || 0,\r\n Real_est_prop_Addrs: \"\",\r\n Real_est_ZipCode: \"\",\r\n Real_est_City: \"\",\r\n Real_est_State: \"\",\r\n Presnt_Markt_Val: 0,\r\n Real_est_Subj_Prop: 0,\r\n Current_residence: 0,\r\n PropertyType: \"\",\r\n Months_Ownd_Prop: \"\",\r\n Real_est_Prop_Status: null,\r\n OwnerIdList,\r\n },\r\n ],\r\n ];\r\n return addProp;\r\n };\r\n const handleAddAddtionalBank = (AssetId) => {\r\n let OwnerIdList = additionalBorrowerInfo[0][\"CustId\"] || UserId;\r\n\r\n let addBank = [\r\n ...additionalBankInfo,\r\n ...[\r\n {\r\n Id: AssetId,\r\n AccType: 1,\r\n CustId: 0,\r\n BankName: \"\",\r\n Amount: \"$0.00\",\r\n OwnerIdList,\r\n AssetId: AssetId,\r\n isNewRecord: true,\r\n AccTypeName: \"Checking\",\r\n },\r\n ],\r\n ];\r\n return addBank;\r\n };\r\n const handleUpdateAddtionalPropertyInfo = (index, name, value) => {\r\n let additionalPropertyInfo_ = additionalPropertyInfo;\r\n if (name == \"OwnerIdList\" && !value) {\r\n value = UserId;\r\n }\r\n additionalPropertyInfo_[index][name] = value;\r\n setAdditionalPropertyInfo([...[], ...additionalPropertyInfo_]);\r\n };\r\n const handleUpdateAddtionalBank = (index, name, value) => {\r\n let additionalBankInfo_ = additionalBankInfo;\r\n if (name === \"OtherAccType\" && [4, 12, 33, 22].includes(Number(value))) {\r\n additionalBankInfo_[index][\"Description\"] =\r\n additionalBankInfo_[index][\"TypeDesc\"] ||\r\n otherAccountTypeOption.filter(\r\n ({ value: iValue }) => value == iValue\r\n )[0][\"label\"];\r\n }\r\n\r\n if (name == \"OwnerIdList\" && !value) {\r\n value = UserId;\r\n }\r\n\r\n if (name === \"EarnestMoneyPaidTo\" && value == \"-1####-1\") {\r\n setDrawerDetails({\r\n isShow: true,\r\n bankIndex: index,\r\n body: \"addOtherLoanVendor\",\r\n onClose: () => {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n },\r\n });\r\n }\r\n\r\n if (name === \"AccType\") {\r\n let AccTypeName = accountTypeOption.filter((type) => type.value == value),\r\n iAdditionalBankInfo = additionalBankInfo_[index];\r\n iAdditionalBankInfo = {\r\n ...iAdditionalBankInfo,\r\n ...{\r\n [name]: value,\r\n AccTypeName: value ? AccTypeName[0][\"label\"] : \"\",\r\n },\r\n };\r\n if (iAdditionalBankInfo[\"isNewRecord\"]) {\r\n iAdditionalBankInfo = {\r\n ...iAdditionalBankInfo,\r\n ...{\r\n OwnerIdList: additionalBorrowerInfo[0][\"CustId\"],\r\n },\r\n };\r\n }\r\n additionalBankInfo_[index] = iAdditionalBankInfo;\r\n } else additionalBankInfo_[index][name] = value;\r\n setAdditionalBankInfo([...[], ...additionalBankInfo_]);\r\n };\r\n\r\n const handleUpdateAddtionalEmployment = (index, name, value) => {\r\n let additionalEmploymentInfo_ = additionalEmploymentInfo;\r\n additionalEmploymentInfo_[index][name] = value;\r\n const Id = additionalEmploymentInfo[index][\"Id\"];\r\n additionalEmploymentInfo_ = handleEmploymentOrder(\r\n [...[], ...additionalEmploymentInfo_],\r\n null,\r\n name === \"CustId\"\r\n );\r\n\r\n setAdditionalEmploymentInfo(additionalEmploymentInfo_);\r\n if (name === \"CustId\") {\r\n let list = handleGetEmpploymentList(additionalEmploymentInfo_),\r\n subPage = 0;\r\n list.forEach((item, index) => {\r\n item[\"subMenu\"]?.forEach((iItem, iIndex) => {\r\n subPage++;\r\n if (iItem?.Id == Id) {\r\n setPageIndex({\r\n ...pageIndex,\r\n subPage: subPage,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n };\r\n const handleUpdateAddtionalOtherIncome = (index, name, value) => {\r\n let additionalOtherIncomeInfo_ = additionalOtherIncomeInfo;\r\n additionalOtherIncomeInfo_[index][name] = value;\r\n setAdditionalOtherIncomeInfo([...[], ...additionalOtherIncomeInfo_]);\r\n };\r\n const handleAddAditionalIncomeType = async (flag) => {\r\n await handleSaveAdditionalInfo(-2, -2, -1, true, [], null, flag);\r\n };\r\n const handleGetCreditScoreDetails = async (LoanId, iErrFlag) => {\r\n return await handleAPI({\r\n name: \"GetCreditInfoForNewLoanApp\",\r\n params: {\r\n CustId: UserId,\r\n LoanId: loanId || LoanId,\r\n SessionId: SessionId,\r\n },\r\n })\r\n .then((response) => {\r\n response = response.split(\"~\");\r\n let status = -1,\r\n isAlready = -1,\r\n Details = [],\r\n ErrMsg = \"\";\r\n\r\n if (response[0] != \"\" && response[0] != null)\r\n status = JSON.parse(response[0]);\r\n if (response[1] != \"\" && response[1] != null)\r\n isAlready = JSON.parse(response[1]);\r\n\r\n if (response[2] != \"\" && response[2] != null)\r\n Details = JSON.parse(response[2]);\r\n if (response[3] != \"\" && response[3] != null && iErrFlag)\r\n ErrMsg = response[3];\r\n\r\n return { Status: status, isAlready, Details, ErrMsg };\r\n })\r\n .catch((e) => console.error(\"Error From GetCreditScoreDetails ====>\", e));\r\n };\r\n const handleGetCreditScoreDetailsPooling = async (poolCount) => {\r\n if (poolCount <= 10) {\r\n poolCount++;\r\n await getCreditDetails(loanId, poolCount);\r\n }\r\n };\r\n const handleOrderCreditReport = async () => {\r\n setTimeout(() => {\r\n setProcessStatus(\"orderPlaced\");\r\n }, 2000);\r\n return await handleAPI({\r\n name: \"OrderCreditReport\",\r\n params: { CustId: UserId, LoanId: loanId, SessionId: SessionId },\r\n })\r\n .then((response) => {\r\n handleGetCreditScoreDetailsPooling(1);\r\n handleUpdateCompletedPage();\r\n\r\n handleLogDWCallToActionEventParent(\r\n \"Credit Report\",\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n LoanId: loanId || iLoanId || 0,\r\n Email:\r\n additionalBorrowerInfo.length > 0\r\n ? additionalBorrowerInfo[0][\"Email\"] || \"\"\r\n : LoanData[\"EmailId\"] || \"\",\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n },\r\n activePageArray[pageIndex[\"page\"]]?.replaceAll(\" \", \"\")\r\n );\r\n return response;\r\n })\r\n .catch((e) => console.error(\"Error From OrderCreditReport ====>\", e));\r\n };\r\n const handleLoanOfficerCredit = async (iLoanId) => {\r\n return await handleAPI({\r\n name: \"CheckLnOfficerForCreditReport\",\r\n params: { LoanId: iLoanId || loanId },\r\n })\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch((e) =>\r\n console.error(\"Error From CheckLnOfficerForCreditReport ====>\", e)\r\n );\r\n };\r\n const handleGetMonthCount = (month, year) => {\r\n return Number(year || 0) * 12 + Number(month || 0);\r\n };\r\n const handleGetBorrYearMonth = (value = 0, base) => {\r\n try {\r\n let Num = value || \"\",\r\n years = Num.toString().split(\".\").slice(0, 2)[0],\r\n months = Num.toString().split(\".\").slice(0, 2)[1];\r\n if (months == \"\" || months == undefined) {\r\n months = 0;\r\n } else {\r\n // Year and Months calculation on 21-Nov-2018 Modified by AB\r\n if (\r\n // months == \"08\" ||\r\n months == \"16\" ||\r\n months == \"25\" ||\r\n months == \"33\" ||\r\n months == \"41\" ||\r\n months == \"58\" ||\r\n months == \"66\" ||\r\n months == \"75\" ||\r\n months == \"83\" ||\r\n months == \"91\"\r\n ) {\r\n months = Math.ceil((\"0.\" + months) * 12);\r\n } else if (months == \"05\") months = 6;\r\n }\r\n\r\n return base === \"Years\" ? years : base === \"Months\" ? months : 0;\r\n } catch (error) {\r\n return 0;\r\n }\r\n };\r\n const handleAddAditionalIncome = () => {\r\n let addIncome = [\r\n ...additionalOtherIncomeInfo,\r\n ...[\r\n {\r\n Id: 0,\r\n CustId: additionalBorrowerInfo?.[0]?.[\"CustId\"] || UserId,\r\n Payor_Name: \"\",\r\n Source_Other_Incm: 0,\r\n Monthly_Amount: \"$0.00\",\r\n },\r\n ],\r\n ];\r\n return addIncome;\r\n };\r\n const handleAddAditionalBorrower = () => {\r\n let addBorr = [\r\n ...additionalBorrowerInfo,\r\n ...[\r\n {\r\n Id: 0,\r\n CustId: 0,\r\n FirstName: \"\",\r\n LastName: \"\",\r\n MiddleName: \"\",\r\n NickName: \"\",\r\n Suffix: \"\",\r\n Dependents: 0,\r\n Ages_Dependents: \"\",\r\n BirthDate: \"\",\r\n SSN: \"\",\r\n Sex: \"\",\r\n \"Bor For Add1\": \"\",\r\n BorForZip2: \"\",\r\n BorForCity2: \"\",\r\n BorForState2: \"\",\r\n \"Bor For Add1 Yrs\": 0,\r\n \"Bor For Add1 Own\": \"\",\r\n \"Bor For Add2\": \"\",\r\n \"Bor For Add2 Own\": \"\",\r\n BorForZip3: \"\",\r\n BorForCity3: \"\",\r\n BorForState3: \"\",\r\n \"Bor For Add2 Yrs\": 0,\r\n \"Bor For Add3\": \"\",\r\n \"Bor For Add3 Own\": \"\",\r\n BorForZip4: \"\",\r\n BorForCity4: \"\",\r\n BorForState4: \"\",\r\n \"Bor For Add3 Yrs\": 0,\r\n MaritalStatus: 1,\r\n CellPhone: \"\",\r\n Email: \"\",\r\n VA_Entitlmt_Amt: \"$0.00\",\r\n VA_Entitlmt_Amt_used: \"$0.00\",\r\n VA_Entitlmt_Code: 0,\r\n Branch_Service: 0,\r\n OtherAsianRace: \"\",\r\n Bankruptcy: \"\",\r\n blChapter7: \"0\",\r\n blChapter11: \"0\",\r\n blChapter12: \"0\",\r\n blChapter13: \"0\",\r\n Citizenship_Status: \"1\",\r\n Pri_residence: \"0\",\r\n bTypeNonPerResAlien: \"0\",\r\n OccupyProperty: \"\",\r\n \"Owe Property\": \"\",\r\n \"Type Prop Own\": \"\",\r\n \"Hold Title\": \"\",\r\n BusinessaffWithSeller: \"\",\r\n Downpayment: \"\",\r\n MoneyBorrowedForDown: \"$0.00\",\r\n LoanOnAnotherProp: \"\",\r\n ApplyingNewCredit: \"\",\r\n PropAssCleanEnergy: \"\",\r\n \"Co-maker\": \"\",\r\n Jugdements: \"\",\r\n Delinquent: \"\",\r\n Lawsuit: \"\",\r\n ConveyedTitle: \"\",\r\n Obligated: \"\",\r\n Forclosed: \"\",\r\n Address1: \"\",\r\n City: \"\",\r\n Zip: \"\",\r\n State: \"\",\r\n \"Bor Own Period\": 0,\r\n FlagSameAsAbove: 1,\r\n \"Bor Own\": \"\",\r\n \"Present Rent\": \"$0.00\",\r\n Ethnicity: 0,\r\n RaceIndian: 0,\r\n RaceAsian: 0,\r\n RaceBlack: 0,\r\n RaceHawaiian: 0,\r\n RaceWhite: 0,\r\n Demographic_Info: 4,\r\n HispanicSubcategory: 0,\r\n MilitaryServiceExpectedCompletionDate: \"\",\r\n Couns_Confirm: 0,\r\n Couns_FormatType: 0,\r\n Couns_FormatType2: 0,\r\n Couns_Comp_Date: \"\",\r\n Couns_Type: 0,\r\n Couns_Agency_Name: \"\",\r\n LanguagePreference: \"\",\r\n OtherLanguageDescription: \"\",\r\n Bor_For_Add1_Own: \"\",\r\n Bor_For_Add2_Own: \"\",\r\n Bor_For_Add3_Own: \"\",\r\n \"Present Rent1\": \"$0.00\",\r\n \"Present Rent2\": \"$0.00\",\r\n \"Present Rent3\": \"$0.00\",\r\n },\r\n ],\r\n ];\r\n return addBorr;\r\n // setAdditionalBorrowerInfo(addBorr);\r\n };\r\n const handleCopyPriAddress = (index, name, value) => {\r\n let additionalBorrowerInfo_ = additionalBorrowerInfo,\r\n { MaritalStatus } = additionalBorrowerInfo_[index + 1],\r\n { CustId = 0, MaritalStatus: spouseMaritalStatus } =\r\n additionalBorrowerInfo_.filter(\r\n ({ CustId }) => CustId == MaritalStatus\r\n )[0] || {},\r\n isCopyFormprimary =\r\n (spouseMaritalStatus > CustId && index == 0) ||\r\n spouseMaritalStatus < CustId ||\r\n CustId < 10;\r\n\r\n if (value !== 0 && isCopyFormprimary) {\r\n let {\r\n Current_Street_Address,\r\n Addrshistry_ZipCode,\r\n Addrshistry_City,\r\n Addrshistry_State,\r\n Addrshistry_Years,\r\n Addrshistry_Months,\r\n Monthly_Rent,\r\n Own,\r\n Rent,\r\n Living_Rent_Free,\r\n PrevCurrent_Street_Address1,\r\n PrevCurrent_Street_Address2,\r\n PrevCurrent_Street_Address3,\r\n Addrshistry_ZipCode1,\r\n Addrshistry_ZipCode2,\r\n Addrshistry_ZipCode3,\r\n Addrshistry_City1,\r\n Addrshistry_City2,\r\n Addrshistry_City3,\r\n Addrshistry_State1,\r\n Addrshistry_State2,\r\n Addrshistry_State3,\r\n Addrshistry_Years1,\r\n Addrshistry_Years2,\r\n Addrshistry_Years3,\r\n Addrshistry_Months1,\r\n Addrshistry_Months2,\r\n Addrshistry_Months3,\r\n Monthly_Rent1,\r\n Monthly_Rent2,\r\n Monthly_Rent3,\r\n Own1,\r\n Own2,\r\n Own3,\r\n Rent1,\r\n Rent2,\r\n Rent3,\r\n Living_Rent_Free1,\r\n Living_Rent_Free2,\r\n Living_Rent_Free3,\r\n } = LoanData;\r\n additionalBorrowerInfo_[index + 1] = {\r\n ...additionalBorrowerInfo_[index + 1],\r\n ...{\r\n Address1: Current_Street_Address,\r\n Zip: Addrshistry_ZipCode,\r\n City: Addrshistry_City,\r\n State: Addrshistry_State,\r\n \"Bor Own Period\": `${parseInt(Addrshistry_Years) || 0}.${\r\n parseInt(Addrshistry_Months) || 0\r\n }`,\r\n \"Present Rent\": Monthly_Rent,\r\n \"Bor Own\": Own ? \"O\" : Rent ? \"R\" : Living_Rent_Free ? \"L\" : \"\",\r\n [`Bor For Add1`]: PrevCurrent_Street_Address1,\r\n [`BorForZip2`]: Addrshistry_ZipCode1,\r\n [`BorForCity2`]: Addrshistry_City1,\r\n [`BorForState2`]: Addrshistry_State1,\r\n [`Bor For Add1 Yrs`]: `${parseInt(Addrshistry_Years1) || 0}.${\r\n parseInt(Addrshistry_Months1) || 0\r\n }`,\r\n \"Present Rent1\": Monthly_Rent1,\r\n \"Bor For Add1 Own\": Own1\r\n ? \"O\"\r\n : Rent1\r\n ? \"R\"\r\n : Living_Rent_Free1\r\n ? \"L\"\r\n : \"\",\r\n [`Bor For Add2`]: PrevCurrent_Street_Address2,\r\n [`BorForZip3`]: Addrshistry_ZipCode2,\r\n [`BorForCity3`]: Addrshistry_City2,\r\n [`BorForState3}`]: Addrshistry_State2,\r\n [`Bor For Add2 Yrs`]: `${parseInt(Addrshistry_Years2) || 0}.${\r\n parseInt(Addrshistry_Months2) || 0\r\n }`,\r\n \"Present Rent2\": Monthly_Rent2,\r\n \"Bor For Add2 Own\": Own2\r\n ? \"O\"\r\n : Rent2\r\n ? \"R\"\r\n : Living_Rent_Free2\r\n ? \"L\"\r\n : \"\",\r\n [`Bor For Add3`]: PrevCurrent_Street_Address3,\r\n [`BorForZip4`]: Addrshistry_ZipCode3,\r\n [`BorForCity4`]: Addrshistry_City3,\r\n [`BorForState4`]: Addrshistry_State3,\r\n [`Bor For Add3 Yrs`]: `${parseInt(Addrshistry_Years3) || 0}.${\r\n parseInt(Addrshistry_Months3) || 0\r\n }`,\r\n \"Present Rent3\": Monthly_Rent3,\r\n \"Bor For Add3 Own\": Own3\r\n ? \"O\"\r\n : Rent3\r\n ? \"R\"\r\n : Living_Rent_Free3\r\n ? \"L\"\r\n : \"\",\r\n },\r\n };\r\n } else if (!isCopyFormprimary) {\r\n const {\r\n Address1,\r\n Zip,\r\n City,\r\n State,\r\n \"Bor Own Period\": borOwnPeriod,\r\n \"Present Rent\": presentRent,\r\n \"Bor Own\": borOwn,\r\n \"Bor For Add1\": borForAdd1,\r\n BorForZip2: borForZip2,\r\n BorForCity2: borForCity2,\r\n BorForState2: borForState2,\r\n \"Bor For Add1 Yrs\": borForAdd1Yrs,\r\n \"Present Rent1\": presentRent1,\r\n \"Bor For Add1 Own\": borForAdd1Own,\r\n \"Bor For Add2\": borForAdd2,\r\n BorForZip3: borForZip3,\r\n BorForCity3: borForCity3,\r\n BorForState3: borForState3,\r\n \"Bor For Add2 Yrs\": borForAdd2Yrs,\r\n \"Present Rent2\": presentRent2,\r\n \"Bor For Add2 Own\": borForAdd2Own,\r\n \"Bor For Add3\": borForAdd3,\r\n BorForZip4: borForZip4,\r\n BorForCity4: borForCity4,\r\n BorForState4: borForState4,\r\n \"Bor For Add3 Yrs\": borForAdd3Yrs,\r\n \"Present Rent3\": presentRent3,\r\n \"Bor For Add3 Own\": borForAdd3Own,\r\n } = additionalBorrowerInfo_[index];\r\n additionalBorrowerInfo_[index + 1] = {\r\n ...additionalBorrowerInfo_[index + 1],\r\n ...{\r\n Address1,\r\n Zip,\r\n City,\r\n State,\r\n \"Bor Own Period\": borOwnPeriod,\r\n \"Present Rent\": presentRent,\r\n \"Bor Own\": borOwn,\r\n \"Bor For Add1\": borForAdd1,\r\n BorForZip2: borForZip2,\r\n BorForCity2: borForCity2,\r\n BorForState2: borForState2,\r\n \"Bor For Add1 Yrs\": borForAdd1Yrs,\r\n \"Present Rent1\": presentRent1,\r\n \"Bor For Add1 Own\": borForAdd1Own,\r\n \"Bor For Add2\": borForAdd2,\r\n BorForZip3: borForZip3,\r\n BorForCity3: borForCity3,\r\n BorForState3: borForState3,\r\n \"Bor For Add2 Yrs\": borForAdd2Yrs,\r\n \"Present Rent2\": presentRent2,\r\n \"Bor For Add2 Own\": borForAdd2Own,\r\n \"Bor For Add3\": borForAdd3,\r\n BorForZip4: borForZip4,\r\n BorForCity4: borForCity4,\r\n BorForState4: borForState4,\r\n \"Bor For Add3 Yrs\": borForAdd3Yrs,\r\n \"Present Rent3\": presentRent3,\r\n \"Bor For Add3 Own\": borForAdd3Own,\r\n },\r\n };\r\n }\r\n // setAdditionalBorrowerInfo([...[], ...additionalBorrowerInfo_]);\r\n // handleUpdateAddtionalBorrower(index, name, value, additionalBorrowerInfo);\r\n handleOptionPress(value, null, null, name);\r\n };\r\n const handleSaveSSnDetails = ({\r\n LoanData: iLoanData,\r\n additionalBorrowerInfo: iAdditionalBorrowerInfo,\r\n }) => {\r\n const json = [\r\n {\r\n ColumnName: \"SSN\",\r\n ColumnValue: iLoanData[\"SSN\"],\r\n },\r\n ];\r\n handleSaveLoanInformation(json);\r\n\r\n if (iAdditionalBorrowerInfo.length > 0) {\r\n iAdditionalBorrowerInfo.slice(1).forEach((borr) => {\r\n handleSaveAdditionalInfo(-1, 16, null, null, {\r\n SSN: borr[\"SSN\"] || \"\",\r\n CustId: borr[\"CustId\"],\r\n });\r\n });\r\n }\r\n };\r\n const handleUpdateAddtionalBorrower = (\r\n index,\r\n name,\r\n value,\r\n iAdditionalBorrowerInfo,\r\n label,\r\n iExp,\r\n prevAddIndex\r\n ) => {\r\n let additionalBorrowerInfo_ =\r\n iAdditionalBorrowerInfo || additionalBorrowerInfo;\r\n console.log({\r\n additionalBorrowerInfo: additionalBorrowerInfo_,\r\n });\r\n if (name === \"Own or Rent\") {\r\n additionalBorrowerInfo_[index + 1] = {\r\n ...additionalBorrowerInfo_[index + 1],\r\n [prevAddIndex ? `Bor For Add${prevAddIndex} Own` : \"Bor Own\"]:\r\n value === 1 ? \"O\" : value === 2 ? \"R\" : value === 3 ? \"L\" : \"\",\r\n };\r\n } else if (\r\n name === \"Bor Own Period\" ||\r\n (name.indexOf(\"Bor For Add\") > -1 && name.indexOf(\"Yrs\") > -1)\r\n ) {\r\n let val = (additionalBorrowerInfo_[index + 1][name] || \"\")\r\n .toString()\r\n .split(\".\")\r\n .slice(0, 2);\r\n if (val.length === 1) val.push(\"0\");\r\n label === \"Months\" ? (val[1] = value) : (val[0] = value);\r\n value = val.join(\".\");\r\n additionalBorrowerInfo_[index + 1][name] = value;\r\n } else if (iExp) {\r\n if (label === \"Months\" || label === \"Years\") {\r\n let val = additionalBorrowerInfo_[index + 1][name]\r\n .toString()\r\n .split(\".\")\r\n .slice(0, 2);\r\n if (val.length === 1) val.push(\"0\");\r\n label === \"Months\" ? (val[1] = value) : (val[0] = value);\r\n value = val.join(\".\");\r\n }\r\n additionalBorrowerInfo_[index + 1][name] = value;\r\n } else if (name === \"CellPhone\") {\r\n value = `*5*${value}`;\r\n additionalBorrowerInfo_[index + 1][name] = value;\r\n } else if (name === \"Chapter\") {\r\n additionalBorrowerInfo_[index + 1][\"blChapter7\"] = value === 1 ? 1 : 0;\r\n additionalBorrowerInfo_[index + 1][\"blChapter11\"] = value === 2 ? 1 : 0;\r\n additionalBorrowerInfo_[index + 1][\"blChapter12\"] = value === 3 ? 1 : 0;\r\n additionalBorrowerInfo_[index + 1][\"blChapter13\"] = value === 4 ? 1 : 0;\r\n } else if (\r\n currentPage === pageArray[pageId[\"government\"]] &&\r\n !DetailsArr.slice(1)[pageIndex[\"subPage\"]][\"VA_Military_Status\"] !== false\r\n ) {\r\n let obj = DetailsArr.slice(1)[pageIndex[\"subPage\"]][\"subFields\"].filter(\r\n (field) => {\r\n return field[\"ColumnName\"] === name;\r\n }\r\n );\r\n if (obj.length === 1) obj = obj[0];\r\n else {\r\n obj = obj.filter((obj_) => obj_[\"Options\"][0][\"value\"] === value)[0];\r\n }\r\n if (!obj) obj = {};\r\n if (obj[\"ColumnValue\"]?.toString() === \"NaN\") obj[\"ColumnValue\"] = null;\r\n if (!obj[\"resetBitWise\"]) obj[\"resetBitWise\"] = -1;\r\n let val = parseInt(additionalBorrowerInfo_[index + 1][name]) || 0;\r\n if (obj[\"isBitWise\"] && obj[\"resetBitWise\"] !== value) {\r\n if ((value & val) === value) value = val - value;\r\n else value = val + value;\r\n if ((obj[\"resetBitWise\"] & val) === obj[\"resetBitWise\"])\r\n value = value - obj[\"resetBitWise\"];\r\n } else if (obj[\"resetBitWise\"] == value && (value & val) === value) {\r\n value = val - value;\r\n } else if (value === additionalBorrowerInfo_[index + 1][name])\r\n value = null;\r\n\r\n additionalBorrowerInfo_[index + 1][name] = value;\r\n } else {\r\n additionalBorrowerInfo_[index + 1][name] = value;\r\n }\r\n\r\n if (name === \"MaritalStatus\") {\r\n handleMaritalStatusChange({\r\n changedId: Number(value),\r\n iAdditionalBorrowerInfo: additionalBorrowerInfo_,\r\n custId: additionalBorrowerInfo_[index + 1][\"CustId\"],\r\n index: index + 1,\r\n });\r\n }\r\n\r\n setAdditionalBorrowerInfo([...[], ...additionalBorrowerInfo_]);\r\n };\r\n const handleSaveRequiredFields = (josn, callBack = () => {}) => {\r\n handleSaveLoanInformation(josn, loanId, false, callBack);\r\n };\r\n const handleSaveSubjectProperty = (callBack = () => {}) => {\r\n let {\r\n ssn,\r\n firstname,\r\n lastname,\r\n PhoneNumber,\r\n subjectAddress: subjectaddress,\r\n subjectCity: subjectcity,\r\n subjectState: subjectstate,\r\n subjectZip: subjectzip,\r\n SSN,\r\n } = LoanData;\r\n\r\n const strjson = `{\"contactinfo\":[{\"ssn\":\"${\r\n SSN || ssn\r\n }\",\"firstname\":\"${firstname}\",\"lastname\":\"${lastname}\",\"PhoneNumber\":\"${PhoneNumber}\",\"subjectaddress\":\"${subjectaddress}\",\"subjectzip\":\"${subjectzip}\",\"subjectcity\":\"${subjectcity}\",\"subjectstate\":\"${subjectstate}\",\"SessionId\":\"${SessionId}\",\"loanid\":\"${loanId}\"}]}`;\r\n\r\n handleAPI({\r\n name: \"savecontactdetails\",\r\n params: { JsonInput: JSON.stringify(strjson) },\r\n })\r\n .then((response) => {\r\n callBack();\r\n })\r\n .catch((e) => console.error(\"Error Form savecontactdetails ====>\", e));\r\n };\r\n const handleUpdateAddtionalCounsellingInfo = ({\r\n iLanguagePreference,\r\n index,\r\n }) => {\r\n setAdditionalCounsellingInfo((prevAdditionalCounsellingInfo) => {\r\n prevAdditionalCounsellingInfo[index][\"LanguagePreference\"] =\r\n iLanguagePreference;\r\n return [...prevAdditionalCounsellingInfo];\r\n });\r\n };\r\n const getOtherAccountDesc = (AccType) => {\r\n const otherAccount = otherAccountTypeOption.filter(\r\n ({ value }) => value == AccType\r\n );\r\n return otherAccount[\"length\"] ? otherAccount[0][\"label\"] : \"\";\r\n };\r\n const handleSaveAdditionalInfo = async (\r\n index,\r\n flag,\r\n iCustId,\r\n isAdd,\r\n inputJSON_,\r\n isPrimarySave,\r\n AddValue,\r\n iAdditionalBorrowerInfo,\r\n isSaveMaritalStatus = true\r\n ) => {\r\n let InputJSON = {},\r\n CustId_;\r\n if (index !== -1 && flag === 11) {\r\n let {\r\n FirstName,\r\n NickName,\r\n MiddleName,\r\n LastName,\r\n Suffix,\r\n Dependents,\r\n BirthDate,\r\n Ages_Dependents,\r\n MaritalStatus,\r\n CustId,\r\n Email,\r\n CellPhone,\r\n SpouseCustID = MaritalStatus > 10 ? MaritalStatus : 0,\r\n } = (iAdditionalBorrowerInfo || additionalBorrowerInfo)[index + 1];\r\n if (CellPhone)\r\n CellPhone = `*5*${CellPhone.toString().replaceAll(\"*5*\", \"\")}`;\r\n\r\n InputJSON = {\r\n FirstName,\r\n NickName: NickName?.toString().trim(),\r\n MiddleName,\r\n LastName,\r\n Suffix,\r\n Dependents,\r\n BirthDate,\r\n Ages_Dependents,\r\n MaritalStatus,\r\n CustId,\r\n EmailId: Email,\r\n CellPhone,\r\n SpouseCustID,\r\n };\r\n\r\n if (!iAdditionalBorrowerInfo) {\r\n handleDuplicateEmail(Email, index + 1);\r\n\r\n if (LoanData[\"isMaritalStatusChanged\"] && isSaveMaritalStatus) {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n isMaritalStatusChanged: false,\r\n };\r\n });\r\n handleSaveLoanInformation(\r\n [\r\n {\r\n ColumnName: \"MaritalStatus\",\r\n ColumnValue: LoanData[\"MaritalStatus\"],\r\n },\r\n ],\r\n false\r\n );\r\n }\r\n }\r\n if (FirstName == \"\" && LastName == \"\") {\r\n setTimeout(() => {\r\n let addBorr = additionalBorrowerInfo.filter(\r\n (e, index_) => index + 1 !== index_\r\n );\r\n\r\n if (addBorr.length === 1) {\r\n setLoanData({\r\n ...LoanData,\r\n ...{\r\n Spouse_AddBorrower: 0,\r\n iSpouse_AddBorrower: 0,\r\n },\r\n });\r\n handleSaveLoanInformation([\r\n {\r\n ColumnName: \"Spouse_AddBorrower\",\r\n ColumnValue: 0,\r\n },\r\n ]);\r\n }\r\n\r\n handleUpdateAddtionalBorrower(index, \"isRemove\", false);\r\n setAdditionalBorrowerInfo([...addBorr]);\r\n\r\n setPageIndex((prevPageIndex) => ({\r\n ...prevPageIndex,\r\n subPage:\r\n Number(prevPageIndex[\"subPage\"]) -\r\n (Number(prevPageIndex[\"Page\"]) == 1 ? 0 : 1),\r\n }));\r\n\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 5,\r\n additionalBorrowerInfo[index + 1][\"CustId\"]\r\n );\r\n setScrollToTop(true);\r\n }, 500);\r\n\r\n return;\r\n }\r\n if (index !== -1 && flag === 11) {\r\n InputJSON = [InputJSON];\r\n }\r\n CustId_ = CustId;\r\n } else if (index !== -1 && flag === 12) {\r\n let { Address1, Zip, City, State, CustId } =\r\n additionalBorrowerInfo[index + 1];\r\n InputJSON = inputJSON_ || {\r\n Address1,\r\n Zip,\r\n City,\r\n State,\r\n CustId,\r\n BorOwnPeriod: additionalBorrowerInfo[index + 1][\"Bor Own Period\"],\r\n BorOwn: additionalBorrowerInfo[index + 1][\"Bor Own\"] || 0,\r\n PresentRent: additionalBorrowerInfo[index + 1][\"Present Rent\"],\r\n };\r\n CustId_ = CustId;\r\n }\r\n InputJSON.CustId = CustId_ || iCustId || 0;\r\n\r\n if (\r\n flag === 1 ||\r\n flag === 2 ||\r\n flag === 3 ||\r\n flag === 4 ||\r\n flag === 10 ||\r\n flag === 13 ||\r\n flag === 14 ||\r\n flag === 15 ||\r\n flag === 16 ||\r\n flag === 17 ||\r\n flag === 18 ||\r\n flag === 19\r\n ) {\r\n InputJSON = inputJSON_;\r\n }\r\n log(\"SaveAdditionalInfo\", InputJSON, flag);\r\n // return;\r\n if (LoanData[\"LockLoanApp\"] != 1) {\r\n try {\r\n handleAPI({\r\n name: \"SaveAdditionalInfo\",\r\n params: {\r\n CustId:\r\n CustId_ ||\r\n iCustId ||\r\n InputJSON?.CustId ||\r\n inputJSON_?.CustId ||\r\n 0,\r\n LoanId: loanId,\r\n InputJSON: JSON.stringify(InputJSON || {}),\r\n flag: flag,\r\n SessionId: SessionId,\r\n },\r\n })\r\n .then(async (CustId) => {\r\n try {\r\n let columnName = null,\r\n ColumnValue = 0;\r\n if (flag === -2 && isAdd) {\r\n let addIncome = handleAddAditionalIncome();\r\n addIncome[addIncome.length - 1][\"Id\"] = parseInt(CustId);\r\n setAdditionalOtherIncomeInfo([...[], ...addIncome]);\r\n columnName = \"blOtherIncome\";\r\n\r\n setScrollToTop(true);\r\n } else if (iCustId === -3 && isAdd) {\r\n let addBank = handleAddAddtionalBank(CustId);\r\n setAdditionalBankInfo([...[], ...addBank]);\r\n columnName = \"blAssetOption\";\r\n\r\n if (isAdd === \"pointLast\") {\r\n let subPage = addBank.length - 1;\r\n handleCheckNextPage({\r\n subPage: subPage < 0 ? 0 : subPage,\r\n page: pageId[\"bankAccounts\"],\r\n });\r\n }\r\n } else if (flag === -4 && iCustId === -2 && isAdd) {\r\n let addProp = handleAddAddtionalProperty(CustId);\r\n setAdditionalPropertyInfo([...[], ...addProp]);\r\n columnName = \"Real_est_prop\";\r\n } else if (iCustId === -4 && isAdd) {\r\n let addEmp_ = handleAddAditionalEmployment();\r\n\r\n addEmp_[addEmp_.length - 1][\"Id\"] = CustId;\r\n addEmp_[addEmp_.length - 1][\"CustId\"] =\r\n AddValue || additionalBorrowerInfo[0][\"CustId\"];\r\n\r\n setAdditionalEmploymentInfo(handleEmploymentOrder(addEmp_));\r\n if (additionalEmploymentInfo.length == 0) {\r\n let { page, subPage } = pageIndex;\r\n subPage = subPage + 1;\r\n let page_ = { subPage: subPage, page: page };\r\n setPageIndex({ ...page_ });\r\n }\r\n\r\n setScrollToTop(true);\r\n } else if ((flag === 0 && index === -1) || isAdd) {\r\n let addBorr_ = handleAddAditionalBorrower();\r\n\r\n addBorr_[addBorr_.length - 1][\"CustId\"] = CustId;\r\n if (LoanData[\"iSpouse_AddBorrower\"] == 1) {\r\n if (addBorr_.length == 2) {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n MaritalStatus: addBorr_[1][\"CustId\"],\r\n isMaritalStatusChanged: true,\r\n };\r\n });\r\n addBorr_[1][\"MaritalStatus\"] =\r\n addBorr_[0][\"CustId\"] || LoanData[\"UserId\"];\r\n } else {\r\n addBorr_[addBorr_.length - 1][\"MaritalStatus\"] = 1;\r\n }\r\n }\r\n setProcessStatus(\"\");\r\n\r\n setAdditionalBorrowerInfo(addBorr_);\r\n columnName = \"iSpouse_AddBorrower\";\r\n // const iLeftNavStatus = (await GetLeftNavStatus(loanId)) || [];\r\n // setLeftNavStatus(iLeftNavStatus);\r\n // handleUpdateCompletedPage(iLeftNavStatus);\r\n } else if (flag === 11) {\r\n getCreditDetails(loanId);\r\n handleGetLeftNavStatus();\r\n }\r\n columnName &&\r\n setLoanData((prevLoanData) => {\r\n return { ...prevLoanData, [columnName]: ColumnValue };\r\n });\r\n } catch (error) {\r\n console.error(\"Error form ==>\", error);\r\n }\r\n })\r\n .catch((e) =>\r\n console.error(\"Error From SaveAdditionalInfo ====>\", e)\r\n );\r\n } catch (error) {\r\n console.error(\"Error From SaveAdditionalInfo ====>\", error);\r\n }\r\n }\r\n };\r\n const handleAddAditionalEmployment = () => {\r\n let arr =\r\n DetailsArr[pageIndex[\"subPage\"] + 1][\"subFields\"]?.filter(\r\n (arr) => arr[\"ColumnName\"] === \"iCustId\"\r\n ) || [],\r\n iUserId = arr.length > 0 ? arr[0][\"ColumnValue\"] : UserId;\r\n\r\n let addEmp = [\r\n ...additionalEmploymentInfo,\r\n ...[\r\n {\r\n Id: 0,\r\n CustId: iUserId || UserId,\r\n Empmt_Emp_Name: \"\",\r\n Emp_Strt_Addrs: \"\",\r\n Emp_City: \"\",\r\n Emp_ZipCode: \"\",\r\n Emp_State: \"0\",\r\n Emp_phone: \"\",\r\n HR_Contact_Person: \"\",\r\n HR_Phone: \"\",\r\n Job_Title: \"\",\r\n Employed_From: \"\",\r\n Employed_To: \"\",\r\n Monthly_Base_Pay: \"$0.00\",\r\n Monthly_Overtime_Amt: \"$0.00\",\r\n Monthly_Bonus_Amt: \"$0.00\",\r\n Monthly_Commission_Amt: \"$0.00\",\r\n \"Self Employed\": \"N\",\r\n Employedbyfamily: 0,\r\n Monthly_Total_Pay: \"$0.00\",\r\n },\r\n ],\r\n ];\r\n return addEmp;\r\n };\r\n const handleSaveNewLoan = async (iLoanId) => {\r\n let DetailsArr_ = DetailsArr.slice(1),\r\n json = [],\r\n iLoanData = LoanData || {};\r\n setLoanData((prevLoanData) => {\r\n iLoanData = prevLoanData;\r\n return { ...prevLoanData };\r\n });\r\n\r\n DetailsArr_.forEach(async (item) => {\r\n if (item[\"columnName\"] !== \"loanOfficers\") {\r\n (item[\"subFields\"] || []).forEach((iItem) => {\r\n if (iItem[\"label\"] === \"Down Payment\") {\r\n iItem[\"field\"].forEach((subItem) => {\r\n json.push({\r\n ColumnName: subItem[\"ColumnName\"],\r\n ColumnValue: iLoanData[subItem[\"ColumnName\"]],\r\n });\r\n });\r\n } else {\r\n json.push({\r\n ColumnName: iItem[\"ColumnName\"],\r\n ColumnValue: iLoanData[iItem[\"ColumnName\"]],\r\n });\r\n }\r\n });\r\n\r\n if (item[\"ColumnName\"]) {\r\n json.push({\r\n ColumnName: item[\"ColumnName\"],\r\n ColumnValue:\r\n item[\"ColumnName\"] === \"loanOfficers\"\r\n ? item[\"ColumnValue\"]\r\n : iLoanData[item[\"ColumnName\"]],\r\n });\r\n }\r\n }\r\n });\r\n __DEV__ && console.log(\"Json for New Loan ===> \", json, DetailsArr_);\r\n\r\n handleSaveLoanInformation(json, iLoanId, false, () => {\r\n if (additionalBorrowerInfo.length === 0) {\r\n handleAPIGetLoanDetails(iLoanId, true, true);\r\n }\r\n });\r\n };\r\n const handleSaveLoanOfficer = async (LoNum) => {\r\n if (loanId > 0 && LoNum > 0) {\r\n return await handleAPI({\r\n name: \"SaveLoanOfficer\",\r\n params: {\r\n LoanId: loanId,\r\n LoEmpNum: LoNum || 0,\r\n },\r\n })\r\n .then(() => {\r\n handleGetBorrowerUrl();\r\n //return JSON.parse(LoanId);\r\n })\r\n .catch((error) =>\r\n console.error(\"Error from SaveLoanOfficer ====> \", error)\r\n );\r\n }\r\n };\r\n\r\n const handleNextClick = () => {\r\n if (currentPage != \"eSign\" && (!web || isMobileWeb)) setHideProgress(false);\r\n\r\n if (contextDetails[\"appDownloadFlag\"]) {\r\n if (contextDetails[\"appDownloadFlag\"]) {\r\n setContextDetails((prevContextDetails) => {\r\n prevContextDetails[\"appDownloadFlag\"] = false;\r\n return { ...prevContextDetails };\r\n });\r\n pageIndex[\"subPage\"] === 0 &&\r\n pageIndex[\"page\"] === 0 &&\r\n setIsDisableNext(false);\r\n }\r\n } else {\r\n (!isDisableNext || GoToNav == pageId[\"documentUpload\"]) &&\r\n handleNavigation(1);\r\n }\r\n };\r\n // const handleAsyncLoanCeration = async () => {\r\n // let iLoanId = loanId;\r\n\r\n // iLoanId = await handleCreateLoan();\r\n // // iLoanId = 495139;\r\n\r\n // };\r\n const handleGetUserTask = async () => {\r\n try {\r\n handleAPI({\r\n name: \"GetUsertasks\",\r\n params: {\r\n SessionId: SessionId,\r\n },\r\n }).then(() => {});\r\n } catch (error) {}\r\n };\r\n const handleCreateLoan = async () => {\r\n handleAPI({\r\n name: \"CreateLoanOnly\",\r\n params: {\r\n sessionid: SessionId,\r\n empid: loanOfficers || 0,\r\n EventId: 15,\r\n },\r\n })\r\n .then((LoanId) => {\r\n let iLoanId = JSON.parse(LoanId);\r\n handleLogDWCallToActionEventParent(\r\n \"Loan Created\",\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n Email: \"\",\r\n LoanId: iLoanId,\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n },\r\n activePageArray[pageIndex[\"page\"]]?.replaceAll(\" \", \"\")\r\n );\r\n\r\n updateWebURL({\r\n SessionId: SessionId,\r\n loanId: iLoanId,\r\n Path: \"Home\",\r\n });\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n loanId: iLoanId,\r\n isNewLoanCreated: true,\r\n };\r\n });\r\n\r\n setTimeout(() => {\r\n handleSaveNewLoan(iLoanId);\r\n handleGetUserTask();\r\n }, 500);\r\n })\r\n .catch((error) =>\r\n console.error(\"Error from CreateLoanOnly ====> \", error)\r\n );\r\n };\r\n\r\n const handleCheckNextPage = (iPage) => {\r\n if (pageArray.length < iPage[\"page\"] || !pageArray[iPage[\"page\"]]) {\r\n navigate(\"DashBoard\", { from: \"Home\" });\r\n } else {\r\n setPageIndex({ ...iPage });\r\n let iCurrentPage = pageArray[iPage[\"page\"]];\r\n iCurrentPage && setCurrentPage(iCurrentPage);\r\n }\r\n };\r\n const handleGetBankEmpDetails = () => {\r\n handleAPI({\r\n name: \"getBankEmpDetails\",\r\n params: {\r\n loanId,\r\n },\r\n method: \"GET\",\r\n })\r\n .then((result) => {\r\n let { bankInfo, employmentInfo: empDetails } =\r\n JSON[\"parse\"](result)[\"Table\"][0];\r\n\r\n bankInfo = JSON[\"parse\"](bankInfo || \"[]\");\r\n empDetails = JSON[\"parse\"](empDetails || \"[]\");\r\n\r\n if (bankInfo.length > 0) {\r\n bankInfo.forEach((bank) => {\r\n const { AccType, AccTypeName } = bank;\r\n bank[\"Amount\"] = formatCurrency(bank[\"Amount\"], 2);\r\n if (AccType == 1 && !AccTypeName) bank[\"AccTypeName\"] = \"Checking\";\r\n else if (AccType == 2 && !AccTypeName)\r\n bank[\"AccTypeName\"] = \"Savings\";\r\n else if (![1, 2].includes(Number(AccType))) {\r\n bank[\"AccType\"] = \"-1\";\r\n bank[\"AccTypeName\"] = \"Other Type\";\r\n bank[\"OtherAccType\"] = AccType?.toString();\r\n bank[\"TypeDesc\"] = getOtherAccountDesc(AccType);\r\n bank[\"EarnestMoneyPaidTo\"] =\r\n bank[\"paidToId\"] + \"####\" + bank[\"paidToType\"];\r\n }\r\n });\r\n setAdditionalBankInfo([...bankInfo]);\r\n }\r\n\r\n if (empDetails.length > 0) {\r\n if (!empDetails[0][\"CustId\"]) empDetails[0][\"CustId\"] = userId;\r\n empDetails.forEach((employment) => {\r\n employment[\"Monthly_Base_Pay\"] = formatCurrency(\r\n employment[\"Monthly_Base_Pay\"],\r\n 2\r\n );\r\n employment[\"Monthly_Overtime_Amt\"] = formatCurrency(\r\n employment[\"Monthly_Overtime_Amt\"],\r\n 2\r\n );\r\n employment[\"Monthly_Bonus_Amt\"] = formatCurrency(\r\n employment[\"Monthly_Bonus_Amt\"],\r\n 2\r\n );\r\n employment[\"Monthly_Commission_Amt\"] = formatCurrency(\r\n employment[\"Monthly_Commission_Amt\"],\r\n 2\r\n );\r\n employment[\"Monthly_Total_Pay\"] = formatCurrency(\r\n employment[\"Monthly_Total_Pay\"],\r\n 2\r\n );\r\n\r\n employment[\"CurrentYrsInLineofwork\"] = employment[\r\n \"CurrentYrsInLineofwork\"\r\n ]\r\n ? employment[\"CurrentYrsInLineofwork\"]\r\n : \"\";\r\n });\r\n\r\n empDetails = empDetails.filter((employment) => {\r\n if (employment[\"CustId\"] === 0) {\r\n handleSaveAdditionalInfo(-1, 6, employment[\"Id\"]); // Deleting empty employment on page load\r\n return false;\r\n }\r\n return true;\r\n });\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n currently_employed: 1,\r\n };\r\n });\r\n\r\n console.log([\r\n ...handleEmploymentOrder(empDetails, additionalBorrowerInfo),\r\n ]);\r\n\r\n setAdditionalEmploymentInfo([\r\n ...handleEmploymentOrder(empDetails, additionalBorrowerInfo),\r\n ]);\r\n }\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from GetBankEmpDetails ====> \", err)\r\n );\r\n };\r\n const handleNavigation = async (\r\n direction_,\r\n iFrom,\r\n isChangePage = true,\r\n mainPage\r\n ) => {\r\n setScrollToTop(true);\r\n\r\n if (currentPage != \"eSign\" && (!web || isMobileWeb)) {\r\n setHideProgress(false);\r\n }\r\n\r\n if (currentPage == \"eSign\" && pdfView && (ios || android)) {\r\n navigation.navigate(\"Home\", {\r\n GoToNav: 10,\r\n });\r\n }\r\n\r\n let { page, subPage } = pageIndex,\r\n DetailsArr_ = DetailsArr.slice(1);\r\n\r\n if (currentPage === pageArray[pageId[\"documentUpload\"]]) {\r\n let PublicPage = getQueryString(\"Publicpage\", \"\");\r\n if (PublicPage == 1 || GoToNav == pageId[\"documentUpload\"]) {\r\n navigate(\"DashBoard\", { from: \"Home\" });\r\n return;\r\n }\r\n }\r\n if (\r\n [\r\n \"eSign\",\r\n \"documentUpload\",\r\n \"appraisalPayment\",\r\n \"reviewYourInterestRate\",\r\n ].includes(currentPage)\r\n ) {\r\n page = pageId[currentPage];\r\n }\r\n if (currentPage === pageArray[pageId[\"documentUpload\"] && isChangePage]) {\r\n if (direction_ === 1) page++;\r\n else page--;\r\n pageArray[page] && setCurrentPage(pageArray[page]);\r\n let arr = handlePageDetails(pageArray[page])[\"iDetailsArr\"];\r\n subPage = subPage === 0 ? arr.slice(1).length - 1 : 0;\r\n setDetailsArr(arr);\r\n let page_ = { page: page, subPage: subPage };\r\n handleCheckNextPage(page_);\r\n } else if (DetailsArr_.length > 0) {\r\n let details = DetailsArr_[subPage],\r\n ColumnName = details?.ColumnName || undefined,\r\n ColumnValue = [null, undefined].includes(details?.ColumnValue)\r\n ? ColumnName === \"LinkBankAccount\"\r\n ? \"\"\r\n : undefined\r\n : details?.ColumnValue,\r\n json = [\r\n {\r\n ColumnName,\r\n ColumnValue,\r\n },\r\n ];\r\n if (\r\n [\"IsReferred\", \"Propertybe\"].includes(ColumnName) &&\r\n DetailsArr_[subPage][\"subFields\"].length > 0\r\n ) {\r\n json.push({\r\n ColumnName: DetailsArr_[subPage][\"subFields\"][0][\"ColumnName\"],\r\n ColumnValue: DetailsArr_[subPage][\"subFields\"][0][\"ColumnValue\"],\r\n });\r\n }\r\n let isCreateLoan =\r\n ColumnName === \"loanOfficers\" &&\r\n Number(loanId) === -999 &&\r\n direction_ === 1 &&\r\n isChangePage;\r\n\r\n if (isCreateLoan) {\r\n if (loanOfficers <= 0) {\r\n return;\r\n }\r\n handleCreateLoan();\r\n\r\n subPage++;\r\n if (subPage === DetailsArr_.length) {\r\n page++;\r\n subPage = 0;\r\n setTimeout(() => {\r\n let page_ = { page: page, subPage: subPage };\r\n\r\n // (subPage != pageIndex[\"subPage\"] || page != pageIndex[\"page\"]) &&\r\n setPageIndex({ ...page_ });\r\n }, 1000);\r\n }\r\n } else {\r\n if (ColumnValue === undefined || ColumnName === undefined) {\r\n json = [];\r\n\r\n if (page === pageId[\"addressHistory\"] && subPage < 4) {\r\n let totalMonthCount =\r\n handleGetMonthCount(\r\n LoanData[`Addrshistry_Months`] || 0,\r\n LoanData[`Addrshistry_Years`] || 0\r\n ) || 0,\r\n monthCount = 0;\r\n json = [];\r\n\r\n json.push(\r\n ...[\r\n {\r\n ColumnName: \"Current_Street_Address\",\r\n ColumnValue: LoanData[\"Current_Street_Address\"] || \"\",\r\n },\r\n {\r\n ColumnName: \"Addrshistry_ZipCode\",\r\n ColumnValue: LoanData[\"Addrshistry_ZipCode\"] || \"\",\r\n },\r\n {\r\n ColumnName: \"Addrshistry_City\",\r\n ColumnValue: LoanData[\"Addrshistry_City\"] || \"\",\r\n },\r\n {\r\n ColumnName: \"Addrshistry_State\",\r\n ColumnValue: LoanData[\"Addrshistry_State\"] || \"\",\r\n },\r\n {\r\n ColumnName: \"Addrshistry_Years\",\r\n ColumnValue: LoanData[\"Addrshistry_Years\"] || \"\",\r\n },\r\n {\r\n ColumnName: \"Addrshistry_Months\",\r\n ColumnValue: LoanData[\"Addrshistry_Months\"] || \"\",\r\n },\r\n ]\r\n );\r\n\r\n for (let i = 1; i < 4; i++) {\r\n monthCount = handleGetMonthCount(\r\n LoanData[`Addrshistry_Months${i}`] || 0,\r\n LoanData[`Addrshistry_Years${i}`] || 0\r\n );\r\n\r\n if (totalMonthCount <= 24) {\r\n totalMonthCount = totalMonthCount + monthCount;\r\n json.push(\r\n ...[\r\n {\r\n ColumnName: `PrevCurrent_Street_Address${i}`,\r\n ColumnValue:\r\n LoanData[`PrevCurrent_Street_Address${i}`] || \"\",\r\n },\r\n {\r\n ColumnName: `Addrshistry_ZipCode${i}`,\r\n ColumnValue: LoanData[`Addrshistry_ZipCode${i}`] || \"\",\r\n },\r\n {\r\n ColumnName: `Addrshistry_City${i}`,\r\n ColumnValue: LoanData[`Addrshistry_City${i}`] || \"\",\r\n },\r\n {\r\n ColumnName: `Addrshistry_State${i}`,\r\n ColumnValue: LoanData[`Addrshistry_State${i}`] || \"\",\r\n },\r\n {\r\n ColumnName: `Addrshistry_Years${i}`,\r\n ColumnValue: LoanData[`Addrshistry_Years${i}`] || \"\",\r\n },\r\n {\r\n ColumnName: `Addrshistry_Months${i}`,\r\n ColumnValue: LoanData[`Addrshistry_Months${i}`] || \"\",\r\n },\r\n {\r\n ColumnName: `Monthly_Rent${i}`,\r\n ColumnValue: LoanData[`Monthly_Rent${i}`] || \"\",\r\n },\r\n {\r\n ColumnName: `Own${i}`,\r\n ColumnValue: LoanData[`Own${i}`] ? 1 : 0,\r\n },\r\n {\r\n ColumnName: `Rent${i}`,\r\n ColumnValue: LoanData[`Rent${i}`] ? 1 : 0,\r\n },\r\n {\r\n ColumnName: `Living_Rent_Free${i}`,\r\n ColumnValue: LoanData[`Living_Rent_Free${i}`] ? 1 : 0,\r\n },\r\n ]\r\n );\r\n }\r\n }\r\n } else {\r\n DetailsArr_[subPage][\"subFields\"]?.forEach((item) => {\r\n if (item[\"field\"] !== undefined) {\r\n item[\"field\"].forEach((item_) => {\r\n json.push({\r\n ColumnName: item_[\"ColumnName\"],\r\n ColumnValue:\r\n item_[\"ColumnName\"] === \"CellPhone\"\r\n ? `*5*${item_[\"ColumnValue\"]}`\r\n : item_[\"ColumnValue\"],\r\n });\r\n });\r\n }\r\n if (\r\n item[\"ColumnName\"] !== undefined &&\r\n item[\"ColumnValue\"] !== undefined\r\n ) {\r\n const iColumnValue =\r\n item[\"ColumnName\"] === \"CellPhone\"\r\n ? `*5*${item[\"ColumnValue\"]}`\r\n : item[\"ColumnName\"] === \"LanguagePreference\"\r\n ? item[\"ColumnValue\"] || \"1\"\r\n : item[\"ColumnValue\"];\r\n\r\n if (\r\n item[\"ColumnName\"] === \"LanguagePreference\" &&\r\n iColumnValue == \"1\"\r\n ) {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n [item[\"ColumnName\"]]: iColumnValue,\r\n };\r\n });\r\n }\r\n\r\n json.push({\r\n ColumnName: item[\"ColumnName\"],\r\n ColumnValue: iColumnValue,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n //Save Subject Property Address\r\n if (DetailsArr_[subPage][\"ColumnName\"] == \"Propertybe\") {\r\n json.push({\r\n ColumnName: \"AddressTBD\",\r\n ColumnValue: LoanData[\"AddressTBD\"] ? 1 : 0,\r\n });\r\n if (\r\n json.filter(({ ColumnName }) => ColumnName === \"Prop_Years\")\r\n .length == 0\r\n )\r\n json.push({\r\n ColumnName: \"Prop_Years\",\r\n ColumnValue: LoanData[\"Prop_Years\"],\r\n });\r\n handleSaveSubjectProperty();\r\n } else if (\r\n DetailsArr_[subPage][\"ColumnName\"] == \"LoanPurpose\" &&\r\n LoanData[\"LoanPurpose\"] == 2\r\n ) {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n AddressTBD: 0,\r\n };\r\n });\r\n json.push({\r\n ColumnName: \"AddressTBD\",\r\n ColumnValue: 0,\r\n });\r\n }\r\n\r\n //Save SSN Credit score page =========== Re-Assign Json===================\r\n // if (DetailsArr_[subPage][\"isSSNDetails\"] || (DetailsArr[3] !== undefined && DetailsArr[3][\"isSSNDetails\"])) {\r\n if (DetailsArr_[subPage][\"isSSNDetails\"]) {\r\n json = [\r\n {\r\n ColumnName: \"SSN\",\r\n ColumnValue: LoanData[\"SSN\"],\r\n },\r\n ];\r\n if (additionalBorrowerInfo.length > 0) {\r\n additionalBorrowerInfo.slice(1).forEach((borr) => {\r\n handleSaveAdditionalInfo(-1, 16, null, null, {\r\n SSN: borr[\"SSN\"] || \"\",\r\n CustId: borr[\"CustId\"],\r\n });\r\n });\r\n }\r\n\r\n // if (\r\n // (LoanData[\"Spouse_AddBorrower\"] == 1 ||\r\n // LoanData[\"iSpouse_AddBorrower\"] == 1) &&\r\n // additionalBorrowerInfo.length > 1\r\n // ) {\r\n // json.push({\r\n // ColumnName: \"SpouseCustId\",\r\n // ColumnValue: additionalBorrowerInfo[1].CustId,\r\n // });\r\n\r\n // additionalBorrowerInfo.slice(1).forEach((borr) => {\r\n // handleSaveAdditionalInfo(-1, 16, null, null, {\r\n // SSN: borr[\"SSN\"] || \"\",\r\n // CustId: borr[\"CustId\"],\r\n // });\r\n // });\r\n // } else json.push({ ColumnName: \"SpouseSSN\", ColumnValue: \"\" });\r\n\r\n // handleSaveLoanInformation(json);\r\n }\r\n //Change Save Json format\r\n if (\r\n currentPage === pageArray[pageId[\"employment\"]] &&\r\n json.length > 0\r\n ) {\r\n if (json[0][\"ColumnName\"] === \"CurrentlyEmployed\") {\r\n json = [\r\n {\r\n ColumnName: \"currently_employed\",\r\n ColumnValue: LoanData[\"currently_employed\"],\r\n },\r\n { ColumnName: \"Retired\", ColumnValue: LoanData[\"Retired\"] },\r\n {\r\n ColumnName: \"Not_CurrentlyEmployed\",\r\n ColumnValue: LoanData[\"Not_CurrentlyEmployed\"],\r\n },\r\n ];\r\n handleSaveLoanInformation(json);\r\n if (\r\n additionalEmploymentInfo.length &&\r\n !LoanData[\"currently_employed\"]\r\n ) {\r\n additionalEmploymentInfo.forEach(({ Id }) => {\r\n handleSaveAdditionalInfo(-1, 6, Id);\r\n });\r\n }\r\n // return;\r\n } else if (json[0][\"ColumnName\"] === \"IsOtherIncome\") {\r\n json.push(\r\n ...[\r\n {\r\n ColumnName: \"Payor_Name\",\r\n ColumnValue: LoanData[\"Payor_Name\"],\r\n },\r\n {\r\n ColumnName: \"Source_Other_Incm\",\r\n ColumnValue: LoanData[\"Source_Other_Incm\"],\r\n },\r\n {\r\n ColumnName: \"Monthly_Amount\",\r\n ColumnValue: LoanData[\"Monthly_Amount\"],\r\n },\r\n {\r\n ColumnName: \"OtherIncomeCustId\",\r\n ColumnValue:\r\n LoanData[\"OtherIncomeCustId\"] ||\r\n additionalBorrowerInfo[0][\"CustId\"],\r\n },\r\n ]\r\n );\r\n if (\r\n additionalOtherIncomeInfo.length &&\r\n !LoanData[\"IsOtherIncome\"]\r\n ) {\r\n additionalOtherIncomeInfo.forEach(({ Id }) => {\r\n handleSaveAdditionalInfo(-1, 7, Id);\r\n });\r\n }\r\n } else if (json[0][\"ColumnName\"] === \"IsAlimonyChildSupport\") {\r\n json.push(\r\n ...[\r\n {\r\n ColumnName: \"OtherAlimonyIncomeCustId\",\r\n ColumnValue: LoanData[\"OtherAlimonyIncomeCustId\"] || UserId,\r\n },\r\n {\r\n ColumnName: \"Monthly_Alimony_Expense\",\r\n ColumnValue: LoanData[\"Monthly_Alimony_Expense\"],\r\n },\r\n {\r\n ColumnName: \"Monthly_Alimony_Income\",\r\n ColumnValue: LoanData[\"Monthly_Alimony_Income\"],\r\n },\r\n {\r\n ColumnName: \"Monthly_ChildSupportExpense\",\r\n ColumnValue: LoanData[\"Monthly_ChildSupportExpense\"],\r\n },\r\n {\r\n ColumnName: \"Monthly_ChildSupportIncome\",\r\n ColumnValue: LoanData[\"Monthly_ChildSupportIncome\"],\r\n },\r\n ]\r\n );\r\n }\r\n }\r\n\r\n //============================================================\r\n\r\n //Special case for saving data in Add History info\r\n if (\r\n currentPage === pageArray[pageId[\"addressHistory\"]] &&\r\n !DetailsArr_[subPage][\"isAddressHistory\"]\r\n ) {\r\n json.push(\r\n ...[\r\n {\r\n ColumnName: `Own`,\r\n ColumnValue: LoanData[`Own`] ? 1 : 0,\r\n },\r\n {\r\n ColumnName: `Rent`,\r\n ColumnValue: LoanData[`Rent`] ? 1 : 0,\r\n },\r\n {\r\n ColumnName: `Living_Rent_Free`,\r\n ColumnValue: LoanData[`Living_Rent_Free`] ? 1 : 0,\r\n },\r\n {\r\n ColumnName: `Monthly_Rent`,\r\n ColumnValue: LoanData[`Monthly_Rent`] || 0,\r\n },\r\n ]\r\n );\r\n }\r\n\r\n //====================================\r\n if (DetailsArr_[subPage][\"isAdditionalBorr\"]) {\r\n const { index, CustId } = DetailsArr_[subPage],\r\n { SSN } = additionalBorrowerInfo[index + 1];\r\n handleSaveAdditionalInfo(index, 11);\r\n handleSaveAdditionalInfo(-1, 16, null, null, {\r\n SSN,\r\n CustId,\r\n });\r\n } else if (DetailsArr_[subPage][\"isAddressHistory\"]) {\r\n let index = DetailsArr_[subPage][\"index\"];\r\n // json.push({\r\n // ColumnName: `btnSameAsProperty${index + 1}`,\r\n // ColumnValue: LoanData[`btnSameAsProperty${index + 1}`] || 0,\r\n // });\r\n // handleSaveLoanInformation(json);\r\n let inputJSON = null;\r\n if (DetailsArr_[subPage][\"isAddtionalPrevAddressHistory\"]) {\r\n inputJSON = DetailsArr_[subPage][\"subFields\"].reduce(\r\n (result, item) => {\r\n let ColumnName = item.ColumnName; //BorForZip2\r\n if (\r\n ColumnName.indexOf(\"Bor For Zip\") !== -1 ||\r\n ColumnName.indexOf(\"Bor For City\") !== -1 ||\r\n ColumnName.indexOf(\"Bor For State\") !== -1\r\n )\r\n ColumnName = ColumnName.replaceAll(\" \", \"\");\r\n result[ColumnName] = item.ColumnValue;\r\n return result;\r\n },\r\n {}\r\n );\r\n let key = `Bor For Add${DetailsArr_[subPage][\"prevAddIndex\"]} Own`,\r\n key_ = `Bor For Add${DetailsArr_[subPage][\"prevAddIndex\"]} Yrs`,\r\n rentKey = `Present Rent${DetailsArr_[subPage][\"prevAddIndex\"]}`;\r\n inputJSON = {\r\n ...inputJSON,\r\n [key]: additionalBorrowerInfo[index + 1][key],\r\n [key_]: `${DetailsArr_[subPage][\"subFields\"][4][\"ColumnValue\"]}.${DetailsArr_[subPage][\"subFields\"][5][\"ColumnValue\"]}`,\r\n [rentKey]: cleanValue(additionalBorrowerInfo[index + 1][rentKey]),\r\n CustId: additionalBorrowerInfo[index + 1][\"CustId\"],\r\n };\r\n }\r\n // console.log(inputJSON);\r\n handleSaveAdditionalInfo(\r\n index,\r\n DetailsArr_[subPage][\"flag\"],\r\n null,\r\n null,\r\n inputJSON\r\n );\r\n } else if (DetailsArr_[subPage][\"isAdditionalBank\"]) {\r\n let {\r\n BankName,\r\n Amount,\r\n Id,\r\n CustId,\r\n OwnerIdList,\r\n AssetId,\r\n AccType,\r\n Account = \"\",\r\n AccountName = \"\",\r\n Address = \"\",\r\n BankAddress = \"\",\r\n BankCity = \"\",\r\n BankState = \"\",\r\n BankZip = \"\",\r\n OtherAccType = \"\",\r\n giftfrom = \"\",\r\n lifeInsFace = 0,\r\n lifeInsValue = 0,\r\n EarnestMoneyPaidTo = \"\",\r\n Description,\r\n } = additionalBankInfo[DetailsArr_[subPage][\"index\"]];\r\n const [paidToId, paidToType] = EarnestMoneyPaidTo.split(\"####\");\r\n\r\n handleUpdateAddtionalBank(\r\n DetailsArr_[subPage][\"index\"],\r\n \"isNewRecord\",\r\n false\r\n );\r\n\r\n let json_ = [\r\n {\r\n Bank_Name: BankName,\r\n Monthly_Amount: Amount,\r\n CustId: CustId,\r\n Id: Id,\r\n OwnerIdCust: OwnerIdList,\r\n AssetId,\r\n AccType: AccType == -1 ? OtherAccType : AccType,\r\n Account,\r\n AccountName,\r\n TypeDesc: AccType == -1 ? getOtherAccountDesc(OtherAccType) : \"\",\r\n Address,\r\n BankAddress,\r\n BankCity,\r\n BankState,\r\n BankZip,\r\n giftfrom,\r\n lifeInsFace,\r\n lifeInsValue,\r\n paidToId,\r\n paidToType,\r\n Description,\r\n },\r\n ];\r\n\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 3,\r\n additionalBankInfo[DetailsArr_[subPage][\"index\"]][\"Id\"],\r\n null,\r\n json_\r\n );\r\n } else if (DetailsArr_[subPage][\"isAdditionalIncome\"]) {\r\n // json[3][\"ColumnValue\"] =\r\n // DetailsArr[pageIndex.subPage][\"subFields\"][3][\"ColumnValue\"];\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 2,\r\n DetailsArr_[subPage][\"custId\"],\r\n null,\r\n json\r\n );\r\n } else if (DetailsArr_[subPage][\"isAdditionalEmployment\"]) {\r\n let json_ = [{}];\r\n json.forEach((item) => {\r\n if (item.ColumnName === \"Self Employed\")\r\n json_[0][\"SelfEmployed\"] = item.ColumnValue;\r\n else json_[0][item.ColumnName] = item.ColumnValue;\r\n });\r\n if (!json_[0][\"CustId\"]) {\r\n json_[0][\"CustId\"] = UserId;\r\n }\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 1,\r\n additionalEmploymentInfo[DetailsArr_[subPage][\"index\"]][\"Id\"],\r\n null,\r\n json_\r\n );\r\n } else if (DetailsArr_[subPage][\"isAdditionalProperty\"]) {\r\n let json_ = [{}];\r\n json.forEach((item) => {\r\n let col = item.ColumnName;\r\n col = col === \"OwnerIdList\" ? \"OwnerIdCust\" : col;\r\n\r\n json_[0][col] = item.ColumnValue;\r\n });\r\n json_[0][\"CustId\"] = UserId;\r\n json_[0][\"AssetId\"] =\r\n additionalPropertyInfo[DetailsArr_[subPage][\"index\"]][\"Id\"];\r\n\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 4,\r\n additionalPropertyInfo[DetailsArr_[subPage][\"index\"]][\"Id\"],\r\n null,\r\n json_\r\n );\r\n } else if (\r\n DetailsArr_[subPage][\"isAddAdditionalEmployment\"] &&\r\n direction_ === 1 &&\r\n DetailsArr_[subPage][\"ColumnValue\"] == 1\r\n ) {\r\n await handleSaveAdditionalInfo(\r\n -2,\r\n -1,\r\n -4,\r\n true,\r\n null,\r\n false,\r\n DetailsArr_[subPage][\"CustId\"]\r\n );\r\n\r\n setLoanData((prevLoanData) => {\r\n return { ...prevLoanData, [DetailsArr_[subPage][\"ColumnName\"]]: 0 };\r\n });\r\n return false;\r\n } else if (\r\n DetailsArr_[subPage][\"isAddAdditionalOtherIncome\"] &&\r\n direction_ === 1 &&\r\n DetailsArr_[subPage][\"ColumnValue\"] == 1\r\n ) {\r\n await handleAddAditionalIncomeType(false);\r\n return false;\r\n } else if (DetailsArr_[subPage][\"isAddtionalDeclaration\"]) {\r\n let borr = additionalBorrowerInfo[DetailsArr_[subPage][\"index\"]];\r\n\r\n json = [\r\n {\r\n Bankruptcy: parseInt(borr[\"Bankruptcy\"]) === 1 ? \"Y\" : \"N\",\r\n blChapter7: borr[\"blChapter7\"],\r\n blChapter11: borr[\"blChapter11\"],\r\n blChapter12: borr[\"blChapter12\"],\r\n blChapter13: borr[\"blChapter13\"],\r\n USCitizen: parseInt(borr[\"Citizenship_Status\"]) === 1 ? \"Y\" : \"\",\r\n bTypePerResAlien:\r\n parseInt(borr[\"Citizenship_Status\"]) === 2 ? 1 : \"\",\r\n bTypeNonPerResAlien:\r\n parseInt(borr[\"Citizenship_Status\"]) === 3 ? 1 : \"\",\r\n OccupyProperty:\r\n parseInt(borr[\"OccupyProperty\"]) === 1 ? \"Y\" : \"N\",\r\n OweProperty: parseInt(borr[\"Owe Property\"]) === 1 ? \"Y\" : \"N\",\r\n TypePropOwn:\r\n parseInt(borr[\"Type Prop Own\"]) === 1\r\n ? \"PR\"\r\n : parseInt(borr[\"Type Prop Own\"]) === 2\r\n ? \"SH\"\r\n : parseInt(borr[\"Type Prop Own\"]) === 3\r\n ? \"IP\"\r\n : \"\",\r\n HoldTitle:\r\n parseInt(borr[\"Hold Title\"]) === 1\r\n ? \"S\"\r\n : parseInt(borr[\"Hold Title\"]) === 2\r\n ? \"SP\"\r\n : parseInt(borr[\"Hold Title\"]) === 3\r\n ? \"O\"\r\n : \"\",\r\n BusinessaffWithSeller:\r\n parseInt(borr[\"BusinessaffWithSeller\"]) === 1 ? \"Y\" : \"N\",\r\n Downpayment: parseInt(borr[\"Downpayment\"]) === 1 ? \"Y\" : \"N\",\r\n MoneyBorrowedForDown: borr[\"MoneyBorrowedForDown\"],\r\n LoanOnAnotherProp:\r\n parseInt(borr[\"LoanOnAnotherProp\"]) === 1 ? \"Y\" : \"N\",\r\n ApplyingNewCredit:\r\n parseInt(borr[\"ApplyingNewCredit\"]) === 1 ? \"Y\" : \"N\",\r\n PropAssCleanEnergy:\r\n parseInt(borr[\"PropAssCleanEnergy\"]) === 1 ? \"Y\" : \"N\",\r\n Co_maker: parseInt(borr[\"Co-maker\"]) === 1 ? \"Y\" : \"N\",\r\n Jugdements: parseInt(borr[\"Jugdements\"]) === 1 ? \"Y\" : \"N\",\r\n Delinquent: parseInt(borr[\"Delinquent\"]) === 1 ? \"Y\" : \"N\",\r\n Lawsuit: parseInt(borr[\"Lawsuit\"]) === 1 ? \"Y\" : \"N\",\r\n ConveyedTitle: parseInt(borr[\"ConveyedTitle\"]) === 1 ? \"Y\" : \"N\",\r\n Obligated: parseInt(borr[\"Obligated\"]) === 1 ? \"Y\" : \"N\",\r\n Forclosed: parseInt(borr[\"Forclosed\"]) === 1 ? \"Y\" : \"N\",\r\n bType1stBuyer: borr[\"bType1stBuyer\"],\r\n CustId: borr[\"CustId\"],\r\n },\r\n ];\r\n // console.log(\"borr\", json);\r\n handleSaveAdditionalInfo(-1, 10, borr[\"CustId\"], null, json);\r\n } else if (DetailsArr_[subPage][\"isAddtionalDemographic\"]) {\r\n let borr = additionalBorrowerInfo[DetailsArr_[subPage][\"index\"]];\r\n\r\n json = [\r\n {\r\n Ethnicity: borr[\"Ethnicity\"] || 0,\r\n RaceIndian: borr[\"RaceIndian\"],\r\n RaceAsian: borr[\"RaceAsian\"],\r\n RaceBlack: borr[\"RaceBlack\"],\r\n RaceHawaiian: borr[\"RaceHawaiian\"],\r\n RaceWhite: borr[\"RaceWhite\"],\r\n InterviewMethod: borr[\"Demographic_Info\"],\r\n HispanicSubcategory: borr[\"HispanicSubcategory\"],\r\n OtherOrigin: borr[\"OtherOrigin\"] || \"\",\r\n PrincipalTribe: borr[\"PrincipalTribe\"] || \"\",\r\n NativeHawaiianSubCategory: borr[\"RaceHawaiian\"] === 1 ? 2 : 0,\r\n OtherPacificIslandRace: borr[\"OtherPacificIslandRace\"] || 0,\r\n AsianRaceSubCategory: borr[\"AsianRaceSubCategory\"] || 0,\r\n OtherAsianRace: borr[\"OtherAsianRace\"],\r\n Sex: borr[\"Sex\"],\r\n CustId: borr[\"CustId\"],\r\n },\r\n ];\r\n handleSaveAdditionalInfo(-1, 13, borr[\"CustId\"], null, json);\r\n } else if (DetailsArr_[subPage][\"isVAMilitary\"]) {\r\n let borr = additionalBorrowerInfo[DetailsArr_[subPage][\"index\"]]; //\r\n\r\n json = [\r\n {\r\n CustId: borr[\"CustId\"],\r\n VAActiveStatus: borr[\"VA_Military_Status\"],\r\n InReserveandActive: borr[\"Reserves_Active\"],\r\n VABranchService: borr[\"Branch_Service\"],\r\n VAMilitaryServiceStatus: borr[\"VAMilitaryServiceStatus\"],\r\n VAEntitlementAmt: borr[\"VA_Entitlmt_Amt\"]\r\n ?.toString()\r\n ?.replaceAll(\"$\", \"\"),\r\n VAEntitlementUsed: borr[\"VA_Entitlmt_Amt_used\"]\r\n ?.toString()\r\n ?.replaceAll(\"$\", \"\"),\r\n VAEntitleCode: borr[\"VA_Entitlmt_Code\"],\r\n VAFirstTimeUse: borr[\"VA_Loan_FTU\"],\r\n ExemptFromFundingFee: borr[\"VA_Funding_Fee\"],\r\n CurActiveDuty: borr[\"Currently_serving\"],\r\n CurRetired: borr[\"Currently_retired\"],\r\n NonActiveMemReserve: borr[\"Active_National_Guard\"],\r\n SurvivingSpouse: borr[\"Surviving_spouse\"],\r\n MilitaryServiceExpectedCompletionDate:\r\n borr[\"MilitaryServiceExpectedCompletionDate\"],\r\n },\r\n ];\r\n handleSaveAdditionalInfo(-1, 14, borr[\"CustId\"], null, json);\r\n } else if (DetailsArr_[subPage][\"isAddCounselling\"]) {\r\n let { index } = DetailsArr_[subPage],\r\n Counselling = additionalCounsellingInfo[index],\r\n { CustId } = additionalBorrowerInfo[index],\r\n iLanguagePreference = Counselling[\"LanguagePreference\"] || \"1\";\r\n\r\n json = [\r\n {\r\n CustId: CustId,\r\n CounselingConfirmationIndicator: Counselling[\"Couns_Confirm\"],\r\n CounselingCompletedDate: Counselling[\"Couns_Comp_Date\"],\r\n CounselingType: Counselling[\"Couns_Type\"],\r\n Couns_FormatType: Counselling[\"Couns_FormatType\"],\r\n Couns_FormatType2: Counselling[\"Couns_FormatType2\"],\r\n CounselingAgencyName: Counselling[\"Couns_Agency_Name\"],\r\n LanguagePreference: iLanguagePreference,\r\n OtherLanguageDescription: Counselling[\"OtherLanguageDescription\"],\r\n },\r\n ];\r\n if (iLanguagePreference == \"1\") {\r\n handleUpdateAddtionalCounsellingInfo({\r\n iLanguagePreference,\r\n index,\r\n });\r\n }\r\n\r\n handleSaveAdditionalInfo(-1, 15, CustId, null, json);\r\n } else {\r\n if (currentPage === pageArray[pageId[\"government\"]]) {\r\n json = json.filter((value, index, self) => {\r\n const foundIndex = self.findIndex(\r\n (obj) =>\r\n obj.ColumnName === value.ColumnName &&\r\n obj.ColumnValue === value.ColumnValue\r\n );\r\n return foundIndex === index;\r\n });\r\n }\r\n\r\n //Exception save peocess for asset details\r\n if (\r\n pageIndex[\"page\"] === pageId[\"bankAccounts\"] &&\r\n pageIndex[\"subPage\"] === 0 &&\r\n additionalBankInfo.length > 0\r\n ) {\r\n let json_ = [\r\n {\r\n AccType: json[0][\"ColumnValue\"],\r\n Bank_Name: json[1][\"ColumnValue\"],\r\n Monthly_Amount: json[2][\"ColumnValue\"],\r\n OwnerIdCust: json[3][\"ColumnValue\"],\r\n AssetId: json[4][\"ColumnValue\"],\r\n },\r\n ];\r\n\r\n handleSaveAdditionalInfo(\r\n -1,\r\n 3,\r\n additionalBankInfo[0]?.CustId || UserId,\r\n null,\r\n json_,\r\n true\r\n );\r\n } else {\r\n handleSaveLoanInformation(json);\r\n }\r\n }\r\n\r\n //Order credit Report\r\n if (\r\n DetailsArr_.length !== 1 &&\r\n currentPage === pageArray[pageId[\"creditScore\"]] &&\r\n Number(LoanData[\"CreditRpt_Auth\"]) === 1 &&\r\n Number(LoanData[\"CreditReport\"]) === 1 &&\r\n Number(LoanData[\"FrozenCredit\"]) === 0 &&\r\n !LoanData[\"creditReportOrdered\"] &&\r\n direction_ === 1 &&\r\n loanOfficerId != 0 &&\r\n // creditScoreDetails?.Status !== 5 &&\r\n DetailsArr_[subPage][\"ColumnName\"] == \"CreditRpt_Auth\"\r\n ) {\r\n handleOrderCreditReport();\r\n DetailsArr_.push({});\r\n setLoanData((prevLoanData) => {\r\n return { ...prevLoanData, creditReportOrdered: true };\r\n });\r\n }\r\n if (currentPage === pageArray[pageId[\"creditScore\"]]) {\r\n if (\r\n LoanData[\"FrozenCredit\"] == 1 &&\r\n ((DetailsArr_[subPage][\"ColumnName\"] == \"FrozenCredit\" &&\r\n direction_ == 1) ||\r\n (DetailsArr_[subPage][\"pageName\"] == \"unFreeze\" &&\r\n direction_ == -1))\r\n ) {\r\n subPage = subPage + direction_;\r\n }\r\n if (\r\n DetailsArr_[subPage][\"ColumnName\"] == \"CreditReport\" &&\r\n LoanData[\"CreditReport\"] === 0 &&\r\n direction_ == 1\r\n ) {\r\n page++;\r\n subPage = -1;\r\n }\r\n }\r\n\r\n //For Creating new Property, when there is no property - click next form 1st page of REO\r\n if (\r\n json.length > 0 &&\r\n json[0][\"ColumnName\"] === \"Real_est_prop\" &&\r\n json[0][\"ColumnValue\"] == 1 &&\r\n direction_ === 1 &&\r\n iFrom !== \"\"\r\n ) {\r\n await handleSaveAdditionalInfo(-1, -4, -2, true);\r\n subPage--;\r\n setTimeout(() => {\r\n setScrollToTop(true);\r\n }, 0);\r\n }\r\n\r\n if (\r\n json.length > 0 &&\r\n json[0][\"ColumnName\"] === \"blAssetOption\" &&\r\n json[0][\"ColumnValue\"] == 1 &&\r\n direction_ === 1 &&\r\n iFrom !== \"\"\r\n ) {\r\n await handleSaveAdditionalInfo(-1, -3, -3, true);\r\n subPage--;\r\n setTimeout(() => {\r\n setScrollToTop(true);\r\n }, 0);\r\n }\r\n\r\n // For Creating new employmnet\r\n if (\r\n json.length > 0 &&\r\n json[0][\"ColumnName\"] === \"currently_employed\" &&\r\n json[0][\"ColumnValue\"] == 1 &&\r\n additionalEmploymentInfo.length === 0 &&\r\n direction_ === 1 &&\r\n iFrom !== \"\"\r\n ) {\r\n await handleSaveAdditionalInfo(-2, -1, -4, true);\r\n subPage--;\r\n setTimeout(() => {\r\n setScrollToTop(true);\r\n }, 0);\r\n }\r\n\r\n if (\r\n (ColumnName === \"Spouse_AddBorrower\" ||\r\n ColumnName === \"iSpouse_AddBorrower\") &&\r\n (ColumnValue === 1 || ColumnValue === 2) &&\r\n direction_ === 1\r\n ) {\r\n setProcessStatus(\"addingBorrower\");\r\n handleSaveAdditionalInfo(-1, 0);\r\n subPage = subPage - 1;\r\n }\r\n subPage = subPage + direction_;\r\n if (\r\n DetailsArr_[subPage]?.isAdditionalIncome &&\r\n iFrom === \"isAdditionalIncome\"\r\n )\r\n subPage = subPage + 1;\r\n\r\n if (subPage === DetailsArr_.length || subPage < 0) {\r\n if (direction_ === 1) {\r\n if (pageId[\"government\"] == page) {\r\n setDocumentUploadFlag((prevDocumentUploadFlag) => {\r\n return {\r\n ...prevDocumentUploadFlag,\r\n headerText: `You have now completed the loan application. Thank you!\\n\\nYour loan officer will now reach out to you. In the meantime, you can upload your loan documents below.`,\r\n };\r\n });\r\n }\r\n\r\n if (currentPage === pageArray[pageId[\"borrowerVerification\"]]) {\r\n if (LoanData[\"LinkBankAccount\"] === 1 && !LoanData[\"viewPlaid\"]) {\r\n subPage--;\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n viewPlaid: true,\r\n }));\r\n } else {\r\n page++;\r\n }\r\n } else {\r\n page++;\r\n }\r\n } else {\r\n if (\r\n currentPage === pageArray[pageId[\"borrowerVerification\"]] &&\r\n LoanData[\"LinkBankAccount\"] === 1 &&\r\n LoanData[\"viewPlaid\"]\r\n ) {\r\n subPage = 0;\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n viewPlaid: false,\r\n }));\r\n } else {\r\n page--;\r\n }\r\n }\r\n\r\n // isChangePage && setCurrentPage(pageArray[page]);\r\n let arr = handlePageDetails(pageArray[page])[\"iDetailsArr\"];\r\n\r\n subPage = subPage < 0 ? arr.slice(1).length - 1 : 0;\r\n setDetailsArr(arr);\r\n }\r\n if (page < 0) page = 0;\r\n if (subPage < 0) subPage = 0;\r\n\r\n if (page === pageArray.length && subPage === 0) {\r\n //check this every new page\r\n subPage = 0;\r\n page = 0;\r\n isChangePage && setCurrentPage(pageArray[page]);\r\n let arr = handlePageDetails(pageArray[page])[\"iDetailsArr\"];\r\n subPage = subPage < 0 ? arr.slice(1).length - 1 : 0;\r\n setDetailsArr(arr);\r\n }\r\n\r\n if (\r\n ![\r\n \"borrowerVerification\",\r\n \"realEstateOwned\",\r\n \"creditScore\",\r\n \"employment\",\r\n ].includes(currentPage)\r\n ) {\r\n if (subPage === DetailsArr_.length || subPage < 0) {\r\n if (direction_ === 1) page++;\r\n else page--;\r\n isChangePage && setCurrentPage(pageArray[page]);\r\n let arr = handlePageDetails(pageArray[page])[\"iDetailsArr\"];\r\n subPage = subPage < 0 ? arr.slice(1).length - 1 : 0;\r\n setDetailsArr(arr);\r\n }\r\n }\r\n }\r\n\r\n let page_ = { page: page, subPage: subPage };\r\n\r\n if (\r\n currentPage === pageArray[pageId[\"borrowerVerification\"]] &&\r\n LoanData[\"LinkBankAccount\"] == 2 &&\r\n !mainPage\r\n ) {\r\n if (direction_ == 1 && additionalBankInfo.length == 0) {\r\n await handleSaveAdditionalInfo(-1, -3, -3, \"pointLast\");\r\n } else {\r\n isChangePage && handleCheckNextPage(page_);\r\n }\r\n } else {\r\n isChangePage && handleCheckNextPage(page_);\r\n }\r\n } else if (DetailsArr_.length == 0) {\r\n if (direction_ === 1) page++;\r\n else page--;\r\n pageArray[page] && setCurrentPage(pageArray[page]);\r\n let page_ = { page: page, subPage: 0 };\r\n\r\n (page !== pageArray.length || isChangePage) && handleCheckNextPage(page_);\r\n }\r\n };\r\n const handleOptionPress = (value, isSubField, index, exception, iExp) => {\r\n let DetailsArr_ = DetailsArr.slice(1);\r\n if (\r\n value !== \"\" &&\r\n exception !== \"AssetCustId\" &&\r\n exception !== \"REOCustId\"\r\n ) {\r\n if (\r\n [\"numeric\", \"float\"].includes(\r\n DetailsArr_[pageIndex[\"subPage\"]]?.[\"subFields\"]?.[index]?.[\"type\"]\r\n )\r\n )\r\n value = cleanValue(value);\r\n }\r\n if (iExp === \"CellPhone\") {\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n CellPhone: `*5*${value}` || \"\",\r\n }));\r\n } else if (iExp === \"CurrentlyEmployed\") {\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n ...(value === 1\r\n ? {\r\n currently_employed: 1,\r\n Retired: 0,\r\n Not_CurrentlyEmployed: 0,\r\n }\r\n : value === 2\r\n ? {\r\n currently_employed: 0,\r\n Retired: 1,\r\n Not_CurrentlyEmployed: 0,\r\n }\r\n : value === 3\r\n ? {\r\n currently_employed: 0,\r\n Retired: 0,\r\n Not_CurrentlyEmployed: 1,\r\n }\r\n : {}),\r\n }));\r\n } else if (iExp) {\r\n if (iExp === -1) iExp = \"\";\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n ...(value === 1\r\n ? {\r\n [`Own${iExp}`]: true,\r\n [`Rent${iExp}`]: false,\r\n [`Living_Rent_Free${iExp}`]: false,\r\n }\r\n : value === 2\r\n ? {\r\n [`Own${iExp}`]: false,\r\n [`Rent${iExp}`]: true,\r\n [`Living_Rent_Free${iExp}`]: false,\r\n }\r\n : value === 3\r\n ? {\r\n [`Own${iExp}`]: false,\r\n [`Rent${iExp}`]: false,\r\n [`Living_Rent_Free${iExp}`]: true,\r\n }\r\n : {}),\r\n }));\r\n } else if (exception !== undefined && exception !== null) {\r\n // if (exception === \"LanguagePreference\") {\r\n // let val = (LoanData[exception] || \"\")\r\n // .split(\",\")\r\n // .filter((e) => e !== \"\")\r\n // .map((e) => parseInt(e));\r\n // if (val.includes(value)) {\r\n // val = val.filter((selectedItem) => selectedItem != value);\r\n // } else {\r\n // val = [...val, value];\r\n // }\r\n // value = [...new Set(val)];\r\n // value = val.join(\",\");\r\n // } else\r\n if (exception === \"MaritalStatus\") {\r\n handleMaritalStatusChange({\r\n changedId: Number(value),\r\n isPrimary: true,\r\n });\r\n } else if (currentPage === pageArray[pageId[\"government\"]]) {\r\n let obj = DetailsArr_[pageIndex[\"subPage\"]][\"subFields\"].filter(\r\n (field) => {\r\n return field[\"ColumnName\"] === exception;\r\n }\r\n );\r\n if (obj.length === 1) obj = obj[0];\r\n else {\r\n obj = obj.filter((obj_) => obj_[\"Options\"][0][\"value\"] === value)[0];\r\n }\r\n\r\n let val = LoanData[exception];\r\n if (obj[\"isBitWise\"] && obj[\"resetBitWise\"] !== value) {\r\n if ((value & val) === value) value = val - value;\r\n else value = val + value;\r\n if ((obj[\"resetBitWise\"] & val) === obj[\"resetBitWise\"])\r\n value = value - obj[\"resetBitWise\"];\r\n } else if (obj[\"resetBitWise\"] == value && (value & val) === value) {\r\n value = val - value;\r\n } else if (value === obj[\"ColumnValue\"]) value = null;\r\n }\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n ...{ [exception]: value },\r\n }));\r\n } else if (isSubField) {\r\n let ColumnName =\r\n DetailsArr_[pageIndex[\"subPage\"]][\"subFields\"][index][\"ColumnName\"];\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n [ColumnName]: value,\r\n }));\r\n if ([\"FirstName\", \"LastName\"].includes(ColumnName)) {\r\n handleUpdateAddtionalBorrower(-1, ColumnName, value);\r\n } else if (ColumnName === \"EmailId\") {\r\n handleUpdateAddtionalBorrower(-1, \"Email\", value);\r\n }\r\n } else {\r\n if (\r\n value === DetailsArr_[pageIndex[\"subPage\"]][\"ColumnValue\"] &&\r\n currentPage !== pageArray[pageId[\"borrowerVerification\"]]\r\n ) {\r\n value = null;\r\n }\r\n if (\r\n pageIndex[\"page\"] == 0 &&\r\n pageIndex[\"subPage\"] == 0 &&\r\n loanId == \"-999\"\r\n ) {\r\n setInCompletedSubPage(value == 1 ? [4] : value == 2 ? [3] : []);\r\n }\r\n\r\n const { ColumnName: iColumnName } = DetailsArr_[pageIndex[\"subPage\"]];\r\n\r\n if (iColumnName === \"LoanPurpose\" && ![1, 2].includes(value)) {\r\n value = 1;\r\n }\r\n\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n [iColumnName]: value,\r\n }));\r\n }\r\n };\r\n const handleResetPlaidDetails = (value) => {\r\n let BankAccountLinked = 0,\r\n LinkBankAccount = 0;\r\n setLoanData((prevLoanData) => {\r\n LinkBankAccount = prevLoanData[\"prevLinkBankAccount\"] || 0;\r\n BankAccountLinked = prevLoanData[\"prevBankAccountLinked\"] || 0;\r\n return {\r\n ...prevLoanData,\r\n LinkBankAccount: value == undefined ? LinkBankAccount : value,\r\n BankAccountLinked: BankAccountLinked,\r\n };\r\n });\r\n let json = [\r\n {\r\n ColumnName: \"LinkBankAccount\",\r\n ColumnValue: LinkBankAccount,\r\n },\r\n {\r\n ColumnName: \"BankAccountLinked\",\r\n ColumnValue: BankAccountLinked,\r\n },\r\n ];\r\n handleSaveLoanInformation(json);\r\n };\r\n const handleSaveLoanInformation = async (\r\n json,\r\n iLoanId,\r\n isSaveMaritalStatus = true,\r\n callBack = () => {}\r\n ) => {\r\n json = json.filter(\r\n (item) =>\r\n ![\r\n \"loanOfficers\",\r\n \"iSpouse_AddBorrower\",\r\n \"blOtherIncome\",\r\n \"subjectAddress\",\r\n \"subjectCity\",\r\n \"subjectState\",\r\n \"subjectZip\",\r\n ].includes(item[\"ColumnName\"])\r\n );\r\n\r\n json = json.filter((item) => !item[\"ColumnName\"].includes(\"blEmployment\"));\r\n\r\n const borrowerEmailId = json.filter((item) =>\r\n item[\"ColumnName\"].includes(\"EmailId\")\r\n );\r\n\r\n const iJson = json,\r\n maritalStatus = json.filter((item) =>\r\n item[\"ColumnName\"].includes(\"MaritalStatus\")\r\n );\r\n\r\n if (maritalStatus.length) {\r\n const { ColumnValue } = maritalStatus[0];\r\n iJson.push({\r\n ColumnName: \"SpouseCustID\",\r\n ColumnValue: ColumnValue > 10 ? ColumnValue : 0,\r\n });\r\n\r\n json = iJson;\r\n }\r\n\r\n if (borrowerEmailId?.length) {\r\n handleDuplicateEmail(borrowerEmailId[0][\"ColumnValue\"], 0);\r\n }\r\n if (LoanData[\"maritalStatusChangesIndex\"]?.length && isSaveMaritalStatus) {\r\n LoanData[\"maritalStatusChangesIndex\"].forEach((value) => {\r\n handleSaveAdditionalInfo(\r\n value,\r\n 11,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n null,\r\n false\r\n );\r\n });\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n isMaritalStatusChanged: false,\r\n maritalStatusChangesIndex: [],\r\n };\r\n });\r\n }\r\n if (\r\n json.length > 0 &&\r\n json[0][\"ColumnName\"] === \"LinkBankAccount\" &&\r\n json.length === 1\r\n ) {\r\n if (json[0][\"ColumnValue\"] == 2 || !json[0][\"ColumnValue\"]) {\r\n let iLoanData = { ...LoanData, BankAccountLinked: 0 };\r\n if (!json[0][\"ColumnValue\"]) {\r\n iLoanData = { ...LoanData, LinkBankAccount: 2 };\r\n json[0][\"ColumnValue\"] = 2;\r\n }\r\n setLoanData(iLoanData);\r\n json.push({\r\n ColumnName: \"BankAccountLinked\",\r\n ColumnValue: 0,\r\n });\r\n } else if (\r\n LoanData[\"LinkBankAccount\"] == 1 &&\r\n LoanData[\"BankAccountLinked\"] == 0\r\n ) {\r\n handleResetPlaidDetails(1);\r\n }\r\n }\r\n\r\n let inputJSON = JSON.stringify(json);\r\n\r\n console.log(\"SaveLoanAppWizard\", json);\r\n // return;\r\n if (\r\n (iLoanId || loanId) > 0 &&\r\n json.length > 0 &&\r\n LoanData[\"LockLoanApp\"] != 1\r\n ) {\r\n handleAPI({\r\n name: \"SaveLoanAppWizardNew\",\r\n params: {\r\n SessionId,\r\n LoanId: iLoanId || loanId,\r\n inputJSON,\r\n UserId: additionalBorrowerInfo[0]?.[\"CustId\"] || UserId,\r\n },\r\n })\r\n .then((res) => {\r\n callBack();\r\n // let res = JSON.parse(response)[\"Table1\"][0][\"Column1\"];\r\n // console.log(JSON.parse(response));\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from SaveLoanAppWizard ====> \", err)\r\n );\r\n } else {\r\n callBack();\r\n }\r\n };\r\n const handleCalculateLoanAmt = ({\r\n iPurPrice,\r\n iDownPayment,\r\n iDownPaymentPercent,\r\n iEstLoanAmt,\r\n }) => {\r\n const {\r\n Purchase_Estm_Pur_Price,\r\n DownPayment,\r\n DownPaymentPercent,\r\n Purchase_Estm_LnAmt,\r\n } = LoanData;\r\n\r\n const purPrice = cleanValue(iPurPrice || Purchase_Estm_Pur_Price),\r\n downPayment = cleanValue(iDownPayment || DownPayment),\r\n downPaymentPercent = cleanValue(\r\n iDownPaymentPercent || DownPaymentPercent\r\n ),\r\n estLoanAmt = cleanValue(iEstLoanAmt || Purchase_Estm_LnAmt);\r\n\r\n const nDownPayment = purPrice * (downPaymentPercent / 100),\r\n nDownPaymentPercent = (purPrice / nDownPayment) * 100,\r\n nEstLoanAmt = purPrice - nDownPayment;\r\n\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n Purchase_Estm_Pur_Price: formatCurrency(purPrice),\r\n DownPayment: formatCurrency(nDownPayment),\r\n DownPaymentPercent: nDownPaymentPercent,\r\n Purchase_Estm_LnAmt: formatCurrency(nEstLoanAmt),\r\n };\r\n });\r\n };\r\n const handleCalculateDownPaymentPer = (DownPayment_, Purchase_Estm_LnAmt) => {\r\n try {\r\n if (Number(LoanData[\"LoanPurpose\"]) === 1) {\r\n let AppVal = cleanValue(LoanData[\"Purchase_Estm_Pur_Price\"]),\r\n lnAmtTxt = cleanValue(\r\n Purchase_Estm_LnAmt === 0\r\n ? \"\"\r\n : Purchase_Estm_LnAmt || LoanData[\"Purchase_Estm_LnAmt\"]\r\n );\r\n let DownPayment =\r\n DownPayment_ !== undefined\r\n ? DownPayment_\r\n : parseFloat(lnAmtTxt) <= 0\r\n ? 0\r\n : parseFloat(AppVal) - parseFloat(lnAmtTxt),\r\n DownPay = cleanValue(DownPayment),\r\n DownPaymentPercent = roundNumber(\r\n (parseFloat(DownPay) / parseFloat(AppVal)) * 100,\r\n 2\r\n );\r\n if (parseFloat(lnAmtTxt) <= 0) {\r\n lnAmtTxt = parseFloat(AppVal);\r\n }\r\n\r\n if (isNaN(DownPaymentPercent)) DownPaymentPercent = \"0.00\";\r\n if (cleanValue(AppVal) == 0) {\r\n DownPayment = 0;\r\n DownPaymentPercent = 0;\r\n lnAmtTxt = 0;\r\n }\r\n\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n ...{\r\n Purchase_Estm_Pur_Price: formatCurrency(AppVal, 2),\r\n DownPayment: formatCurrency(DownPayment, 2),\r\n DownPaymentPercent: DownPaymentPercent,\r\n Purchase_Estm_LnAmt: formatCurrency(\r\n parseFloat(lnAmtTxt)?.toFixed(2),\r\n 2\r\n ),\r\n },\r\n }));\r\n }\r\n } catch (ex) {\r\n console.error(\"Error form handleCalculateDownPaymentPer ===> \", ex);\r\n }\r\n };\r\n const CalculateDownPayment = () => {\r\n try {\r\n if (Number(LoanData[\"LoanPurpose\"]) === 1) {\r\n let AppVal = cleanValue(LoanData[\"Purchase_Estm_Pur_Price\"]),\r\n DownPayPer = cleanValue(LoanData[\"DownPaymentPercent\"]),\r\n DownPayment = cleanValue(LoanData[\"DownPayment\"]);\r\n\r\n if (isNaN(DownPayPer) || DownPayPer < 0) {\r\n return;\r\n } else {\r\n DownPayment = roundNumber(\r\n (parseFloat(DownPayPer) / 100) * parseFloat(AppVal),\r\n 2\r\n );\r\n }\r\n let DownPay = cleanValue(DownPayment);\r\n let Purchase_Estm_LnAmt = parseFloat(AppVal) - parseFloat(DownPay),\r\n AppVal_ = cleanValue(LoanData[\"Purchase_Estm_Pur_Price\"]),\r\n lnAmtTxt = cleanValue(Purchase_Estm_LnAmt),\r\n DownPay_ = cleanValue(DownPayment),\r\n DownPaymentPercent = roundNumber(\r\n (parseFloat(DownPay_) / parseFloat(AppVal_)) * 100,\r\n 2\r\n );\r\n if (isNaN(DownPaymentPercent)) DownPaymentPercent = \"0.00\";\r\n\r\n let LnAmountExc = Math.floor(cleanValue(lnAmtTxt));\r\n\r\n AppVal = cleanValue(AppVal);\r\n DownPayment = parseFloat(AppVal) - parseFloat(cleanValue(LnAmountExc));\r\n\r\n handleCalculateDownPaymentPer(DownPayment, Purchase_Estm_LnAmt);\r\n }\r\n } catch (ex) {\r\n console.error(\"Error form CalculateDownPayment ====> \", ex);\r\n }\r\n };\r\n const LnAmtExcChange = () => {\r\n if (Number(LoanData[\"LoanPurpose\"]) === 1) {\r\n let AppVal = LoanData[\"Purchase_Estm_Pur_Price\"],\r\n LnAmountExc = Math.floor(cleanValue(LoanData[\"Purchase_Estm_LnAmt\"]));\r\n\r\n AppVal = cleanValue(AppVal);\r\n let DownPayment =\r\n parseFloat(AppVal) - parseFloat(cleanValue(LnAmountExc));\r\n\r\n handleCalculateDownPaymentPer(DownPayment);\r\n }\r\n };\r\n\r\n const DownPmtOnChange = () => {\r\n try {\r\n if (Number(LoanData[\"LoanPurpose\"]) === 1) {\r\n let AppVal = cleanValue(LoanData[\"Purchase_Estm_Pur_Price\"]),\r\n DownPay = cleanValue(LoanData[\"DownPayment\"]);\r\n let Purchase_Estm_LnAmt = parseFloat(AppVal) - parseFloat(DownPay),\r\n AppVal_ = cleanValue(LoanData[\"Purchase_Estm_Pur_Price\"]),\r\n lnAmtTxt = cleanValue(Purchase_Estm_LnAmt),\r\n DownPayment = parseFloat(AppVal_) - parseFloat(lnAmtTxt),\r\n DownPay_ = cleanValue(DownPayment),\r\n DownPaymentPercent = roundNumber(\r\n (parseFloat(DownPay_) / parseFloat(AppVal_)) * 100,\r\n 2\r\n );\r\n\r\n if (isNaN(DownPaymentPercent)) DownPaymentPercent = \"0.00\";\r\n setLoanData({\r\n ...LoanData,\r\n ...{\r\n DownPayment: formatCurrency(DownPayment, 2),\r\n DownPaymentPercent: DownPaymentPercent,\r\n Purchase_Estm_LnAmt: formatCurrency(Purchase_Estm_LnAmt, 2),\r\n },\r\n });\r\n }\r\n } catch (error) {\r\n console.error(\"Error form DownPmtOnChange ===> \", error);\r\n }\r\n };\r\n const CalculateLnAmt = (ColumnName) => {\r\n let LoanAmtRemaining = LoanData[\"PaidOff\"],\r\n CashAmt = LoanData[\"CashOutAmount\"];\r\n LoanAmtRemaining = cleanValue(LoanAmtRemaining);\r\n\r\n CashAmt = cleanValue(CashAmt);\r\n if (\r\n LoanAmtRemaining == \"\" ||\r\n LoanAmtRemaining == null ||\r\n LoanAmtRemaining == undefined\r\n )\r\n LoanAmtRemaining = 0;\r\n if (CashAmt == \"\" || CashAmt == null || CashAmt == undefined) CashAmt = 0;\r\n let LnAmt = 0;\r\n if (LoanData[\"Pri_purpose_Refi\"] === 2) {\r\n if (ColumnName === \"Refi_Estmt_LnAmt\") {\r\n let LoanAmt = LoanData[ColumnName];\r\n LoanAmt = cleanValue(LoanAmt);\r\n if (LoanAmt == \"\" || LoanAmt == null || LoanAmt == undefined)\r\n LoanAmt = 0;\r\n\r\n CashAmt = parseFloat(LoanAmt) - parseFloat(LoanAmtRemaining);\r\n }\r\n LnAmt = parseFloat(LoanAmtRemaining) + parseFloat(CashAmt);\r\n setLoanData({\r\n ...LoanData,\r\n ...{\r\n CashOutAmount: formatCurrency(CashAmt, 2),\r\n Refi_Estmt_LnAmt: formatCurrency(LnAmt, 2),\r\n PaidOff: formatCurrency(LoanData[\"PaidOff\"], 2),\r\n },\r\n });\r\n } else {\r\n setLoanData({\r\n ...LoanData,\r\n ...{\r\n CashOutAmount: formatCurrency(LoanData[\"CashOutAmount\"], 2),\r\n Refi_Estmt_LnAmt: formatCurrency(LoanData[\"Refi_Estmt_LnAmt\"], 2),\r\n PaidOff: formatCurrency(LoanData[\"PaidOff\"], 2),\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleStoreCampaignDetails = async (iLoanData) => {\r\n try {\r\n let OrgUrl = web ? window.top.document.location.href : `Loan Application`,\r\n UserDetails = await handleUserDetails(SessionId),\r\n CampaignDetails = JSON.parse(\r\n (await AsyncStorage.getItem(\"CampaignDetails\")) || null\r\n ),\r\n iCampignId = 202,\r\n // iCampaign = `Loan Application${!web && `-${ios ? `iOS` : `Android`}`}`,\r\n iCampaign = `Loan Application`,\r\n iCampignNum = 14,\r\n WebLoginId;\r\n UserDetails = UserDetails.split(\"~\");\r\n\r\n if (!WebLoginId) WebLoginId = UserDetails[6];\r\n\r\n if (OrgUrl) OrgUrl = \"\";\r\n if (CampaignDetails && WebLoginId == CampaignDetails[\"WebLoginId\"]) {\r\n let { CampignId, utm_campaign, CampignNum } = CampaignDetails;\r\n iCampignId = CampignId;\r\n iCampaign = utm_campaign;\r\n iCampignNum = CampignNum;\r\n AsyncStorage.removeItem(\"CampaignDetails\");\r\n }\r\n await handleAPI({\r\n name: \"StoreUTMCampaignWithOutLoginId\",\r\n params: {\r\n CampignId: iCampignId,\r\n WebLoginId: WebLoginId,\r\n utmsource: \"Direct Mortgage\",\r\n utmmedium: \"Internal\",\r\n utmcampaign: iCampaign,\r\n utmcontent: \"\",\r\n utmterm: \"\",\r\n OrgUrl: OrgUrl,\r\n MsgText: \"\",\r\n Email: iLoanData[\"EmailId\"],\r\n Phone: handleGetCellPhone(iLoanData[\"CellPhone\"]),\r\n CampignNum: iCampignNum,\r\n LeadOfficer: loanOfficerId || loanOfficers || 1,\r\n },\r\n }).then((response) => {\r\n console.log(\"StoreUTMCampaignWithOutLoginId\", response);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n\r\n const handleActiveTab = (index) => {\r\n if (contextDetails[\"appDownloadFlag\"]) {\r\n setContextDetails((prevContextDetails) => {\r\n prevContextDetails[\"appDownloadFlag\"] = false;\r\n return { ...prevContextDetails };\r\n });\r\n } else {\r\n index = index - 1;\r\n if (contextDetails.loanId == -99) index = 10;\r\n\r\n if (index !== pageIndex[\"page\"]) {\r\n handleNavigation(1, \"\", false, index);\r\n if (pageArray[index] == \"documentUpload\") {\r\n setDocumentUploadFlag((prevDocumentUploadFlag) => {\r\n return {\r\n ...prevDocumentUploadFlag,\r\n headerText: null,\r\n };\r\n });\r\n }\r\n }\r\n pageArray[index] && setCurrentPage(pageArray[index]);\r\n\r\n let { iSubPage, iInCompletedSubPage } = handleGetPageNumber(true, index),\r\n page_ = {\r\n page: index,\r\n subPage: iSubPage < 0 ? 0 : iSubPage || 0,\r\n };\r\n\r\n setPageIndex({ ...page_ });\r\n setInCompletedSubPage(iInCompletedSubPage);\r\n setInCompletedSubPageObj((prevInCompletedSubPageObj) => {\r\n prevInCompletedSubPageObj[pageArray[index]] = iInCompletedSubPage;\r\n return { ...prevInCompletedSubPageObj };\r\n });\r\n }\r\n };\r\n const handleNavigateSubPage = async (page, subMenuIndex) => {\r\n if (contextDetails[\"appDownloadFlag\"]) {\r\n setContextDetails((prevContextDetails) => {\r\n prevContextDetails[\"appDownloadFlag\"] = false;\r\n return { ...prevContextDetails };\r\n });\r\n } else {\r\n (page !== pageIndex[\"page\"] || subMenuIndex !== pageIndex[\"subPage\"]) &&\r\n handleNavigation(1, \"\", false);\r\n if (\r\n page === pageId[\"bankAccounts\"] &&\r\n subMenuIndex === 0 &&\r\n (additionalBankInfo || []).length == 0 &&\r\n LoanData[\"LockLoanApp\"] == 0\r\n ) {\r\n await handleSaveAdditionalInfo(-1, -3, -3, true);\r\n setLoanData((prevLoanData) => {\r\n return { ...prevLoanData, blAssetOption: 1 };\r\n });\r\n } else if (page === pageId[\"creditScore\"]) {\r\n let iLoandata = LoanData,\r\n hasReport =\r\n creditScoreDetails?.Status === 5 ||\r\n creditScoreDetails?.Details[0]?.iFinalScanDocID;\r\n\r\n let CreditReportIndex = hasReport ? [2, 3, 4, 5] : [1, 2, 3, 4];\r\n let FrozenCreditIndex = hasReport ? [3, 4, 5] : [2, 3, 4];\r\n\r\n if (CreditReportIndex.includes(subMenuIndex)) {\r\n iLoandata[\"CreditReport\"] = 1;\r\n }\r\n if (\r\n FrozenCreditIndex.includes(subMenuIndex) &&\r\n (!LoanData[\"FrozenCredit\"] ||\r\n LoanData[\"FrozenCredit\"] === 0 ||\r\n subMenuIndex === (hasReport ? 3 : 2))\r\n ) {\r\n iLoandata[\"FrozenCredit\"] = 0;\r\n }\r\n\r\n // if (\r\n // page === pageId[\"creditScore\"] &&\r\n // LoanData[\"FrozenCredit\"] === 1 &&\r\n // subMenuIndex === (hasReport ? 4 : 3)\r\n // ) {\r\n // subMenuIndex--;\r\n // }\r\n }\r\n\r\n setPageIndex({ page: page, subPage: subMenuIndex });\r\n pageArray[page] && setCurrentPage(pageArray[page]);\r\n setScrollToTop(true);\r\n }\r\n };\r\n //=======================================================================================\r\n let isSmallScreen =\r\n (web && screenSize[0] > 900) || Dimensions.get(\"window\").width > 900,\r\n isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n\r\n const scrollY = useRef(new Animated.Value(0)).current;\r\n\r\n const [iTopEdge, setTopEdge] = useState({});\r\n let topEdge = web\r\n ? 0\r\n : iTopEdge[\"contentY\"] -\r\n (iTopEdge[\"contentWrapperHeight\"] - iTopEdge[\"contentHeight\"]) || 0,\r\n inputRange = [topEdge - 3, topEdge - 2, topEdge - 1, topEdge, topEdge + 1];\r\n\r\n const getNavBarProps = () => {\r\n return {\r\n currentPage: currentPage,\r\n activePage: activePageArray[pageIndex[\"page\"] || 0],\r\n isEsignOnly: contextDetails.loanId == -99,\r\n navigation: navigation || props[\"navigation\"],\r\n handleNavigateSubPage: handleNavigateSubPage,\r\n excludePageIds: excludePageIndex[\"Ids\"] || [],\r\n handleLogOut: handleLogOut,\r\n completedPage: completedPage,\r\n handleClearState: handleClearState,\r\n handleActiveTab: handleActiveTab,\r\n isHome: true,\r\n activePageArray: activePageArray,\r\n pageId,\r\n inCompleteTabIndex: inCompletedSubPage,\r\n inCompletedSubPageObj: inCompletedSubPageObj,\r\n progressPercentage: progressPercentage,\r\n loanId: loanId || iLoanId,\r\n preventNavigation: false, //![1, 2].includes(LoanData[\"LoanPurpose\"]),\r\n additionalAddressHistoryList: handleGetAddressHistoryList() || [],\r\n additionalBorrowerList: additionalBorrowerInfo.map((borrower, index) => {\r\n return {\r\n Name:\r\n borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"]} ${borrower[\"LastName\"]}`\r\n : `borrower ${index + 1}`,\r\n };\r\n }),\r\n additionalEmploymentList: [\r\n { Name: \"Employment History\" },\r\n ...(Number(LoanData[\"currently_employed\"]) === 1\r\n ? handleGetEmpploymentList()\r\n : [\r\n { Name: \"Other Income\" },\r\n ...(LoanData[\"IsOtherIncome\"]\r\n ? additionalOtherIncomeInfo.map((income, index) => {\r\n return { Name: `Other Income ${index + 2}` };\r\n })\r\n : []),\r\n { Name: \"Additional Other Income\" },\r\n ]),\r\n ...[{ Name: \"Alimony or Child Support\" }],\r\n ],\r\n additionalBankList: [\r\n ...additionalBankInfo.map((bank, index) => {\r\n let { BankName, AccTypeName, OtherAccType, Description, AccType } =\r\n bank;\r\n BankName =\r\n AccType == \"-1\" && [12, 33, 22, 4].includes(Number(OtherAccType))\r\n ? Description\r\n : BankName;\r\n let empRow = additionalBorrowerInfo.filter(\r\n (borrower) =>\r\n Number(borrower[\"CustId\"]) === Number(bank[\"OwnerIdList\"])\r\n );\r\n if (empRow.length > 0) empRow = empRow[0];\r\n return {\r\n Name: BankName\r\n ? BankName\r\n : `Bank ${index + 1}` +\r\n (AccType > 0 ? (AccTypeName ? \" - \" + AccTypeName : \"\") : \"\"),\r\n };\r\n }),\r\n {\r\n Name: \"Additional Bank\",\r\n },\r\n ],\r\n realEstateList: [\r\n ...additionalPropertyInfo.map((property, index) => {\r\n return {\r\n Name: property[\"Real_est_prop_Addrs\"] || `Properties ${index + 1}`,\r\n };\r\n }),\r\n { Name: \"Additional Properties\" },\r\n ],\r\n summaryInfoList: [\r\n { Name: \"Loan Purpose\" },\r\n ...(LoanData[\"LoanPurpose\"] === 1\r\n ? [\r\n { Name: \"Purchase Status\" }, //\r\n { Name: \"Purchase Status 2\" },\r\n ]\r\n : LoanData[\"LoanPurpose\"] === 2\r\n ? [{ Name: \"Refinance Purpose\" }]\r\n : []),\r\n { Name: \"Who Referred\" },\r\n { Name: \"Loan Officers\" },\r\n { Name: \"Property Information\" },\r\n ...(LoanData[\"LoanPurpose\"] === 2 ? [{ Name: \"Primary Purpose\" }] : []),\r\n { Name: \"Loan Amount\" },\r\n ],\r\n creditPageList: [\r\n ...(creditScoreDetails?.Status === 5 ||\r\n creditScoreDetails?.Details[0]?.iFinalScanDocID\r\n ? [{ Name: \"View Credit Report\" }]\r\n : []),\r\n ...[\r\n { Name: \"Order Report\" },\r\n { Name: \"Frozen Credit Report\" },\r\n { Name: \"Social Security Number\" },\r\n ...(LoanData[\"FrozenCredit\"] === 1\r\n ? [{ Name: \"Unfreeze Your Account\" }]\r\n : [{ Name: \"Credit Authorization\" }]),\r\n ],\r\n\r\n ...(LoanData[\"creditReportOrdered\"] ||\r\n creditScoreDetails?.Status === 5 ||\r\n creditScoreDetails?.Details[0]?.iFinalScanDocID\r\n ? [{ Name: \"Credit Report Ordered\" }]\r\n : []),\r\n ],\r\n pageIndex: pageIndex,\r\n isLoaded: LoanData[\"isLoaded\"],\r\n };\r\n };\r\n\r\n const handleGetEmpploymentList = (iAdditionalEmploymentInfo) => {\r\n let list = groupByKey(\r\n handleEmploymentOrder(\r\n iAdditionalEmploymentInfo || additionalEmploymentInfo\r\n ).map((employment, index) => {\r\n let empRow = additionalBorrowerInfo.filter(\r\n (borrower) =>\r\n Number(borrower[\"CustId\"]) === Number(employment[\"CustId\"])\r\n );\r\n if (empRow.length > 0) empRow = empRow[0];\r\n return {\r\n Name:\r\n empRow[\"FirstName\"] || empRow[\"LastName\"]\r\n ? `${empRow[\"FirstName\"]} ${empRow[\"LastName\"]}`\r\n : `Employment ${index + 1}`,\r\n CustId: employment[\"CustId\"],\r\n subName:\r\n `${employment[\"Empmt_Emp_Name\"]} ${employment[\"Job_Title\"]}`.trim() ||\r\n `Employment ${index + 1}`,\r\n Id: employment[\"Id\"],\r\n };\r\n }),\r\n \"Name\"\r\n )\r\n .map(function (item) {\r\n item[\"subMenu\"]?.push({ Name: \"Additional Employment\" });\r\n return item;\r\n })\r\n .flat();\r\n\r\n return list;\r\n };\r\n\r\n const handleGetAddressHistoryList = () => {\r\n let list = [],\r\n subMenu = [];\r\n\r\n let totalMonthCount = handleGetMonthCount(\r\n parseInt(LoanData[\"Addrshistry_Months\"] || 0) || 0,\r\n parseInt(LoanData[\"Addrshistry_Years\"] || 0) || 0\r\n );\r\n subMenu.push({ Name: \"Present Address\" });\r\n for (let i = 0; i < 4; i++) {\r\n if (totalMonthCount < 24) {\r\n totalMonthCount += handleGetMonthCount(\r\n parseInt(LoanData[`Addrshistry_Months${i}`] || 0) || 0,\r\n parseInt(LoanData[`Addrshistry_Years${i}`] || 0) || 0\r\n );\r\n i = i === 0 ? \"\" : i;\r\n if (i !== \"\") subMenu.push({ Name: \"Previous Address \" + i });\r\n }\r\n }\r\n list.push({\r\n Name:\r\n LoanData[\"FirstName\"] || LoanData[\"LastName\"]\r\n ? `${LoanData[\"FirstName\"]} ${LoanData[\"LastName\"]}`\r\n : `borrower 1`,\r\n\r\n subMenu,\r\n });\r\n\r\n subMenu = [];\r\n\r\n list.push(\r\n ...additionalBorrowerInfo.slice(1).map((borrower, index) => {\r\n subMenu = [{ Name: \"Present Address\" }];\r\n totalMonthCount = handleGetMonthCount(\r\n parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Months\") || 0\r\n ) || 0,\r\n parseInt(\r\n handleGetBorrYearMonth(borrower[\"Bor Own Period\"], \"Years\") || 0\r\n ) || 0\r\n );\r\n\r\n if (totalMonthCount < 24) {\r\n for (let i = 1; i < 4; i++) {\r\n if (totalMonthCount < 24) {\r\n totalMonthCount += handleGetMonthCount(\r\n parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Months\"\r\n ) || 0\r\n ) || 0,\r\n parseInt(\r\n handleGetBorrYearMonth(\r\n borrower[`Bor For Add${i} Yrs`],\r\n \"Years\"\r\n ) || 0\r\n ) || 0\r\n );\r\n\r\n subMenu.push({ Name: \"Previous Address \" + i });\r\n }\r\n }\r\n }\r\n return {\r\n Name:\r\n borrower[\"FirstName\"] || borrower[\"LastName\"]\r\n ? `${borrower[\"FirstName\"]} ${borrower[\"LastName\"]}`\r\n : `borrower ${index + 1}`,\r\n\r\n subMenu,\r\n };\r\n })\r\n );\r\n // console.log(list);\r\n return list;\r\n };\r\n\r\n return (\r\n <View style={styles.mianContainer}>\r\n <NavBar\r\n setFloatPage={setFloatPage}\r\n WebLoginId={WebLoginId}\r\n userName={userName}\r\n navigate={navigate}\r\n {...props}\r\n isSmallScreen={isSmallScreen}\r\n settingsDetails={{\r\n cellPhone: handleGetCellPhone(LoanData[\"CellPhone\"]) || \"\",\r\n emailId: LoanData[\"EmailId\"] || \"\",\r\n UserId,\r\n }}\r\n setProgressPercentage={setProgressPercentage}\r\n hideProgress={hideProgress}\r\n {...getNavBarProps()}\r\n currentPage={currentPage}\r\n platformType={platformType}\r\n showEsignMenu={showEsignMenu}\r\n webviewRef={webviewRef}\r\n iFrameviewRef={iFrameviewRef}\r\n />\r\n\r\n <View\r\n ref={bodyContainerRef}\r\n style={[\r\n {\r\n flex: 1,\r\n flexDirection: \"row\",\r\n },\r\n web ? { maxHeight: isSmallScreen ? \"86vh\" : \"81vh\" } : {},\r\n web && !isSmallScreen\r\n ? {\r\n ...{\r\n overflow:\r\n currentPage === pageArray[pageId[\"eSign\"]]\r\n ? \"hidden\"\r\n : \"auto\",\r\n marginBottom: isMobileWeb ? 0 : 25,\r\n },\r\n ...(!isSmallScreen\r\n ? { justifyContent: isMobileWeb ? \"left\" : \"center\" }\r\n : {}),\r\n }\r\n : { backgroundColor: \"#fff\" },\r\n ]}\r\n testID=\"scrollContainer\"\r\n >\r\n <>\r\n {isSmallScreen && (\r\n <>\r\n <LeftNavBar {...getNavBarProps()} />\r\n </>\r\n )}\r\n </>\r\n\r\n <Separator />\r\n <View\r\n style={[\r\n { flex: 1, flexDirection: \"column\" },\r\n (web || (!web && isSmallScreen)) && {\r\n maxWidth:\r\n 440 +\r\n (currentPage === pageArray[pageId[\"reviewYourInterestRate\"]]\r\n ? 20\r\n : 0),\r\n minHeight:\r\n 440 +\r\n (currentPage === pageArray[pageId[\"reviewYourInterestRate\"]]\r\n ? 20\r\n : 0),\r\n marginBottom: 20,\r\n position: loaderDetails[\"isLoad\"] ? \"fixed\" : \"relative\",\r\n left: isSmallScreen && web ? 350 : 0,\r\n },\r\n currentPage === pageArray[pageId[\"eSign\"]] && {\r\n ...(web\r\n ? { maxWidth: \"unset\", minWidth: \"unset\", overflow: \"hidden\" }\r\n : { overflow: \"hidden\" }),\r\n },\r\n currentPage === pageArray[pageId[\"appraisalPayment\"]] && {\r\n ...(web\r\n ? { maxWidth: isMobileWeb ? 420 : \"82%\", minWidth: \"unset\" }\r\n : { overflow: \"hidden\" }),\r\n },\r\n InterestRateStatus == \"customizeOptions\" && {\r\n ...(web\r\n ? {\r\n maxWidth: \"calc(100% - 350px) \",\r\n minWidth: \"calc(100% - 350px) \",\r\n }\r\n : {}),\r\n },\r\n web && { maxHeight: \"85vh\" },\r\n ]}\r\n >\r\n {contextDetails[\"appDownloadFlag\"] &&\r\n !contextDetails[\"appDownloadSkip\"] ? (\r\n <View style={[styles.container, { top: 25, position: \"absolute\" }]}>\r\n <CustomText style={{ fontSize: 24 }} bold={true}>\r\n Mobile Device Found\r\n </CustomText>\r\n\r\n <Separator />\r\n <CustomText style={{ fontSize: 15 }}>\r\n We noticed you are using a mobile device. Would you like to\r\n download our mobile app now?\r\n </CustomText>\r\n <Separator />\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleGoToApp();\r\n }}\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row\",\r\n alignItems: \"stretch\",\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 20,\r\n paddingHorizontal: 20,\r\n paddingVertical: 10,\r\n borderWidth: 1,\r\n borderColor: \"#29916c\",\r\n }}\r\n >\r\n <CustomText\r\n style={{ fontSize: 15, color: \"#fff\" }}\r\n bold={true}\r\n >\r\n Use App\r\n </CustomText>\r\n </TouchableOpacity>\r\n {/* <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleGoToApp();\r\n }}\r\n >\r\n <Image\r\n style={{\r\n position: \"relative\",\r\n height: \"40px\",\r\n width: \"135px\",\r\n transform: \"scale(0.85)\",\r\n cursor: \"pointer\",\r\n }}\r\n source={\r\n contextDetails[\"webPlatForm\"] == \"Android\"\r\n ? require(\"../../assets/GooglePlay.png\")\r\n : require(\"../../assets/AppleAppStore.png\")\r\n }\r\n ></Image>\r\n </TouchableOpacity> */}\r\n </View>\r\n <Separator />\r\n\r\n <View style={{ flexDirection: \"row\" }}>\r\n <View\r\n style={[\r\n {\r\n marginTop: 10,\r\n alignSelf: \"flex-start\",\r\n marginBottom: -10,\r\n marginRight: 10,\r\n },\r\n isMobileWeb &&\r\n web && {\r\n width: \"fit-content\",\r\n },\r\n ]}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row\",\r\n alignItems: \"stretch\",\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 20,\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n borderWidth: 1,\r\n borderColor: \"#29916c\",\r\n }}\r\n onPress={handleNextClick}\r\n >\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <CustomText\r\n style={{\r\n color: \"#fff\",\r\n marginTop: -2,\r\n fontSize: isMobileWeb ? 12 : 14,\r\n }}\r\n bold={true}\r\n >\r\n Continue\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n </View>\r\n <View\r\n style={[\r\n {\r\n marginTop: 10,\r\n alignSelf: \"flex-start\",\r\n marginBottom: -10,\r\n marginRight: 10,\r\n },\r\n isMobileWeb &&\r\n web && {\r\n width: \"fit-content\",\r\n },\r\n ]}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row\",\r\n alignItems: \"stretch\",\r\n // backgroundColor: \"#1a63ad\",\r\n borderRadius: 20,\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n borderWidth: 1,\r\n borderColor: \"#1a63ad\", //\"#29916c\",\r\n }}\r\n onPress={handleAppDownloadSave}\r\n >\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <CustomText\r\n style={{\r\n color: \"gray\", // \"#fff\",\r\n marginTop: -2,\r\n fontSize: isMobileWeb ? 12 : 14,\r\n }}\r\n bold={true}\r\n >\r\n Continue and Don't Prompt again\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n <Separator />\r\n <Separator />\r\n </View>\r\n ) : (\r\n <View\r\n ref={\r\n web ||\r\n currentPage === pageArray[pageId[\"eSign\"]] ||\r\n currentPage === pageArray[pageId[\"appraisalPayment\"]] ||\r\n pageArray[pageId[\"reviewYourInterestRate\"]]\r\n ? bodyContentRef\r\n : null\r\n }\r\n style={[\r\n currentPage === pageArray[pageId[\"eSign\"]] && {\r\n flex: 1,\r\n },\r\n !web && { flex: 1 },\r\n ]}\r\n >\r\n {currentPage === pageArray[pageId[\"eSign\"]] ? (\r\n <>\r\n {web ? (\r\n <View\r\n style={{\r\n paddingHorizontal: 20,\r\n width: isSmallScreen ? \"calc(100% - 310px)\" : \"100%\",\r\n height: \"98%\",\r\n }}\r\n >\r\n <ExternalSourceViewer\r\n url={`../../../esignpackage/index.html?SessionId=${SessionId}&hideHeader=1&platform=${platformType}`}\r\n isNeedBack={false}\r\n isSmallScreen={isSmallScreen}\r\n setHideFooterButtons={setHideFooterButtons}\r\n handleNavigation={handleNavigation}\r\n setHideProgress={setHideProgress}\r\n fromEsign={true}\r\n setPdfView={setPdfView}\r\n setShowEsignMenu={setShowEsignMenu}\r\n setWebviewRef={setWebviewRef}\r\n setiFrameviewRef={setiFrameviewRef}\r\n\r\n //isDisable={LoanData[\"LockLoanApp\"] == 1} //Disabled when the loan is in Underwriting - Esign\r\n />\r\n </View>\r\n ) : (\r\n <ExternalSourceViewer\r\n // url={`../../../esignpackage/index.html?SessionId=${SessionId}&hideHeader=1&platform=${platformType}`}\r\n url={`../../../esignpackage/index.html?SessionId=${SessionId}&hideHeader=1&platform=${platformType}&pkgCheck=1`}\r\n isNeedBack={false}\r\n isSmallScreen={isSmallScreen}\r\n setHideFooterButtons={setHideFooterButtons}\r\n handleNavigation={handleNavigation}\r\n setHideProgress={setHideProgress}\r\n fromEsign={true}\r\n setPdfView={setPdfView}\r\n setShowEsignMenu={setShowEsignMenu}\r\n setWebviewRef={setWebviewRef}\r\n setiFrameviewRef={setiFrameviewRef}\r\n\r\n //isDisable={LoanData[\"LockLoanApp\"] == 1} //Disabled when the loan is in Underwriting - Esign\r\n />\r\n )}\r\n </>\r\n ) : currentPage === pageArray[pageId[\"appraisalPayment\"]] ? (\r\n <>\r\n <AppraisalPayment\r\n setAlertMessage={setAlertMessage}\r\n alertMessage={alertMessage}\r\n setTopEdge={setTopEdge}\r\n navigation={navigation}\r\n isSmallScreen={!isSmallScreen}\r\n UserId={UserId}\r\n loanPurpose={\r\n Number(LoanData[\"LoanPurpose\"]) === 1\r\n ? 1\r\n : Number(LoanData[\"LoanPurpose\"]) === 2\r\n ? 3\r\n : 0\r\n }\r\n loanId={loanId}\r\n stateOptions={stateOptions}\r\n userName={userName}\r\n footerButton={<></>}\r\n setIsPaymentDone={setIsPaymentDone}\r\n triggerHiddenButtonClick={clickProcessPayment}\r\n triggerHiddenButtonClickDone={handleHiddenButtonClickDone}\r\n ProcessPaymentDisabled={handleProcessPaymentDisabled}\r\n ProcessingStatus={handleProcessingStatus}\r\n />\r\n </>\r\n ) : currentPage ===\r\n pageArray[pageId[\"reviewYourInterestRate\"]] ? (\r\n <>\r\n {LoanData[\"UserId\"] && loanId && SessionId ? (\r\n <View style={{ flex: 1 }}>\r\n <InterestRate\r\n setFloatPage={setFloatPage}\r\n floahandleSaveSubjectPropertytPage={floatPage}\r\n isDisable={LoanData[\"LockLoanApp\"] == 1}\r\n userId={LoanData[\"UserId\"]}\r\n loanId={loanId}\r\n SessionId={SessionId}\r\n navigation={navigation || props[\"navigation\"]}\r\n stateOptions={stateOptions}\r\n handleLoaderDetails={handleLoaderDetails}\r\n handleGetLeftNavStatus={handleGetLeftNavStatus}\r\n userName={userName}\r\n handleNextClick={handleNextClick}\r\n setInterestRateStatus={setInterestRateStatus}\r\n LoanData={LoanData}\r\n handleGetBorrowerUrl={handleGetBorrowerUrl}\r\n handleSaveSubjectProperty={handleSaveSubjectProperty}\r\n handleRequiredFieldData={(key, value) => {\r\n setLoanData((prevLoanData) => {\r\n return {\r\n ...prevLoanData,\r\n [key]: value,\r\n };\r\n });\r\n }}\r\n additionalBorrowerInfo={additionalBorrowerInfo}\r\n handleUpdateAddtionalBorrower={\r\n handleUpdateAddtionalBorrower\r\n }\r\n handleSaveSSnDetails={handleSaveSSnDetails}\r\n propertyTypeOption={propertyTypeOption}\r\n handleCalculateDownPaymentPer={\r\n handleCalculateDownPaymentPer\r\n }\r\n DownPmtOnChange={DownPmtOnChange}\r\n LnAmtExcChange={LnAmtExcChange}\r\n CalculateDownPayment={CalculateDownPayment}\r\n CalculateLnAmt={CalculateLnAmt}\r\n handleSaveRequiredFields={handleSaveRequiredFields}\r\n />\r\n {!web && (\r\n <View\r\n style={[\r\n {\r\n position: \"absolute\",\r\n bottom: 0,\r\n backgroundColor: \"#fff\",\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n paddingRight: 20,\r\n borderRadius: 5,\r\n marginTop: -25,\r\n width: \"100%\",\r\n },\r\n ]}\r\n >\r\n <View\r\n style={[\r\n {\r\n flexDirection: \"row-reverse\",\r\n justifyContent: \"space-between\",\r\n },\r\n ]}\r\n >\r\n <Button\r\n disabled={false}\r\n onPress={handleNextClick}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 14,\r\n color: \"#fff\",\r\n display: \"flex\",\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n Next\r\n {!web ? \" \" : \"\"}\r\n </CustomText>\r\n <CustomText>\r\n <Icon\r\n style={{ marginLeft: 5 }}\r\n name=\"arrow-circle-right\"\r\n size={18}\r\n color=\"white\"\r\n />\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <Button\r\n onPress={() => {\r\n handleNavigation(-1);\r\n }}\r\n title={\r\n <>\r\n <CustomText style={{ marginRight: 5 }}>\r\n <Icon\r\n name=\"arrow-circle-left\"\r\n size={18}\r\n color=\"white\"\r\n />\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 14,\r\n color: \"#fff\",\r\n display: \"flex\",\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n {!web ? \" \" : \"\"}\r\n Back\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n ) : (\r\n <View\r\n style={[\r\n styles[\"titleWrapper\"],\r\n {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n ]}\r\n >\r\n <View\r\n style={{\r\n height: web ? 28 : 19,\r\n width: web ? 28 : 19,\r\n }}\r\n >\r\n <ArrowSpinner\r\n size={web ? 28 : 19}\r\n color={\"#fff\"}\r\n isSpinner\r\n />\r\n </View>\r\n <CustomText style={[styles[\"title\"]]} bold={true}>\r\n {\" Loading...\"}\r\n </CustomText>\r\n </View>\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n {web && <Separator />}\r\n <View\r\n onLayout={(event) => {\r\n if (!web) {\r\n let layout = event.nativeEvent.layout;\r\n setTopEdge((prev) => {\r\n return {\r\n ...prev,\r\n contentWrapperY: layout.y,\r\n contentWrapperHeight: layout.height,\r\n };\r\n });\r\n }\r\n }}\r\n style={[\r\n styles.container,\r\n currentPage === pageArray[pageId[\"documentUpload\"]]\r\n ? { padding: 5, marginTop: 5 }\r\n : {},\r\n ]}\r\n >\r\n {web && <Separator />}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n justifyContent:\r\n LoanData[\"LinkBankAccount\"] === 1 &&\r\n LoanData[\"BankAccountLinked\"] !== 1 &&\r\n DetailsArr.slice(1)[pageIndex[\"subPage\"]]\r\n ?.bodyContent === \"LinkBankAccount\"\r\n ? \"space-between\"\r\n : \"flex-end\",\r\n }}\r\n >\r\n {LoanData[\"viewPlaid\"] &&\r\n LoanData[\"BankAccountLinked\"] !== 1 &&\r\n DetailsArr.slice(1)[pageIndex[\"subPage\"]]\r\n ?.bodyContent === \"LinkBankAccount\" && (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n marginBottom: 10,\r\n color: \"#41464d\",\r\n flexDirection: \"row\",\r\n alignSelf: \"flex-start\",\r\n flex: 1,\r\n }}\r\n onPress={() => {\r\n setLoanData((prevLoanData) => ({\r\n ...prevLoanData,\r\n viewPlaid: false,\r\n }));\r\n setPageIndex({ ...pageIndex, subPage: 0 });\r\n handleResetPlaidDetails(null);\r\n // handleOptionPress(null);\r\n if (web) {\r\n document\r\n ?.querySelector('iframe[title=\"Plaid Link\"]')\r\n ?.remove();\r\n }\r\n }}\r\n >\r\n ← Back\r\n </CustomText>\r\n )}\r\n </View>\r\n <View style={{ width: \"100%\" }}>\r\n <ScrollContainer\r\n onScroll={Animated.event(\r\n [\r\n {\r\n nativeEvent: { contentOffset: { y: scrollY } },\r\n },\r\n ],\r\n { useNativeDriver: true }\r\n )}\r\n scrollToTop={scrollToTop}\r\n setScrollToTop={setScrollToTop}\r\n pullDownRefresh={async () => {\r\n if (\r\n currentPage === pageArray[pageId[\"documentUpload\"]]\r\n ) {\r\n setPullDownRefresh(true);\r\n } else {\r\n await handleAPIGetLoanDetails(loanId, true);\r\n }\r\n }}\r\n >\r\n <View\r\n ref={!web ? bodyContentRef : null}\r\n pointerEvents={\r\n //Exclude for Doc Upload and Credit score\r\n LoanData[\"LockLoanApp\"] == 1 &&\r\n currentPage !==\r\n pageArray[pageId[\"documentUpload\"]] &&\r\n currentPage !== pageArray[pageId[\"creditScore\"]] &&\r\n currentPage !==\r\n pageArray[pageId[\"appraisalPayment\"]] &&\r\n currentPage !==\r\n pageArray[pageId[\"borrowerVerification\"]]\r\n ? \"none\"\r\n : \"auto\"\r\n }\r\n >\r\n {DetailsArr.slice(1).length > 0 ? (\r\n <>\r\n {DetailsArr.slice(1)[pageIndex[\"subPage\"]] && (\r\n <>\r\n {currentPage ===\r\n pageArray[pageId[\"summaryInfo\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"summaryInfo\"]] && (\r\n <SummaryInfo\r\n detailsArr={\r\n DetailsArr.slice(1)[\r\n pageIndex[\"subPage\"]\r\n ]\r\n }\r\n handleOptionPress={handleOptionPress}\r\n LockLoanApp={\r\n LoanData[\"LockLoanApp\"] || 0\r\n }\r\n />\r\n )}\r\n {currentPage ===\r\n pageArray[pageId[\"borrowerInfo\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"borrowerInfo\"]] && (\r\n <ContactInfo\r\n detailsArr={\r\n DetailsArr.slice(1)[\r\n pageIndex[\"subPage\"]\r\n ]\r\n }\r\n handleOptionPress={handleOptionPress}\r\n LockLoanApp={\r\n LoanData[\"LockLoanApp\"] || 0\r\n }\r\n />\r\n )}\r\n\r\n {currentPage ===\r\n pageArray[pageId[\"addressHistory\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"addressHistory\"]] && (\r\n <AddressHistory\r\n detailsArr={\r\n DetailsArr.slice(1)[\r\n pageIndex[\"subPage\"]\r\n ]\r\n }\r\n handleOptionPress={handleOptionPress}\r\n LockLoanApp={\r\n LoanData[\"LockLoanApp\"] || 0\r\n }\r\n />\r\n )}\r\n {currentPage ===\r\n pageArray[pageId[\"creditScore\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"creditScore\"]] && (\r\n <CreditScore\r\n detailsArr={\r\n DetailsArr.slice(1)[\r\n pageIndex[\"subPage\"]\r\n ]\r\n }\r\n handleOptionPress={handleOptionPress}\r\n />\r\n )}\r\n {currentPage ===\r\n pageArray[pageId[\"employment\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"employment\"]] && (\r\n <Income\r\n detailsArr={\r\n DetailsArr.slice(1)[\r\n pageIndex[\"subPage\"]\r\n ]\r\n }\r\n handleOptionPress={handleOptionPress}\r\n LockLoanApp={\r\n LoanData[\"LockLoanApp\"] || 0\r\n }\r\n />\r\n )}\r\n {((currentPage ===\r\n pageArray[pageId[\"bankAccounts\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"bankAccounts\"]]) ||\r\n (currentPage ===\r\n pageArray[pageId[\"realEstateOwned\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[\r\n pageId[\"realEstateOwned\"]\r\n ])) && (\r\n <Assets\r\n detailsArr={\r\n DetailsArr.slice(1)[\r\n pageIndex[\"subPage\"]\r\n ]\r\n }\r\n handleOptionPress={handleOptionPress}\r\n LockLoanApp={LoanData[\"LockLoanApp\"] || 0}\r\n />\r\n )}\r\n {currentPage ===\r\n pageArray[pageId[\"government\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"government\"]] && (\r\n <Government\r\n detailsArr={\r\n DetailsArr.slice(1)[\r\n pageIndex[\"subPage\"]\r\n ]\r\n }\r\n handleOptionPress={handleOptionPress}\r\n LockLoanApp={\r\n LoanData[\"LockLoanApp\"] || 0\r\n }\r\n />\r\n )}\r\n </>\r\n )}\r\n {currentPage ===\r\n pageArray[pageId[\"borrowerVerification\"]] &&\r\n DetailsArr[0][\"currentPage\"] ===\r\n pageArray[pageId[\"borrowerVerification\"]] && (\r\n <BorrowerVerification\r\n detailsArr={DetailsArr.slice(1)[0]}\r\n handleOptionPress={handleOptionPress}\r\n LockLoanApp={LoanData[\"LockLoanApp\"] || 0}\r\n loanId={loanId}\r\n userId={UserId}\r\n assetVendor={loanURLDetails[\"assetVendor\"]}\r\n handleNavigation={handleNavigation}\r\n handleGetBankEmpDetails={\r\n handleGetBankEmpDetails\r\n }\r\n />\r\n )}\r\n {((web && stickyHeader) ||\r\n (!web && topEdge > 0)) && (\r\n <>\r\n <Separator />\r\n <PageBottom />\r\n <Separator />\r\n <Separator />\r\n </>\r\n )}\r\n </>\r\n ) : (\r\n currentPage !==\r\n pageArray[pageId[\"documentUpload\"]] &&\r\n currentPage !== pageArray[pageId[\"eSign\"]] &&\r\n currentPage !== pageArray[pageId[\"completed\"]] && (\r\n <>\r\n <Spinner />\r\n </>\r\n )\r\n )}\r\n {currentPage ===\r\n pageArray[pageId[\"documentUpload\"]] && (\r\n <View style={{ marginTop: 5 }}>\r\n <DocumentUpload\r\n setPullDownRefresh={setPullDownRefresh}\r\n pullDownRefresh={pullDownRefresh}\r\n isDataLoadedForDocUpload={\r\n isDataLoadedForDocUpload\r\n }\r\n setDocumentViewProps={setDocumentViewProps}\r\n loanData={LoanData}\r\n documentUploadFlag={documentUploadFlag}\r\n handleSaveAdditionalInfo={\r\n handleSaveAdditionalInfo\r\n }\r\n userId={LoanData[\"UserId\"]}\r\n loanId={loanId}\r\n SessionId={SessionId}\r\n navigation={navigation || props[\"navigation\"]}\r\n handleAPIGetLoanDetails={() => {\r\n handleAPIGetLoanDetails(loanId, true);\r\n }}\r\n />\r\n <Separator />\r\n <>\r\n {loanId > 0 && <LoanId Id={loanId} />}\r\n {stickyHeader && (\r\n <>\r\n <PageBottom />\r\n <Separator />\r\n <Separator />\r\n </>\r\n )}\r\n </>\r\n </View>\r\n )}\r\n {currentPage === pageArray[pageId[\"completed\"]] && (\r\n <>\r\n <Title\r\n text={`Your loan application is ${progressPercentage}% complete.\\n`}\r\n />\r\n <CustomText\r\n style={{\r\n marginBottom: 20,\r\n fontSize: web ? 20 : 17,\r\n }}\r\n >\r\n Clicking the Next button will take you to your\r\n dashboard. From there, you can also view any\r\n remaining tasks.\r\n </CustomText>\r\n </>\r\n )}\r\n {web && <Separator />}\r\n </View>\r\n\r\n <View\r\n // ref={footerContainerRef}\r\n onLayout={(event) => {\r\n if (!web) {\r\n let layout = event.nativeEvent.layout;\r\n setTopEdge((prev) => {\r\n return {\r\n ...prev,\r\n contentY: layout.y,\r\n contentHeight: layout.height,\r\n };\r\n });\r\n }\r\n }}\r\n style={{\r\n height: 50,\r\n }}\r\n ></View>\r\n {!web && (\r\n <>\r\n {Array.from({ length: 10 }).map((_, index) => (\r\n <Separator key={index} />\r\n ))}\r\n </>\r\n )}\r\n </ScrollContainer>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n )}\r\n {((iTopEdge[\"contentY\"] &&\r\n currentPage !== pageArray[pageId[\"reviewYourInterestRate\"]]) ||\r\n currentPage == pageArray[pageId[\"eSign\"]] ||\r\n (web && !contextDetails[\"appDownloadFlag\"])) && (\r\n <Animated.View\r\n ref={footerContainerRef}\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n paddingHorizontal: web ? 20 : 0,\r\n paddingVertical: 10,\r\n paddingBottom: 20,\r\n alignSelf: android ? \"flex-start\" : \"left\",\r\n display:\r\n currentPage == pageArray[pageId[\"eSign\"]] &&\r\n hideFooterButtons\r\n ? \"none\"\r\n : \"flex\",\r\n },\r\n Object.keys(LoanData).length == 0 && {\r\n display: \"none\",\r\n },\r\n !web &&\r\n currentPage !== pageArray[pageId[\"eSign\"]] && {\r\n transform: [\r\n {\r\n translateY: scrollY.interpolate({\r\n inputRange,\r\n outputRange: [0, 0, 0, 0, -1],\r\n }),\r\n },\r\n ],\r\n },\r\n web &&\r\n stickyHeader && {\r\n paddingTop:\r\n currentPage ===\r\n pageArray[pageId[\"reviewYourInterestRate\"]]\r\n ? 0\r\n : 20,\r\n width:\r\n currentPage === pageArray[pageId[\"eSign\"]]\r\n ? 880\r\n : isMobileWeb\r\n ? 327\r\n : 420,\r\n marginLeft: 20,\r\n position: \"fixed\",\r\n bottom: 50,\r\n borderTopWidth: 2,\r\n borderTopColor:\r\n currentPage ===\r\n pageArray[pageId[\"reviewYourInterestRate\"]]\r\n ? \"#fff\"\r\n : \"#ccc\",\r\n borderRadius: 5,\r\n },\r\n\r\n web &&\r\n stickyHeader &&\r\n currentPage === pageArray[pageId[\"appraisalPayment\"]] && {\r\n paddingTop: 20,\r\n width: isMobileWeb ? 327 : 420,\r\n marginLeft: 20,\r\n position: \"fixed\",\r\n bottom: 70,\r\n borderTopWidth: 2,\r\n borderTopColor: \"#ccc\",\r\n borderRadius: 5,\r\n borderTopWidth: 2,\r\n borderTopColor: \"#ccc\",\r\n },\r\n web &&\r\n !stickyHeader &&\r\n currentPage === pageArray[pageId[\"appraisalPayment\"]] && {\r\n paddingTop: 20,\r\n width: isMobileWeb ? 327 : 420,\r\n marginLeft: 20,\r\n marginTop: -25,\r\n boxShadow: \"3px 7px 10px 4px rgb(0 0 0 / 8%)\",\r\n },\r\n\r\n web &&\r\n !stickyHeader &&\r\n currentPage !== pageArray[pageId[\"appraisalPayment\"]]\r\n ? // && currentPage !== pageArray[pageId[\"reviewYourInterestRate\"]]\r\n {\r\n marginLeft: 20,\r\n paddingTop: 20,\r\n marginTop: -104,\r\n // boxShadow: \"3px 7px 10px 4px rgb(0 0 0 / 8%)\",\r\n borderRadius: 5,\r\n }\r\n : web &&\r\n !stickyHeader &&\r\n currentPage ===\r\n pageArray[pageId[\"reviewYourInterestRate\"]] && {\r\n backgroundColor: \"#e7e7e7\",\r\n marginHorizontal: 20,\r\n paddingTop: 20,\r\n borderRadius: 5,\r\n marginTop: -25,\r\n boxShadow: \"0px 6px 7px 0px rgba(0, 0, 0, 0.25)\",\r\n },\r\n isMobileWeb && {\r\n width:\r\n currentPage === pageArray[pageId[\"reviewYourInterestRate\"]]\r\n ? \"91%\"\r\n : \"90%\",\r\n // pageArray[pageId[\"appraisalPayment\"]]\r\n // ? \"90%\"\r\n // : \"90%\",\r\n },\r\n ]}\r\n >\r\n {currentPage === pageArray[pageId[\"appraisalPayment\"]] && (\r\n <>\r\n {alertMessage[\"isShow\"] && alertMessage[\"message\"] && (\r\n <View\r\n style={{\r\n backgroundColor:\r\n alertMessage[\"type\"] == \"danger\"\r\n ? \"#f2dede\"\r\n : alertMessage[\"type\"] == \"warning\"\r\n ? \"#fcf8e3\"\r\n : \"#dff0d8\",\r\n borderWidth: 1,\r\n borderColor:\r\n alertMessage[\"type\"] == \"danger\"\r\n ? \"#ebccd1\"\r\n : alertMessage[\"type\"] == \"warning\"\r\n ? \"#faebcc\"\r\n : \"#d6e9c6\",\r\n padding: 10,\r\n flexDirection: \"row\",\r\n marginBottom: 20,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n color:\r\n alertMessage[\"type\"] == \"danger\"\r\n ? \"#a94442\"\r\n : alertMessage[\"type\"] == \"warning\"\r\n ? \"#8a6d3b\"\r\n : \"#3c763d\",\r\n }}\r\n >\r\n {alertMessage[\"message\"]}\r\n </CustomText>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n setAlertMessage({\r\n message: null,\r\n isShow: false,\r\n type: null,\r\n });\r\n }}\r\n >\r\n <Icon\r\n name=\"close\"\r\n size={14}\r\n color=\"#8a6d3b\"\r\n style={{ opacity: 0.5 }}\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n {!isPaymentDone && (\r\n <View\r\n style={{\r\n marginBottom: 25,\r\n alignSelf: \"center\",\r\n width: \"100%\",\r\n marginLeft: web ? 0 : 25,\r\n }}\r\n >\r\n <Button\r\n disabled={processPaymentDisabled}\r\n onPress={(e) => {\r\n !processPaymentDisabled &&\r\n setClickProcessPayment(true);\r\n }}\r\n title={\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={[\r\n {\r\n fontSize: 16,\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n flex: 1,\r\n },\r\n web && { textAlign: \"center\" },\r\n ]}\r\n >\r\n {processingStatus === \"Next\" ? (\r\n <>\r\n <ArrowSpinner\r\n color=\"#fff\"\r\n isSpinner={true}\r\n size={20}\r\n style={{ marginLeft: 20, marginBottom: 5 }}\r\n />\r\n </>\r\n ) : (\r\n \"Next - Process Payment\"\r\n )}\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n <CustomText\r\n style={{ fontSize: 12, marginLeft: web ? 0 : 10 }}\r\n >\r\n A charge will appear from Direct Services, LLC.\r\n </CustomText>\r\n </View>\r\n )}\r\n </>\r\n )}\r\n <View\r\n style={[\r\n {\r\n alignItems: \"center\",\r\n flexDirection: \"row-reverse\",\r\n justifyContent: \"space-between\",\r\n paddingBottom:\r\n currentPage === pageArray[pageId[\"appraisalPayment\"]] &&\r\n web\r\n ? 40\r\n : 0,\r\n },\r\n !web && {\r\n width: Dimensions.get(\"window\").width - 10,\r\n alignItems: \"center\",\r\n },\r\n web &&\r\n currentPage === pageArray[pageId[\"eSign\"]] && {\r\n width: isMobileWeb ? 327 : 850,\r\n },\r\n ]}\r\n >\r\n <Button\r\n disabled={\r\n (isDisableNext && GoToNav != pageId[\"documentUpload\"]) ||\r\n processStatus === \"addingBorrower\"\r\n }\r\n onPress={() => {\r\n if (currentPage == \"eSign\" && (!web || isMobileWeb))\r\n setHideProgress(false);\r\n handleNextClick();\r\n }}\r\n title={\r\n processStatus === \"addingBorrower\" ? (\r\n <View\r\n bold={true}\r\n style={[\r\n {\r\n fontSize: 16,\r\n color: \"#fff\",\r\n alignSelf: \"center\",\r\n flex: 1,\r\n width: 50,\r\n height: 25,\r\n paddingTop: web ? 8 : 10,\r\n },\r\n web && { textAlign: \"center\" },\r\n ]}\r\n >\r\n <ArrowSpinner\r\n color=\"#fff\"\r\n isSpinner={true}\r\n size={20}\r\n style={web && { marginHorizontal: 15 }}\r\n />\r\n </View>\r\n ) : (\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 14,\r\n color: \"#fff\",\r\n display: \"flex\",\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n {currentPage ===\r\n pageArray[pageId[\"appraisalPayment\"]] &&\r\n !isPaymentDone\r\n ? \"Skip\"\r\n : \"Next\"}\r\n {!web ? \" \" : \"\"}\r\n </CustomText>\r\n <CustomText>\r\n <Icon\r\n style={{ marginLeft: 5 }}\r\n name=\"arrow-circle-right\"\r\n size={18}\r\n color=\"white\"\r\n />\r\n </CustomText>\r\n </>\r\n )\r\n }\r\n />\r\n <View>\r\n {!(\r\n contextDetails[\"appDownloadFlag\"] &&\r\n pageIndex[\"subPage\"] === 0 &&\r\n pageIndex[\"page\"] === 0\r\n ) &&\r\n !(\r\n contextDetails[\"appDownloadSkip\"] &&\r\n pageIndex[\"subPage\"] === 0 &&\r\n pageIndex[\"page\"] === 0\r\n ) &&\r\n !(\r\n contextDetails[\"webPlatForm\"] == \"Desktop\" &&\r\n pageIndex[\"subPage\"] === 0 &&\r\n pageIndex[\"page\"] === 0\r\n ) && (\r\n <Button\r\n onPress={() => {\r\n if (\r\n contextDetails[\"appDownloadFlag\"] ||\r\n (pageIndex[\"subPage\"] === 0 &&\r\n pageIndex[\"page\"] === 0)\r\n ) {\r\n if (\r\n !(\r\n pageIndex[\"subPage\"] === 0 &&\r\n pageIndex[\"page\"] === 0\r\n )\r\n ) {\r\n setContextDetails((prevContextDetails) => {\r\n prevContextDetails[\"appDownloadFlag\"] = false;\r\n return { ...prevContextDetails };\r\n });\r\n } else {\r\n setContextDetails((prevContextDetails) => {\r\n prevContextDetails[\"appDownloadFlag\"] = true;\r\n return { ...prevContextDetails };\r\n });\r\n setIsDisableNext(false);\r\n }\r\n } else {\r\n if (currentPage == \"eSign\" && (!web || isMobileWeb))\r\n setHideProgress(false);\r\n handleNavigation(-1);\r\n }\r\n }}\r\n title={\r\n <>\r\n <CustomText style={{ marginRight: 5 }}>\r\n <Icon\r\n name=\"arrow-circle-left\"\r\n size={18}\r\n color=\"white\"\r\n />\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 14,\r\n color: \"#fff\",\r\n display: \"flex\",\r\n alignSelf: \"center\",\r\n }}\r\n >\r\n {!web ? \" \" : \"\"}\r\n Back\r\n </CustomText>\r\n </>\r\n }\r\n />\r\n )}\r\n </View>\r\n </View>\r\n </Animated.View>\r\n )}\r\n\r\n {!isMobileWeb && web && navigate && (\r\n <View\r\n style={[\r\n {\r\n position: \"fixed\",\r\n bottom: 0,\r\n width: currentPage === pageArray[pageId[\"eSign\"]] ? 880 : 425,\r\n marginLeft: 17,\r\n },\r\n ]}\r\n >\r\n <Footer\r\n handleClearState={handleClearState}\r\n navigate={navigate}\r\n setFloatPage={setFloatPage}\r\n From=\"Home\"\r\n UserId={UserId}\r\n userName={userName}\r\n preventNavigation={\r\n ![1, 2].includes(LoanData[\"LoanPurpose\"]) || loanId < 0\r\n }\r\n />\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n\r\n {web && floatPage && (\r\n <DrawerView\r\n onClose={() => {\r\n setFloatPage(null);\r\n }}\r\n bodyStyle={\r\n web && !isMobileWeb ? floatPage?.[\"option\"]?.[\"style\"] : {}\r\n }\r\n isShow={floatPage?.[\"path\"] || floatPage?.[\"body\"] ? true : false}\r\n From=\"DocumentUpload\"\r\n isSmallScreen={isSmallScreen}\r\n needHeaderContent={true}\r\n body={\r\n floatPage?.[\"path\"] == \"ShareApp\" ? (\r\n <ShareApp\r\n route={{ params: floatPage?.[\"option\"], SessionId }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : floatPage?.[\"path\"] === \"LoanContacts\" ? (\r\n <LoanContacts\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : floatPage?.[\"path\"] === \"Settings\" ? (\r\n <Settings\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : floatPage?.[\"path\"] === \"Calculator\" ? (\r\n <CalculatorApp\r\n From=\"Home\"\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n LoanId={loanId}\r\n />\r\n ) : floatPage?.[\"path\"] === \"CalculatorMenu\" ? (\r\n <CalculatorMenu\r\n navigation={navigation || props[\"navigation\"]}\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : (\r\n floatPage?.[\"body\"] || null\r\n )\r\n }\r\n />\r\n )}\r\n <DrawerView\r\n isShow={drawerDetails[\"isShow\"]}\r\n From=\"DocumentUpload\"\r\n isSmallScreen={isSmallScreen}\r\n needHeaderContent={true}\r\n onClose={() => {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n }}\r\n body={\r\n drawerDetails[\"body\"] == \"addOtherLoanVendor\" ? (\r\n <OtherLoanVendor\r\n handlePostVendorAdd={handlePostVendorAdd}\r\n bankIndex={drawerDetails[\"bankIndex\"]}\r\n loanId={loanId}\r\n SessionId={SessionId}\r\n stateOptions={stateOptions}\r\n drawerDetails={drawerDetails}\r\n onClose={() => {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n }}\r\n />\r\n ) : (\r\n <></> || <></>\r\n )\r\n }\r\n />\r\n {web && (\r\n <DrawerView\r\n isShow={DocumentViewProps !== null}\r\n From=\"DocumentUpload\"\r\n isSmallScreen={isSmallScreen}\r\n onClose={() => {\r\n if (DocumentViewProps[\"unSavedFileStatus\"]) {\r\n setDocumentViewProps((prevDocumentViewProps) => {\r\n prevDocumentViewProps[\"processingStatus\"] =\r\n \"cancelConfirmation\";\r\n return { ...prevDocumentViewProps };\r\n });\r\n } else {\r\n setDocumentViewProps(null);\r\n }\r\n }}\r\n needHeaderContent={true}\r\n body={\r\n <DocumentViewer\r\n {...DocumentViewProps}\r\n handleAPIGetLoanDetails={() =>\r\n handleAPIGetLoanDetails(loanId, true)\r\n }\r\n handleUnSavedFileStatus={(status) => {\r\n setDocumentViewProps((prevDocumentViewProps) => {\r\n prevDocumentViewProps[\"unSavedFileStatus\"] = status;\r\n if (!status) prevDocumentViewProps[\"processingStatus\"] = null;\r\n return { ...prevDocumentViewProps };\r\n });\r\n }}\r\n />\r\n }\r\n />\r\n )}\r\n {web && (\r\n <>\r\n <div\r\n style={{ display: \"none\" }}\r\n id=\"btnStatusCheck\"\r\n onClick={() => {\r\n handleGetLeftNavStatus();\r\n }}\r\n />\r\n <div\r\n style={{ display: \"none\" }}\r\n id=\"btnBack\"\r\n onClick={() => {\r\n handleNavigation(-1);\r\n }}\r\n />\r\n <div\r\n style={{ display: \"none\" }}\r\n id=\"btnNext\"\r\n onClick={() => {\r\n handleNavigation(1);\r\n }}\r\n />\r\n <div\r\n style={{ display: \"none\" }}\r\n id=\"btnHideFooterButtons\"\r\n onClick={() => {\r\n setHideFooterButtons(!hideFooterButtons);\r\n }}\r\n />\r\n\r\n <div\r\n style={{ display: \"none\" }}\r\n id=\"btnHideEsignMenu\"\r\n onClick={() => {\r\n //setHideFooterButtons(!hideFooterButtons);\r\n setShowEsignMenu(false);\r\n }}\r\n />\r\n\r\n <div\r\n style={{ display: \"none\" }}\r\n id=\"btnShowEsignMenu\"\r\n onClick={() => {\r\n setShowEsignMenu(true);\r\n }}\r\n />\r\n </>\r\n )}\r\n <>\r\n <Entypo\r\n style={[\r\n { opacity: 0 },\r\n (!web || isMobileWeb || isSmallScreen) && { height: 0 },\r\n ]}\r\n name={`chevron-up`}\r\n />\r\n <Entypo\r\n style={[\r\n { opacity: 0 },\r\n (!web || isMobileWeb || isSmallScreen) && { height: 0 },\r\n ]}\r\n name={`chevron-down`}\r\n />\r\n </>\r\n {(!web || isMobileWeb) && navigate && (\r\n <Footer\r\n navigate={navigate}\r\n From=\"Home\"\r\n UserId={UserId}\r\n userName={userName}\r\n setFloatPage={setFloatPage}\r\n />\r\n )}\r\n </View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n mianContainer: {\r\n ...{\r\n flex: 1,\r\n width: \"100%\",\r\n backgroundColor: \"color(srgb 0.9498 0.9594 0.9739)\",\r\n // alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n ...(web ? { backgroundColor: \"#fff\" } : {}),\r\n },\r\n titleWrapper: {\r\n ...{\r\n padding: 10,\r\n marginBottom: 25,\r\n marginHorizontal: 20,\r\n backgroundColor: \"#395D82\",\r\n marginTop: 15,\r\n },\r\n ...(web\r\n ? {\r\n boxShadow: \"0px 6px 12px 0px #00000059\",\r\n }\r\n : {}),\r\n },\r\n title: {\r\n fontSize: web ? 20 : 16,\r\n alignSelf: \"center\",\r\n color: \"#fff\",\r\n marginVertical: 10,\r\n },\r\n card: {\r\n backgroundColor: \"white\",\r\n borderRadius: 8,\r\n paddingVertical: 45,\r\n paddingHorizontal: 25,\r\n width: \"100%\",\r\n marginVertical: 10,\r\n },\r\n container: [\r\n {\r\n backgroundColor: \"#fff\",\r\n paddingTop: 20,\r\n paddingBottom: 10,\r\n paddingHorizontal: web ? 20 : 0,\r\n marginLeft: 20,\r\n marginRight: 20,\r\n marginTop: 0,\r\n alignItems: \"center\",\r\n borderRadius: 5,\r\n overflow: \"hidden\",\r\n boxShadow: \"3px 7px 10px 4px rgb(0 0 0 / 8%)\",\r\n flex: 1,\r\n },\r\n web && {\r\n maxWidth: Dimensions.get(\"window\").width <= 480 ? \"90%\" : 420,\r\n minWidth: Dimensions.get(\"window\").width <= 480 ? \"90%\" : 420,\r\n overflow: \"hidden\",\r\n flex: \"none\",\r\n marginBottom: 20,\r\n },\r\n ],\r\n fixToText: {\r\n flexDirection: \"row\",\r\n width: \"100%\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"stretch\",\r\n },\r\n navLeftOption: {\r\n ...{\r\n padding: 20,\r\n borderRadius: 16,\r\n fontSize: 19,\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n },\r\n active: {\r\n backgroundColor: \"#b5d472\",\r\n color: \"#fff\",\r\n },\r\n\r\n container_: {\r\n flex: 1,\r\n flexDirection: \"row\",\r\n // Other styles for the container\r\n },\r\n swipeContainer: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n },\r\n button: {\r\n // Styles for the buttons\r\n },\r\n section: {\r\n position: \"absolute\",\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n width: \"100%\",\r\n backgroundColor: \"lightgray\",\r\n // Other styles for the section\r\n },\r\n buttonContainer: {\r\n borderRadius: 15,\r\n height: 40,\r\n // paddingVertical: 20,\r\n // paddingHorizontal: 10,\r\n marginTop: 8,\r\n // paddingTop: web ? 8 : null,\r\n alignSelf: \"stretch\",\r\n textAlign: \"center\",\r\n },\r\n infoContainer: {\r\n marginBottom: 10,\r\n },\r\n boldText: {\r\n fontWeight: \"bold\",\r\n },\r\n linkText: {\r\n color: \"blue\",\r\n },\r\n});\r\n","import {\r\n StyleSheet,\r\n View,\r\n Alert,\r\n Image,\r\n TouchableOpacity,\r\n Platform,\r\n BackHandler,\r\n Dimensions,\r\n Linking,\r\n} from \"react-native\";\r\nimport { useState, useEffect, useCallback, useContext } from \"react\";\r\nimport {\r\n InputBox,\r\n IconButton,\r\n WebPageView,\r\n context,\r\n} from \"../accessories/accessories.js\";\r\nimport CustomText from \"../accessories/CustomText.js\";\r\nimport {\r\n handleAPI,\r\n FormatPhoneLogin,\r\n validateEmail,\r\n log,\r\n handleOpenURL,\r\n handleTrackGA4Events,\r\n handleGetStoredCredential,\r\n handleSetStoredCredential,\r\n generateFingerprint,\r\n handleCreateNewSession,\r\n handleGetActiveLoan,\r\n} from \"../accessories/CommonFunctions.js\";\r\nimport AntDesign from \"react-native-vector-icons/AntDesign\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport MaterialIcons from \"react-native-vector-icons/MaterialIcons\";\r\nimport XMLParser from \"react-xml-parser\";\r\nimport Checkbox from \"expo-checkbox\";\r\nimport * as SplashScreen from \"expo-splash-screen\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer.js\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport { web, ios, android } from \"../accessories/Platform\";\r\nimport { DMCImage } from \"../accessories/accessories\";\r\n// import ArrowSpinner from \"../accessories/ArrowSpinner.js\";\r\nimport * as LocalAuthentication from \"expo-local-authentication\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner.js\";\r\nimport useKeyboardHeight from \"../accessories/KeyboardHeight.js\";\r\n\r\nexport default function Login(props) {\r\n //---------- State Variable declarartion part ----------//\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { navigation, from = \"\", performAction = null, loginType = \"\" } = props;\r\n\r\n const [logInDetails, setLoginDetails] = useState({});\r\n const [emialSentTo, setEmailSentTo] = useState(null);\r\n const [currentPage, setCurrentPage] = useState(null); //emailOnly\r\n const [isPasswordSecure, setIsPasswordSecure] = useState(true);\r\n const [isTerminated, setIsTerminated] = useState(false);\r\n const [isRemember, setIsRemember] = useState(false);\r\n const [appIsReady, setAppIsReady] = useState(false);\r\n const [hideSecureEmail, setHideSecureEmail] = useState(false);\r\n const [passwordMisMatch, setPasswordMisMatch] = useState(\"\");\r\n const [deviceId, setDeviceId] = useState(null);\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n const [accesscodeWarningMsg, setAccesscodeWarningMsg] = useState(null);\r\n const [headerText, setHeaderText] = useState(\r\n `~~~Let's get started by entering a cell phone number or email address.`\r\n );\r\n\r\n const [credentials, setCredentials] = useState({\r\n userName: \"\",\r\n password: \"\",\r\n AccessCode: \"\",\r\n formatedUserName: \"\",\r\n });\r\n const [errorMessage, setErrorMessage] = useState({\r\n text: \"\",\r\n color: \"red\",\r\n });\r\n const [newPassword, setNewPassword] = useState({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n const [newIsPasswordSecure, setNewIsPasswordSecure] = useState({\r\n password: true,\r\n confirmPassword: true,\r\n });\r\n const [newPasswordMessage, setNewPasswordMessage] = useState({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n const [webPageURL, setWebPageURL] = useState(\r\n // \"../../../BorrowerApplication/Presentation/Webforms/DirectDefault.aspx?Skip=1&SessionId={66C11203-4FED-4F93-9137-9D98BD6970A1}\"\r\n null\r\n );\r\n const [biometricDetails, setBiometricDetails] = useState({\r\n WebloginId: props?.route?.params?.WebLoginId || null,\r\n UserName: props?.route?.params?.UserName || null,\r\n });\r\n const [complianceMsg, setComplianceMsg] = useState(false);\r\n const CompMsg = `Message and data rates may apply\\nMessage Frequency Varies\\nReply “HELP” for help, Reply “STOP” to cancel.`;\r\n const [complianceURL, setcomplianceURL] = useState(null);\r\n //--------------------------------------------//\r\n\r\n //---------- Function declarartion part ----------//\r\n const handleEmailSentTo = (value) => {\r\n //Showing (Sent) messange under emial & cellphone\r\n setEmailSentTo(value);\r\n //Hide (Sent) messange under emial & cellphone after 2000ms\r\n setTimeout(() => {\r\n setEmailSentTo(null);\r\n }, 3000);\r\n };\r\n const updateCredential = (event) => {\r\n //Handling field value change\r\n let { name, value, isFormat } = event,\r\n obj = { [name]: value };\r\n // if (name === \"userName\" && value !== \"\") {\r\n // value = value\r\n // .replaceAll(\"-\", \"\")\r\n // .replaceAll(\"(\", \"\")\r\n // .replaceAll(\")\", \"\")\r\n // .replaceAll(\" \", \"\");\r\n // }\r\n if (isFormat)\r\n obj = { [name]: value, formatedUserName: FormatPhoneLogin(value) };\r\n else if (name === \"userName\")\r\n obj = { [name]: value, formatedUserName: value };\r\n setCredentials({ ...credentials, ...obj });\r\n };\r\n\r\n const handleClearState = () => {\r\n //resetting the screen after 1000ms\r\n setTimeout(() => {\r\n setProcessingStatus(null);\r\n setIsPasswordSecure(true);\r\n setCredentials({\r\n userName: \"\",\r\n password: \"\",\r\n AccessCode: \"\",\r\n });\r\n setBiometricDetails({\r\n WebloginId: biometricDetails?.WebloginId || null,\r\n UserName: biometricDetails?.UserName || null,\r\n });\r\n setErrorMessage({ text: \"\", color: \"red\" });\r\n setLoginDetails({});\r\n setIsRemember(false);\r\n setIsTerminated(false);\r\n setHideSecureEmail(false);\r\n setCurrentPage(\"emailOnly\");\r\n setHeaderText(\r\n `~~~Let's get started by entering a cell phone number or email address.`\r\n );\r\n }, 0);\r\n };\r\n const handleUserNameValidation = () => {\r\n //Validating the email and cellphone here\r\n try {\r\n let UserName = credentials[\"userName\"]\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n if (\r\n UserName === \"\" &&\r\n headerText.indexOf(`Let's create an account`) !== -1\r\n ) {\r\n setErrorMessage({ text: \"\" });\r\n return true;\r\n } else if (Number(UserName) > 0 && UserName.length !== 10) {\r\n setErrorMessage({ text: \"Please enter a valid phone number.\" });\r\n return true;\r\n } else if (!validateEmail(UserName) && UserName.length !== 10) {\r\n setErrorMessage({\r\n text: \"Please enter a valid email address or Cell Phone number.\",\r\n });\r\n return true;\r\n }\r\n } catch (error) {\r\n console.error(\"Error from handleUserNameValidation ====> \", error);\r\n }\r\n };\r\n const handleNextClick = (flag) => {\r\n // console.log(logInDetails);\r\n // return;\r\n try {\r\n //---------- if re-entering same login id - will return here. ----------//\r\n let Emailoutside =\r\n logInDetails[\"Emailoutside\"] || logInDetails[\"EmailOutside\"];\r\n updateCredential({\r\n name: \"formatedUserName\",\r\n value: credentials[\"userName\"],\r\n isFormat: true,\r\n });\r\n if (\r\n Emailoutside?.toString().toLocaleLowerCase() ===\r\n credentials[\"userName\"]?.toString().toLocaleLowerCase() ||\r\n logInDetails[\"CellPhone\"]?.toString().toLocaleLowerCase() ===\r\n credentials[\"userName\"]?.toString().toLocaleLowerCase()\r\n ) {\r\n return false;\r\n }\r\n //------------------------------------------------//\r\n setLoginDetails({}); //Clear details if exist\r\n\r\n //---------- Validating username ----------//\r\n\r\n if (handleUserNameValidation()) return false;\r\n if (flag) return false;\r\n setComplianceMsg(false);\r\n setProcessingStatus(\"Next\");\r\n //------------------------------------------------//\r\n //---------- Checking the login exist or not ----------//\r\n handleAPI({\r\n name: \"GetUserNameExists\",\r\n params: { userName: credentials[\"userName\"] },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n\r\n if (parseInt(response[\"UserExists\"]) === 1) {\r\n //Login exist - proceed next step\r\n // console.log(\"response\", response);\r\n // setHeaderText(\r\n // `~~~Welcome back ${response[\"UserDisplayName\"]}. Please select a login option below.`\r\n // );\r\n setHeaderText(`~~~CustomHeader~~~${response[\"UserDisplayName\"]}`);\r\n if (parseInt(response[\"AccountTerminated\"]) === 1) {\r\n setCurrentPage(\"loginOption\");\r\n setHeaderText(\"~~~Select your login method\");\r\n setLoginDetails({ ...response });\r\n } else handleGetDeviceId(response);\r\n } else if (parseInt(response[\"UserExists\"]) === 0) {\r\n //login not exist - entering signup process\r\n navigate(\"Signup\", {\r\n userName: credentials[\"userName\"],\r\n deviceId: deviceId,\r\n });\r\n handleClearState(); //resetting the screen\r\n }\r\n });\r\n //------------------------------------------------//\r\n } catch (error) {\r\n setProcessingStatus(null);\r\n log(\"Error from handleNextClick ====> \", error);\r\n }\r\n };\r\n const handleGetDeviceId = (logDetails) => {\r\n let userName = logDetails[\"EmailOutside\"] || logDetails[\"Emailoutside\"];\r\n //---------- Checking the device id stored for the lognin ----------//\r\n\r\n try {\r\n handleAPI({\r\n name: \"GetDeviceFingerPrintWeb\",\r\n params: { UserName: userName, DeviceId: deviceId },\r\n }).then((response) => {\r\n try {\r\n response = response.split(\"~\");\r\n let obj = {\r\n deviceIdExist: Number(response[0]) || 0,\r\n saveCredential: response[1] || 0,\r\n };\r\n logDetails = { ...logDetails, ...obj };\r\n } catch (error) {\r\n log(\"Error from ====> GetDeviceFingerPrintWeb\", error);\r\n }\r\n handleCreateSessionWebLogin(logDetails);\r\n });\r\n } catch (error) {\r\n log(\"Error from handleGetDeviceId ====> \", error);\r\n }\r\n //------------------------------------------------//\r\n };\r\n const handleCreateSessionWebLogin = (logDetails) => {\r\n try {\r\n //---------- Creating new seesion for the lognin ----------//\r\n let { WebLoginId } = logDetails;\r\n handleAPI({\r\n name: \"CreateSessionWrapper\",\r\n params: { WebLoginId: WebLoginId },\r\n }).then((response) => {\r\n response = response.split(\"~\");\r\n\r\n let res = { SessionId: response[0], loginName: response[1] };\r\n logDetails = { ...logDetails, ...res };\r\n if (logDetails[\"isForgotPassword\"]) {\r\n //For forgot password flow\r\n logDetails = { ...logInDetails, ...logDetails };\r\n handleGetNextStepWeb(logDetails);\r\n } else {\r\n //General flow for to login\r\n handleCheckPasscodeExpired(logDetails);\r\n }\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCreateSessionWebLogin ====> \", error);\r\n }\r\n //------------------------------------------------//\r\n };\r\n const handleOpenPage = (page) => {\r\n let URL = \"\";\r\n\r\n if (page == 1) {\r\n URL = `https://www.directmortgage.com/terms-of-use/`;\r\n }\r\n if (page == 2) {\r\n URL = `https://www.directmortgage.com/privacy-policy/`;\r\n }\r\n\r\n setcomplianceURL(URL);\r\n setWebPageURL(URL);\r\n };\r\n const handleGetNextStepWeb = async (logDetails) => {\r\n try {\r\n //---------- Get which page to enter based on user type ----------//\r\n let { SessionId, UserType } = logDetails;\r\n handleAPI({\r\n name: \"GetNextStepWeb\",\r\n params: { SessionId: SessionId, username: \"\", IP: \"::1\" },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n\r\n let URL = response[\"Column1\"];\r\n if (URL != \"\" && URL != null && URL != undefined) {\r\n URL = `${URL}&Skip=1`;\r\n // if (UserType === \"C\") {\r\n // }\r\n URL = `BorrowerWelcome`;\r\n let obj = { URL: URL };\r\n logDetails = { ...logDetails, ...obj };\r\n logDetails = { ...logInDetails, ...logDetails };\r\n if (UserType === \"E\") {\r\n handleCheckIsSignUpdoneWeb(logDetails);\r\n return false;\r\n }\r\n\r\n setLoginDetails(logDetails); //Storing login details in state\r\n }\r\n });\r\n } catch (error) {\r\n log(\"Error from handleGetNextStepWeb ====> \", error);\r\n }\r\n //------------------------------------------------//\r\n };\r\n const handleCheckIsSignUpdoneWeb = async (logDetails) => {\r\n //---------- Checking signup process is completed or still pending ----------//\r\n try {\r\n let { SessionId, URL, WebLoginId } = logDetails;\r\n await handleAPI({\r\n name: \"CheckIsSignUpdoneWeb\",\r\n params: { SessionId: SessionId },\r\n }).then((response) => {\r\n if (response !== \"{}\") {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n let {\r\n IsSignUpComplete,\r\n ApprovalStatus,\r\n ApprovalTaskExists,\r\n CertDone,\r\n EmpNum,\r\n CompNum,\r\n logintype,\r\n } = response;\r\n let SignUpURL = \"\";\r\n SignUpURL =\r\n Number(IsSignUpComplete) === 0 || Number(IsSignUpComplete) === 2\r\n ? `../../../BorrowerApplication/Presentation/Webforms/SignUpWizard.aspx?WID=${WebLoginId}&SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}&FromLanding=0&FromProfile=&PType=${logintype}`\r\n : Number(IsSignUpComplete) === -3 &&\r\n Number(ApprovalStatus) === 3 &&\r\n Number(CertDone) === -1\r\n ? `../../../BorrowerApplication/Presentation/Webforms/SignUpWizard.aspx?WID=${WebLoginId}&SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}&FromLanding=0&FromProfile=&PType=${logintype}`\r\n : Number(IsSignUpComplete) === -3\r\n ? `../../../BorrowerApplication/Presentation/Webforms/SignUpWizard.aspx?WID=${WebLoginId}&SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}&FromLanding=0&FromProfile=&PType=${logintype}`\r\n : Number(ApprovalStatus) === 4 && Number(ApprovalTaskExists) === 0\r\n ? `../../../BorrowerApplication/Presentation/Webforms/NewBrokerApproval.aspx?SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}`\r\n : \"\";\r\n\r\n if (SignUpURL) URL = SignUpURL;\r\n }\r\n logDetails = { ...logDetails, URL: URL };\r\n setLoginDetails(logDetails);\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCheckIsSignUpdoneWeb ====> \", error);\r\n }\r\n //------------------------------------------------//\r\n };\r\n const handleCheckPasscodeExpired = (logDetails) => {\r\n try {\r\n //---------- Checking Password is expired or not for the lognin ----------//\r\n let { WebLoginId, SessionId } = logDetails;\r\n handleAPI({\r\n name: \"CheckPasscodeExpired\",\r\n params: {\r\n WebLoginId: WebLoginId,\r\n SessionId: SessionId,\r\n },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n logDetails = { ...logDetails, ...response };\r\n //---------- Password is expired and not a terminated login - Sending access code to user ----------//\r\n if (\r\n parseInt(response[\"PasscodeExpired\"]) === 1 &&\r\n parseInt(logDetails[\"AccountTerminated\"]) !== 1\r\n ) {\r\n let msg = `${\r\n logDetails[\"UserDisplayName\"]\r\n }!${\"\\n\"}It looks like your passcode has expired. Please validate to renew your passcode.`;\r\n handleAccessCodeLogin(1, logDetails, msg);\r\n }\r\n //--------------------------------------------//\r\n //Manual login flow\r\n else if (logDetails[\"AutoRedirect\"] === undefined) {\r\n setCurrentPage(\"loginOption\");\r\n // setHeaderText(\"~~~Select your login method\");\r\n if (!currentPage === \"enterAccessCode\") {\r\n logDetails = { ...logDetails, isEnterAccessCode: false };\r\n }\r\n }\r\n //Auto redirecting flow\r\n else if (logDetails[\"AutoRedirect\"]) {\r\n handleLogin(undefined, logDetails);\r\n return false;\r\n }\r\n handleGetNextStepWeb(logDetails);\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCheckPasscodeExpired ====> \", error);\r\n }\r\n };\r\n const handleLogin = async (flag, logDetails) => {\r\n //---------- If any actice session is found for the user Showing Procees & Wait option ----------//\r\n if (parseInt(logDetails[\"MultiLogin\"]) === 1 && flag === undefined) {\r\n setCurrentPage(\"multiLogin\");\r\n let { Emailoutside, EmailOutside, UserDisplayName } = logDetails;\r\n setHeaderText(\r\n `~~~${\r\n Emailoutside || EmailOutside || UserDisplayName || \"\"\r\n }!${\"\\n\"}It looks like you're currently logged in on another device. Would you like to proceed?`\r\n );\r\n logDetails = { ...logDetails, AutoRedirectCheck: true };\r\n logDetails = { ...logDetails, ...logInDetails };\r\n setLoginDetails(logDetails);\r\n return false;\r\n }\r\n //--------------------------------------------//\r\n //---------- If User clicked Proceed option - it will close all active session ----------//\r\n if (currentPage === \"setPassword&Login\") {\r\n setProcessingStatus(\"loginNow\");\r\n } else setProcessingStatus(\"validating\");\r\n\r\n if (flag === 1) {\r\n setProcessingStatus(\"proceeding\");\r\n handleCloseOtherSession(logDetails);\r\n }\r\n //--------------------------------------------//\r\n let emailId =\r\n logDetails[\"EmailOutside\"] || logDetails[\"Emailoutside\"] || \"\";\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, Email: emailId };\r\n });\r\n if (isRemember) {\r\n handleSetStoredCredential(1, {\r\n ...logDetails,\r\n ...logInDetails,\r\n DeviceId: deviceId,\r\n }); //Storing details for auto re-direct\r\n handleLogAutoGAEventPasscode(); //Storing login log - auto re-direct\r\n handleAPI({\r\n name: \"SaveDeviceFingerPrintWeb\",\r\n params: {\r\n UserName: logDetails[\"EmailOutside\"] || logDetails[\"Emailoutside\"],\r\n DeviceId: deviceId,\r\n SaveResp: 1,\r\n WebLoginId: logDetails[\"WebLoginId\"],\r\n },\r\n }).then((response) => {});\r\n } else {\r\n handleSetStoredCredential(2); //Clearing details of auto re-direct\r\n handleLogGAEventPasscode(); //Storing login log - Manual\r\n }\r\n //Navigating to mobile application\r\n let { SessionId, UserDisplayName, loginName } = logDetails,\r\n userName = UserDisplayName || loginName || \"\";\r\n\r\n if (logDetails[\"URL\"] === \"BorrowerWelcome\") {\r\n let { startNewLoan } = props?.route?.params || \"\";\r\n if (loginType === \"secureDoc\") {\r\n handleSecureDocLogin(logDetails);\r\n } else {\r\n let { activeLoanCount = 1, activeLoanId = -999 } =\r\n (await handleGetActiveLoan(SessionId)) || {};\r\n\r\n if (startNewLoan || activeLoanCount == 1) {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n ...{ loanId: activeLoanId },\r\n };\r\n });\r\n navigate(\"Home\", {\r\n userName,\r\n SessionId,\r\n loanId: activeLoanId,\r\n });\r\n } else {\r\n SessionId = !SessionId\r\n ? await handleCreateNewSession(logDetails[\"WebLoginId\"])\r\n : SessionId;\r\n navigate(\"DashBoard\", {\r\n userName,\r\n SessionId: SessionId,\r\n });\r\n }\r\n }\r\n } else {\r\n //replacing the session with new session\r\n let url_ = logDetails[\"URL\"].split(\"?\");\r\n let page = url_[0],\r\n queryString = url_[1];\r\n queryString = queryString.split(\"&\");\r\n queryString = queryString\r\n .filter((item) => item.toLowerCase().indexOf(\"sessionid\") === -1)\r\n .join(\"&\");\r\n let url = `${page}?${queryString}&SessionId=${logDetails[\"SessionId\"]}`;\r\n Platform.OS === \"web\"\r\n ? handleOpenURL(url) //Opening default browser with url\r\n : setWebPageURL(url);\r\n }\r\n loginType !== \"secureDoc\" && handleClearState(); //Resetting the screen\r\n };\r\n const handleCloseOtherSession = async (logDetails) => {\r\n await handleAPI({\r\n name: \"CloseOtherSession\",\r\n params: {\r\n WebLoginId: logDetails[\"WebLoginId\"],\r\n SessionId: logDetails[\"SessionId\"],\r\n },\r\n }).then((response) => {\r\n log(\"CloseOtherSession\", response);\r\n });\r\n };\r\n const handleSecureDocLogin = async (logDetails) => {\r\n setErrorMessage({\r\n color: \"#999\",\r\n text: (\r\n <View style={{ flexDirection: \"row\", paddingLeft: 10 }}>\r\n <View style={{ height: 25 }}>\r\n <ArrowSpinner size={15} />\r\n </View>\r\n <CustomText>\r\n {\" \"}\r\n Processing...Please wait...\r\n </CustomText>\r\n </View>\r\n ),\r\n italic: false,\r\n });\r\n\r\n let { SessionId, UserDisplayName, loginName } = logDetails,\r\n userName = UserDisplayName || loginName || \"\";\r\n\r\n let { activeLoanCount = 1, activeLoanId = 0 } =\r\n (await handleGetActiveLoan(SessionId)) || {};\r\n\r\n if (activeLoanCount == 1) {\r\n handleSelectLoan(activeLoanId, SessionId, userName);\r\n } else {\r\n navigate(\"DashBoard\", {\r\n userName,\r\n SessionId,\r\n });\r\n handleClearState();\r\n }\r\n };\r\n const keyboardHeight = ios ? useKeyboardHeight() || 30 : 0;\r\n\r\n const handleSelectLoan = async (loanId, SessionId, userName) => {\r\n if (loanId == 0) {\r\n setErrorMessage({\r\n ...{\r\n color: \"#999\",\r\n text: (\r\n <View style={{ flexDirection: \"row\", paddingLeft: 10 }}>\r\n <View style={{ height: 25 }}>\r\n <ArrowSpinner size={15} />\r\n </View>\r\n <CustomText>\r\n {\" \"}\r\n Loan Creation is in progress. Please wait...\r\n </CustomText>\r\n </View>\r\n ),\r\n italic: false,\r\n },\r\n });\r\n\r\n await handleAPI({\r\n name: \"CreateLoanOnly\",\r\n params: { sessionid: SessionId, empid: 1, EventId: 15 },\r\n })\r\n .then((response) => {\r\n loanId = JSON.parse(response);\r\n if (loanId != 0) {\r\n try {\r\n handleAPI({\r\n name: \"AssociateLoanId_GA\",\r\n params: {\r\n SessionId,\r\n LoanId: loanId,\r\n LoginMethod: \"UploadDocs\",\r\n },\r\n })\r\n .then((response) => {\r\n log(\"response\", response);\r\n })\r\n .catch((e) => log(\"Error from AssociateLoanId_GA ====>\", e));\r\n } catch (error) {}\r\n }\r\n })\r\n .catch((error) => log(\"Error from CreateLoanOnly ====> \", error));\r\n }\r\n\r\n navigate(\"Home\", {\r\n userName,\r\n SessionId,\r\n loanId,\r\n GoToNav: 9,\r\n });\r\n handleClearState();\r\n };\r\n const handleLoginClick = async (flag) => {\r\n //Login with password and Accesscode\r\n //---------- Access Code entering flow ----------//\r\n try {\r\n if (currentPage === \"enterAccessCode\") {\r\n setErrorMessage({ text: \"\" });\r\n if (\r\n parseInt(credentials[\"AccessCode\"]) ===\r\n parseInt(logInDetails[\"AccessCode\"])\r\n ) {\r\n setProcessingStatus(\"validating\");\r\n setLoginDetails({\r\n ...logInDetails,\r\n MaxPasscodeIncorrectLogin: 0,\r\n });\r\n if (\r\n Number(logInDetails[\"UsingSecpwd\"]) === 0 &&\r\n Number(logInDetails[\"deviceIdExist\"]) === 0\r\n ) {\r\n handleAPI({\r\n name: \"SaveDeviceFingerPrintWebOnly\",\r\n params: {\r\n Email:\r\n logInDetails[\"EmailOutside\"] || logInDetails[\"Emailoutside\"],\r\n DeviceId: deviceId,\r\n },\r\n }).then((response) => {});\r\n }\r\n if (logInDetails[\"isForgotPassword\"]) {\r\n //Showing Password set screen\r\n setHeaderText(\"~~~Set your password.\");\r\n setCurrentPage(\"setPassword&Login\");\r\n return false;\r\n }\r\n //---------- resetting password expired flag ----------//\r\n handleAPI({\r\n name: \"UpdatePasscode\",\r\n params: {\r\n refId: logInDetails[\"WebLoginId\"],\r\n },\r\n }).then((response) => {});\r\n //--------------------------------------------//\r\n //---------- If cell phone is not exist in the login then showing option to add ----------//\r\n\r\n if (\r\n Object.keys(biometricDetails).length == 0 &&\r\n !logInDetails[\"isShowedBioMetricOption\"]\r\n ) {\r\n if (await isFaceIdAvailable()) {\r\n setCurrentPage(\"bioMetricOption\");\r\n setHeaderText(\r\n `~~~Optional. Do you want to Enable ${\r\n ios ? \"Face\" : \"Touch\"\r\n } ID for Login.`\r\n );\r\n\r\n setLoginDetails({\r\n ...logInDetails,\r\n isShowedBioMetricOption: true,\r\n });\r\n return false;\r\n }\r\n }\r\n if (\r\n (logInDetails[\"CellPhone\"] === undefined ||\r\n logInDetails[\"CellPhone\"] === null ||\r\n logInDetails[\"CellPhone\"] === \"\") &&\r\n flag !== -1\r\n ) {\r\n setCurrentPage(\"addCellPhone\");\r\n setHeaderText(\r\n \"~~~Optional. Add a Cell Phone Number to your account.\"\r\n );\r\n setLoginDetails(logInDetails);\r\n return false;\r\n }\r\n\r\n if (hideSecureEmail && flag !== -1) {\r\n handleAPI({\r\n name: \"SavePhoneToAccount\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n Phone: logInDetails[\"CellPhone\"],\r\n },\r\n }).then((response) => {\r\n handleLoginClick(-1);\r\n });\r\n return false;\r\n }\r\n //--------------------------------------------//\r\n\r\n handleLogin(flag, logInDetails); //General login process\r\n }\r\n //Handling entering invalid access code\r\n else {\r\n setProcessingStatus(null);\r\n setErrorMessage({ text: \"Invalid Access Code.\" });\r\n let MaxPasscodeIncorrectLogin =\r\n parseInt(logInDetails[\"MaxPasscodeIncorrectLogin\"] || 0) + 1;\r\n setLoginDetails({\r\n ...logInDetails,\r\n MaxPasscodeIncorrectLogin: MaxPasscodeIncorrectLogin,\r\n });\r\n handleLogFailedLoginEvent(\"Invalid Access Code.\");\r\n if (MaxPasscodeIncorrectLogin === 5) {\r\n setHeaderText(\r\n `2nd Notice. ~~~This Login attempt has been blocked. The maximum login attempts have been exceeded. We have ${\r\n credentials[\"userName\"].indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code. Enter it below.`\r\n );\r\n handleLogFailedLoginEvent(\r\n `This Login attempt has been blocked. The maximum login attempts have been exceeded. We have ${\r\n credentials[\"userName\"].indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code. Enter it below.`\r\n );\r\n }\r\n //Reached max limit then terminating the user\r\n if (MaxPasscodeIncorrectLogin > 10) {\r\n handleAPI({\r\n name: \"TerminateUserAccount\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n },\r\n }).then((response) => {\r\n setIsTerminated(true);\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n });\r\n }\r\n }\r\n }\r\n //Multiple active session\r\n else if (currentPage === \"multiLogin\" && flag === 1) {\r\n setErrorMessage({ text: \"\" });\r\n setProcessingStatus(\"proceeding\");\r\n handleLogin(flag, logInDetails);\r\n }\r\n //Enter password flow\r\n else {\r\n if (handleUserNameValidation()) {\r\n if (credentials[\"userName\"] === \"\")\r\n setErrorMessage({ text: \"Invalid Username\" });\r\n return false;\r\n }\r\n if (credentials[\"password\"] === \"\") {\r\n setErrorMessage({ text: \"Invalid Password\" });\r\n return false;\r\n }\r\n setProcessingStatus(\"validating\");\r\n //Validating the credention is correct or not\r\n handleAPI({\r\n name: \"ValidateLoginWithEmailorPhone\",\r\n params: {\r\n UserName: credentials[\"userName\"],\r\n Password: credentials[\"password\"],\r\n SessionId: logInDetails[\"SessionId\"],\r\n },\r\n }).then((response) => {\r\n try {\r\n response = JSON.parse(response)[\"Table\"][0][\"Column1\"].toString();\r\n response = new XMLParser().parseFromString(response)[\"children\"][0][\r\n \"attributes\"\r\n ];\r\n\r\n response[\"SessionId\"] = logInDetails[\"SessionId\"];\r\n response[\"MultiLogin\"] = response[\"MultiLoginModel\"];\r\n response[\"WebLoginId\"] = logInDetails[\"WebLoginId\"];\r\n response = { ...logInDetails, ...response };\r\n setLoginDetails(response);\r\n let { UserId } = response;\r\n //Invalid credentials\r\n if (UserId == 0) {\r\n setProcessingStatus(null);\r\n setErrorMessage({ text: \"Invalid Username or Password.\" });\r\n handleLogFailedLoginEvent(\"Invalid Username or Password\");\r\n\r\n // let MaxPasscodeIncorrectLogin =\r\n // parseInt(logInDetails[\"MaxPasscodeIncorrectLogin\"] || 0) + 1;\r\n // setLoginDetails({\r\n // ...response,\r\n // ...{\r\n // MaxPasscodeIncorrectLogin: MaxPasscodeIncorrectLogin,\r\n // },\r\n // });\r\n\r\n return false;\r\n }\r\n //Terminated User\r\n else if (UserId == -99) {\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n handleLogFailedLoginEvent(\"This account is terminated.\");\r\n setIsTerminated(true);\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Blocked User\r\n else if (UserId == -98) {\r\n handleLogFailedLoginEvent(\"This user account has been blocked\");\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1);\r\n else handleAccessCodeLogin(2);\r\n // setErrorMessage({\r\n // text: \"This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\",\r\n // color: \"#999\",\r\n // });\r\n setErrorMessage({\r\n text: \"\",\r\n });\r\n setLoginDetails({\r\n ...response,\r\n AccountLocked: 1,\r\n });\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Missing Manditory Info.\r\n else if (UserId == -97) {\r\n handleLogFailedLoginEvent(\r\n \"This user login is missing the required account information\"\r\n );\r\n setErrorMessage({\r\n text: \"This user login is missing the required account information. Please contact MakeMeAware@directcorp.com.\",\r\n color: \"#999\",\r\n });\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Blocked User and sending Access code to user\r\n else if (UserId == -96) {\r\n handleLogFailedLoginEvent(\r\n \"This Login attempt has been blocked. The maximum allowed login attempts has been exceeded\"\r\n );\r\n // setErrorMessage({\r\n // text: \"This Login attempt has been blocked. The maximum allowed login attempts has been exceeded.\",\r\n // color: \"#999\",\r\n // });\r\n setErrorMessage({\r\n text: \"\",\r\n });\r\n let logDetails_ = { ...response, attemptExceed: 1 };\r\n setLoginDetails(logDetails_);\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1, logDetails_);\r\n else handleAccessCodeLogin(2, logDetails_);\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Blocked User\r\n else if (UserId == -95) {\r\n handleLogFailedLoginEvent(\"This user account has been blocked.\");\r\n setErrorMessage({\r\n text: \"This user account has been blocked. To Unblock this login, please contact MakeMeAware@directcorp.com.\",\r\n color: \"#999\",\r\n });\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n if (\r\n Number(response[\"UsingSecpwd\"]) === 0 &&\r\n Number(response[\"deviceIdExist\"]) === 0 &&\r\n logInDetails[\"WebLoginId\"] !== 427418 // Exception for iOS submission\r\n ) {\r\n let msg = `${\r\n response[\"UserDisplayName\"]\r\n }!${\"\\n\"}We recognize you, just not this specific device. We've ${\r\n credentials[\"userName\"].indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code just to verify it's really you. Enter it below.`;\r\n\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1, response, msg);\r\n else handleAccessCodeLogin(2, response, msg);\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n\r\n //Valid credential - redirectng to corresponding page\r\n\r\n handleLogin(flag, response);\r\n } catch (e) {\r\n handleLogFailedLoginEvent(\"Database error\");\r\n Alert.alert(\r\n \"Database error. Please try again or contact MakeMeAware@directcorp.com for additional assistance.\"\r\n );\r\n log(\"Error from ValidateLoginWithEmailorPhone ====> \", e);\r\n }\r\n });\r\n }\r\n } catch (error) {\r\n log(\"Error from handleLoginClick ====> \", error);\r\n }\r\n };\r\n const handleLogGAEventPasscode = () => {\r\n //Storing login event details for Manual process\r\n try {\r\n handleAPI({\r\n name: \"fnLogGAEvent_passcode\",\r\n params: {\r\n UserWebloginId: logInDetails[\"WebLoginId\"],\r\n device: \"mobile\",\r\n LO: 0,\r\n fromAction: \"DWLogin\",\r\n Prevpage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n },\r\n }).then((response) => {});\r\n } catch (error) {\r\n log(\"Error from handleLogGAEventPasscode ====> \", error);\r\n }\r\n };\r\n const handleLogAutoGAEventPasscode = () => {\r\n //Storing login event details for Auto redirecting process\r\n try {\r\n handleAPI({\r\n name: \"LogGAEvent\",\r\n params: {\r\n UserWebloginId: logInDetails[\"WebLoginId\"],\r\n device: \"mobile\",\r\n LO: 0,\r\n fromAction: \"DWLogin\",\r\n Prevpage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n },\r\n }).then((response) => {});\r\n } catch (error) {\r\n log(\"Error from handleLogAutoGAEventPasscode ====> \", error);\r\n }\r\n };\r\n const handleLogFailedLoginEvent = async (Errmsg) => {\r\n //Storing login failed event details like invalid,Terminated login,etc...\r\n let strobj = {\r\n UserName: credentials[\"userName\"],\r\n device: \"mobile\",\r\n Errmsg: Errmsg,\r\n IPAddress: deviceId || \"\",\r\n emailmethod: \"DWLogin\",\r\n LO: 0,\r\n PrevPage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n };\r\n try {\r\n handleAPI({\r\n name: \"LogFailedLoginEvent\",\r\n params: strobj,\r\n }).then((response) => {});\r\n } catch (error) {\r\n log(\"Error from handleLogFailedLoginEvent ====> \", error);\r\n }\r\n };\r\n const handleCreateNewAccClick = () => {\r\n //Create New accout flow\r\n if (credentials[\"userName\"] === \"\") {\r\n setHeaderText(\r\n \"~~~Let's create an account. Begin by entering a cell phone number or email address.\"\r\n );\r\n setErrorMessage({ text: \"\" });\r\n return false;\r\n }\r\n //Checking the user already exist or not\r\n handleAPI({\r\n name: \"GetUserNameExists\",\r\n params: { userName: credentials[\"userName\"] },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n response = { ...logInDetails, ...response };\r\n setLoginDetails(response);\r\n if (parseInt(response[\"UserExists\"]) === 1) {\r\n //User exist - next screen to login\r\n setCurrentPage(\"emailOnly\");\r\n\r\n setHeaderText(\r\n `~~~Let's get started by entering a cell phone number or email address.`\r\n );\r\n } else if (parseInt(response[\"UserExists\"]) === 0) {\r\n //User not exist - Navigate to signup screen\r\n navigate(\"Signup\", {\r\n userName: credentials[\"userName\"],\r\n deviceId: deviceId,\r\n });\r\n handleClearState(); //Resetting the screen\r\n }\r\n });\r\n };\r\n const getSecureEmail = () => {\r\n //Showing Email like -> test.....@gmail.cm\r\n let Email = \"\";\r\n //Hide emial when cell phone adding optoion\r\n if (hideSecureEmail) return <></>;\r\n if (\r\n credentials[\"userName\"] === \"\" ||\r\n credentials[\"userName\"].indexOf(\"@\") === -1\r\n ) {\r\n if (logInDetails[\"EmailOutside\"] !== undefined)\r\n Email = logInDetails[\"EmailOutside\"].split(\"@\");\r\n else return <></>;\r\n } else Email = credentials[\"userName\"].split(\"@\");\r\n return (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleAccessCodeLogin(1);\r\n }}\r\n bold={true}\r\n style={[styles.footText, { alignSelf: \"flex-start\", fontSize: 13 }]}\r\n >\r\n Resend via email\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 13, color: \"#999\", marginTop: 5 }}\r\n >\r\n {`${Email[0].slice(0, 2)}...${Email[1]}`}\r\n </CustomText>\r\n {emialSentTo === 1 && (\r\n <CustomText bold={true} style={{ color: \"#0000ff\", fontSize: 12 }}>\r\n Sent\r\n </CustomText>\r\n )}\r\n </>\r\n );\r\n };\r\n const getSecurePhone = () => {\r\n //Showing cellphone like -> xxx-xxx-8574\r\n let Phone = logInDetails[\"CellPhone\"];\r\n if (Phone === undefined) {\r\n if (\r\n Number(credentials[\"userName\"]) !== NaN &&\r\n credentials[\"userName\"].indexOf(\"@\") === -1\r\n ) {\r\n Phone = credentials[\"userName\"];\r\n }\r\n } else Phone = Phone.slice(-4);\r\n return (\r\n <>\r\n {Phone === \"\" ? (\r\n <></>\r\n ) : (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleAccessCodeLogin(2);\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n { alignSelf: \"flex-start\", fontSize: 13 },\r\n ]}\r\n >\r\n Resend via text message\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 13, color: \"#999\", marginTop: 5 }}\r\n >\r\n {`xxx-xxx-${Phone}`}\r\n </CustomText>\r\n {emialSentTo === 2 && (\r\n <CustomText\r\n bold={true}\r\n style={{ color: \"#0000ff\", fontSize: 12 }}\r\n >\r\n Sent\r\n </CustomText>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n const handleCreateAccessCode = (WebLoginId, reff, logDetails) => {\r\n //Sending Access code to user for login,forgot password,etc...\r\n\r\n try {\r\n handleAPI({\r\n name: \"CreateAccessCodeUsingWeblogin\",\r\n params: { Id: WebLoginId, reff: reff },\r\n }).then((response) => {\r\n //For showing (Sent) text under the emial & cellphone\r\n response = JSON.parse(response)[\"Table\"][0][\"Column1\"].toString();\r\n\r\n response = response.split(\"|\");\r\n if (response.length > 2) {\r\n let msg = \"\";\r\n if (Number(response[3]) === 0) msg = response[1];\r\n setAccesscodeWarningMsg(msg);\r\n\r\n logDetails = {\r\n ...logDetails,\r\n ...{ AccessCode: response[2], isEnterAccessCode: true },\r\n };\r\n logDetails = { ...logDetails, ...logInDetails };\r\n\r\n setLoginDetails(logDetails);\r\n handleGetNextStepWeb(logDetails);\r\n }\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCreateAccessCode ====> \", error);\r\n }\r\n };\r\n\r\n const handleLoginWithBioMetric = async () => {\r\n try {\r\n const enroll = await LocalAuthentication.isEnrolledAsync(),\r\n iBiometricWebLoginId = biometricDetails[\"WebloginId\"];\r\n if (enroll) {\r\n const biometricAuth = await LocalAuthentication.authenticateAsync({\r\n promptMessage: `Confirm your ${ios ? \"Face\" : \"Touch\"} ID`,\r\n disableDeviceFallback: true,\r\n cancelLabel: \"Cancel\",\r\n });\r\n\r\n if (biometricAuth.success) {\r\n console.log(\"handleLoginWithBioMetric\");\r\n setBiometricDetails((prevBiometricDetails) => {\r\n return { ...prevBiometricDetails, isLogin: true };\r\n });\r\n setHeaderText(\r\n `~~~Welcome Back ${biometricDetails[\"UserName\"]}\\nWe're logging you in...`\r\n );\r\n let SessionId = await handleCreateNewSession(iBiometricWebLoginId);\r\n let { activeLoanCount = 1, activeLoanId = -999 } =\r\n (await handleGetActiveLoan(SessionId)) || {};\r\n\r\n if (activeLoanCount == 1) {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n ...{ loanId: activeLoanId },\r\n };\r\n });\r\n\r\n navigate(\"Home\", {\r\n userName: biometricDetails[\"UserName\"],\r\n SessionId,\r\n loanId: activeLoanId,\r\n });\r\n } else {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n ...{ Path: \"DashBoard\", SessionId },\r\n };\r\n });\r\n navigate(\"DashBoard\", {\r\n SessionId,\r\n });\r\n }\r\n handleClearState();\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const handleAccessCodeLogin = (reff, logDetails, msg) => {\r\n //Pre- sete of access code sending process\r\n let WebLoginId = logInDetails[\"WebLoginId\"];\r\n try {\r\n logDetails = logDetails || [];\r\n msg = msg || \"\";\r\n if (handleUserNameValidation()) {\r\n setErrorMessage({\r\n color: \"#999\",\r\n text: \"This is not a valid username. Please enter a valid username to use the Forgot Password function.\",\r\n italic: false,\r\n });\r\n return false;\r\n }\r\n setLoginDetails({ ...logInDetails, ...logDetails });\r\n //Getting weblogin details is not exist already\r\n if (WebLoginId == undefined) {\r\n handleAPI({\r\n name: \"GetUserNameExists\",\r\n params: { userName: credentials[\"userName\"] },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n WebLoginId = response[\"WebLoginId\"];\r\n logDetails = { ...logDetails, ...response, ...logInDetails };\r\n logDetails = handleSetAccessCodeHeader(logDetails, msg, reff);\r\n handleEmailSentTo(reff);\r\n handleCreateAccessCode(WebLoginId, reff, logDetails);\r\n return false;\r\n });\r\n } else {\r\n logDetails = { ...logDetails, ...logInDetails };\r\n logDetails = handleSetAccessCodeHeader(logDetails, msg, reff);\r\n handleEmailSentTo(reff);\r\n handleCreateAccessCode(WebLoginId, reff, logDetails);\r\n }\r\n } catch (error) {\r\n log(\"Error form handleAccessCodeLogin ====> \", error);\r\n }\r\n };\r\n const handleSetAccessCodeHeader = (logDetails, msg, reff) => {\r\n msg = msg || \"\";\r\n\r\n if (logDetails[\"AccountLocked\"] === 1) {\r\n logDetails = { ...logInDetails, isValidateAccesscode: true };\r\n msg = \"This user account is locked. \";\r\n msg += `We've ${\r\n reff === 1 ? \"Emailed\" : \"Text\"\r\n } you an access code!\\nEnter it below.`;\r\n setErrorMessage({ text: \"\" });\r\n } else if (logDetails[\"attemptExceed\"] === 1) {\r\n logDetails = { ...logInDetails, isValidateAccesscode: true };\r\n if (logDetails[\"MaxPasscodeIncorrectLogin\"] === 5) {\r\n msg = `2nd Notice. ~~~This Login attempt has been blocked. The maximum login attempts have been exceeded.`;\r\n } else {\r\n msg = `~~~This Login attempt has been blocked. ~~~The maximum login attempts have been exceeded.`;\r\n }\r\n msg += `We've ${\r\n reff === 1 ? \"Emailed\" : \"Text\"\r\n } you an access code!\\nEnter it below.`;\r\n }\r\n\r\n setCurrentPage(\"enterAccessCode\");\r\n setHeaderText(\r\n \"~~~\" +\r\n (msg ||\r\n `We've ${\r\n reff === 1 ? \"Emailed\" : \"Text\"\r\n } you an access code!\\nEnter it below.`)\r\n );\r\n return logDetails;\r\n };\r\n const handleLogInValidation = () => {\r\n log(\"logInDetails\", logInDetails);\r\n setAccesscodeWarningMsg(\"\");\r\n handleLoginClick();\r\n };\r\n\r\n const getHeaderText = () => {\r\n //Showing the header text\r\n let header = headerText.replaceAll(\"~~~~~~\", \"\");\r\n header = header.split(\"~~~\");\r\n return (\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={[styles.headText, { color: isTerminated ? \"red\" : \"#999\" }]}\r\n >\r\n {header[0] !== \"\" ? (\r\n <CustomText bold={true} style={[styles.headText, { color: \"red\" }]}>\r\n {header[0]}{\" \"}\r\n </CustomText>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {header[1] === \"CustomHeader\" ? (\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={[styles.headText, { fontSize: 17 }]}\r\n >\r\n Welcome back{\" \"}\r\n <CustomText\r\n bold={true}\r\n style={[styles.headText, { fontSize: 17, color: \"black\" }]}\r\n >\r\n {header[2]}\r\n </CustomText>\r\n . Please select a login option below.\r\n </CustomText>\r\n </>\r\n ) : (\r\n <CustomText bold={true} style={[styles.headText, { fontSize: 17 }]}>\r\n {header[1]}\r\n </CustomText>\r\n )}\r\n </CustomText>\r\n </>\r\n );\r\n };\r\n const validatePassword = (key, text) => {\r\n setPasswordMisMatch(\"\");\r\n setNewPassword({ ...newPassword, ...{ [key]: text, key: key } });\r\n };\r\n const navigate = (navigateTo, navigateDetails) => {\r\n let details = { ...navigateDetails, navigation: navigation };\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...details };\r\n });\r\n if (performAction) {\r\n performAction(navigateTo, { ...navigateDetails, loginType });\r\n } else {\r\n navigation.navigate(navigateTo, navigateDetails); // Sample ===> \"signUp\",{}\r\n }\r\n };\r\n //--------------------------------------------//\r\n //---------- handling password setting - validation and messages ----------//\r\n useEffect(() => {\r\n let strength = 0,\r\n key = newPassword[\"key\"],\r\n text = newPassword[key];\r\n if (text !== undefined) {\r\n if (text.length > 6) strength += 1;\r\n if (text.match(/([A-Z])/) && text.match(/([0-9])/)) strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)) strength += 1;\r\n let msg = ``;\r\n if (strength < 3) {\r\n msg = `Password does not meet complexity Requirements.`;\r\n } else {\r\n msg = `Password Meets Complexity Requirements`;\r\n }\r\n if (key === \"confirmPassword\" && text !== newPassword[\"password\"]) {\r\n msg = `Password Does Not Match`;\r\n strength = 0;\r\n }\r\n if (\r\n (newPassword[\"password\"] === \"\" && key === \"password\") ||\r\n (newPassword[\"confirmPassword\"] === \"\" && key === \"confirmPassword\")\r\n ) {\r\n msg = \"\";\r\n } else {\r\n msg = (\r\n <View style={{ marginTop: -10, marginBottom: 10 }}>\r\n <FontAwesome\r\n name={strength < 3 ? \"close\" : \"check\"}\r\n size={22}\r\n color={strength < 3 ? \"red\" : \"green\"}\r\n />\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -20,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n {msg}\r\n </CustomText>\r\n </View>\r\n );\r\n }\r\n if (\r\n key === \"password\" &&\r\n text !== newPassword[\"confirmPassword\"] &&\r\n newPassword[\"confirmPassword\"]?.length > 0\r\n ) {\r\n setNewPasswordMessage((prevNewPasswordMessage) => ({\r\n ...prevNewPasswordMessage,\r\n confirmPasswordMsg: (\r\n <View>\r\n <FontAwesome name=\"close\" size={22} color=\"red\" />\r\n\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -25,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n Password Does Not Match\r\n </CustomText>\r\n </View>\r\n ),\r\n }));\r\n } else if (\r\n key === \"password\" &&\r\n text === newPassword[\"confirmPassword\"] &&\r\n newPassword[\"confirmPassword\"]?.length > 0\r\n ) {\r\n setNewPasswordMessage((prevNewPasswordMessage) => ({\r\n ...prevNewPasswordMessage,\r\n confirmPasswordMsg: (\r\n <View>\r\n <FontAwesome name=\"check\" size={22} color=\"green\" />\r\n\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -25,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n Password Meets Complexity Requirements\r\n </CustomText>\r\n </View>\r\n ),\r\n }));\r\n }\r\n\r\n setNewPasswordMessage((prevNewPasswordMessage) => ({\r\n ...prevNewPasswordMessage,\r\n [`${key}Msg`]: msg,\r\n }));\r\n }\r\n }, [newPassword]);\r\n //--------------------------------------------//\r\n\r\n //---------- Auto redirecting process and getting Visitor id ----------//\r\n useEffect(() => {\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n () => {\r\n return true;\r\n // setContextDetails((prevContextDetails) => {\r\n // return { ...prevContextDetails, Path: \"StartScreen\" };\r\n // });\r\n }\r\n );\r\n return () => {\r\n // handleClearState();\r\n backHandler.remove();\r\n };\r\n }, []);\r\n useEffect(() => {\r\n async function prepare() {\r\n // android && StatusBar.setBackgroundColor(\"#fff\");\r\n // ios && StatusBar.setBarStyle(\"#fff\");\r\n\r\n try {\r\n // await SplashScreen.preventAutoHideAsync();\r\n await new Promise((resolve) => setTimeout(resolve, 20));\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n setAppIsReady(true);\r\n let result = await handleGetStoredCredential();\r\n if (result !== null) {\r\n let logDetails = { ...result, ...logInDetails };\r\n setIsRemember(true);\r\n logDetails = { ...logDetails, ...logInDetails };\r\n setLoginDetails(logDetails);\r\n const { UserDisplayName, loginName } = result;\r\n setHeaderText(\r\n `~~~Welcome Back ${\r\n UserDisplayName || loginName || \"\"\r\n }\\nWe're logging you in...`\r\n );\r\n } else {\r\n setCurrentPage(\"emailOnly\"); //come Here - enterAccessCode -- emailOnly\r\n }\r\n }\r\n //Visitor Id generator\r\n let visitorIdOld = JSON.parse(\r\n (await AsyncStorage.getItem(\"visitorId\")) || null\r\n ),\r\n visitorId = null;\r\n if (visitorIdOld) {\r\n visitorId = visitorIdOld;\r\n } else {\r\n // let randomString = require(\"randomstring\");\r\n // visitorId = randomString.generate(20);\r\n visitorId = generateFingerprint();\r\n visitorId = `D-${visitorId.replaceAll(\"-\", \"\")}`;\r\n visitorId = JSON.stringify(visitorId);\r\n await AsyncStorage.setItem(\"visitorId\", visitorId || null);\r\n }\r\n // if (typeof visitorId == \"string\") visitorId = JSON.parse(visitorId);\r\n setDeviceId(visitorId || \"\");\r\n\r\n let params = {\r\n PageTitle: \"Login\",\r\n PageURL: \"Go Direct\",\r\n device: \"mobile\",\r\n IPAddress: visitorId || 0,\r\n ParentId: 0,\r\n detailsJson: JSON.stringify([\r\n {\r\n Browser: \"Go Direct\",\r\n LoanId: 0,\r\n },\r\n ]),\r\n };\r\n !__DEV__ &&\r\n handleAPI({\r\n name: \"LogDWVisitorsEvent\",\r\n params,\r\n }).then((PageLoadId) => {\r\n handleTrackGA4Events(\"GoDirectMortgage LogIn\", params);\r\n AsyncStorage.setItem(\r\n \"iPageLoadId\",\r\n JSON.stringify(PageLoadId || null)\r\n );\r\n });\r\n }\r\n prepare();\r\n setIsPasswordSecure(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n // let details = JSON.parse(\r\n // (await AsyncStorage.getItem(\"BioMetricDetails\")) || null\r\n // );\r\n // if (!details) {\r\n // details = JSON.parse(\r\n // (await AsyncStorage.getItem(\"bioMetricLoginDetails\")) || null\r\n // );\r\n // if (details.length) details = details[0];\r\n // }\r\n // if (!details) {\r\n deviceId && handleSettingsDetails(deviceId);\r\n // } else {\r\n // setBiometricDetails(details);\r\n // }\r\n })();\r\n }, [deviceId, props]);\r\n\r\n const handleSettingsDetails = async (BioMetric) => {\r\n let bioMetricLoginDetails =\r\n (await AsyncStorage.getItem(\"bioMetricLoginDetails\")) || \"[]\";\r\n bioMetricLoginDetails = JSON.parse(bioMetricLoginDetails);\r\n\r\n if (bioMetricLoginDetails.length) {\r\n setBiometricDetails(bioMetricLoginDetails[0]);\r\n } else {\r\n try {\r\n return await handleAPI({\r\n name: \"GetSettingsForWebLoginAccount\",\r\n params: { WebLoginId: 0, BioMetric },\r\n })\r\n .then(function (response) {\r\n console.log(response);\r\n response = JSON.parse(response)[\"Table\"];\r\n if (response.length > 0) response = response[0];\r\n if (response[\"BioMetricId\"]) setBiometricDetails(response);\r\n else setBiometricDetails({});\r\n })\r\n .catch(function (err) {\r\n console.error(\r\n `Error from GetSettingsForWebLoginAccount ====> ${err}`\r\n );\r\n });\r\n } catch (error) {}\r\n }\r\n };\r\n const handleSaveSettingsDetails = async (flag) => {\r\n handleAPI({\r\n name: \"SaveFaceIdToWebLoginAccount\",\r\n params: { WebLoginId: logInDetails[\"WebLoginId\"], BioMetric: deviceId },\r\n })\r\n .then(function (response) {})\r\n .catch(function (err) {\r\n console.log(`Error from SaveFaceIdToWebLoginAccount ====> ${err}`);\r\n });\r\n };\r\n const handleLocalAuthentication = async () => {\r\n try {\r\n setProcessingStatus(\"biometricAuth\");\r\n const enroll = await LocalAuthentication.isEnrolledAsync();\r\n if (enroll) {\r\n try {\r\n const biometricAuth = await LocalAuthentication.authenticateAsync({\r\n promptMessage: `Confirm your ${ios ? \"Face\" : \"Touch\"} ID`,\r\n disableDeviceFallback: true,\r\n cancelLabel: \"Cancel\",\r\n });\r\n setProcessingStatus(null);\r\n if (biometricAuth.success) {\r\n handleSaveSettingsDetails();\r\n if (\r\n logInDetails[\"CellPhone\"] === undefined ||\r\n logInDetails[\"CellPhone\"] === null ||\r\n logInDetails[\"CellPhone\"] === \"\"\r\n ) {\r\n setCurrentPage(\"addCellPhone\");\r\n setHeaderText(\r\n \"~~~Optional. Add a Cell Phone Number to your account.\"\r\n );\r\n } else {\r\n handleLogin(-1, logInDetails);\r\n }\r\n } else {\r\n setProcessingStatus(null);\r\n handleLogin(-1, logInDetails);\r\n }\r\n } catch (error) {\r\n setProcessingStatus(null);\r\n console.log(error);\r\n }\r\n } else {\r\n Alert.alert(\r\n \"Enable Biometrics\",\r\n \"Please enable biometrics on your device for a secure login experience.\",\r\n [\r\n {\r\n text: \"Ok\",\r\n onPress: () => {\r\n if (ios) {\r\n Linking.openURL(\"app-settings:\");\r\n } else if (android) {\r\n Linking.openSettings();\r\n }\r\n setProcessingStatus(null);\r\n },\r\n },\r\n {\r\n text: \"Cancel\",\r\n onPress: () => {\r\n setProcessingStatus(null);\r\n },\r\n },\r\n ]\r\n );\r\n }\r\n } catch (error) {\r\n Alert.alert(\"Error form handleLocalAuthentication\", error.message);\r\n }\r\n };\r\n //--------------------------------------------//\r\n\r\n //---------- Creating new session when auto redirecting process ----------//\r\n useEffect(() => {\r\n if (\r\n logInDetails[\"AutoRedirect\"] &&\r\n logInDetails[\"AutoRedirectCheck\"] === undefined\r\n ) {\r\n handleCreateSessionWebLogin(logInDetails);\r\n }\r\n }, [isRemember, logInDetails]);\r\n\r\n //--------------------------------------------//\r\n const handleSetBioMetric = async () => {};\r\n const isFaceIdAvailable = async () => {\r\n const hardwareSupport = await LocalAuthentication.hasHardwareAsync(),\r\n available = await LocalAuthentication.supportedAuthenticationTypesAsync();\r\n\r\n return (\r\n hardwareSupport &&\r\n available.includes(\r\n LocalAuthentication.AuthenticationType[\r\n ios ? \"FACIAL_RECOGNITION\" : \"FINGERPRINT\"\r\n ]\r\n )\r\n );\r\n };\r\n //---------- Showing splish screen when app loading ----------//\r\n const onLayoutRootView = useCallback(async () => {\r\n try {\r\n if (appIsReady) await SplashScreen.hideAsync();\r\n } catch (error) {}\r\n }, [appIsReady]);\r\n if (!appIsReady) return <></>;\r\n //--------------------------------------------//\r\n\r\n return (\r\n <>\r\n {webPageURL ? (\r\n <>\r\n <WebPageView url={webPageURL} />\r\n </>\r\n ) : (\r\n <>\r\n <View style={{ backgroundColor: \"#fff\", flex: 1 }}>\r\n <View\r\n onLayout={onLayoutRootView}\r\n style={[\r\n {\r\n maxWidth: 600,\r\n },\r\n ]}\r\n >\r\n {from != \"startScreen\" && <DMCImage />}\r\n <ScrollContainer>\r\n <View\r\n style={[\r\n styles.container,\r\n {\r\n marginBottom: keyboardHeight,\r\n },\r\n ]}\r\n >\r\n <View style={styles.headContainer}>{getHeaderText()}</View>\r\n {!isTerminated && (\r\n <View style={styles.bodyContainer}>\r\n {currentPage === \"emailOnly\" ||\r\n currentPage === \"loginOption\" ||\r\n currentPage === \"enterPassword\" ? (\r\n <>\r\n {!logInDetails[\"AutoRedirect\"] && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n margin: 10,\r\n justifyContent: \"space-between\",\r\n display:\r\n currentPage === \"loginOption\" ||\r\n currentPage === \"enterPassword\"\r\n ? \"none\"\r\n : \"flex\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n width: `${\r\n currentPage === \"emailOnly\" ? \"80%\" : \"100%\"\r\n }`,\r\n }}\r\n >\r\n <InputBox\r\n label=\"Cell Phone or Email\"\r\n autoFocus\r\n type=\"default\"\r\n placeholder=\"Cell Phone or Email\"\r\n onBlur={() => {\r\n if (credentials[\"userName\"] !== \"\") {\r\n handleNextClick();\r\n }\r\n }}\r\n onChangeText={(text) => {\r\n if (Number(text)) setComplianceMsg(true);\r\n else setComplianceMsg(false);\r\n try {\r\n if (\r\n text === \"\" &&\r\n currentPage !== \"emailOnly\"\r\n ) {\r\n setCurrentPage(\"emailOnly\");\r\n setLoginDetails({});\r\n }\r\n updateCredential({\r\n name: \"userName\",\r\n value: text,\r\n });\r\n setErrorMessage({ text: \"\" });\r\n } catch (e) {\r\n log(\"Email or Cell Phone ====> \", e);\r\n }\r\n }}\r\n value={credentials[\"formatedUserName\"]}\r\n validate={\r\n headerText.indexOf(\r\n `Let's create an account`\r\n ) !== -1 && credentials[\"userName\"] === \"\"\r\n }\r\n />\r\n\r\n {(!web &&\r\n biometricDetails?.WebloginId &&\r\n !logInDetails[\"WebLoginId\"]) ||\r\n (!web &&\r\n biometricDetails?.WebloginId &&\r\n logInDetails[\"WebLoginId\"] &&\r\n biometricDetails?.WebloginId ==\r\n logInDetails[\"WebLoginId\"]) ? (\r\n <>\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 15,\r\n top: 15,\r\n }}\r\n onPress={() => {\r\n if (!biometricDetails[\"isLogin\"])\r\n handleLoginWithBioMetric();\r\n }}\r\n >\r\n {biometricDetails[\"isLogin\"] ? (\r\n <View\r\n style={{\r\n width: 25,\r\n height: 25,\r\n }}\r\n >\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={18}\r\n duration={1200}\r\n />\r\n </View>\r\n ) : android ? (\r\n <MaterialIcons\r\n name=\"fingerprint\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n ) : (\r\n <View>\r\n <Image\r\n resizeMode=\"stretch\"\r\n style={{\r\n width: 25,\r\n height: 25,\r\n }}\r\n source={require(\"../../assets/FaceId_Gray.png\")}\r\n />\r\n </View>\r\n )}\r\n </CustomText>\r\n </>\r\n ) : (\r\n <></>\r\n )}\r\n </View>\r\n {currentPage === \"emailOnly\" && (\r\n <>\r\n <IconButton\r\n onPress={() => handleNextClick(true)}\r\n title=\"Next\"\r\n style={{ marginLeft: 3 }}\r\n loading={processingStatus === \"Next\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n />\r\n </>\r\n )}\r\n </View>\r\n )}\r\n </>\r\n ) : null}\r\n {currentPage === \"enterPassword\" && (\r\n <View\r\n style={{ marginHorizontal: 10, marginBottom: -5 }}\r\n >\r\n <View>\r\n <InputBox\r\n label=\"Password\"\r\n autoFocus\r\n secureTextEntry={isPasswordSecure}\r\n placeholder=\"Password\"\r\n onChangeText={(text) => {\r\n setErrorMessage({ text: \"\" });\r\n updateCredential({\r\n name: \"password\",\r\n value: text,\r\n });\r\n }}\r\n // onBlur={handleLogInValidation}\r\n value={credentials[\"password\"]}\r\n />\r\n\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 15,\r\n }}\r\n onPress={() => {\r\n setIsPasswordSecure(!isPasswordSecure);\r\n }}\r\n >\r\n {isPasswordSecure ? (\r\n <FontAwesome\r\n name=\"eye\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n )}\r\n </CustomText>\r\n </View>\r\n </View>\r\n )}\r\n {currentPage === \"enterAccessCode\" && (\r\n <View\r\n style={{ marginHorizontal: 10, marginBottom: -5 }}\r\n >\r\n <InputBox\r\n label=\"Access Code\"\r\n autoFocus\r\n keyboardType=\"numeric\"\r\n placeholder=\"Please enter your access code...\"\r\n onChangeText={(text) => {\r\n updateCredential({\r\n name: \"AccessCode\",\r\n value: text,\r\n });\r\n setErrorMessage({ text: \"\" });\r\n }}\r\n value={credentials[\"AccessCode\"]}\r\n // onBlur={handleLogInValidation}\r\n />\r\n </View>\r\n )}\r\n {currentPage === \"loginOption\" && (\r\n <View\r\n style={{\r\n paddingBottom: 15,\r\n paddingHorizontal: 5,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n alignItems: \"center\",\r\n //marginTop: -20,\r\n }}\r\n >\r\n <IconButton\r\n onPress={(e) => {\r\n if (\r\n parseInt(logInDetails[\"AccountTerminated\"]) ===\r\n 1\r\n ) {\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n handleLogFailedLoginEvent(\r\n \"This account is terminated.\"\r\n );\r\n setIsTerminated(true);\r\n return false;\r\n }\r\n setCurrentPage(\"enterPassword\");\r\n setHeaderText(\r\n \"~~~Please enter your password below.\"\r\n );\r\n }}\r\n title=\"Enter Password\"\r\n />\r\n {/* <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 15,\r\n verticalAlign: \"middle\",\r\n }}\r\n >\r\n or\r\n </CustomText> */}\r\n <IconButton\r\n onPress={(e) => {\r\n log(\"send me a code ====> \", logInDetails);\r\n if (\r\n parseInt(logInDetails[\"AccountTerminated\"]) ===\r\n 1\r\n ) {\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n handleLogFailedLoginEvent(\r\n \"This account is terminated.\"\r\n );\r\n setIsTerminated(true);\r\n return false;\r\n }\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1);\r\n else handleAccessCodeLogin(2);\r\n }}\r\n title=\"Send me a code\"\r\n />\r\n </View>\r\n )}\r\n\r\n {/* {currentPage === \"enterAccessCode\" ||\r\n currentPage === \"enterPassword\" ? (\r\n <>\r\n <IconButton\r\n onPress={handleLogInValidation}\r\n title={\r\n logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]\r\n ? \"Validate Access Code\"\r\n : \"Login\"\r\n }\r\n style={{\r\n marginHorizontal: 10,\r\n marginTop: -15,\r\n marginBottom: 10,\r\n }}\r\n />\r\n </>\r\n ) : null} */}\r\n {currentPage === \"addCellPhone\" && (\r\n <View style={{ margin: 10 }}>\r\n <InputBox\r\n label=\"Cell Phone Number\"\r\n autoFocus\r\n keyboardType=\"numeric\"\r\n placeholder=\"Cell Phone Number\"\r\n onBlur={() => {\r\n let text = logInDetails[\"CellPhone\"] || \"\";\r\n text = text\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n //console.log(13);\r\n setLoginDetails({\r\n ...logInDetails,\r\n ...{\r\n CellPhone: text,\r\n formatedCellPhone: FormatPhoneLogin(text),\r\n },\r\n });\r\n }}\r\n onChangeText={(text) => {\r\n try {\r\n text = text\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n setLoginDetails({\r\n ...logInDetails,\r\n ...{\r\n CellPhone: text,\r\n formatedCellPhone: text,\r\n },\r\n });\r\n } catch (e) {\r\n log(\"Cell Phone Number ====> \", e);\r\n }\r\n }}\r\n value={logInDetails[\"formatedCellPhone\"]}\r\n />\r\n <View\r\n style={{ flexDirection: \"row\", display: \"flex\" }}\r\n >\r\n <IconButton\r\n loading={processingStatus === \"addCellPhone\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n onPress={(e) => {\r\n if (logInDetails[\"CellPhone\"] === \"\") {\r\n setErrorMessage({\r\n text: \"Enter a Cell Phone Number.\",\r\n color: \"#999\",\r\n italic: false,\r\n });\r\n return false;\r\n }\r\n setProcessingStatus(\"addCellPhone\");\r\n setErrorMessage({});\r\n setHideSecureEmail(true);\r\n setCurrentPage(\"enterAccessCode\");\r\n setCredentials({\r\n ...credentials,\r\n AccessCode: \"\",\r\n });\r\n handleAPI({\r\n name: \"SendTextToMobile\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n Phone: logInDetails[\"CellPhone\"],\r\n },\r\n }).then((response) => {\r\n try {\r\n let sList = response.split(\"|\");\r\n if (sList.length > 2) {\r\n if (sList[3] == \"0\")\r\n setErrorMessage({\r\n text: sList[1],\r\n color: \"#999\",\r\n italic: false,\r\n });\r\n\r\n if (sList[3] == \"1\") {\r\n let logDe = {\r\n ...logInDetails,\r\n AccessCode: sList[2],\r\n };\r\n setProcessingStatus(null);\r\n setLoginDetails(logDe);\r\n return false;\r\n }\r\n }\r\n } catch (e) {}\r\n });\r\n return false;\r\n }}\r\n title=\"Save\"\r\n style={{\r\n marginBottom: 10,\r\n }}\r\n />\r\n <IconButton\r\n onPress={async () => {\r\n handleLogin(-1, logInDetails);\r\n }}\r\n title=\"Skip\"\r\n style={{\r\n marginBottom: 10,\r\n marginLeft: 10,\r\n }}\r\n />\r\n </View>\r\n </View>\r\n )}\r\n {currentPage === \"bioMetricOption\" && (\r\n <View\r\n style={{\r\n margin: 10,\r\n flexDirection: \"row\",\r\n display: \"flex\",\r\n justifyContent: \"space-evenly\",\r\n }}\r\n >\r\n <IconButton\r\n loading={processingStatus === \"biometricAuth\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n onPress={handleLocalAuthentication}\r\n title=\"Enable\"\r\n style={{\r\n marginBottom: 5,\r\n }}\r\n />\r\n <IconButton\r\n onPress={() => {\r\n if (\r\n logInDetails[\"CellPhone\"] === undefined ||\r\n logInDetails[\"CellPhone\"] === null ||\r\n logInDetails[\"CellPhone\"] === \"\"\r\n ) {\r\n setCurrentPage(\"addCellPhone\");\r\n setHeaderText(\r\n \"~~~Optional. Add a Cell Phone Number to your account.\"\r\n );\r\n } else {\r\n handleLogin(-1, logInDetails);\r\n }\r\n }}\r\n title=\"Skip\"\r\n style={{\r\n marginBottom: 10,\r\n }}\r\n />\r\n </View>\r\n )}\r\n {errorMessage[\"text\"] !== \"\" && (\r\n <CustomText\r\n bold={true}\r\n italic={\r\n errorMessage[\"italic\"] === undefined ? true : false\r\n }\r\n style={[\r\n styles.errorMessage,\r\n {\r\n color: errorMessage[\"color\"] || \"red\",\r\n marginTop: -5,\r\n marginBottom: 0,\r\n },\r\n ]}\r\n >\r\n {errorMessage[\"text\"]}\r\n </CustomText>\r\n )}\r\n {complianceMsg && (\r\n <>\r\n <CustomText\r\n bold={false}\r\n italic={true}\r\n style={[\r\n styles.cssCompMsg,\r\n {\r\n //color: errorMessage[\"color\"] || \"red\",\r\n marginTop: -5,\r\n },\r\n ]}\r\n >\r\n {CompMsg}\r\n </CustomText>\r\n <View\r\n style={{\r\n display: \"flex\",\r\n marginBottom: 5,\r\n marginLeft: 15,\r\n textDecorationLine: \"none\",\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <CustomText\r\n onPress={() => handleOpenPage(1)}\r\n bold={false}\r\n style={[\r\n styles.footTextNoUnderline,\r\n {\r\n color: \"blue\",\r\n },\r\n ]}\r\n >\r\n Terms and conditions\r\n </CustomText>\r\n <CustomText\r\n onPress={() => handleOpenPage(2)}\r\n bold={false}\r\n style={[\r\n styles.footTextNoUnderline,\r\n {\r\n color: \"blue\",\r\n marginLeft: 15,\r\n },\r\n ]}\r\n >\r\n Privacy Policy\r\n </CustomText>\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"enterPassword\" ||\r\n currentPage === \"enterAccessCode\" ? (\r\n <>\r\n <View\r\n style={{\r\n justifyContent: \"space-between\",\r\n flex: 3,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n flex:\r\n logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]\r\n ? 1.7\r\n : 2,\r\n flexDirection: \"row\",\r\n marginLeft: 10,\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Checkbox\r\n value={isRemember}\r\n onValueChange={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n color={isRemember ? \"#0075ff\" : undefined}\r\n />\r\n <View style={{ flexDirection: \"column\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: 13,\r\n marginLeft: 5,\r\n }}\r\n onPress={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n >\r\n Remember me on this device\r\n </CustomText>\r\n </View>\r\n </View>\r\n <View\r\n style={{\r\n flex:\r\n logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]\r\n ? 1.3\r\n : 1,\r\n }}\r\n >\r\n <IconButton\r\n onPress={handleLogInValidation}\r\n title={\r\n logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]\r\n ? \"Validate Code\"\r\n : \"Login\"\r\n }\r\n style={{\r\n marginHorizontal: 10,\r\n marginBottom: 10,\r\n alignSelf: \"flex-end\",\r\n }}\r\n loading={processingStatus === \"validating\"}\r\n sStyle={{\r\n minWidth: 35,\r\n height: 18,\r\n top: 8,\r\n }}\r\n />\r\n </View>\r\n </View>\r\n {(!logInDetails[\"isForgotPassword\"] &&\r\n !currentPage === \"enterAccessCode\") ||\r\n currentPage === \"enterPassword\" ? (\r\n <>\r\n <View>\r\n <View\r\n style={{\r\n borderBottomColor: \"black\",\r\n borderBottomWidth: 1,\r\n margin: 10,\r\n }}\r\n />\r\n <View\r\n style={{\r\n marginBottom: 20,\r\n marginHorizontal: 10,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: 17,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n }}\r\n bold={true}\r\n >\r\n Troubles? No Worries!\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n }}\r\n >\r\n <CustomText\r\n onPress={() => {\r\n setErrorMessage({ text: \"\" });\r\n if (\r\n credentials[\"userName\"].indexOf(\r\n \"@\"\r\n ) !== -1\r\n )\r\n handleAccessCodeLogin(1, {\r\n isForgotPassword: true,\r\n });\r\n else\r\n handleAccessCodeLogin(2, {\r\n isForgotPassword: true,\r\n });\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n { fontSize: 13 },\r\n ]}\r\n >\r\n Forgot Password?\r\n </CustomText>\r\n <CustomText\r\n italic={true}\r\n bold={true}\r\n style={{ color: \"#999\", fontSize: 12 }}\r\n >\r\n {\" \"}\r\n or just{\" \"}\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n onPress={() => {\r\n try {\r\n if (credentials[\"userName\"] === \"\") {\r\n setErrorMessage({\r\n text: \"Invalid Username\",\r\n });\r\n return false;\r\n }\r\n } catch (e) {\r\n log(\r\n \"Send me a verification code ===> \",\r\n e\r\n );\r\n }\r\n\r\n if (\r\n credentials[\"userName\"].indexOf(\r\n \"@\"\r\n ) !== -1\r\n )\r\n handleAccessCodeLogin(1);\r\n else handleAccessCodeLogin(2);\r\n }}\r\n style={[\r\n styles.footText,\r\n { fontSize: 13 },\r\n ]}\r\n >\r\n Send me a verification code\r\n </CustomText>\r\n </View>\r\n </View>\r\n </View>\r\n </>\r\n ) : null}\r\n </>\r\n ) : null}\r\n {currentPage === \"multiLogin\" && (\r\n <>\r\n <View style={styles.imgMultipleLoginWrapper}>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleCloseOtherSession(logInDetails);\r\n handleClearState();\r\n handleSetStoredCredential(2);\r\n }}\r\n style={{ width: \"50%\" }}\r\n >\r\n <Image\r\n resizeMode=\"contain\"\r\n style={styles.imgMultipleLogin}\r\n source={require(\"../../assets/WaitImg.png\")}\r\n />\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n width: \"50%\",\r\n alignContent: \"center\",\r\n alignSelf: \"center\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(\"proceeding\");\r\n if (logInDetails[\"AutoRedirect\"])\r\n handleLogin(1, logInDetails);\r\n else handleLoginClick(1);\r\n }}\r\n >\r\n <Image\r\n resizeMode=\"contain\"\r\n style={styles.imgMultipleLogin}\r\n source={require(\"../../assets/ProceedImg.png\")}\r\n />\r\n {[\"proceeding\"].includes(processingStatus) && (\r\n <View\r\n style={[\r\n styles.imgMultipleLogin,\r\n {\r\n position: \"absolute\",\r\n height: 160,\r\n width: \"82%\",\r\n backgroundColor: \"#fff\",\r\n },\r\n ]}\r\n >\r\n <ArrowSpinner\r\n size={25}\r\n duration={1500}\r\n isSpinner\r\n style={{\r\n flex: 1,\r\n }}\r\n />\r\n </View>\r\n )}\r\n </TouchableOpacity>\r\n </View>\r\n <View\r\n style={{\r\n margin: 10,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Checkbox\r\n value={isRemember}\r\n onValueChange={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n color={isRemember ? \"#0075ff\" : undefined}\r\n />\r\n <View style={{ flexDirection: \"column\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: 15,\r\n marginLeft: 10,\r\n }}\r\n onPress={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n >\r\n Remember me on this device\r\n {Platform.OS === \"web\" && (\r\n <CustomText\r\n style={{ fontSize: 12, color: \"#999\" }}\r\n bold={true}\r\n italic={true}\r\n >\r\n {\"\\n\"}(not recommended on public computers)\r\n </CustomText>\r\n )}\r\n </CustomText>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"enterAccessCode\" && (\r\n <View style={{ margin: 10 }}>\r\n <View\r\n style={{\r\n borderBottomColor: \"black\",\r\n borderBottomWidth: 1,\r\n marginTop: 0,\r\n }}\r\n />\r\n <View\r\n style={{\r\n marginTop: 10,\r\n marginBottom: 20,\r\n }}\r\n >\r\n {accesscodeWarningMsg && (\r\n <CustomText\r\n style={{\r\n fontSize: 16,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n marginTop: -15,\r\n }}\r\n bold={true}\r\n >\r\n {accesscodeWarningMsg}\r\n </CustomText>\r\n )}\r\n <CustomText\r\n style={{\r\n fontSize: 17,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n }}\r\n bold={true}\r\n >\r\n Didn't get the code?\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <View>{getSecureEmail()}</View>\r\n <View>{getSecurePhone()}</View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n {currentPage === \"setPassword&Login\" && (\r\n <>\r\n <View style={{ margin: 20, marginBottom: 30 }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 18,\r\n color: \"#999\",\r\n marginBottom: 5,\r\n }}\r\n >\r\n Set a password or skip and login.\r\n </CustomText>\r\n </View>\r\n <View\r\n style={{\r\n margin: 20,\r\n marginBottom: 30,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-evenly\",\r\n }}\r\n >\r\n <IconButton\r\n loading={processingStatus === \"loginNow\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(\"loginNow\");\r\n handleLogin(undefined, logInDetails);\r\n }}\r\n title=\"Login Now\"\r\n />\r\n <IconButton\r\n disable={processingStatus === \"loginNow\"}\r\n onPress={() => {\r\n setCurrentPage(\"newPassword\");\r\n setNewPassword({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n setNewPasswordMessage({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n setNewIsPasswordSecure({\r\n password: true,\r\n confirmPassword: true,\r\n });\r\n }}\r\n icon={false}\r\n title=\"Set Password\"\r\n buttonType=\"secondary\"\r\n />\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"newPassword\" && (\r\n <View style={{ marginHorizontal: 10 }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 14,\r\n color: \"#999\",\r\n marginBottom: 25,\r\n }}\r\n >\r\n {`Please create your password below: \r\n\r\nPassword Requirments: \r\nMinimum length of 6 characters, 1 number, 1 capital letter, and 1 special character such as:\r\n(@!*&).`}\r\n </CustomText>\r\n <View>\r\n <View>\r\n <InputBox\r\n label=\"Password\"\r\n autoFocus\r\n type=\"default\"\r\n secureTextEntry={\r\n newIsPasswordSecure[\"password\"]\r\n }\r\n placeholder=\"Please enter your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"password\", text);\r\n }}\r\n value={newPassword[\"password\"]}\r\n border=\"#333\"\r\n />\r\n\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 15,\r\n }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n password: !newIsPasswordSecure[\"password\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"password\"] ? (\r\n <FontAwesome\r\n name=\"eye\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n )}\r\n </CustomText>\r\n\r\n {newPasswordMessage[\"passwordMsg\"] !== \"\" &&\r\n newPassword[\"password\"] !== \"\" && (\r\n <>{newPasswordMessage[\"passwordMsg\"]}</>\r\n )}\r\n </View>\r\n <View>\r\n <InputBox\r\n label=\"Confirm Password\"\r\n type=\"default\"\r\n secureTextEntry={\r\n newIsPasswordSecure[\"confirmPassword\"]\r\n }\r\n placeholder=\"Confirm your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"confirmPassword\", text);\r\n }}\r\n value={newPassword[\"confirmPassword\"]}\r\n border=\"#333\"\r\n />\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 15,\r\n }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n confirmPassword:\r\n !newIsPasswordSecure[\"confirmPassword\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"confirmPassword\"] ? (\r\n <FontAwesome\r\n name=\"eye\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n )}\r\n </CustomText>\r\n {newPasswordMessage[\"confirmPasswordMsg\"] !==\r\n \"\" &&\r\n newPassword[\"confirmPassword\"] !== \"\" && (\r\n <>\r\n {newPasswordMessage[\"confirmPasswordMsg\"]}\r\n </>\r\n )}\r\n </View>\r\n <IconButton\r\n onPress={() => {\r\n if (newPassword[\"password\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the New Password.\"\r\n );\r\n return false;\r\n }\r\n if (newPassword[\"confirmPassword\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the Confirm New Password.\"\r\n );\r\n return false;\r\n }\r\n if (\r\n newPassword[\"confirmPassword\"] !==\r\n newPassword[\"password\"]\r\n ) {\r\n setPasswordMisMatch(\r\n \"The new password and confirmed password do not match.\"\r\n );\r\n return false;\r\n }\r\n\r\n let strength = 0,\r\n text = newPassword[\"password\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (\r\n text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)\r\n )\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\n Minimum length of 6 characters \r\n Must contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n strength = 0;\r\n text = newPassword[\"confirmPassword\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (\r\n text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)\r\n )\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\n Minimum length of 6 characters \r\n Must contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n if (\r\n newPassword[\"password\"] ===\r\n newPassword[\"confirmPassword\"]\r\n ) {\r\n handleAPI({\r\n name: \"SavePasswordRedirect\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n Password: newPassword[\"password\"],\r\n },\r\n }).then((response) => {\r\n response =\r\n JSON.parse(response)[\"Table\"][0][\r\n \"Column1\"\r\n ].toString();\r\n response = new XMLParser().parseFromString(\r\n response\r\n )[\"children\"][0][\"attributes\"];\r\n let msg = response[\"Message\"];\r\n setErrorMessage({ text: \"\" });\r\n if (\r\n msg === \"Password updated successfully.\"\r\n ) {\r\n handleLogin(1, logInDetails);\r\n setProcessingStatus(\"Save&Login\");\r\n } else setPasswordMisMatch(msg);\r\n });\r\n }\r\n }}\r\n title=\"Save & Login\"\r\n loading={processingStatus == \"Save&Login\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n style={{\r\n marginBottom: 10,\r\n color: \"#fff\",\r\n backgroundColor: \"#4C85BF\",\r\n }}\r\n />\r\n {passwordMisMatch !== \"\" && (\r\n <View\r\n style={{\r\n borderWidth: 1,\r\n borderColor: \"#ebccd1\",\r\n backgroundColor: \"#f2dede\",\r\n borderRadius: 5,\r\n marginBottom: 10,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 15,\r\n padding: 15,\r\n }}\r\n bold={true}\r\n >\r\n {passwordMisMatch}\r\n </CustomText>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n <View style={styles.footContainer}>\r\n {currentPage === \"emailOnly\" ? (\r\n <CustomText\r\n onPress={handleCreateNewAccClick}\r\n bold={true}\r\n style={styles.footText}\r\n >\r\n Create New Account\r\n </CustomText>\r\n ) : (\r\n <CustomText\r\n onPress={(e) => {\r\n handleClearState();\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n {\r\n borderBottomWidth: 0,\r\n textDecorationLine: \"none\",\r\n },\r\n ]}\r\n >\r\n <AntDesign name=\"arrowleft\" size={15} color=\"#999\" />\r\n Back\r\n </CustomText>\r\n )}\r\n {!isTerminated &&\r\n (currentPage === \"emailOnly\" ||\r\n currentPage === \"loginOption\") && (\r\n <CustomText\r\n onPress={() => {\r\n setErrorMessage({ text: \"\" });\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1, {\r\n isForgotPassword: true,\r\n });\r\n else\r\n handleAccessCodeLogin(2, {\r\n isForgotPassword: true,\r\n });\r\n }}\r\n style={styles.footText}\r\n bold={true}\r\n >\r\n Forgot Password\r\n </CustomText>\r\n )}\r\n </View>\r\n </View>\r\n </ScrollContainer>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n </>\r\n );\r\n}\r\n//Style Section\r\nconst styles = StyleSheet.create({\r\n container: {\r\n color: \"#333\",\r\n backgroundColor: \"#f5f5f5\",\r\n borderWidth: 1,\r\n borderColor: \"#ddd\",\r\n borderRadius: 5,\r\n margin: 5,\r\n // marginBottom: 300,\r\n },\r\n headContainer: {\r\n marginTop: 5,\r\n marginBottom: 10,\r\n padding: 10,\r\n },\r\n headText: {\r\n fontSize: 19,\r\n color: \"#999\",\r\n },\r\n footContainer: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n padding: 10,\r\n marginTop: 0,\r\n },\r\n footText: {\r\n fontSize: 12,\r\n color: \"#999\",\r\n textDecorationLine: Platform.OS === \"android\" ? \"none\" : \"underline\",\r\n borderBottomWidth: Platform.OS === \"android\" ? 1 : 0,\r\n borderBottomColor: \"#999\",\r\n },\r\n bodyContainer: {\r\n display: \"flex\",\r\n backgroundColor: \"#fff\",\r\n borderTopWidth: 1,\r\n borderBottomWidth: 1,\r\n borderColor: \"#ddd\",\r\n paddingTop: 25,\r\n paddingBottom: 20,\r\n // paddingHorizontal: 10,\r\n },\r\n errorMessage: {\r\n color: \"red\",\r\n fontSize: 15,\r\n padding: 10,\r\n },\r\n imgMultipleLogin: {\r\n width: \"94%\",\r\n height: 200,\r\n },\r\n imgMultipleLoginWrapper: {\r\n flexDirection: \"row\",\r\n marginBottom: 30,\r\n justifyContent: \"space-between\",\r\n },\r\n cssCompMsg: {\r\n fontSize: 11,\r\n color: \"#999\",\r\n textDecorationLine: \"none\",\r\n borderBottomWidth: 0,\r\n borderBottomColor: \"#999\",\r\n padding: 10,\r\n },\r\n footTextNoUnderline: {\r\n fontSize: 12,\r\n color: \"#999\",\r\n textDecorationLine: \"none\",\r\n borderBottomWidth: 0,\r\n borderBottomColor: \"#999\",\r\n },\r\n});\r\n","import {\r\n StyleSheet,\r\n View,\r\n Alert,\r\n Image,\r\n TouchableOpacity,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport { useState, useEffect, useContext, memo } from \"react\";\r\nimport {\r\n InputBox,\r\n IconButton,\r\n WebPageView,\r\n context,\r\n} from \"../accessories/accessories.js\";\r\nimport CustomText from \"../accessories/CustomText.js\";\r\nimport {\r\n handleAPI,\r\n FormatPhoneLogin,\r\n validateEmail,\r\n log,\r\n getQueryString,\r\n updateWebURL,\r\n getQueryStringURL,\r\n queryStringToObject,\r\n handleTrackGA4Events,\r\n handleGetBrowserName,\r\n handleGetButtonText,\r\n handleGetStoredCredential,\r\n handleSetStoredCredential,\r\n generateFingerprint,\r\n handleCreateNewSession,\r\n} from \"../accessories/CommonFunctions.js\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner.js\";\r\nimport XMLParser from \"react-xml-parser\";\r\nimport Checkbox from \"expo-checkbox\";\r\n// import * as SplashScreen from \"expo-splash-screen\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer.js\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport { web, android } from \"../accessories/Platform\";\r\nimport FingerprintJS from \"@fingerprintjs/fingerprintjs-pro\";\r\n\r\n// const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n// const isAndroid = /Android/.test(navigator.userAgent);\r\nlet isForgotPassword = false;\r\n\r\nconst loginFrom = getQueryString(\"To\", \"siteLogin\") || \"siteLogin\",\r\n emailId = getQueryString(\"email\", \"\") || \"\",\r\n header = getQueryString(\"header\", \"0\") || \"0\",\r\n IISSession = getQueryString(\"SessionGuid\", \"\"),\r\n action = getQueryString(\"action\", \"\");\r\n\r\nconst LoginWeb = (props) => {\r\n let isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n //For avoid multiple renderng, when loading inside iframe\r\n\r\n if (window.self !== window.top) {\r\n let isOnload = getQueryString(\"dummyparam\", 0);\r\n if (\r\n Number(isOnload) === 0 &&\r\n (loginFrom === \"ratewizard\" ||\r\n loginFrom === \"loanapp\" ||\r\n loginFrom === \"securedoc\")\r\n )\r\n return;\r\n }\r\n //---------- State Variable declarartion part ----------//\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { navigation } = props;\r\n\r\n // if (loginFrom === \"loanapp\") {\r\n // setInterval(() => {\r\n // try {\r\n // window.parent?.resizeLoginIframe();\r\n // } catch (error) {}\r\n // }, 2000);\r\n // }\r\n\r\n const [showFooter] = useState(\r\n !(loginFrom === \"ratewizard\" || loginFrom === \"ratequote\")\r\n );\r\n const [logInDetails, setLoginDetails] = useState({});\r\n const [emailSentTo, setEmailSentTo] = useState(null);\r\n const [IISSessionId, setIISSessionId] = useState(IISSession || \"\");\r\n const [disabledButton, setDisabledButton] = useState(\"\");\r\n const [currentPage, setCurrentPage] = useState(null); //emailOnly\r\n const [isPasswordSecure, setIsPasswordSecure] = useState(true);\r\n const [isTerminated, setIsTerminated] = useState(false);\r\n const [isRemember, setIsRemember] = useState(false);\r\n const [appIsReady, setAppIsReady] = useState(false);\r\n const [hideSecureEmail, setHideSecureEmail] = useState(false);\r\n const [passwordMisMatch, setPasswordMisMatch] = useState(\"\");\r\n const [deviceId, setDeviceId] = useState(null);\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n const [accesscodeWarningMsg, setAccesscodeWarningMsg] = useState(null);\r\n\r\n const handleGoToHome = () => {\r\n window.parent.location.href = `${REDIRECT_URL}`;\r\n };\r\n\r\n const handleGetRouteName = () => {\r\n let Route = \"\";\r\n try {\r\n Route = window.parent.getQuerystring(\"Route\");\r\n } catch (error) {\r\n Route = \"\";\r\n }\r\n if (Route === \"\") {\r\n try {\r\n Route = getQueryString(\"Route\");\r\n } catch (error) {\r\n Route = \"\";\r\n }\r\n }\r\n if (Route === \"\") {\r\n try {\r\n const urlParams = new URLSearchParams(window.location.href);\r\n Route = urlParams.get(\"Route\");\r\n } catch (error) {\r\n Route = \"\";\r\n }\r\n }\r\n return Route;\r\n };\r\n\r\n const [Route, setRoute] = useState(handleGetRouteName());\r\n\r\n const [headerText, setHeaderText] = useState(\r\n loginFrom === \"ratequote\"\r\n ? \"~~~To Confirm your Rate Lock, let's create a login account. Begin by entering either your email or cell phone.\"\r\n : loginFrom === \"ratewizard\"\r\n ? `~~~${\r\n window.parent.glo_CampaignLoginHdr || `Let's get you logged in...`\r\n }`\r\n : loginFrom === \"Ratesheetsignin\"\r\n ? `~~~${\r\n window.parent.glo_headermessage ||\r\n window.top.glo_headermessage ||\r\n `Let's get you logged in...`\r\n }`\r\n : loginFrom === \"ratelockleads\"\r\n ? `~~~Absolutely! To view your rates, let's get started by providing your email address or cell phone number.`\r\n : handleGetRouteName() === \"DailyRates\"\r\n ? `~~~Absolutely! To run your own scenario, let's get started by providing your email address or cell phone number.`\r\n : [\"loanapp\", \"securedoc\", \"esign\", \"siteLogin\", \"RunScenario\"].includes(\r\n loginFrom\r\n )\r\n ? `~~~${\r\n window.parent.glo_CampaignLoginHdr || `Let's get you logged in...`\r\n }`\r\n : `~~~Let's get you logged in...`\r\n );\r\n\r\n const [credentials, setCredentials] = useState({\r\n userName: \"\",\r\n password: \"\",\r\n AccessCode: \"\",\r\n formattedUserName: \"\",\r\n });\r\n const [errorMessage, setErrorMessage] = useState({\r\n text: \"\",\r\n color: \"red\",\r\n });\r\n const [newPassword, setNewPassword] = useState({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n const [newIsPasswordSecure, setNewIsPasswordSecure] = useState({\r\n password: true,\r\n confirmPassword: true,\r\n });\r\n const [newPasswordMessage, setnewPasswordMessage] = useState({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n const [webPageURL, setWebPageURL] = useState(\r\n // \"../../../BorrowerApplication/Presentation/Webforms/DirectDefault.aspx?Skip=1&SessionId={66C11203-4FED-4F93-9137-9D98BD6970A1}\"\r\n null\r\n );\r\n const [complianceMsg, setComplianceMsg] = useState(false);\r\n const CompMsg = `Customers will receive a text message SMS with a verification code and then are prompted for this code in the login interface on our website.\\n\\nMessage and data rates may apply\\nMessage Frequency Varies\\nReply “HELP” for help, Reply “STOP” to cancel.`;\r\n\r\n //--------------------------------------------//\r\n useEffect(() => {\r\n if (\r\n [\r\n \"securedoc\",\r\n \"loanapp\",\r\n \"chat\",\r\n \"ratequote\",\r\n \"loginverify\",\r\n \"RunScenario\",\r\n ].indexOf(loginFrom) > -1\r\n ) {\r\n const timer = setInterval(() => {\r\n try {\r\n let obj = window.parent.document.getElementById(\"iframeLogin\"),\r\n height = obj.contentWindow.document.body.scrollHeight;\r\n if (parseInt(obj.style.height.replace(\"px\", \"\")) < height)\r\n try {\r\n window.parent?.resizeLoginIframe();\r\n } catch (error) {}\r\n } catch (error) {}\r\n }, 500);\r\n return () => clearInterval(timer);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const styleElement = document.createElement(\"style\");\r\n\r\n styleElement.innerHTML = `:focus-visible {\r\n outline: none !important;\r\n }`;\r\n document.head.appendChild(styleElement);\r\n\r\n return () => {\r\n document.head.removeChild(styleElement);\r\n };\r\n }, []);\r\n\r\n //---------- Function declarartion part ----------//\r\n const handleEmailSentTo = (value) => {\r\n //Showing (Sent) messange under emial & cellphone\r\n setEmailSentTo(value);\r\n //Hide (Sent) messange under emial & cellphone after 2000ms\r\n setTimeout(() => {\r\n setEmailSentTo(null);\r\n }, 3000);\r\n };\r\n const updateCredential = (event) => {\r\n //Handling field value change\r\n let { name, value, isFormat } = event;\r\n value = !(value === \" \") ? value : \"\";\r\n let obj = { [name]: value };\r\n // if (name === \"userName\" && value !== \"\") {\r\n // value = value\r\n // .replaceAll(\"-\", \"\")\r\n // .replaceAll(\"(\", \"\")\r\n // .replaceAll(\")\", \"\")\r\n // .replaceAll(\" \", \"\");\r\n // }\r\n if (isFormat)\r\n obj = { [name]: value, formattedUserName: FormatPhoneLogin(value) };\r\n else if (name === \"userName\")\r\n obj = { [name]: value, formattedUserName: value };\r\n setCredentials({ ...credentials, ...obj });\r\n };\r\n const handleClearState = (time) => {\r\n //resetting the screen after 1000ms\r\n if (time === 0) {\r\n handleResetState();\r\n } else {\r\n setTimeout(() => {\r\n handleResetState();\r\n }, 3000);\r\n }\r\n };\r\n const handleResetState = () => {\r\n setProcessingStatus(null);\r\n setIsPasswordSecure(true);\r\n setCredentials({\r\n userName: \"\",\r\n password: \"\",\r\n AccessCode: \"\",\r\n });\r\n setErrorMessage({ text: \"\", color: \"red\" });\r\n setLoginDetails({});\r\n setIsRemember(false);\r\n setIsTerminated(false);\r\n setHideSecureEmail(false);\r\n setCurrentPage(\"emailOnly\");\r\n setHeaderText(\r\n loginFrom === \"ratequote\"\r\n ? \"~~~To Confirm your Rate Lock, let's create a login account. Begin by entering either your email or cell phone.\"\r\n : loginFrom === \"ratewizard\"\r\n ? `~~~${\r\n window.parent.glo_CampaignLoginHdr || `Let's get you logged in...`\r\n }`\r\n : `~~~Let's get you logged in...`\r\n );\r\n };\r\n const handleUserNameValidation = () => {\r\n //Validating the enail and cellphone here\r\n try {\r\n let UserName = credentials[\"userName\"]\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n if (\r\n UserName === \"\" &&\r\n headerText.indexOf(`Let's create an account`) !== -1\r\n ) {\r\n setErrorMessage({ text: \"\" });\r\n return true;\r\n } else if (Number(UserName) > 0 && UserName.length !== 10) {\r\n setErrorMessage({ text: \"Please enter a valid phone number.\" });\r\n return true;\r\n } else if (!validateEmail(UserName) && UserName.length !== 10) {\r\n setErrorMessage({\r\n text: \"Please enter a valid email address or Cell Phone number.\",\r\n });\r\n return true;\r\n }\r\n } catch (error) {\r\n console.log(\"Error from handleUserNameValidation ====> \", error);\r\n }\r\n };\r\n\r\n const handleNextClick = (flag, emailId) => {\r\n try {\r\n const userName = emailId || credentials[\"userName\"];\r\n //---------- if re-entering same login id - will return here. ----------//\r\n let Emailoutside =\r\n logInDetails[\"Emailoutside\"] || logInDetails[\"EmailOutside\"];\r\n\r\n if (\r\n Emailoutside?.toString().toLocaleLowerCase() ===\r\n userName?.toString().toLocaleLowerCase() ||\r\n logInDetails[\"CellPhone\"]?.toString().toLocaleLowerCase() ===\r\n userName?.toString().toLocaleLowerCase()\r\n ) {\r\n return false;\r\n }\r\n //------------------------------------------------//\r\n //setLoginDetails({}); //Clear details if exist\r\n\r\n //---------- Validating username ----------//\r\n\r\n if (handleUserNameValidation()) return false;\r\n if (flag || isForgotPassword) return false;\r\n setProcessingStatus(\"Next\");\r\n //------------------------------------------------//\r\n try {\r\n updateCredential({\r\n name: \"formattedUserName\",\r\n value: userName,\r\n isFormat: userName.indexOf(\"@\") === -1 ? true : false,\r\n });\r\n } catch (error) {}\r\n setDisabledButton(\"Next\"); //Disable the Next button\r\n setComplianceMsg(false);\r\n //---------- Checking the login exist or not ----------//\r\n\r\n handleAPI({\r\n name: \"GetUserNameExists\",\r\n params: { userName: userName },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n response = { ...response, ...logInDetails };\r\n\r\n setLoginDetails(response);\r\n if (!isForgotPassword) {\r\n if (Number(response[\"UserExists\"]) === 1) {\r\n if (emailId && false) {\r\n const { CellPhone = \"\", EmailOutside, Emailoutside } = response;\r\n\r\n const msg =\r\n CellPhone && (EmailOutside || Emailoutside)\r\n ? `Welcome <b style='color:black; font-weight:bold'>${response[\"UserDisplayName\"]}.</b>Run your own scenario. We've Emailed and Texted you an access code just to verify it's really you. Enter it below.`\r\n : `Welcome <b style='color:black; font-weight:bold'>${\r\n response[\"UserDisplayName\"]\r\n }.</b>Run your own scenario. We've ${\r\n emailId.indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code just to verify it's really you. Enter it below.`;\r\n\r\n handleAccessCodeLogin(3, response, msg);\r\n } else {\r\n setHeaderText(\r\n `~~~Welcome back <b style='color:black; font-weight:bold'>${response[\"UserDisplayName\"]}.</b>Please select a login option below.`\r\n );\r\n }\r\n\r\n //Login exist - proceed next step\r\n if (parseInt(response[\"AccountTerminated\"]) === 1) {\r\n setCurrentPage(\"loginOption\");\r\n\r\n setLoginDetails({ ...response });\r\n } else handleGetDeviceId(response);\r\n } else if (parseInt(response[\"UserExists\"]) === 0) {\r\n //login not exist - entering signup process\r\n navigate(\"Signup\", {\r\n userName: userName,\r\n deviceId: deviceId,\r\n });\r\n handleClearState(); //resetting the screen\r\n }\r\n }\r\n });\r\n //------------------------------------------------//\r\n } catch (error) {\r\n setProcessingStatus(null);\r\n log(\"Error from handleNextClick ====> \", error);\r\n }\r\n };\r\n const handleGetDeviceId = async (logDetails) => {\r\n let userName = logDetails[\"EmailOutside\"] || logDetails[\"Emailoutside\"];\r\n\r\n //---------- Checking the device id stored for the lognin ----------//\r\n if (\r\n logDetails[\"DeviceId\"] === undefined ||\r\n logDetails[\"DeviceId\"] === \"null\"\r\n ) {\r\n logDetails[\"DeviceId\"] = await handleGetNewDeviceId();\r\n }\r\n try {\r\n handleAPI({\r\n name: \"GetDeviceFingerPrintWeb\",\r\n params: {\r\n UserName: userName,\r\n DeviceId: logDetails[\"DeviceId\"] || deviceId,\r\n },\r\n }).then((response) => {\r\n try {\r\n response = response.split(\"~\");\r\n let obj = {\r\n deviceIdExist: Number(response[0]) || 0,\r\n saveCredential: response[1] || 0,\r\n };\r\n logDetails = { ...logDetails, ...obj };\r\n } catch (error) {\r\n log(\"Error from ====> GetDeviceFingerPrintWeb\", error);\r\n }\r\n handleCreateSessionWebLogin(logDetails);\r\n });\r\n } catch (error) {\r\n log(\"Error from handleGetDeviceId ====> \", error);\r\n }\r\n //------------------------------------------------//\r\n };\r\n const handleCreateSessionWebLogin = (logDetails) => {\r\n try {\r\n //---------- Creating new seesion for the lognin ----------//\r\n\r\n let { WebLoginId } = logDetails;\r\n handleAPI({\r\n name: \"CreateSessionWrapper\",\r\n params: { WebLoginId: WebLoginId },\r\n }).then((response) => {\r\n response = response.split(\"~\");\r\n let res = { SessionId: response[0], loginName: response[1] };\r\n if (window.location.host.indexOf(\"localhost\") === -1)\r\n handleUpdateIISSession(response[0]);\r\n logDetails = { ...logDetails, ...res };\r\n if (logDetails[\"isForgotPassword\"]) {\r\n //For forgot password flow\r\n logDetails = { ...logInDetails, ...logDetails };\r\n if (loginFrom === \"esign\") {\r\n LoanBased = handleCheckLoanBased(response[0]);\r\n logDetails = { ...logDetails, LoanBased: LoanBased };\r\n }\r\n handleGetNextStepWeb(logDetails);\r\n } else {\r\n //General flow for to login\r\n handleCheckPasscodeExpired(logDetails);\r\n }\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCreateSessionWebLogin ====> \", error);\r\n }\r\n //------------------------------------------------//\r\n };\r\n const handleCheckLoanBased = async (SessionId) => {\r\n await handleAPI({\r\n name: \"CheckIfLoanBasedWeb\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then((LoanBased) => {\r\n return LoanBased;\r\n })\r\n .catch((e) => log(\"Error from ====> CheckIfLoanBasedWeb\", e));\r\n };\r\n const handleOpenPage = (page) => {\r\n let URL = \"\";\r\n\r\n if (page == 1) {\r\n URL = `https://www.directmortgage.com/terms-of-use/`;\r\n }\r\n if (page == 2) {\r\n URL = `https://www.directmortgage.com/privacy-policy/`;\r\n }\r\n\r\n window.open(URL, \"_blank\", \"width=750,height=780,resizable=1,scrollbars=1\");\r\n };\r\n const handleGetNextStepWeb = async (logDetails) => {\r\n try {\r\n //---------- Get which page to enter based on user type ----------//\r\n let { SessionId, UserType } = logDetails;\r\n handleAPI({\r\n name: \"GetNextStepWeb\",\r\n params: { SessionId: SessionId, username: \"\", IP: \"::1\" },\r\n }).then(async (response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n let URL = response[\"Column1\"];\r\n if (URL != \"\" && URL != null && URL != undefined) {\r\n //=====================\r\n\r\n URL = `${URL}&Skip=1`;\r\n if (UserType == \"C\") {\r\n //URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&To=${loginFrom}`; //\"BorrowerWelcome\";\r\n URL = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}`;\r\n }\r\n if (UserType == \"V\" || UserType == \"M\")\r\n URL = `../../../esignpackage/index.html?SessionId=${SessionId}`;\r\n\r\n if (UserType === \"E\") {\r\n if (\r\n loginFrom != \"esign\" &&\r\n loginFrom != \"chat\" &&\r\n loginFrom != \"ratequote\"\r\n )\r\n logDetails = await handleCheckIsSignUpdoneWeb(logDetails);\r\n if (logDetails[\"URL\"]) {\r\n setLoginDetails(logDetails);\r\n return;\r\n }\r\n }\r\n let StartLoanApp = getQueryString(\"StartLoanApp\", \"0\");\r\n if (loginFrom == \"ratewizard\") {\r\n let GatherDataId = 0, //checkValue(GatherId || 0, \"0\"),\r\n From = checkValue(getQueryString(\"From\", \"\"), \"0\"),\r\n RateQuoteId = checkValue(getQueryString(\"RateQuoteId\", \"\"), \"0\"),\r\n PublicRateQuoteId = checkValue(\r\n getQueryString(\"PublicRateQuoteId\", \"\"),\r\n \"0\"\r\n ),\r\n LoanOfficerId = checkValue(getQueryString(\"loanofficer\", \"\"), 0),\r\n HomePage = getQueryString(\"HomePage\", \"0\");\r\n\r\n if (LoanOfficerId == 0)\r\n LoanOfficerId =\r\n window.parent.document.getElementById(\"spnUserInfo\").attributes\r\n .empnum.value;\r\n\r\n LoanOfficerId = checkValue(LoanOfficerId, 0);\r\n if (LoanOfficerId == 0) LoanOfficerId = \"1\";\r\n\r\n if (StartLoanApp == 1) {\r\n //URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&StartLoanApp=1&To=${loginFrom}`; //\"BorrowerWelcome\";\r\n\r\n URL = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}&StartLoanApp=1`;\r\n } else {\r\n if (HomePage == 1) {\r\n try {\r\n window.parent.glo_SessionId = SessionId;\r\n let obj = { URL: URL };\r\n logDetails = { ...logDetails, ...obj };\r\n logDetails = { ...logInDetails, ...logDetails };\r\n setLoginDetails(logDetails);\r\n return false;\r\n } catch (e) {}\r\n }\r\n\r\n URL = `../../../rates/rates-wizard.php?SessionId=${SessionId}&GatherId=${GatherDataId}&From=${From}&LoanOfficerId=${LoanOfficerId}&${\r\n PublicRateQuoteId > 0\r\n ? `PublicRateQuoteId=${PublicRateQuoteId}`\r\n : `RateQuoteId=${RateQuoteId}`\r\n }`;\r\n }\r\n window.parent.glo_SessionId = SessionId;\r\n let obj = { URL: URL };\r\n logDetails = { ...logDetails, ...obj };\r\n logDetails = { ...logInDetails, ...logDetails };\r\n setLoginDetails(logDetails);\r\n return false;\r\n }\r\n if (\r\n loginFrom == \"securedoc\" ||\r\n loginFrom == \"loanapp\" ||\r\n (loginFrom == \"ratewizard\" && StartLoanApp == 1)\r\n ) {\r\n // logDetails[\"noDirect\"] = true;\r\n logDetails = { ...logInDetails, ...logDetails };\r\n setLoginDetails(logDetails);\r\n // handleSecureDocLogin(0, 1, StartLoanApp, logDetails); //P\r\n return;\r\n // URL = document.getElementById(\"lnkNextURL\").attributes.href;\r\n }\r\n\r\n // document.getElementById(\"lnkNextURL\").attributes.href = URL;\r\n\r\n if (\r\n (logDetails[\"AutoRedirect\"] || logInDetails[\"AutoRedirect\"]) &&\r\n (logDetails[\"PasscodeExpired\"] ||\r\n logInDetails[\"PasscodeExpired\"]) !== 1\r\n ) {\r\n let obj = { URL: URL };\r\n logDetails = { ...logDetails, ...obj };\r\n logDetails = { ...logInDetails, ...logDetails };\r\n setLoginDetails(logDetails);\r\n return;\r\n }\r\n\r\n //=====================\r\n\r\n let obj = { URL: URL };\r\n logDetails = { ...logDetails, ...obj };\r\n logDetails = { ...logInDetails, ...logDetails };\r\n\r\n setLoginDetails(logDetails); //Storing login details in state\r\n }\r\n });\r\n } catch (error) {\r\n log(\"Error from handleGetNextStepWeb ====> \", error);\r\n }\r\n //------------------------------------------------//\r\n };\r\n const handleSetCookies = (logDetails) => {\r\n let {\r\n WebLoginId,\r\n UserDisplayName,\r\n URL,\r\n EmailOutside,\r\n Emailoutside,\r\n CellPhone,\r\n UserName,\r\n DeviceId,\r\n UserType,\r\n loginName,\r\n } = logDetails,\r\n date = new Date();\r\n date.setDate(date.getDate() + 30);\r\n\r\n let objectToStore = {\r\n WebLoginId: WebLoginId,\r\n UserDisplayName: UserDisplayName,\r\n URL: URL,\r\n UserName: EmailOutside || Emailoutside || UserName || CellPhone,\r\n AutoRedirectExpiryDate:\r\n //WebLoginId == 99766 ? new Date().getTime() + 60000 * 2 :\r\n date.getTime(), //getExpireDate(60), //in Minutes - getExpireDate(No. of days)\r\n AutoRedirect: true,\r\n UserDisplayName: loginName || UserDisplayName,\r\n DeviceId: DeviceId || deviceId,\r\n UserType: UserType,\r\n //====\r\n // UserWebLoginId: WebLoginId,\r\n // UserRememberDevice: 1,\r\n // UserDeviceId: deviceId,\r\n // UserRedirectURL: URL,\r\n };\r\n AsyncStorage.removeItem(\"Credentials\");\r\n AsyncStorage.setItem(\"Credentials\", JSON.stringify(objectToStore) || null);\r\n\r\n // Object.keys(objectToStore).map((key) => {\r\n // setCookies(key, objectToStore[key], {\r\n // // expires: new Date(Date.now() + 365 * 100 * 24 * 60 * 60 * 1000),\r\n // path: \"/\",\r\n // domain: \"\",\r\n // secure: \"\",\r\n // });\r\n // });\r\n };\r\n\r\n const handleChatProcess = (logDetails) => {\r\n let ChatWithId = getQueryString(\"ChatWithId\", 0),\r\n url = \"\";\r\n if (ChatWithId == \"\" || ChatWithId == null || ChatWithId == undefined)\r\n ChatWithId = 0;\r\n\r\n if (ChatWithId == 0)\r\n url = `../../../ChatSession/Presentation/Webforms/ChatMenu.aspx?SessionId=${logDetails[\"SessionId\"]}&zid=${logDetails[\"WebLoginId\"]}`;\r\n else\r\n url = `../../../ChatSession/Presentation/Webforms/ChatMenu.aspx?SessionId=${logDetails[\"SessionId\"]}&zid=${logDetails[\"WebLoginId\"]}&ChatWithId=${ChatWithId}`;\r\n if (isRemember) handleSetCookies({ ...logDetails, URL: url });\r\n try {\r\n window.parent.location.href = url;\r\n } catch (e) {\r\n window.location.href = url;\r\n }\r\n };\r\n\r\n const handleEsignProcess = (logDetails) => {\r\n let ReDirectURL = \"\",\r\n packageId = getQueryString(\"WebPackage\", \"\"),\r\n { SessionId, WebLoginId, UserId } = logDetails;\r\n packageId = packageId?.split(\".\")[0];\r\n if (packageId != \"\" && WebLoginId != \"\" && SessionId != \"\") {\r\n handleAPI({\r\n name: \"ValidPackage\",\r\n params: {\r\n Package: packageId,\r\n WebLoginId: WebLoginId,\r\n SessionId: SessionId,\r\n },\r\n })\r\n .then((response) => {\r\n if (response == 1) {\r\n let strPackage = packageId;\r\n strPackage = strPackage.split(\"-\");\r\n let LoanId = strPackage[1];\r\n ReDirectURL = `../../../EsignWebstage/SignPageContent_SinglePageView.aspx?SessionId=${SessionId}&UserId=${UserId}&FromPage=EsignNow&Package=${packageId}&LoanId=${LoanId}`;\r\n } else {\r\n ReDirectURL = `../../../esignpackage/index.html?SessionId=${SessionId}`;\r\n }\r\n if (isRemember) handleSetCookies({ ...logDetails, URL: ReDirectURL });\r\n try {\r\n window.parent.location.href = ReDirectURL;\r\n } catch (e) {\r\n window.location.href = ReDirectURL;\r\n }\r\n })\r\n .catch((e) => log(\"Error from ===> ValidPackage\", e));\r\n } else if (SessionId != \"\") {\r\n ReDirectURL = `../../../esignpackage/index.html?SessionId=${SessionId}`;\r\n if (isRemember) handleSetCookies({ ...logDetails, URL: ReDirectURL });\r\n try {\r\n window.parent.location.href = ReDirectURL;\r\n } catch (e) {\r\n window.location.href = ReDirectURL;\r\n }\r\n }\r\n };\r\n const handleSecureDocLogin = (flag, JustGetUrl, StartLoanApp, logDetails) => {\r\n if (JustGetUrl === 0) {\r\n setErrorMessage({\r\n color: \"#999\",\r\n text: (\r\n <CustomText>\r\n <ArrowSpinner />\r\n {\" \"}\r\n Processing...Please wait...\r\n </CustomText>\r\n ),\r\n italic: false,\r\n });\r\n }\r\n let LoanNum = 0,\r\n SessionId = logDetails[\"SessionId\"];\r\n handleAPI({\r\n name: \"CheckActiveLoans\",\r\n params: { sessionid: SessionId },\r\n })\r\n .then((response) => {\r\n if (response.indexOf(\"root\") > -1 && flag == 0) {\r\n let parseXML = new DOMParser().parseFromString(response, \"text/xml\");\r\n if (\r\n loginFrom === \"loanapp\" ||\r\n loginFrom === \"securedoc\" ||\r\n (loginFrom === \"ratewizard\" && StartLoanApp === 1)\r\n ) {\r\n const activeCount = parseXML\r\n .querySelector(\"root row\")\r\n .getAttribute(\"activecount\");\r\n if (Number(activeCount) >= 1) {\r\n const rows = parseXML.querySelectorAll(\"row\");\r\n rows.forEach((row) => {\r\n if (row.getAttribute(\"status\") === \"Active\") {\r\n const loanId = Number(row.getAttribute(\"LoanId\"));\r\n handleSelectLoan(\r\n loanId !== 0 ? loanId : 0,\r\n JustGetUrl,\r\n SessionId,\r\n logDetails\r\n );\r\n }\r\n });\r\n return;\r\n }\r\n }\r\n\r\n handleSelectLoan(LoanNum, JustGetUrl, SessionId, logDetails);\r\n } else {\r\n handleSelectLoan(LoanNum, JustGetUrl, SessionId, logDetails);\r\n }\r\n })\r\n .catch((e) => log(\"Error from CheckActiveLoans ====>\", e));\r\n };\r\n const handleSelectLoan = (loanid, JustGetUrl, SessionId, logDetails) => {\r\n let LOId = \"\";\r\n let PublicPage = getQueryString(\"Publicpage\", \"\");\r\n if (loanid == 0 && loginFrom != \"loanapp\") {\r\n setErrorMessage({\r\n color: \"#999\",\r\n text: (\r\n <CustomText>\r\n <ArrowSpinner />\r\n {\" \"}\r\n Loan Creation is in progress. Please wait...\r\n </CustomText>\r\n ),\r\n italic: false,\r\n });\r\n try {\r\n LOId = window?.parent?.getQuerystring(\"empnum\", \"\");\r\n } catch (error) {}\r\n try {\r\n if (\r\n loginFrom == \"securedoc\" ||\r\n loginFrom == \"loanapp\" ||\r\n loginFrom == \"ratequote\"\r\n ) {\r\n if (LOId == 0 || LOId == null || LOId == \"\" || LOId == undefined) {\r\n try {\r\n LOId = window?.parent?.getQuerystring(\"loanofficer\", \"\");\r\n } catch (error) {}\r\n }\r\n if (LOId == 0 || LOId == null || LOId == \"\" || LOId == undefined)\r\n LOId =\r\n window.parent.document.getElementById(\"spnUserInfo\").attributes\r\n .empnum.value;\r\n }\r\n } catch (e) {}\r\n try {\r\n if (loginFrom == \"ratewizard\") {\r\n let LoanOfficerId = getQueryString(\"loanofficer\", \"\");\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n )\r\n LOId = \"1\";\r\n else LOId = LoanOfficerId;\r\n }\r\n } catch (e) {}\r\n\r\n if (LOId == \"0\" || LOId == null || LOId == \"\" || LOId == undefined)\r\n LOId = \"1\";\r\n\r\n handleAPI({\r\n name: \"CreateLoanOnly\",\r\n params: { sessionid: SessionId, empid: LOId, EventId: 15 },\r\n })\r\n .then((response) => {\r\n loanid = JSON.parse(response);\r\n if (loanid != 0) {\r\n //let URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&LoanId=${loanid}&To=${loginFrom}`;\r\n\r\n let URL = `${window.location.origin}/GoDirect/index.html?Path=Home&SessionId=${SessionId}&loanId=${loanid}`;\r\n\r\n // if (loanid > 0 && loginFrom == \"securedoc\" && PublicPage == \"1\") {\r\n if (loanid > 0 && loginFrom == \"securedoc\" && PublicPage == \"1\") {\r\n URL += \"&GoToNav=9&PublicPage=1\";\r\n }\r\n\r\n handleAssociateLoanId(SessionId, URL);\r\n\r\n if (logDetails[\"noDirect\"]) {\r\n logDetails[\"URL\"] = URL;\r\n setLoginDetails({ ...logInDetails, ...logDetails });\r\n } else {\r\n try {\r\n window.parent.location = URL;\r\n } catch (e) {\r\n window.location = URL;\r\n }\r\n }\r\n }\r\n })\r\n .catch((error) => log(\"Error from CreateLoanOnly ====> \", error));\r\n } else {\r\n let URL = \"\";\r\n if (getQueryString(\"Route\", \"\") === \"dmloanapp\") {\r\n try {\r\n // URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&${\r\n // window.location.href.split(\"?\")[1]\r\n // }`;\r\n\r\n URL = `${\r\n window.location.origin\r\n }/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}&${\r\n window.location.href.split(\"?\")[1]\r\n }`;\r\n } catch (error) {}\r\n } else {\r\n // URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&LoanId=${loanid}&To=${loginFrom}`;\r\n\r\n if (loanid > 0)\r\n URL = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}&loanId=${loanid}`;\r\n else\r\n URL = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}&loanId=-999`;\r\n\r\n let LoanOfficerId = getQuerystring_document(\"loanofficer=\", \"0\");\r\n if (loginFrom === \"securedoc\") {\r\n URL = URL.replace(\"DashBoard\", \"Home\");\r\n URL += \"&GoToNav=9&loanOfficerId=\" + LoanOfficerId;\r\n if (PublicPage == \"1\") {\r\n URL += \"&PublicPage=1\";\r\n }\r\n }\r\n\r\n if (loginFrom === \"loanapp\") {\r\n URL = URL.replace(\"DashBoard\", \"Home\");\r\n URL += \"&loanOfficerId=\" + LoanOfficerId;\r\n }\r\n }\r\n\r\n handleAssociateLoanId(SessionId, URL);\r\n\r\n if (logDetails[\"noDirect\"]) {\r\n logDetails[\"URL\"] = URL;\r\n setLoginDetails({ ...logInDetails, ...logDetails });\r\n } else {\r\n try {\r\n window.parent.location = URL;\r\n } catch (e) {\r\n window.location = URL;\r\n }\r\n }\r\n }\r\n };\r\n const handleAssociateLoanId = (SessionId, NextURL) => {\r\n let Loginmethod = \"\";\r\n if (NextURL.indexOf(\"To=securedoc\") !== -1) Loginmethod = \"UploadDocs\";\r\n\r\n if (NextURL.indexOf(\"To=ratewizard\") !== -1) {\r\n if (document.documentURI.indexOf(\"CustomizeOptions=1\") !== -1) {\r\n Loginmethod = \"CustomizeOptions\";\r\n } else Loginmethod = \"LockThisIntRate\";\r\n }\r\n let LoanId = getQueryStringURL(\"LoanId\", \"\", NextURL);\r\n if (LoanId == \"\" || Loginmethod == \"\") return;\r\n\r\n try {\r\n handleAPI({\r\n name: \"AssociateLoanId_GA\",\r\n params: {\r\n SessionId: SessionId,\r\n LoanId: LoanId,\r\n LoginMethod: Loginmethod,\r\n },\r\n })\r\n .then((response) => {\r\n log(\"response\", response);\r\n })\r\n .catch((e) => log(\"Error from ====>\", e));\r\n } catch (error) {}\r\n };\r\n\r\n const checkValue = (value, def) => {\r\n if (\r\n Number(value) === 0 ||\r\n value === \"\" ||\r\n value === null ||\r\n value === undefined\r\n )\r\n return def || \"0\";\r\n return value;\r\n };\r\n const handleCheckIsSignUpdoneWeb = async (logDetails) => {\r\n //---------- Checking signup process is completed or still pending ----------//\r\n try {\r\n let { SessionId, URL, WebLoginId } = logDetails;\r\n await handleAPI({\r\n name: \"CheckIsSignUpdoneWeb\",\r\n params: { SessionId: SessionId },\r\n }).then((response) => {\r\n if (response !== \"{}\") {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n let {\r\n IsSignUpComplete,\r\n ApprovalStatus,\r\n ApprovalTaskExists,\r\n CertDone,\r\n EmpNum,\r\n CompNum,\r\n logintype,\r\n } = response;\r\n let SignUpURL = \"\";\r\n if (Number(CompNum) !== 1000) {\r\n SignUpURL =\r\n Number(IsSignUpComplete) === 0 || Number(IsSignUpComplete) === 2\r\n ? `../../../BorrowerApplication/Presentation/Webforms/SignUpWizard.aspx?WID=${WebLoginId}&SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}&FromLanding=0&FromProfile=&PType=${logintype}`\r\n : Number(IsSignUpComplete) === -3 &&\r\n Number(ApprovalStatus) === 3 &&\r\n Number(CertDone) === -1\r\n ? `../../../BorrowerApplication/Presentation/Webforms/SignUpWizard.aspx?WID=${WebLoginId}&SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}&FromLanding=0&FromProfile=&PType=${logintype}`\r\n : Number(IsSignUpComplete) === -3\r\n ? `../../../BorrowerApplication/Presentation/Webforms/SignUpWizard.aspx?WID=${WebLoginId}&SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}&FromLanding=0&FromProfile=&PType=${logintype}`\r\n : Number(ApprovalStatus) === 4 &&\r\n Number(ApprovalTaskExists) === 0\r\n ? `../../../BorrowerApplication/Presentation/Webforms/NewBrokerApproval.aspx?SessionId=${SessionId}&EmpNum=${EmpNum}&CompNum=${CompNum}`\r\n : \"\";\r\n }\r\n\r\n if (SignUpURL) {\r\n logDetails = { ...logDetails, URL: SignUpURL };\r\n }\r\n return logDetails;\r\n }\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCheckIsSignUpdoneWeb ====> \", error);\r\n }\r\n return logDetails;\r\n //------------------------------------------------//\r\n };\r\n const handleCheckPasscodeExpired = (logDetails) => {\r\n try {\r\n //---------- Checking Password is expired or not for the lognin ----------//\r\n\r\n let { WebLoginId, SessionId } = logDetails;\r\n handleAPI({\r\n name: \"CheckPasscodeExpired\",\r\n params: {\r\n WebLoginId: WebLoginId,\r\n SessionId: SessionId,\r\n },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n logDetails = { ...logDetails, ...response };\r\n //---------- Password is expired and not a terminated login - Sending access code to user ----------//\r\n if (\r\n (parseInt(response[\"PasscodeExpired\"]) === 1 &&\r\n parseInt(logDetails[\"AccountTerminated\"]) !== 1) ||\r\n (logDetails[\"AutoRedirectCheck\"] && !logDetails[\"AutoRedirect\"])\r\n ) {\r\n let msg = `${logDetails[\"UserDisplayName\"]}--It looks like your passcode has expired. Please validate to renew your passcode.`;\r\n handleAccessCodeLogin(1, logDetails, msg);\r\n }\r\n //--------------------------------------------//\r\n //Manual login flow\r\n else if (!logDetails[\"AutoRedirect\"]) {\r\n if (!emailId || credentials[\"existingFlowRunScenario\"]) {\r\n setCurrentPage(\"loginOption\");\r\n }\r\n if (!currentPage === \"enterAccessCode\") {\r\n logDetails = { ...logDetails, isEnterAccessCode: false };\r\n }\r\n }\r\n //Auto redirecting flow\r\n else if (logDetails[\"AutoRedirect\"]) {\r\n handleLogin(undefined, logDetails);\r\n return false;\r\n }\r\n handleGetNextStepWeb(logDetails);\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCheckPasscodeExpired ====> \", error);\r\n }\r\n };\r\n\r\n const handleUpdateUserEmailInCTA = async (EmailId) => {\r\n let DeviceId = 0,\r\n PageLoadId =\r\n window?.parent?.GLO_PageLoadId ||\r\n (await AsyncStorage.getItem(\"PageLoadId\")) ||\r\n 0,\r\n Buttontext = handleGetButtonText(loginFrom);\r\n\r\n try {\r\n DeviceId = JSON.parse((await AsyncStorage.getItem(\"DeviceId\")) || 0);\r\n } catch (error) {\r\n DeviceId = (await AsyncStorage.getItem(\"DeviceId\")) || 0;\r\n }\r\n\r\n await handleAPI({\r\n name: \"UpdateUserEmailInCTA\",\r\n params: {\r\n Buttontext,\r\n PageLoadId,\r\n EmailId,\r\n DeviceId,\r\n },\r\n }).then((response) => {});\r\n };\r\n const handleLogin = async (flag, logDetails) => {\r\n if (!logDetails[\"SessionId\"]) {\r\n logDetails[\"SessionId\"] = await handleCreateNewSession(\r\n logDetails[\"WebLoginId\"]\r\n );\r\n }\r\n setDisabledButton(\"\");\r\n if (loginFrom !== \"securedoc\") {\r\n let CampaignDetails = JSON.parse(\r\n (await AsyncStorage.getItem(\"CampaignDetails\")) || null\r\n );\r\n if (\r\n CampaignDetails &&\r\n CampaignDetails[\"WebLoginId\"] == logDetails[\"WebLoginId\"]\r\n ) {\r\n AsyncStorage.removeItem(\"CampaignDetails\");\r\n }\r\n }\r\n //---------- If any actice session is found for the user Showing Procees & Wait option ----------//\r\n // if (!(window.self !== window.top)) {\r\n if (parseInt(logDetails[\"MultiLogin\"]) === 1 && flag === undefined) {\r\n setCurrentPage(\"multiLogin\");\r\n let { Emailoutside, EmailOutside, UserDisplayName } = logDetails;\r\n setHeaderText(\r\n `~~~${\r\n Emailoutside || EmailOutside || UserDisplayName || \"\"\r\n }--It looks like you're currently logged in on another device. Would you like to proceed?`\r\n );\r\n logDetails = { ...logDetails, AutoRedirectCheck: true };\r\n logDetails = { ...logDetails, ...logInDetails };\r\n setLoginDetails(logDetails);\r\n return false;\r\n }\r\n\r\n // }\r\n //--------------------------------------------//\r\n //---------- If User clicked Proceed option - it will close all active session ----------//\r\n if (currentPage === \"setPassword&Login\") {\r\n setProcessingStatus(\"loginNow\");\r\n } else setProcessingStatus(\"validating\");\r\n\r\n if (\r\n flag === 1 ||\r\n (window.self !== window.top &&\r\n (loginFrom === \"ratewizard\" ||\r\n loginFrom === \"loanapp\" ||\r\n loginFrom === \"securedoc\"))\r\n ) {\r\n setProcessingStatus(\"proceeding\");\r\n handleCloseOtherSession(logDetails);\r\n }\r\n //--------------------------------------------//\r\n let emailId =\r\n logDetails[\"EmailOutside\"] || logDetails[\"Emailoutside\"] || \"\";\r\n\r\n await handleLogDWCallToActionEventParent(\"Login\", emailId);\r\n\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, Email: emailId };\r\n });\r\n\r\n if (isRemember) {\r\n handleSetStoredCredential(1, {\r\n ...logDetails,\r\n ...logInDetails,\r\n DeviceId: deviceId,\r\n }); //Storing details for auto re-direct\r\n handleLogAutoGAEventPasscode(); //Storing login log - auto re-direct\r\n handleAPI({\r\n name: \"SaveDeviceFingerPrintWeb\",\r\n params: {\r\n UserName: emailId,\r\n DeviceId: deviceId,\r\n SaveResp: 1,\r\n WebLoginId: logDetails[\"WebLoginId\"],\r\n },\r\n }).then((response) => {});\r\n } else {\r\n //handleSetStoredCredential(2); //Clearing details of auto re-direct\r\n handleLogGAEventPasscode(); //Storing login log - Manual\r\n }\r\n await handleUpdateUserEmailInCTA(emailId);\r\n //Navigating to mobile applicaiton\r\n let HomePage = await getQueryString(\"HomePage\", \"0\");\r\n\r\n if (\r\n ((logDetails[\"URL\"] || \"\")?.indexOf(\"GoDirect\") !== -1 ||\r\n getQueryString(\"From\", \"\") === \"LoanOfficerWebsite\") &&\r\n [516595, 1, 99766, 3486].includes(logDetails[\"WebLoginId\"])\r\n ) {\r\n let params = queryStringToObject(logDetails[\"URL\"]);\r\n params = {\r\n ...{\r\n userName: logDetails[\"UserDisplayName\"],\r\n SessionId: logDetails[\"SessionId\"],\r\n WebLoginId: logDetails[\"WebLoginId\"],\r\n },\r\n ...params,\r\n };\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...params };\r\n });\r\n\r\n // let queryString=\r\n // for (const [key, value] of Object.entries(params)) {\r\n // if (value && key !== \"navigation\") {\r\n // //key === \"Path\" || key === \"SessionId\") -- removed for web login -> dashboard\r\n // queryString.set(key, value);\r\n // } else {\r\n // queryString.delete(key);\r\n // }\r\n // }\r\n // try {\r\n // window.parent.location.href = queryString;\r\n // } catch (e) {\r\n // window.location.href = queryString;\r\n // }\r\n if (logDetails[\"URL\"].toLowerCase().includes(\"wizard\")) {\r\n try {\r\n window.parent.location.href = logDetails[\"URL\"];\r\n } catch (e) {\r\n window.location.href = logDetails[\"URL\"];\r\n }\r\n } else navigate(\"DashBoard\", params);\r\n } else {\r\n //The Below code for redirecting Appropriate pages.\r\n const { WebLoginId, EmailOutside, Emailoutside, SessionId } = logDetails,\r\n objLoginParams = {\r\n WebLoginId,\r\n UserName: EmailOutside || Emailoutside,\r\n SessionId: SessionId,\r\n };\r\n if (\r\n ([\"RunScenario\", \"Ratesheetsignin\", \"ratelockleads\"].includes(\r\n loginFrom\r\n ) ||\r\n [\"DailyRates\"].includes(Route)) &&\r\n logDetails[\"UserType\"] === \"E\"\r\n ) {\r\n if ([\"RunScenario\", \"ratelockleads\"].includes(loginFrom)) {\r\n try {\r\n window.parent.fnLoadLoanSelection(objLoginParams);\r\n } catch (error) {\r\n window.top.fnLoadLoanSelection(objLoginParams);\r\n }\r\n return false;\r\n } else if (\r\n window.parent.glo_clicktype == 2 ||\r\n [\"DailyRates\"].includes(Route)\r\n ) {\r\n let URL = `../../../BorrowerApplication/Presentation/Webforms/DirectDefault.aspx?Skip=1&SessionId=${SessionId}&Route=${Route}`;\r\n try {\r\n window.parent.location.href = URL;\r\n } catch (e) {\r\n window.location.href = URL;\r\n }\r\n } else {\r\n try {\r\n window.parent.fnAssignRateSheetParams(objLoginParams);\r\n } catch (error) {\r\n window.top.fnAssignRateSheetParams(objLoginParams);\r\n }\r\n }\r\n } else if (loginFrom === \"esign\" || loginFrom === \"chat\") {\r\n if (loginFrom === \"esign\") handleEsignProcess(logDetails);\r\n if (loginFrom === \"chat\") handleChatProcess(logDetails);\r\n } else if (loginFrom === \"ratequote\") {\r\n setErrorMessage({\r\n text: (\r\n <CustomText style={{ color: \"#888\" }}>\r\n <ArrowSpinner />\r\n {\" \"}\r\n Please wait while we are Creating the loan with this scenario...\r\n </CustomText>\r\n ),\r\n color: \"#999\",\r\n italic: false,\r\n });\r\n\r\n let LoginXML = logDetails[\"rateQuoteXML\"];\r\n if (LoginXML) {\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(LoginXML, \"text/xml\");\r\n LoginXML = xmlDoc.documentElement;\r\n LoginXML.querySelectorAll(\"Component row\").forEach(function (row) {\r\n row.setAttribute(\"UserEmailID\", credentials[\"userName\"]);\r\n });\r\n }\r\n window.parent.document.querySelector(\"#hdnWebLoginId\").value =\r\n logDetails[\"WebLoginId\"];\r\n window.parent.$LIXD = LoginXML || \"\";\r\n window.parent.fnCreateSessionNew();\r\n window.parent.fnCreateLoanAndLock_publicpage_New(\"0\");\r\n return;\r\n } else if (\r\n (((logDetails[\"URL\"] || \"\")?.indexOf(\"GoDirect\") !== -1 ||\r\n (logDetails[\"URL\"] || \"\")?.indexOf(\"rates-wizard.php\") !== -1 ||\r\n HomePage == 1) &&\r\n loginFrom !== \"loginverify\" &&\r\n loginFrom !== \"loanapp\" &&\r\n loginFrom !== \"securedoc\") ||\r\n (logDetails[\"URL\"] || \"\")?.indexOf(\"SignUpWizard.aspx\") !== -1\r\n ) {\r\n if (\r\n window.self !== window.top &&\r\n (loginFrom === \"ratewizard\" ||\r\n loginFrom === \"loanapp\" ||\r\n loginFrom === \"securedoc\") &&\r\n (logDetails[\"URL\"] || \"\")?.indexOf(\"SignUpWizard.aspx\") === -1\r\n ) {\r\n handleRateOptionsLogin(logDetails);\r\n return;\r\n } else {\r\n if (web) {\r\n let URL_ = handleUpdateSessionId(\r\n logDetails[\"URL\"],\r\n logDetails[\"SessionId\"]\r\n );\r\n if (\r\n (URL_?.indexOf(\"GoDirect\") !== -1 ||\r\n getQueryString(\"From\", \"\") === \"LoanOfficerWebsite\") &&\r\n [516595, 1, 99766, 3486].includes(logDetails[\"WebLoginId\"])\r\n ) {\r\n let params = queryStringToObject(URL_);\r\n params = {\r\n ...{\r\n userName: logDetails[\"UserDisplayName\"],\r\n SessionId: logDetails[\"SessionId\"],\r\n\r\n WebLoginId: logDetails[\"WebLoginId\"],\r\n },\r\n ...params,\r\n };\r\n\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...params };\r\n });\r\n navigate(\"DashBoard\", params);\r\n } else {\r\n try {\r\n window.parent.location.href = URL_;\r\n } catch (e) {\r\n window.location.href = URL_;\r\n }\r\n }\r\n } else {\r\n navigate(\"DashBoard\", {\r\n userName: logDetails[\"UserDisplayName\"],\r\n SessionId: logDetails[\"SessionId\"],\r\n WebLoginId: logDetails[\"WebLoginId\"],\r\n });\r\n }\r\n }\r\n } else if (loginFrom === \"loginverify\") {\r\n let strPackage =\r\n window.parent.document.getElementById(\"hdnPackage\").value,\r\n RefType = window.parent.document.getElementById(\"hdntype\").value,\r\n URL = \"\";\r\n if (RefType == \"plaid\") {\r\n // URL = `../../../BorrowerApplication/presentation/webforms/BankVerification.aspx?SessionId=${logDetails[\"SessionId\"]}&uid=${strPackage}`;\r\n URL = `${window.location.origin}/GoDirect/index.html?SessionId=${logDetails[\"SessionId\"]}&uid=${strPackage}&Path=Plaid&From=loginverify`;\r\n try {\r\n window.parent.location.href = URL;\r\n } catch (e) {\r\n window.location.href = URL;\r\n }\r\n }\r\n } else {\r\n //replacing the session with new session\r\n let { SessionId, UserType } = logDetails;\r\n handleAPI({\r\n name: \"GetNextStepWeb\",\r\n params: { SessionId: SessionId, username: \"\", IP: \"::1\" },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n let URL = response[\"Column1\"];\r\n if (URL != \"\" && URL != null && URL != undefined) {\r\n //=====================\r\n\r\n URL = `${URL}&Skip=1`;\r\n if (UserType == \"C\") {\r\n // URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&To=${loginFrom}`; //\"BorrowerWelcome\";\r\n\r\n URL = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}`;\r\n }\r\n\r\n if (UserType == \"V\" || UserType == \"M\")\r\n URL = `../../../esignpackage/index.html?SessionId=${SessionId}`;\r\n\r\n let StartLoanApp = getQueryString(\"StartLoanApp\", \"0\");\r\n\r\n if (\r\n loginFrom == \"securedoc\" ||\r\n loginFrom == \"loanapp\" ||\r\n (loginFrom == \"ratewizard\" && StartLoanApp == 1)\r\n ) {\r\n // if (logDetails[\"AutoRedirect\"]) {\r\n handleSecureDocLogin(0, 0, StartLoanApp, logDetails); //P\r\n return;\r\n // } else {\r\n // URL = logDetails[\"URL\"];\r\n // }\r\n }\r\n if (UserType === \"E\") {\r\n if (\r\n loginFrom != \"esign\" &&\r\n loginFrom != \"chat\" &&\r\n loginFrom != \"ratequote\"\r\n )\r\n if (logDetails[\"URL\"]) {\r\n URL = logDetails[\"URL\"];\r\n }\r\n }\r\n\r\n let URL_ = handleUpdateSessionId(URL, logDetails[\"SessionId\"]);\r\n try {\r\n window.parent.location.href = URL_;\r\n } catch (e) {\r\n window.location.href = URL_;\r\n }\r\n try {\r\n if (action === \"changePassword\") {\r\n window.opener.close();\r\n }\r\n } catch (error) {}\r\n }\r\n });\r\n }\r\n }\r\n handleClearState(); //Restting the screen\r\n };\r\n const handleRateOptionsLogin = (logDetails) => {\r\n let From = getQueryString(\"From\", \"\"),\r\n RateQuoteId = getQueryString(\"RateQuoteId\", \"\") || 0,\r\n PublicRateQuoteId = getQueryString(\"PublicRateQuoteId\", \"\") || 0,\r\n StartLoanApp = getQueryString(\"StartLoanApp\", \"0\"),\r\n RateOptions = getQueryString(\"RateOptions\", \"0\"),\r\n LockThisRate = getQueryString(\"LockThisRate\", \"0\"),\r\n HomePage = getQueryString(\"HomePage\", \"0\"),\r\n URL = \"\",\r\n { SessionId, GatherId, LoanOfficerId } = logDetails;\r\n\r\n if (!From) From = \"\";\r\n if (!RateQuoteId) RateQuoteId = \"0\";\r\n if (!PublicRateQuoteId) PublicRateQuoteId = \"0\";\r\n try {\r\n if (!LoanOfficerId)\r\n LoanOfficerId =\r\n window.parent.document.getElementById(\"spnUserInfo\").attributes.empnum\r\n .value || \"1\";\r\n } catch (e) {}\r\n\r\n if (!LoanOfficerId) LoanOfficerId = \"1\";\r\n\r\n if (StartLoanApp == 1) {\r\n //URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&StartLoanApp=1&To=${loginFrom}`;\r\n\r\n URL = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}&StartLoanApp=1`;\r\n } else {\r\n if (HomePage == 1) {\r\n try {\r\n window.parent.glo_SessionId = SessionId;\r\n window.parent.fnCloseCampignModal();\r\n if (RateOptions == 1) {\r\n window.parent.fnTriggerFrameOptions(1);\r\n }\r\n if (LockThisRate == 1) {\r\n window.parent.fnTriggerFrameOptions(2);\r\n }\r\n } catch (e) {\r\n if (window.parent.ParentPage === \"NewLoPage\") {\r\n try {\r\n window.parent.glo_SessionId = SessionId;\r\n // window.parent.glo_CloseLoginPage = true;\r\n //window.parent.fnCloseCampignModal();\r\n // if (RateOptions == 1) {\r\n // window.parent.fnTriggerFrameOptions(1);\r\n // }\r\n if (LockThisRate == 1) {\r\n window?.parent?.document\r\n ?.getElementById(\"btnLockThisIntRate\")\r\n ?.click();\r\n }\r\n return false;\r\n } catch (e) {}\r\n }\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n URL = `../../../rates/rates-wizard.php?SessionId=${SessionId}&GatherId=0&From=${From}&LoanOfficerId=${LoanOfficerId}&${\r\n PublicRateQuoteId > 0\r\n ? `PublicRateQuoteId=${PublicRateQuoteId}`\r\n : `RateQuoteId=${RateQuoteId}`\r\n }`;\r\n }\r\n try {\r\n window.parent.location.href = URL;\r\n } catch (e) {\r\n window.location.href = URL;\r\n }\r\n };\r\n const handleUpdateSessionId = (url, SessionId) => {\r\n let url_ = url.split(\"?\");\r\n let page = url_[0],\r\n queryString = url_[1];\r\n queryString = queryString.split(\"&\");\r\n queryString = queryString\r\n .filter((item) => item.toLowerCase().indexOf(\"sessionid\") === -1)\r\n .join(\"&\");\r\n let url1 = `${page}?${queryString}&SessionId=${SessionId}`;\r\n return url1;\r\n };\r\n const handleCloseOtherSession = async (logDetails) => {\r\n await handleAPI({\r\n name: \"CloseOtherSession\",\r\n params: {\r\n WebLoginId: logDetails[\"WebLoginId\"],\r\n SessionId: logDetails[\"SessionId\"],\r\n },\r\n }).then((response) => {});\r\n };\r\n const handleLoginClick = (flag) => {\r\n //Login with password and Accesscode\r\n //---------- Access Code entering flow ----------//\r\n try {\r\n if (currentPage === \"enterAccessCode\") {\r\n setErrorMessage({ text: \"\" });\r\n\r\n let accessCode = parseInt(logInDetails[\"AccessCode\"]);\r\n\r\n if (loginFrom === \"RunScenario\" && !accessCode) {\r\n accessCode = parseInt(credentials[\"DBAccessCode\"]);\r\n }\r\n if (parseInt(credentials[\"AccessCode\"]) === accessCode) {\r\n setProcessingStatus(\"validating\");\r\n setLoginDetails({\r\n ...logInDetails,\r\n MaxPasscodeIncorrectLogin: 0,\r\n });\r\n if (\r\n Number(logInDetails[\"UsingSecpwd\"]) === 0 &&\r\n Number(logInDetails[\"deviceIdExist\"]) === 0\r\n ) {\r\n handleAPI({\r\n name: \"SaveDeviceFingerPrintWebOnly\",\r\n params: {\r\n Email:\r\n logInDetails[\"EmailOutside\"] || logInDetails[\"Emailoutside\"],\r\n DeviceId: deviceId,\r\n },\r\n }).then((response) => {});\r\n }\r\n if (logInDetails[\"isForgotPassword\"]) {\r\n //Showing Password set screen\r\n setHeaderText(\"~~~Set your password.\");\r\n setCurrentPage(\r\n action === \"changePassword\" ? \"newPassword\" : \"setPassword&Login\"\r\n );\r\n return false;\r\n }\r\n //---------- resetting password expired flag ----------//\r\n handleAPI({\r\n name: \"UpdatePasscode\",\r\n params: {\r\n refId: logInDetails[\"WebLoginId\"],\r\n },\r\n }).then((response) => {});\r\n //--------------------------------------------//\r\n //---------- If cell phone is not exist in the login then showing option to add ----------//\r\n if (\r\n (logInDetails[\"CellPhone\"] === undefined ||\r\n logInDetails[\"CellPhone\"] === null ||\r\n logInDetails[\"CellPhone\"] === \"\") &&\r\n flag !== -1\r\n ) {\r\n setCurrentPage(\"addCellPhone\");\r\n setHeaderText(\r\n \"~~~Optional. Add a Cell Phone Number to your account.\"\r\n );\r\n setLoginDetails(logInDetails);\r\n return false;\r\n }\r\n\r\n if (hideSecureEmail && flag !== -1) {\r\n handleAPI({\r\n name: \"SavePhoneToAccount\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n Phone: logInDetails[\"CellPhone\"],\r\n },\r\n }).then((response) => {\r\n handleLoginClick(-1);\r\n });\r\n return false;\r\n }\r\n //--------------------------------------------//\r\n\r\n handleLogin(flag, logInDetails); //General login process\r\n }\r\n //Handling entering invalid access code\r\n else {\r\n setProcessingStatus(null);\r\n setErrorMessage({ text: \"Invalid Access Code.\" });\r\n let MaxPasscodeIncorrectLogin =\r\n parseInt(logInDetails[\"MaxPasscodeIncorrectLogin\"] || 0) + 1;\r\n setLoginDetails({\r\n ...logInDetails,\r\n MaxPasscodeIncorrectLogin: MaxPasscodeIncorrectLogin,\r\n });\r\n handleLogFailedLoginEvent(\"Invalid Access Code.\");\r\n if (MaxPasscodeIncorrectLogin === 5) {\r\n setHeaderText(\r\n `2nd Notice. ~~~This Login attempt has been blocked. The maximum login attempts have been exceeded. We have ${\r\n credentials[\"userName\"].indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code. Enter it below.`\r\n );\r\n handleLogFailedLoginEvent(\r\n `This Login attempt has been blocked. The maximum login attempts have been exceeded. We have ${\r\n credentials[\"userName\"].indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code. Enter it below.`\r\n );\r\n }\r\n //Reached max limit then terminating the user\r\n if (MaxPasscodeIncorrectLogin > 10) {\r\n handleAPI({\r\n name: \"TerminateUserAccount\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n },\r\n }).then((response) => {\r\n setIsTerminated(true);\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n });\r\n }\r\n }\r\n }\r\n //Multiple active session\r\n else if (currentPage === \"multiLogin\" && flag === 1) {\r\n setErrorMessage({ text: \"\" });\r\n setProcessingStatus(\"proceeding\");\r\n handleLogin(flag, logInDetails);\r\n }\r\n //Enter password flow\r\n else {\r\n if (handleUserNameValidation()) {\r\n if (credentials[\"userName\"] === \"\")\r\n setErrorMessage({ text: \"Invalid Username\" });\r\n return false;\r\n }\r\n if (credentials[\"password\"] === \"\") {\r\n setErrorMessage({ text: \"Invalid Password\" });\r\n return false;\r\n }\r\n setProcessingStatus(\"validating\");\r\n //Validating the credention is correct or not\r\n handleAPI({\r\n name: \"ValidateLoginWithEmailorPhone\",\r\n params: {\r\n UserName: credentials[\"userName\"],\r\n Password: credentials[\"password\"],\r\n SessionId: logInDetails[\"SessionId\"],\r\n },\r\n }).then((response) => {\r\n try {\r\n response = JSON.parse(response)[\"Table\"][0][\"Column1\"].toString();\r\n let responseXML = response;\r\n response = new XMLParser().parseFromString(response)[\"children\"][0][\r\n \"attributes\"\r\n ];\r\n\r\n response[\"SessionId\"] = logInDetails[\"SessionId\"];\r\n response[\"MultiLogin\"] = response[\"MultiLoginModel\"];\r\n response[\"WebLoginId\"] = logInDetails[\"WebLoginId\"];\r\n response[\r\n \"UserDisplayName\"\r\n ] = `${response[\"FirstName\"]} ${response[\"LastName\"]}`;\r\n if (!response[\"UserDisplayName\"]?.trim())\r\n response[\"UserDisplayName\"] = response[\"ADUserName\"];\r\n if (loginFrom === \"ratequote\")\r\n response[\"rateQuoteXML\"] = responseXML;\r\n\r\n response = { ...logInDetails, ...response };\r\n setLoginDetails(response);\r\n let { UserId } = response;\r\n //Invalid credentials\r\n if (UserId == 0) {\r\n setProcessingStatus(null);\r\n setErrorMessage({ text: \"Invalid Username or Password.\" });\r\n handleLogFailedLoginEvent(\"Invalid Username or Password\");\r\n\r\n // let MaxPasscodeIncorrectLogin =\r\n // parseInt(logInDetails[\"MaxPasscodeIncorrectLogin\"] || 0) + 1;\r\n // setLoginDetails({\r\n // ...response,\r\n // ...{\r\n // MaxPasscodeIncorrectLogin: MaxPasscodeIncorrectLogin,\r\n // },\r\n // });\r\n\r\n return false;\r\n }\r\n //Terminated User\r\n else if (UserId == -99) {\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n handleLogFailedLoginEvent(\"This account is terminated.\");\r\n setIsTerminated(true);\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Blocked User\r\n else if (UserId == -98) {\r\n handleLogFailedLoginEvent(\"This user account has been blocked\");\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1);\r\n else handleAccessCodeLogin(2);\r\n // setErrorMessage({\r\n // text: \"This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\",\r\n // color: \"#999\",\r\n // });\r\n setErrorMessage({\r\n text: \"\",\r\n });\r\n setLoginDetails({\r\n ...response,\r\n AccountLocked: 1,\r\n });\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Missing Manditory Info.\r\n else if (UserId == -97) {\r\n handleLogFailedLoginEvent(\r\n \"This user login is missing the required account information\"\r\n );\r\n setErrorMessage({\r\n text: \"This user login is missing the required account information. Please contact MakeMeAware@directcorp.com.\",\r\n color: \"#999\",\r\n });\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Blocked User and sending Access code to user\r\n else if (UserId == -96) {\r\n handleLogFailedLoginEvent(\r\n \"This Login attempt has been blocked. The maximum allowed login attempts has been exceeded\"\r\n );\r\n // setErrorMessage({\r\n // text: \"This Login attempt has been blocked. The maximum allowed login attempts has been exceeded.\",\r\n // color: \"#999\",\r\n // });\r\n setErrorMessage({\r\n text: \"\",\r\n });\r\n let logDetails_ = { ...response, attemptExceed: 1 };\r\n setLoginDetails(logDetails_);\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1, logDetails_);\r\n else handleAccessCodeLogin(2, logDetails_);\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n //Blocked User\r\n else if (UserId == -95) {\r\n handleLogFailedLoginEvent(\"This user account has been blocked.\");\r\n setErrorMessage({\r\n text: \"This user account has been blocked. To Unblock this login, please contact MakeMeAware@directcorp.com.\",\r\n color: \"#999\",\r\n });\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n if (\r\n Number(response[\"UsingSecpwd\"]) === 0 &&\r\n Number(response[\"deviceIdExist\"]) === 0\r\n ) {\r\n let msg = `${\r\n response[\"UserDisplayName\"]\r\n }--We recognize you, just not this specific device. We've ${\r\n credentials[\"userName\"].indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code just to verify it's really you. Enter it below.`;\r\n\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1, response, msg);\r\n else handleAccessCodeLogin(2, response, msg);\r\n setProcessingStatus(null);\r\n return false;\r\n }\r\n\r\n //Valid credential - redirectng to corresponding page\r\n\r\n handleLogin(flag, response);\r\n } catch (e) {\r\n handleLogFailedLoginEvent(\"Database error\");\r\n Alert.alert(\r\n \"Database error. Please try again or contact MakeMeAware@directcorp.com for additional assistance.\"\r\n );\r\n log(\"Error from ValidateLoginWithEmailorPhone ====> \", e);\r\n }\r\n });\r\n }\r\n } catch (error) {\r\n log(\"Error from handleLoginClick ====> \", error);\r\n }\r\n };\r\n const handleLogGAEventPasscode = () => {\r\n //Storing login event details for Manual process\r\n try {\r\n handleAPI({\r\n name: \"fnLogGAEvent_passcode\",\r\n params: {\r\n UserWebloginId: logInDetails[\"WebLoginId\"],\r\n device: web ? \"desktop\" : \"mobile\",\r\n LO: 0,\r\n fromAction: handleGetEmailMethod() || \"DWLogin\",\r\n Prevpage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n },\r\n }).then((response) => {});\r\n } catch (error) {\r\n log(\"Error from handleLogGAEventPasscode ====> \", error);\r\n }\r\n };\r\n const handleGetEmailMethod = () => {\r\n let emailmethod = \"DWLogin\";\r\n if (\r\n document.documentURI.indexOf(\"StartLoanApp=1\") !== -1 ||\r\n document.documentURI.indexOf(\"To=loanapp\") !== -1\r\n )\r\n emailmethod = \"StartLoanApp\";\r\n else if (document.documentURI.indexOf(\"LockThisRate=1\") !== -1)\r\n emailmethod = \"LockThisIntRate\";\r\n else if (document.documentURI.indexOf(\"RateOptions=1\") !== -1)\r\n emailmethod = \"RateOptions\";\r\n else if (document.documentURI.indexOf(\"CustomizeOptions=1\") !== -1)\r\n emailmethod = \"CustomizeOptions\";\r\n else if (document.documentURI.indexOf(\"To=ratequote\") !== -1) {\r\n emailmethod = \"RateQuotes\";\r\n } else if (document.documentURI.indexOf(\"To=securedoc\") !== -1) {\r\n emailmethod = \"UploadDocs\";\r\n }\r\n return emailmethod;\r\n };\r\n const handleLogAutoGAEventPasscode = (LO, WebLoginId) => {\r\n //Storing login event details for Auto redirecting process\r\n\r\n if (document.documentURI.indexOf(\"To=ratequote\") !== -1) {\r\n LO = window?.parent?.getQuerystring(\"empnum\", \"\");\r\n } else if (document.documentURI.indexOf(\"To=securedoc\") !== -1) {\r\n LO = getQuerystring_document(\"loanofficer=\", \"0\");\r\n }\r\n let device = web ? \"desktop\" : \"mobile\";\r\n try {\r\n handleAPI({\r\n name: \"LogGAEvent\",\r\n params: {\r\n UserWebloginId: WebLoginId || logInDetails[\"WebLoginId\"],\r\n device: device,\r\n LO: LO || 0,\r\n fromAction: handleGetEmailMethod() || \"DWLogin\",\r\n Prevpage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n },\r\n }).then((response) => {});\r\n } catch (error) {\r\n log(\"Error from handleLogAutoGAEventPasscode ====> \", error);\r\n }\r\n };\r\n const getQuerystring_document = (key, default_) => {\r\n let finalQueryString = \"\";\r\n if (default_ == null) default_ = \"\";\r\n key = key.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n\r\n let NewKey = key.toUpperCase();\r\n NewKey = NewKey.replace(\"=\", \"\");\r\n let regex = new RegExp(\"[\\\\?&]\" + NewKey + \"=([^&#]*)\"),\r\n ActualQueryString = window.location?.href || null,\r\n NewQueryString = ActualQueryString.toUpperCase(),\r\n qsValue = regex.exec(NewQueryString);\r\n if (qsValue != null) {\r\n let startPosi = NewQueryString.indexOf(\"&\" + NewKey),\r\n keylen = NewKey.length,\r\n Querylen = ActualQueryString.length,\r\n prefix = ActualQueryString.substring(0, startPosi),\r\n sufix = ActualQueryString.substring(startPosi + 1 + keylen, Querylen);\r\n finalQueryString = prefix + \"&\" + NewKey + sufix;\r\n } else {\r\n finalQueryString = NewQueryString;\r\n }\r\n let qs = regex.exec(finalQueryString);\r\n if (qs == null) return default_;\r\n else return qs[1];\r\n };\r\n const handleLogFailedLoginEvent = async (Errmsg) => {\r\n //Storing login failed event details like invalid,Terminated login,etc...\r\n let strobj = {\r\n UserName: credentials[\"userName\"],\r\n device: web ? \"desktop\" : \"mobile\",\r\n Errmsg: Errmsg,\r\n IPAddress: deviceId || \"\",\r\n emailmethod: handleGetEmailMethod() || \"DWLogin\",\r\n LO: 0,\r\n PrevPage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n };\r\n try {\r\n handleAPI({\r\n name: \"LogFailedLoginEvent\",\r\n params: strobj,\r\n }).then((response) => {});\r\n } catch (error) {\r\n log(\"Error from handleLogFailedLoginEvent ====> \", error);\r\n }\r\n };\r\n const handleCreateNewAccClick = () => {\r\n //Create New accout flow\r\n if (credentials[\"userName\"] === \"\") {\r\n setHeaderText(\r\n \"~~~Let's create an account. Begin by entering a cell phone number or email address.\"\r\n );\r\n setErrorMessage({ text: \"\" });\r\n return false;\r\n }\r\n //Checking the user already exist or not\r\n handleAPI({\r\n name: \"GetUserNameExists\",\r\n params: { userName: credentials[\"userName\"] },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n response = { ...logInDetails, ...response };\r\n setLoginDetails(response);\r\n if (parseInt(response[\"UserExists\"]) === 1) {\r\n //User exist - next screen to login\r\n setCurrentPage(\"emailOnly\");\r\n setHeaderText(`~~~Let's get you logged in...`);\r\n } else if (parseInt(response[\"UserExists\"]) === 0) {\r\n //User not exist - Navigate to signup screen\r\n navigate(\"Signup\", {\r\n userName: credentials[\"userName\"],\r\n deviceId: deviceId,\r\n });\r\n handleClearState(); //Resetting the screen\r\n }\r\n });\r\n };\r\n const getSecureEmail = () => {\r\n //Showing Email like -> test.....@gmail.cm\r\n let Email =\r\n logInDetails[\"EmailOutside\"] ||\r\n logInDetails[\"EmailOutside\"] ||\r\n logInDetails[\"UserName\"];\r\n //Hide emial when cell phone adding optoion\r\n if (hideSecureEmail) return <></>;\r\n if (\r\n credentials[\"userName\"] === \"\" ||\r\n credentials[\"userName\"].indexOf(\"@\") === -1\r\n ) {\r\n if (Email !== undefined) Email = Email.split(\"@\");\r\n else return <></>;\r\n } else Email = credentials[\"userName\"].split(\"@\");\r\n return (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleAccessCodeLogin(1);\r\n }}\r\n bold={true}\r\n style={[styles.footText, { alignSelf: \"flex-start\", fontSize: 13 }]}\r\n >\r\n Resend via email\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 13, color: \"#999\", marginTop: 5 }}\r\n >\r\n {`${Email[0].slice(0, 2)}...${Email[1]}`}\r\n </CustomText>\r\n {[1, 3].includes(emailSentTo) && (\r\n <CustomText bold={true} style={{ color: \"#0000ff\", fontSize: 12 }}>\r\n Sent\r\n </CustomText>\r\n )}\r\n </>\r\n );\r\n };\r\n const getSecurePhone = () => {\r\n //Showing cellphone like -> xxx-xxx-8574\r\n let Phone = logInDetails[\"CellPhone\"];\r\n if (Phone === undefined) {\r\n if (\r\n Number(credentials[\"userName\"]) !== NaN &&\r\n credentials[\"userName\"].indexOf(\"@\") === -1\r\n ) {\r\n Phone = credentials[\"userName\"];\r\n }\r\n } else Phone = Phone.slice(-4);\r\n return (\r\n <>\r\n {Phone === \"\" ? (\r\n <></>\r\n ) : (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleAccessCodeLogin(2);\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n { alignSelf: \"flex-start\", fontSize: 13 },\r\n ]}\r\n >\r\n Resend via text message\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 13,\r\n color: \"#999\",\r\n marginTop: 5,\r\n alignSelf:\r\n getQueryString(\"Mobile\", \"\") == \"true\" ? \"flex-end\" : \"\",\r\n }}\r\n >\r\n {`xxx-xxx-${Phone}`}\r\n </CustomText>\r\n {[2, 3].includes(emailSentTo) && (\r\n <CustomText\r\n bold={true}\r\n style={{ color: \"#0000ff\", fontSize: 12 }}\r\n >\r\n Sent\r\n </CustomText>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n const handleCreateAccessCode = (WebLoginId, reff, logDetails) => {\r\n //Sending Access code to user for login,forgot password,etc...\r\n try {\r\n handleAPI({\r\n name: \"CreateAccessCodeUsingWeblogin\",\r\n params: { Id: WebLoginId, reff: reff },\r\n }).then((response) => {\r\n //For showing (Sent) text under the emial & cellphone\r\n response = JSON.parse(response)[\"Table\"][0][\"Column1\"].toString();\r\n\r\n response = response.split(\"|\");\r\n if (response.length > 2) {\r\n let msg = \"\";\r\n if (Number(response[3]) === 0) msg = response[1];\r\n setAccesscodeWarningMsg(msg);\r\n\r\n logDetails = {\r\n ...logDetails,\r\n ...{ AccessCode: response[2], isEnterAccessCode: true },\r\n };\r\n // console.log(\"Code ====> \", response[2]);\r\n logDetails = { ...logDetails, ...logInDetails };\r\n\r\n let userName = credentials[\"userName\"] || logDetails[\"UserName\"];\r\n logDetails[\r\n \"rateQuoteXML\"\r\n ] = `<Component><row WebLoginId=\"${WebLoginId}\" SessionId=\"\" UserEmailID=\"${userName}\"/></Component>`;\r\n\r\n setLoginDetails(logDetails);\r\n handleGetNextStepWeb(logDetails);\r\n if (loginFrom === \"RunScenario\") {\r\n setCredentials((prevCredentials) => {\r\n return { ...prevCredentials, DBAccessCode: response[2] };\r\n });\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n log(\"Error from handleCreateAccessCode ====> \", error);\r\n }\r\n };\r\n const handleAccessCodeLogin = (reff, logDetails, msg) => {\r\n //Pre- sete of access code sending process\r\n logDetails = { ...logInDetails, ...logDetails };\r\n let WebLoginId = logDetails[\"WebLoginId\"];\r\n try {\r\n logDetails = logDetails || [];\r\n msg = msg || \"\";\r\n if (!logDetails[\"AutoRedirectCheck\"]) {\r\n if (handleUserNameValidation()) {\r\n setErrorMessage({\r\n color: \"#999\",\r\n text: \"This is not a valid username. Please enter a valid username to use the Forgot Password function.\",\r\n italic: false,\r\n });\r\n return false;\r\n }\r\n }\r\n setLoginDetails({ ...logInDetails, ...logDetails });\r\n //Getting weblogin details is not exist already\r\n if (WebLoginId == undefined) {\r\n handleAPI({\r\n name: \"GetUserNameExists\",\r\n params: { userName: credentials[\"userName\"] },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n WebLoginId = response[\"WebLoginId\"];\r\n\r\n if (parseInt(response[\"UserExists\"]) === 0) {\r\n //User not exist - Navigate to signup screen\r\n navigate(\"Signup\", {\r\n userName: credentials[\"userName\"],\r\n deviceId: deviceId,\r\n });\r\n handleClearState(); //Resetting the screen\r\n return;\r\n }\r\n logDetails = { ...logDetails, ...response, ...logInDetails };\r\n setLoginDetails(logDetails);\r\n logDetails = handleSetAccessCodeHeader(logDetails, msg, reff);\r\n handleEmailSentTo(reff);\r\n handleCreateAccessCode(WebLoginId, reff, logDetails);\r\n return false;\r\n });\r\n } else {\r\n logDetails = { ...logDetails, ...logInDetails };\r\n logDetails = handleSetAccessCodeHeader(logDetails, msg, reff);\r\n handleEmailSentTo(reff);\r\n handleCreateAccessCode(WebLoginId, reff, logDetails);\r\n }\r\n } catch (error) {\r\n log(\"Error form handleAccessCodeLogin ====> \", error);\r\n }\r\n };\r\n const handleSetAccessCodeHeader = (logDetails, msg, reff) => {\r\n msg = msg || \"\";\r\n\r\n if (logDetails[\"AccountLocked\"] === 1) {\r\n logDetails = { ...logInDetails, isValidateAccesscode: true };\r\n msg = \"This user account is locked. \";\r\n msg += `We've ${\r\n reff === 1 ? \"Emailed\" : \"Text\"\r\n } you an access code!\\nEnter it below.`;\r\n setErrorMessage({ text: \"\" });\r\n } else if (logDetails[\"attemptExceed\"] === 1) {\r\n logDetails = { ...logInDetails, isValidateAccesscode: true };\r\n if (logDetails[\"MaxPasscodeIncorrectLogin\"] === 5) {\r\n msg = `2nd Notice. ~~~This Login attempt has been blocked. The maximum login attempts have been exceeded.`;\r\n } else {\r\n msg = `~~~This Login attempt has been blocked. ~~~The maximum login attempts have been exceeded.`;\r\n }\r\n msg += `We've ${\r\n reff === 1 ? \"Emailed\" : \"Text\"\r\n } you an access code!\\nEnter it below.`;\r\n }\r\n\r\n setCurrentPage(\"enterAccessCode\");\r\n if (loginFrom === \"RunScenario\") {\r\n const { CellPhone = \"\", EmailOutside, Emailoutside } = logDetails;\r\n const msg =\r\n CellPhone && (EmailOutside || Emailoutside)\r\n ? `Welcome <b style='color:black; font-weight:bold'>${logDetails[\"UserDisplayName\"]}.</b>Run your own scenario. We've Emailed and Texted you an access code just to verify it's really you. Enter it below.`\r\n : `Welcome <b style='color:black; font-weight:bold'>${\r\n logDetails[\"UserDisplayName\"]\r\n }.</b>Run your own scenario. We've ${\r\n emailId.indexOf(\"@\") === -1 ? \"Text\" : \"Emailed\"\r\n } you an access code just to verify it's really you. Enter it below.`;\r\n\r\n setHeaderText(\"~~~\" + msg);\r\n } else {\r\n setHeaderText(\r\n \"~~~\" +\r\n (msg ||\r\n `We've sent you ${\r\n reff === 1 ? \"an Email\" : \"a Text\"\r\n } with an access code!\\nEnter it below.`)\r\n );\r\n }\r\n return logDetails;\r\n };\r\n\r\n const handleLogInValidation = () => {\r\n setAccesscodeWarningMsg(\"\");\r\n setDisabledButton(\"loginValidate\");\r\n handleLoginClick();\r\n };\r\n\r\n const getExpireDate = (expireInMinutes) => {\r\n //Getting expired time\r\n const now = new Date();\r\n let expireTime = new Date(now);\r\n expireTime.setMinutes(now.getMinutes() + expireInMinutes);\r\n return expireTime.getTime();\r\n };\r\n const getHeaderText = () => {\r\n //Showing the header text\r\n let header = headerText.replaceAll(\"~~~~~~\", \"\");\r\n header = header.split(\"~~~\");\r\n if (header[1].indexOf(\"--\") > -1) {\r\n let header_ = header[1].split(\"--\");\r\n header[1] = (\r\n <>\r\n <View style={{ width: \"100%\" }}>\r\n <CustomText\r\n bold={true}\r\n style={[\r\n styles.headText,\r\n {\r\n color: isTerminated ? \"red\" : \"#999\",\r\n fontFamily: '\"Helvetica Neue\",Helvetica,Arial,sans-serif',\r\n lineHeight: 22,\r\n marginBottom: 5,\r\n fontSize: 19,\r\n },\r\n ]}\r\n >\r\n {header_[0]}\r\n </CustomText>\r\n </View>\r\n <CustomText\r\n // bold={true}\r\n style={[\r\n styles.headText,\r\n {\r\n color: isTerminated ? \"red\" : \"#999\",\r\n fontFamily: '\"Helvetica Neue\",Helvetica,Arial,sans-serif',\r\n lineHeight: 22,\r\n fontSize: 17,\r\n },\r\n ]}\r\n >\r\n {header_[1]}\r\n </CustomText>\r\n </>\r\n );\r\n } else if (header[1].indexOf(\"</b>\") > -1) {\r\n let header_ = header[1]\r\n .replaceAll(`<b style='color:black; font-weight:bold'>`, \"~\")\r\n .replaceAll(\"</b>\", \"~\");\r\n header_ = header_.split(\"~\");\r\n header[1] = (\r\n <>\r\n {header_[0]}\r\n <b style={{ color: \"black\", fontWeight: \"bold\" }}>{header_[1]}</b>\r\n {\"\\n\"}\r\n {header_[2]}\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={[\r\n styles.headText,\r\n {\r\n color: isTerminated ? \"red\" : \"#999\",\r\n fontFamily: '\"Helvetica Neue\",Helvetica,Arial,sans-serif',\r\n lineHeight: 22,\r\n },\r\n ]}\r\n >\r\n {header[0] !== \"\" ? (\r\n <CustomText bold={true} style={[styles.headText, { color: \"red\" }]}>\r\n {header[0]}{\" \"}\r\n </CustomText>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {header[1]}\r\n </CustomText>\r\n </>\r\n );\r\n };\r\n const validatePassword = (key, text) => {\r\n setPasswordMisMatch(\"\");\r\n setNewPassword({ ...newPassword, ...{ [key]: text, key: key } });\r\n };\r\n const navigate = async (navigateTo, navigateDetails) => {\r\n let details = { ...navigateDetails, navigation: navigation };\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...details };\r\n });\r\n\r\n if (navigateTo === \"DashBoard\") {\r\n let url = await updateWebURL(\r\n { ...navigateDetails, Path: navigateTo },\r\n true\r\n );\r\n // window.top.location.href = `${window.location.origin}${\r\n // window.location.host === \"localhost:19006\"\r\n // ? \"\"\r\n // : \"/GoDirect/index.html?\"\r\n // }${url}`;\r\n try {\r\n window.top.location.href = `${window.location.origin}/GoDirect/index.html?${url}`;\r\n } catch (error) {\r\n window.location.href = `${window.location.origin}/GoDirect/index.html?${url}`;\r\n }\r\n } else {\r\n updateWebURL({ ...navigateDetails, Path: navigateTo });\r\n (navigation || props[\"navigation\"]).navigate(navigateTo, navigateDetails); // Sample ===> \"signUp\",{}\r\n }\r\n };\r\n\r\n const handleLogDWCallToActionEventParent = async (iButtontext, emailId) => {\r\n let PageLoadId =\r\n window?.parent?.GLO_PageLoadId ||\r\n (await AsyncStorage.getItem(\"PageLoadId\")) ||\r\n 0;\r\n let device = web ? \"desktop\" : \"mobile\",\r\n Buttontext = iButtontext || handleGetButtonText(loginFrom);\r\n\r\n let params = {\r\n PageTitle: window.parent.document.title,\r\n PageURL: window.parent.location.href,\r\n device,\r\n IPAddress: window.parent.GloParentDeviceId,\r\n ParentId: web\r\n ? window?.parent?.GLO_PageLoadId || PageLoadId || 0\r\n : PageLoadId || 0,\r\n Buttontext,\r\n detailsJson: JSON.stringify([\r\n {\r\n Browser: handleGetBrowserName(),\r\n LoanId: 0,\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email:\r\n emailId ||\r\n logInDetails[\"EmailOutside\"] ||\r\n logInDetails[\"Emailoutside\"] ||\r\n \"\",\r\n },\r\n ]),\r\n };\r\n if (Buttontext !== \"\") {\r\n await handleAPI({\r\n name: \"fnLogDWCallToActionEvent\", // Contact_Sp_DWLog_CallToActions\r\n params,\r\n })\r\n .then(async (response) => {\r\n await handleTrackGA4Events(Buttontext, params);\r\n })\r\n .catch((e) => log(\"Error form fnLogDWCallToActionEvent ====> \", e));\r\n }\r\n };\r\n const handleGetNewDeviceId = async () => {\r\n let iDeviceId = null,\r\n iVisitorId = window.parent?.GloParentDeviceId;\r\n if (deviceId) iDeviceId = deviceId;\r\n else {\r\n if (!iVisitorId) {\r\n try {\r\n const fp = await FingerprintJS.load({\r\n token: \"gRFbO46GhIYEf0AI5z16\",\r\n });\r\n const { visitorId } = await fp.get();\r\n iDeviceId = visitorId;\r\n } catch (error) {}\r\n }\r\n iVisitorId = iVisitorId || iDeviceId;\r\n AsyncStorage.setItem(\"DeviceId\", JSON.stringify(iVisitorId) || null);\r\n }\r\n if (!iVisitorId) {\r\n // let randomString = require(\"randomstring\");\r\n // iVisitorId = randomString.generate(20);\r\n // iVisitorId = JSON.stringify(iVisitorId);\r\n iVisitorId = generateFingerprint();\r\n iVisitorId = JSON.stringify(`D-${iVisitorId.replaceAll(\"-\", \"\")}`);\r\n await AsyncStorage.setItem(\"DeviceId\", iVisitorId || null);\r\n }\r\n\r\n // console.log(\"Your GloParentDeviceId ====> \", iVisitorId);\r\n return iVisitorId;\r\n };\r\n\r\n const handleLogDWVisitorsEvent = async (visitorId) => {\r\n let params = {\r\n PageTitle: \"Login\",\r\n PageURL: web\r\n ? window?.parent?.location.href || window.location.href\r\n : \"GoDirect Loan Application\",\r\n device: web ? \"desktop\" : \"mobile\",\r\n IPAddress:\r\n window.parent?.GloParentDeviceId ||\r\n visitorId ||\r\n (await handleGetNewDeviceId()),\r\n ParentId: window?.parent?.GLO_PageLoadId || 0,\r\n detailsJson: JSON.stringify([\r\n {\r\n Browser: handleGetBrowserName(),\r\n LoanId: 0,\r\n },\r\n ]),\r\n };\r\n await handleAPI({\r\n name: \"LogDWVisitorsEvent\",\r\n params,\r\n }).then((PageLoadId) => {\r\n AsyncStorage.setItem(\r\n \"iPageLoadId\",\r\n JSON.stringify(window?.parent?.GLO_PageLoadId || PageLoadId || null)\r\n );\r\n handleTrackGA4Events(\"LogIn\", params);\r\n return PageLoadId;\r\n });\r\n };\r\n const handleStoreCampaignDetails = (\r\n logDetails,\r\n CampignId,\r\n utm_campaign,\r\n CampignNum\r\n ) => {\r\n let utm_source = \"Direct Mortgage\",\r\n utm_medium = \"Internal\",\r\n utm_content = \"\",\r\n utm_term = \"\",\r\n OrgUrl = window.top.document.location.href,\r\n msgtext = \"\",\r\n LOId = 0,\r\n WebLoginId = 4142;\r\n if (OrgUrl == null || OrgUrl == undefined) {\r\n OrgUrl = \"\";\r\n }\r\n if (\r\n loginFrom == \"securedoc\" ||\r\n loginFrom == \"loanapp\" ||\r\n loginFrom == \"ratequote\"\r\n ) {\r\n try {\r\n if (LOId == 0 || LOId == null || LOId == \"\" || LOId == undefined) {\r\n LOId = window?.parent?.getQuerystring(\"loanofficer\", \"\");\r\n }\r\n } catch (e) {}\r\n }\r\n if (LOId == \"0\" || LOId == null || LOId == \"\" || LOId == undefined)\r\n LOId = \"1\";\r\n\r\n if (\r\n (logDetails[\"WebLoginId\"] != \"\") & (logDetails[\"WebLoginId\"] != null) &&\r\n logDetails[\"WebLoginId\"] != undefined\r\n ) {\r\n WebLoginId = logDetails[\"WebLoginId\"];\r\n }\r\n\r\n try {\r\n handleAPI({\r\n name: \"StoreUTMCampaignWithOutLoginId\",\r\n params: {\r\n CampignId,\r\n WebLoginId,\r\n utmsource: utm_source,\r\n utmmedium: utm_medium,\r\n utmcampaign: utm_campaign,\r\n utmcontent: utm_content,\r\n utmterm: utm_term,\r\n OrgUrl,\r\n MsgText: msgtext,\r\n Email:\r\n logInDetails[\"Emailoutside\"] || logInDetails[\"EmailOutside\"] || \"\",\r\n Phone: logInDetails[\"cellPhone\"] || \"\",\r\n CampignNum,\r\n LeadOfficer,\r\n },\r\n }).then((response) => {\r\n // console.log(\"StoreUTMCampaignWithOutLoginId\", response);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n function handleUpdateIISSession(SessionId) {\r\n let iframe = document.getElementById(\"IISSessionFrame\"),\r\n // IISSessionId = \"\",\r\n IISSessionIdASP = \"\";\r\n if (iframe) {\r\n let iframeDoc = iframe.contentDocument || iframe.contentWindow.document,\r\n // IISSessionEle = iframeDoc.getElementById(\"hdnIISSessionId\"),\r\n IISSessionIdASPEle = iframeDoc.getElementById(\"hdnIISSessionIdASP1\");\r\n // if (IISSessionEle) IISSessionId = IISSessionEle.value;\r\n if (IISSessionIdASPEle) IISSessionIdASP = IISSessionIdASPEle.value;\r\n else IISSessionIdASP = handleGetASPId();\r\n } else {\r\n IISSessionIdASP = handleGetASPId();\r\n }\r\n handleAPI({\r\n name: \"updateIISaspSession\", //\"UpdateIISSessionId\",\r\n params: {\r\n SessionId: SessionId,\r\n IISSessionId: IISSessionId || handleGetIISid() || \"\",\r\n IISSessionIdASP: IISSessionIdASP || \"\",\r\n },\r\n })\r\n .then((response) => {\r\n console.log(\"updateIISaspSession\", response);\r\n })\r\n .catch((e) => console.error(e));\r\n }\r\n function handleGetIISid() {\r\n let iframe = document.getElementById(\"IISSessionWrapper\"),\r\n IISSessionId = \"\";\r\n if (iframe) {\r\n let iframeDoc = iframe.contentDocument || iframe.contentWindow.document,\r\n IISSessionEle = iframeDoc.getElementById(\"hdnIISSessionId\");\r\n\r\n if (IISSessionEle) IISSessionId = IISSessionEle.value;\r\n }\r\n return IISSessionId || \"\";\r\n }\r\n\r\n const handleGetASPId = () => {\r\n let aspId = document.cookie\r\n .split(\"; \")\r\n .filter((item) => item.indexOf(\"CookieSessionID\") > -1);\r\n if (aspId.length > 0) return aspId[0].split(\"=\")[1];\r\n return \"\";\r\n };\r\n const handleCreateSessionWebLoginWrapper = (logDetails) => {\r\n if (window.self !== window.top) {\r\n handleCreateSessionWebLogin(logDetails);\r\n } else {\r\n setTimeout(\r\n () => {\r\n handleCreateSessionWebLogin(logDetails);\r\n },\r\n logDetails[\"AutoRedirect\"] ? 1000 : 0\r\n );\r\n }\r\n };\r\n const Frame = memo(() => {\r\n if (web) {\r\n try {\r\n return (\r\n <>\r\n <iframe\r\n id=\"IISSessionFrame\"\r\n src=\"/IISSessionId.asp\"\r\n style={{ display: \"none\" }}\r\n />\r\n <iframe\r\n id=\"IISSessionWrapper\"\r\n src=\"/Login/presentation/webforms/IISSessionWrapper.aspx\"\r\n style={{ display: \"none\" }}\r\n />\r\n </>\r\n );\r\n } catch (error) {\r\n return <></>;\r\n }\r\n }\r\n return <></>;\r\n });\r\n //--------------------fEnd------------------------//\r\n //---------- handling password setting - validation and messages ----------//\r\n useEffect(() => handleSetEmailId(true), [emailId]);\r\n\r\n const handleSetEmailId = (isInitiateLogin) => {\r\n if (emailId) {\r\n setCredentials((prevCredentials) => {\r\n return { ...prevCredentials, userName: emailId, isInitiateLogin };\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (action === \"changePassword\" && emailId) {\r\n handleForgotPassword();\r\n }\r\n }, [credentials[\"userName\"]]);\r\n const handleForgotPassword = () => {\r\n isForgotPassword = true;\r\n\r\n setErrorMessage({ text: \"\" });\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1, {\r\n isForgotPassword: true,\r\n });\r\n else\r\n handleAccessCodeLogin(2, {\r\n isForgotPassword: true,\r\n });\r\n };\r\n useEffect(() => {\r\n if (credentials[\"isInitiateLogin\"]) {\r\n // handleNextClick(false, emailId);\r\n setCredentials((prevCredentials) => {\r\n return {\r\n ...prevCredentials,\r\n userName: emailId,\r\n isInitiateLogin: false,\r\n existingFlowRunScenario: true,\r\n };\r\n });\r\n }\r\n }, [credentials[\"isInitiateLogin\"]]);\r\n\r\n useEffect(() => {\r\n let strength = 0,\r\n key = newPassword[\"key\"],\r\n text = newPassword[key];\r\n if (text !== undefined) {\r\n if (text.length > 6) strength += 1;\r\n if (text.match(/([A-Z])/) && text.match(/([0-9])/)) strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)) strength += 1;\r\n let msg = ``;\r\n if (strength < 3) {\r\n msg = `Password does not meet complexity Requirements.`;\r\n } else {\r\n msg = `Password Meets Complexity Requirements`;\r\n }\r\n if (key === \"confirmPassword\" && text !== newPassword[\"password\"]) {\r\n msg = `Password Does Not Match`;\r\n strength = 0;\r\n }\r\n if (\r\n (newPassword[\"password\"] === \"\" && key === \"password\") ||\r\n (newPassword[\"confirmPassword\"] === \"\" && key === \"confirmPassword\")\r\n ) {\r\n msg = \"\";\r\n } else {\r\n msg = (\r\n <View style={{ marginTop: -10, marginBottom: 10 }}>\r\n <FontAwesome\r\n name={strength < 3 ? \"close\" : \"check\"}\r\n size={22}\r\n color={strength < 3 ? \"red\" : \"green\"}\r\n />\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -20,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n {msg}\r\n </CustomText>\r\n </View>\r\n );\r\n }\r\n setnewPasswordMessage({ ...newPasswordMessage, [`${key}Msg`]: msg });\r\n }\r\n }, [newPassword]);\r\n //--------------------------------------------//\r\n\r\n //---------- Auto redirecting process and getting Visitor id ----------//\r\n useEffect(() => {\r\n setIsPasswordSecure(true);\r\n let logDetails = {},\r\n CampaignPage = 0,\r\n CampaignInline = \"\";\r\n\r\n const getDeviceId = async () => {\r\n setDeviceId(await handleGetNewDeviceId());\r\n };\r\n async function prepare() {\r\n try {\r\n window.parent.document.getElementById(\"divCampaignModal\").style.top =\r\n \"20%\";\r\n window.parent.document.querySelector(\r\n \"#divCampaignModal .modal-dialog\"\r\n ).style.width = \"500px\";\r\n\r\n if (\r\n window.parent.CampaignPage !== null &&\r\n window.parent.CampaignPage === 1\r\n )\r\n CampaignPage = 1;\r\n\r\n CampaignInline = getQueryString(\"campaigninline\", 0);\r\n setLoginDetails({\r\n ...logInDetails,\r\n ...{ CampaignPage, CampaignInline },\r\n });\r\n } catch (error) {}\r\n\r\n try {\r\n if (loginFrom === \"ratequote\") {\r\n window.parent.document.getElementById(\"iframeLogin\").style.height =\r\n \"600px\";\r\n }\r\n } catch (error) {}\r\n\r\n // try {\r\n // await SplashScreen.preventAutoHideAsync();\r\n // await new Promise((resolve) => setTimeout(resolve, 20));\r\n // } catch (e) {\r\n // console.warn(e);\r\n // } finally {\r\n\r\n setAppIsReady(true);\r\n let result = (await handleGetStoredCredential()) || {};\r\n if (result[\"AutoRedirect\"]) {\r\n logDetails = { ...result, ...logInDetails };\r\n // debugger;\r\n if (logDetails[\"URL\"].includes(\"esignpackage\")) {\r\n if (loginFrom != \"esign\") {\r\n if (logDetails[\"UserType\"] == \"E\")\r\n logDetails[\"URL\"] =\r\n \"../../../BorrowerApplication/Presentation/Webforms/DirectDefault.aspx?Skip=1&SessionId=\";\r\n else if (logDetails[\"UserType\"] == \"C\")\r\n logDetails[\"URL\"] =\r\n \" ../../../GoDirect/index.html?Path=DashBoard&SessionId=\";\r\n }\r\n }\r\n\r\n setIsRemember(true);\r\n logDetails = { ...logDetails, ...logInDetails };\r\n // setLoginDetails(logDetails);\r\n const { UserDisplayName, loginName } = result;\r\n\r\n setHeaderText(\r\n `~~~Welcome Back ${\r\n UserDisplayName || loginName || \"\"\r\n }--We're logging you in...`\r\n );\r\n } else {\r\n setCurrentPage(\"emailOnly\");\r\n }\r\n // }\r\n //Visitor Id generator\r\n\r\n let visitorIdOld = await AsyncStorage.getItem(\"DeviceId\"),\r\n // let visitorIdOld = await cookies[\"DeviceId\"],\r\n visitorId = null;\r\n\r\n try {\r\n visitorIdOld = JSON.parse(visitorIdOld);\r\n } catch (error) {\r\n visitorIdOld = visitorIdOld;\r\n }\r\n\r\n if (visitorIdOld) {\r\n visitorId = visitorIdOld;\r\n } else {\r\n visitorId = await handleGetNewDeviceId();\r\n }\r\n // visitorId = JSON.parse(visitorId);\r\n setDeviceId(visitorId || \"\");\r\n logDetails[\"DeviceId\"] = visitorId;\r\n let parentURL;\r\n try {\r\n parentURL = window.parent.location.href.toString();\r\n } catch (e) {\r\n parentURL = window.location.href.toString();\r\n }\r\n let Eventrecorded = 0,\r\n PriorPage = window.parent.document.referrer.toString(),\r\n lowerParentURL = parentURL.toLowerCase(),\r\n includesParentURL = parentURL.includes.bind(parentURL),\r\n IsSiteLogin = 0,\r\n RegularLogin = 0,\r\n PageLoadId = 0;\r\n\r\n if (PriorPage === \"\" && !parentURL.includes(\"/LoginInline.aspx\")) {\r\n PageLoadId = handleLogDWVisitorsEvent(visitorId);\r\n handleLogDWCallToActionEventParent();\r\n Eventrecorded = 1;\r\n }\r\n\r\n if (\r\n lowerParentURL.toLowerCase().includes(\"/sitelogin\") || //1\r\n lowerParentURL.toLowerCase().includes(\"/court\") || //1\r\n includesParentURL(\"/courtlogintest\") ||\r\n includesParentURL(\"/sitelogintest\") ||\r\n includesParentURL(\"/wholesalelogin\") || //1\r\n includesParentURL(\"/default.asp\") || //1\r\n includesParentURL(\"/SecureDocLogin.aspx\") || //1\r\n includesParentURL(\"/securedoc\") || //1\r\n includesParentURL(\"/LoanApplicationNew.aspx\") || //1\r\n includesParentURL(\"/loginverify.aspx\") || //1\r\n includesParentURL(\"/signup\") || //1\r\n getQueryString(\"From\", \"\") === \"LoanOfficerWebsite\" || //1\r\n CampaignPage === 1 ||\r\n loginFrom === \"ratewizard\"\r\n ) {\r\n IsSiteLogin = 1;\r\n\r\n if (\r\n (loginFrom === \"loanapp\" ||\r\n lowerParentURL.includes(\"/sitelogin\") ||\r\n loginFrom === \"ratewizard\") &&\r\n Eventrecorded === 0\r\n ) {\r\n handleLogDWCallToActionEventParent();\r\n }\r\n }\r\n\r\n if (\r\n lowerParentURL.toLowerCase().includes(\"/sitelogin\") ||\r\n includesParentURL(\"/default.asp\")\r\n ) {\r\n RegularLogin = 1;\r\n }\r\n\r\n if (CampaignPage === 1 && CampaignInline === 1) {\r\n handleCreateNewAccClick();\r\n setHeaderText(`~~~${window.parent.glo_CampaignLoginHdrInline}`);\r\n }\r\n\r\n if (loginFrom === \"employment\") {\r\n try {\r\n let JobPos = getQueryString(\"JobPos\", \"\");\r\n if (JobPos) {\r\n handleAPI({\r\n name: \"GetJobDesc\",\r\n params: { JobPos: JobPos },\r\n })\r\n .then((JobDesc) => {\r\n if (JobDesc != \"\") {\r\n setHeaderText(\r\n `~~~Apply to ${JobDesc} position. Enter your email address or cell phone number.`\r\n );\r\n }\r\n })\r\n .catch((e) => console.error(e));\r\n }\r\n } catch (e) {\r\n // alert(e.Message);\r\n }\r\n }\r\n\r\n if (loginFrom === \"loginverify\")\r\n try {\r\n let uniqueid = window.parent.getQuerystring(\"id\");\r\n\r\n if (uniqueid) {\r\n await handleAPI({\r\n name: \"GetPlaidLoginDetails\",\r\n params: { Id: uniqueid },\r\n })\r\n .then((response) => {\r\n let result = response.split(\"~\");\r\n let username = result[0];\r\n let email = result[1];\r\n\r\n setCredentials({\r\n ...credentials,\r\n formattedUserName: email,\r\n userName: email,\r\n });\r\n\r\n setHeaderText(\r\n `~~~Welcome back <b style='color:black; font-weight:bold'>${\r\n username || \"\"\r\n }.</b>\r\nVerify your bank and employment information here. Get started by entering your email address or your cell phone number.\r\n\r\nIf you are unfamiliar with this request, please call your loan officer.`\r\n );\r\n })\r\n .catch((e) => console.error(e));\r\n } else {\r\n setHeaderText(\r\n \"~~~Verify your bank and employment information here. Get started by entering your email address or your cell phone number.\"\r\n );\r\n }\r\n } catch (e) {\r\n setHeaderText(\r\n \"~~~Verify your bank and employment information here. Get started by entering your email address or your cell phone number.\"\r\n );\r\n }\r\n\r\n let UserWebLoginId = logDetails[\"WebLoginId\"],\r\n UserDisplayName = logDetails[\"UserDisplayName\"],\r\n AutoRedirect = false;\r\n logDetails = { ...logDetails, ...logInDetails };\r\n if (CampaignPage == 0) {\r\n if (\r\n UserWebLoginId != \"\" &&\r\n UserWebLoginId != null &&\r\n UserWebLoginId != undefined &&\r\n UserWebLoginId != \"0\"\r\n ) {\r\n AutoRedirect = true;\r\n\r\n if (loginFrom == \"ratequote\") {\r\n window.parent.document.getElementById(\"hdnWebLoginId\").value =\r\n UserWebLoginId;\r\n let LoanOfficerId = window?.parent?.getQuerystring(\"empnum\", \"\"),\r\n LoginXML = `<Component><row WebLoginId=\"${UserWebLoginId}\" SessionId=\"\" UserEmailID=\"${logDetails[\"UserName\"]}\"/></Component>`,\r\n parser = new DOMParser();\r\n window.parent.$LIXD = parser.parseFromString(LoginXML, \"text/xml\");\r\n handleLogAutoGAEventPasscode(LoanOfficerId, UserWebLoginId);\r\n handleStoreCampaignDetails(\r\n { ...logDetails, ...logInDetails },\r\n 201,\r\n \"Rate Quote\",\r\n 11\r\n );\r\n window.parent.fnCreateSessionNew();\r\n window.parent.fnCreateLoanAndLock_publicpage_New(\"0\");\r\n return;\r\n }\r\n\r\n let AutoRedirectExpiryDate = logDetails[\"AutoRedirectExpiryDate\"];\r\n // AutoRedirectExpiryDate = 10;\r\n if (new Date().getTime() > Number(AutoRedirectExpiryDate)) {\r\n AutoRedirect = false;\r\n logDetails = {\r\n ...logDetails,\r\n ...logInDetails,\r\n ...{ UserExists: 1, AutoRedirectCheck: true, AutoRedirect },\r\n };\r\n handleCreateSessionWebLoginWrapper(logDetails);\r\n return;\r\n }\r\n if (\r\n UserDisplayName != \"\" &&\r\n UserDisplayName != null &&\r\n UserDisplayName != undefined\r\n ) {\r\n setHeaderText(\r\n `~~~Welcome Back ${UserDisplayName}--We're logging you in...`\r\n );\r\n logDetails = { ...logDetails, AutoRedirectCheck: true };\r\n handleCreateSessionWebLoginWrapper(logDetails);\r\n } else {\r\n logDetails = { ...logDetails, AutoRedirectCheck: true };\r\n handleCreateSessionWebLoginWrapper(logDetails);\r\n }\r\n return;\r\n }\r\n }\r\n if (CampaignPage == 1) {\r\n AutoRedirect = false;\r\n }\r\n logDetails = {\r\n ...logDetails,\r\n ...{\r\n IsSiteLogin,\r\n RegularLogin,\r\n PageLoadId,\r\n CampaignPage,\r\n CampaignInline,\r\n AutoRedirect,\r\n },\r\n };\r\n setLoginDetails({\r\n ...logInDetails,\r\n ...logDetails,\r\n });\r\n }\r\n\r\n getDeviceId();\r\n prepare();\r\n\r\n IISSession !== \"\" && setIISSessionId(IISSession);\r\n }, [props]);\r\n\r\n //--------------------------------------------//\r\n\r\n //---------- Creating new session when auto redirecting process ----------//\r\n useEffect(() => {\r\n if (\r\n logInDetails[\"AutoRedirect\"] &&\r\n logInDetails[\"AutoRedirectCheck\"] === undefined\r\n ) {\r\n handleCreateSessionWebLogin(logInDetails);\r\n }\r\n }, [isRemember, logInDetails]);\r\n //--------------------------------------------//\r\n\r\n //---------- Showing splish screen when app loading ----------//\r\n // const onLayoutRootView = useCallback(async () => {\r\n // if (appIsReady) await SplashScreen.hideAsync();\r\n // }, [appIsReady]);\r\n // if (!appIsReady) return <></>;\r\n //--------------------------------------------//\r\n\r\n return (\r\n <>\r\n {webPageURL ? (\r\n <>\r\n <WebPageView url={webPageURL} />\r\n </>\r\n ) : (\r\n <View\r\n style={[\r\n {\r\n backgroundColor:\r\n getQueryString(\"Route\", \"\") === \"dmloanapp\"\r\n ? \"#f4f4f4\"\r\n : \"#fff\",\r\n flex: 1,\r\n flexShrink: 1,\r\n },\r\n // loginFrom === \"esign\" && {\r\n // alignItems: \"center\",\r\n // width: window.innerWidth,\r\n // },\r\n ]}\r\n >\r\n {(loginFrom === \"esign\" ||\r\n loginFrom === \"chat\" ||\r\n header === \"1\") && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n height: 85,\r\n boxShadow: \"0 0 3px 0 rgba(0,0,0,0.22)\",\r\n marginBottom: loginFrom === \"esign\" ? 50 : 20,\r\n display: getQueryString(\"HideHeader\", \"\") === \"1\" ? \"none\" : \"\",\r\n }}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleGoToHome();\r\n }}\r\n >\r\n <Image\r\n style={{\r\n position: \"relative\",\r\n height: \"50px\",\r\n width: \"180px\",\r\n marginTop: 25,\r\n marginBottom: 10,\r\n marginLeft: 30,\r\n cursor: \"pointer\",\r\n }}\r\n source={require(\"../../assets/logo.png\")}\r\n />\r\n </TouchableOpacity>\r\n {loginFrom === \"esign\" && (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: isMobileWeb ? 21 : 27,\r\n marginTop: 15,\r\n marginBottom: 10,\r\n marginLeft: 15,\r\n }}\r\n >\r\n Welcome to the E-Signature Page\r\n </CustomText>\r\n )}\r\n </View>\r\n )}\r\n <View\r\n // onLayout={onLayoutRootView}\r\n style={[\r\n {\r\n // isIOS || isAndroid\r\n // ? 420\r\n // width: !web\r\n // ? null\r\n // : getQueryString(\"Route\", \"\") === \"dmloanapp\"\r\n // ? \"95%\"\r\n // : \"inherit\",\r\n // marginLeft: loginFrom === \"loanapp\" ? \"1rem\" : \"\",\r\n width: \"95vw\",\r\n marginLeft: 10,\r\n },\r\n web ? { maxWidth: 475 } : {},\r\n web &&\r\n getQueryString(\"From\", \"\") === \"LoanOfficerWebsite\" &&\r\n getQueryString(\"Mobile\", \"\") == undefined\r\n ? { maxWidth: 405 }\r\n : {},\r\n web &&\r\n getQueryString(\"From\", \"\") === \"LoanOfficerWebsite\" &&\r\n getQueryString(\"Mobile\", \"\") == \"false\"\r\n ? { maxWidth: 420 }\r\n : {},\r\n web &&\r\n getQueryString(\"From\", \"\") === \"LoanOfficerWebsite\" &&\r\n getQueryString(\"Mobile\", \"\") == \"true\"\r\n ? { maxWidth: 378 }\r\n : {},\r\n ]}\r\n >\r\n <ScrollContainer>\r\n <View\r\n style={[\r\n styles.container,\r\n !(window.self !== window.top) ? { marginTop: 10 } : {},\r\n ]}\r\n >\r\n {/* loginFrom === \"esign\"\r\n ? {\r\n boxShadow: \"0 5px 15px rgba(0,0,0,.5)\",\r\n border: \"1px solid #999\",\r\n marginTop: 10,\r\n marginLeft: 15,\r\n marginRight: 25,\r\n marginBottom: 25,\r\n width: \"92%\",\r\n }\r\n : */}\r\n <View style={styles.headContainer}>{getHeaderText()}</View>\r\n {!isTerminated && (\r\n <>\r\n <View style={styles.bodyContainer}>\r\n {currentPage === \"emailOnly\" ||\r\n currentPage === \"loginOption\" ||\r\n currentPage === \"enterPassword\" ? (\r\n <>\r\n {!logInDetails[\"AutoRedirect\"] && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n margin: 10,\r\n justifyContent: \"space-between\",\r\n display:\r\n currentPage === \"loginOption\" ||\r\n currentPage === \"enterPassword\"\r\n ? \"none\"\r\n : \"flex\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n flexShrink: 1,\r\n width: `${\r\n currentPage === \"emailOnly\" ? \"80%\" : \"100%\"\r\n }`,\r\n }}\r\n // style={{\r\n // width: \"80%\",\r\n\r\n // }}\r\n >\r\n <InputBox\r\n label=\"Email or Cell Phone\"\r\n autoFocus\r\n placeholder=\"Email or Cell Phone\"\r\n disabled={\r\n (emailId &&\r\n !logInDetails[\"enableEmailField\"]) ||\r\n logInDetails[\"AutoRedirect\"]\r\n }\r\n onBlur={() => {\r\n if (credentials[\"userName\"] !== \"\") {\r\n handleNextClick();\r\n }\r\n }}\r\n onChangeText={(text) => {\r\n if (Number(text)) setComplianceMsg(true);\r\n else setComplianceMsg(false);\r\n try {\r\n if (\r\n text === \"\" &&\r\n currentPage !== \"emailOnly\"\r\n ) {\r\n setCurrentPage(\"emailOnly\");\r\n setLoginDetails({});\r\n }\r\n updateCredential({\r\n name: \"userName\",\r\n value: text,\r\n });\r\n setErrorMessage({ text: \"\" });\r\n setDisabledButton(\"\");\r\n } catch (e) {\r\n log(\"Email or Cell Phone ====> \", e);\r\n }\r\n }}\r\n value={\r\n credentials[\"formattedUserName\"] || emailId\r\n }\r\n validate={\r\n headerText.indexOf(\r\n `Let's create an account`\r\n ) !== -1 && credentials[\"userName\"] === \"\"\r\n }\r\n />\r\n </View>\r\n {currentPage === \"emailOnly\" && (\r\n <>\r\n <IconButton\r\n style={{ marginLeft: 10 }}\r\n onPress={() => {\r\n if (emailId) {\r\n handleNextClick();\r\n } else handleNextClick(true);\r\n }}\r\n title=\"Next\"\r\n loading={processingStatus === \"Next\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n />\r\n </>\r\n )}\r\n </View>\r\n )}\r\n </>\r\n ) : null}\r\n {currentPage === \"enterPassword\" && (\r\n <View\r\n style={{\r\n marginHorizontal: 10,\r\n marginBottom: 10,\r\n marginTop: 12,\r\n }}\r\n >\r\n <View>\r\n <InputBox\r\n label=\"Password\"\r\n autoFocus\r\n secureTextEntry={isPasswordSecure}\r\n placeholder=\"Password\"\r\n onChangeText={(text) => {\r\n setErrorMessage({ text: \"\" });\r\n setDisabledButton(\"\");\r\n updateCredential({\r\n name: \"password\",\r\n value: text,\r\n });\r\n }}\r\n onKeyPress={(event) => {\r\n if (event.nativeEvent.key === \"Enter\") {\r\n if (credentials[\"password\"] !== \"\")\r\n handleLogInValidation();\r\n }\r\n }}\r\n value={credentials[\"password\"]}\r\n />\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 20,\r\n }}\r\n onPress={() => {\r\n setIsPasswordSecure(!isPasswordSecure);\r\n }}\r\n >\r\n {isPasswordSecure ? (\r\n <FontAwesome\r\n name=\"eye\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n )}\r\n </CustomText>\r\n </View>\r\n </View>\r\n )}\r\n {currentPage === \"enterAccessCode\" && (\r\n <View style={{ margin: 10 }}>\r\n <InputBox\r\n label=\"Access Code\"\r\n autoFocus\r\n keyboardType=\"numeric\"\r\n disable={disabledButton === \"loginValidate\"}\r\n placeholder=\"Please enter your access code...\"\r\n onChangeText={(text) => {\r\n updateCredential({\r\n name: \"AccessCode\",\r\n value: text,\r\n });\r\n setErrorMessage({ text: \"\" });\r\n setDisabledButton(\"\");\r\n }}\r\n value={credentials[\"AccessCode\"]}\r\n onKeyPress={(event) => {\r\n if (event.nativeEvent.key === \"Enter\") {\r\n if (credentials[\"AccessCode\"] !== \"\")\r\n handleLogInValidation();\r\n }\r\n }}\r\n />\r\n </View>\r\n )}\r\n {currentPage === \"loginOption\" && (\r\n <View\r\n style={{\r\n paddingBottom: 15,\r\n paddingHorizontal: 5,\r\n //flexDirection: isMobileWeb ? \"column\" : \"row\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-around\",\r\n alignItems: \"center\",\r\n marginTop: currentPage === \"loginOption\" ? 12 : -20,\r\n //alignSelf: isMobileWeb ? \"center\" : \"unset\",\r\n alignSelf: \"unset\",\r\n }}\r\n >\r\n <IconButton\r\n autoFocus={true}\r\n onPress={(e) => {\r\n if (\r\n parseInt(logInDetails[\"AccountTerminated\"]) ===\r\n 1\r\n ) {\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n handleLogFailedLoginEvent(\r\n \"This account is terminated.\"\r\n );\r\n setIsTerminated(true);\r\n return false;\r\n }\r\n setCurrentPage(\"enterPassword\");\r\n setHeaderText(\r\n \"~~~Please enter your password below.\"\r\n );\r\n }}\r\n title=\"Enter Password\"\r\n />\r\n {/* <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 14,\r\n verticalAlign: \"middle\",\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n or\r\n </CustomText> */}\r\n <IconButton\r\n onPress={(e) => {\r\n log(\"send me a code ====> \", logInDetails);\r\n // return;\r\n if (\r\n parseInt(logInDetails[\"AccountTerminated\"]) ===\r\n 1\r\n ) {\r\n setHeaderText(\r\n \"~~~This account is terminated. Contact your administrator or MakeMeAware@directcorp.com for assistance.\"\r\n );\r\n handleLogFailedLoginEvent(\r\n \"This account is terminated.\"\r\n );\r\n setIsTerminated(true);\r\n return false;\r\n }\r\n if (credentials[\"userName\"].indexOf(\"@\") !== -1)\r\n handleAccessCodeLogin(1);\r\n else handleAccessCodeLogin(2);\r\n }}\r\n title=\"Send me a code\"\r\n />\r\n </View>\r\n )}\r\n\r\n {/* {currentPage === \"enterAccessCode\" ||\r\n currentPage === \"enterPassword\" ? (\r\n <>\r\n <IconButton\r\n style={{ marginLeft: 10, marginTop: -10 }}\r\n onPress={() => {\r\n let isValid = false;\r\n if (\r\n (logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]) &&\r\n credentials[\"AccessCode\"] !== \"\"\r\n )\r\n isValid = true;\r\n else {\r\n if (\r\n credentials[\"password\"] !== \"\" ||\r\n credentials[\"AccessCode\"] !== \"\"\r\n )\r\n isValid = true;\r\n }\r\n if (isValid) handleLogInValidation();\r\n }}\r\n disable={disabledButton === \"loginValidate\"}\r\n title={\r\n logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]\r\n ? \"Validate Access Code\"\r\n : \"Login\"\r\n }\r\n />\r\n </>\r\n ) : null} */}\r\n {currentPage === \"addCellPhone\" && (\r\n <View style={{ margin: 10 }}>\r\n <InputBox\r\n label=\"Cell Phone Number\"\r\n autoFocus\r\n keyboardType=\"numeric\"\r\n placeholder=\"Cell Phone Number\"\r\n onBlur={() => {\r\n let text = logInDetails[\"CellPhone\"] || \"\";\r\n text = text\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n //console.log(13);\r\n setLoginDetails({\r\n ...logInDetails,\r\n ...{\r\n CellPhone: text,\r\n formatedCellPhone: FormatPhoneLogin(text),\r\n },\r\n });\r\n }}\r\n onChangeText={(text) => {\r\n try {\r\n text = text\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n setLoginDetails({\r\n ...logInDetails,\r\n ...{\r\n CellPhone: text,\r\n formatedCellPhone: text,\r\n },\r\n });\r\n } catch (e) {\r\n log(\"Cell Phone Number ====> \", e);\r\n }\r\n }}\r\n value={logInDetails[\"formatedCellPhone\"]}\r\n />\r\n <View\r\n style={{ flexDirection: \"row\", display: \"flex\" }}\r\n >\r\n <IconButton\r\n style={{ marginRight: 10 }}\r\n onPress={(e) => {\r\n if (logInDetails[\"CellPhone\"] === \"\") {\r\n setErrorMessage({\r\n text: \"Enter a Cell Phone Number.\",\r\n color: \"#999\",\r\n italic: false,\r\n });\r\n } else {\r\n setProcessingStatus(\"addCellPhone\");\r\n setErrorMessage({});\r\n setHideSecureEmail(true);\r\n setCurrentPage(\"enterAccessCode\");\r\n setCredentials({\r\n ...credentials,\r\n AccessCode: \"\",\r\n });\r\n handleAPI({\r\n name: \"SendTextToMobile\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n Phone: logInDetails[\"CellPhone\"],\r\n },\r\n }).then((response) => {\r\n try {\r\n let sList = response.split(\"|\");\r\n if (sList.length > 2) {\r\n if (sList[3] == \"0\")\r\n setErrorMessage({\r\n text: sList[1],\r\n color: \"#999\",\r\n italic: false,\r\n });\r\n\r\n if (sList[3] == \"1\") {\r\n let logDe = {\r\n ...logInDetails,\r\n AccessCode: sList[2],\r\n };\r\n setProcessingStatus(null);\r\n setLoginDetails(logDe);\r\n return false;\r\n }\r\n }\r\n } catch (e) {}\r\n });\r\n }\r\n }}\r\n title=\"Save\"\r\n loading={processingStatus === \"addCellPhone\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n />\r\n <IconButton\r\n onPress={() => {\r\n // handleLoginClick(-1);\r\n handleLogin(-1, logInDetails);\r\n }}\r\n title=\"Skip\"\r\n />\r\n </View>\r\n </View>\r\n )}\r\n {errorMessage[\"text\"] !== \"\" && (\r\n <CustomText\r\n bold={true}\r\n italic={\r\n errorMessage[\"italic\"] === undefined ? true : false\r\n }\r\n style={[\r\n styles.errorMessage,\r\n {\r\n color: errorMessage[\"color\"] || \"red\",\r\n marginTop: -5,\r\n marginBottom: 0,\r\n },\r\n ]}\r\n >\r\n {errorMessage[\"text\"]}\r\n </CustomText>\r\n )}\r\n {complianceMsg && (\r\n <>\r\n <CustomText\r\n bold={false}\r\n italic={true}\r\n style={[\r\n styles.cssCompMsg,\r\n {\r\n //color: errorMessage[\"color\"] || \"red\",\r\n marginTop: -5,\r\n },\r\n ]}\r\n >\r\n {CompMsg}\r\n </CustomText>\r\n <View\r\n style={{\r\n display: \"inline\",\r\n marginBottom: 5,\r\n marginLeft: 15,\r\n }}\r\n >\r\n <CustomText\r\n onPress={() => handleOpenPage(1)}\r\n bold={false}\r\n style={[\r\n styles.footText,\r\n {\r\n color: \"blue\",\r\n },\r\n ]}\r\n >\r\n Terms and conditions\r\n </CustomText>\r\n <CustomText\r\n onPress={() => handleOpenPage(2)}\r\n bold={false}\r\n style={[\r\n styles.footText,\r\n {\r\n color: \"blue\",\r\n marginLeft: 15,\r\n },\r\n ]}\r\n >\r\n Privacy Policy\r\n </CustomText>\r\n </View>\r\n </>\r\n )}\r\n\r\n {currentPage === \"enterPassword\" ||\r\n currentPage === \"enterAccessCode\" ? (\r\n <>\r\n <View\r\n style={{\r\n margin: 10,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n marginTop: 0,\r\n }}\r\n >\r\n <Checkbox\r\n value={isRemember}\r\n onValueChange={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n style={{\r\n marginTop: web ? -10 : 0,\r\n }}\r\n color={isRemember ? \"#0075ff\" : undefined}\r\n />\r\n <View style={{ flexDirection: \"column\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: isMobileWeb ? 13 : 15,\r\n marginLeft: 10,\r\n }}\r\n onPress={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n >\r\n Remember me on this device\r\n {web && (\r\n <CustomText\r\n style={{\r\n fontSize: isMobileWeb ? 9 : 12,\r\n color: \"#999\",\r\n }}\r\n bold={true}\r\n italic={true}\r\n >\r\n {\"\\n\"}(not recommended on public computers)\r\n </CustomText>\r\n )}\r\n </CustomText>\r\n </View>\r\n\r\n <IconButton\r\n style={{ marginLeft: \"auto\", marginTop: -10 }}\r\n onPress={() => {\r\n let isValid = false;\r\n if (\r\n (logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]) &&\r\n credentials[\"AccessCode\"] !== \"\"\r\n )\r\n isValid = true;\r\n else {\r\n if (\r\n credentials[\"password\"] !== \"\" ||\r\n credentials[\"AccessCode\"] !== \"\"\r\n )\r\n isValid = true;\r\n }\r\n if (isValid) handleLogInValidation();\r\n }}\r\n disable={disabledButton === \"loginValidate\"}\r\n title={\r\n logInDetails[\"isValidateAccesscode\"] ||\r\n logInDetails[\"isForgotPassword\"]\r\n ? //? \"Validate Access Code\"\r\n \"Validate Code\"\r\n : \"Login\"\r\n }\r\n loading={processingStatus === \"validating\"}\r\n sStyle={{\r\n minWidth: 35,\r\n height: 18,\r\n }}\r\n />\r\n </View>\r\n\r\n {(!logInDetails[\"isForgotPassword\"] &&\r\n !currentPage === \"enterAccessCode\") ||\r\n currentPage === \"enterPassword\" ? (\r\n <>\r\n <View>\r\n <View\r\n style={{\r\n borderBottomColor: \"black\",\r\n borderBottomWidth: 1,\r\n margin: 10,\r\n }}\r\n />\r\n <View\r\n style={{\r\n marginBottom: 20,\r\n marginHorizontal: 10,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n fontSize: 17,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n }}\r\n bold={true}\r\n >\r\n Troubles? No Worries!\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n }}\r\n >\r\n <CustomText\r\n onPress={() => {\r\n isForgotPassword = true;\r\n\r\n setErrorMessage({ text: \"\" });\r\n if (\r\n credentials[\"userName\"].indexOf(\r\n \"@\"\r\n ) !== -1\r\n )\r\n handleAccessCodeLogin(1, {\r\n isForgotPassword: true,\r\n });\r\n else\r\n handleAccessCodeLogin(2, {\r\n isForgotPassword: true,\r\n });\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n { fontSize: 13 },\r\n ]}\r\n >\r\n Forgot Password?\r\n </CustomText>\r\n <CustomText\r\n italic={true}\r\n bold={true}\r\n style={{ color: \"#999\", fontSize: 12 }}\r\n >\r\n {\" \"}\r\n or just{\" \"}\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n onPress={() => {\r\n try {\r\n if (credentials[\"userName\"] === \"\") {\r\n setErrorMessage({\r\n text: \"Invalid Username\",\r\n });\r\n return false;\r\n }\r\n } catch (e) {\r\n log(\r\n \"Send me a verification code ===> \",\r\n e\r\n );\r\n }\r\n\r\n if (\r\n credentials[\"userName\"].indexOf(\r\n \"@\"\r\n ) !== -1\r\n )\r\n handleAccessCodeLogin(1);\r\n else handleAccessCodeLogin(2);\r\n }}\r\n style={[\r\n styles.footText,\r\n { fontSize: 13 },\r\n ]}\r\n >\r\n Send me a verification code\r\n </CustomText>\r\n </View>\r\n </View>\r\n </View>\r\n </>\r\n ) : null}\r\n </>\r\n ) : null}\r\n {currentPage === \"multiLogin\" && (\r\n <>\r\n <View style={styles.imgMultipleLoginWrapper}>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleCloseOtherSession(logInDetails);\r\n handleClearState(0);\r\n handleSetStoredCredential(2);\r\n }}\r\n style={{\r\n width: web ? \"34%\" : \"50%\",\r\n }}\r\n >\r\n <Image\r\n resizeMode=\"contain\"\r\n style={styles.imgMultipleLogin}\r\n source={require(\"../../assets/WaitImg.png\")}\r\n />\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n width: web ? \"33%\" : \"50%\",\r\n alignContent: \"center\",\r\n alignSelf: \"center\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(\"proceeding\");\r\n if (logInDetails[\"AutoRedirect\"])\r\n handleLogin(1, logInDetails);\r\n else handleLoginClick(1);\r\n }}\r\n >\r\n <Image\r\n resizeMode=\"contain\"\r\n style={styles.imgMultipleLogin}\r\n source={require(\"../../assets/ProceedImg.png\")}\r\n />\r\n {[\"proceeding\"].includes(processingStatus) && (\r\n <View\r\n style={[\r\n styles.imgMultipleLogin,\r\n {\r\n position: \"absolute\",\r\n height: 140,\r\n width: \"82%\",\r\n backgroundColor: \"#fff\",\r\n },\r\n ]}\r\n >\r\n <ArrowSpinner\r\n size={25}\r\n duration={1500}\r\n isSpinner\r\n style={{\r\n flex: 1,\r\n }}\r\n />\r\n </View>\r\n )}\r\n </TouchableOpacity>\r\n </View>\r\n <View\r\n style={{\r\n margin: 10,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Checkbox\r\n value={isRemember}\r\n onValueChange={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n style={{\r\n marginTop: web ? -10 : 0,\r\n }}\r\n color={isRemember ? \"#0075ff\" : undefined}\r\n />\r\n <View style={{ flexDirection: \"row\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: isMobileWeb ? 13 : 15,\r\n marginLeft: 10,\r\n }}\r\n onPress={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n >\r\n Remember me on this device\r\n {web && (\r\n <CustomText\r\n style={{\r\n fontSize: isMobileWeb ? 9 : 12,\r\n color: \"#999\",\r\n }}\r\n bold={true}\r\n italic={true}\r\n >\r\n {\"\\n\"}(not recommended on public computers)\r\n </CustomText>\r\n )}\r\n </CustomText>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"enterAccessCode\" && (\r\n <View style={{ margin: 10 }}>\r\n <View\r\n style={{\r\n borderBottomColor: \"black\",\r\n borderBottomWidth: 1,\r\n marginTop: 20,\r\n }}\r\n />\r\n <View\r\n style={{\r\n marginTop: 30,\r\n marginBottom: 20,\r\n }}\r\n >\r\n {accesscodeWarningMsg ? (\r\n <CustomText\r\n style={{\r\n fontSize: 16,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n marginTop: -15,\r\n }}\r\n bold={true}\r\n >\r\n {accesscodeWarningMsg}\r\n </CustomText>\r\n ) : null}\r\n <CustomText\r\n style={{\r\n fontSize: 17,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n }}\r\n bold={true}\r\n >\r\n Didn't get the code?\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <View>{getSecureEmail()}</View>\r\n <View>{getSecurePhone()}</View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n {currentPage === \"setPassword&Login\" && (\r\n <>\r\n <View style={{ marginLeft: 30, marginTop: 20 }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 18,\r\n color: \"#999\",\r\n marginBottom: 5,\r\n }}\r\n >\r\n Set a password or skip and login.\r\n </CustomText>\r\n </View>\r\n <View\r\n style={{\r\n margin: 20,\r\n marginBottom: 30,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-evenly\",\r\n }}\r\n >\r\n <IconButton\r\n loading={processingStatus === \"loginNow\"}\r\n sStyle={{\r\n minWidth: 75,\r\n height: 15,\r\n }}\r\n disable={processingStatus === \"loginNow\"}\r\n onPress={() => {\r\n setProcessingStatus(\"loginNow\");\r\n handleLogin(undefined, logInDetails);\r\n }}\r\n title=\"Login Now\"\r\n />\r\n <IconButton\r\n disable={processingStatus === \"loginNow\"}\r\n onPress={() => {\r\n setCurrentPage(\"newPassword\");\r\n setNewPassword({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n setnewPasswordMessage({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n setNewIsPasswordSecure({\r\n password: true,\r\n confirmPassword: true,\r\n });\r\n }}\r\n title=\"Set Password\"\r\n buttonType=\"secondary\"\r\n />\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"newPassword\" && (\r\n <View\r\n style={{ marginHorizontal: 10, marginBottom: 10 }}\r\n >\r\n <CustomText\r\n //bold={true}\r\n style={{\r\n fontSize: 15,\r\n color: \"#999\",\r\n marginBottom: 20,\r\n }}\r\n >\r\n {/* {`Password: Please create your password below. The password must contain:\r\nMinimum length of 6 characters Must contain 1 number, 1 capital letter, and 1 special character such as: (@!*&).`} */}\r\n {`Please create your password below: \r\n\r\nPassword Requirments: \r\nMinimum length of 6 characters, 1 number, 1 capital letter, and 1 special character such as: (@!*&).`}\r\n </CustomText>\r\n <View>\r\n <View>\r\n <InputBox\r\n label=\"Password\"\r\n autoFocus\r\n secureTextEntry={\r\n newIsPasswordSecure[\"password\"]\r\n }\r\n placeholder=\"Please enter your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"password\", text);\r\n }}\r\n value={newPassword[\"password\"]}\r\n border=\"#333\"\r\n />\r\n\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 20,\r\n }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n password: !newIsPasswordSecure[\"password\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"password\"] ? (\r\n <FontAwesome\r\n name=\"eye\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n )}\r\n </CustomText>\r\n\r\n {newPasswordMessage[\"passwordMsg\"] !== \"\" &&\r\n newPassword[\"password\"] !== \"\" && (\r\n <>{newPasswordMessage[\"passwordMsg\"]}</>\r\n )}\r\n </View>\r\n <View>\r\n <InputBox\r\n label=\"Confirm Password\"\r\n secureTextEntry={\r\n newIsPasswordSecure[\"confirmPassword\"]\r\n }\r\n placeholder=\"Confirm your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"confirmPassword\", text);\r\n }}\r\n value={newPassword[\"confirmPassword\"]}\r\n border=\"#333\"\r\n />\r\n <CustomText\r\n style={{\r\n position: \"absolute\",\r\n right: 20,\r\n top: 20,\r\n }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n confirmPassword:\r\n !newIsPasswordSecure[\"confirmPassword\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"confirmPassword\"] ? (\r\n <FontAwesome\r\n name=\"eye\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n )}\r\n </CustomText>\r\n {newPasswordMessage[\"confirmPasswordMsg\"] !==\r\n \"\" &&\r\n newPassword[\"confirmPassword\"] !== \"\" && (\r\n <>\r\n {newPasswordMessage[\"confirmPasswordMsg\"]}\r\n </>\r\n )}\r\n </View>\r\n <IconButton\r\n onPress={() => {\r\n if (newPassword[\"password\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the New Password.\"\r\n );\r\n return false;\r\n }\r\n if (newPassword[\"confirmPassword\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the Confirm New Password.\"\r\n );\r\n return false;\r\n }\r\n if (\r\n newPassword[\"confirmPassword\"] !==\r\n newPassword[\"password\"]\r\n ) {\r\n setPasswordMisMatch(\r\n \"The new password and confirmed password do not match.\"\r\n );\r\n return false;\r\n }\r\n\r\n let strength = 0,\r\n text = newPassword[\"password\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (\r\n text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)\r\n )\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Please create your password below: \r\n\r\nPassword Requirments: \r\nMinimum length of 6 characters, 1 number, 1 capital letter, and 1 special character such as: (@!*&).`\r\n );\r\n return false;\r\n }\r\n strength = 0;\r\n text = newPassword[\"confirmPassword\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (\r\n text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)\r\n )\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Please create your password below: \r\n\r\n Password Requirments: \r\n Minimum length of 6 characters, 1 number, 1 capital letter, and 1 special character such as: (@!*&).`\r\n );\r\n return false;\r\n }\r\n if (\r\n newPassword[\"password\"] ===\r\n newPassword[\"confirmPassword\"]\r\n ) {\r\n handleAPI({\r\n name: \"SavePasswordRedirect\",\r\n params: {\r\n WebLoginId: logInDetails[\"WebLoginId\"],\r\n Password: newPassword[\"password\"],\r\n },\r\n }).then((response) => {\r\n response =\r\n JSON.parse(response)[\"Table\"][0][\r\n \"Column1\"\r\n ].toString();\r\n response = new XMLParser().parseFromString(\r\n response\r\n )[\"children\"][0][\"attributes\"];\r\n let msg = response[\"Message\"];\r\n setErrorMessage({ text: \"\" });\r\n if (\r\n msg === \"Password updated successfully.\"\r\n ) {\r\n setProcessingStatus(\"Save&Login\");\r\n handleLogin(1, logInDetails);\r\n } else setPasswordMisMatch(msg);\r\n });\r\n }\r\n }}\r\n title=\"Save & Login\"\r\n loading={processingStatus == \"Save&Login\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n />\r\n {passwordMisMatch !== \"\" && (\r\n <View\r\n style={{\r\n borderWidth: 1,\r\n borderColor: \"#ebccd1\",\r\n backgroundColor: \"#f2dede\",\r\n borderRadius: 5,\r\n marginBottom: 10,\r\n }}\r\n >\r\n <CustomText\r\n style={{\r\n color: \"#999\",\r\n fontSize: 15,\r\n padding: 15,\r\n }}\r\n //bold={true}\r\n >\r\n {passwordMisMatch}\r\n </CustomText>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n </>\r\n )}\r\n <View style={styles.footContainer}>\r\n <>\r\n {loginFrom === \"ratequote\" && (\r\n <>\r\n {currentPage === \"emailOnly\" ? (\r\n <CustomText\r\n onPress={(e) => {\r\n try {\r\n window.parent.document.getElementById(\r\n \"CreateNewUserModal01\"\r\n ).style.display = \"none\";\r\n window.parent.fncancellockconfirm();\r\n } catch (e) {}\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n {\r\n textDecorationLine: \"none\",\r\n borderWidth: 0,\r\n },\r\n ]}\r\n >\r\n ←{\" \"}Cancel\r\n </CustomText>\r\n ) : (\r\n <CustomText\r\n onPress={(e) => {\r\n handleClearState(0);\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n {\r\n textDecorationLine: \"none\",\r\n borderWidth: 0,\r\n display:\r\n currentPage === \"emailOnly\" ? \"none\" : null,\r\n },\r\n ]}\r\n >\r\n ← Back\r\n </CustomText>\r\n )}\r\n </>\r\n )}\r\n {currentPage === \"emailOnly\" &&\r\n (showFooter || isTerminated) ? (\r\n <CustomText\r\n onPress={handleCreateNewAccClick}\r\n bold={true}\r\n style={styles.footText}\r\n >\r\n Create New Account\r\n </CustomText>\r\n ) : (\r\n <>\r\n {loginFrom !== \"ratequote\" &&\r\n action !== \"changePassword\" && (\r\n <CustomText\r\n onPress={(e) => {\r\n handleClearState(0);\r\n if (loginFrom === \"RunScenario\") {\r\n setLoginDetails((prevLoginDetails) => {\r\n return {\r\n enableEmailField: true,\r\n };\r\n });\r\n setCredentials((prevCredentials) => {\r\n return {\r\n existingFlowRunScenario: true,\r\n };\r\n });\r\n handleSetEmailId(false);\r\n }\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n {\r\n textDecorationLine: \"none\",\r\n borderWidth: 0,\r\n display:\r\n currentPage === \"emailOnly\" ? \"none\" : null,\r\n },\r\n ]}\r\n >\r\n ← Back\r\n </CustomText>\r\n )}\r\n </>\r\n )}\r\n {showFooter &&\r\n !isTerminated &&\r\n (currentPage === \"emailOnly\" ||\r\n currentPage === \"loginOption\") && (\r\n <CustomText\r\n onPress={handleForgotPassword}\r\n style={styles.footText}\r\n bold={true}\r\n >\r\n Forgot Password\r\n </CustomText>\r\n )}\r\n </>\r\n </View>\r\n </View>\r\n </ScrollContainer>\r\n </View>\r\n {web && !IISSessionId && !__DEV__ && <Frame />}\r\n </View>\r\n )}\r\n </>\r\n );\r\n};\r\n//Style Section\r\nconst styles = StyleSheet.create({\r\n container: {\r\n color: \"#333\",\r\n backgroundColor: \"#f5f5f5\",\r\n borderWidth: 1,\r\n borderColor: \"#ddd\",\r\n borderRadius: 5,\r\n // width: isIOS || isAndroid ? \"80%\" : \"96%\",\r\n //width: \"96%\",\r\n width: \"100%\",\r\n },\r\n headContainer: {\r\n padding: 25,\r\n // paddingBottom: 10,\r\n // paddingRight: 25,\r\n // paddingLeft: 25,\r\n },\r\n headText: {\r\n fontSize: 18,\r\n color: \"#999\",\r\n },\r\n footContainer: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n padding: 10,\r\n marginTop: 0,\r\n height: 30,\r\n },\r\n footText: {\r\n fontSize: 12,\r\n color: \"#999\",\r\n textDecorationLine: android ? \"none\" : \"underline\",\r\n borderBottomWidth: android ? 1 : 0,\r\n borderBottomColor: \"#999\",\r\n },\r\n bodyContainer: {\r\n backgroundColor: \"#fff\",\r\n borderTopWidth: 1,\r\n borderBottomWidth: 1,\r\n borderColor: \"#ddd\",\r\n paddingTop: 10,\r\n },\r\n errorMessage: {\r\n color: \"red\",\r\n fontSize: 15,\r\n padding: 10,\r\n },\r\n imgMultipleLogin: {\r\n width: \"94%\",\r\n height: web ? 160 : 200,\r\n marginTop: web ? 50 : null,\r\n },\r\n imgMultipleLoginWrapper: {\r\n flexDirection: \"row\",\r\n marginBottom: 30,\r\n justifyContent: !web ? \"space-between\" : \"space-evenly\",\r\n },\r\n cssCompMsg: {\r\n fontSize: 11,\r\n color: \"#999\",\r\n textDecorationLine: \"none\",\r\n borderBottomWidth: 0,\r\n borderBottomColor: \"#999\",\r\n padding: 10,\r\n },\r\n});\r\nexport default LoginWeb;\r\n","import React, { useContext } from \"react\";\r\nimport { StyleSheet, View, TouchableOpacity, Platform } from \"react-native\";\r\nimport { useState } from \"react\";\r\nimport {\r\n InputBox,\r\n IconButton,\r\n DMCImage,\r\n context,\r\n} from \"../accessories/accessories.js\";\r\nimport {\r\n FormatPhoneLogin,\r\n handleAPI,\r\n handleCreateNewSession,\r\n handleOpenURL,\r\n log,\r\n} from \"../accessories/CommonFunctions.js\";\r\nimport CustomText from \"../accessories/CustomText.js\";\r\nimport Icon from \"react-native-vector-icons/AntDesign\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport Checkbox from \"expo-checkbox\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer.js\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner.js\";\r\nimport useKeyboardHeight from \"../accessories/KeyboardHeight.js\";\r\nimport { ios } from \"../accessories/Platform.js\";\r\n\r\nlet email = \"\",\r\n cellPhone = \"\";\r\n\r\nexport default function Signup(props) {\r\n const { navigation, route = {}, from = \"\", performAction = null } = props;\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { params = {} } = route;\r\n const userName = params ? params.userName || \"\" : \"\";\r\n const { deviceId = \"\", loginType = \"\" } = params || {};\r\n\r\n if (userName.indexOf(\"@\") === -1 && Number(userName) > 0) {\r\n cellPhone = userName\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n } else {\r\n email = userName;\r\n }\r\n const [errorMsg, setErrorMsg] = useState({\r\n text: \"\",\r\n color: \"red\",\r\n });\r\n const [emailSentTo, setEmailSentTo] = useState(null);\r\n const [errorMessage, setErrorMessage] = useState({\r\n text: \"\",\r\n color: \"red\",\r\n });\r\n const [currentPage, setCurrentPage] = useState(\"signUp\"); //signUp\r\n const [isRemember, setIsRemember] = useState(false);\r\n const [userType, setUserType] = useState({\r\n mortgageEmployee: false,\r\n borrower: false,\r\n vendor: false,\r\n });\r\n const [newPassword, setNewPassword] = useState({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n const [newIsPasswordSecure, setNewIsPasswordSecure] = useState({\r\n password: !false,\r\n confirmPassword: !false,\r\n });\r\n const [PasswordMisMatch, setPasswordMisMatch] = useState(\"\");\r\n const [newPasswordMessage, setNewPasswordMessage] = useState({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n const [headerText, setHeaderText] = useState(\r\n `~~~Your ${\r\n userName.indexOf(\"@\") === -1 ? \"Cell Phone\" : \"Email Address\"\r\n } is not recognized. To create an account, enter your contact information or click the Back link to try again`\r\n );\r\n const [signUpDetails, setSignUpDetails] = React.useState({\r\n firstName: \"\",\r\n lastName: \"\",\r\n cellPhone: cellPhone,\r\n formatedCellPhone: FormatPhoneLogin(cellPhone),\r\n email: email,\r\n enteredAccessCode: \"\",\r\n });\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n const [validateSignUp, setValidateSignUp] = React.useState({\r\n firstName: false,\r\n lastName: false,\r\n cellPhone: false,\r\n email: false,\r\n });\r\n const [webPageURL, setWebPageURL] = useState(null);\r\n const [accesscodeWarningMsg, setAccesscodeWarningMsg] = useState(null);\r\n\r\n const handleSetStoredCredential = (signDetails) => {\r\n let { WebLoginId, firstName, lastName, cellPhone, email } = signDetails;\r\n\r\n let objectToStore = JSON.stringify({\r\n WebLoginId: WebLoginId,\r\n UserDisplayName: `${firstName} ${lastName}`,\r\n URL: \"BorrowerWelcome\",\r\n UserName: email || cellPhone,\r\n AutoRedirectExpiryDate: getExpireDate(60), //in Minutes\r\n AutoRedirect: true,\r\n });\r\n AsyncStorage.removeItem(\"Credentials\");\r\n AsyncStorage.setItem(\"Credentials\", objectToStore || null);\r\n };\r\n const getExpireDate = (expireInMinutes) => {\r\n const now = new Date();\r\n let expireTime = new Date(now);\r\n expireTime.setMinutes(now.getMinutes() + expireInMinutes);\r\n return expireTime.getTime();\r\n };\r\n const navigate = (path, option) => {\r\n if (performAction) {\r\n performAction(path, option);\r\n } else {\r\n navigation.navigate(path, option || {});\r\n }\r\n };\r\n const handleClearState = () => {\r\n setTimeout(() => {\r\n setProcessingStatus(null);\r\n setErrorMsg({ ...errorMsg, text: \"\" });\r\n setEmailSentTo(\"\");\r\n setCurrentPage(\"signUp\");\r\n setUserType({\r\n mortgageEmployee: false,\r\n borrower: false,\r\n vendor: false,\r\n });\r\n setNewPassword({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n setNewIsPasswordSecure({\r\n password: false,\r\n confirmPassword: false,\r\n });\r\n setNewPasswordMessage({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n setHeaderText(\r\n `~~~Your ${\r\n userName.indexOf(\"@\") === -1 ? \"Cell Phone\" : \"Email Address\"\r\n } is not recognized. To create an account, enter your contact information or click the Back link to try again`\r\n );\r\n setSignUpDetails({\r\n firstName: \"\",\r\n lastName: \"\",\r\n cellPhone: cellPhone,\r\n formatedCellPhone: FormatPhoneLogin(cellPhone),\r\n email: email,\r\n enteredAccessCode: \"\",\r\n });\r\n }, 1000);\r\n };\r\n const handleChange = (event) => {\r\n let { name, value, isFormat } = event,\r\n obj = { [name]: value };\r\n // if (name === \"cellPhone\" && value !== \"\") {\r\n // value = value\r\n // .replaceAll(\"-\", \"\")\r\n // .replaceAll(\"(\", \"\")\r\n // .replaceAll(\")\", \"\")\r\n // .replaceAll(\" \", \"\");\r\n // }\r\n if (isFormat)\r\n obj = { [name]: value, formatedCellPhone: FormatPhoneLogin(value) };\r\n else if (name === \"cellPhone\")\r\n obj = { [name]: value, formatedCellPhone: value };\r\n\r\n setSignUpDetails({ ...signUpDetails, ...obj });\r\n };\r\n const handleSubmit = () => {\r\n let { firstName, lastName, cellPhone, email } = signUpDetails;\r\n if (\r\n firstName === \"\" ||\r\n lastName === \"\" ||\r\n cellPhone === \"\" ||\r\n email === \"\"\r\n ) {\r\n setValidateSignUp({\r\n ...validateSignUp,\r\n ...{\r\n firstName: firstName === \"\",\r\n lastName: lastName === \"\",\r\n cellPhone: cellPhone === \"\",\r\n email: email === \"\",\r\n },\r\n });\r\n setErrorMsg({\r\n text: \"Please make an entry in all required fields.\",\r\n color: \"#999\",\r\n });\r\n return false;\r\n } else {\r\n setErrorMsg({\r\n text: \"\",\r\n });\r\n }\r\n setProcessingStatus(\"Submit\");\r\n let obj = `<root><row IsValidCode=\"0\" FName=\"${firstName}\" LName=\"${lastName}\" CellPhone=\"${cellPhone}\" EmailAddress=\"${email}\" ShortCode=\"\" Utype=\"\" WhatFor=\"\" LoanOfficerId=\"0\" OrgUrl=\"Mobile Application\"/></root>`;\r\n\r\n handleAPI({\r\n name: \"CheckSignUpDetailsLoginWeb\",\r\n params: { CustDetails: obj },\r\n }).then((response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n response = { ...signUpDetails, ...response };\r\n setSignUpDetails(response);\r\n handleCreateAccessCode(response);\r\n });\r\n };\r\n const handleEmailSentTo = (value) => {\r\n setEmailSentTo(value);\r\n setTimeout(() => {\r\n setEmailSentTo(null);\r\n }, 2000);\r\n };\r\n const handleCreateAccessCode = (signDetails, accessCodeFlag) => {\r\n signDetails = signDetails || signUpDetails;\r\n let reff = accessCodeFlag;\r\n //Sending Access Code for Both Email & Cellphone\r\n if (reff === undefined) {\r\n reff = 3;\r\n }\r\n let { GatherId } = signDetails;\r\n handleAPI({\r\n name: \"CreateAccessCode\",\r\n params: { GatherId: GatherId, Ref: reff },\r\n }).then((response) => {\r\n handleEmailSentTo(reff);\r\n response = response.split(\"|\");\r\n if (response.length > 2) {\r\n let msg = \"\";\r\n if (Number(response[3]) === 0) msg = response[1];\r\n setAccesscodeWarningMsg(msg);\r\n signDetails = { ...signDetails, AccessCode: response[2] };\r\n signDetails = { ...signDetails, ...signUpDetails };\r\n signDetails = { ...signDetails, GatherId: GatherId };\r\n setSignUpDetails(signDetails);\r\n setHeaderText(\r\n \"~~~We've sent a code to both your email and cell phone. Enter it below.\"\r\n );\r\n setCurrentPage(\"accessCode\");\r\n }\r\n });\r\n };\r\n const validatePassword = (key, text) => {\r\n setNewPassword({ ...newPassword, [key]: text });\r\n let strength = 0;\r\n if (text.length > 6) strength += 1;\r\n if (text.match(/([A-Z])/) && text.match(/([0-9])/)) strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)) strength += 1;\r\n let msg = ``;\r\n if (strength < 3) {\r\n msg = `Password does not meet complexity Requirements.`;\r\n } else {\r\n msg = `Password Meets Complexity Requirements`;\r\n }\r\n if (key === \"confirmPassword\" && text !== newPassword[\"password\"]) {\r\n msg = `Password Does Not Match`;\r\n strength = 0;\r\n }\r\n msg = (\r\n <View>\r\n <FontAwesome\r\n name={strength < 3 ? \"close\" : \"check\"}\r\n size={22}\r\n color={strength < 3 ? \"red\" : \"green\"}\r\n />\r\n\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -25,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n {msg}\r\n </CustomText>\r\n </View>\r\n );\r\n\r\n if (\r\n key === \"password\" &&\r\n text !== newPassword[\"confirmPassword\"] &&\r\n newPassword[\"confirmPassword\"]?.length > 0\r\n ) {\r\n setNewPasswordMessage((prevNewPasswordMessage) => ({\r\n ...prevNewPasswordMessage,\r\n confirmPasswordMsg: (\r\n <View>\r\n <FontAwesome name=\"close\" size={22} color=\"red\" />\r\n\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -25,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n Password Does Not Match\r\n </CustomText>\r\n </View>\r\n ),\r\n }));\r\n } else if (\r\n key === \"password\" &&\r\n text === newPassword[\"confirmPassword\"] &&\r\n newPassword[\"confirmPassword\"]?.length > 0\r\n ) {\r\n setNewPasswordMessage((prevNewPasswordMessage) => ({\r\n ...prevNewPasswordMessage,\r\n confirmPasswordMsg: (\r\n <View>\r\n <FontAwesome name=\"check\" size={22} color=\"green\" />\r\n\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -25,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n Password Meets Complexity Requirements\r\n </CustomText>\r\n </View>\r\n ),\r\n }));\r\n }\r\n\r\n setNewPasswordMessage((prevNewPasswordMessage) => ({\r\n ...prevNewPasswordMessage,\r\n [`${key}Msg`]: msg,\r\n }));\r\n };\r\n const getSecureEmail = () => {\r\n let Email = \"\";\r\n if (\r\n signUpDetails[\"email\"] === \"\" ||\r\n signUpDetails[\"email\"].indexOf(\"@\") === -1\r\n ) {\r\n return <></>;\r\n } else Email = signUpDetails[\"email\"].split(\"@\");\r\n return (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleCreateAccessCode(signUpDetails, 1);\r\n }}\r\n bold={true}\r\n style={[styles.footText, { alignSelf: \"flex-start\", fontSize: 13 }]}\r\n >\r\n Resend via email\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 13, color: \"#999\", marginTop: 5 }}\r\n >\r\n {`${Email[0].slice(0, 2)}...${Email[1]}`}\r\n </CustomText>\r\n {emailSentTo === 1 ||\r\n (emailSentTo === 3 && (\r\n <CustomText bold={true} style={{ color: \"#0000ff\", fontSize: 12 }}>\r\n Sent\r\n </CustomText>\r\n ))}\r\n </>\r\n );\r\n };\r\n const getSecurePhone = () => {\r\n let Phone = signUpDetails[\"cellPhone\"];\r\n if (Phone === undefined) {\r\n if (\r\n Number(signUpDetails[\"email\"]) !== NaN &&\r\n signUpDetails[\"email\"].indexOf(\"@\") === -1\r\n ) {\r\n Phone = signUpDetails[\"email\"];\r\n }\r\n } else Phone = Phone.slice(-4);\r\n return (\r\n <>\r\n {Phone === \"\" ? (\r\n <></>\r\n ) : (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleCreateAccessCode(signUpDetails, 2);\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n { alignSelf: \"flex-start\", fontSize: 13 },\r\n ]}\r\n >\r\n Resend via text message\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 13, color: \"#999\", marginTop: 5 }}\r\n >\r\n {`xxx-xxx-${Phone}`}\r\n </CustomText>\r\n {emailSentTo === 2 ||\r\n (emailSentTo === 3 && (\r\n <CustomText\r\n bold={true}\r\n style={{ color: \"#0000ff\", fontSize: 12 }}\r\n >\r\n Sent\r\n </CustomText>\r\n ))}\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n const getHeaderText = () => {\r\n let header = headerText.split(\"~~~\");\r\n return (\r\n <>\r\n <CustomText bold={true} style={[styles.headText]}>\r\n {header[0] !== \"\" ? (\r\n <CustomText bold={true} style={[styles.headText, { color: \"red\" }]}>\r\n {header[0]}\r\n </CustomText>\r\n ) : (\r\n <></>\r\n )}\r\n {header[1]}\r\n </CustomText>\r\n </>\r\n );\r\n };\r\n const handleUserTypeChange = (name) => {\r\n let uType = { ...userType, [name]: !userType[name] };\r\n setUserType(uType);\r\n };\r\n const handleLogGAEventPasscode = (signDetails) => {\r\n try {\r\n handleAPI({\r\n name: \"fnLogGAEvent_passcode\",\r\n params: {\r\n UserWebloginId: signDetails[\"WebLoginId\"],\r\n device: \"mobile\",\r\n LO: 0,\r\n fromAction: \"DWLogin\",\r\n Prevpage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n },\r\n }).then((response) => {\r\n console.log(\"fnLogGAEvent_passcode\", response);\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n const handleLogAutoGAEventPasscode = (signDetails) => {\r\n try {\r\n handleAPI({\r\n name: \"LogGAEvent\",\r\n params: {\r\n UserWebloginId: signDetails[\"WebLoginId\"],\r\n device: \"mobile\",\r\n LO: 0,\r\n fromAction: \"DWLogin\",\r\n Prevpage: `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n },\r\n }).then((response) => {\r\n console.log(\"LogGAEvent\", response);\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n const handleSaveUseType = () => {\r\n let { GatherId, ShortCode, firstName, lastName } = signUpDetails;\r\n\r\n handleAPI({\r\n name: \"SaveUserType_WithOutLoan\",\r\n params: {\r\n UserType: 1,\r\n WebLoginId: GatherId,\r\n },\r\n }).then((response) => {\r\n handleAPI({\r\n name: \"CheckUserTypeSelected\",\r\n params: {\r\n GatherId: GatherId,\r\n ShortCode: ShortCode,\r\n },\r\n }).then((UserTypeSelected) => {\r\n UserTypeSelected = JSON.parse(UserTypeSelected);\r\n\r\n if (parseInt(UserTypeSelected) === 1) {\r\n handleAPI({\r\n name: \"CreateBorrowerLoginWithNoLoanId\",\r\n params: {\r\n ShortCode: ShortCode,\r\n GatherId: GatherId,\r\n },\r\n }).then(async (response) => {\r\n response = response.split(\"~\");\r\n let Loanid = response[1],\r\n WebLoginId = response[2],\r\n SessionId = response[3];\r\n let res = {\r\n ...signUpDetails,\r\n ...{\r\n Loanid: Loanid,\r\n WebLoginId: WebLoginId,\r\n SessionId: SessionId,\r\n },\r\n };\r\n setSignUpDetails(res);\r\n if (isRemember) {\r\n handleSetStoredCredential(res);\r\n handleLogAutoGAEventPasscode(res);\r\n handleAPI({\r\n name: \"SaveDeviceFingerPrintWebForGatherId\",\r\n params: {\r\n GatherId: GatherId,\r\n DeviceId: deviceId,\r\n SaveResp: 1,\r\n },\r\n }).then((response) => {});\r\n } else {\r\n handleLogGAEventPasscode(res);\r\n }\r\n if (!SessionId) {\r\n SessionId = await handleCreateNewSession(WebLoginId);\r\n }\r\n let params = {\r\n userName: `${firstName} ${lastName}`,\r\n SessionId: SessionId,\r\n };\r\n if (loginType === \"secureDoc\") {\r\n handleSecureDocLogin(params);\r\n } else if (from == \"startScreen\") {\r\n if (Loanid <= 0) Loanid = -999;\r\n\r\n navigate(\"Home\", {\r\n userName: userName,\r\n SessionId,\r\n loanId: Loanid,\r\n });\r\n } else navigate(\"DashBoard\", params);\r\n\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n ...{\r\n userName: `${firstName} ${lastName}`,\r\n SessionId: SessionId,\r\n Email: signUpDetails[\"email\"] || \"\",\r\n },\r\n };\r\n });\r\n loginType !== \"secureDoc\" && handleClearState();\r\n });\r\n } else {\r\n let WebLoginId_Login = 0,\r\n SessionId_Login = \"\";\r\n Platform.OS === \"web\"\r\n ? handleOpenURL(\r\n `../../../Login/Presentation/Webforms/AccountSetupInformation.aspx?SessionID=${SessionId_Login}&WID=${WebLoginId_Login}&GatherId=${GatherId}&ShortCode=${ShortCode}`\r\n )\r\n : setWebPageURL(\r\n `../../../Login/Presentation/Webforms/AccountSetupInformation.aspx?SessionID=${SessionId_Login}&WID=${WebLoginId_Login}&GatherId=${GatherId}&ShortCode=${ShortCode}`\r\n );\r\n navigate(\"Login\", { userName: userName });\r\n handleClearState();\r\n }\r\n });\r\n });\r\n };\r\n const handleSecureDocLogin = async (signDetails) => {\r\n setErrorMessage({\r\n color: \"#999\",\r\n text: (\r\n <View style={{ flexDirection: \"row\", paddingLeft: 10 }}>\r\n <View style={{ height: 25 }}>\r\n <ArrowSpinner size={15} />\r\n </View>\r\n <CustomText>\r\n {\" \"}\r\n Processing...Please wait...\r\n </CustomText>\r\n </View>\r\n ),\r\n italic: false,\r\n });\r\n const { SessionId, userName } = signDetails;\r\n\r\n handleSelectLoan(0, SessionId, userName);\r\n };\r\n const handleSelectLoan = async (loanId, SessionId, userName) => {\r\n if (loanId == 0) {\r\n setErrorMessage({\r\n ...{\r\n color: \"#999\",\r\n text: (\r\n <View style={{ flexDirection: \"row\", paddingLeft: 10 }}>\r\n <View style={{ height: 25 }}>\r\n <ArrowSpinner size={15} />\r\n </View>\r\n <CustomText>\r\n {\" \"}\r\n Loan Creation is in progress. Please wait...\r\n </CustomText>\r\n </View>\r\n ),\r\n italic: false,\r\n },\r\n });\r\n\r\n await handleAPI({\r\n name: \"CreateLoanOnly\",\r\n params: { sessionid: SessionId, empid: 1, EventId: 15 },\r\n })\r\n .then((response) => {\r\n loanId = JSON.parse(response);\r\n console.log(\"loanId\", loanId);\r\n if (loanId != 0) {\r\n try {\r\n handleAPI({\r\n name: \"AssociateLoanId_GA\",\r\n params: {\r\n SessionId,\r\n LoanId: loanId,\r\n LoginMethod: \"UploadDocs\",\r\n },\r\n })\r\n .then((response) => {\r\n log(\"response\", response);\r\n })\r\n .catch((e) => log(\"Error from AssociateLoanId_GA ====>\", e));\r\n } catch (error) {}\r\n }\r\n })\r\n .catch((error) => log(\"Error from CreateLoanOnly ====> \", error));\r\n }\r\n\r\n navigate(\"Home\", {\r\n userName: userName,\r\n SessionId,\r\n loanId,\r\n GoToNav: 9,\r\n });\r\n handleClearState();\r\n };\r\n const handleStoreCampaignDetails = () => {\r\n try {\r\n handleAPI({\r\n name: \"StoreUTMCampaignWithOutLoginId\",\r\n params: {\r\n CampignId: \"118\",\r\n WebLoginId: signUpDetails[\"WebLoginId\"] || 4142,\r\n utmsource: \"Direct Mortgage\",\r\n utmmedium: \"Internal\",\r\n utmcampaign: \"Login Creation\",\r\n utmcontent: \"\",\r\n utmterm: \"\",\r\n OrgUrl: `${REDIRECT_URL}sitelogin`,\r\n MsgText: \"\",\r\n Email: signUpDetails[\"email\"],\r\n Phone: signUpDetails[\"cellPhone\"],\r\n CampignNum: 0,\r\n LeadOfficer: 0,\r\n },\r\n }).then((response) => {\r\n console.log(\"StoreUTMCampaignWithOutLoginId\", response);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n const keyboardHeight = ios ? useKeyboardHeight() || 30 : 0;\r\n //========================================\r\n return (\r\n <>\r\n {webPageURL ? (\r\n <>\r\n <webPageView url={webPageURL} />\r\n </>\r\n ) : (\r\n <View style={{ backgroundColor: \"#fff\", flex: 1 }}>\r\n <View style={{ maxWidth: 600 }}>\r\n {from != \"startScreen\" && <DMCImage />}\r\n <ScrollContainer>\r\n <View\r\n style={[\r\n styles.container,\r\n {\r\n marginBottom: keyboardHeight,\r\n },\r\n ]}\r\n >\r\n <View style={styles.headContainer}>{getHeaderText()}</View>\r\n <View style={styles.body}>\r\n {currentPage === \"signUp\" && (\r\n <>\r\n <InputBox\r\n label=\"First Name\"\r\n placeholder=\"First Name\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"firstName\", value: text })\r\n }\r\n autoFocus\r\n value={signUpDetails[\"firstName\"]}\r\n validate={validateSignUp[\"firstName\"]}\r\n />\r\n <InputBox\r\n label=\"Last Name\"\r\n placeholder=\"Last Name\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"lastName\", value: text })\r\n }\r\n value={signUpDetails[\"lastName\"]}\r\n validate={validateSignUp[\"lastName\"]}\r\n />\r\n <InputBox\r\n keyboardType=\"numeric\"\r\n label=\"Cell Phone Number\"\r\n placeholder=\"Cell Phone Number\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"cellPhone\", value: text })\r\n }\r\n onBlur={() => {\r\n handleChange({\r\n name: \"formatedCellPhone\",\r\n value: signUpDetails[\"cellPhone\"],\r\n isFormat: true,\r\n });\r\n }}\r\n value={signUpDetails[\"formatedCellPhone\"]}\r\n validate={validateSignUp[\"cellPhone\"]}\r\n />\r\n <InputBox\r\n label=\"Email Address\"\r\n placeholder=\"Email address\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"email\", value: text })\r\n }\r\n value={signUpDetails[\"email\"]}\r\n validate={validateSignUp[\"email\"]}\r\n />\r\n {errorMsg[\"text\"] && (\r\n <View>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: errorMsg[\"color\"] || \"red\",\r\n fontSize: 15,\r\n marginTop: 15,\r\n }}\r\n >\r\n {errorMsg[\"text\"]}\r\n </CustomText>\r\n </View>\r\n )}\r\n <IconButton\r\n title=\"Submit\"\r\n onPress={handleSubmit}\r\n style={{\r\n alignSelf: \"flex-end\",\r\n }}\r\n loading={processingStatus === \"Submit\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n />\r\n </>\r\n )}\r\n {currentPage === \"accessCode\" && (\r\n <>\r\n <InputBox\r\n label=\"Access Code\"\r\n autoFocus\r\n keyboardType=\"numeric\"\r\n placeholder=\"Please enter your access code...\"\r\n onChangeText={(text) => {\r\n handleChange({\r\n name: \"enteredAccessCode\",\r\n value: text,\r\n });\r\n if (errorMsg[\"text\"] !== \"\")\r\n setErrorMsg({ ...errorMsg, text: \"\" });\r\n }}\r\n value={signUpDetails[\"enteredAccessCode\"]}\r\n />\r\n {errorMsg[\"text\"] && (\r\n <View>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: errorMsg[\"color\"] || \"red\",\r\n fontSize: 15,\r\n marginTop: -5,\r\n marginBottom: 15,\r\n }}\r\n >\r\n {errorMsg[\"text\"]}\r\n </CustomText>\r\n </View>\r\n )}\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n flex: 3,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n flex: 1.9,\r\n alignItems: \"flex-end\",\r\n }}\r\n >\r\n <Checkbox\r\n value={isRemember}\r\n onValueChange={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n color={isRemember ? \"#0075ff\" : undefined}\r\n />\r\n <View style={{ flexDirection: \"column\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: 13,\r\n marginLeft: 5,\r\n }}\r\n onPress={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n >\r\n Remember me on this device\r\n </CustomText>\r\n </View>\r\n </View>\r\n <View\r\n style={{\r\n flex: 1.1,\r\n }}\r\n >\r\n <IconButton\r\n siz\r\n style={{\r\n alignSelf: \"flex-end\",\r\n }}\r\n loading={processingStatus === \"validating\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(\"validating\");\r\n log(\"signUpDetails\", signUpDetails);\r\n setAccesscodeWarningMsg(\"\");\r\n if (\r\n signUpDetails[\"AccessCode\"] ===\r\n signUpDetails[\"enteredAccessCode\"]\r\n ) {\r\n setHeaderText(\r\n \"~~~Set a password or skip and login.\"\r\n );\r\n setCurrentPage(\"loginOption\");\r\n setProcessingStatus(null);\r\n handleStoreCampaignDetails();\r\n } else {\r\n setProcessingStatus(null);\r\n setErrorMsg({\r\n ...errorMsg,\r\n text: \"Invalid Access Code.\",\r\n });\r\n }\r\n }}\r\n title=\"Validate Code\"\r\n />\r\n </View>\r\n </View>\r\n <View style={{ marginVertical: 10, marginHorizontal: 0 }}>\r\n <View\r\n style={{\r\n borderBottomColor: \"black\",\r\n borderBottomWidth: 1,\r\n marginTop: 10,\r\n }}\r\n />\r\n <View\r\n style={{\r\n marginTop: 10,\r\n marginBottom: 20,\r\n }}\r\n >\r\n {accesscodeWarningMsg && (\r\n <CustomText\r\n style={{\r\n fontSize: 16,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n marginTop: -15,\r\n }}\r\n bold={true}\r\n >\r\n {accesscodeWarningMsg}\r\n </CustomText>\r\n )}\r\n <CustomText\r\n style={{\r\n fontSize: 17,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n }}\r\n bold={true}\r\n >\r\n Didn't get the code?\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <View>{getSecureEmail()}</View>\r\n <View>{getSecurePhone()}</View>\r\n </View>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"loginOption\" && (\r\n <>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-evenly\",\r\n }}\r\n >\r\n <View style={{ flexDirection: \"row\" }}>\r\n <IconButton\r\n loading={processingStatus === \"loginNow\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n onPress={() => {\r\n setProcessingStatus(\"loginNow\");\r\n handleSaveUseType(false, signUpDetails, true);\r\n }}\r\n title=\"Login Now\"\r\n />\r\n </View>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-evenly\",\r\n }}\r\n >\r\n <IconButton\r\n loading={processingStatus === \"setPassword\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n style={{ marginLeft: 10 }}\r\n onPress={() => {\r\n setHeaderText(\"~~~Set a password\");\r\n setCurrentPage(\"setPassword\");\r\n }}\r\n title=\"Set Password\"\r\n buttonType=\"secondary\"\r\n />\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"setPassword\" && (\r\n <View>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 14,\r\n color: \"#999\",\r\n marginBottom: 25,\r\n }}\r\n >\r\n {`Please create your password below: \r\n\r\nPassword Requirments: \r\nMinimum length of 6 characters, 1 number, 1 capital letter, and 1 special character such as:\r\n(@!*&).`}\r\n </CustomText>\r\n <View>\r\n <View>\r\n <InputBox\r\n label=\"Password\"\r\n autoFocus\r\n secureTextEntry={newIsPasswordSecure[\"password\"]}\r\n placeholder=\"Please enter your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"password\", text);\r\n }}\r\n value={newPassword[\"password\"]}\r\n />\r\n\r\n <CustomText\r\n style={{ position: \"absolute\", right: 20, top: 15 }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n password: !newIsPasswordSecure[\"password\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"password\"] ? (\r\n <FontAwesome name=\"eye\" color=\"gray\" size={25} />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n )}\r\n </CustomText>\r\n\r\n {newPasswordMessage[\"passwordMsg\"] !== \"\" &&\r\n newPassword[\"password\"] !== \"\" && (\r\n <>{newPasswordMessage[\"passwordMsg\"]}</>\r\n )}\r\n </View>\r\n <View>\r\n <InputBox\r\n label=\"Confirm Password\"\r\n secureTextEntry={\r\n newIsPasswordSecure[\"confirmPassword\"]\r\n }\r\n placeholder=\"Confirm your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"confirmPassword\", text);\r\n }}\r\n value={newPassword[\"confirmPassword\"]}\r\n />\r\n <CustomText\r\n style={{ position: \"absolute\", right: 20, top: 15 }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n confirmPassword:\r\n !newIsPasswordSecure[\"confirmPassword\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"confirmPassword\"] ? (\r\n <FontAwesome name=\"eye\" color=\"gray\" size={25} />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={25}\r\n />\r\n )}\r\n </CustomText>\r\n\r\n {newPasswordMessage[\"confirmPasswordMsg\"] !== \"\" &&\r\n newPassword[\"confirmPassword\"] !== \"\" && (\r\n <>{newPasswordMessage[\"confirmPasswordMsg\"]}</>\r\n )}\r\n </View>\r\n <View style={{ marginBottom: 20 }}>\r\n <IconButton\r\n loading={processingStatus === \"Save&Login\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n top: 8,\r\n }}\r\n onPress={() => {\r\n if (newPassword[\"password\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the New Password.\"\r\n );\r\n return false;\r\n }\r\n if (newPassword[\"confirmPassword\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the Confirm New Password.\"\r\n );\r\n return false;\r\n }\r\n if (\r\n newPassword[\"confirmPassword\"] !==\r\n newPassword[\"password\"]\r\n ) {\r\n setPasswordMisMatch(\r\n \"The new password and confirmed password do not match.\"\r\n );\r\n return false;\r\n }\r\n\r\n let strength = 0,\r\n text = newPassword[\"password\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/))\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\n Minimum length of 6 characters \r\n Must contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n strength = 0;\r\n text = newPassword[\"confirmPassword\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/))\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\n Minimum length of 6 characters \r\n Must contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n\r\n if (\r\n newPassword[\"password\"] ===\r\n newPassword[\"confirmPassword\"]\r\n ) {\r\n setProcessingStatus(\"Save&Login\");\r\n let { GatherId, email, ShortCode } =\r\n signUpDetails;\r\n handleAPI({\r\n name: \"UpdatePasswordinGatherdata\",\r\n params: {\r\n GatherId: GatherId,\r\n UserName: email,\r\n Password: newPassword[\"password\"],\r\n // shortCode: ShortCode,\r\n },\r\n })\r\n .then((response) => {\r\n // setHeaderText(\r\n // \"~~~Please select the type of user account that you will be using:\"\r\n // );\r\n // setCurrentPage(\"userType\");\r\n handleSaveUseType();\r\n })\r\n .catch((err) =>\r\n console.log(\r\n \"Error from ====> UpdatePasswordinGatherdata\",\r\n err\r\n )\r\n );\r\n }\r\n }}\r\n title=\"Save & Login\"\r\n />\r\n </View>\r\n\r\n {PasswordMisMatch !== \"\" && (\r\n <View\r\n style={{\r\n backgroundColor: \"#f2dede\",\r\n borderColor: \"#ebccd1\",\r\n borderRadius: 4,\r\n borderWidth: 1,\r\n padding: 10,\r\n marginTop: 10,\r\n }}\r\n >\r\n <CustomText bold={true} style={{ color: \"#999\" }}>\r\n {PasswordMisMatch}\r\n </CustomText>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n {currentPage === \"userType\" && (\r\n <>\r\n <View>\r\n <View>\r\n <View style={{ width: \"80%\" }}>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleUserTypeChange(\"mortgageEmployee\");\r\n }}\r\n style={styles.optionContainer}\r\n >\r\n {userType[\"mortgageEmployee\"] && (\r\n <FontAwesome\r\n name=\"check\"\r\n size={22}\r\n color=\"green\"\r\n />\r\n )}\r\n <CustomText bold={true} style={styles.optionText}>\r\n Mortgage Employee\r\n </CustomText>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleUserTypeChange(\"borrower\");\r\n }}\r\n style={styles.optionContainer}\r\n >\r\n {userType[\"borrower\"] && (\r\n <FontAwesome\r\n name=\"check\"\r\n size={22}\r\n color=\"green\"\r\n />\r\n )}\r\n <CustomText bold={true} style={styles.optionText}>\r\n Borrower\r\n </CustomText>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleUserTypeChange(\"vendor\");\r\n }}\r\n style={styles.optionContainer}\r\n >\r\n {userType[\"vendor\"] && (\r\n <FontAwesome\r\n name=\"check\"\r\n size={22}\r\n color=\"green\"\r\n />\r\n )}\r\n <CustomText bold={true} style={styles.optionText}>\r\n Vendor\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n <IconButton\r\n onPress={() => {\r\n handleSaveUseType();\r\n }}\r\n title=\"Continue\"\r\n />\r\n </View>\r\n </>\r\n )}\r\n {errorMessage[\"text\"] !== \"\" && (\r\n <CustomText\r\n bold={true}\r\n italic={\r\n errorMessage[\"italic\"] === undefined ? true : false\r\n }\r\n style={[\r\n styles.errorMessage,\r\n {\r\n color: errorMessage[\"color\"] || \"red\",\r\n marginTop: -5,\r\n marginBottom: 0,\r\n },\r\n ]}\r\n >\r\n {errorMessage[\"text\"]}\r\n </CustomText>\r\n )}\r\n </View>\r\n <View style={styles.footContainer}>\r\n <CustomText\r\n bold={true}\r\n onPress={(e) => {\r\n navigate(\"Login\", { reset: true });\r\n }}\r\n style={[\r\n styles.footText,\r\n { textDecorationLine: \"none\", borderWidth: 0 },\r\n ]}\r\n >\r\n <Icon name=\"arrowleft\" size={15} color=\"#999\" />\r\n Back\r\n </CustomText>\r\n {currentPage === \"emailOnly\" && (\r\n <CustomText\r\n bold={true}\r\n onPress={(e) => {\r\n navigate(\"Login\", { reset: true });\r\n }}\r\n style={styles.footText}\r\n >\r\n Forgot Password\r\n </CustomText>\r\n )}\r\n </View>\r\n </View>\r\n </ScrollContainer>\r\n </View>\r\n </View>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n color: \"#333\",\r\n backgroundColor: \"#f5f5f5\",\r\n borderWidth: 1,\r\n borderColor: \"#ddd\",\r\n borderRadius: 5,\r\n margin: 5,\r\n // marginBottom: 150,\r\n },\r\n\r\n optionContainer: {\r\n // elevation: 8,\r\n borderRadius: 15,\r\n paddingVertical: 8,\r\n paddingHorizontal: 12,\r\n borderColor: \"#606060\",\r\n borderWidth: 1,\r\n marginBottom: 20,\r\n flexDirection: \"row\",\r\n },\r\n optionText: {\r\n width: \"100%\",\r\n color: \"#999\",\r\n fontSize: 23,\r\n textAlign: \"center\",\r\n flex: 1,\r\n flexShrink: 1,\r\n },\r\n body: {\r\n display: \"flex\",\r\n backgroundColor: \"#fff\",\r\n borderTopWidth: 1,\r\n borderBottomWidth: 1,\r\n borderColor: \"#ddd\",\r\n paddingTop: 25,\r\n paddingBottom: 20,\r\n paddingHorizontal: 10,\r\n },\r\n textBox: {\r\n width: \"90%\",\r\n // height: 65,\r\n flexDirection: \"row\",\r\n marginLeft: 10,\r\n fontSize: 5,\r\n },\r\n footContainer: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n padding: 10,\r\n },\r\n headContainer: {\r\n marginTop: 5,\r\n marginBottom: 10,\r\n paddingVertical: 10,\r\n paddingHorizontal: 15,\r\n },\r\n\r\n footText: {\r\n fontSize: 13,\r\n color: \"#999\",\r\n textDecorationLine: Platform.OS === \"android\" ? \"none\" : \"underline\",\r\n borderBottomWidth: Platform.OS === \"android\" ? 1 : 0,\r\n borderBottomColor: \"#999\",\r\n },\r\n headText: {\r\n fontSize: 17,\r\n color: \"#999\",\r\n },\r\n});\r\n","import React, { useEffect, useContext, useState } from \"react\";\r\nimport {\r\n StyleSheet,\r\n View,\r\n Image,\r\n TouchableOpacity,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport { InputBox, IconButton, context } from \"../accessories/accessories.js\";\r\nimport {\r\n FormatPhoneLogin,\r\n handleAPI,\r\n handleOpenURL,\r\n getQueryString,\r\n log,\r\n getQueryStringURL,\r\n updateWebURL,\r\n handleTrackGA4Events,\r\n handleGetButtonText,\r\n handleGetBrowserName,\r\n queryStringToObject,\r\n} from \"../accessories/CommonFunctions.js\";\r\nimport CustomText from \"../accessories/CustomText.js\";\r\n\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport Checkbox from \"expo-checkbox\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer.js\";\r\nimport { web, android } from \"../accessories/Platform.js\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner.js\";\r\n\r\n//const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n//const isAndroid = /Android/.test(navigator.userAgent);\r\nconst Signup = ({ navigation, route }) => {\r\n let isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { params } = route;\r\n const userName = params ? params.userName || \"\" : \"\";\r\n const { deviceId = \"\" } = params || {};\r\n const loginFrom = getQueryString(\"To\", \"siteLogin\") || \"siteLogin\";\r\n let email = \"\",\r\n cellPhone = \"\";\r\n if (userName.indexOf(\"@\") === -1 && Number(userName) > 0) {\r\n cellPhone = userName\r\n .replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n } else {\r\n email = userName;\r\n }\r\n const [errorMsg, setErrormsg] = useState({\r\n text: \"\",\r\n color: \"red\",\r\n });\r\n\r\n const [emailSentTo, setEmailSentTo] = useState(null);\r\n const [currentPage, setCurrentpage] = useState(\"signUp\"); //signUp\r\n const [isRemember, setIsRemember] = useState(false);\r\n const [userType, setUserType] = useState({\r\n mortgageEmployee: false,\r\n borrower: false,\r\n vendor: false,\r\n });\r\n const [newPassword, setNewPassword] = useState({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n const [newIsPasswordSecure, setNewIsPasswordSecure] = useState({\r\n password: !false,\r\n confirmPassword: !false,\r\n });\r\n const [PasswordMisMatch, setPasswordMisMatch] = useState(\"\");\r\n const [newPasswordMessage, setnewPasswordMessage] = useState({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n const [headerText, setHeaderText] = useState(\r\n `~~~Your ${\r\n userName.indexOf(\"@\") === -1 ? \"Cell Phone\" : \"Email Address\"\r\n } is not recognized. To create an account, enter your contact information or click the Back link to try again`\r\n );\r\n const [signUpDetails, setSignUpDetails] = React.useState({\r\n firstName: \"\",\r\n lastName: \"\",\r\n cellPhone: cellPhone,\r\n formatedCellPhone: FormatPhoneLogin(cellPhone),\r\n email: email,\r\n enteredAccessCode: \"\",\r\n });\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n const [validateSignUp, setValidateSignUp] = React.useState({\r\n firstName: false,\r\n lastName: false,\r\n cellPhone: false,\r\n email: false,\r\n });\r\n const [webPageURL, setWebPageURL] = useState(null);\r\n const [accesscodeWarningMsg, setAccesscodeWarningMsg] = useState(null);\r\n const handleGetRouteName = () => {\r\n let Route = \"\";\r\n try {\r\n Route = window.parent.getQuerystring(\"Route\");\r\n } catch (error) {\r\n try {\r\n Route = getQueryString(\"Route\");\r\n } catch (error) {\r\n Route = \"\";\r\n }\r\n }\r\n return Route;\r\n };\r\n const [Route, setRoute] = useState(handleGetRouteName());\r\n useEffect(() => {\r\n if (\r\n [\"securedoc\", \"loanapp\", \"chat\", \"ratequote\", \"loginverify\"].indexOf(\r\n loginFrom\r\n ) > -1\r\n ) {\r\n const timer = setInterval(() => {\r\n try {\r\n let obj = window.parent.document.getElementById(\"iframeLogin\"),\r\n height = obj.contentWindow.document.body.scrollHeight;\r\n if (parseInt(obj.style.height.replace(\"px\", \"\")) < height)\r\n try {\r\n window.parent?.resizeLoginIframe();\r\n } catch (error) {}\r\n } catch (error) {}\r\n }, 500);\r\n return () => clearInterval(timer);\r\n }\r\n }, []);\r\n\r\n const handleSetStoredCredential = (signDetails) => {\r\n if (isRemember) {\r\n let { WebLoginId, firstName, lastName, cellPhone, email, URL, UserType } =\r\n signDetails,\r\n date = new Date();\r\n date.setDate(date.getDate() + 30);\r\n let objectToStore = {\r\n WebLoginId: WebLoginId,\r\n UserDisplayName: `${firstName} ${lastName}`,\r\n URL: URL, // \"BorrowerWelcome\",\r\n UserName: email || cellPhone,\r\n AutoRedirectExpiryDate: date, //getExpireDate(60), //in Minutes\r\n AutoRedirect: true,\r\n DeviceId: deviceId,\r\n UserType: UserType,\r\n //====\r\n // UserWebLoginId: WebLoginId,\r\n // UserRememberDevice: 1,\r\n // UserRedirectURL: URL,\r\n };\r\n AsyncStorage.removeItem(\"Credentials\");\r\n AsyncStorage.setItem(\r\n \"Credentials\",\r\n JSON.stringify(objectToStore || null)\r\n );\r\n }\r\n };\r\n const getExpireDate = (expireInMinutes) => {\r\n const now = new Date();\r\n let expireTime = new Date(now);\r\n expireTime.setMinutes(now.getMinutes() + expireInMinutes);\r\n return expireTime.getTime();\r\n };\r\n // const navigate = (path, option) => {\r\n // navigation.navigate(path, option || {});\r\n // };\r\n const navigate = async (navigateTo, navigateDetails) => {\r\n let details = { ...navigateDetails, navigation: navigation };\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...details };\r\n });\r\n if (navigateTo === \"DashBoard\") {\r\n let url = await updateWebURL(\r\n { ...navigateDetails, Path: navigateTo },\r\n true\r\n );\r\n window.top.location.href = `${window.location.origin}${\r\n window.location.host === \"localhost:19006\"\r\n ? \"\"\r\n : \"/GoDirect/index.html?\"\r\n }${url}`;\r\n } else {\r\n updateWebURL({ ...navigateDetails, Path: navigateTo });\r\n (navigation || props[\"navigation\"]).navigate(navigateTo, navigateDetails); // Sample ===> \"signUp\",{}\r\n }\r\n };\r\n const navigateURL = (navigateTo, navigateDetails, SessionID) => {\r\n if (!navigateDetails) {\r\n navigateDetails = {};\r\n }\r\n let details = { ...navigateDetails, navigation: navigation };\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...details };\r\n });\r\n\r\n //let url = await updateWebURL(\r\n // let url = updateWebURL({ ...navigateDetails, Path: navigateTo }, true);\r\n let url = \"Path=\" + navigateTo + \"&SessionId=\" + SessionID;\r\n let redirectURL = `${window.location.origin}${\r\n window.location.host === \"localhost:19006\" ? \"\" : \"/GoDirect/index.html?\"\r\n }${url}`;\r\n return redirectURL;\r\n };\r\n const handleClearState = (time) => {\r\n if (time === 0) {\r\n handleResetState();\r\n } else {\r\n setTimeout(() => {\r\n handleResetState();\r\n }, 3000);\r\n }\r\n };\r\n const handleResetState = () => {\r\n setProcessingStatus(null);\r\n setErrormsg({ ...errorMsg, text: \"\" });\r\n setEmailSentTo(\"\");\r\n setCurrentpage(\"signUp\");\r\n setUserType({\r\n mortgageEmployee: false,\r\n borrower: false,\r\n vendor: false,\r\n });\r\n setNewPassword({\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n setNewIsPasswordSecure({\r\n password: false,\r\n confirmPassword: false,\r\n });\r\n setnewPasswordMessage({\r\n passwordMsg: \"\",\r\n confirmPasswordMsg: \"\",\r\n });\r\n setHeaderText(\r\n `~~~Your ${\r\n userName.indexOf(\"@\") === -1 ? \"Cell Phone\" : \"Email Address\"\r\n } is not recognized. To create an account, enter your contact information or click the Back link to try again`\r\n );\r\n setSignUpDetails({\r\n firstName: \"\",\r\n lastName: \"\",\r\n cellPhone: cellPhone,\r\n formatedCellPhone: FormatPhoneLogin(cellPhone),\r\n email: email,\r\n enteredAccessCode: \"\",\r\n });\r\n };\r\n const handleChange = (event) => {\r\n let { name, value, isFormat } = event,\r\n obj = { [name]: value };\r\n // if (name === \"cellPhone\" && value !== \"\") {\r\n // value = value\r\n // .replaceAll(\"-\", \"\")\r\n // .replaceAll(\"(\", \"\")\r\n // .replaceAll(\")\", \"\")\r\n // .replaceAll(\" \", \"\");\r\n // }\r\n if (isFormat)\r\n obj = { [name]: value, formatedCellPhone: FormatPhoneLogin(value) };\r\n else if (name === \"cellPhone\")\r\n obj = { [name]: value, formatedCellPhone: value };\r\n\r\n setSignUpDetails({ ...signUpDetails, ...obj });\r\n };\r\n const handleValidateAccessCode = async () => {\r\n // console.log(signUpDetails);\r\n setAccesscodeWarningMsg(\"\");\r\n\r\n if (\r\n Number(signUpDetails[\"AccessCode\"]) ===\r\n Number(signUpDetails[\"enteredAccessCode\"])\r\n ) {\r\n setProcessingStatus(\"validating\");\r\n switch (loginFrom) {\r\n case \"ratequote\":\r\n await handleStoreCampaignDetails(201, \"Rate Quote\", 11);\r\n break;\r\n case \"loanapp\":\r\n await handleStoreCampaignDetails(202, \"Loan Application\", 14);\r\n break;\r\n case \"securedoc\":\r\n await handleStoreCampaignDetails(204, \"Document Upload\", 15);\r\n break;\r\n case \"ratewizard\":\r\n if (getQueryString(\"RateOptions\", \"0\") == 1)\r\n await handleStoreCampaignDetails(501, \"Rate Options View\", 11);\r\n else if (getQueryString(\"LockThisRate\", \"0\") == 1)\r\n await handleStoreCampaignDetails(\r\n 502,\r\n \"Lock This Interest Rate\",\r\n 1106\r\n );\r\n else if (getQueryString(\"CustomizeOptions\", \"0\") == 1)\r\n await handleStoreCampaignDetails(503, \"Customize Options\", 1105);\r\n if (\r\n getQueryString(\"RateOptions\", \"0\") != 1 &&\r\n getQueryString(\"LockThisRate\", \"0\") != 1 &&\r\n getQueryString(\"CustomizeOptions\", \"0\") != 1\r\n ) {\r\n if (getQueryString(\"From\", \"\") == \"DirectWareHome\")\r\n await handleStoreCampaignDetails(302, \"DirectWare Home\", 1052);\r\n else if (\r\n getQueryString(\"From\", \"\") == \"LoanOfficerWebsite\" &&\r\n getQueryString(\"Campaign\", \"\") == \"TrackTheseRates\"\r\n )\r\n await handleStoreCampaignDetails(\r\n 901,\r\n \"Track Interest Rates\",\r\n 1131\r\n );\r\n else if (getQueryString(\"From\", \"\") == \"LoanOfficerWebsite\")\r\n await handleStoreCampaignDetails(\r\n 301,\r\n \"Loan Officer Website\",\r\n 1071\r\n );\r\n else await handleStoreCampaignDetails(300, \"Rate Wizard\", 1045);\r\n }\r\n break;\r\n default:\r\n await handleStoreCampaignDetails(118, \"Login Creation\", -1); //-1 will be the flage for storing campaign\r\n break;\r\n }\r\n await handleLogDWCallToActionEventParent(\"Login\");\r\n handleLogGAEventPasscode();\r\n handleUpdateUserEmailInCTA(signUpDetails[\"email\"]);\r\n\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, Email: signUpDetails[\"email\"] };\r\n });\r\n\r\n if (window.parent !== null) {\r\n if (signUpDetails[\"CampaignPage\"] === 1) {\r\n window.parent.StoreCampaignDetails(true);\r\n window.parent.GloWebLoginId = signUpDetails[\"WebLoginId\"];\r\n window.parent.GloWebLoginIdModal = signUpDetails[\"WebLoginId\"];\r\n if (window.parent.GloStayInPage == 1) {\r\n handleClearState();\r\n window.parent.document.querySelector(\r\n \"#divCampaignModalMsg\"\r\n ).style.display = \"block\";\r\n window.parent.fnCloseCampignModal();\r\n return;\r\n }\r\n if (\r\n window.parent.GloStayInPage == 0 &&\r\n window.parent.GloProceedtoWelcome == 1\r\n ) {\r\n window.parent.fnCloseCampignModal();\r\n handleClearState();\r\n // let urltogo = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${signUpDetails[\"SessionId\"]}&To=${loginFrom}`;\r\n\r\n let urltogo = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${signUpDetails[\"SessionId\"]}`;\r\n\r\n if (\r\n signUpDetails[\"LoanOfficerId\"] == 1 ||\r\n signUpDetails[\"LoanOfficerId\"] == 2099\r\n ) {\r\n //navigate(\"DashBoard\", params);\r\n urltogo = navigateURL(\r\n \"DashBoard\",\r\n params,\r\n signUpDetails[\"SessionId\"]\r\n );\r\n }\r\n let signDetails = { ...signUpDetails, URL: urltogo };\r\n handleSetStoredCredential(signDetails);\r\n\r\n try {\r\n window.parent.location.href = urltogo;\r\n } catch (e) {\r\n window.location.href = urltogo;\r\n }\r\n return;\r\n }\r\n return;\r\n }\r\n }\r\n //Store Campaign Details\r\n\r\n let StartLoanApp = Number(getQueryString(\"StartLoanApp\", \"0\") || 0);\r\n if (loginFrom == \"securedoc\") {\r\n let url = signUpDetails[\"URL\"];\r\n url += \"&loanOfficerId=\" + signUpDetails[\"LoanOfficerId\"];\r\n handleSetStoredCredential(signUpDetails);\r\n try {\r\n window.parent.location.href = url;\r\n } catch (e) {\r\n window.location.href = url;\r\n }\r\n\r\n return;\r\n }\r\n if (loginFrom == \"ratewizard\" && StartLoanApp === 0) {\r\n handleAssociateLoanId(signUpDetails[\"SessionId\"], signUpDetails[\"URL\"]);\r\n handleRateOptionsLogin();\r\n return;\r\n }\r\n if (loginFrom === \"ratequote\") {\r\n setErrormsg({\r\n text: \"Please wait while we are Creating the loan with this scenario...\",\r\n color: \"#999\",\r\n });\r\n let LoginXML = signUpDetails[\"rateQuoteXML\"];\r\n\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(LoginXML, \"text/xml\");\r\n LoginXML = xmlDoc.documentElement;\r\n LoginXML = LoginXML.querySelectorAll(\"Component row\");\r\n LoginXML.forEach(function (row) {\r\n row.setAttribute(\"UserEmailID\", signUpDetails[\"email\"]);\r\n });\r\n\r\n window.parent.document.querySelector(\"#hdnWebLoginId\").value =\r\n signUpDetails[\"WebLoginId\"];\r\n window.parent.$LIXD = LoginXML || \"\";\r\n window.parent.fnCreateSessionNew();\r\n window.parent.fnCreateLoanAndLock_publicpage_New(\r\n signUpDetails[\"GatherId\"]\r\n );\r\n return;\r\n }\r\n if (loginFrom === \"chat\") {\r\n handleChatProcess();\r\n return;\r\n }\r\n if (loginFrom == \"ratewizard\") {\r\n let url = signUpDetails[\"URL\"];\r\n handleSetStoredCredential(signUpDetails);\r\n try {\r\n window.parent.location.href = url;\r\n } catch (e) {\r\n window.location.href = url;\r\n }\r\n\r\n return;\r\n }\r\n if (loginFrom === \"securedoc\" || loginFrom === \"loanapp\") {\r\n let { URL, SessionId } = signUpDetails;\r\n loginFrom === \"loanapp\" && handleAssociateLoanId(SessionId, URL);\r\n handleSetStoredCredential(signUpDetails);\r\n\r\n try {\r\n window.parent.location.href = URL;\r\n } catch (e) {\r\n window.location.href = URL;\r\n }\r\n return;\r\n }\r\n\r\n if (loginFrom === \"employment\") {\r\n handleAPI({\r\n name: \"CreateLoginAccountForApplicant\",\r\n params: { GatherId: signUpDetails[\"GatherId\"] },\r\n })\r\n .then((WebLoginId) => {\r\n handleLogGAEventPasscode();\r\n let JobPos = getQueryString(\"JobPos\", \"\"),\r\n url =\r\n \"../../../Login/presentation/webforms/Applyjob.aspx?WebLogID=\" +\r\n WebLoginId +\r\n \"&JobPos=\" +\r\n JobPos;\r\n try {\r\n window.parent.location.href = url;\r\n } catch (e) {\r\n window.location.href = url;\r\n }\r\n })\r\n .catch((e) =>\r\n log(\"Error from CreateLoginAccountForApplicant ====>\", e)\r\n );\r\n\r\n return;\r\n }\r\n if (loginFrom === \"loginverify\") {\r\n let strPackage =\r\n window.parent.document.querySelector(\"#hdnPackage\").value,\r\n RefType = window.parent.document.querySelector(\"#hdntype\").value,\r\n loginverifyurl = \"\";\r\n if (RefType == \"plaid\") {\r\n loginverifyurl = `../../../BorrowerApplication/presentation/webforms/BankVerification.aspx?SessionId=${signUpDetails[\"SessionId\"]}&uid=${strPackage}`;\r\n handleSetStoredCredential({ ...signUpDetails, URL: loginverifyurl });\r\n\r\n try {\r\n window.parent.location.href = loginverifyurl;\r\n } catch (e) {\r\n window.location.href = loginverifyurl;\r\n }\r\n }\r\n return;\r\n }\r\n if ([\"RunScenario\", \"Ratesheetsignin\"].includes(loginFrom)) {\r\n handleSaveUseType(false, signUpDetails, true);\r\n return false;\r\n }\r\n //\r\n setHeaderText(\"~~~Set a password or skip and login.\");\r\n setCurrentpage(\"loginOption\");\r\n } else {\r\n setErrormsg({\r\n ...errorMsg,\r\n text: \"Invalid Access Code.\",\r\n });\r\n }\r\n };\r\n const handleChatProcess = (logDetails) => {\r\n let ChatWithId = getQueryString(\"ChatWithId\", 0),\r\n url = \"\";\r\n if (ChatWithId == \"\" || ChatWithId == null || ChatWithId == undefined)\r\n ChatWithId = 0;\r\n\r\n if (ChatWithId == 0)\r\n url = `../../../ChatSession/Presentation/Webforms/ChatMenu.aspx?SessionId=${signUpDetails[\"SessionId\"]}&zid=${signUpDetails[\"WebLoginId\"]}`;\r\n else\r\n url = `../../../ChatSession/Presentation/Webforms/ChatMenu.aspx?SessionId=${signUpDetails[\"SessionId\"]}&zid=${signUpDetails[\"WebLoginId\"]}&ChatWithId=${ChatWithId}`;\r\n if (isRemember) handleSetStoredCredential({ ...logDetails, URL: url });\r\n try {\r\n window.parent.location.href = url;\r\n } catch (e) {\r\n window.location.href = url;\r\n }\r\n };\r\n const handleRateOptionsLogin = () => {\r\n let From = getQueryString(\"From\", \"\"),\r\n RateQuoteId = getQueryString(\"RateQuoteId\", \"\"),\r\n PublicRateQuoteId = getQueryString(\"PublicRateQuoteId\", \"\"),\r\n StartLoanApp = getQueryString(\"StartLoanApp\", \"0\"),\r\n RateOptions = getQueryString(\"RateOptions\", \"0\"),\r\n LockThisRate = getQueryString(\"LockThisRate\", \"0\"),\r\n HomePage = getQueryString(\"HomePage\", \"0\"),\r\n URL = \"\",\r\n { SessionId, GatherId, LoanOfficerId } = signUpDetails;\r\n\r\n if (!From) From = \"\";\r\n if (!RateQuoteId) RateQuoteId = \"0\";\r\n if (!PublicRateQuoteId) PublicRateQuoteId = \"0\";\r\n try {\r\n if (!LoanOfficerId)\r\n LoanOfficerId =\r\n window.parent.document.getElementById(\"spnUserInfo\").attributes.empnum\r\n .value || \"1\";\r\n } catch (e) {}\r\n\r\n if (!LoanOfficerId) LoanOfficerId = \"1\";\r\n\r\n if (StartLoanApp == 1) {\r\n //URL = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&StartLoanApp=1&To=${loginFrom}`;\r\n\r\n URL = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}&StartLoanApp=1`;\r\n\r\n if (\r\n signUpDetails[\"LoanOfficerId\"] == 1 ||\r\n signUpDetails[\"LoanOfficerId\"] == 2099\r\n ) {\r\n //navigate(\"DashBoard\", params);\r\n URL = navigateURL(\"DashBoard\", params, SessionId);\r\n }\r\n } else {\r\n if (HomePage == 1) {\r\n try {\r\n window.parent.glo_SessionId = SessionId;\r\n window.parent.fnCloseCampignModal();\r\n if (RateOptions == 1) {\r\n window.parent.fnTriggerFrameOptions(1);\r\n }\r\n if (LockThisRate == 1) {\r\n window.parent.fnTriggerFrameOptions(2);\r\n }\r\n return false;\r\n } catch (e) {\r\n if (window.parent.ParentPage === \"NewLoPage\") {\r\n try {\r\n window.parent.glo_SessionId = SessionId;\r\n //window.parent.fnCloseCampignModal();\r\n //window.parent.glo_CloseLoginPage = true;\r\n // if (RateOptions == 1) {\r\n // window.parent.fnTriggerFrameOptions(1);\r\n // }\r\n if (LockThisRate == 1) {\r\n window?.parent?.document\r\n ?.getElementById(\"btnLockThisIntRate\")\r\n ?.click();\r\n }\r\n return false;\r\n } catch (e) {}\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n URL = `../../../rates/rates-wizard.php?SessionId=${SessionId}&GatherId=${GatherId}&From=${From}&LoanOfficerId=${LoanOfficerId}&${\r\n PublicRateQuoteId > 0\r\n ? `PublicRateQuoteId=${PublicRateQuoteId}`\r\n : `RateQuoteId=${RateQuoteId}`\r\n }`;\r\n }\r\n //From=LoanOfficerWebsite\r\n if (\r\n URL.indexOf(\"BorrowerWelcome\") !== -1 &&\r\n (signUpDetails[\"LoanOfficerId\"] == 1 ||\r\n signUpDetails[\"LoanOfficerId\"] == 2099)\r\n ) {\r\n navigate(\"DashBoard\", params);\r\n } else {\r\n try {\r\n window.parent.location.href = URL;\r\n } catch (e) {\r\n window.location.href = URL;\r\n }\r\n }\r\n };\r\n const handleSubmit = async () => {\r\n let { firstName, lastName, cellPhone, email } = signUpDetails;\r\n if (\r\n firstName === \"\" ||\r\n lastName === \"\" ||\r\n cellPhone === \"\" ||\r\n email === \"\"\r\n ) {\r\n setValidateSignUp({\r\n ...validateSignUp,\r\n ...{\r\n firstName: firstName === \"\",\r\n lastName: lastName === \"\",\r\n cellPhone: cellPhone === \"\",\r\n email: email === \"\",\r\n },\r\n });\r\n setErrormsg({\r\n text: \"Please make an entry in all required fields.\",\r\n color: \"#999\",\r\n });\r\n return false;\r\n } else {\r\n setErrormsg({\r\n text: \"\",\r\n });\r\n }\r\n\r\n let LoanOfficerId = signUpDetails[\"LoanOfficerId\"] || 0,\r\n OrgUrl = window.top.document.location.href;\r\n if (!OrgUrl) OrgUrl = \"\";\r\n // if (loginFrom === \"employment\" || loginFrom === \"esign\")\r\n // OrgUrl = OrgUrl.split(\"?\")[0];\r\n if (loginFrom === \"Ratesheetsignin\") OrgUrl = OrgUrl.replaceAll(\"#\", \"\");\r\n OrgUrl = OrgUrl.replaceAll(\"&\", \"%26\");\r\n setProcessingStatus(\"Submit\");\r\n let obj = `<root><row IsValidCode=\"0\" FName=\"${firstName}\" LName=\"${lastName}\" CellPhone=\"${cellPhone}\" EmailAddress=\"${email}\" ShortCode=\"\" Utype=\"\" WhatFor=\"\" LoanOfficerId=\"${LoanOfficerId}\" OrgUrl=\"${OrgUrl}\"/></root>`;\r\n console.log(obj);\r\n await handleAPI({\r\n name: \"CheckSignUpDetailsLoginWeb\",\r\n params: { CustDetails: obj },\r\n }).then(async (response) => {\r\n response = JSON.parse(response)[\"Table\"][0];\r\n response = { ...signUpDetails, ...response };\r\n setSignUpDetails(response);\r\n if (window.parent) {\r\n window.parent.GatherId = response[\"GatherId\"];\r\n }\r\n if (response[\"CampaignPage\"] === 1) {\r\n setHeaderText(\"~~~Select your preferred contact method.\");\r\n setCurrentpage(\"ContactMethod\");\r\n } else {\r\n handleCreateAccessCode(response, undefined, -1);\r\n }\r\n });\r\n };\r\n const handleGetLoanOfficerId = () => {\r\n let LoanOfficerId = 0;\r\n if (\r\n loginFrom == \"securedoc\" ||\r\n loginFrom == \"loanapp\" ||\r\n loginFrom == \"ratequote\" ||\r\n loginFrom == \"ratewizard\"\r\n ) {\r\n try {\r\n LoanOfficerId = window.parent.getQueryString(\"empnum\", \"\");\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n ) {\r\n LoanOfficerId = window.parent.getQueryString(\"loanofficer\", \"\");\r\n }\r\n\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n ) {\r\n LoanOfficerId = getQueryString(\"loanofficer\", \"\");\r\n }\r\n } catch (e) {\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n ) {\r\n LoanOfficerId = getQueryString(\"loanofficer\", \"\");\r\n }\r\n }\r\n\r\n if (loginFrom == \"ratewizard\") {\r\n LoanOfficerId = getQueryString(\"loanofficer\", \"\");\r\n }\r\n try {\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n ) {\r\n LoanOfficerId =\r\n window.parent.document.getElementById(\"spnUserInfo\").attributes\r\n .empnum.value;\r\n }\r\n } catch (e) {}\r\n\r\n try {\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n ) {\r\n LoanOfficerId = window.parent.LoanOfficerId;\r\n }\r\n } catch (e) {}\r\n\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n )\r\n LoanOfficerId = \"1\";\r\n }\r\n return Number(LoanOfficerId) || 0;\r\n };\r\n const handleCreateWebLoginforChat = (signDetails) => {\r\n let { GatherId } = signDetails;\r\n handleAPI({\r\n name: \"CreateWebLoginforChatWeb\",\r\n params: { GatherId: GatherId },\r\n })\r\n .then((response) => {\r\n let WebLoginId = response;\r\n if (WebLoginId > 0) {\r\n setSignUpDetails({ ...signDetails, WebLoginId: WebLoginId });\r\n if (loginFrom !== \"ratequote\")\r\n handleAPI({\r\n name: \"CreateSessionWrapper\",\r\n params: { WebLoginId: WebLoginId },\r\n })\r\n .then((response) => {\r\n response = response.split(\"~\");\r\n let SessionId = response[0],\r\n ChatWithId = getQueryString(\"ChatWithId\", 0),\r\n url = \"\";\r\n if (\r\n ChatWithId == \"\" ||\r\n ChatWithId == null ||\r\n ChatWithId == undefined\r\n )\r\n ChatWithId = 0;\r\n\r\n if (ChatWithId == 0)\r\n url = `../../../ChatSession/Presentation/Webforms/ChatMenu.aspx?SessionId=${SessionId}&zid=${WebLoginId}`;\r\n else\r\n url = `../../../ChatSession/Presentation/Webforms/ChatMenu.aspx?SessionId=${SessionId}&zid=${WebLoginId}&ChatWithId=${ChatWithId}`;\r\n if (isRemember)\r\n handleSetStoredCredential({ ...signDetails, URL: url });\r\n try {\r\n window.parent.location.href = url;\r\n } catch (e) {\r\n window.location.href = url;\r\n }\r\n })\r\n .catch((e) => log(\"Error form ====> CreateSessionWrapper\", e));\r\n }\r\n })\r\n .catch((e) => log(\"Error from CreateWebLoginforChatWeb ====>\", e));\r\n };\r\n\r\n const handleEmailSentTo = (value) => {\r\n setEmailSentTo(value);\r\n setTimeout(() => {\r\n setEmailSentTo(null);\r\n }, 2000);\r\n };\r\n const handleCreateAccessCode = async (signDetails, accessCodeFlag, flag) => {\r\n signDetails = signDetails || signUpDetails;\r\n let reff = accessCodeFlag;\r\n //Sending Access Code for Both Email & Cellphone\r\n if (reff === undefined) {\r\n // if (signDetails[\"email\"].indexOf(\"@\") !== -1) reff = 1;\r\n // else reff = 2;\r\n reff = 3;\r\n }\r\n log(reff, signDetails[\"email\"], signDetails[\"cellPhone\"]);\r\n let { GatherId } = signDetails;\r\n await handleAPI({\r\n name: \"CreateAccessCode\",\r\n params: { GatherId: GatherId, Ref: reff },\r\n }).then((response) => {\r\n handleEmailSentTo(reff);\r\n response = response.split(\"|\");\r\n if (response.length > 2) {\r\n let msg = \"\";\r\n if (Number(response[3]) === 0) msg = response[1];\r\n setAccesscodeWarningMsg(msg);\r\n signDetails = { ...signDetails, AccessCode: response[2] };\r\n signDetails = { ...signDetails, ...signUpDetails };\r\n signDetails = { ...signDetails, GatherId: GatherId };\r\n if (window.parent) {\r\n window.parent.GatherId = GatherId;\r\n }\r\n setSignUpDetails(signDetails);\r\n setHeaderText(\r\n \"~~~We've sent a code to both your email and cell phone. Enter it below.\"\r\n );\r\n setCurrentpage(\"accessCode\");\r\n if (flag == -1) {\r\n if (web) {\r\n if (window.self !== window.top) {\r\n try {\r\n if (window.parent !== null) {\r\n if (signDetails[\"CampaignPage\"] === 1) {\r\n handleCreateWebLoginforChat(signDetails);\r\n return false;\r\n }\r\n }\r\n } catch (e) {}\r\n if (loginFrom == \"chat\") {\r\n handleCreateWebLoginforChat(signDetails);\r\n return false;\r\n }\r\n\r\n if (\r\n loginFrom == \"securedoc\" ||\r\n loginFrom == \"loanapp\" ||\r\n loginFrom == \"ratequote\" ||\r\n loginFrom == \"ratewizard\"\r\n ) {\r\n handleSaveUseType(true, signDetails);\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n // return signDetails;\r\n }\r\n });\r\n };\r\n const validatePassword = (key, text) => {\r\n setNewPassword({ ...newPassword, [key]: text });\r\n let strength = 0;\r\n if (text.length > 6) strength += 1;\r\n if (text.match(/([A-Z])/) && text.match(/([0-9])/)) strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/)) strength += 1;\r\n let msg = ``;\r\n if (strength < 3) {\r\n msg = `Password does not meet complexity Requirements.`;\r\n } else {\r\n msg = `Password Meets Complexity Requirements`;\r\n }\r\n if (key === \"confirmPassword\" && text !== newPassword[\"password\"]) {\r\n msg = `Password Does Not Match`;\r\n strength = 0;\r\n }\r\n msg = (\r\n <View>\r\n <FontAwesome\r\n name={strength < 3 ? \"close\" : \"check\"}\r\n size={22}\r\n color={strength < 3 ? \"red\" : \"green\"}\r\n />\r\n\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n marginTop: -25,\r\n marginBottom: 20,\r\n fontSize: 14,\r\n marginLeft: 30,\r\n }}\r\n >\r\n {msg}\r\n </CustomText>\r\n </View>\r\n );\r\n setnewPasswordMessage({ ...newPasswordMessage, [`${key}Msg`]: msg });\r\n };\r\n const getSecureEmail = () => {\r\n let Email = \"\";\r\n if (\r\n signUpDetails[\"email\"] === \"\" ||\r\n signUpDetails[\"email\"].indexOf(\"@\") === -1\r\n ) {\r\n return <></>;\r\n } else Email = signUpDetails[\"email\"].split(\"@\");\r\n return (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleCreateAccessCode(signUpDetails, 1);\r\n }}\r\n bold={true}\r\n style={[styles.footText, { alignSelf: \"flex-start\", fontSize: 13 }]}\r\n >\r\n Resend via email\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 13, color: \"#999\", marginTop: 5 }}\r\n >\r\n {`${Email[0].slice(0, 2)}...${Email[1]}`}\r\n </CustomText>\r\n {[1, 3].includes(emailSentTo) && (\r\n <CustomText bold={true} style={{ color: \"#0000ff\", fontSize: 12 }}>\r\n Sent\r\n </CustomText>\r\n )}\r\n </>\r\n );\r\n };\r\n const getSecurePhone = () => {\r\n let Phone = signUpDetails[\"cellPhone\"];\r\n if (Phone === undefined) {\r\n if (\r\n Number(signUpDetails[\"email\"]) !== NaN &&\r\n signUpDetails[\"email\"].indexOf(\"@\") === -1\r\n ) {\r\n Phone = signUpDetails[\"email\"];\r\n }\r\n } else Phone = Phone.slice(-4);\r\n return (\r\n <>\r\n {Phone === \"\" ? (\r\n <></>\r\n ) : (\r\n <>\r\n <CustomText\r\n onPress={() => {\r\n handleCreateAccessCode(signUpDetails, 2);\r\n }}\r\n bold={true}\r\n style={[\r\n styles.footText,\r\n { alignSelf: \"flex-start\", fontSize: 13 },\r\n ]}\r\n >\r\n Resend via text message\r\n </CustomText>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: 13,\r\n color: \"#999\",\r\n marginTop: 5,\r\n alignSelf:\r\n getQueryString(\"Mobile\", \"\") == \"true\" ? \"flex-end\" : \"\",\r\n }}\r\n >\r\n {`xxx-xxx-${Phone}`}\r\n </CustomText>\r\n {[2, 3].includes(emailSentTo) && (\r\n <CustomText\r\n bold={true}\r\n style={{ color: \"#0000ff\", fontSize: 12 }}\r\n >\r\n Sent\r\n </CustomText>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n const getHeaderText = () => {\r\n let header = headerText.split(\"~~~\");\r\n return (\r\n <>\r\n <CustomText bold={true} style={[styles.headText, { color: \"#999\" }]}>\r\n {header[0] !== \"\" ? (\r\n <CustomText bold={true} style={[styles.headText, { color: \"red\" }]}>\r\n {header[0]}\r\n </CustomText>\r\n ) : (\r\n <></>\r\n )}\r\n {header[1]}\r\n </CustomText>\r\n </>\r\n );\r\n };\r\n const handleUserTypeChange = (name) => {\r\n let uType = { ...userType, [name]: !userType[name] };\r\n setUserType(uType);\r\n };\r\n useEffect(() => {\r\n let emailMethod = \"DWLogin\",\r\n documentURI = document.documentURI,\r\n LoanOfficerId = 0,\r\n device = web ? \"desktop\" : \"mobile\",\r\n prevPage = `${REDIRECT_URL}sitelogin`,\r\n CampaignPage = 0,\r\n CampaignInline = \"\";\r\n try {\r\n if (loginFrom === \"ratequote\") {\r\n window.parent.document.getElementById(\"iframeLogin\").style.height =\r\n \"600px\";\r\n }\r\n } catch (error) {}\r\n if (window.self !== window.top || web) {\r\n if (\r\n window.parent.CampaignPage !== null &&\r\n window.parent.CampaignPage === 1\r\n )\r\n CampaignPage = 1;\r\n\r\n CampaignInline = getQueryString(\"campaigninline\", 0);\r\n try {\r\n prevPage = window.parent.document.referrer;\r\n } catch (error) {}\r\n if (\r\n documentURI.indexOf(\"StartLoanApp=1\") !== -1 ||\r\n documentURI.indexOf(\"To=loanapp\") !== -1\r\n ) {\r\n emailMethod = \"StartLoanApp\";\r\n } else if (documentURI.indexOf(\"LockThisRate=1\") !== -1) {\r\n emailMethod = \"LockThisIntRate\";\r\n } else if (documentURI.indexOf(\"RateOptions=1\") !== -1) {\r\n emailMethod = \"RateOptions\";\r\n } else if (documentURI.indexOf(\"CustomizeOptions=1\") !== -1) {\r\n emailMethod = \"CustomizeOptions\";\r\n } else if (documentURI.indexOf(\"To=ratequote\") !== -1) {\r\n emailMethod = \"RateQuotes\";\r\n LoanOfficerId = window.parent.getQueryString(\"empnum\", \"\");\r\n } else if (documentURI.indexOf(\"To=securedoc\") !== -1) {\r\n emailMethod = \"UploadDocs\";\r\n LoanOfficerId = getQuerystring_document(\"loanofficer=\", \"0\");\r\n }\r\n }\r\n if (\r\n LoanOfficerId == 0 ||\r\n LoanOfficerId == null ||\r\n LoanOfficerId == \"\" ||\r\n LoanOfficerId == undefined\r\n )\r\n LoanOfficerId = handleGetLoanOfficerId();\r\n\r\n let obj = {\r\n emailMethod,\r\n LoanOfficerId,\r\n device,\r\n prevPage,\r\n CampaignPage,\r\n CampaignInline,\r\n };\r\n console.log(obj);\r\n setSignUpDetails({\r\n ...signUpDetails,\r\n ...obj,\r\n });\r\n console.log(signUpDetails);\r\n }, []);\r\n const handleLogGAEventPasscode = (signDetails) => {\r\n signDetails = signDetails || signUpDetails;\r\n let emailMethod =\r\n signDetails[\"emailMethod\"] || signUpDetails[\"emailMethos\"],\r\n { LoanOfficerId, WebLoginId, Prevpage, device } = signUpDetails;\r\n\r\n try {\r\n handleAPI({\r\n name: \"fnLogGAEvent_passcode\",\r\n params: {\r\n UserWebloginId: WebLoginId,\r\n device: web ? \"desktop\" : \"mobile\",\r\n LO: LoanOfficerId || 0,\r\n fromAction: emailMethod || \"DWLogin\",\r\n Prevpage: Prevpage || `${REDIRECT_URL}sitelogin`,\r\n },\r\n }).then((response) => {\r\n console.log(\"fnLogGAEvent_passcode\", response);\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n const getQuerystring_document = (key, default_) => {\r\n let finalQueryString = \"\";\r\n if (default_ == null) default_ = \"\";\r\n key = key.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n\r\n let NewKey = key.toUpperCase();\r\n NewKey = NewKey.replace(\"=\", \"\");\r\n let regex = new RegExp(\"[\\\\?&]\" + NewKey + \"=([^&#]*)\"),\r\n ActualQueryString = window.location.href,\r\n NewQueryString = ActualQueryString.toUpperCase(),\r\n qsValue = regex.exec(NewQueryString);\r\n if (qsValue != null) {\r\n let startPosi = NewQueryString.indexOf(\"&\" + NewKey),\r\n keylen = NewKey.length,\r\n Querylen = ActualQueryString.length,\r\n prefix = ActualQueryString.substring(0, startPosi),\r\n sufix = ActualQueryString.substring(startPosi + 1 + keylen, Querylen),\r\n finalQueryString = prefix + \"&\" + NewKey + sufix;\r\n } else {\r\n finalQueryString = NewQueryString;\r\n }\r\n let qs = regex.exec(finalQueryString);\r\n if (qs == null) return default_;\r\n else return qs[1];\r\n };\r\n const handleLogAutoGAEventPasscode = (signDetails) => {\r\n let { WebLoginId, device, LoanOfficerId, emailMethod } = {\r\n ...signDetails,\r\n ...signUpDetails,\r\n };\r\n try {\r\n handleAPI({\r\n name: \"LogGAEvent\",\r\n params: {\r\n UserWebloginId: WebLoginId,\r\n device: web ? \"desktop\" : \"mobile\" || \"mobile\",\r\n LO: LoanOfficerId || 0,\r\n fromAction: emailMethod || \"DWLogin\",\r\n Prevpage: Prevpage || `${REDIRECT_URL}sitelogin`, //\"Mobile Application\",\r\n },\r\n }).then((response) => {\r\n console.log(\"LogGAEvent\", response);\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n const handleSaveUseType = (\r\n borrowerType,\r\n signDetails,\r\n mortgageEmployeeType\r\n ) => {\r\n signDetails = signDetails || signUpDetails;\r\n let { mortgageEmployee, borrower, vendor } = userType,\r\n userTypeId = 0,\r\n { GatherId, ShortCode, firstName, lastName } = signDetails;\r\n\r\n if (mortgageEmployee || mortgageEmployeeType) userTypeId += 2;\r\n if (borrower || borrowerType === true) userTypeId += 1;\r\n if (vendor) userTypeId += 32;\r\n\r\n if (userTypeId === 0) return false;\r\n let RateOptions = getQueryString(\"RateOptions\", \"0\"),\r\n LockThisRate = getQueryString(\"LockThisRate\", \"0\"),\r\n HomePage = getQueryString(\"HomePage\", \"0\"),\r\n CustomizeOptions = getQueryString(\"CustomizeOptions\", \"0\"),\r\n StartLoanApp = getQueryString(\"StartLoanApp\", \"0\");\r\n handleAPI({\r\n name:\r\n loginFrom === \"siteLogin\" ||\r\n loginFrom === \"securedoc\" ||\r\n loginFrom === \"esign\" ||\r\n RateOptions == 1 ||\r\n LockThisRate == 1 ||\r\n CustomizeOptions == 1 ||\r\n StartLoanApp == 1\r\n ? \"SaveUserType_WithOutLoan\"\r\n : \"SaveUserTypeLogin\",\r\n params:\r\n loginFrom === \"siteLogin\" ||\r\n loginFrom === \"securedoc\" ||\r\n loginFrom === \"esign\" ||\r\n RateOptions == 1 ||\r\n LockThisRate == 1 ||\r\n CustomizeOptions == 1 ||\r\n StartLoanApp == 1\r\n ? {\r\n UserType: userTypeId,\r\n WebLoginId: GatherId,\r\n }\r\n : {\r\n fieldval: userTypeId,\r\n GatherDataId: GatherId,\r\n ShortCode: \"\",\r\n blremove: \"0\",\r\n },\r\n }).then((response) => {\r\n if (borrowerType === true) {\r\n handleBorrowerLogin(true, signDetails);\r\n } else {\r\n handleNextToLogin(signDetails);\r\n }\r\n });\r\n };\r\n\r\n const handleNextToLogin = (signDetails) => {\r\n let { GatherId, ShortCode } = signDetails;\r\n handleAPI({\r\n name: \"CheckUserTypeSelected\",\r\n params: {\r\n GatherId: GatherId,\r\n ShortCode: ShortCode,\r\n },\r\n }).then((UserTypeSelected) => {\r\n UserTypeSelected = JSON.parse(UserTypeSelected);\r\n signDetails[\"UserType\"] = UserTypeSelected;\r\n if (parseInt(UserTypeSelected) === 1) {\r\n if (loginFrom === \"siteLogin\") {\r\n handleAPI({\r\n name: \"CreateBorrowerLoginWithNoLoanId\",\r\n params: {\r\n ShortCode: ShortCode,\r\n GatherId: GatherId,\r\n },\r\n }).then((response) => {\r\n response = response.split(\"~\");\r\n let Loanid = response[1],\r\n WebLoginId = response[2],\r\n SessionId = response[3];\r\n let url = \"\";\r\n let StartLoanApp = Number(getQueryString(\"StartLoanApp\", \"0\") || 0);\r\n if (StartLoanApp == 1) {\r\n url = `${window.location.origin}/GoDirect/index.html?Path=Home&SessionId=${SessionId}&loanId=-999`;\r\n } else {\r\n url = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}`;\r\n }\r\n signDetails = {\r\n ...signDetails,\r\n ...{\r\n Loanid: Loanid,\r\n WebLoginId: WebLoginId,\r\n SessionId: SessionId,\r\n URL: url,\r\n },\r\n };\r\n\r\n setSignUpDetails(signDetails);\r\n if (isRemember) {\r\n handleSetStoredCredential(signDetails);\r\n handleLogAutoGAEventPasscode(signDetails);\r\n handleAPI({\r\n name: \"SaveDeviceFingerPrintWebForGatherId\",\r\n params: {\r\n GatherId: GatherId,\r\n DeviceId: deviceId,\r\n SaveResp: 1,\r\n },\r\n }).then((response) => {});\r\n } else {\r\n handleLogGAEventPasscode(signDetails);\r\n }\r\n // navigation.navigate(\"DashBoard\", {\r\n // userName: `${firstName} ${lastName}`,\r\n // SessionId: SessionId,\r\n // });\r\n if (loginFrom === \"siteLogin\") {\r\n try {\r\n window.parent.location.href = url;\r\n } catch (e) {\r\n window.location.href = url;\r\n }\r\n }\r\n handleClearState();\r\n });\r\n } else {\r\n handleBorrowerLogin(false, signDetails);\r\n }\r\n } else {\r\n handleLogGAEventEmployee(signDetails);\r\n }\r\n });\r\n };\r\n const handleLogGAEventEmployee = (signDetails) => {\r\n let emailMethod = signDetails[\"emailMethod\"] || \"DWLogin\",\r\n {\r\n device,\r\n LoanOfficerId,\r\n prevPage,\r\n GatherId,\r\n WebLoginId = \"\",\r\n SessionId = \"\",\r\n ShortCode,\r\n } = signDetails;\r\n\r\n handleAPI({\r\n name: \"fnLogGAEvent_passcode_Employee\",\r\n params: {\r\n UserWebloginId: GatherId,\r\n device: web ? \"desktop\" : \"mobile\",\r\n IpAddress: deviceId,\r\n LO: LoanOfficerId,\r\n fromAction: emailMethod,\r\n Prevpage: prevPage,\r\n },\r\n })\r\n .then(async (response) => {\r\n if (web) {\r\n if (loginFrom === \"RunScenario\") {\r\n const objLoginParams = { SessionId };\r\n try {\r\n window.parent.fnStoreQueryParams(objLoginParams);\r\n } catch (error) {\r\n window.top.fnStoreQueryParams(objLoginParams);\r\n }\r\n }\r\n\r\n let URL = `../../../Login/Presentation/Webforms/AccountSetupInformation.aspx?SessionID=${SessionId}&WID=${WebLoginId}&GatherId=${GatherId}&ShortCode=${ShortCode}&Route=${\r\n Route || loginFrom\r\n }`;\r\n\r\n try {\r\n window.parent.location = URL;\r\n } catch (e) {\r\n window.location = URL;\r\n }\r\n } else {\r\n setWebPageURL(\r\n `../../../Login/Presentation/Webforms/AccountSetupInformation.aspx?SessionID=${SessionId}&WID=${WebLoginId}&GatherId=${GatherId}&ShortCode=${ShortCode}&Route=${loginFrom}`\r\n );\r\n setTimeout(() => {\r\n navigate(\"Login\", { userName: userName });\r\n }, 1500);\r\n handleClearState();\r\n }\r\n })\r\n .catch((e) => log(\"Error form ====>\", e));\r\n };\r\n\r\n const handleCreateSession = async (WebLoginId) => {\r\n await handleAPI({\r\n name: \"CreateSessionWrapper\",\r\n params: { WebLoginId: WebLoginId },\r\n }).then((response) => {\r\n response = response.split(\"~\");\r\n return response[0];\r\n });\r\n };\r\n\r\n const handleBorrowerLogin = (isBorr, signDetails) => {\r\n handleAPI({\r\n name: \"CheckLoanOfficer_alreadyselected_Web\",\r\n params: {\r\n GatherId: signDetails[\"GatherId\"],\r\n ShortCode: signDetails[\"ShortCode\"] || 0,\r\n },\r\n })\r\n .then((response) => {\r\n let arr = response.split(\"~\"),\r\n urlToGo = \"\",\r\n loanId = arr[1],\r\n WebLoginId = arr[2],\r\n SessionId = arr[3];\r\n let StartLoanApp = getQueryString(\"StartLoanApp\", \"0\");\r\n if (isBorr) {\r\n //urlToGo = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&To=${loginFrom}`;\r\n\r\n urlToGo = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}`;\r\n\r\n if (StartLoanApp == 1) {\r\n urlToGo = `${window.location.origin}/GoDirect/index.html?Path=Home&SessionId=${SessionId}&loanId=-999`;\r\n } else {\r\n urlToGo = navigateURL(\"DashBoard\", params, SessionId);\r\n }\r\n\r\n if (\r\n (loginFrom == \"loanapp\" || loginFrom == \"ratewizard\") &&\r\n loanId > 0\r\n ) {\r\n urlToGo += `&loanId=${loanId}`;\r\n }\r\n\r\n if (StartLoanApp == 1) {\r\n urlToGo += \"&StartLoanApp=1\";\r\n urlToGo += \"&loanOfficerId=\" + signUpDetails[\"LoanOfficerId\"];\r\n }\r\n\r\n if (loginFrom == \"ratewizard\" || loginFrom == \"loanapp\")\r\n handleAssociateLoanId(SessionId, urlToGo);\r\n\r\n if (loginFrom == \"ratequote\") {\r\n return;\r\n }\r\n } else {\r\n handleLogGAEventPasscode(signUpDetails);\r\n //urlToGo = `../../../BorrowerLanding/Presentation/Webforms/BorrowerWelcome.aspx?SessionId=${SessionId}&To=${loginFrom}`;\r\n\r\n urlToGo = `${window.location.origin}/GoDirect/index.html?Path=DashBoard&SessionId=${SessionId}`;\r\n urlToGo += \"&loanOfficerId=\" + signUpDetails[\"LoanOfficerId\"];\r\n if (\r\n signUpDetails[\"LoanOfficerId\"] == 1 ||\r\n signUpDetails[\"LoanOfficerId\"] == 2099\r\n ) {\r\n //navigate(\"DashBoard\", params);\r\n if (loginFrom === \"securedoc\") {\r\n let PublicPage = getQueryString(\"Publicpage\", \"\");\r\n urlToGo = navigateURL(\"Home\", params, SessionId);\r\n if (PublicPage == \"1\" && loanId > 0) {\r\n urlToGo += \"&GoToNav=9&PublicPage=1\";\r\n }\r\n } else urlToGo = navigateURL(\"DashBoard\", params, SessionId);\r\n }\r\n\r\n if (loginFrom === \"loanapp\" && loanId > 0)\r\n urlToGo += `&loanid=${loanId}`;\r\n urlToGo += \"&loanOfficerId=\" + signUpDetails[\"LoanOfficerId\"];\r\n loginFrom !== \"securedoc\";\r\n handleAssociateLoanId(SessionId, urlToGo);\r\n }\r\n setSignUpDetails({\r\n ...signUpDetails,\r\n ...signDetails,\r\n ...{\r\n loanId,\r\n WebLoginId,\r\n SessionId,\r\n URL: urlToGo,\r\n UserType: \"C\",\r\n },\r\n });\r\n if (loginFrom === \"siteLogin\") {\r\n try {\r\n window.parent.location.href = urlToGo;\r\n } catch (e) {\r\n window.location.href = urlToGo;\r\n }\r\n }\r\n })\r\n .catch((e) =>\r\n log(\"Error from CheckLoanOfficer_alreadyselected_Web ====>\", e)\r\n );\r\n };\r\n const handleAssociateLoanId = (SessionId, NextURL) => {\r\n let Loginmethod = \"\";\r\n if (NextURL.indexOf(\"To=securedoc\") !== -1) Loginmethod = \"UploadDocs\";\r\n\r\n if (NextURL.indexOf(\"To=ratewizard\") !== -1) {\r\n if (document.documentURI.indexOf(\"CustomizeOptions=1\") !== -1) {\r\n Loginmethod = \"CustomizeOptions\";\r\n } else Loginmethod = \"LockThisIntRate\";\r\n }\r\n let LoanId = getQueryStringURL(\"LoanId\", \"\", NextURL);\r\n if (LoanId == \"\" || Loginmethod == \"\") return;\r\n\r\n handleAPI({\r\n name: \"AssociateLoanId_GA\",\r\n params: {\r\n SessionId: SessionId,\r\n LoanId: LoanId,\r\n LoginMethod: Loginmethod,\r\n },\r\n })\r\n .then((response) => {})\r\n .catch((e) => log(\"Error from ====>\", e));\r\n };\r\n // const handleStoreCampaignDetails = () => {\r\n // try {\r\n // handleAPI({\r\n // name: \"StoreUTMCampaignWithOutLoginId\",\r\n // params: {\r\n // CampignId: \"118\",\r\n // WebLoginId: 4142, //signUpDetails[\"WebLoginId\"],\r\n // utmsource: \"Direct Mortgage\",\r\n // utmmedium: \"Internal\",\r\n // utmcampaign: \"Login Creation\",\r\n // utmcontent: \"\",\r\n // utmterm: \"\",\r\n // OrgUrl: `${REDIRECT_URL}sitelogin`,\r\n // MsgText: \"\",\r\n // Email: signUpDetails[\"email\"],\r\n // Phone: signUpDetails[\"cellPhone\"],\r\n // CampignNum: 0,\r\n // LeadOfficer: 0,\r\n // },\r\n // }).then((response) => {\r\n // console.log(\"StoreUTMCampaignWithOutLoginId\", response);\r\n // });\r\n // } catch (e) {\r\n // console.error(e);\r\n // }\r\n // };\r\n const handleUpdateUserEmailInCTA = async (EmailId) => {\r\n let DeviceId =\r\n window?.parent?.GloParentDeviceId ||\r\n (await AsyncStorage.getItem(\"DeviceId\")) ||\r\n null,\r\n PageLoadId =\r\n window?.parent?.GLO_PageLoadId ||\r\n (await AsyncStorage.getItem(\"PageLoadId\")) ||\r\n null,\r\n Buttontext = handleGetButtonText(loginFrom);\r\n handleAPI({\r\n name: \"UpdateUserEmailInCTA\",\r\n params: {\r\n Buttontext,\r\n PageLoadId,\r\n EmailId,\r\n DeviceId,\r\n },\r\n }).then((response) => {});\r\n };\r\n const handleLogDWCallToActionEventParent = async (iButtontext) => {\r\n try {\r\n let device = web ? \"desktop\" : \"mobile\",\r\n Buttontext = \"\",\r\n documentURI = document.documentURI;\r\n\r\n if (\r\n documentURI.includes(\"StartLoanApp=1\") ||\r\n documentURI.includes(\"To=loanapp\")\r\n )\r\n Buttontext = \"Start a Loan Application\";\r\n else if (documentURI.includes(\"LockThisRate=1\"))\r\n Buttontext = \"Lock This Interest Rate\";\r\n else if (documentURI.includes(\"RateOptions=1\"))\r\n Buttontext = \"View All Fees and Rate Options\";\r\n else if (documentURI.includes(\"CustomizeOptions=1\"))\r\n Buttontext = \"Customize Your Scenario\";\r\n else if (documentURI.includes(\"To=ratequote\")) Buttontext = \"Rate Quote\";\r\n else if (documentURI.includes(\"To=securedoc\"))\r\n Buttontext = \"Upload Documents\";\r\n else if (documentURI.includes(\"To=ratewizard&RateQuoteId=undefined\"))\r\n Buttontext = \"Track these Rates\";\r\n else if (loginFrom === \"securedoc\") Buttontext = \"Upload Documents\";\r\n else if (loginFrom === \"loanapp\") Buttontext = \"Apply Online\";\r\n\r\n if (iButtontext) Buttontext = iButtontext;\r\n\r\n let params = {\r\n PageTitle: window.parent?.document.title,\r\n PageURL: window.parent?.location.href,\r\n device,\r\n IPAddress: window.parent?.GloParentDeviceId || \"\",\r\n ParentId: window.parent?.GLO_PageLoadId || \"\",\r\n Buttontext,\r\n detailsJson: JSON.stringify([\r\n {\r\n Browser: handleGetBrowserName(),\r\n LoanId: 0,\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: signUpDetails[\"email\"] || \"\",\r\n },\r\n ]),\r\n };\r\n AsyncStorage.setItem(\r\n \"PageLoadId\",\r\n window?.parent?.GLO_PageLoadId || null\r\n );\r\n if (Buttontext !== \"\") {\r\n handleAPI({\r\n name: \"fnLogDWCallToActionEvent\",\r\n params,\r\n })\r\n .then((response) => {\r\n handleTrackGA4Events(Buttontext, params);\r\n })\r\n .catch((e) => log(\"Error form fnLogDWCallToActionEvent ====> \", e));\r\n }\r\n } catch (error) {}\r\n };\r\n const handleStoreCampaignDetails = async (\r\n CampignId,\r\n utm_campaign,\r\n CampignNum\r\n ) => {\r\n try {\r\n let OrgUrl = web\r\n ? window.top.document.location.href\r\n : `${REDIRECT_URL}sitelogin`,\r\n { LoanOfficerId, cellPhone, email, WebLoginId } = signUpDetails;\r\n AsyncStorage.removeItem(\"CampaignDetails\");\r\n AsyncStorage.setItem(\r\n \"CampaignDetails\",\r\n JSON.stringify({ CampignId, utm_campaign, CampignNum, WebLoginId }) ||\r\n null\r\n );\r\n if (OrgUrl) OrgUrl = \"\";\r\n handleLogDWCallToActionEventParent();\r\n await handleAPI({\r\n name: \"StoreUTMCampaignWithOutLoginId\",\r\n params: {\r\n ...{\r\n CampignId: CampignId || \"118\",\r\n WebLoginId: WebLoginId || 4142,\r\n utmsource: \"Direct Mortgage\",\r\n utmmedium: \"Internal\",\r\n utmcampaign: utm_campaign || \"Login Creation\",\r\n utmcontent: \"\",\r\n utmterm: \"\",\r\n OrgUrl: OrgUrl,\r\n MsgText: \"\",\r\n Email: email,\r\n Phone: cellPhone,\r\n },\r\n ...(CampignNum !== -1 && {\r\n CampignNum: CampignNum || 0,\r\n LeadOfficer: LoanOfficerId,\r\n }),\r\n },\r\n }).then((response) => {\r\n console.log(\"StoreUTMCampaignWithOutLoginId\", response);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n //========================================\r\n return (\r\n <>\r\n {webPageURL ? (\r\n <>\r\n <webPageView url={webPageURL} />\r\n </>\r\n ) : (\r\n <View\r\n style={[\r\n {\r\n backgroundColor:\r\n getQueryString(\"Route\", \"\") === \"dmloanapp\"\r\n ? \"#f4f4f4\"\r\n : \"#fff\",\r\n flex: 1,\r\n },\r\n // loginFrom === \"esign\" && {\r\n // alignItems: \"center\",\r\n // width: window.innerWidth,\r\n // },\r\n ]}\r\n >\r\n {(loginFrom === \"esign\" || loginFrom === \"chat\") && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n height: 85,\r\n boxShadow: \"0 0 3px 0 rgba(0,0,0,0.22)\",\r\n marginBottom: loginFrom === \"esign\" ? 50 : 20,\r\n display: getQueryString(\"HideHeader\", \"\") === \"1\" ? \"none\" : \"\",\r\n }}\r\n >\r\n <Image\r\n style={{\r\n position: \"relative\",\r\n height: \"50px\",\r\n width: \"180px\",\r\n marginTop: 25,\r\n marginBottom: 10,\r\n marginLeft: 30,\r\n }}\r\n source={require(\"../../assets/logo.png\")}\r\n />\r\n {loginFrom === \"esign\" && (\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: isMobileWeb ? 21 : 27,\r\n marginTop: 15,\r\n marginBottom: 10,\r\n marginLeft: 15,\r\n }}\r\n >\r\n Welcome to the E-Signature Page\r\n </CustomText>\r\n )}\r\n </View>\r\n )}\r\n <View\r\n style={[\r\n {\r\n // width: !web\r\n // ? null\r\n // : getQueryString(\"Route\", \"\") === \"dmloanapp\"\r\n // ? \"95%\"\r\n // : \"inherit\",\r\n width: \"95vw\",\r\n },\r\n web ? { maxWidth: 475 } : {},\r\n ]}\r\n >\r\n <ScrollContainer>\r\n <View\r\n style={[\r\n styles.container,\r\n // loginFrom === \"esign\"\r\n // ? {\r\n // boxShadow: \"0 5px 15px rgba(0,0,0,.5)\",\r\n // border: \"1px solid #999\",\r\n // marginTop: 10,\r\n // marginLeft: 15,\r\n // marginRight: 25,\r\n // marginBottom: 25,\r\n // width: \"92%\",\r\n // }\r\n // : {},\r\n { marginLeft: loginFrom === \"loanapp\" ? \"1rem\" : \"\" },\r\n ]}\r\n >\r\n <View style={styles.headContainer}>{getHeaderText()}</View>\r\n <View style={styles.body}>\r\n {currentPage === \"signUp\" && (\r\n <>\r\n <InputBox\r\n label=\"First Name\"\r\n placeholder=\"First Name\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"firstName\", value: text })\r\n }\r\n autoFocus\r\n value={signUpDetails[\"firstName\"]}\r\n validate={validateSignUp[\"firstName\"]}\r\n />\r\n <InputBox\r\n label=\"Last Name\"\r\n placeholder=\"Last Name\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"lastName\", value: text })\r\n }\r\n value={signUpDetails[\"lastName\"]}\r\n validate={validateSignUp[\"lastName\"]}\r\n />\r\n <InputBox\r\n keyboardType=\"numeric\"\r\n label=\"Cell Phone Number\"\r\n placeholder=\"Cell Phone Number\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"cellPhone\", value: text })\r\n }\r\n onBlur={() => {\r\n handleChange({\r\n name: \"formatedCellPhone\",\r\n value: signUpDetails[\"cellPhone\"],\r\n isFormat: true,\r\n });\r\n }}\r\n value={signUpDetails[\"formatedCellPhone\"]}\r\n validate={validateSignUp[\"cellPhone\"]}\r\n />\r\n <InputBox\r\n label=\"Email Address\"\r\n placeholder=\"Email address\"\r\n onChangeText={(text) =>\r\n handleChange({ name: \"email\", value: text })\r\n }\r\n onKeyPress={(event) => {\r\n if (event.nativeEvent.key === \"Enter\") {\r\n handleSubmit();\r\n }\r\n }}\r\n value={signUpDetails[\"email\"]}\r\n validate={validateSignUp[\"email\"]}\r\n />\r\n {errorMsg[\"text\"] && (\r\n <View>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: errorMsg[\"color\"] || \"red\",\r\n fontSize: 15,\r\n marginTop: 15,\r\n }}\r\n >\r\n {errorMsg[\"text\"]}\r\n </CustomText>\r\n </View>\r\n )}\r\n <IconButton\r\n title=\"Submit\"\r\n style={{\r\n alignSelf: \"flex-end\",\r\n }}\r\n onPress={handleSubmit}\r\n loading={processingStatus === \"Submit\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n />\r\n </>\r\n )}\r\n {currentPage === \"accessCode\" && (\r\n <>\r\n <InputBox\r\n label=\"Access Code\"\r\n autoFocus\r\n keyboardType=\"numeric\"\r\n placeholder=\"Please enter your access code...\"\r\n onChangeText={(text) => {\r\n handleChange({\r\n name: \"enteredAccessCode\",\r\n value: text,\r\n });\r\n if (errorMsg[\"text\"] !== \"\")\r\n setErrormsg({ ...errorMsg, text: \"\" });\r\n }}\r\n onKeyPress={(event) => {\r\n if (event.nativeEvent.key === \"Enter\") {\r\n if (signUpDetails[\"enteredAccessCode\"] !== \"\")\r\n handleValidateAccessCode();\r\n }\r\n }}\r\n value={signUpDetails[\"enteredAccessCode\"]}\r\n />\r\n {errorMsg[\"text\"] && (\r\n <View>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: errorMsg[\"color\"] || \"red\",\r\n fontSize: 15,\r\n marginTop: -5,\r\n marginBottom: 15,\r\n }}\r\n >\r\n {errorMsg[\"text\"]}\r\n </CustomText>\r\n </View>\r\n )}\r\n {/* <IconButton\r\n style={{\r\n marginTop: -5,\r\n }}\r\n onPress={handleValidateAccessCode}\r\n icon={false}\r\n title=\"Validate Access Code\"\r\n /> */}\r\n <View\r\n style={{\r\n margin: \"10px 0px\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <View style={{ flexDirection: \"row\" }}>\r\n <Checkbox\r\n value={isRemember}\r\n onValueChange={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n color={isRemember ? \"#0075ff\" : undefined}\r\n />\r\n <View style={{ flexDirection: \"column\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#999\",\r\n fontSize: 15,\r\n marginLeft: 10,\r\n }}\r\n onPress={() => {\r\n setIsRemember(!isRemember);\r\n }}\r\n >\r\n Remember me on this device\r\n {web && (\r\n <CustomText\r\n style={{ fontSize: 12, color: \"#999\" }}\r\n bold={true}\r\n italic={true}\r\n >\r\n {\"\\n\"}(not recommended on public computers)\r\n </CustomText>\r\n )}\r\n </CustomText>\r\n </View>\r\n </View>\r\n <IconButton\r\n style={{\r\n marginTop: -5,\r\n }}\r\n onPress={handleValidateAccessCode}\r\n icon={false}\r\n title=\"Validate Code\"\r\n loading={processingStatus === \"validating\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n />\r\n </View>\r\n\r\n <View style={{ margin: 10 }}>\r\n <View\r\n style={{\r\n borderBottomColor: \"black\",\r\n borderBottomWidth: 1,\r\n marginTop: 20,\r\n }}\r\n />\r\n <View\r\n style={{\r\n marginTop: 30,\r\n marginBottom: 20,\r\n }}\r\n >\r\n {accesscodeWarningMsg && (\r\n <CustomText\r\n style={{\r\n fontSize: 16,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n marginTop: -15,\r\n }}\r\n bold={true}\r\n >\r\n {accesscodeWarningMsg}\r\n </CustomText>\r\n )}\r\n <CustomText\r\n style={{\r\n fontSize: 17,\r\n color: \"#999\",\r\n marginBottom: 15,\r\n }}\r\n bold={true}\r\n >\r\n Didn't get the code?\r\n </CustomText>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }}\r\n >\r\n <View>{getSecureEmail()}</View>\r\n <View>{getSecurePhone()}</View>\r\n </View>\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"loginOption\" && (\r\n <>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"space-evenly\",\r\n }}\r\n >\r\n <View>\r\n <IconButton\r\n loading={processingStatus === \"loginNow\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n onPress={() => {\r\n if (loginFrom === \"esign\") {\r\n setHeaderText(\r\n \"~~~Please select the type of user account that you will be using:\"\r\n );\r\n setCurrentpage(\"userType\");\r\n } else {\r\n setProcessingStatus(\"loginNow\");\r\n handleSaveUseType(false, signUpDetails, true);\r\n }\r\n }}\r\n title=\"Login Now\"\r\n />\r\n </View>\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n <IconButton\r\n loading={processingStatus === \"loginNow\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n style={{ marginLeft: 10 }}\r\n onPress={() => {\r\n setHeaderText(\"~~~Set a password\");\r\n setCurrentpage(\"setPassword\");\r\n }}\r\n title=\"Set Password\"\r\n buttonType=\"secondary\"\r\n />\r\n </View>\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"setPassword\" && (\r\n <View>\r\n <CustomText\r\n // bold={true}\r\n style={{\r\n fontSize: 16,\r\n color: \"#999\",\r\n marginBottom: 20,\r\n }}\r\n >\r\n {`Please create your password below: \r\n\r\nPassword Requirments: \r\nMinimum length of 6 characters, 1 number, 1 capital letter, and 1 special character such as: (@!*&).`}\r\n </CustomText>\r\n <View>\r\n <View>\r\n <InputBox\r\n label=\"Password\"\r\n autoFocus\r\n secureTextEntry={newIsPasswordSecure[\"password\"]}\r\n placeholder=\"Please enter your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"password\", text);\r\n }}\r\n value={newPassword[\"password\"]}\r\n />\r\n\r\n <CustomText\r\n style={{ position: \"absolute\", right: 20, top: 20 }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n password: !newIsPasswordSecure[\"password\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"password\"] ? (\r\n <FontAwesome name=\"eye\" color=\"gray\" size={15} />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n )}\r\n </CustomText>\r\n\r\n {newPasswordMessage[\"passwordMsg\"] !== \"\" &&\r\n newPassword[\"password\"] !== \"\" && (\r\n <>{newPasswordMessage[\"passwordMsg\"]}</>\r\n )}\r\n </View>\r\n <View>\r\n <InputBox\r\n label=\"Confirm Password\"\r\n secureTextEntry={\r\n newIsPasswordSecure[\"confirmPassword\"]\r\n }\r\n placeholder=\"Confirm your password...\"\r\n onChangeText={(text) => {\r\n validatePassword(\"confirmPassword\", text);\r\n }}\r\n value={newPassword[\"confirmPassword\"]}\r\n />\r\n <CustomText\r\n style={{ position: \"absolute\", right: 20, top: 20 }}\r\n onPress={() => {\r\n setNewIsPasswordSecure({\r\n ...newIsPasswordSecure,\r\n confirmPassword:\r\n !newIsPasswordSecure[\"confirmPassword\"],\r\n });\r\n }}\r\n >\r\n {newIsPasswordSecure[\"confirmPassword\"] ? (\r\n <FontAwesome name=\"eye\" color=\"gray\" size={15} />\r\n ) : (\r\n <FontAwesome\r\n name=\"eye-slash\"\r\n color=\"gray\"\r\n size={15}\r\n />\r\n )}\r\n </CustomText>\r\n\r\n {newPasswordMessage[\"confirmPasswordMsg\"] !== \"\" &&\r\n newPassword[\"confirmPassword\"] !== \"\" && (\r\n <>{newPasswordMessage[\"confirmPasswordMsg\"]}</>\r\n )}\r\n </View>\r\n <View style={{ marginBottom: 20 }}>\r\n <IconButton\r\n loading={processingStatus === \"Save&Login\"}\r\n sStyle={{\r\n minWidth: 30,\r\n height: 15,\r\n }}\r\n onPress={() => {\r\n if (newPassword[\"password\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the New Password.\"\r\n );\r\n return false;\r\n }\r\n if (newPassword[\"confirmPassword\"] === \"\") {\r\n setPasswordMisMatch(\r\n \"Please enter the Confirm New Password.\"\r\n );\r\n return false;\r\n }\r\n if (\r\n newPassword[\"confirmPassword\"] !==\r\n newPassword[\"password\"]\r\n ) {\r\n setPasswordMisMatch(\r\n \"The new password and confirmed password do not match.\"\r\n );\r\n return false;\r\n }\r\n\r\n let strength = 0,\r\n text = newPassword[\"password\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/))\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\n Minimum length of 6 characters \r\n Must contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n strength = 0;\r\n text = newPassword[\"confirmPassword\"];\r\n if (text.length > 6) strength += 1;\r\n if (\r\n text.match(/([A-Z])/) &&\r\n text.match(/([0-9])/)\r\n )\r\n strength += 1;\r\n if (text.match(/([!,%,&,@,#,jQuery,^,*,?,_,~])/))\r\n strength += 1;\r\n if (strength < 3) {\r\n setPasswordMisMatch(\r\n `Password does not meet minimum complexity requirements, password must contain: \r\n Minimum length of 6 characters \r\n Must contain 1 number, 1 capital letter, and 1 special character such as: (@!*&)`\r\n );\r\n return false;\r\n }\r\n\r\n if (\r\n newPassword[\"password\"] ===\r\n newPassword[\"confirmPassword\"]\r\n ) {\r\n setProcessingStatus(\"Save&Login\");\r\n let { GatherId, email, ShortCode } =\r\n signUpDetails;\r\n handleAPI({\r\n name: \"UpdatePasswordinGatherdata\",\r\n params: {\r\n GatherId: GatherId,\r\n UserName: email,\r\n Password: newPassword[\"password\"],\r\n // shortCode: ShortCode,\r\n },\r\n })\r\n .then((response) => {\r\n if (loginFrom === \"esign\") {\r\n setHeaderText(\r\n \"~~~Please select the type of user account that you will be using:\"\r\n );\r\n setCurrentpage(\"userType\");\r\n } else {\r\n handleSaveUseType(\r\n false,\r\n signUpDetails,\r\n true\r\n );\r\n }\r\n })\r\n .catch((err) =>\r\n console.log(\r\n \"Errorm from ====> UpdatePasswordinGatherdata\",\r\n err\r\n )\r\n );\r\n }\r\n }}\r\n title=\"Save & Login\"\r\n />\r\n </View>\r\n\r\n {PasswordMisMatch !== \"\" && (\r\n <View\r\n style={{\r\n backgroundColor: \"#f2dede\",\r\n borderColor: \"#ebccd1\",\r\n borderRadius: 4,\r\n borderWidth: 1,\r\n padding: 10,\r\n marginTop: 10,\r\n }}\r\n >\r\n <CustomText bold={true} style={{ color: \"#999\" }}>\r\n {PasswordMisMatch}\r\n </CustomText>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n {currentPage === \"ContactMethod\" && (\r\n <>\r\n <View style={{ width: \"50%\" }}>\r\n {[\"Email\", \"Text\", \"Phone Call\"].map((item, index) => (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n setSignUpDetails({\r\n ...signUpDetails,\r\n ContactMethod: index,\r\n });\r\n }}\r\n style={styles.optionContainer}\r\n >\r\n {signUpDetails[\"ContactMethod\"] === index && (\r\n <FontAwesome\r\n name=\"check\"\r\n size={22}\r\n color=\"green\"\r\n />\r\n )}\r\n <CustomText style={styles.optionText}>\r\n {item}\r\n </CustomText>\r\n </TouchableOpacity>\r\n ))}\r\n </View>\r\n <View style={{ flexDirection: \"row\" }}>\r\n <IconButton\r\n title=\"Submit\"\r\n onPress={() => {\r\n handleAPI({\r\n name: \"SavePreferredContactMethodForLogin\",\r\n params: {\r\n GatherdataId: signUpDetails[\"GatherId\"],\r\n ContactMethod: signUpDetails[\"ContactMethod\"],\r\n },\r\n })\r\n .then((response) => {\r\n handleCreateAccessCode();\r\n })\r\n .catch((e) =>\r\n log(\r\n \"Error from SavePreferredContactMethodForLogin ===> \",\r\n e\r\n )\r\n );\r\n }}\r\n />\r\n <IconButton\r\n style={{ marginLeft: 10 }}\r\n title=\"Back\"\r\n onPress={() => {\r\n handleClearState(0);\r\n }}\r\n />\r\n </View>\r\n </>\r\n )}\r\n {currentPage === \"userType\" && (\r\n <>\r\n <View>\r\n <View>\r\n <View style={{ width: \"80%\" }}>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleUserTypeChange(\"mortgageEmployee\");\r\n }}\r\n style={styles.optionContainer}\r\n >\r\n {userType[\"mortgageEmployee\"] && (\r\n <FontAwesome\r\n name=\"check\"\r\n size={22}\r\n color=\"green\"\r\n />\r\n )}\r\n <CustomText bold={true} style={styles.optionText}>\r\n {loginFrom === \"esign\"\r\n ? \"Loan Officer\"\r\n : \"Mortgage Employee\"}\r\n </CustomText>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleUserTypeChange(\"borrower\");\r\n }}\r\n style={styles.optionContainer}\r\n >\r\n {userType[\"borrower\"] && (\r\n <FontAwesome\r\n name=\"check\"\r\n size={22}\r\n color=\"green\"\r\n />\r\n )}\r\n <CustomText bold={true} style={styles.optionText}>\r\n Borrower\r\n </CustomText>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleUserTypeChange(\"vendor\");\r\n }}\r\n style={styles.optionContainer}\r\n >\r\n {userType[\"vendor\"] && (\r\n <FontAwesome\r\n name=\"check\"\r\n size={22}\r\n color=\"green\"\r\n />\r\n )}\r\n <CustomText bold={true} style={styles.optionText}>\r\n {loginFrom === \"esign\"\r\n ? \"Escrow Agent\"\r\n : \"Vendor\"}\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n <IconButton\r\n onPress={handleSaveUseType}\r\n title=\"Continue\"\r\n />\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n <View style={styles.footContainer}>\r\n <CustomText\r\n bold={true}\r\n onPress={(e) => {\r\n navigation.navigate(\"Login\", { reset: true });\r\n // updateWebURL();\r\n }}\r\n style={[\r\n styles.footText,\r\n { textDecorationLine: \"none\", borderWidth: 0 },\r\n ]}\r\n >\r\n {/* <Icon name=\"arrowleft\" size={15} color=\"#999\" /> */}←\r\n Back\r\n </CustomText>\r\n {loginFrom === \"siteLogin\" && currentPage === \"emailOnly\" && (\r\n <CustomText\r\n bold={true}\r\n onPress={(e) => {\r\n navigation.navigate(\"Login\", { reset: true });\r\n }}\r\n style={styles.footText}\r\n >\r\n Forgot Password\r\n </CustomText>\r\n )}\r\n </View>\r\n </View>\r\n </ScrollContainer>\r\n </View>\r\n </View>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n ...{\r\n color: \"#333\",\r\n backgroundColor: \"#f5f5f5\",\r\n borderWidth: 1,\r\n borderColor: \"#ddd\",\r\n borderRadius: 5,\r\n margin: 5,\r\n //width: isIOS || isAndroid ? \"80%\" : \"96%\",\r\n width: \"96%\",\r\n },\r\n // ...(web ? { width: 450 } : {}),\r\n },\r\n flex: {\r\n flex: 1,\r\n },\r\n optionContainer: {\r\n // elevation: 8,\r\n borderRadius: 15,\r\n paddingVertical: 8,\r\n paddingHorizontal: 12,\r\n borderColor: \"#606060\",\r\n borderWidth: 1,\r\n marginBottom: 20,\r\n flexDirection: \"row\",\r\n },\r\n optionText: {\r\n width: \"100%\",\r\n color: \"#999\",\r\n fontSize: 23,\r\n textAlign: \"center\",\r\n flex: 1,\r\n flexShrink: 1,\r\n },\r\n body: {\r\n display: \"flex\",\r\n backgroundColor: \"#fff\",\r\n borderTopWidth: 1,\r\n borderBottomWidth: 1,\r\n borderColor: \"#ddd\",\r\n paddingTop: 25,\r\n paddingBottom: 20,\r\n paddingHorizontal: 10,\r\n },\r\n textBox: {\r\n width: \"90%\",\r\n // height: 65,\r\n flexDirection: \"row\",\r\n marginLeft: 10,\r\n fontSize: 5,\r\n },\r\n footContainer: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n padding: 10,\r\n },\r\n headContainer: {\r\n paddingTop: 25,\r\n paddingBottom: 10,\r\n paddingRight: 25,\r\n paddingLeft: 25,\r\n },\r\n\r\n footText: {\r\n fontSize: 13,\r\n color: \"#999\",\r\n textDecorationLine: android ? \"none\" : \"underline\",\r\n borderBottomWidth: android ? 1 : 0,\r\n borderBottomColor: \"#999\",\r\n },\r\n headText: {\r\n fontSize: 18,\r\n color: \"#999\",\r\n },\r\n});\r\nexport default Signup;\r\n","import React, { useState, useContext, memo, useEffect } from \"react\";\r\nimport {\r\n StyleSheet,\r\n View,\r\n TouchableOpacity,\r\n Dimensions,\r\n Text,\r\n} from \"react-native\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport {\r\n handleAPI,\r\n handleLogDWCallToActionEventParent,\r\n queryStringToObject,\r\n updateWebURL,\r\n} from \"../accessories/CommonFunctions\";\r\nimport { context } from \"../accessories/accessories\";\r\nimport { REDIRECT_URL } from \"@env\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\n\r\nconst isMobileWeb = Dimensions.get(\"window\").width <= 480,\r\n screenSize = web ? [window.innerWidth, window.innerHeight] : [0, 0],\r\n isSmallScreen =\r\n (web && screenSize[0] > 900) || Dimensions.get(\"window\").width > 900,\r\n width =\r\n (!isMobileWeb && web) || (!web && isSmallScreen)\r\n ? 700\r\n : Dimensions.get(\"window\").width - 30;\r\n\r\nconst Spinner = memo(() => (\r\n <View\r\n style={{\r\n alignSelf: \"center\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flex: 1,\r\n }}\r\n >\r\n <View\r\n style={{\r\n width: 90,\r\n textAlign: \"center\",\r\n flexDirection: \"row\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ArrowSpinner\r\n size={15}\r\n style={{\r\n flex: web ? \"unset\" : 1,\r\n margin: 0,\r\n top: !web ? 4 : 0,\r\n marginRight: web ? 5 : 0,\r\n }}\r\n />\r\n <CustomText>Loading...</CustomText>\r\n </View>\r\n </View>\r\n));\r\n\r\nexport default function TaskTable(props) {\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { navigation, userName = \"\", SessionId = \"\" } = contextDetails;\r\n const {\r\n setWebPageURL,\r\n tab,\r\n rowData: iRowData,\r\n setFloatPage = () => {},\r\n } = props; //updateTaskDetails\r\n\r\n const [rowData, setRowData] = useState(iRowData || []);\r\n\r\n useEffect(() => {\r\n if (\r\n (rowData || []).length > 0 &&\r\n !contextDetails[\"iLoanId\"] &&\r\n props[\"tab\"] === \"activeRowData\"\r\n ) {\r\n setContextDetails({\r\n ...contextDetails,\r\n iLoanId: rowData[0].loanid,\r\n });\r\n }\r\n }, [rowData]);\r\n\r\n useEffect(() => {\r\n setRowData(iRowData);\r\n }, [iRowData]);\r\n\r\n const handleRedirectURL = async (Link, FormId, row) => {\r\n console.log({ Link, FormId, row });\r\n\r\n let URL = \"\",\r\n Path = \"Home\",\r\n loanId = row[\"loanid\"] === 0 ? -999 : row[\"loanid\"] || -999,\r\n GoToNav = 0;\r\n if (Link === 9) {\r\n if (web) {\r\n setFloatPage({\r\n path: \"Payment\",\r\n option: {\r\n From: \"DashBoard\",\r\n LoanId: row[\"loanid\"],\r\n SessionId,\r\n UserId: 0,\r\n style: {\r\n minHeight: \"75vh\",\r\n },\r\n },\r\n });\r\n return;\r\n } else {\r\n (navigation || props[\"navigation\"]).navigate(\"Payment\", {\r\n From: \"DashBoard\",\r\n LoanId: row[\"loanid\"],\r\n SessionId,\r\n UserId: 0,\r\n });\r\n }\r\n return;\r\n } else if (Link == 4) {\r\n // handleCreateLoanOnly(SessionId, navigation, userName);\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, loanId: -999, Path };\r\n });\r\n updateWebURL({\r\n SessionId: SessionId,\r\n loanId: -999,\r\n Path,\r\n });\r\n (navigation || props[\"navigation\"]).navigate(\"Home\", {\r\n userName: userName,\r\n SessionId: SessionId,\r\n loanId: -999,\r\n });\r\n }\r\n if (Link == 7) {\r\n URL = `${REDIRECT_URL}rates/rates-wizard.php?SessionId=${SessionId}&GatherId=0&From=borwelcomepage&RateQuoteId=36297&LoanOfficerId=1`;\r\n } else {\r\n if (Link == 6) {\r\n GoToNav = parseInt(FormId) === 17 ? 5 : parseInt(FormId) === 34 ? 9 : 0;\r\n //GoToNav == 5 =>> Credit Report\r\n //GoToNav == 9 =>> Doc Upload\r\n } else if (Link == 8 || Link === 1) {\r\n if (\r\n row[\"TaskAssigned\"].includes(\"Review Your Interest Rate\")\r\n //&& loanURLDetails[\"apprURL\"]\r\n ) {\r\n GoToNav = 12;\r\n //GoToNav == 12 =>> Int Rate\r\n } else {\r\n GoToNav = 11;\r\n //GoToNav == 11 =>> App Payment\r\n }\r\n // });\r\n } else if (Link === 0) {\r\n GoToNav = 10;\r\n //GoToNav == 10 =>> E-Sign\r\n }\r\n\r\n await setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, loanId, Path: \"Home\" };\r\n });\r\n let Publicpage = 0;\r\n if (FormId == 34) {\r\n Publicpage = 1;\r\n }\r\n let params = {\r\n FormId,\r\n loanId,\r\n Path,\r\n GoToNav,\r\n Publicpage,\r\n };\r\n\r\n (navigation || props[\"navigation\"]).navigate(Path, params);\r\n\r\n if (web) updateWebURL(params);\r\n }\r\n\r\n if (URL !== \"\") {\r\n setWebPageURL(URL);\r\n }\r\n\r\n handleLogDWCallToActionEventParent(\r\n row[\"TaskAssigned\"],\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n Email: \"\",\r\n LoanId: row[\"loanid\"],\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\"loanOfficerId\"] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n }\r\n );\r\n };\r\n\r\n return (\r\n <View style={styles.container}>\r\n {(rowData || []).length > 0 ? (\r\n <>\r\n {(rowData || []).map((row, index, arr) => (\r\n <TouchableOpacity\r\n key={index}\r\n style={[\r\n styles.row,\r\n index == arr.length - 1\r\n ? { borderBottomLeftRadius: 5, borderBottomRightRadius: 5 }\r\n : {},\r\n ]}\r\n activeOpacity={0.5}\r\n onPress={() => {\r\n let FormId = Number(row[\"formids\"]);\r\n\r\n if (FormId === 666) handleRedirectURL(4, FormId, row);\r\n else if (FormId === 668) handleRedirectURL(7, FormId, row);\r\n else if (FormId === 669) handleRedirectURL(8, FormId, row);\r\n else if (FormId === 122) handleRedirectURL(0, FormId, row);\r\n else if (FormId === 138) handleRedirectURL(1, FormId, row);\r\n else if (FormId === 667) handleRedirectURL(0, FormId, row);\r\n else if (FormId === 945) handleRedirectURL(9, FormId, row);\r\n else handleRedirectURL(6, FormId, row);\r\n }}\r\n >\r\n <View style={{ flexDirection: \"row\", flex: 1 }}>\r\n <CustomText\r\n style={{\r\n ...{\r\n marginLeft: 0,\r\n color: \"#1172c1\",\r\n paddingVertical: 12,\r\n fontSize: !isMobileWeb && web ? 16 : null,\r\n flex: 1,\r\n flexWrap: \"wrap\",\r\n },\r\n ...(web ? { cursor: \"pointer\" } : {}),\r\n }}\r\n >\r\n {row[\"TaskAssigned\"]}\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n ))}\r\n </>\r\n ) : (\r\n <>\r\n <View\r\n style={[\r\n styles.row,\r\n { borderBottomLeftRadius: 5, borderBottomRightRadius: 5 },\r\n ]}\r\n >\r\n {tab === \"completeRowData\" ? (\r\n <>\r\n <CustomText\r\n style={{\r\n height: 35,\r\n padding: 10,\r\n fontSize: !isMobileWeb && web ? 16 : 14,\r\n }}\r\n >\r\n There are no completed Tasks.\r\n </CustomText>\r\n </>\r\n ) : props[\"rowData\"] === null ? (\r\n <Spinner />\r\n ) : (\r\n <CustomText\r\n style={{\r\n // height: 35,\r\n padding: 10,\r\n fontSize: !isMobileWeb && web ? 16 : 14,\r\n }}\r\n >\r\n No Active Tasks were found. We'll send you a notification if\r\n anything else is needed.\r\n </CustomText>\r\n )}\r\n </View>\r\n </>\r\n )}\r\n </View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n backgroundColor: \"#fff\",\r\n borderTopWidth: 1,\r\n borderTopColor: \"#e4e6e9\",\r\n width: width,\r\n borderBottomLeftRadius: 5,\r\n borderBottomRightRadius: 5,\r\n },\r\n head: {\r\n height: 40,\r\n backgroundColor: \"#f2f4f6\",\r\n flexDirection: \"row\",\r\n paddingVertical: 10,\r\n paddingHorizontal: 15,\r\n borderBottomWidth: 0.5,\r\n borderBottomColor: \"#999\",\r\n justifyContent: \"space-around\",\r\n },\r\n\r\n text: { paddingHorizontal: 10 },\r\n row: {\r\n flexDirection: \"row\",\r\n backgroundColor: \"#fff\",\r\n borderLeftWidth: 1,\r\n borderRightWidth: 1,\r\n borderBottomWidth: 1,\r\n borderColor: \"#e4e6e9\",\r\n paddingHorizontal: 15,\r\n // height: 45,\r\n },\r\n emptyRow: {\r\n flexDirection: \"row\",\r\n borderBottomWidth: 1,\r\n borderBottomColor: \"#e4e6e9\",\r\n paddingVertical: 8,\r\n paddingHorizontal: 10,\r\n },\r\n});\r\n","import { useState, useEffect, useContext, useRef } from \"react\";\r\nimport {\r\n View,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Dimensions,\r\n SafeAreaView,\r\n} from \"react-native\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport Table from \"./Table\";\r\nimport { generateBoxShadowStyle } from \"../accessories/CommonFunctions\";\r\nimport { context } from \"../accessories/accessories\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\nimport { ScrollView } from \"react-native\";\r\n\r\nconst isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n\r\nexport default function DashBoardTable(props) {\r\n const [screenSize, setScreenSize] = useState(\r\n web ? [window.innerWidth, window.innerHeight] : [0, 0]\r\n ),\r\n isSmallScreen =\r\n (web && screenSize[0] > 900) || Dimensions.get(\"window\").width > 900;\r\n\r\n const { contextDetails, setContextDetails, navigation } = useContext(context); //Get value from context\r\n let { SessionId, taskTableIndex = 0 } = contextDetails,\r\n {\r\n setWebPageURL,\r\n handleGetUserTask = () => {},\r\n processingStatus = null,\r\n setProcessingStatus = () => {},\r\n setFloatPage = () => {},\r\n } = props;\r\n\r\n // const [eSignTaskExists, seteSignTaskExists] = useState(true);\r\n\r\n const [taskDetails, setTaskDetails] = useState(\r\n props[\"taskDetails\"] || {\r\n activeRowData: null,\r\n completeRowData: null,\r\n }\r\n ),\r\n [index, setIndex] = useState(0),\r\n [tabs] = useState([\"activeRowData\", \"completeRowData\"]),\r\n routes = [\r\n {\r\n key: \"Active\",\r\n title: \"Active\",\r\n index: 0,\r\n taskCount:\r\n taskDetails[\"activeRowData\"] === null\r\n ? -1\r\n : taskDetails[\"activeRowData\"][\"length\"],\r\n },\r\n {\r\n key: \"Completed\",\r\n title: \"Completed\",\r\n index: 2,\r\n taskCount:\r\n taskDetails[\"completeRowData\"] === null\r\n ? -1\r\n : taskDetails[\"completeRowData\"][\"length\"],\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n setIndex(0);\r\n }, [taskTableIndex]);\r\n\r\n useEffect(() => {\r\n if (processingStatus === \"changeActiveIndex\") {\r\n setIndex(0);\r\n setActiveIndex(0);\r\n setProcessingStatus(null);\r\n scrollViewRef.current.scrollTo({\r\n animated: true,\r\n x: 0,\r\n y: 0,\r\n });\r\n }\r\n }, [processingStatus]);\r\n\r\n useEffect(() => {\r\n handleGetUserTask(5);\r\n\r\n let iIndex = index || 0;\r\n scrollViewRef.current.scrollTo({\r\n animated: true,\r\n x:\r\n (!isMobileWeb && web ? 700 : Dimensions.get(\"window\").width - 30) *\r\n iIndex,\r\n y: 0,\r\n });\r\n }, [index]);\r\n\r\n const [activeIndex, setActiveIndex] = useState(0),\r\n scrollViewRef = useRef(null),\r\n width =\r\n (!isMobileWeb && web) || (!web && isSmallScreen)\r\n ? 700\r\n : Dimensions.get(\"window\").width - 30;\r\n\r\n useEffect(() => {\r\n if (scrollViewRef.current) {\r\n const targetElement = scrollViewRef.current;\r\n if (activeIndex) {\r\n //Scroll to Completed Tab\r\n targetElement.scrollToEnd({ animated: true });\r\n } else {\r\n //Scroll to Active Tab\r\n targetElement.scrollTo({ x: 0, animated: true });\r\n }\r\n }\r\n }, [activeIndex]);\r\n\r\n useEffect(() => {\r\n setTaskDetails(props[\"taskDetails\"]);\r\n }, [props[\"taskDetails\"]]);\r\n\r\n const handleSliderPage = (event) => {\r\n if (contextDetails[\"Path\"] === \"DashBoard\") {\r\n const { x } = event.nativeEvent.contentOffset;\r\n let indexOfNextScreen = Math.round(x / width);\r\n\r\n indexOfNextScreen = indexOfNextScreen >= 1 ? 1 : 0; //Screen contentOffset exceeding the\r\n\r\n setActiveIndex(indexOfNextScreen);\r\n setIndex(indexOfNextScreen);\r\n }\r\n };\r\n\r\n return (\r\n <View\r\n style={\r\n !web && [\r\n generateBoxShadowStyle(2, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n {\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n },\r\n ]\r\n }\r\n >\r\n <View\r\n style={[\r\n {\r\n flexDirection: \"column\",\r\n backgroundColor: \"#fff\",\r\n width:\r\n (!isMobileWeb && web) || (!web && isSmallScreen)\r\n ? 700\r\n : Dimensions.get(\"window\").width - 30,\r\n height: !isMobileWeb && web ? 100 : 80,\r\n marginTop: 20,\r\n // paddingHorizontal: 10,\r\n borderTopRightRadius: 8,\r\n borderTopLeftRadius: 8,\r\n borderColor: \"rgb(228, 230, 233)\",\r\n // borderBottomWidth: 2,\r\n // borderBottomColor: \"black\",\r\n },\r\n web && generateBoxShadowStyle(2, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n web && {\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n },\r\n ]}\r\n >\r\n <View\r\n style={{\r\n flex: !isMobileWeb && web ? \"unset\" : 3,\r\n justifyContent: \"space-between\",\r\n paddingHorizontal: 5,\r\n paddingVertical: 13,\r\n }}\r\n >\r\n <View style={{ flexDirection: \"row\" }}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: !isMobileWeb && web ? 20 : 15,\r\n paddingHorizontal: 10,\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n My Assignments & To-Do's\r\n {processingStatus === \"gettingUserTask\" && (\r\n <View\r\n style={{ height: web ? 18 : 15, marginLeft: web ? 5 : 25 }}\r\n >\r\n <ArrowSpinner size={web ? 18 : 15} isSpinner={true} />\r\n </View>\r\n )}\r\n </CustomText>\r\n </View>\r\n </View>\r\n <View\r\n style={{\r\n ...{\r\n flexDirection: \"row\",\r\n flex: 1.5,\r\n justifyContent: \"space-around\",\r\n },\r\n }}\r\n >\r\n {routes.map((route, iIndex) => {\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n key={iIndex}\r\n style={{\r\n flexDirection: \"row\",\r\n alignSelf: \"flex-end\",\r\n minWidth: !isMobileWeb && web ? 150 : 80,\r\n justifyContent: \"center\",\r\n paddingVertical: !isMobileWeb && web ? 10 : 8,\r\n width: \"50%\",\r\n borderBottomWidth: 3,\r\n borderBottomColor: index === iIndex ? \"#111\" : \"#fff\",\r\n }}\r\n onPress={() => {\r\n setIndex(iIndex);\r\n }}\r\n >\r\n <CustomText\r\n bold={index === iIndex}\r\n style={[\r\n styles[\"taskName\"],\r\n {\r\n color: index === iIndex ? \"black\" : \"black\",\r\n },\r\n ]}\r\n >\r\n {route.title}\r\n </CustomText>\r\n <View style={[styles[\"taskCount\"], { alignSelf: \"center\" }]}>\r\n <CustomText\r\n style={{\r\n color: \"#427ECB\",\r\n alignSelf: \"center\",\r\n fontSize: !isMobileWeb && web ? 13 : 13,\r\n paddingTop: !isMobileWeb && web ? 1 : 0,\r\n }}\r\n bold={true}\r\n >\r\n {route.taskCount === -1 ? (\r\n <ArrowSpinner\r\n size={!isMobileWeb && web ? 12 : 10}\r\n style={{ marginTop: !isMobileWeb && web ? 2 : -4 }}\r\n color=\"#fff\"\r\n />\r\n ) : (\r\n route.taskCount\r\n )}\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n );\r\n })}\r\n </View>\r\n </View>\r\n <SafeAreaView\r\n style={[\r\n {\r\n flex: 1,\r\n width: width,\r\n overflow: \"hidden\",\r\n borderBottomRightRadius: 8,\r\n borderBottomLeftRadius: 8,\r\n },\r\n generateBoxShadowStyle(2, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n {\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n },\r\n ]}\r\n >\r\n <ScrollView\r\n horizontal={true}\r\n scrollEventThrottle={100}\r\n pagingEnabled={true}\r\n showsHorizontalScrollIndicator={false}\r\n onMomentumScrollEnd={handleSliderPage}\r\n ref={scrollViewRef}\r\n style={[\r\n {\r\n backgroundColor: \"#fff\",\r\n maxWidth: width * 2,\r\n },\r\n ]}\r\n >\r\n <View style={{ height: index !== 0 ? 45 : \"auto\" }}>\r\n <Table\r\n tab={tabs[0]}\r\n rowData={taskDetails[tabs[0]] || null}\r\n setWebPageURL={setWebPageURL}\r\n navigation={navigation || props[\"navigation\"] || null}\r\n setFloatPage={setFloatPage}\r\n />\r\n </View>\r\n <View style={{ height: index !== 1 ? 45 : \"auto\" }}>\r\n <Table\r\n tab={tabs[1]}\r\n rowData={taskDetails[tabs[1]] || null}\r\n setWebPageURL={setWebPageURL}\r\n navigation={navigation || props[\"navigation\"] || null}\r\n setFloatPage={setFloatPage}\r\n />\r\n </View>\r\n </ScrollView>\r\n </SafeAreaView>\r\n </View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n taskName: {\r\n fontSize: !isMobileWeb && web ? 20 : 15.5,\r\n textTransform: \"capitalize\",\r\n marginRight: 2,\r\n },\r\n taskCount: {\r\n width: web ? 20 : 18,\r\n height: web ? 25 : 23,\r\n borderRadius: 5,\r\n backgroundColor: \"#B8D0E9\",\r\n justifyContent: \"center\",\r\n marginLeft: 5,\r\n },\r\n emptyRow: {\r\n backgroundColor: \"#fff\",\r\n flexDirection: \"row\",\r\n borderBottomWidth: 1,\r\n borderBottomColor: \"#e4e6e9\",\r\n paddingVertical: 8,\r\n paddingHorizontal: 10,\r\n borderBottomLeftRadius: 5,\r\n borderBottomRightRadius: 5,\r\n },\r\n});\r\n","import { useEffect, useState, useContext, Fragment } from \"react\";\r\nimport {\r\n View,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Linking,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport {\r\n handleLogDWCallToActionEventParent,\r\n updateWebURL,\r\n handleStartNewLoan,\r\n queryStringToObject,\r\n generateBoxShadowStyle,\r\n log,\r\n} from \"../accessories/CommonFunctions\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport Entypo from \"react-native-vector-icons/Entypo\";\r\nimport MaterialCommunityIcons from \"react-native-vector-icons/MaterialCommunityIcons\";\r\nimport { Separator, context } from \"../accessories/accessories\";\r\nimport { web, android } from \"../accessories/Platform\";\r\n\r\nconst isMobileWeb = Dimensions.get(\"window\").width <= 480 && web;\r\n\r\nconst loanKeyDetails = [\r\n {\r\n label: \"Loan Program:\",\r\n key: \"LoanProgram\",\r\n check: true,\r\n },\r\n {\r\n label: \"Loan Amount:\",\r\n key: \"LoanAmount\",\r\n },\r\n {\r\n label: \"Interest Rate:\",\r\n key: \"IntRate\",\r\n check: true,\r\n },\r\n {\r\n label: \"Payment:\",\r\n key: \"Piti\",\r\n check: true,\r\n },\r\n {\r\n label: \"Loan #:\",\r\n key: \"LoanId\",\r\n },\r\n {\r\n label: \"Status:\",\r\n key: \"UWStatus\",\r\n },\r\n];\r\n\r\nconst RecentLoans = (props) => {\r\n const [screenSize, setScreenSize] = useState(\r\n web ? [window.innerWidth, window.innerHeight] : [0, 0]\r\n ),\r\n width = Dimensions.get(\"window\").width,\r\n isSmallScreen = (web && screenSize[0] > 900) || width > 900;\r\n\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const [loanCount, setLoanCount] = useState(10);\r\n const { SessionId, navigation, userName = \"\" } = contextDetails;\r\n const {\r\n recentLoans: iRecentLoans,\r\n isExpand,\r\n setFloatPage = () => {},\r\n } = props;\r\n const [recentLoans, setRecentLoans] = useState(iRecentLoans || []);\r\n const [currentLoanDetails, setCurrentLoanDetails] = useState({\r\n isExpand: isExpand || false,\r\n });\r\n useEffect(() => {\r\n if (iRecentLoans.length > 0) {\r\n setContextDetails({\r\n ...contextDetails,\r\n RecentLoId: iRecentLoans[0].RecentLoId,\r\n });\r\n setRecentLoans(iRecentLoans);\r\n } else {\r\n setRecentLoans([]);\r\n }\r\n }, [iRecentLoans]);\r\n\r\n useEffect(() => {\r\n setCurrentLoanDetails({ isExpand });\r\n }, [isExpand]);\r\n\r\n const navigate = (path, option) => {\r\n updateWebURL({ ...option, Path: path });\r\n (navigation || props[\"navigation\"]).navigate(path, option || {});\r\n };\r\n const ButtonContinue = (row) => {\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={[\r\n {\r\n marginBottom: 5,\r\n paddingHorizontal: 5,\r\n paddingVertical: 10,\r\n color: \"#fff\",\r\n alignSelf: \"stretch\",\r\n alignItems: \"center\",\r\n borderRadius: 5,\r\n borderWidth: 1,\r\n borderColor: \"#4f77a9\",\r\n backgroundColor: \"#5b8bc8\",\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n ...generateBoxShadowStyle(2, 4, \"black\", 0.3, 3, 8, \"black\"),\r\n },\r\n web ? { boxShadow: \"#0000003d 0px 4px 10px 1px\" } : {},\r\n ]}\r\n onPress={() => {\r\n setContextDetails({ ...contextDetails, loanId: row[\"LoanId\"] });\r\n navigate(\"Home\");\r\n handleLogDWCallToActionEventParent(\r\n \"Continue\",\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n Email: \"\",\r\n LoanId: row[\"LoanId\"],\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n }\r\n );\r\n updateWebURL({\r\n // FormId: FormId,\r\n loanId: row[\"LoanId\"],\r\n Path: \"Home\",\r\n });\r\n }}\r\n >\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <CustomText\r\n style={{ color: \"#fff\", marginTop: -2, fontSize: 12 }}\r\n bold={true}\r\n >\r\n Continue Application\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n );\r\n };\r\n const StartNewLoan = () => {\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n handleLogDWCallToActionEventParent(\r\n \"Start a New Loan Application\",\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n Email: \"\",\r\n LoanId: 0,\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n }\r\n );\r\n handleStartNewLoan(\r\n navigation || props[\"navigation\"],\r\n SessionId,\r\n userName,\r\n contextDetails,\r\n setContextDetails\r\n );\r\n }}\r\n style={[\r\n {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 5,\r\n borderWidth: 1,\r\n alignSelf: \"left\",\r\n paddingHorizontal: 15,\r\n paddingVertical: 8,\r\n marginRight: 0,\r\n borderColor: \"#262626\",\r\n backgroundColor: \"#595959\",\r\n width: web ? \"fit-content\" : \"auto\",\r\n },\r\n ]}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={{\r\n color: \"#fff\",\r\n fontSize: android ? 12 : 15,\r\n }}\r\n >\r\n Start a New Loan\r\n </CustomText>\r\n </TouchableOpacity>\r\n );\r\n };\r\n const ButtonReviewLoan = ({ loanId }) => {\r\n return (\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => {\r\n try {\r\n setContextDetails({\r\n ...contextDetails,\r\n loanId: loanId || -99,\r\n });\r\n let params = {\r\n FormId: 34,\r\n loanId: loanId || -99,\r\n Path: \"Home\",\r\n GoToNav: 10,\r\n };\r\n (navigation || props[\"navigation\"]).navigate(\"Home\", params);\r\n if (web) updateWebURL(params);\r\n handleLogDWCallToActionEventParent(\r\n \"Review Loan Disclosures\",\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n Email: \"\",\r\n LoanId: loanId || -99,\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n }\r\n );\r\n } catch (e) {}\r\n }}\r\n style={[\r\n {\r\n paddingHorizontal: 5,\r\n paddingVertical: 10,\r\n color: \"#fff\",\r\n alignSelf: \"stretch\",\r\n alignItems: \"center\",\r\n borderRadius: 5,\r\n borderWidth: 1,\r\n borderColor: \"#262626\",\r\n backgroundColor: \"#595959\",\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n ...generateBoxShadowStyle(2, 4, \"black\", 0.3, 3, 8, \"black\"),\r\n },\r\n web\r\n ? { boxShadow: \"#0000003d 0px 4px 10px 1px\", cursor: \"pointer\" }\r\n : {},\r\n ]}\r\n >\r\n <CustomText style={{ color: \"#fff\", fontSize: 12 }} bold={true}>\r\n Review Loan Disclosures\r\n </CustomText>\r\n </TouchableOpacity>\r\n );\r\n };\r\n\r\n const ButtonMakePayment = (row) => {\r\n return (\r\n <View\r\n style={{\r\n flex: 1,\r\n marginTop: 10,\r\n width: 170,\r\n alignSelf: \"flex-end\",\r\n marginBottom: -10,\r\n marginRight: 10,\r\n }}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={{\r\n flex: 1,\r\n flexDirection: \"row\",\r\n alignItems: \"stretch\",\r\n backgroundColor: \"#5bb15b\",\r\n borderRadius: 20,\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n borderWidth: 1,\r\n borderColor: \"#29916c\",\r\n }}\r\n onPress={() => {\r\n // setContextDetails({ ...contextDetails, loanId: row[\"LoanId\"] });\r\n // navigate(\"Home\");\r\n handleLogDWCallToActionEventParent(\r\n \"Continue\",\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n Email: \"\",\r\n LoanId: row[\"LoanId\"],\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n }\r\n );\r\n // updateWebURL({\r\n // // FormId: FormId,\r\n // loanId: row[\"LoanId\"],\r\n // Path: \"Home\",\r\n // });\r\n if (web) {\r\n // setFloatPage({\r\n // path: \"Calculator\",\r\n // option: {\r\n // From: \"CalculatorMenu\",\r\n // type: item[\"type\"],\r\n // LoanId,\r\n // style: {\r\n // minHeight: \"75vh\",\r\n // },\r\n // },\r\n // });\r\n } else {\r\n (navigation || props[\"navigation\"]).navigate(\"Payment\", {\r\n From: \"DashBoard\",\r\n LoanId: row[\"LoanId\"],\r\n });\r\n }\r\n }}\r\n >\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <CustomText style={{ color: \"#fff\", marginTop: -2 }} bold={true}>\r\n Make a Payment\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n </View>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <View style={styles.webWrapper}>\r\n <View\r\n style={[\r\n {\r\n // width: !isMobileWeb && web ? 700 : \"100%\",\r\n width:\r\n isMobileWeb && web\r\n ? \"inherit\"\r\n : web\r\n ? 700\r\n : isSmallScreen && !web\r\n ? 700\r\n : \"100%\",\r\n backgroundColor: \"lightgray\",\r\n flexDirection: \"row\",\r\n marginTop: 25,\r\n justifyContent: isMobileWeb ? \"flex-start\" : \"space-between\",\r\n alignItems: isMobileWeb && web ? \"left\" : \"center\",\r\n borderRadius: 5,\r\n height: isMobileWeb && web ? \"fit-content\" : \"auto\",\r\n },\r\n ]}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={0.7}\r\n style={[\r\n {\r\n fontSize: android ? 18 : !isMobileWeb && web ? 25 : 15,\r\n paddingVertical: 10,\r\n paddingHorizontal: 10,\r\n flex: 1,\r\n flexDirection: \"row\",\r\n },\r\n web\r\n ? {\r\n display: \"flex\",\r\n cursor: \"pointer\",\r\n }\r\n : {},\r\n ]}\r\n onPress={() => {\r\n setCurrentLoanDetails((prevCurrentLoanDetails) => {\r\n const { isExpand } = prevCurrentLoanDetails;\r\n return { ...prevCurrentLoanDetails, isExpand: !isExpand };\r\n });\r\n }}\r\n >\r\n <View\r\n style={[\r\n {\r\n alignSelf: \"center\",\r\n justifyContent: \"center\",\r\n marginRight: 5,\r\n minWidth: web ? 18 : 11,\r\n },\r\n web ? { alignSelf: \"center\", display: \"flex\" } : {},\r\n ]}\r\n >\r\n <FontAwesome\r\n name={`chevron-${\r\n !currentLoanDetails[\"isExpand\"] ? \"right\" : \"down\"\r\n }`}\r\n size={web ? 18 : 11}\r\n />\r\n </View>\r\n <CustomText\r\n style={{\r\n fontSize: !isMobileWeb && web ? 25 : 15,\r\n }}\r\n bold={true}\r\n >\r\n Current & Previous Loans{\" \"}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n backgroundColor: \"#6aa0d7\",\r\n borderRadius: 4,\r\n // color: \"rgb(66, 126, 203)\",\r\n color: \"black\",\r\n fontSize: 12,\r\n minWidth: 20,\r\n maxWidth: 20,\r\n minHeight: web ? 25 : 20,\r\n display: \"flex\",\r\n overflow: \"hidden\",\r\n flex: 1,\r\n justifyContent: \"center\",\r\n alignSelf: \"center\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n }}\r\n bold={true}\r\n >\r\n {(recentLoans || []).length}\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n {currentLoanDetails[\"isExpand\"] && (\r\n <View\r\n style={[\r\n web && !isMobileWeb && { flexFlow: \"wrap\" },\r\n { marginBottom: 30 },\r\n ]}\r\n >\r\n {[...recentLoans].slice(0, loanCount).map((row, index) => {\r\n const isLoanProductSelected = Boolean(row[\"LoanProgram\"]);\r\n return (\r\n <View\r\n key={index}\r\n style={[\r\n styles.container,\r\n generateBoxShadowStyle(2, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n {\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n justifyContent: \"space-between\",\r\n width: web ? 340 : isSmallScreen && !web ? 450 : \"96%\",\r\n marginRight:\r\n (isMobileWeb || !web) && width < 451 ? 0 : 20,\r\n alignSelf:\r\n (isMobileWeb || !web) && width < 451\r\n ? \"center\"\r\n : \"stretch\",\r\n },\r\n ]}\r\n >\r\n <View>\r\n <View style={styles.property}>\r\n <CustomText\r\n bold={true}\r\n style={{\r\n fontSize: web ? 18 : 14,\r\n color: \"#323337\",\r\n lineHeight: 20,\r\n maxWidth: [\"Funded\", \"Closed\"].includes(\r\n row[\"LoanStatus\"]\r\n )\r\n ? \"100%\"\r\n : \"45%\",\r\n }}\r\n >\r\n {`${row[\"SubjectAddress\"]}${\r\n row[\"SubjectCity\"]\r\n ? `${\"\\n\"}${row[\"SubjectCity\"]}`\r\n : \"\"\r\n } ${row[\"SubjectState\"]}${\r\n row[\"SubjectZip\"] ? ` ${row[\"SubjectZip\"]}` : \"\"\r\n }`}\r\n </CustomText>\r\n {Number(row[\"Active\"]) === 1 &&\r\n (row[\"LoanStatus\"] === \"Closed\" ||\r\n row[\"LoanStatus\"] === \"Funded\" ? (\r\n // <ButtonMakePayment {...row} /> //enable once payment page is done and route to payment page\r\n <></>\r\n ) : (\r\n <View\r\n style={{\r\n flexDirection: \"column\",\r\n width: web ? \"55%\" : \"50%\",\r\n }}\r\n >\r\n {/* If LoanStatus is not Closed, set justifyContent to \"center\"\r\n You can modify the condition or the value based on your specific logic */}\r\n <ButtonContinue {...row} />\r\n\r\n {row[\"EsignExist\"] && (\r\n <ButtonReviewLoan loanId={row[\"LoanId\"]} />\r\n )}\r\n </View>\r\n ))}\r\n </View>\r\n <View style={{ paddingHorizontal: 15 }}>\r\n {loanKeyDetails.map(\r\n ({ label, key, check = false }, index) => {\r\n return (\r\n <Fragment key={key}>\r\n {isLoanProductSelected || !check ? (\r\n <View style={styles.row}>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 16 : 14,\r\n flex: 1.3,\r\n }}\r\n bold={true}\r\n >\r\n {label}\r\n </CustomText>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 16 : 14,\r\n flex: 2,\r\n }}\r\n >\r\n {row[key]}\r\n </CustomText>\r\n </View>\r\n ) : (\r\n <></>\r\n )}\r\n </Fragment>\r\n );\r\n }\r\n )}\r\n {row[\"DMCServicer\"] == 1 &&\r\n row[\"LoanStatus\"] === \"Funded\" && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n padding: 8,\r\n backgroundColor: \"#dce8f4\",\r\n borderRadius: 5,\r\n marginVertical: 10,\r\n }}\r\n >\r\n <View style={{ flex: 1.3 }}>\r\n <CustomText\r\n style={{\r\n fontSize: web ? 16 : 14,\r\n flex: 1.2,\r\n }}\r\n bold={true}\r\n >\r\n Payment Information:\r\n </CustomText>\r\n </View>\r\n <View style={{ flex: 2 }}>\r\n <View style={[styles[\"paymentRow\"]]}>\r\n <CustomText\r\n style={[styles[\"paymentRowCellOne\"]]}\r\n bold={true}\r\n >\r\n Due date:\r\n </CustomText>\r\n <CustomText\r\n bold\r\n style={[styles[\"paymentRowCellTwo\"]]}\r\n >\r\n {row[\"paymentDueDate\"]}\r\n </CustomText>\r\n </View>\r\n <View style={[styles[\"paymentRow\"]]}>\r\n <CustomText\r\n style={[styles[\"paymentRowCellOne\"]]}\r\n bold={true}\r\n >\r\n Amount:\r\n </CustomText>\r\n <CustomText\r\n bold\r\n style={[styles[\"paymentRowCellTwo\"]]}\r\n >\r\n {row[\"paymentAmount\"]}\r\n </CustomText>\r\n </View>\r\n <View style={[styles[\"paymentRow\"]]}>\r\n <CustomText\r\n style={[styles[\"paymentRowCellOne\"]]}\r\n bold={true}\r\n >\r\n Remaining Term:\r\n </CustomText>\r\n <CustomText\r\n bold\r\n style={[styles[\"paymentRowCellTwo\"]]}\r\n >\r\n {row[\"paymentsRemaining\"]}\r\n </CustomText>\r\n </View>\r\n <View style={[styles[\"paymentRow\"]]}>\r\n <CustomText\r\n style={[styles[\"paymentRowCellOne\"]]}\r\n bold={true}\r\n >\r\n Balance:\r\n </CustomText>\r\n <CustomText\r\n bold\r\n style={[styles[\"paymentRowCellTwo\"]]}\r\n >\r\n {row[\"remainingBalance\"]}\r\n </CustomText>\r\n </View>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n style={[\r\n {\r\n marginVertical: 5,\r\n paddingHorizontal: 10,\r\n paddingVertical: 5,\r\n flex: 1,\r\n color: \"#fff\",\r\n alignSelf: \"flex-start\",\r\n alignItems: \"center\",\r\n borderRadius: 5,\r\n borderWidth: 1,\r\n borderColor: \"#4f77a9\",\r\n backgroundColor: \"#5b8bc8\",\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n ...generateBoxShadowStyle(\r\n 2,\r\n 4,\r\n \"black\",\r\n 0.3,\r\n 3,\r\n 8,\r\n \"black\"\r\n ),\r\n },\r\n web\r\n ? {\r\n boxShadow: \"#0000003d 0px 4px 10px 1px\",\r\n }\r\n : {},\r\n ]}\r\n onPress={() => {\r\n if (web) {\r\n setFloatPage({\r\n path: \"Payment\",\r\n option: {\r\n From: \"DashBoard\",\r\n LoanId: row[\"LoanId\"],\r\n SessionId,\r\n UserId: 0,\r\n style: {\r\n minHeight: \"75vh\",\r\n },\r\n },\r\n });\r\n } else {\r\n (\r\n navigation || props[\"navigation\"]\r\n ).navigate(\"Payment\", {\r\n From: \"DashBoard\",\r\n LoanId: row[\"LoanId\"],\r\n SessionId,\r\n UserId: 0,\r\n });\r\n }\r\n }}\r\n >\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <CustomText\r\n style={{\r\n color: \"#fff\",\r\n marginTop: -2,\r\n fontSize: 12,\r\n }}\r\n bold={true}\r\n >\r\n Make a Payment\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n )}\r\n <View>\r\n <View style={{ marginBottom: 5 }}>\r\n <CustomText\r\n style={{ fontSize: web ? 16 : 14, flex: 1 }}\r\n bold={true}\r\n >\r\n Loan Officer:\r\n </CustomText>\r\n </View>\r\n <View style={{ marginBottom: 5 }}>\r\n <CustomText style={{ fontSize: 16 }}>\r\n {row[\"LoName\"]}\r\n </CustomText>\r\n </View>\r\n <View style={{ marginBottom: 5 }}>\r\n <CustomText\r\n style={{ fontSize: web ? 16 : 14, flex: 1 }}\r\n onPress={() => {\r\n let phoneNumber = row[\"LoPhone\"]\r\n ?.replaceAll(\"-\", \"\")\r\n .replaceAll(\"(\", \"\")\r\n .replaceAll(\")\", \"\")\r\n .replaceAll(\" \", \"\");\r\n\r\n phoneNumber = `tel://${phoneNumber}`;\r\n\r\n Linking.canOpenURL(phoneNumber)\r\n .then((supported) => {\r\n if (!supported) {\r\n console.log(\r\n \"Phone number is not available\"\r\n );\r\n } else {\r\n return Linking.openURL(phoneNumber);\r\n }\r\n })\r\n .catch((err) => console.log(err));\r\n }}\r\n >\r\n <MaterialCommunityIcons\r\n name=\"phone\"\r\n size={web ? 20 : 18}\r\n />\r\n <CustomText style={{ color: \"#2971bf\", flex: 1 }}>\r\n {\" \"}\r\n {row[\"LoPhone\"]}\r\n </CustomText>\r\n </CustomText>\r\n </View>\r\n <View style={{ marginBottom: 5 }}>\r\n <CustomText\r\n style={{ fontSize: web ? 16 : 14, flex: 1 }}\r\n onPress={() => {\r\n let subject = \"\",\r\n body = \"\";\r\n const emailUrl = `mailto:${\r\n row[\"LoEmail\"]\r\n }?subject=${encodeURIComponent(\r\n subject\r\n )}&body=${encodeURIComponent(body)}`;\r\n Linking.openURL(emailUrl);\r\n }}\r\n >\r\n <MaterialCommunityIcons\r\n name=\"email\"\r\n size={web ? 20 : 18}\r\n />\r\n <CustomText style={{ color: \"#2971bf\", flex: 1 }}>\r\n {\" \"}\r\n {row[\"LoEmail\"]}\r\n </CustomText>\r\n </CustomText>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n );\r\n })}\r\n <TouchableOpacity\r\n activeOpacity={0.7}\r\n style={[\r\n generateBoxShadowStyle(3, 3, \"black\", 0.2, 3, 8, \"black\"),\r\n {\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n justifyContent: \"space-between\",\r\n width: web ? 340 : isSmallScreen && !web ? 450 : \"96%\",\r\n marginRight: (isMobileWeb || !web) && width < 451 ? 0 : 20,\r\n alignSelf:\r\n (isMobileWeb || !web) && width < 451 ? \"center\" : \"stretch\",\r\n minHeight: 460,\r\n maxHeight: !web ? 475 : \"auto\",\r\n backgroundColor: \"#F2F2F2\",\r\n paddingVertical:\r\n (isMobileWeb || !web) && width < 451 ? \"18%\" : \"10%\",\r\n paddingHorizontal:\r\n !web && width < 451 ? \"20%\" : isMobileWeb ? \"16%\" : \"8%\",\r\n alignItems: \"center\",\r\n borderWidth: 1.5,\r\n borderColor: \"#e4e6e9\",\r\n borderRadius: 6,\r\n marginTop: 20,\r\n },\r\n ]}\r\n onPress={() => {\r\n handleLogDWCallToActionEventParent(\r\n \"Start a New Loan Application\",\r\n \"fnLogDWCallToActionEvent\",\r\n \"Borrower Loan Application\",\r\n {\r\n SessionId,\r\n Email: \"\",\r\n LoanId: 0,\r\n LoanOfficerId: web\r\n ? queryStringToObject(window.location?.href || \"\")[\r\n \"loanOfficerId\"\r\n ] ||\r\n contextDetails.RecentLoId ||\r\n 0\r\n : contextDetails.RecentLoId || 0,\r\n Email: contextDetails[\"Email\"],\r\n }\r\n );\r\n handleStartNewLoan(\r\n navigation || props[\"navigation\"],\r\n SessionId,\r\n userName,\r\n contextDetails,\r\n setContextDetails\r\n );\r\n }}\r\n >\r\n <View\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n alignSelf: \"center\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n backgroundColor: \"#e6e6e6\",\r\n borderColor: \"#c9c9ca\",\r\n borderRadius: 10,\r\n borderWidth: 2,\r\n paddingHorizontal: 30,\r\n }}\r\n >\r\n <Entypo name=\"plus\" size={35} />\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 30, textAlign: \"center\" }}\r\n >\r\n Start a New Loan\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n </View>\r\n <>\r\n {recentLoans.length - loanCount > 0 && (\r\n <View\r\n style={{\r\n flex: 1,\r\n marginTop: 10,\r\n width: 240,\r\n }}\r\n >\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n onPress={() => setLoanCount(loanCount + 10)}\r\n style={[\r\n {\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n color: \"#fff\",\r\n borderRadius: 5,\r\n borderWidth: 1,\r\n borderColor: \"#4f77a9\",\r\n backgroundColor: \"#5b8bc8\",\r\n shadowColor: \"rgba(0, 0, 0, 0.30)\",\r\n shadowRadius: 10,\r\n shadowOpacity: 0.8,\r\n ...generateBoxShadowStyle(2, 4, \"black\", 0.3, 3, 8, \"black\"),\r\n },\r\n web ? { boxShadow: \"#0000003d 0px 4px 10px 1px\" } : {},\r\n ]}\r\n >\r\n <View style={{ flex: 1, flexDirection: \"row\" }}>\r\n <CustomText\r\n style={{ color: \"#fff\", marginTop: -3 }}\r\n bold={true}\r\n >\r\n View {recentLoans.length - loanCount} more previous loans...\r\n </CustomText>\r\n </View>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n </>\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n borderWidth: 1.5,\r\n borderColor: \"#e4e6e9\",\r\n borderRadius: 6,\r\n alignSelf: \"flex-start\",\r\n backgroundColor: \"#fff\",\r\n paddingBottom: 20,\r\n marginTop: 20,\r\n alignSelf: \"center\",\r\n position: \"relative\",\r\n },\r\n property: {\r\n marginHorizontal: 15,\r\n marginVertical: 10,\r\n paddingHorizontal: 10,\r\n paddingVertical: 10,\r\n borderRadius: 6,\r\n backgroundColor: \"lightgray\",\r\n marginBottom: 20,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n },\r\n buttonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 25,\r\n height: 35,\r\n paddingVertical: web ? 10 : 8,\r\n paddingHorizontal: 10,\r\n marginTop: 20,\r\n //paddingTop: web ? \"5px\" : null,\r\n alignSelf: \"flex-start\",\r\n },\r\n paymentRow: { flexDirection: \"row\", justifyContent: \"space-between\" },\r\n paymentRowCellOne: {\r\n fontSize: web ? 13 : 11,\r\n },\r\n paymentRowCellTwo: {\r\n fontSize: web ? 14 : 12,\r\n },\r\n row: { flexDirection: \"row\", marginBottom: 10 },\r\n webWrapper: web\r\n ? {\r\n // display: \"grid\",\r\n // \"grid-template-columns\": \"repeat(auto-fit,minmax(345px,1fr))\",\r\n // \"grid-gap\": \"10\",\r\n // width: \"calc(100% - 256px)\",\r\n width: isMobileWeb ? \"100%\" : 740,\r\n display: isMobileWeb ? \"flex\" : \"inline-flex\",\r\n \"flex-wrap\": \"wrap\",\r\n marginBottom: 20,\r\n }\r\n : {},\r\n});\r\n\r\nexport default RecentLoans;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { BackHandler, Dimensions, TouchableOpacity, View } from \"react-native\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport ExternalSourceViewer from \"../accessories/ExternalSourceViewer\";\r\nimport Footer from \"../accessories/footer\";\r\nimport FontAwesome from \"react-native-vector-icons/FontAwesome\";\r\nimport ArrowSpinner from \"../accessories/ArrowSpinner\";\r\n\r\nconst Payment = (props) => {\r\n let LoanId = 0;\r\n const { navigation, route, setFloatPage = () => {}, LoanId: pLoanId } = props;\r\n const { params = {} } = route;\r\n const { From, SessionId, UserId = 0, LoanId: iLoanId } = params;\r\n const [processingStatus, setProcessingStatus] = useState(\"pageLoading\");\r\n LoanId = pLoanId || iLoanId;\r\n\r\n const handleBackAction = () => {\r\n navigation?.navigate(From || \"DashBoard\", params);\r\n setFloatPage(null);\r\n return true;\r\n };\r\n useEffect(() => {\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n handleBackAction\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n const { width } = Dimensions.get(\"window\"),\r\n isMobileWeb = width <= 480,\r\n // url = __DEV__\r\n // ? `https://www.solutioncenter.biz/Servicing/?LoanId=${LoanId}&SessionId=${SessionId}`\r\n // : `https://www.directmortgage.com/Servicing/?LoanId=${LoanId}&SessionId=${SessionId}`;\r\n url = `https://www.directmortgage.com/Servicing/?LoanId=${LoanId}&SessionId=${SessionId}`;\r\n console.log(url);\r\n\r\n return (\r\n <>\r\n <TouchableOpacity\r\n activeOpacity={1}\r\n // style={{ borderBottomWidth: 1, borderColor: \"#d9d9d9\" }}\r\n >\r\n <CustomText\r\n bold={true}\r\n style={{ paddingVertical: 10, paddingHorizontal: 10 }}\r\n onPress={handleBackAction}\r\n >\r\n {web ? (\r\n <>\r\n <FontAwesome size={16} name=\"close\" color=\"red\" /> Close\r\n </>\r\n ) : (\r\n <>\r\n <FontAwesome name=\"angle-left\" size={16} /> Back\r\n </>\r\n )}\r\n </CustomText>\r\n </TouchableOpacity>\r\n {processingStatus === \"pageLoading\" && (\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n }}\r\n >\r\n <View\r\n style={{\r\n height: web ? 22 : 16,\r\n width: web ? 22 : 16,\r\n }}\r\n >\r\n <ArrowSpinner size={web ? 22 : 16} color=\"#376596\" isSpinner />\r\n </View>\r\n <CustomText bold>{\" Loading...\"}</CustomText>\r\n </View>\r\n )}\r\n <ExternalSourceViewer\r\n url={url}\r\n onLoad={() => {\r\n setProcessingStatus(\"frameLoaded\");\r\n }}\r\n isNeedBack={false}\r\n />\r\n {(!web || isMobileWeb) && (\r\n <Footer\r\n iLoanId={LoanId}\r\n navigate={navigation?.navigate}\r\n From={From}\r\n UserId={UserId}\r\n setFloatPage={setFloatPage}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default Payment;\r\n","import React, { useState, useContext, useEffect, Children } from \"react\";\r\nimport {\r\n View,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Dimensions,\r\n BackHandler,\r\n} from \"react-native\";\r\nimport NavBar from \"../NavBar/NavBar\";\r\nimport {\r\n handleGetEmpDetails,\r\n handleAPI,\r\n handleStartNewLoan,\r\n updateWebURL,\r\n handleLogDWCallToActionEventParent,\r\n log,\r\n removeDuplicates,\r\n handleSessionCheck,\r\n queryStringToObject,\r\n handleUserDetails,\r\n} from \"../accessories/CommonFunctions.js\";\r\nimport CustomText from \"../accessories/CustomText\";\r\nimport DashBoardTable from \"./DashBoardTable\";\r\nimport RecentLoans from \"./RecentLoans\";\r\nimport {\r\n DrawerView,\r\n FloatPage,\r\n Separator,\r\n context,\r\n} from \"../accessories/accessories\";\r\nimport ScrollContainer from \"../accessories/ScrollContainer\";\r\nimport { WebPageView } from \"../accessories/accessories\";\r\nimport LeftNavBar from \"../NavBar/leftNavBar\";\r\nimport { web } from \"../accessories/Platform\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport Footer from \"../accessories/footer\";\r\nimport ShareApp from \"../NavigationBar/ShareApp\";\r\nimport LoanContacts from \"../NavigationBar/LoanContacts\";\r\nimport Settings from \"../NavigationBar/Setting\";\r\nimport CalculatorApp from \"../NavigationBar/Calculator\";\r\nimport CalculatorMenu from \"../accessories/CalculatorMenu\";\r\nimport Payment from \"../Payment/Payment.js\";\r\nlet iRecentLoansCount = -1;\r\nconst isMobileWeb = Dimensions.get(\"window\").width <= 480;\r\n\r\nconst DashBoard = (props) => {\r\n const { contextDetails, setContextDetails } = useContext(context); //Get value from context\r\n const { navigation, userName = \"\" } = contextDetails;\r\n\r\n const SessionId = contextDetails[\"SessionId\"] || props[\"SessionId\"];\r\n const [floatPage, setFloatPage] = useState(null);\r\n const [processingStatus, setProcessingStatus] = useState(null);\r\n const [webPageURL, setWebPageURL] = useState(null);\r\n const [recentLoans, setRecentLoans] = useState(null);\r\n const [WebLoginId, setWebLoginId] = useState(null);\r\n const [screenSize, setScreenSize] = useState(\r\n web ? [window.innerWidth, window.innerHeight] : [0, 0]\r\n );\r\n const [taskDetails, setTaskDetails] = useState({\r\n activeRowData: null,\r\n completeRowData: null,\r\n });\r\n const [UserId, setUserId] = useState(0);\r\n\r\n const navigate = (path, option) => {\r\n updateWebURL({ ...option, Path: path });\r\n (navigation || props[\"navigation\"]).navigate(path, option || {});\r\n };\r\n const handleLogOut = (isClear) => {\r\n handleAPI({\r\n name: \"LogOutSession\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then((response) => {\r\n handleClearState();\r\n if (isClear) AsyncStorage.removeItem(\"Credentials\");\r\n let Path = web ? \"Login\" : \"StartScreen\";\r\n\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, Path };\r\n });\r\n navigate(Path);\r\n })\r\n .catch((err) => console.error(\"Error from LogOutSession ====> \", err));\r\n };\r\n const handleClearState = (isDelate) => {\r\n log(\"State was Cleared\", \"DashBoard\", isDelate);\r\n setWebPageURL(null);\r\n setTaskDetails({\r\n activeRowData: null,\r\n completeRowData: null,\r\n });\r\n setRecentLoans([]);\r\n iRecentLoansCount = -1;\r\n let iContextDetails = contextDetails;\r\n delete iContextDetails[\"firstActiveLoan\"];\r\n if (!isDelate) delete iContextDetails[\"SessionId\"];\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...iContextDetails };\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n const backHandler = BackHandler.addEventListener(\r\n \"hardwareBackPress\",\r\n () => {\r\n return true;\r\n }\r\n );\r\n return () => backHandler.remove();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (SessionId) {\r\n handleGetUserTask(1);\r\n }\r\n }, [SessionId]);\r\n\r\n useEffect(() => {\r\n let { from = \"\", flag = \"\" } = props?.route?.params || {};\r\n if (SessionId && from == \"Home\") {\r\n handleGetUserTask(5);\r\n }\r\n if (flag == \"changeActiveIndex\") {\r\n setProcessingStatus(flag);\r\n }\r\n }, [props]);\r\n\r\n const handleGetUserTask = async (taskPoolCount) => {\r\n setProcessingStatus(\"gettingUserTask\");\r\n log(\"GetUsertasks - taskPoolCount\", taskPoolCount);\r\n\r\n await handleAPI({\r\n name: \"GetUsertasks\",\r\n params: {\r\n SessionId: SessionId,\r\n },\r\n })\r\n .then((response) => {\r\n try {\r\n let data = JSON.parse(response),\r\n activeRowData = data[\"Table\"] || [],\r\n completeRowData = data[\"Table1\"] || [];\r\n if (\r\n (data &&\r\n data[\"Message\"] !== \"An error has occurred.\" &&\r\n JSON.stringify(data) != \"{}\" &&\r\n (completeRowData.length > 0 || activeRowData.length > 0)) ||\r\n taskPoolCount >= 5 ||\r\n iRecentLoansCount === 0\r\n ) {\r\n activeRowData = removeDuplicates(activeRowData, \"TaskAssigned\");\r\n completeRowData = removeDuplicates(completeRowData, \"TaskAssigned\");\r\n\r\n setTaskDetails({\r\n ...{\r\n activeRowData,\r\n completeRowData,\r\n },\r\n });\r\n setProcessingStatus(null);\r\n } else if (taskPoolCount <= 5 && iRecentLoansCount !== 0) {\r\n setTimeout(() => {\r\n handleGetUserTask(taskPoolCount + 1);\r\n }, 3000);\r\n }\r\n } catch (error) {}\r\n })\r\n .catch((error) => {\r\n console.error(\"Error from GetUserTasks ====> \", error);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n // handleClearState();\r\n\r\n handleLogDWCallToActionEventParent(\r\n \"Borrower_DashBoard\",\r\n \"LogDWVisitorsEvent\",\r\n \"Borrower DashBoard\",\r\n { SessionId, Email: \"\" }\r\n );\r\n handleGetRecentLoans();\r\n let iContextDetails = contextDetails;\r\n delete iContextDetails[\"loanId\"];\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...iContextDetails };\r\n });\r\n }, [props]);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n let iUserId = await handleSessionCheck(SessionId, () => {});\r\n setUserId(iUserId);\r\n })();\r\n }, [SessionId]);\r\n\r\n const handleGetRecentLoans = () => {\r\n handleAPI({\r\n name: \"GetWelcomePageDetails\",\r\n params: { SessionId: SessionId },\r\n })\r\n .then((response) => {\r\n response = JSON.parse(response)[\"Table\"];\r\n // response = removeDuplicates(response, \"loanId\");\r\n setRecentLoans(response);\r\n iRecentLoansCount = response.length;\r\n\r\n if (iRecentLoansCount === 0) {\r\n setTaskDetails({\r\n ...{\r\n activeRowData: [],\r\n completeRowData: [],\r\n },\r\n });\r\n } else {\r\n let firstActive = response.filter(\r\n (loanDetails) => Number(loanDetails[\"Active\"]) === 1\r\n );\r\n if (firstActive.length > 0) {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n firstActiveLoan: firstActive[0][\"LoanId\"],\r\n };\r\n });\r\n }\r\n }\r\n })\r\n .catch((err) =>\r\n console.error(\"Error from GetWelcomePageDetails ====> \", err)\r\n );\r\n };\r\n\r\n const prePre = async () => {\r\n try {\r\n let data = await handleGetEmpDetails(SessionId);\r\n\r\n if (data && data[\"Message\"] !== \"An error has occurred.\") {\r\n data = JSON.parse(data);\r\n let userName = data[\"Table4\"][0][\"EmpNum\"],\r\n userType = data[\"Table1\"][0][\"Type\"];\r\n userName = userName.replaceAll(\"undefined\", \"\") || \"\";\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...{ userName, userType } };\r\n });\r\n }\r\n } catch (error) {}\r\n if (web) {\r\n function updateSize() {\r\n // console.log(\"updateSize\");\r\n setScreenSize([window.innerWidth, window.innerHeight]);\r\n }\r\n window.addEventListener(\"resize\", updateSize);\r\n updateSize();\r\n return () => window.removeEventListener(\"resize\", updateSize);\r\n }\r\n };\r\n useEffect(() => {\r\n prePre();\r\n handleGetWebLoginId();\r\n }, [SessionId]);\r\n\r\n const handleGetWebLoginId = async () => {\r\n try {\r\n let iWebLoginId = await handleUserDetails(SessionId);\r\n iWebLoginId = iWebLoginId.split(\"~\");\r\n setWebLoginId(Number(iWebLoginId[6]));\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, Email: iWebLoginId[4] };\r\n });\r\n } catch (error) {}\r\n };\r\n let isSmallScreen =\r\n (web && screenSize[0] > 900) ||\r\n (web && Dimensions.get(\"window\").width > 900);\r\n\r\n return (\r\n <>\r\n <NavBar\r\n setFloatPage={setFloatPage}\r\n WebLoginId={WebLoginId}\r\n handleLogOut={handleLogOut}\r\n isDashBoard={true}\r\n handleClearState={handleClearState}\r\n userName={userName}\r\n navigation={navigation || props[\"navigation\"]}\r\n isSmallScreen={false}\r\n pageIndex={{ page: 0, sunPage: 0 }}\r\n />\r\n <View style={{ flex: 1, flexDirection: \"row\", overflow: \"hidden\" }}>\r\n {isSmallScreen && (\r\n <>\r\n <LeftNavBar\r\n handleLogOut={handleLogOut}\r\n isDashBoard={true}\r\n handleClearState={handleClearState}\r\n navigation={navigation || props[\"navigation\"]}\r\n />\r\n </>\r\n )}\r\n\r\n <>\r\n {webPageURL ? (\r\n <WebPageView url={webPageURL} />\r\n ) : (\r\n <View\r\n style={[\r\n styles.container,\r\n isSmallScreen && {\r\n left: 350,\r\n },\r\n ]}\r\n >\r\n <ScrollContainer\r\n pullDownRefresh={async () => {\r\n handleGetRecentLoans();\r\n await handleGetUserTask(0);\r\n }}\r\n >\r\n <>\r\n <>\r\n <CustomText\r\n bold={true}\r\n style={{ fontSize: 25, marginTop: 10, marginBottom: 5 }}\r\n >\r\n Welcome, {userName}\r\n {userName && \"!\"}\r\n </CustomText>\r\n <CustomText style={{ fontSize: web ? 18 : 15 }}>\r\n Congratulations for going Direct! What would you like to\r\n do next?\r\n </CustomText>\r\n </>\r\n <DashBoardTable\r\n setProcessingStatus={setProcessingStatus}\r\n setWebPageURL={setWebPageURL}\r\n taskDetails={taskDetails}\r\n processingStatus={processingStatus}\r\n navigation={navigation || props[\"navigation\"]}\r\n handleGetUserTask={(taskPoolCount) => {\r\n if ((recentLoans || []).length) {\r\n handleGetUserTask(taskPoolCount);\r\n }\r\n }}\r\n setFloatPage={setFloatPage}\r\n />\r\n <View>\r\n <Separator />\r\n <RecentLoans\r\n // isExpand={\r\n // recentLoans !== null && recentLoans.length === 0\r\n // }\r\n setFloatPage={setFloatPage}\r\n isExpand={\r\n (taskDetails[\"activeRowData\"] || []).length === 0\r\n }\r\n recentLoans={recentLoans || []}\r\n navigation={navigation || props[\"navigation\"]}\r\n />\r\n </View>\r\n </>\r\n </ScrollContainer>\r\n\r\n {!isMobileWeb && web && navigate && (\r\n <View style={{ marginTop: 10, width: 700 }}>\r\n <Footer\r\n setFloatPage={setFloatPage}\r\n iLoanId={\r\n (taskDetails?.activeRowData &&\r\n taskDetails?.activeRowData[0]?.loanid) ||\r\n (taskDetails?.completeRowData &&\r\n taskDetails?.completeRowData[0]?.loanid)\r\n }\r\n navigate={navigate}\r\n From=\"DashBoard\"\r\n UserId={UserId}\r\n userName={userName}\r\n SessionId={SessionId}\r\n />\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n </>\r\n </View>\r\n {(!web || isMobileWeb) && navigate && (\r\n <Footer\r\n iLoanId={\r\n (taskDetails?.activeRowData &&\r\n taskDetails?.activeRowData[0]?.loanid) ||\r\n (taskDetails?.completeRowData &&\r\n taskDetails?.completeRowData[0]?.loanid)\r\n }\r\n navigate={navigate}\r\n From=\"DashBoard\"\r\n UserId={UserId}\r\n userName={userName}\r\n setFloatPage={setFloatPage}\r\n SessionId={SessionId}\r\n />\r\n )}\r\n\r\n {web && floatPage && (\r\n <DrawerView\r\n onClose={() => {\r\n setFloatPage(null);\r\n }}\r\n bodyStyle={\r\n web && !isMobileWeb ? floatPage?.[\"option\"]?.[\"style\"] : {}\r\n }\r\n isShow={floatPage?.[\"path\"] ? true : false}\r\n From=\"DashBoard\"\r\n isSmallScreen={isSmallScreen}\r\n needHeaderContent={true}\r\n body={\r\n floatPage?.[\"path\"] == \"ShareApp\" ? (\r\n <ShareApp\r\n route={{ params: floatPage?.[\"option\"], SessionId }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : floatPage?.[\"path\"] === \"LoanContacts\" ? (\r\n <LoanContacts\r\n from=\"DashBoard\"\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : floatPage?.[\"path\"] === \"Settings\" ? (\r\n <Settings\r\n from=\"DashBoard\"\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : floatPage?.[\"path\"] === \"Calculator\" ? (\r\n <CalculatorApp\r\n From=\"Home\"\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n LoanId={\r\n (taskDetails?.activeRowData &&\r\n taskDetails?.activeRowData[0]?.loanid) ||\r\n (taskDetails?.completeRowData &&\r\n taskDetails?.completeRowData[0]?.loanid)\r\n }\r\n />\r\n ) : floatPage?.[\"path\"] === \"CalculatorMenu\" ? (\r\n <CalculatorMenu\r\n navigation={navigation || props[\"navigation\"]}\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : floatPage?.[\"path\"] === \"Payment\" ? (\r\n <Payment\r\n navigation={navigation || props[\"navigation\"]}\r\n route={{ params: floatPage?.[\"option\"] }}\r\n setFloatPage={setFloatPage}\r\n />\r\n ) : (\r\n floatPage?.[\"body\"] || null\r\n )\r\n }\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flex: 1,\r\n padding: 10,\r\n marginBottom: 10,\r\n marginLeft: 5,\r\n marginRight: 5,\r\n marginTop: -5,\r\n borderRadius: 10,\r\n boxShadow: \"3px 7px 10px 4px rgb(0 0 0 / 8%)\",\r\n },\r\n buttonContainer: {\r\n backgroundColor: \"#1a63ad\",\r\n borderRadius: 5,\r\n borderWidth: 1,\r\n alignSelf: \"flex-start\",\r\n paddingHorizontal: !isMobileWeb && web ? 15 : 5,\r\n paddingVertical: !isMobileWeb && web ? 10 : 6,\r\n marginRight: !isMobileWeb && web ? 0 : 10,\r\n borderColor: \"#262626\",\r\n backgroundColor: \"#595959\",\r\n },\r\n card: {\r\n backgroundColor: \"#f2f2f2\",\r\n padding: 10,\r\n marginBottom: 10,\r\n borderColor: \"#0275d8\",\r\n borderWidth: 1,\r\n borderRadius: 5,\r\n width: 700,\r\n },\r\n row: {\r\n flexDirection: \"row\",\r\n },\r\n column: {\r\n flex: 1,\r\n paddingLeft: 0,\r\n },\r\n label: {\r\n fontSize: 12,\r\n fontWeight: 800,\r\n marginBottom: 2,\r\n },\r\n value: {\r\n fontSize: 14,\r\n },\r\n creditText: {\r\n fontSize: 12,\r\n color: \"red\",\r\n },\r\n});\r\nexport default DashBoard;\r\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\r\nimport {\r\n View,\r\n StyleSheet,\r\n TouchableOpacity,\r\n Image,\r\n ScrollView,\r\n Dimensions,\r\n} from \"react-native\";\r\nimport { LinearGradient } from \"expo-linear-gradient\";\r\nimport CustomText from \"../../accessories/CustomText\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport * as LocalAuthentication from \"expo-local-authentication\";\r\nimport { SafeAreaView } from \"react-native\";\r\nimport { android, ios } from \"../../accessories/Platform\";\r\nimport { context, DrawerView } from \"../../accessories/accessories\";\r\nimport {\r\n generateBoxShadowStyle,\r\n generateFingerprint,\r\n handleAPI,\r\n handleCreateNewSession,\r\n handleGetActiveLoan,\r\n} from \"../../accessories/CommonFunctions\";\r\nimport MaterialIcons from \"react-native-vector-icons/MaterialIcons\";\r\nimport ArrowSpinner from \"../../accessories/ArrowSpinner\";\r\nimport Login from \"../../SignIn/Login\";\r\nimport Signup from \"../../SignUp/Signup\";\r\nimport useKeyboardHeight from \"../../accessories/KeyboardHeight\";\r\nimport packageJson from \"../../../package.json\";\r\nimport { DeviceEventEmitter } from \"react-native\";\r\n// import BottomSheet from \"../../accessories/BottomSlider\";\r\nconst { version, buildVersion } = packageJson;\r\nexport default function StartScreen(props) {\r\n const { setContextDetails } = useContext(context); //Get value from context\r\n const { navigation } = props;\r\n const cardDetails = [\r\n {\r\n label: \"View today’s interest rates\",\r\n paramsObj: {},\r\n },\r\n {\r\n label: \"start a loan application\",\r\n paramsObj: { startNewLoan: true },\r\n },\r\n { label: \"view your loan status\", paramsObj: {} },\r\n { label: \"Make a Payment\", paramsObj: {} },\r\n ];\r\n\r\n const [biometricWebLoginId, setBiometricWebLoginId] = useState(null);\r\n const [tryLoginWithFace, setTryLoginWithFace] = useState(ios);\r\n const [userName, setUserName] = useState(null);\r\n const [drawerDetails, setDrawerDetails] = useState({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n\r\n const navigate = (navigateTo, paramsObj = {}) => {\r\n setContextDetails((prevContextDetails) => {\r\n return { ...prevContextDetails, ...paramsObj, Path: navigateTo };\r\n });\r\n navigation.navigate(navigateTo, { ...paramsObj, biometricWebLoginId });\r\n };\r\n useEffect(() => {\r\n handleSettingsDetails();\r\n\r\n return () => {\r\n setBiometricWebLoginId(null);\r\n };\r\n }, [props]);\r\n\r\n useEffect(() => {\r\n if (!isNaN(parseInt(biometricWebLoginId)) && tryLoginWithFace) {\r\n setTimeout(() => {\r\n handleLoginWithBioMetric();\r\n }, 500);\r\n setTryLoginWithFace(false);\r\n }\r\n }, [biometricWebLoginId]);\r\n\r\n useEffect(() => {\r\n DeviceEventEmitter.addListener(\"URLDataReceived\", ({ data }) => {\r\n // Alert.alert(data);\r\n // console.log('Received data in React Native:', data);\r\n AsyncStorage.setItem(\"LoEmpNum\", data || null);\r\n });\r\n\r\n // let params = {\r\n // Id: 1,\r\n // };\r\n\r\n // handleAPI({\r\n // name: \"GetPublicIPAddress\",\r\n // params: params,\r\n // })\r\n // .then(async (response) => {\r\n // GetLoanOfficerMappingForIP(response);\r\n\r\n // })\r\n // .catch((err) => console.log(\"Error from GetPublicIPAddress ====> \", err));\r\n\r\n fetch(\"https://api.ipify.org?format=json\")\r\n .then((response) => response.json())\r\n .then((data) => {\r\n const ipaddress = data.ip;\r\n GetLoanOfficerMappingForIP(ipaddress);\r\n //console.log('Your public IP address is:', data.ip);\r\n })\r\n .catch((error) => {\r\n console.error(\"Error fetching IP address:\", error);\r\n });\r\n\r\n // Listen for the event sent from AppDelegate\r\n // const subscription = DeviceEventEmitter.addListener('URLDataReceived', ({ data }) => {\r\n // Alert.alert(data);\r\n // console.log('Received data in React Native:', data);\r\n // AsyncStorage.setItem(\"LoEmpNum\", data || null);\r\n // });\r\n\r\n // // Clean up subscription when component unmounts\r\n // return () => subscription.remove();\r\n }, []);\r\n\r\n const GetLoanOfficerMappingForIP = (IpAddress) => {\r\n if (IpAddress) {\r\n let params = {\r\n IPAddress: IpAddress,\r\n };\r\n handleAPI({\r\n name: \"GetLoanOfficerMapping\",\r\n params: params,\r\n })\r\n .then(async (response) => {\r\n AsyncStorage.setItem(\"LoEmpNum\", response || null);\r\n })\r\n .catch((err) =>\r\n console.log(\"Error from GetPublicIPAddress ====> \", err)\r\n );\r\n }\r\n };\r\n const SlideCard = () => {\r\n const [sliderState, setSliderState] = useState({ currentPage: 0 }),\r\n { width } = Dimensions.get(\"window\"),\r\n scrollViewRef = useRef(null),\r\n { currentPage: pageIndex } = sliderState;\r\n\r\n useEffect(() => {\r\n const intervalId = setInterval(() => {\r\n setSliderState(({ currentPage: prevPage }) => {\r\n let newIndex = prevPage + 1 === cardDetails.length ? 0 : prevPage + 1;\r\n\r\n scrollViewRef.current.scrollTo({\r\n animated: newIndex !== 0,\r\n x: width * newIndex,\r\n y: 0,\r\n });\r\n\r\n return {\r\n currentPage: prevPage,\r\n };\r\n });\r\n }, 5000);\r\n return () => {\r\n clearInterval(intervalId);\r\n };\r\n }, []);\r\n\r\n const handleSliderPage = (event) => {\r\n const { currentPage } = sliderState;\r\n const { x } = event.nativeEvent.contentOffset;\r\n\r\n let indexOfNextScreen = Math.round(x / width);\r\n\r\n if (indexOfNextScreen !== pageIndex) {\r\n indexOfNextScreen =\r\n indexOfNextScreen === cardDetails.length ? 0 : indexOfNextScreen;\r\n\r\n setSliderState(({ currentPage: prevPage }) => {\r\n let newIndex = prevPage + 1 === cardDetails.length ? 0 : prevPage + 1;\r\n return {\r\n currentPage: newIndex,\r\n };\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <View style={{ height: 160 }}>\r\n <SafeAreaView style={{ flex: 1 }}>\r\n <ScrollView\r\n style={[generateBoxShadowStyle(2, 6, \"black\", 0.2, 3, 8, \"black\")]}\r\n horizontal={true}\r\n scrollEventThrottle={16}\r\n pagingEnabled={true}\r\n showsHorizontalScrollIndicator={false}\r\n onScroll={handleSliderPage}\r\n ref={scrollViewRef}\r\n >\r\n {cardDetails.map((card, index) => (\r\n <View key={index} style={[{ width }]}>\r\n <View\r\n style={[\r\n styles.card,\r\n { flexDirection: \"row\" },\r\n generateBoxShadowStyle(2, 6, \"black\", 0.2, 3, 8, \"black\"),\r\n ]}\r\n >\r\n <CustomText\r\n fontName=\"RobotoRegular\"\r\n bold={true}\r\n onPress={() => {\r\n navigate(\"Login\", card[\"paramsObj\"]);\r\n }}\r\n style={[styles.label]}\r\n >\r\n {card.label}\r\n </CustomText>\r\n </View>\r\n </View>\r\n ))}\r\n </ScrollView>\r\n <View style={[styles.paginationWrapper]}>\r\n {Array.from(Array(cardDetails.length).keys()).map((key, index) => (\r\n <View\r\n style={[\r\n styles.paginationDots,\r\n {\r\n opacity: pageIndex === index ? 1 : 0.5,\r\n backgroundColor:\r\n index === pageIndex\r\n ? \"rgba(255, 255, 255, 0.80)\"\r\n : \"#66BBE9\",\r\n shadowColor: \"rgba(0, 0, 0, 0.25)\",\r\n },\r\n generateBoxShadowStyle(-2, 2, \"black\", 0.3, 3, 4, \"black\"),\r\n ]}\r\n key={index}\r\n />\r\n ))}\r\n </View>\r\n </SafeAreaView>\r\n </View>\r\n );\r\n };\r\n\r\n const handleLoginWithBioMetric = async () => {\r\n try {\r\n const enroll = await LocalAuthentication.isEnrolledAsync(),\r\n iBiometricWebLoginId = biometricWebLoginId;\r\n if (enroll) {\r\n const biometricAuth = await LocalAuthentication.authenticateAsync({\r\n promptMessage: `Confirm your ${ios ? \"Face\" : \"Touch\"} ID`,\r\n disableDeviceFallback: true,\r\n cancelLabel: \"Cancel\",\r\n });\r\n\r\n if (biometricAuth.success) {\r\n setBiometricWebLoginId(\"Loading\");\r\n\r\n let SessionId = await handleCreateNewSession(iBiometricWebLoginId);\r\n let { activeLoanCount = 1, activeLoanId = -999 } =\r\n (await handleGetActiveLoan(SessionId)) || {};\r\n\r\n if (activeLoanCount == 1) {\r\n setContextDetails((prevContextDetails) => {\r\n return {\r\n ...prevContextDetails,\r\n ...{ loanId: activeLoanId },\r\n };\r\n });\r\n navigate(\"Home\", {\r\n userName,\r\n SessionId,\r\n loanId: activeLoanId,\r\n });\r\n } else {\r\n navigate(\"DashBoard\", {\r\n SessionId,\r\n });\r\n }\r\n }\r\n setBiometricWebLoginId(iBiometricWebLoginId);\r\n }\r\n } catch (error) {\r\n console.error(\"Error form handleLoginWithBioMetric ===> \", error);\r\n }\r\n };\r\n\r\n const handleSettingsDetails = async () => {\r\n try {\r\n let visitorIdOld = JSON.parse(\r\n (await AsyncStorage.getItem(\"visitorId\")) || null\r\n ),\r\n visitorId = null;\r\n if (visitorIdOld) {\r\n visitorId = visitorIdOld;\r\n } else {\r\n visitorId = generateFingerprint();\r\n visitorId = `D-${visitorId.replaceAll(\"-\", \"\")}`;\r\n await AsyncStorage.setItem(\r\n \"visitorId\",\r\n JSON.stringify(visitorId) || null\r\n );\r\n }\r\n\r\n let bioMetricLoginDetails =\r\n (await AsyncStorage.getItem(\"bioMetricLoginDetails\")) || \"[]\";\r\n bioMetricLoginDetails = JSON.parse(bioMetricLoginDetails);\r\n\r\n if (bioMetricLoginDetails.length) {\r\n const { WebloginId = \"\", UserName = \"\" } = bioMetricLoginDetails[0];\r\n\r\n WebloginId && setBiometricWebLoginId(WebloginId);\r\n UserName && setUserName(UserName);\r\n } else {\r\n handleAPI({\r\n name: \"GetSettingsForWebLoginAccount\",\r\n params: { WebLoginId: 0, BioMetric: visitorId },\r\n })\r\n .then(async function (response) {\r\n response = JSON.parse(response)[\"Table\"];\r\n\r\n await AsyncStorage.setItem(\r\n \"bioMetricLoginDetails\",\r\n JSON.stringify(response)\r\n );\r\n\r\n if (response.length > 0) response = response[0];\r\n if (response[\"BioMetricId\"])\r\n setBiometricWebLoginId(response[\"WebloginId\"]);\r\n else setBiometricWebLoginId(null);\r\n\r\n if (response[\"UserName\"]) setUserName(response[\"UserName\"]);\r\n else setUserName(null);\r\n })\r\n .catch(function (err) {\r\n console.error(\r\n `Error from GetSettingsForWebLoginAccount ====> ${err}`\r\n );\r\n });\r\n }\r\n\r\n // visitorId = \"D-1942454078\";\r\n } catch (error) {}\r\n };\r\n const handleCloseDrawer = () => {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n };\r\n const keyboardHeight = useKeyboardHeight() || 0;\r\n const handleDrawerView = (\r\n displayComponent,\r\n option = {},\r\n loginType = null\r\n ) => {\r\n let body = (\r\n <>\r\n {displayComponent == \"Login\" ? (\r\n <Login\r\n loginType={loginType}\r\n from=\"startScreen\"\r\n route={{\r\n params: option,\r\n }}\r\n performAction={(path, option) => {\r\n if ([\"DashBoard\", \"Home\"].includes(path)) {\r\n handleCloseDrawer();\r\n navigate(path, option);\r\n } else {\r\n setTimeout(() => {\r\n handleDrawerView(path, option);\r\n }, 0);\r\n }\r\n }}\r\n />\r\n ) : displayComponent == \"Signup\" ? (\r\n <Signup\r\n navigation={navigation}\r\n loginType={loginType}\r\n from=\"startScreen\"\r\n route={{\r\n params: option,\r\n }}\r\n performAction={(path, option) => {\r\n if ([\"DashBoard\", \"Home\"].includes(path)) {\r\n handleCloseDrawer();\r\n navigate(path, option);\r\n } else {\r\n setTimeout(() => {\r\n handleDrawerView(path, option);\r\n }, 0);\r\n }\r\n }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n </>\r\n );\r\n setDrawerDetails({\r\n bodyName: android ? \"android\" : displayComponent,\r\n isShow: true,\r\n body,\r\n onClose: () => {\r\n handleCloseDrawer();\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n <LinearGradient\r\n colors={[\"#66BBE9\", \"#3478CC\", \"#204C86\"]}\r\n style={{\r\n alignItems: \"center\",\r\n flex: 1,\r\n // justifyContent: \"space-evenly\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n <Image\r\n style={{ width: 304, height: 76, marginTop: 100 }}\r\n source={require(\"../../../assets/DMLarge1.png\")}\r\n // source={require(\"../../../assets/StartScreenDM.png\")}\r\n />\r\n <CustomText\r\n style={{\r\n fontSize: 13,\r\n width: 300,\r\n color: \"#4d4d4d\",\r\n textAlign: \"right\",\r\n paddingHorizontal: 15,\r\n marginTop: -25,\r\n }}\r\n >\r\n {version}\r\n </CustomText>\r\n <View\r\n style={{\r\n width: \"80%\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-evenly\",\r\n flex: 1,\r\n }}\r\n >\r\n <View>\r\n <View\r\n style={[\r\n {\r\n flexDirection: \"row\",\r\n // width: \"80%\",\r\n },\r\n !userName && {\r\n alignSelf: \"center\",\r\n },\r\n ]}\r\n >\r\n <CustomText\r\n bold={true}\r\n fontName=\"segoeUIBold\"\r\n style={{\r\n paddingBottom: 12,\r\n paddingTop: 12,\r\n color: \"#FFFFFF\",\r\n fontSize: 40,\r\n }}\r\n >\r\n <>\r\n {userName ? (\r\n <>\r\n Welcome Back\r\n {\",\\n\"}\r\n {userName}\r\n {\".\"}\r\n </>\r\n ) : (\r\n \"Welcome!\"\r\n )}\r\n </>\r\n </CustomText>\r\n </View>\r\n\r\n <View\r\n style={{\r\n minHeight: 100,\r\n alignSelf: \"center\",\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n {biometricWebLoginId && (\r\n <TouchableOpacity onPress={handleLoginWithBioMetric}>\r\n <View>\r\n {biometricWebLoginId === \"Loading\" ? (\r\n <View style={{ height: 50 }}>\r\n <ArrowSpinner\r\n isSpinner={true}\r\n size={48}\r\n color=\"#fff\"\r\n duration={1500}\r\n style={{ height: 50 }}\r\n />\r\n </View>\r\n ) : (\r\n <>\r\n {android ? (\r\n <MaterialIcons\r\n name=\"fingerprint\"\r\n color=\"#fff\"\r\n size={48}\r\n />\r\n ) : (\r\n <>\r\n <View>\r\n <Image\r\n resizeMode=\"stretch\"\r\n style={{\r\n width: 60,\r\n height: 60,\r\n }}\r\n source={require(\"../../../assets/FaceId.png\")}\r\n />\r\n </View>\r\n </>\r\n )}\r\n </>\r\n )}\r\n </View>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View style={{ marginTop: -30 }}>\r\n <CustomText\r\n fontName=\"segoeUIBold\"\r\n style={{\r\n paddingVertical: 12,\r\n color: \"#FFFFFF\",\r\n fontSize: 17,\r\n textTransform: \"capitalize\",\r\n alignSelf: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n Getting a mortgage just got easier\r\n </CustomText>\r\n\r\n <View style={{ width: \"100%\" }}>\r\n <View style={styles.container}>\r\n <View>\r\n <TouchableOpacity\r\n activeOpacity={0.8}\r\n onPress={() => {\r\n handleDrawerView(\"Login\");\r\n }}\r\n >\r\n <Image\r\n style={{\r\n width: 70,\r\n height: 70,\r\n }}\r\n source={require(\"../../../assets/CreateAccount.png\")}\r\n />\r\n </TouchableOpacity>\r\n <CustomText\r\n fontName=\"RobotoRegular\"\r\n onPress={() => {\r\n handleDrawerView(\"Login\");\r\n }}\r\n style={{\r\n color: \"#FFFFFF\",\r\n textAlign: \"center\",\r\n fontSize: 14,\r\n }}\r\n >\r\n Create an{\"\\n\"}Account\r\n </CustomText>\r\n </View>\r\n\r\n <View>\r\n <TouchableOpacity\r\n activeOpacity={0.8}\r\n onPress={() => {\r\n handleDrawerView(\"Login\");\r\n }}\r\n >\r\n <Image\r\n style={{\r\n width: 70,\r\n height: 70,\r\n }}\r\n source={require(\"../../../assets/AboutYou.png\")}\r\n />\r\n </TouchableOpacity>\r\n <CustomText\r\n fontName=\"RobotoRegular\"\r\n onPress={() => {\r\n handleDrawerView(\"Login\");\r\n }}\r\n style={{\r\n color: \"#FFFFFF\",\r\n textAlign: \"center\",\r\n fontSize: 14,\r\n }}\r\n >\r\n eSign{\"\\n\"}Documents\r\n </CustomText>\r\n </View>\r\n\r\n <View>\r\n <TouchableOpacity\r\n activeOpacity={0.8}\r\n onPress={() => {\r\n handleDrawerView(\"Login\", {}, \"secureDoc\");\r\n }}\r\n >\r\n <Image\r\n style={{\r\n width: 70,\r\n height: 70,\r\n }}\r\n source={require(\"../../../assets/UploadDoc.png\")}\r\n />\r\n </TouchableOpacity>\r\n <CustomText\r\n fontName=\"RobotoRegular\"\r\n onPress={() => {\r\n handleDrawerView(\"Login\", {}, \"secureDoc\");\r\n }}\r\n style={{\r\n color: \"#FFFFFF\",\r\n textAlign: \"center\",\r\n fontSize: 14,\r\n }}\r\n >\r\n Upload{\"\\n\"}Documents\r\n </CustomText>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={{\r\n flexDirection: \"row\",\r\n justifyContent: \"center\",\r\n position: \"absolute\",\r\n width: \"100%\",\r\n top: \"43%\",\r\n }}\r\n >\r\n <Image\r\n resizeMode=\"stretch\"\r\n source={require(\"../../../assets/FrameMenuLine.png\")}\r\n />\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n activeOpacity={0.7}\r\n style={[\r\n {\r\n backgroundColor: \"white\",\r\n borderRadius: 8,\r\n borderWidth: 2,\r\n borderColor: \"#1A3971\",\r\n width: \"60%\",\r\n alignSelf: \"center\",\r\n alignItems: \"center\",\r\n paddingVertical: 5,\r\n },\r\n generateBoxShadowStyle(\r\n -2,\r\n ios ? 8 : 20,\r\n \"black\",\r\n 0.2,\r\n 3,\r\n 4,\r\n \"black\"\r\n ),\r\n ]}\r\n onPress={() => {\r\n handleDrawerView(\"Login\");\r\n }}\r\n >\r\n <CustomText\r\n fontName=\"RobotoRegular\"\r\n onPress={() => {\r\n handleDrawerView(\"Login\");\r\n }}\r\n style={{\r\n paddingVertical: 8,\r\n // paddingHorizontal: 60,\r\n color: \"#204C86\",\r\n fontSize: 15,\r\n }}\r\n >\r\n Get Started\r\n </CustomText>\r\n </TouchableOpacity>\r\n </View>\r\n </LinearGradient>\r\n <DrawerView\r\n bodyName={drawerDetails[\"bodyName\"]}\r\n bodyStyle={{\r\n ...{ paddingHorizontal: 0 },\r\n }}\r\n isShow={drawerDetails[\"isShow\"]}\r\n body={\r\n <View\r\n style={{\r\n maxHeight: Dimensions.get(\"screen\").height / 1.4,\r\n minHeight: Dimensions.get(\"screen\").height / 1.4,\r\n flex: 1,\r\n flexDirection: \"row\",\r\n }}\r\n >\r\n {drawerDetails[\"body\"]}\r\n </View>\r\n }\r\n onClose={() => {\r\n setDrawerDetails({\r\n isShow: false,\r\n body: <></>,\r\n onClose: () => {},\r\n });\r\n }}\r\n From=\"StartScreen\"\r\n />\r\n </>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n marginTop: 20,\r\n zIndex: 1,\r\n },\r\n\r\n card: {\r\n marginVertical: 10,\r\n alignSelf: \"center\",\r\n backgroundColor: \"#598cca\",\r\n borderRadius: 14,\r\n overflow: \"hidden\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n marginHorizontal: 6,\r\n width: 250,\r\n },\r\n shadowProp: {\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: -2, height: 3 },\r\n shadowOpacity: 0.3,\r\n shadowRadius: 3,\r\n },\r\n label: {\r\n color: \"#fff\",\r\n fontSize: 18,\r\n // fontFamily: \"Roboto\",\r\n // fontWeight: \"800\",\r\n textTransform: \"capitalize\",\r\n textAlign: \"center\",\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n paddingTop: 32,\r\n paddingBottom: 32,\r\n },\r\n paginationWrapper: {\r\n justifyContent: \"center\",\r\n // alignItems: \"center\",\r\n flexDirection: \"row\",\r\n },\r\n paginationDots: {\r\n height: 12,\r\n width: 12,\r\n borderRadius: 12 / 2,\r\n backgroundColor: \"#0898A0\",\r\n marginRight: 10,\r\n },\r\n});\r\n","import React from \"react\";\r\nimport {\r\n Alert,\r\n Keyboard,\r\n SafeAreaView,\r\n StatusBar,\r\n TouchableOpacity,\r\n} from \"react-native\";\r\nimport { useEffect, useState } from \"react\";\r\nimport GlobalStyles from \"./GlobalStyles\";\r\nimport Home from \"./components/LoanApplication/Home\";\r\nimport Login from \"./components/SignIn/Login\";\r\nimport LoginWeb from \"./components/SignIn/LoginWeb\";\r\nimport Signup from \"./components/SignUp/Signup\";\r\nimport SignupWeb from \"./components/SignUp/SignupWeb\";\r\nimport { NavigationContainer } from \"@react-navigation/native\";\r\nimport DashBoard from \"./components/DashBoard/DashBoard\";\r\nimport { createNativeStackNavigator } from \"@react-navigation/native-stack\";\r\nimport { context } from \"./components/accessories/accessories\";\r\nimport ShareApp from \"./components/NavigationBar/ShareApp\";\r\nimport {\r\n checkForUpdates,\r\n handleCheckAlreadyLogIn,\r\n queryStringToObject,\r\n updateWebURL,\r\n} from \"./components/accessories/CommonFunctions\";\r\nimport { web } from \"./components/accessories/Platform.js\";\r\nimport ExternalSourceViewer from \"./components/accessories/ExternalSourceViewer\";\r\nimport DocumentViewer from \"./components/LoanApplication/DocumentUpload/DocumentViewer\";\r\nimport * as Font from \"expo-font\";\r\nimport {\r\n setJSExceptionHandler,\r\n setNativeExceptionHandler,\r\n} from \"react-native-exception-handler\";\r\nimport Plaid from \"./components/Plaid/Plaid\";\r\nimport StartScreen from \"./components/LoanApplication/StartScreen/StartScreen\";\r\nimport { LinearGradient } from \"expo-linear-gradient\";\r\nimport Calculator from \"./components/NavigationBar/Calculator\";\r\nimport * as SplashScreen from \"expo-splash-screen\";\r\nimport LoanContacts from \"./components/NavigationBar/LoanContacts\";\r\nimport Settings from \"./components/NavigationBar/Setting\";\r\nimport EvilIcons from \"react-native-vector-icons/EvilIcons\";\r\nimport CalculatorMenu from \"./components/accessories/CalculatorMenu\";\r\nimport useKeyboardHeight from \"./components/accessories/KeyboardHeight\";\r\nimport Payment from \"./components/Payment/Payment.js\";\r\n\r\nconst errorHandler = (e, isFatal) => {\r\n if (isFatal) {\r\n Alert.alert(\r\n \"Unexpected error occurred\",\r\n `\r\n Error: ${e.name} - ${e.message}\r\n `,\r\n [\r\n {\r\n text: \"Ok\",\r\n onPress: () => {\r\n // RNRestart.Restart();\r\n },\r\n },\r\n ]\r\n );\r\n } else {\r\n console.log(e);\r\n }\r\n};\r\n\r\nif (!web && !__DEV__) {\r\n setJSExceptionHandler(errorHandler, false);\r\n\r\n setNativeExceptionHandler((errorString) => {\r\n Alert.alert(\r\n \"Unexpected native error occurred\",\r\n `\r\n Error: ${errorString}\r\n `,\r\n [\r\n {\r\n text: \"Ok\",\r\n onPress: () => {\r\n // RNRestart.Restart();\r\n },\r\n },\r\n ]\r\n );\r\n });\r\n}\r\n\r\nconst Stack = createNativeStackNavigator();\r\nSplashScreen.preventAutoHideAsync();\r\n\r\n// setTimeout(() => SplashScreen.hideAsync(), 2000);\r\n\r\nexport default function App(props) {\r\n const [contextDetails, setContextDetails] = useState({\r\n Path: web ? \"Login\" : \"StartScreen\",\r\n appDownloadFlag: false,\r\n loanProductStatus: null,\r\n });\r\n const [title, setTitle] = useState(\"Login\");\r\n const [fontsLoaded, setFontsLoaded] = useState(false);\r\n\r\n const loadFont = async () => {\r\n await Font.loadAsync({\r\n OpenSansRegular: require(\"./assets/fonts/OpenSansRegular.ttf\"),\r\n OpenSansBold: require(\"./assets/fonts/OpenSansBold.ttf\"),\r\n OpenSansItalic: require(\"./assets/fonts/OpenSans-Italic.ttf\"),\r\n OpenBoldItalic: require(\"./assets/fonts/OpenSans-BoldItalic.ttf\"),\r\n PlayFair: require(\"./assets/fonts/Playfair_9pt_SemiCondensed-Regular.ttf\"),\r\n Regular: require(\"./assets/fonts/Helvetica-Regular.otf\"),\r\n RobotoRegular: require(\"./assets/fonts/Roboto-Regular.ttf\"),\r\n RobotoMedium: require(\"./assets/fonts/Roboto-Medium.ttf\"),\r\n Inter: require(\"./assets/fonts/Inter.ttf\"),\r\n segoeUI: require(\"./assets/fonts/segoe-ui.ttf\"),\r\n segoeUIBold: require(\"./assets/fonts/segoe-ui-bold.ttf\"),\r\n segoeUIBold700: require(\"./assets/fonts/SegoeUIBold.ttf\"),\r\n });\r\n\r\n try {\r\n await new Promise((resolve) => setTimeout(resolve, 2000));\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n setFontsLoaded(true);\r\n SplashScreen.hideAsync();\r\n }\r\n };\r\n\r\n const keyboardHeight = useKeyboardHeight() || null;\r\n\r\n useEffect(() => {\r\n checkForUpdates(true);\r\n const prePare = async () => {\r\n if (web) {\r\n let obj = queryStringToObject(window.location?.href || \"\"),\r\n iTitle = obj[\"Path\"] || \"Login\";\r\n obj = { ...obj, loanId: obj[\"loanId\"] || obj[\"loanid\"] };\r\n if (obj[\"Path\"] === \"Signup\") obj[\"Path\"] = \"Login\";\r\n else if (obj[\"Path\"] === \"Login\") {\r\n iTitle = \"Log In\";\r\n updateWebURL();\r\n } else if (obj[\"Path\"] === \"Signup\") iTitle = \"Sign Up\";\r\n else if (obj[\"Path\"] === \"DashBoard\" || \"Home\" === obj[\"Path\"]) {\r\n iTitle = \"Borrower Welcome\";\r\n } else if (\r\n obj[\"Path\"] === \"DocumentViewer\" ||\r\n \"DocumentViewer\" === obj[\"Path\"]\r\n ) {\r\n iTitle = \"Document Viewer\";\r\n }\r\n\r\n obj && setContextDetails({ ...contextDetails, ...obj });\r\n setTitle(iTitle);\r\n setFontsLoaded(true);\r\n document.getElementById(\"root\").style.minWidth = \"350px\";\r\n } else {\r\n let logInDetails = (await handleCheckAlreadyLogIn()) || {};\r\n\r\n let { SessionId, UserDisplayName } = logInDetails;\r\n SessionId &&\r\n setContextDetails({\r\n ...contextDetails,\r\n ...{ Path: \"DashBoard\", SessionId },\r\n });\r\n loadFont();\r\n }\r\n };\r\n prePare();\r\n }, [props]);\r\n\r\n if (!fontsLoaded) {\r\n return null;\r\n }\r\n\r\n return (\r\n <context.Provider value={{ contextDetails, setContextDetails }}>\r\n <NavigationContainer>\r\n <LinearGradient\r\n colors={\r\n contextDetails[\"Path\"] === \"StartScreen\"\r\n ? [\"#66BBE9\", \"#66BBE9\", \"#204C86\"]\r\n : [\"#fff\", \"#fff\", \"#f0f0f0\"]\r\n }\r\n style={{\r\n flex: 1,\r\n }}\r\n >\r\n <SafeAreaView style={[GlobalStyles.droidSafeArea]}>\r\n <StatusBar\r\n animated={true}\r\n backgroundColor={\r\n contextDetails[\"Path\"] === \"StartScreen\" ? \"#66BBE9\" : \"#fff\"\r\n }\r\n barStyle=\"dark-content\"\r\n showHideTransition=\"slide\"\r\n />\r\n\r\n <Stack.Navigator\r\n initialRouteName={contextDetails[\"Path\"]}\r\n screenOptions={{\r\n title: title,\r\n headerShown: false,\r\n }}\r\n >\r\n <Stack.Screen name=\"StartScreen\" component={StartScreen} />\r\n <Stack.Screen name=\"Login\" component={web ? LoginWeb : Login} />\r\n <Stack.Screen\r\n name=\"Signup\"\r\n component={web ? SignupWeb : Signup}\r\n />\r\n <Stack.Screen name=\"DashBoard\" component={DashBoard} />\r\n <Stack.Screen name=\"Home\" component={Home} />\r\n <Stack.Screen name=\"Pdf\" component={ExternalSourceViewer} />\r\n <Stack.Screen name=\"DocumentViewer\" component={DocumentViewer} />\r\n <Stack.Screen name=\"Plaid\" component={Plaid} />\r\n <Stack.Screen name=\"ShareApp\" component={ShareApp} />\r\n <Stack.Screen name=\"Calculator\" component={Calculator} />\r\n <Stack.Screen name=\"Payment\" component={Payment} />\r\n <Stack.Screen name=\"CalculatorMenu\" component={CalculatorMenu} />\r\n <Stack.Screen name=\"LoanContacts\" component={LoanContacts} />\r\n <Stack.Screen name=\"Settings\" component={Settings} />\r\n </Stack.Navigator>\r\n </SafeAreaView>\r\n </LinearGradient>\r\n </NavigationContainer>\r\n {keyboardHeight && (\r\n <TouchableOpacity\r\n onPress={() => {\r\n Keyboard.dismiss();\r\n }}\r\n style={{\r\n backgroundColor: \"#fff\",\r\n borderRadius: 50,\r\n borderWidth: 1,\r\n position: \"absolute\",\r\n bottom: keyboardHeight,\r\n right: 3,\r\n width: 26,\r\n height: 25,\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <EvilIcons name=\"chevron-down\" size={25} />\r\n </TouchableOpacity>\r\n )}\r\n </context.Provider>\r\n );\r\n}\r\n","import { registerRootComponent } from 'expo';\r\n\r\nimport App from './App';\r\n\r\n// registerRootComponent calls AppRegistry.registerComponent('main', () => App);\r\n// It also ensures that whether you load the app in Expo Go or in a native build,\r\n// the environment is set up appropriately\r\nregisterRootComponent(App);\r\n","var map = {\n\t\"./af\": 6735,\n\t\"./af.js\": 6735,\n\t\"./ar\": 9343,\n\t\"./ar-dz\": 5300,\n\t\"./ar-dz.js\": 5300,\n\t\"./ar-kw\": 7947,\n\t\"./ar-kw.js\": 7947,\n\t\"./ar-ly\": 5557,\n\t\"./ar-ly.js\": 5557,\n\t\"./ar-ma\": 3030,\n\t\"./ar-ma.js\": 3030,\n\t\"./ar-ps\": 9327,\n\t\"./ar-ps.js\": 9327,\n\t\"./ar-sa\": 2971,\n\t\"./ar-sa.js\": 2971,\n\t\"./ar-tn\": 8662,\n\t\"./ar-tn.js\": 8662,\n\t\"./ar.js\": 9343,\n\t\"./az\": 1672,\n\t\"./az.js\": 1672,\n\t\"./be\": 9027,\n\t\"./be.js\": 9027,\n\t\"./bg\": 9107,\n\t\"./bg.js\": 9107,\n\t\"./bm\": 8932,\n\t\"./bm.js\": 8932,\n\t\"./bn\": 6218,\n\t\"./bn-bd\": 3617,\n\t\"./bn-bd.js\": 3617,\n\t\"./bn.js\": 6218,\n\t\"./bo\": 4527,\n\t\"./bo.js\": 4527,\n\t\"./br\": 3345,\n\t\"./br.js\": 3345,\n\t\"./bs\": 7930,\n\t\"./bs.js\": 7930,\n\t\"./ca\": 454,\n\t\"./ca.js\": 454,\n\t\"./cs\": 3984,\n\t\"./cs.js\": 3984,\n\t\"./cv\": 4646,\n\t\"./cv.js\": 4646,\n\t\"./cy\": 1372,\n\t\"./cy.js\": 1372,\n\t\"./da\": 2978,\n\t\"./da.js\": 2978,\n\t\"./de\": 2193,\n\t\"./de-at\": 6365,\n\t\"./de-at.js\": 6365,\n\t\"./de-ch\": 9737,\n\t\"./de-ch.js\": 9737,\n\t\"./de.js\": 2193,\n\t\"./dv\": 872,\n\t\"./dv.js\": 872,\n\t\"./el\": 9534,\n\t\"./el.js\": 9534,\n\t\"./en-au\": 8450,\n\t\"./en-au.js\": 8450,\n\t\"./en-ca\": 6996,\n\t\"./en-ca.js\": 6996,\n\t\"./en-gb\": 3864,\n\t\"./en-gb.js\": 3864,\n\t\"./en-ie\": 9472,\n\t\"./en-ie.js\": 9472,\n\t\"./en-il\": 300,\n\t\"./en-il.js\": 300,\n\t\"./en-in\": 7078,\n\t\"./en-in.js\": 7078,\n\t\"./en-nz\": 472,\n\t\"./en-nz.js\": 472,\n\t\"./en-sg\": 8696,\n\t\"./en-sg.js\": 8696,\n\t\"./eo\": 3550,\n\t\"./eo.js\": 3550,\n\t\"./es\": 9311,\n\t\"./es-do\": 3080,\n\t\"./es-do.js\": 3080,\n\t\"./es-mx\": 7334,\n\t\"./es-mx.js\": 7334,\n\t\"./es-us\": 4336,\n\t\"./es-us.js\": 4336,\n\t\"./es.js\": 9311,\n\t\"./et\": 8067,\n\t\"./et.js\": 8067,\n\t\"./eu\": 8831,\n\t\"./eu.js\": 8831,\n\t\"./fa\": 7981,\n\t\"./fa.js\": 7981,\n\t\"./fi\": 7479,\n\t\"./fi.js\": 7479,\n\t\"./fil\": 757,\n\t\"./fil.js\": 757,\n\t\"./fo\": 9510,\n\t\"./fo.js\": 9510,\n\t\"./fr\": 8573,\n\t\"./fr-ca\": 6805,\n\t\"./fr-ca.js\": 6805,\n\t\"./fr-ch\": 4170,\n\t\"./fr-ch.js\": 4170,\n\t\"./fr.js\": 8573,\n\t\"./fy\": 926,\n\t\"./fy.js\": 926,\n\t\"./ga\": 203,\n\t\"./ga.js\": 203,\n\t\"./gd\": 2975,\n\t\"./gd.js\": 2975,\n\t\"./gl\": 6890,\n\t\"./gl.js\": 6890,\n\t\"./gom-deva\": 4234,\n\t\"./gom-deva.js\": 4234,\n\t\"./gom-latn\": 7577,\n\t\"./gom-latn.js\": 7577,\n\t\"./gu\": 5804,\n\t\"./gu.js\": 5804,\n\t\"./he\": 5377,\n\t\"./he.js\": 5377,\n\t\"./hi\": 9401,\n\t\"./hi.js\": 9401,\n\t\"./hr\": 2435,\n\t\"./hr.js\": 2435,\n\t\"./hu\": 2728,\n\t\"./hu.js\": 2728,\n\t\"./hy-am\": 8093,\n\t\"./hy-am.js\": 8093,\n\t\"./id\": 6666,\n\t\"./id.js\": 6666,\n\t\"./is\": 5187,\n\t\"./is.js\": 5187,\n\t\"./it\": 2667,\n\t\"./it-ch\": 6334,\n\t\"./it-ch.js\": 6334,\n\t\"./it.js\": 2667,\n\t\"./ja\": 2414,\n\t\"./ja.js\": 2414,\n\t\"./jv\": 9359,\n\t\"./jv.js\": 9359,\n\t\"./ka\": 8740,\n\t\"./ka.js\": 8740,\n\t\"./kk\": 9521,\n\t\"./kk.js\": 9521,\n\t\"./km\": 1679,\n\t\"./km.js\": 1679,\n\t\"./kn\": 8554,\n\t\"./kn.js\": 8554,\n\t\"./ko\": 686,\n\t\"./ko.js\": 686,\n\t\"./ku\": 5965,\n\t\"./ku-kmr\": 2785,\n\t\"./ku-kmr.js\": 2785,\n\t\"./ku.js\": 5965,\n\t\"./ky\": 4780,\n\t\"./ky.js\": 4780,\n\t\"./lb\": 6950,\n\t\"./lb.js\": 6950,\n\t\"./lo\": 9434,\n\t\"./lo.js\": 9434,\n\t\"./lt\": 3681,\n\t\"./lt.js\": 3681,\n\t\"./lv\": 2552,\n\t\"./lv.js\": 2552,\n\t\"./me\": 8473,\n\t\"./me.js\": 8473,\n\t\"./mi\": 862,\n\t\"./mi.js\": 862,\n\t\"./mk\": 1555,\n\t\"./mk.js\": 1555,\n\t\"./ml\": 3174,\n\t\"./ml.js\": 3174,\n\t\"./mn\": 6863,\n\t\"./mn.js\": 6863,\n\t\"./mr\": 566,\n\t\"./mr.js\": 566,\n\t\"./ms\": 2215,\n\t\"./ms-my\": 4959,\n\t\"./ms-my.js\": 4959,\n\t\"./ms.js\": 2215,\n\t\"./mt\": 8830,\n\t\"./mt.js\": 8830,\n\t\"./my\": 9336,\n\t\"./my.js\": 9336,\n\t\"./nb\": 8113,\n\t\"./nb.js\": 8113,\n\t\"./ne\": 4005,\n\t\"./ne.js\": 4005,\n\t\"./nl\": 2699,\n\t\"./nl-be\": 2796,\n\t\"./nl-be.js\": 2796,\n\t\"./nl.js\": 2699,\n\t\"./nn\": 9700,\n\t\"./nn.js\": 9700,\n\t\"./oc-lnc\": 9495,\n\t\"./oc-lnc.js\": 9495,\n\t\"./pa-in\": 1217,\n\t\"./pa-in.js\": 1217,\n\t\"./pl\": 8807,\n\t\"./pl.js\": 8807,\n\t\"./pt\": 9221,\n\t\"./pt-br\": 9895,\n\t\"./pt-br.js\": 9895,\n\t\"./pt.js\": 9221,\n\t\"./ro\": 9162,\n\t\"./ro.js\": 9162,\n\t\"./ru\": 7991,\n\t\"./ru.js\": 7991,\n\t\"./sd\": 4518,\n\t\"./sd.js\": 4518,\n\t\"./se\": 4197,\n\t\"./se.js\": 4197,\n\t\"./si\": 56,\n\t\"./si.js\": 56,\n\t\"./sk\": 7025,\n\t\"./sk.js\": 7025,\n\t\"./sl\": 69,\n\t\"./sl.js\": 69,\n\t\"./sq\": 1961,\n\t\"./sq.js\": 1961,\n\t\"./sr\": 5820,\n\t\"./sr-cyrl\": 250,\n\t\"./sr-cyrl.js\": 250,\n\t\"./sr.js\": 5820,\n\t\"./ss\": 7806,\n\t\"./ss.js\": 7806,\n\t\"./sv\": 2833,\n\t\"./sv.js\": 2833,\n\t\"./sw\": 9018,\n\t\"./sw.js\": 9018,\n\t\"./ta\": 1830,\n\t\"./ta.js\": 1830,\n\t\"./te\": 2102,\n\t\"./te.js\": 2102,\n\t\"./tet\": 8711,\n\t\"./tet.js\": 8711,\n\t\"./tg\": 2615,\n\t\"./tg.js\": 2615,\n\t\"./th\": 8373,\n\t\"./th.js\": 8373,\n\t\"./tk\": 3277,\n\t\"./tk.js\": 3277,\n\t\"./tl-ph\": 6249,\n\t\"./tl-ph.js\": 6249,\n\t\"./tlh\": 7413,\n\t\"./tlh.js\": 7413,\n\t\"./tr\": 6726,\n\t\"./tr.js\": 6726,\n\t\"./tzl\": 9131,\n\t\"./tzl.js\": 9131,\n\t\"./tzm\": 5683,\n\t\"./tzm-latn\": 2174,\n\t\"./tzm-latn.js\": 2174,\n\t\"./tzm.js\": 5683,\n\t\"./ug-cn\": 4984,\n\t\"./ug-cn.js\": 4984,\n\t\"./uk\": 3778,\n\t\"./uk.js\": 3778,\n\t\"./ur\": 2753,\n\t\"./ur.js\": 2753,\n\t\"./uz\": 4345,\n\t\"./uz-latn\": 7383,\n\t\"./uz-latn.js\": 7383,\n\t\"./uz.js\": 4345,\n\t\"./vi\": 8201,\n\t\"./vi.js\": 8201,\n\t\"./x-pseudo\": 7395,\n\t\"./x-pseudo.js\": 7395,\n\t\"./yo\": 3168,\n\t\"./yo.js\": 3168,\n\t\"./zh-cn\": 5680,\n\t\"./zh-cn.js\": 5680,\n\t\"./zh-hk\": 9536,\n\t\"./zh-hk.js\": 9536,\n\t\"./zh-mo\": 5088,\n\t\"./zh-mo.js\": 5088,\n\t\"./zh-tw\": 2867,\n\t\"./zh-tw.js\": 2867\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb\"] = self[\"webpackChunkweb\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [851], () => (__webpack_require__(7352)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["From","getQueryString","SessionId","createLinkToken","_ref","_asyncToGenerator","response","fetch","method","mode","headers","Accept","ok","Error","json","error","console","apply","arguments","Plaid","props","_props$handleFrameNav","handleFrameNavigation","_props$handleOptionPr","handleOptionPress","_props$details","details","_props$handleSaveLoan","handleSaveLoanInformation","_props$isBankAccountL","isBankAccountLinked","sandbox","__DEV__","webhook","_useContext","useContext","context","contextDetails","setContextDetails","_useState","useState","_useState2","_slicedToArray","transactionDetails","setTransactionDetails","_useState3","payrollIncomePublicToken","bankIncomePublicToken","user_token","payroll_income","bank_income","_useState4","bankDetails","setBankDetails","_useState5","liabilitiesPublicToken","liabilities","_useState6","Liabilities","setLiabilities","_useState7","_useState8","identity","setIdentity","_useState9","public_token","access_token","asset_report_token","assets","_useState10","Assets","setAssets","_useState11","_useState12","balance","setBalance","_useState13","_useState14","processingStatus","setProcessingStatus","_useState15","_objectSpread","client_name","country_codes","language","products","availableProducts","isCompleted","publicKey","env","client_id","secret","env_url","_useState16","plaidDetails","setPlaidDetails","_useState17","_useState18","userDetails","setUserDetails","_useState19","_useState20","isLoading","setIsLoading","_useState21","_useState22","plaidStatus","setPlaidStatus","_useState23","_useState24","linkId","setLnkId","useEffect","then","_useState25","primaryMessage","secondaryMessage","_useState26","status","setStatus","_useState27","_useState28","uniqueId","setUniqueId","_useState29","concat","_useState30","requiredProducts","getElementPosition","element","top","left","offsetTop","offsetLeft","offsetParent","web","iUniqueId","handleInsertPlaidId","openPlaid","plaidElement","document","querySelector","setTimeout","styleElement","createElement","divPosition","getElementById","innerHTML","head","appendChild","click","style","height","length","handleAPI","name","params","LoanId","EmpId","CustId","log","handleLoadStart","handleLoad","handleEvent","opacity","remove","isClickedAllow","capitalizeFLetter","string","toUpperCase","slice","handleGetAccessToken","handleGetBankDetails","handleAssetsWebHooks","_ref2","publicToken","iId","iName","strXML","uid","handleCheckAssetsData","_x","_x2","_x3","navigate","path","option","updateWebURL","Path","handleLogOut","catch","err","poolCount","UniqueId","JSON","parse","result","isAssetPullCompleted","pulledAssetCount","iStatus","_toConsumableArray","_jsx","_Fragment","stringify","includes","handleSuccess","_ref3","metadata","metaData","_x4","_x5","handleGetAPIData","_ref4","URL","iRequest","trim","_x6","_x7","_ref5","purpose","requestOptions","institution_id","initial_products","filter","item","options","user","client_user_id","iPlaidDetails","iAvailableProducts","unAvailableProducts","error_message","split","replaceAll","join","indexOf","showProducts","iPlaidStatus","map","index","product","iItem","link_token","handleGetTransaction","_ref6","count","iTransactionDetails","handleCheckData","_ref7","userName","loanId","override_password","income_verification","income_source_types","days_requested","Math","random","toString","iResponse","iBankDetails","data","tryAgain","color","forEach","iIndex","eval","downLoanFile","row","dataStr","encodeURIComponent","dlAnchorElem","setAttribute","body","removeChild","renderLogin","PlaidLink","display","clientName","onLoad","onEvent","onSuccess","className","token","children","PlaidAuthenticator","PlaidStatus","_jsxs","View","flexDirection","paddingTop","flex","CustomText","fontSize","marginBottom","bold","marginTop","Icon","onPress","marginRight","size","cursor","marginLeft","ArrowSpinner","isMobileWeb","Dimensions","get","width","ScrollContainer","backgroundImage","require","minHeight","backgroundSize","backgroundColor","backgroundPosition","Image","position","resizeMode","source","alignItems","justifyContent","alignContent","styles","Wrapper","marginVertical","IconButton","window","location","origin","parent","href","e","title","buttonType","alignSelf","reload","paddingVertical","bottom","Linking","openURL","TouchableOpacity","container","borderRadius","padding","boxShadow","StyleSheet","create","paddingBottom","paddingHorizontal","overflow","marginHorizontal","WebView","originWhitelist","uri","onMessage","event","nativeEvent","type","javaScriptEnabled","domStorageEnabled","_ref$style","_ref$isSpinner","isSpinner","_ref$duration","duration","iDuration","spinValue","useRef","Animated","Value","current","startSpinnerAnimation","setValue","timing","toValue","easing","Easing","linear","useNativeDriver","start","spin","interpolate","inputRange","outputRange","transform","rotate","FontAwesome","analytics","_ref$requestOptions","_ref$apiName","apiName","url","Object","keys","key","_params$key","_params$key$toString","host","replace","handleUserDetails","handleSessionCheck","response_","handleGetEmpDetails","FormatPhoneLogin","PhoneNo","Number","p","exec","handleOpenURL","canOpenURL","Alert","alert","validateEmail","text","test","msg","handleCreateLoanOnly","navigation","sessionid","empid","EventId","formatCurrency","value","_parseFloat","floatCount","undefined","num","parseFloat","toFixed","numParts","dollars","cents","sign","abs","isNaN","val","roundNumber","number","decimals","newnumber","parseInt","i","cleanValue","sVal","numberWithCommas","x","default_","_window$location","finalQueryString","NewKey","regex","RegExp","ActualQueryString","NewQueryString","startPosi","keylen","Querylen","substring","qs","returnValue","queryStringToObject","queryString","URLSearchParams","_ref8","_ref9","_x8","_x9","_updateWebURL","flag","_window$location2","search","exception","_ref27","entries","_ref28","set","delete","newUrl","pathname","history","replaceState","getQueryStringURL","removeDuplicates","array","property","uniqueValues","obj","formatDateTimeNew","date","currentDate","Date","currentYear","getFullYear","_date$split","_date$split2","month","day","year","getMonth","parsedMonth","parsedDay","isValidMonth","isValidDay","padStart","getDate","formatSSN","SSN","_SSN","handleStartNewLoan","sortByKey","sort","a","b","localeCompare","sortByKeyNumber","arr","asc","numA","numB","groupByKey","input","reduce","acc","currentValue","groupKey","push","Name","subMenu","Id","install","handleTrackGA4Events","_ref10","eventName","eventOption","handleCheckObj","gtag","logEvent","_x10","_x11","isFloat","n","_ref11","_x12","_x13","handleGetBrowserName","tem","ua","navigator","userAgent","M","match","appName","appVersion","splice","handleLogDWCallToActionEventParent","_ref12","Buttontext","PageTitle","detailsJson","currentPage","_window","_window$parent","_window2","_window2$parent","DeviceId","AsyncStorage","getItem","PageLoadId","PageURL","device","IPAddress","ParentId","GLO_PageLoadId","Browser","setItem","_x14","_x15","_x16","_x17","_x18","handleGetButtonText","loginFrom","documentURI","handleGetStoredCredential","_ref13","Credentials","AutoRedirectExpiryDate","getTime","removeItem","handleCreateNewSession","_ref14","WebLoginId","_x19","handleSetStoredCredential","logDetails","UserDisplayName","EmailOutside","Emailoutside","CellPhone","UserName","UserType","setDate","objectToStore","AutoRedirect","handleCheckAlreadyLogIn","_ref15","sessionId","getNextNoYear","Array","from","_","nextYear","label","handleGetZipCodeDetails","_ref16","zipCode","city","state","Zipcode","XMLParser","parseFromString","_x20","handleOpenPageURL","Width","Height","win","open","focus","updateScreenSize","generateFingerprint","android","ios","hash","charCodeAt","hashString","getTimezoneOffset","getInitials","word","charAt","getObjectsWithKeyword","keyword","objectsWithKeyword","detail","toLowerCase","contactDetails","values","generateBoxShadowStyle","xOffset","yOffset","shadowColorIos","shadowOpacity","shadowRadius","elevation","shadowColorAndroid","shadowColor","shadowOffset","capitalizeFirstLetter","str","handleGetPlatformName","isIOS","MSStream","isAndroid","calculateAge","birthDate","moment","diff","message","handleOpenScanDocFile","_ref17","docid","ScanDocId","ScandocId","GatherId","fileName","_x21","_x22","handleStructuredClone","handleGetSubjectPropertyAddress","_ref19","_response$contactinfo","_response$contactinfo2","subjectaddress","subjectAddress","_response$contactinfo3","subjectcity","subjectCity","_response$contactinfo4","subjectstate","subjectState","_response$contactinfo5","subjectzip","subjectZip","_response$contactinfo6","ssn","_response$contactinfo7","firstname","_response$contactinfo8","lastname","_response$contactinfo9","PhoneNumber","_x23","handleGetActiveLoan","_ref20","_parseXMLArr","_parseXMLArr$","parseXMLArr","activeLoanCount","loanData","activeLoanId","_x24","handleSelectLoanProgram","_ref21","callBack","_x25","WrappedTextView","_ref22","maxLength","isDate","dateStr","datePat","matchArray","calculateEmploymentYears","EmpFrom","EmpTo","date1","date2","months","d1","d2","monthDiff","GetYearDiff","convertToArrayCategory","categories","ranges","min","max","_loop","range","some","Set","testSSN","getKeyByValue","object","_Object$entries$find","find","_ref23","_ref24","formatPercentage","prefix","floatValue","checkForUpdates","_ref25","isPrompt","latestVersion","packageJson","showUpdatePrompt","startUpdate","_x26","_ref26","storeUrl","supported","BackHandler","exitApp","_props$style","italic","PlayFair","rockWell","_props$fontName","fontName","fontFamily","webStyle","Text","CustomTextInput","_iValue$toString","onChangeText","placeholder","_props$isCurrency","isCurrency","keyboardType","secureTextEntry","_props$onBlur","border","onBlur","_props$onKeyPress","onKeyPress","_props$onFocus","onFocus","_props$formatZero","ref","formatZero","_props$maxLength","autoCapitalize","InputStyle","setInputStyle","isFocused","setIsFocused","Platform","select","default","borderColor","outline","WebkitBoxShadow","hoverStyle","textInputRef","iValue","setIValue","TextInput","_text","placeholderTextColor","keyCode","preventDefault","keyboardHeight","setKeyboardHeight","keyboardEvent","keyboardWillShowListener","Keyboard","addListener","endCoordinates","keyboardDidHideListener","OS","useKeyboardStatus","enabled","setEnabled","showSubscription","hideSubscription","keyboardDidShow","scrollContent","flexGrow","_props$scrollToTop","scrollToTop","_props$setScrollToTop","setScrollToTop","_props$pullDownRefres","pullDownRefresh","_props$onScroll","onScroll","_props$showScrollBar","showScrollBar","scrollViewRef","refreshing","setRefreshing","scrollToEnd","animated","scrollToOffset","offset","scrollTo","y","scrollTop","scrollHeight","behavior","onRefresh","keyboardVerticalOffset","setKeyboardVerticalOffset","viewRef","onLayout","measure","pageX","pageY","KeyboardAvoidingView","keyboardShouldPersistTaps","showsVerticalScrollIndicator","showsHorizontalScrollIndicator","flexShrink","ScrollView","scrollEventThrottle","refreshControl","RefreshControl","alwaysBounceVertical","contentContainerStyle","KeyboardAwareScrollView","Separator","separator","Option","_ref$autoFocus","autoFocus","_ref$type","_ref$textStyle","textStyle","_ref$iconSize","iconSize","_ref$current","tabIndex","onClick","onKeyDown","optionText","activeOpacity","optionContainer","borderWidth","Button","_ref2$style","_ref2$disabled","disabled","_ref2$buttonType","buttonText","buttonContainer","ModalButton","_ref3$bold","_ref3$style","_ref3$textStyle","_ref3$disabled","_ref3$disableBackgrou","disableBackgroundColor","_ref3$icon","icon","_ref3$buttonType","InputBox","_props$keyboardType","_props$validate","validate","_props$disabled","_props$width","_props$forceValidatio","forceValidation","pointerEvents","inputBoxContainer","inputBoxLabel","inputBox","Title","_ref4$style","Show","ShowLoanId","HideLoanId","_props$onPress","_props$disable","disable","_props$autoFocus","_props$buttonType","_props$loading","loading","_props$sStyle","sStyle","isHovered","setIsHovered","touchableRef","handleKeyPress","_document","_document2","removeEventListener","addEventListener","_document3","onMouseEnter","onMouseLeave","dismiss","iconButtonContainer","iconButtonHovered","iconButtonHovered1","iconButtonText","margin","WebPageView","_props$onLoad","_props$onMessage","onMessageProp","_props$injectedJavaSc","injectedJavaScript","webViewRef","id","src","pageHeight","setPageHeight","parsedData","DMCImage","maxWidth","createContext","Spinner","memo","textAlign","SmallSpinner","AccordionItem","_ref7$isExpand","isExpand","_ref7$isAccordion","isAccordion","_ref7$style","_ref7$titleStyle","titleStyle","expanded","setExpanded","accordContainer","accordHeader","accordTitle","Entypo","accordBody","AdditionalPage","handleBack","_ref8$rightContent","rightContent","_ref8$isClose","isClose","_ref8$isNeedBack","isNeedBack","_ref8$titleFontSize","titleFontSize","_ref8$form","form","useKeyboardHeight","bodyCon","maxHeight","DrawerView","_props$isShow","isShow","_props$body","_props$onClose","onClose","_props$bodyStyle","bodyStyle","_props$bodyName","bodyName","_props$From","isSmallScreen","Modal","visible","transparent","animationType","zIndex","EvilIcons","borderBottomWidth","borderBottomColor","FloatPage","_props$setFloatPage","setFloatPage","_props$needHeaderCont","needHeaderContent","_props$preventClose","preventClose","_props$style2","slideAnimation","handleCloseDrawer","translateX","right","AddRemoveButton","_ref9$isAdd","isAdd","PageBottom","pageFooter","spinnerContainer","spinnerTextStyle","fontWeight","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","paddingLeft","minWidth","droidSafeArea","button","dropdown","overlay","placeholderStyle","selectedTextStyle","iconStyle","onSelect","_props$value","isMap","_props$isValid","isValid","_value","DropdownButton","setVisible","setDropdown","toggleDropdown","openDropdown","_fx","_fy","_w","h","_px","py","dropDownWrapper","_dropDownWrapper$curr","setNativeProps","onChange","_e$target","target","_e$target$label","selectedOptions","Dropdown","labelField","valueField","dropdownPosition","itemTextStyle","activeColor","autoScroll","renderRightIconIcon","optionItem","highlightedOption","_props$options","_props$onSelect","searchText","setSearchText","highlightedIndex","setHighlightedIndex","inputRef","flatListRef","setSelectedItem","filteredOption","setFilteredOption","toLocaleLowerCase","_item$label","_item$label2","onKeyUp","prevIndex","scrollToItem","viewPosition","onInput","setSelectionRange","FlatList","renderItem","keyExtractor","SelectDropdown","renderCustomizedRowChild","_options$filter$","defaultValueByIndex","searchPlaceHolder","dropdownOverlayColor","buttonStyle","buttonTextStyle","rowStyle","dropdownStyle","selectedRowStyle","searchInputTxtStyle","selectedRowTextStyle","searchInputStyle","selectedItem","buttonTextAfterSelection","rowTextForSelection","_detailsArr$subFields","_detailsArr$subFields2","_detailsArr$Options","detailsArr","LockLoanApp","typeTwoFields","SearchableDropdown","item_","_item$ColumnValue","_item$field$0$ColumnV","_item$field$1$ColumnV","progress","radius","strokeWidth","circumference","PI","progressValue","Svg","Circle","cx","cy","r","stroke","fill","strokeDasharray","strokeDashoffset","strokeLinecap","innerWidth","navOption","Status","hasSubMenu","expandIndex","navOptionEsign","iPageArray","iPageIdObj","summaryInfo","borrowerInfo","borrowerVerification","bankAccounts","addressHistory","creditScore","income","realEstateOwned","government","documentUpload","eSign","appraisalPayment","reviewYourInterestRate","completed","iActivePageArray","handleProcessNavOptions","navOptions","pageIndex","additionalEmploymentList","jItem","jIndex","handleManipulateNavOptions","isESignOnly","excludePageIds","iNavLeftOptionState","NavBarContent","_props$navLeftOption","navLeftOption","_props$additionalBorr","additionalBorrowerList","_props$additionalEmpl","_props$additionalBank","additionalBankList","_props$creditPageList","creditPageList","_props$summaryInfoLis","summaryInfoList","_props$realEstateList","realEstateList","_props$additionalAddr","additionalAddressHistoryList","_props$governmentPage","governmentPageList","preventNavigation","isHome","_props$currentPage","_props$setCurrentPage","setCurrentPage","_props$pageIndex","page","subPage","completedPage","handleNavigateSubPage","handleActiveTab","_props$setNavLeftOpti","setNavLeftOptionState","_props$navLeftOptionS","navLeftOptionState","_props$navigate","_props$handleClearSta","handleClearState","isDashBoard","_props$progressPercen","progressPercentage","webviewRef","_props$setNavOpen","setNavOpen","iFrameviewRef","pageId","_props$activePageArra","activePageArray","_props$inCompletedSub","inCompletedSubPageObj","isLoaded","pageIdObj","iAdditionalBorrowerList","subMenuArray","isDisable","xItem","xIndex","yItem","yIndex","activePage","inCompleteTabIndex","nav","scriptToInject","injectJavaScript","iframeWindow","contentWindow","InvokeEsignMenu","AntDesign","testID","MaterialCommunityIcons","nIndex","_inCompleteTabIndex$","iSubPage","active","findIndex","Fragment","isArray","_inCompleteTabIndex$2","version","navBarLeft","navBarRight","navBarRightText","navButtonContainer","navButtonText","navLeftOptionWrapper","paddingRight","navRightOption","titleContainerWeb","titleContainerMobile","_props$WebLoginId","_props$handleLogOut","_props$isDashBoard","_props$isHome","_props$completedPage","_props$excludePageIds","isEsignOnly","_props$setProgressPer","setProgressPercentage","hideProgress","platformType","showEsignMenu","_contextDetails$userN","_contextDetails$Sessi","isNavOpen","leftNavRef","rightNavRef","DMLogoBlueRef","leftNavPosition","setLeftNavPosition","rightNavPosition","setRightNavPosition","_leftNavRef$current","_rightNavRef$current","_DMLogoBlueRef$curren","handleLogOut_","BioMetric","navBar","updatedArray","checkPages","completedCount","ele","round","SessionID","textAlignVertical","CircleProgressBar","borderTopColor","prevContextDetails","_typeTwoFields","_typeTwoFields2","_item$Option$filter$","charLength","_detailsArr$headerCon","_detailsArr$footerCon","_detailsArr$footerCon2","subFields","_val$toString","getOptionValue","_item$ColumnValue2","_item$Options","multiline","_item$ColumnValue3","headerContainer","headerText","textDecorationLine","textDecorationColor","author","pagefooter","_props$handleToggleDr","handleToggleDrawer","_props$handleAPIGetLo","handleAPIGetLoanDetails","_props$handleSelectFi","handleSelectFileDocView","_props$handleUnSavedF","handleUnSavedFileStatus","iProcessingStatus","_props$documentArray","documentArray","documentDetails","setDocumentDetails","existDocumentArray","setExistDocumentArray","parentDocumentDetails","setParentDocumentDetails","acceptedFiles","setAcceptedFiles","queryStringDetails","setQueryStringDetails","isVisible","editDetails","setEditDetails","setAdditionalBorrowerInfo","additionalEmploymentInfo","setAdditionalEmploymentInfo","setAdditionalBankInfo","setLoanData","isSaving","setIsSaving","borrowerOption","setBorrowerOption","employerOption","setEmployerOption","bankOption","setBankOption","_useState31","borrowerEntityTypeList","borrowerEmployerEntityTypeList","bankEntityTypeList","loanEntityTypeList","_useState32","entityTypeList","setEntityTypeList","btnflag","loanData_","prePare","docId","iEntityId","EntityTypeId","JsonFileList","SplitSecureResult","jsonObj","handleGetSecureDoc","fScanDocId","Scandoctype","fEntityId","fRecId","iRecId","UseDoc","_contextDetails$cache","_contextDetails$cache2","_contextDetails$cache3","cacheDocDetails","handleGetOptionDetails","EntityList","_props$iAcceptedFiles","iAcceptedFiles","iEditUploadDetails","handleCancelEdit","handleOpenFile","backTo","GoToNav","onBack","UploadButtonWeb","onDrop","useCallback","handleSaveEditDetails","_useDropzone","useDropzone","getRootProps","getInputProps","justifySelf","MaterialIcons","iUploadDetails","_ref18","ientityId","firstName","lastName","employerName","BankName","WhichBorrower","WhichEntity","handleSaveAdditionalInfo","FirstName","LastName","Empmt_Emp_Name","handleSaveUploadedFiles","Bank_Name","AccType","InputJSON","_InputJSON$","prevBorrowerOption","prevEmployerOption","prevBankOption","_defineProperty","DocTypeId","iEditDetails","entityid","Category","description","usedoc","entitytypeid","conditonid","file","formData","FormData","append","mimeType","redirect","handleSaveScanDocDetails","scandocid","ientityid","irecid","loadFlag","xml","loanid","_window$opener","_window$opener$docume","_window$opener$docume2","opener","bounces","GetEditScreen","flexWrap","getAttribute","PDFViewer","shareContent","documentUri","shareOptions","FileSystem","downloadAsync","documentDirectory","pop","Share","shareHtmlContent","base64","subject","_url","_url2","route","_props$isDisable","setHideFooterButtons","handleNavigation","_props$handleGetBankE","handleGetBankEmpDetails","setHideProgress","fromEsign","_props$setPdfView","setPdfView","_props$setShowEsignMe","setShowEsignMenu","_props$setWebviewRef","setWebviewRef","_props$setiFrameviewR","setiFrameviewRef","_props$wStyle","wStyle","_contextDetails$navig","_ref$params","iframeRef","handleBackAction","_props$route","_props$route$params","goBack","backHandler","Icon5","onError","syntheticEvent","onNavigationStateChange","navState","_navState$url","tabs","tab","activeTab","tabText","tabContent","dropContainer","_props$loanData","_props$setHideProgres","setHideProgressBar","_props$userId","userId","_props$loanId","_props$SessionId","_props$setDocumentVie","setDocumentViewProps","_props$setPullDownRef","setPullDownRefresh","_props$documentUpload","documentUploadFlag","modObjDoc","setModObjDoc","childWindow","jsonObjDoc","setJsonObjDoc","setEditUploadDetails","uploadIndex","setUploadIndex","requiredCount","setRequiredCount","uploadedCount","setUploadedCount","SecureDocResult","setSecureDocResult","_useState33","_useState34","drawerDetails","setDrawerDetails","_useState35","_useState36","_useState37","_useState38","_useState39","_useState40","_useState41","_useState42","setActiveTab","renderTab","isActive","handleGetDetails","loanProductStatus","jsonObj_","handleResponseFromChild","handlePostUpload","interval","dispatchEvent","Event","clearTimeout","handleCancelConfirmation","cancelable","DropZone","dropZoneElements","FileUploaded","_jsonObj$i","Message","DocDesc","iEntityTypeId","ShortName","SCD","DOCTYPEName","EntityName","iiEntityId","isUploaded","GetJsonFileList","_GetJsonFileList","_GetJsonFileList2","Feather","dropZoneProps","editUploadDetails","DropzoneWeb","DropzoneMobile","_childWindow$document","_childWindow$document2","_window3","_window3$opener","_window3$opener$docum","_window3$opener$docum2","isReload","prevDrawerDetails","doctype","handleFilePickOption","DocumentViewer","scanDocument","isPickFile","ImagePicker","requestCameraPermissionsAsync","launchImageLibraryAsync","mediaTypes","Images","allowsEditing","quality","scannedImages","DocumentScanner","maxNumDocuments","editDetails_","acceptedFiles_","generate","UploadDetails","_Object$keys","_ref26$editUploadDeta","isFireFox","isSafari","getFile","files","onTouchStart","handleSelectFile","isScan","scannedImage","DocumentPicker","copyToCacheDirectory","fileExtension","warn","_ref29","_ref29$editUploadDeta","_ref29$Message","_ref29$EntityName","_ref29$icon","section","_ref$isMultiple","isMultiple","_ref$options","_ref$value","_ref$onChange","_ref$size","_ref$labelStyle","labelStyle","_ref$color","_ref$defaultValue","defaultValue","handleOnValueChange","isChecked","bitValue","RadioButtonGroup","selected","onSelected","containerStyle","containerOptionStyle","radioStyle","radioBackground","child","_child$props","React","_children$props","RadioButtonItem","_props$size","_props$radioBackgroun","propTypes","PropTypes","_selectedOption$","optionDetails","setOptionDetails","selectedOption","setSelectedOption","OptionButton","isSelectedOption","_selectedOption$2","alignItem","loanProgramTypeOptions","loanTermOptions","amortTypeOptions","lienPositionOptions","lockPeriodOptions","formatDate","dateString","_dateString$split","_dateString$split2","getDay","IsLoanProgramSelected","iIsSelected","getPoints","points","removeUnwantedBitwise","bitwise","filteredValue","fnGetIndex","_ref2$onPress","_ref2$title","RateOption","_ref3$onPress","_ref3$disable","LinearGradient","colors","IsLockedLoan","progName","RateRow","forwardRef","handlePress","useImperativeHandle","triggerPress","handleGetJournalPost","handleUnPostJournal","XmlDataIn","SaveLockRateCancelReason","Loanid","EmpNum","CancelReason","CancelType","getMidRate","LoanID","roundOfRate","rate","handlePricingError","titleWrapper","titleDescription","filterWrapper","filterContainerWrapper","filetHeader","filterHead","filterContainer","rateContainerWrapper","productName","productRateTable","rateTableHeader","rateTableHeaderTitle","tableRow","cellOne","lineHeight","cellTwo","rateTableBody","rateTableRow","rateTableRowText","rateTableRowChild","column1","columnAPR","column2","column3","column4","rateSummary","rateSummaryRow","rateValue","rateValueLabel","rateValueWrapper","rateSummaryContainer","rateText","rateTextLabel","_ref11$stateOptions","stateOptions","_ref11$handleGetLeftN","handleGetLeftNavStatus","_ref11$LoanData","LoanData","iLoanData","_ref11$handleRequired","handleRequiredFieldData","_ref11$handleSaveSubj","handleSaveSubjectProperty","_ref11$propertyTypeOp","propertyTypeOption","_ref11$handleCalculat","handleCalculateDownPaymentPer","_ref11$DownPmtOnChang","DownPmtOnChange","_ref11$LnAmtExcChange","LnAmtExcChange","_ref11$CalculateDownP","CalculateDownPayment","_ref11$CalculateLnAmt","CalculateLnAmt","_ref11$handleSaveRequ","handleSaveRequiredFields","_ref11$handleGetBorro","handleGetBorrowerUrl","_ref11$handleNextClic","handleNextClick","loanBoardingData","setLoanBoardingData","rateData","setRateData","rowStatus","setRowStatus","isEditMode","searchInfo","setSearchInfo","selectedRate","setSelectedRate","aprRateState","setAprRateState","cashToCloseDetails","setCashToCloseDetails","expandedLineId","rateDisplayDetails","setRateDisplayDetails","priceAvailability","setPriceAvailability","lockExpDate","lockConfirmationDetails","setLockConfirmationDetails","extendDetails","setExtendDetails","setFloatDownRate","alertDetails","setAlertDetails","modalDetails","setModalDetails","viewCount","totalCount","loanTermDetails","setLoanTermDetails","targetRef","_lockConfirmationDeta","processName","requiredFieldsObj","setRequiredFieldsObj","handleGetRequiredFields","iRequiredFieldsArray","Options","ColumnName","onBlurFunction","field","ColumnValue","handleOpenOption","prevOptionDetails","handleGetLoanBoardingData","rateDetails","handleUpdateSearchInfo","isLocked","isFloated","prevLockConfirmationDetails","isLoadingFloatedRate","needToSelect","handleAutoSelectLoanProduct","retryCount","WhatProcess","Testing","_response$DataOut","_response$DataOut$dat","_response$DataOut$dat2","dataOutIndex","LineId","_response$DataOut$pgI","_response$DataOut$pgI2","pgIndex","_ref15$LoanProgNum","LoanProgNum","_ref15$LoadSelectedPr","LoadSelectedProduct","handleSearchLoanProducts","LoanSearchInfoIndex","PropertyInfoIndex","_response$DataOut$Loa","AmortType","LoanType","Term","lockPeriod","LockPeriod","_response$DataOut$Pro","LienPosition","amortType","loanType","term","lienPosition","handleGetRateLockDetails","handleLoanApr","aprPollingCount","APR","TILAPR","handleGetFloatDownSet","loanAmt","RateDetails","RateArray","iRate","basePoint","baseAmt","baseamt","formatBaseAmount","handleGetChangeRateSet","handleSetSessionDataValue","VarValue","VarName","handleExtendRateLock","iDisclosureSigned","DisclosureSigned","iAddressValidation","AddressValidation","allowlockstatus","disclosureSigned","addressValidation","addresschangedaftervalidation","isCloseOnly","validatedFlag","isAddressValidation","handleGetExtendRateView","needCancel","successButtonText","preventSuccessPress","successButtonOnPress","header","rowDetails","prevExtendDetails","handleInitExtendLock","disableSuccessButton","_selectedOption","TypeOption","OtherLookUp","handleSaveExtendLock","cancelButtonOnPress","handleResetExtendDetails","override","_selectedOption2","LockFee","handleGetLockExpiryDate","LockTimer","prevLockDate","Polling","LineID","BaseRate","BasePoints","ParPeriod","RateSheetId","LockType","FinalPoints","ProcessType","NeedJson","_response","_response2","_response2$","_response2$$LockConfO","_response3","_response3$","_response3$$LockConfO","_JSON$parse$Table$0$M","MonthlyPayment","_response$1$LockConfO","showchangeintrate","funded","settled","withdrawn","showrelock","finaluw","closed","ClosingDocsSent","lockaccess","comprateadj","cashToClose","prevSelectedRate","showLockExtend","showLockBtn","showChangeRate","showCancelLock","showFloatDown","showRelock","_response4","_response4$","_response4$$RootObjec","_response5","_response5$","_response5$$LockConfO","_response6","_response6$","_response6$$InvestorI","prevSearchInfo","handleConstructInputs","_ref25$LoanProgNum","_ref25$loanBoardingDa","iLoanBoardingData","BorrInfo","PropertyInfo","LoanParamInfo","LoanSearchInfo","LoanOfficer","RootObjects","LoanOfficerId","EmpNumber","_RootObjects$","CompNum","compname","EmpRights","info","firstTimeHomeBuyer","QualifyingFICO","fnFindMinFICO","iLoanSearchInfo","SearchNoPPP","IsSelfEmployed","ExistingLiens","DataIn","ViewType","FromNewRateLock","IISSessionId","BorrCount","Prequal","handleGetRateAvailability","handleLockRateValidation","iPriceAvailability","iStrXML","handleLockRateValidation_DBChecks","minFicoScore","FICO","ficoScore","handleValidateSSN","_ref30","handleLockRate","_ref31","handleSaveLoanBoardingData","Rate","LockPeriods","handleDoLockRateProcess","WarnStatus","priceChanged","Msg","handleCheckRateLockPool","handlePricingBasedOnDefaultSettings","_ref32","pollingCount","_ref33","ChangeLnPrgm","Sessionid","_x27","_x28","_x29","handleSelectRate","_ref34","_ref35","landOn","_x30","_ref36","_ref36$head","_ref36$body","_ref36$needCancel","_ref36$needSuccessBut","needSuccessButton","_ref36$successButtonT","_ref36$cancelButtonOn","_ref36$successButtonO","_ref36$disableSuccess","_ref36$preventSuccess","handleLockRateProceed","_PropertyInfo$","_PropertyInfo$$Subjec","SubjectAddress","_PropertyInfo$$Subjec2","SubjectZip","prevModalDetails","_ref37","InputData","_response$DataOut$0$R","RetStatus","LatestRun","handleGetLoanProducts","_x31","_ref38","res","Run","ExcludeLines","IU_PollingCounter","IsSearchedLoan","blCompressJson","OutFlag","Inputjson","processFlag","_ref39","Loan","ErrorMessage","_response7","_response7$DataOut","_response7$DataOut$","_response7$DataOut$$R","_response7$DataOut$$R2","_response8","_response8$DataOut","_response8$DataOut$","_response8$DataOut$$R","iRateData","loanProgramsList","loanProgramOrder","shift","_loanProgramOrder$Loa","_loanProgramOrder$Loa2","_Object$values$0$5$Ra","orderLoanProgram","_ref40","LPA_CommonData","_ref41","_ref42","CommonProgramName","replaceLoanProductName","_Object$values$0$1$Lo","lineId","LockDays","programName","InterestRate","_Object$values$0$4$Lo","_Object$values$0$6$Ad","Addons","_Object$values$0$2$Lo","_LoanData$","_LoanData$$LenderComp","LenderCompAmt","_LoanData$$LoanAmt","LoanAmt","LockPeriodArray","_ref43","LockExpDate","_ref44","LockPeriodID","LenderCompPoints","totalAddons","_ref45","Disc","_ref46","COlID","selectedRateObject","_ref47","RateSheetName","LnProgActiveId","handleGetAPR","handleGetCashToClose","_response9","_response9$DataOut","_response9$DataOut$","_response9$DataOut$$R","_response$DataOut$0$R2","_response$DataOut$0$R3","NumLoanPrograms","_response$DataOut$0$R4","NumLineIds","FewLinesErrored","_x37","_x32","_x33","_x34","_x35","_x36","handleLayout","order","lineIdArr","neArr","aValue","LoanProgramDetails","bValue","loanProductName","itemArray","_LockPeriod$filter","_Object$values$0$1$Lo2","_Object$values$0$4$Lo2","_Object$values$0$5$Ra2","RateData","rowData","_ref49","_ref50","_ref51","_aprRateState$LineId","_ref52$APR","_ref53","SaveJson","handleCancelLock","_ref54","cancelLockReason","Response","handleGetCancelLock","_ref55","lineid","IntRate","isUpdateSelectedRate","_aprRateState$lineid","_ref56$count","prevAprRate","handleGetARM","_x38","_x39","_x40","_x41","_ref57","lockPeriodId","iCashToClose","_ref58","lockperiod","_ref59","cashtoclose","prevCashToCloseDetails","_x42","_x43","_x44","_x45","_ref60","_x46","_x47","_x48","handleUpdatePropertyInfo","prevLoanBoardingData","handleUpdateBorrower","AddressInformation","_PropertyInfo$2","_PropertyInfo$2$Subje","_PropertyInfo$2$Subje2","_PropertyInfo$2$Subje3","SubjectCity","SubjectState","isButtonDisabled","_yield$handleGetZipCo2","_ref65","SSNInformation","_ref66","_ref67","_ref67$FirstName","_ref67$LastName","_ref67$SSN","RateSummary","_aprRateState$LineId2","_ref68$APR","ViewRateOption","useMemo","_lockConfirmationDeta2","_lockConfirmationDeta3","_lockConfirmationDeta4","_lockConfirmationDeta5","_lockConfirmationDeta6","extendLock","Boolean","iMessage","closeOnly","progChanged","progchanged","RateSheetID","ratesheetused","_successButtonOnPress","ChangeRateSet","handleChangeRate","FloatDownAllowed","floatdownallowed","showfloatdown","MaxFloatDownAllowed","maximumFloatDown","FloatDownFlag","floatdownflag","_successButtonOnPress2","FloatDownSet","handleFloatDown","isCancelLock","ModalComponent","modalStyle","deviceWidth","_yield$handleGetZipCo","fieldObj","flatMap","_ref62","_ref63","AlertComponent","_lockConfirmationDeta13","_alertDetails$head","_alertDetails$cancelB","_alertDetails$disable","_alertDetails$prevent","_lockConfirmationDeta7","loanProgramName","ratepattern","lockPeriodDaysCount","compperiodreq","lockPeriodDate","complockexpire","_lockConfirmationDeta8","comppointsadj","iPoints","_lockConfirmationDeta9","_lockConfirmationDeta10","compexpiredate","_lockConfirmationDeta11","ProcessLineId","_lockConfirmationDeta12","_selectedRate$Rate2","_selectedRate$program","_aprRateState$LineId3","_selectedRate$Rate3","_selectedRate$LineId2","_selectedRate$points","_selectedRate$Monthly","_selectedRate$cashToC","_selectedRate$program2","_ref70$APR","CustomCheckBoxSelection","prevLoanTermDetails","DropDownButton","_ref71","handleFilterValidation","_rateDisplayDetails$e","_rateDisplayDetails$e2","_Object$values$0$5$Ra3","_Object$values$0$4$Lo3","_Object$values$0$6$Ad2","_Object$values$0$1$Lo3","_Object$values$0$2$Lo2","_LoanData$2","_LoanData$2$LenderCom","_LoanData$2$LoanAmt","_ref72","_Object$values$0$1$Lo4","_ref73","_ref74","_ref75","isViewAllRates","limitedRateArray","midRateDetails","chargeRebate","chargerebate","nearestCharge","nearestcharge","rateMethod","ratemethod","rateTarget","ratetarget","midRate","filteredRatesArray","compare","finalPoints","handleGetLimitedRateArray","prevRateData","_ref76","Col","_ref77","_ref78","_aprRateState$LineId4","_cashToCloseDetails$L","_ref78$Rate","_ref78$MonthlyPayment","_ref78$RateSheetName","_ref78$COlID","_ref79$APR","point","_handleGetRowColor","_ref48","_selectedRate$LineId","iLineId","_selectedRate$Rate","handleGetRowColor","rowIdentity","isRowExpand","prevRowStatus","iRowIdentity","prevRateDisplayDetails","checkbox","_toString","selectedValue","nValue","Checkbox","onValueChange","_item$Option$filter$2","toISOString","CheckBoxSelection","screenWidth","whiteSpace","textOverflow","hoveredItem","setHoveredItem","selectedItems","setSelectedItems","getScrollResponder","_innerViewRef","childNodes","_DropdownButton$curre","Promise","resolve","_item$value","selectedItems_","toggleItem","handleMouseEnter","accessible","accessibilityRole","KeyboardAwareFlatList","getLabelByValue","selectedText","floor","getSelectedText","_item$Option$filter$3","MultiSelect","_ref$assetVendor","assetVendor","_ref$handleNavigation","_ref$handleGetBankEmp","ExternalSourceViewer","textSmall","productTitle","productRow","productCell","productAmount","borrowerTitle","modalView","cell","_creditCardDetails$Zi","_alertModalMessage$me","_alertModalMessage$me2","_props$footerButton","footerButton","_props$stateOptions","_props$loanPurpose","loanPurpose","_props$UserId","UserId","_props$isSmallScreen","_props$setTopEdge","setTopEdge","_props$triggerHiddenB","triggerHiddenButtonClick","_props$triggerHiddenB2","triggerHiddenButtonClickDone","_props$ProcessPayment","ProcessPaymentDisabled","_props$ProcessingStat","ProcessingStatus","_props$setAlertMessag","alertMessage","setAlertMessage","_props$setIsPaymentDo","setIsPaymentDone","productDescription","setProductDescription","borrowerPropertyAddress","setBorrowerPropertyAddress","expirationOption","paymentType","CardNum","CardSecurityCode","ExpMonth","ExpYear","CardType","Address","ZipCode","City","State","CardEmail","creditCardDetails","setCreditCardDetails","creditCardDetailsValidation","setCreditCardDetailsValidation","showWarning","messageArray","alertModalMessage","setAlertModalMessage","intRequestType","iPayor","whdnPayerValue","strCMSLeftNavPayor","pageConditions","setPageCondition","borrowerToPay","setBorrowerToPay","borrowerToPayAmount","setBorrowerToPayAmount","rawJsonCardDetails","setRawJsonCardDetails","productTotalAmount","setProductTotalAmount","isPaid","setIsPaid","SetSelectedFeeId","Switch","trackColor","false","true","thumbColor","ios_backgroundColor","iBorrowerToPay","isSelected","len","iTotal","amount","headerMessage","handleAlertMessage","CustIds","hdnTalxProd","BorIds","handleProceedNext","TotalAMount","AppraisalOnly","Payor","responseXML","_JSON$parse","responseJSON","ShoppingCart","iPageConditions","ProductCategory","ProductID","prevPageConditions","Street","session","sessionname","sessionvalue","hdnFhaCase","RequestId","PayorId","iCreditCardDetailsValidation","handleNext","handleValidateMessage","CardNumErrMessage","strMessage","_creditCardDetails$Ca","CardNumber","_creditCardDetails$Ca2","CardTypeName","_readOnlyError","fLetter","ex","CreditCardValidation","CardTypeErrMessage","_creditCardDetails$Ca3","cardLength","CardTypeValidation","SecCodeMessage","SecurityCode","SecurityCodeLength","SecurityCodeValidation","MonthErrMessage","today","substr","ValidateMonth","iValidationMessage","iWarningMessage","handleSaveUspsAddress","street","zip","address","_JSON$parse2","handleUSPSCheckAddressValid","returnMessage","_details","_details$","_details$2","_details$3","_details$4","addressObj","_addressObj$Street","_addressObj$City","_addressObj$Zip","Zip","_addressObj$State","_addressObj$ValidAddr","ValidAddress","handleAddressValidation","_response$split","_array","valid","returnText","IsAddressValid","selectedID","creditReportOrder","NotCreditReport","CardId","handleUpdateCardDetails","Amount","productcategory","ID","handleValidateAddress","handleGetAddressValidReqProducts","intCompNum","_pageConditions$compn","compnum","_pageConditions$empnu","empnum","_pageConditions$CustI","intUserId","intCustId","ccPayorID","iRequestType","intWhoPaid","totalAmount","Proceed","DateExceed","PackageExists","blDate","Signed","blPackageExists","retReinspecDate","_creditCardDetails$pa2","payeeEmail","CIEmailAddress","XMLin","handleCheckTalxBorrowers","iLoanId","GroupIds","NoLongerUse","RequestType","Email","handleChangeText","valueObj","iCardNumber","String","ValidateCardType","prevCreditCardDetails","_ref7$bold","_ref7$textStyle","layout","prev","contentWrapperY","contentWrapperHeight","contentY","contentHeight","footer","IconContainer","footerText","footerIcon","iSessionId","firstActiveLoan","_props$preventNavigat","footerArray","setFooterArray","iFooterArray","iconName","navigateTo","navigateParams","FormId","handleNavigate","errorMessage","email","shareOption","setShareOption","cellPhone","shareDetails","setShareDetails","messageColor","statusMessage","setStatusMessage","showSpinner","setShowSpinner","validateArray","setValidateArray","_route$params","handleShareApp","iValidatedArray","handleValidateField","_route$params2","Sender","jsonObject","Table","Column1","StatusMessage","ShareAppButton","handleShareOptionPress","handleShareDetails","numberOfLines","ellipsizeMode","Clipboard","setStringAsync","borderLeftColor","borderLeftWidth","Footer","modalRow","modalColumn","modalTitle","letterSpacing","modalContent","modalIcon","_LoanContactDetails$T","_TabDetails$activeInd2","_TabDetails$activeInd3","_props$route$params$U","searchValue","setSearchValue","activeIndex","setActiveIndex","TabDetails","setTabDetails","setContactData","LoanContactDetails","setLoanContactDetails","PhoneContacts","AllLoanContactDetails","setAllLoanContactDetails","phone","newContactDetails","setNewContactDetails","handleContactDetails","_scrollViewRef$curren","AccessPhoneContacts","Contacts","requestPermissionsAsync","phoneContacts","getContactsAsync","contact","phoneNumberList","phoneNumbers","Cell","Phone","EmailList","emails","TabName","modalContactDetails","setModalContactDetails","modalAddContact","setModalAddContact","AddContactDetails","Fields","PhoneNumbers","Emails","addContactAsync","handleGetPhoneContact","iPhoneContacts","prevContact","prevTabDetails","_iPhoneContacts","contactData","distinctNames","_contactData$key","_prevTabDetails$index","filteredData","matchingArrays","matchedEntries","entry","_val$toString$toLower","handleSearchContact","formatPhoneNumber","Type","horizontal","tabDetails","_Name","_TabDetails$activeInd","contacts","groupedContacts","firstLetter","letter","isInitial","handleGetContactWithInitial","_contact$isInitial","onEndReachedThreshold","ListFooterComponent","_modalContactDetails$","phoneNumber","emailUrl","_modalContactDetails$2","closeModal","passwordMisMatch","setPasswordMisMatch","passwordMsg","confirmPasswordMsg","newPasswordMessage","setNewPasswordMessage","password","confirmPassword","newPassword","setNewPassword","newIsPasswordSecure","setNewIsPasswordSecure","setErrorMessage","validatePassword","strength","Password","activeText","inActiveText","activeTextStyle","inactiveTextStyle","barHeight","circleSize","switchLeftPx","switchRightPx","circleBorderActiveColor","backgroundActive","backgroundInactive","circleBorderInActiveColor","innerCircleStyle","renderInsideCircle","Ionicons","setDetails","isBiometricSupported","setIsBiometricSupported","handleSettingsDetails","GetDetails","useFaceId","BioMetricId","iBiometricWebLoginId","emailId","isFaceIdAvailable","hardwareSupport","LocalAuthentication","hasHardwareAsync","available","supportedAuthenticationTypesAsync","handleStatusMessage","isSuccess","handleSaveSettingsDetails","handleLocalAuthentication","isEnrolledAsync","authenticateAsync","promptMessage","disableDeviceFallback","cancelLabel","success","handleSetDetails","openSettings","Swatch","isUserExist","ChangePassword","pLoanId","menuNode","calcName","bankIndex","handlePostVendorAdd","vendorType","setVendorType","otherLoanVendorDetails","setOtherLoanVendorDetails","handleOnchange","prevOtherLoanVendorDetails","VendorId","Home","_props$route$params2","_DetailsArr$slice$pag","_DetailsArr$slice$pag2","_floatPage$option","pageArray","setPageArray","setPageId","setActivePageArray","isDisableNext","setIsDisableNext","loanOfficerOption","setLoanOfficerOption","setLoanId","setPageIndex","clickProcessPayment","setClickProcessPayment","isPaymentDone","processPaymentDisabled","setProcessPaymentDisabled","stickyHeader","setStickyHeader","hideFooterButtons","containerHeight","containerHeightDetails","setContainerHeightDetails","bodyContainerRef","bodyContentRef","footerContainerRef","setCompletedPage","_useState43","_useState44","inCompletedSubPage","setInCompletedSubPage","_useState45","_useState46","setInCompletedSubPageObj","_useState47","_useState48","leftNavStatus","setLeftNavStatus","_useState49","_useState50","_useState51","isLoad","_useState52","loaderDetails","setLoaderDetails","_useState53","_useState54","setDocumentUploadFlag","_useState55","_useState56","setPropertyTypeOption","_useState57","_useState58","processStatus","setProcessStatus","_useState59","_useState60","_useState61","_useState62","InterestRateStatus","setInterestRateStatus","_useState63","_useState64","DetailsArr","setDetailsArr","_useState65","_useState66","additionalBorrowerInfo","_useState67","_useState68","_useState69","_useState70","additionalCounsellingInfo","setAdditionalCounsellingInfo","_useState71","_useState72","additionalOtherIncomeInfo","setAdditionalOtherIncomeInfo","_useState73","_useState74","additionalPropertyInfo","setAdditionalPropertyInfo","_useState75","_useState76","additionalBankInfo","_useState77","_useState78","otherIncomeOption","setOtherIncomeOption","_useState79","_useState80","setStateOptions","_useState81","_useState82","giftOptions","setGiftOptions","_useState83","_useState84","otherAccountTypeOption","_useState85","_useState86","accountTypeOption","setAccountTypeOption","_useState87","_useState88","vendorOptions","setVendorOptions","_useState89","_useState90","maritalStatusOptions","setMaritalStatusOptions","_useState91","_useState92","setUserId","_useState93","_useState94","loanOfficerId","setLoanOfficerId","_useState95","isAlready","Details","ErrMsg","_useState96","creditScoreDetails","SetCreditScoreDetails","_useState97","_useState98","floatPage","_useState99","_useState100","isFromDashBoard","setIsFromDashBoard","_useState101","_useState102","DocumentViewProps","_useState103","_useState104","_useState105","RecentLoId","_useState106","loanOfficers","setLoanOfficers","_useState107","_useState108","loanURLDetails","setLoanURLDetails","_useState109","Ids","_useState110","excludePageIndex","setExcludePageIndex","_useState111","innerHeight","_useState112","screenSize","setScreenSize","_useState113","_useState114","setWebLoginId","_useState115","_useState116","_useState117","_useState118","setPlatformType","_useState119","_useState120","pdfView","_useState121","_useState122","_useState123","_useState124","_useState125","_useState126","_useState127","_useState128","isDataLoadedForDocUpload","setIsDataLoadedForDocUpload","keydownHandler","prevLoanData","viewPlaid","LinkBankAccount","_LoanData$NickName","NickName","MiddleName","Suffix","_ref$FirstName","handleMaritalStatusChange","_ref2$iAdditionalBorr","iAdditionalBorrowerInfo","changedId","_ref2$isPrimary","isPrimary","_ref2$custId","custId","_ref2$index","MaritalStatus","iMaritalStatus","changesIndex","newCustId","borrower","isMaritalStatusChanged","maritalStatusChangesIndex","_activePageArray$page","handleGetWebLoginId","prePre","userType","webPlatForm","taskTableIndex","updateSize","handleGetContainerHeight","Screen","handleEventsLog","handleInsertEventToDW","querySelectorAll","iDetailsArr","handlePageDetails","_handleGetPageNumber","handleGetPageNumber","iPageIndex","iCurrentPage","handleUpdateCompletedPage","iAddressTBD","AddressTBD","blAssetOption","assetPullCompleted","queryObj","getCreditDetails","_creditScoreDetails$D","iFinalScanDocID","_bodyContentRef$curre","_bodyContainerRef$cur","_footerContainerRef$c","prevContainerHeightDetails","footerContainerHeight","_containerHeightDetai","_containerHeightDetai2","iStickyHeader","handleNextFrameNavigation","_window$location3","_activePageArray$page2","_ref10$landOn","LoanOff","apprURL","docURL","esignURL","loanLocked","exisLoanId","noeSignExists","blLoanAppRateOptions","newPageArray","iGoToNav","prevPageIndex","newPageId","k","handleGetCreditScoreDetails","inValidData","FICOMid","handleGetCreditScoreDetailsPooling","subArray","sortOrder","fullNameA","FullName","fullNameB","handleGetLoanOfficerId","loanOfficerId_","handleLoanOfficerCredit","LoEmpNum","GetLeftNavStatus","statusChangePage","isInclude","jLoanId","iLeftNavStatus","handleGetCellPhone","handleDuplicateEmail","changedIndex","EmailId","iWebLoginId","handleGetBorrowerOption","borr","iFlag","iStoreCamp","handleGetVendorListForNewLoanApp","handleGetLoanAppOptions","iUserId","handleStoreCampaignDetails","empDetails","employment","handleEmploymentOrder","_loanData_$CreditRpt_","_loanData_$SSN","CreditRpt_Auth","FrozenCredit","prevBankAccountLinked","prevLinkBankAccount","Real_est_prop","LanguagePreference","iSpouse_AddBorrower","prevAddressTBD","OtherIncomeCustId","CashOutAmount","Refi_Estmt_LnAmt","Purchase_Estm_LnAmt","Purchase_Estm_Pur_Price","PaidOff","Refi_Estmt_Prop_Lnval","DownPayment","Monthly_Rent","Monthly_Rent1","Monthly_Rent2","Monthly_Rent3","Bor_money_Amt","Own1","Own2","Own3","Rent1","Rent2","Rent3","Living_Rent_Free1","Living_Rent_Free2","Living_Rent_Free3","Monthly_Alimony_Expense","Monthly_Alimony_Income","Monthly_ChildSupportExpense","Monthly_ChildSupportIncome","Monthly_Base_Pay","Monthly_Amount","Bank_Amount","Presnt_Markt_Val","VA_Entitlmt_Amt","VA_Entitlmt_Amt_used","currently_employed","Living_Rent_Free","Addrshistry_Years","Addrshistry_Months","Retired","Not_CurrentlyEmployed","_split$slice","_split$slice2","AppVal","lnAmtTxt","DownPay","DownPaymentPercent","subjectPropertyAddress","iAdditionalOtherIncome","iAdditionalPropertyInfo","iAdditionalBankInfo","bank","AccTypeName","getOtherAccountDesc","iAdditionalCounsellingInfo","existingObject","assign","Couns_Confirm","Couns_Comp_Date","Couns_Type","Couns_Agency_Name","OtherLanguageDescription","CustID","StateOptionsJson","OtherIncomeOptionsJson","PropertyTypeOptionsJson","AccTypeOption","giftOption","TypeDesc","VendorName","sortname","VendorIdType","handleUpdateAddtionalBank","handleGetFirstPageFieldNew","cFields","_source$item$name2","_value2","_value2$toString","_value2$toString$repl","_value2$toString$repl2","_value2$toString$repl3","_item$value$toString","_item$value$toString$","_item$value$toString$2","_item$value$toString$3","unOrderedEmployment","isChangePage","currentIndex","orderedEmployment","_iAdditionalBorrowerI","empRow","subName","newRow","existingRow","_handleGetPageNumber3","_handleGetPageNumber4","iCompletedPage","iInCompletedSubPage","iExp","_inCompletedSubPageOb","iPage","currentPage_","inCompletedSubPageObjNew","iPageId","LoanPurpose","ProperType","Propertybe","LoanSummaryPropertyType","Prop_Years","priPurpose","Pri_purpose_Refi","lengthLimit","BankAccountLinked","OtherAccType","falseCheck","Own","Rent","pageCrossCount","monthCount","handleGetMonthCount","totalMonthCount","handleGetBorrYearMonth","_Details$","CreditReport","_borrower$SSN","IsOtherIncome","IsAlimonyChildSupport","iInCompletedSubPage_","_additionalEmployment","prevCustId","additionalPageCount","Real_est_Prop_Status","Real_est_Subj_Prop","Current_residence","Citizenship_Status","Pri_residence","Ownership_intst_Othr_Prop","Prop_own","Prop_hold","Purchase_Transaction","Bor_money_realest_trans","Apply_mortloan_otherprop","Apply_newcredit","Prop_sub_to_lien","Co_signer","Outstanding_judgments","Cur_delinquent","Party_to_lawsuit","Prop_lieu_foreclosure","Pre_foreclosure_sale","Prop_foreclosed","Declare_bankruptcy","Types_bankruptcy","bType1stBuyer","OccupyProperty","OweProperty","TypePropOwn","HoldTitle","BusinessaffWithSeller","LoanOnAnotherProp","MoneyBorrowedForDown","Downpayment","ApplyingNewCredit","PropAssCleanEnergy","CoMaker","Jugdements","Delinquent","Lawsuit","ConveyedTitle","Obligated","Forclosed","Bankruptcy","blChapter7","blChapter11","blChapter12","blChapter13","Demographic_Info","Sex","Ethinicity","HispanicSubcategory","OtherOrigin","Race","PrincipalTribe","NaticHawaiSubCategory","OtherPacificIslandRace","AsianRaceSubCategory","OtherAsianRace","borrowerDemographic_Info","borrowerSex","borrowerEthnicity","Ethnicity","borrowerHispanicSubcategory","borrowerRaceIndian","RaceIndian","borrowerRaceHawaiian","RaceHawaiian","borrowerRaceAsian","RaceAsian","borrowerRaceWhite","RaceWhite","borrowerRaceBlack","RaceBlack","borrowerPrincipalTribe","borrowerAsianRaceSubCategory","borrowerOtherAsianRace","Military_Status","Reserves_Active","Branch_Service","SerMilitaryStatus","VA_Entitlmt_Code","VA_Loan_FTU","VA_Funding_Fee","Currently_serving","Currently_retired","Active_National_Guard","Surviving_spouse","VA_Military_Status","borrower_VA_Entitlmt_Amt","borrower_VA_Entitlmt_Amt_used","borrower_VA_Entitlmt_Code","borrower_Reserves_Active","borrower_Branch_Service","borrower_VAMilitaryServiceStatus","VAMilitaryServiceStatus","borrower_VA_Loan_FTU","borrower_VA_Funding_Fee","borrower_Currently_serving","borrower_Currently_retired","borrower_Active_National_Guard","borrower_Surviving_spouse","borrower_Couns_Confirm","borrower_Couns_Comp_Date","borrower_Couns_Type","borrower_Couns_Agency_Name","borrower_LanguagePreference","borrower_OtherLanguageDescription","subPageIndex","noLoan","_LoanData$LoanSummary","_LoanData$subjectZip","_LoanData$subjectZip2","widthOption","LoNum","handleSaveLoanOfficer","isLoanCreating","addTopField","_onBlur","_LoanData$NickName2","BirthDate","isAdditionalBorr","removeContent","addBorr","index_","Spouse_AddBorrower","handleUpdateAddtionalBorrower","footerContent","onTextChange","isRemove","_additionalBorrowerIn","additionalText","bodyContent","isSave","handleResetPlaidDetails","_LoanData$Addrshistry","_onBlur2","_i2","_LoanData","isCheckMonthCount","_onBlur3","_yield$handleGetZipCo3","sBorr","_borrower$Zip","isCheckAddMonthCount","isAddressHistory","handleCopyPriAddress","headerContent","_onBlur4","_yield$handleGetZipCo4","additionalBorrowerInfo_","_loop2","_i3","_borrower","isAddtionalPrevAddressHistory","prevAddIndex","_onBlur5","_yield$handleGetZipCo5","_Details$2","_LoanData$SSN","_Details$3","isSSNDetails","_borrower$SSN2","pageName","bodyText","handleOrderCreditReport","_additionalBorrowerIn2","_additionalEmployment2","loopCustId","_employment$Emp_ZipCo","empOption","isAdditionalEmployment","handleUpdateAddtionalEmployment","_onBlur6","_yield$handleGetZipCo6","additionalEmploymentInfo_","addEmp","iLoopCustId","isAddAdditionalEmployment","flat","isAdditionalIncome","handleUpdateAddtionalOtherIncome","addIncome","isAddAdditionalOtherIncome","isAdditionalBank","_onBlur7","_yield$handleGetZipCo7","_onBlur8","_yield$handleGetZipCo8","addBank","_property$Real_est_Zi","_property$PropertyTyp","isAdditionalProperty","handleUpdateAddtionalPropertyInfo","_onBlur9","_yield$handleGetZipCo9","additionalPropertyInfo_","addProp","isYellow","isBitWise","resetBitWise","Exp_date_service","isAddtionalDeclaration","isAddtionalDemographic","isVAMilitary","Counselling","isAddCounselling","additionalCounsellingInfo_","additionalBankInfo_","OwnerIdList","list","handleGetEmpploymentList","_item$subMenu","additionalOtherIncomeInfo_","handleAddAditionalIncomeType","iErrFlag","_window$location4","_activePageArray$page3","base","Num","years","ceil","_ref47$CustId","spouseMaritalStatus","isCopyFormprimary","_objectSpread8","Current_Street_Address","Addrshistry_ZipCode","Addrshistry_City","Addrshistry_State","PrevCurrent_Street_Address1","PrevCurrent_Street_Address2","PrevCurrent_Street_Address3","Addrshistry_ZipCode1","Addrshistry_ZipCode2","Addrshistry_ZipCode3","Addrshistry_City1","Addrshistry_City2","Addrshistry_City3","Addrshistry_State1","Addrshistry_State2","Addrshistry_State3","Addrshistry_Years1","Addrshistry_Years2","Addrshistry_Years3","Addrshistry_Months1","Addrshistry_Months2","Addrshistry_Months3","Address1","_additionalBorrowerIn4","borOwnPeriod","presentRent","borOwn","borForAdd1","borForZip2","BorForZip2","borForCity2","BorForCity2","borForState2","BorForState2","borForAdd1Yrs","presentRent1","borForAdd1Own","borForAdd2","borForZip3","BorForZip3","borForCity3","BorForCity3","borForState3","BorForState3","borForAdd2Yrs","presentRent2","borForAdd2Own","borForAdd3","borForZip4","BorForZip4","borForCity4","BorForCity4","borForState4","BorForState4","borForAdd3Yrs","presentRent3","borForAdd3Own","_obj$ColumnValue","obj_","strjson","JsonInput","otherAccount","_ref52","iCustId","inputJSON_","isPrimarySave","AddValue","CustId_","isSaveMaritalStatus","Dependents","Ages_Dependents","_ref53$SpouseCustID","SpouseCustID","_additionalBorrowerIn5","BorOwnPeriod","BorOwn","PresentRent","_InputJSON","columnName","_additionalBorrowerIn3","Payor_Name","Source_Other_Incm","handleAddAditionalIncome","AssetId","isNewRecord","handleAddAddtionalBank","handleCheckNextPage","Real_est_prop_Addrs","Real_est_ZipCode","Real_est_City","Real_est_State","PropertyType","Months_Ownd_Prop","handleAddAddtionalProperty","addEmp_","handleAddAditionalEmployment","addBorr_","bTypeNonPerResAlien","FlagSameAsAbove","MilitaryServiceExpectedCompletionDate","Couns_FormatType","Couns_FormatType2","Bor_For_Add1_Own","Bor_For_Add2_Own","Bor_For_Add3_Own","_DetailsArr$subFields","Emp_Strt_Addrs","Emp_City","Emp_ZipCode","Emp_State","Emp_phone","HR_Contact_Person","HR_Phone","Job_Title","Employed_From","Employed_To","Monthly_Overtime_Amt","Monthly_Bonus_Amt","Monthly_Commission_Amt","Employedbyfamily","Monthly_Total_Pay","handleSaveNewLoan","DetailsArr_","_ref56","subItem","handleGetUserTask","handleCreateLoan","_window$location5","_activePageArray$page4","isNewLoanCreated","_JSON$parse$Table$","bankInfo","employmentInfo","direction_","iFrom","mainPage","_DetailsArr_$subPage2","_json5","_json","_json2","_DetailsArr_$subPage$","iColumnValue","_ref61","_json3","_json4","_DetailsArr_$subPage","inputJSON","key_","rentKey","_additionalBankInfo$D","_additionalBankInfo$D2","Account","_additionalBankInfo$D3","AccountName","_additionalBankInfo$D4","_additionalBankInfo$D5","BankAddress","_additionalBankInfo$D6","BankCity","_additionalBankInfo$D7","BankState","_additionalBankInfo$D8","BankZip","_additionalBankInfo$D9","_additionalBankInfo$D10","giftfrom","_additionalBankInfo$D11","lifeInsFace","_additionalBankInfo$D12","lifeInsValue","_additionalBankInfo$D13","EarnestMoneyPaidTo","Description","_EarnestMoneyPaidTo$s","_EarnestMoneyPaidTo$s2","paidToId","paidToType","json_","OwnerIdCust","col","USCitizen","bTypePerResAlien","Co_maker","InterviewMethod","NativeHawaiianSubCategory","_borr2$VA_Entitlmt_Am","_borr2$VA_Entitlmt_Am2","_borr2$VA_Entitlmt_Am3","_borr2$VA_Entitlmt_Am4","VAActiveStatus","InReserveandActive","VABranchService","VAEntitlementAmt","VAEntitlementUsed","VAEntitleCode","VAFirstTimeUse","ExemptFromFundingFee","CurActiveDuty","CurRetired","NonActiveMemReserve","SurvivingSpouse","iLanguagePreference","CounselingConfirmationIndicator","CounselingCompletedDate","CounselingType","CounselingAgencyName","prevAdditionalCounsellingInfo","handleUpdateAddtionalCounsellingInfo","self","_additionalBankInfo$","creditReportOrdered","prevDocumentUploadFlag","page_","isSubField","_DetailsArr_$pageInde","_DetailsArr_$pageInde2","_DetailsArr_$pageInde3","iColumnName","_LoanData$maritalStat","borrowerEmailId","iJson","maritalStatus","_additionalBorrowerIn6","DownPayment_","DownPayPer","AppVal_","DownPay_","LnAmountExc","LoanAmtRemaining","CashAmt","LnAmt","_ref69","OrgUrl","UserDetails","CampaignDetails","iCampignId","iCampaign","iCampignNum","CampignId","utm_campaign","CampignNum","utmsource","utmmedium","utmcampaign","utmcontent","utmterm","MsgText","LeadOfficer","_handleGetPageNumber5","prevInCompletedSubPageObj","_ref70","subMenuIndex","_creditScoreDetails$D2","iLoandata","hasReport","FrozenCreditIndex","scrollY","_useState129","_useState130","iTopEdge","topEdge","getNavBarProps","_creditScoreDetails$D3","_creditScoreDetails$D4","handleGetAddressHistoryList","iAdditionalEmploymentInfo","_item$subMenu2","mianContainer","NavBar","settingsDetails","LeftNavBar","appDownloadFlag","appDownloadSkip","AppraisalPayment","floahandleSaveSubjectPropertytPage","handleLoaderDetails","handleSaveSSnDetails","josn","_document$querySelect","contentOffset","SummaryInfo","ContactInfo","AddressHistory","CreditScore","Income","Government","BorrowerVerification","DocumentUpload","translateY","ShareApp","LoanContacts","Settings","CalculatorApp","CalculatorMenu","OtherLoanVendor","prevDocumentViewProps","card","fixToText","container_","swipeContainer","infoContainer","boldText","linkText","Login","_props$route2","_props$route2$params","_props$from","_props$performAction","performAction","_props$loginType","loginType","logInDetails","setLoginDetails","emialSentTo","setEmailSentTo","isPasswordSecure","setIsPasswordSecure","isTerminated","setIsTerminated","isRemember","setIsRemember","appIsReady","setAppIsReady","hideSecureEmail","setHideSecureEmail","deviceId","setDeviceId","accesscodeWarningMsg","setAccesscodeWarningMsg","setHeaderText","AccessCode","formatedUserName","credentials","setCredentials","webPageURL","setWebPageURL","WebloginId","biometricDetails","setBiometricDetails","complianceMsg","setComplianceMsg","setcomplianceURL","handleEmailSentTo","updateCredential","isFormat","handleUserNameValidation","_credentials$userName","_logInDetails$CellPho","_credentials$userName2","handleGetDeviceId","deviceIdExist","saveCredential","handleCreateSessionWebLogin","loginName","handleGetNextStepWeb","handleCheckPasscodeExpired","handleOpenPage","_logDetails2","username","IP","handleCheckIsSignUpdoneWeb","_logDetails3","SignUpURL","IsSignUpComplete","ApprovalStatus","ApprovalTaskExists","CertDone","logintype","_logDetails4","handleAccessCodeLogin","isEnterAccessCode","handleLogin","_logDetails5","AutoRedirectCheck","handleCloseOtherSession","handleLogAutoGAEventPasscode","SaveResp","handleLogGAEventPasscode","_logDetails6","_props$route3","startNewLoan","handleSecureDocLogin","_ref5$activeLoanCount","_ref5$activeLoanId","url_","_ref8$activeLoanCount","_ref8$activeLoanId","handleSelectLoan","LoginMethod","handleLoginClick","MaxPasscodeIncorrectLogin","refId","isShowedBioMetricOption","handleLogFailedLoginEvent","AccountLocked","logDetails_","attemptExceed","UserWebloginId","LO","fromAction","Prevpage","Errmsg","strobj","emailmethod","PrevPage","handleCreateAccessCode","reff","handleLoginWithBioMetric","enroll","prevBiometricDetails","isLogin","_ref13$activeLoanCoun","_ref13$activeLoanId","handleSetAccessCodeHeader","isValidateAccesscode","navigateDetails","_newPassword$confirmP","_newPassword$confirmP2","prevNewPasswordMessage","_prepare","visitorIdOld","visitorId","prepare","bioMetricLoginDetails","biometricAuth","onLayoutRootView","SplashScreen","headContainer","headText","getHeaderText","bodyContainer","formatedCellPhone","sList","logDe","cssCompMsg","footTextNoUnderline","isForgotPassword","footText","imgMultipleLoginWrapper","imgMultipleLogin","getSecureEmail","NaN","getSecurePhone","footContainer","IISSession","action","isOnload","showFooter","emailSentTo","setIISSessionId","disabledButton","setDisabledButton","handleGetRouteName","Route","getQuerystring","glo_CampaignLoginHdr","glo_headermessage","formattedUserName","setnewPasswordMessage","timer","setInterval","resizeLoginIframe","clearInterval","time","handleResetState","handleGetNewDeviceId","iframe","IISSessionIdASP","IISSessionIdASPEle","contentDocument","handleGetASPId","handleGetIISid","handleUpdateIISSession","LoanBased","handleCheckLoanBased","StartLoanApp","checkValue","RateQuoteId","PublicRateQuoteId","HomePage","attributes","glo_SessionId","handleSetCookies","JustGetUrl","LOId","PublicPage","_window$parent2","handleAssociateLoanId","getQuerystring_document","NextURL","Loginmethod","def","handleUpdateUserEmailInCTA","_window3$parent","objLoginParams","fnLoadLoanSelection","glo_clicktype","fnAssignRateSheetParams","_packageId","ReDirectURL","packageId","Package","handleEsignProcess","ChatWithId","handleChatProcess","LoginXML","DOMParser","documentElement","$LIXD","fnCreateSessionNew","fnCreateLoanAndLock_publicpage_New","handleRateOptionsLogin","URL_","handleUpdateSessionId","strPackage","_logDetails7","parseXML","activeCount","close","RateOptions","LockThisRate","fnCloseCampignModal","fnTriggerFrameOptions","ParentPage","_window4","_window4$parent","_window4$parent$docum","_window4$parent$docum2","accessCode","_response$UserDisplay","handleGetEmailMethod","_window5","_window5$parent","handleCreateNewAccClick","prevCredentials","DBAccessCode","_logDetails8","_logDetails8$CellPhon","handleLogInValidation","iButtontext","_window6","_window6$parent","_window7","_window7$parent","GloParentDeviceId","_window$parent3","iDeviceId","iVisitorId","fp","FingerprintJS","handleLogDWVisitorsEvent","_window8","_window8$parent","_window$parent4","_window9","_window9$parent","_window10","_window10$parent","IISSessionEle","aspId","cookie","handleCreateSessionWebLoginWrapper","Frame","handleSetEmailId","isInitiateLogin","handleForgotPassword","existingFlowRunScenario","CampaignPage","CampaignInline","getDeviceId","parentURL","Eventrecorded","PriorPage","referrer","lowerParentURL","includesParentURL","bind","IsSiteLogin","RegularLogin","glo_CampaignLoginHdrInline","JobPos","JobDesc","uniqueid","UserWebLoginId","_window12","_window12$parent","parser","_window11","_window11$parent","UserExists","header_","fncancellockconfirm","prevLoginDetails","enableEmailField","Signup","_ref$deviceId","_ref$loginType","errorMsg","setErrorMsg","mortgageEmployee","vendor","setUserType","PasswordMisMatch","_React$useState","enteredAccessCode","_React$useState2","signUpDetails","setSignUpDetails","_React$useState3","_React$useState4","validateSignUp","setValidateSignUp","getExpireDate","expireInMinutes","now","expireTime","setMinutes","getMinutes","handleChange","signDetails","accessCodeFlag","Ref","handleUserTypeChange","uType","handleSaveUseType","ShortCode","UserTypeSelected","CustDetails","siz","reset","textBox","_ref2$deviceId","setErrormsg","setCurrentpage","navigateURL","handleValidateAccessCode","StoreCampaignDetails","GloWebLoginId","GloWebLoginIdModal","GloStayInPage","GloProceedtoWelcome","urltogo","loginverifyurl","_window$parent2$docum","_window$parent2$docum2","handleSubmit","handleCreateWebLoginforChat","emailMethod","prevPage","borrowerType","mortgageEmployeeType","userTypeId","_signDetails2","CustomizeOptions","fieldval","GatherDataId","blremove","handleBorrowerLogin","handleNextToLogin","_signDetails3","_signDetails$signUpDe","handleLogGAEventEmployee","_signDetails$WebLogin","_signDetails$SessionI","IpAddress","fnStoreQueryParams","isBorr","urlToGo","_window$parent5","_window$parent6","ContactMethod","GatherdataId","TaskTable","iRowData","setRowData","handleRedirectURL","Link","Publicpage","borderRightWidth","emptyRow","DashBoardTable","_contextDetails$taskT","_props$handleGetUserT","_props$processingStat","_props$setProcessingS","activeRowData","completeRowData","taskDetails","setTaskDetails","setIndex","routes","taskCount","targetElement","borderTopRightRadius","borderTopLeftRadius","SafeAreaView","pagingEnabled","onMomentumScrollEnd","indexOfNextScreen","taskName","textTransform","loanKeyDetails","check","paymentRow","paymentRowCellOne","paymentRowCellTwo","webWrapper","loanCount","setLoanCount","iRecentLoans","recentLoans","setRecentLoans","currentLoanDetails","setCurrentLoanDetails","ButtonContinue","ButtonReviewLoan","prevCurrentLoanDetails","flexFlow","isLoanProductSelected","_ref2$check","_row$LoPhone","_params$UserId","iRecentLoansCount","column","creditText","_taskDetails$activeRo","_taskDetails$complete","_taskDetails$activeRo2","_taskDetails$complete2","_taskDetails$activeRo3","_taskDetails$complete3","isClear","isDelate","iContextDetails","_ref$from","_ref$flag","taskPoolCount","handleGetRecentLoans","firstActive","loanDetails","sunPage","RecentLoans","Payment","StartScreen","biometricWebLoginId","setBiometricWebLoginId","tryLoginWithFace","setTryLoginWithFace","setUserName","paramsObj","DeviceEventEmitter","ipaddress","ip","GetLoanOfficerMappingForIP","_ref6$activeLoanCount","_ref6$activeLoanId","_bioMetricLoginDetail","_bioMetricLoginDetail2","_bioMetricLoginDetail3","handleDrawerView","displayComponent","shadowProp","paginationWrapper","paginationDots","setJSExceptionHandler","isFatal","setNativeExceptionHandler","errorString","Stack","createNativeStackNavigator","registerRootComponent","setTitle","fontsLoaded","setFontsLoaded","loadFont","Font","loadAsync","OpenSansRegular","OpenSansBold","OpenSansItalic","OpenBoldItalic","Regular","RobotoRegular","RobotoMedium","Inter","segoeUI","segoeUIBold","segoeUIBold700","iTitle","Provider","NavigationContainer","GlobalStyles","StatusBar","barStyle","showHideTransition","Navigator","initialRouteName","screenOptions","headerShown","component","LoginWeb","SignupWeb","DashBoard","Calculator","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","d","leafPrototypes","getProto","getPrototypeOf","t","this","ns","getOwnPropertyNames","definition","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}