{"version":3,"sources":["styles/assets/external-link-icon.svg","styles/assets/lemon.png","styles/assets/phone.png","components/AlertBanner/AlertBanner.module.css","styles/assets/warning.png","styles/assets/Arrow_right.svg","styles/assets/btn-dropdown-icon.svg","styles/assets/test-document-upload-success.png","styles/assets/user.svg","styles/assets/bank.svg","styles/assets/amount.svg","styles/assets/user-blue.svg","styles/assets/bank-blue.svg","styles/assets/amount-blue.svg","styles/assets/support.svg","styles/assets/logout.svg","styles/assets/message-blue.svg","styles/assets/message.svg","styles/assets/New-transfer-inactive.svg","styles/assets/New-transfer-active.svg","styles/assets/message-searchicon.svg","styles/assets/table-filter-asc-icon.svg","styles/assets/table-filter-dsc-icon.svg","styles/assets/filter-selected-close-icon.svg","components/PaymintsTable/style.module.scss","styles/assets/table-download-icon.svg","styles/assets/mobile-table-arrow.svg","styles/assets/icon_question.svg","styles/assets/icon_pnc.png","components/SpinnerLoader/SpinnerLoader.jsx","react-auth0-spa.js","utils/service/service_user_api.js","utils/service/service_transfer_api.js","utils/service/service_tenant_api.js","utils/util.js","components/BoxContainer/BoxContainer.jsx","components/CreateAccountWizard/updateAction.jsx","components/ErrorMessajeInput/ErrorMessageInput.jsx","utils/apiSettings.js","utils/service/service_api.js","components/MessageCenter/mock-data.js","reducers/account/AccountActions.js","reducers/account/AccountActionTypes.js","components/PhoneField/PhoneField.jsx","components/CreateAccountFirstStep/CreateAccountFirstStep.jsx","components/CreateAccountVerificationStep/CreateAccountVerificationStep.jsx","components/SsnInput/SsnInput.jsx","components/SsnInput/SsnToggleVisibilityInput.jsx","contexts/sensitiveDataContext.js","utils/validations.js","components/Select/Select.jsx","utils/constants.js","utils/encryption.js","components/CreateAccountSecondStep/CreateAccountSecondStep.jsx","components/FormatAddress/FormatAddress.jsx","components/DestinationAccount/DestinationAccount.jsx","utils/service/service_institution_logo.js","reducers/transfer/TransferActionType.js","reducers/transfer/TransferActions.js","components/AmountInput/AmountInput.jsx","hooks/useAllCreditTransferTypes.js","hooks/useAllActiveOfficesSorted.js","hooks/useAllRealtorsFromTenant.js","components/TransferDetails/TransferDetails.jsx","components/TransferSummary/MobileTransferSummary/MobileTransferSummary.jsx","utils/service/service_bank_api.js","components/ContentModal/ContentModal.jsx","components/TransferSummary/TransferSummary.jsx","components/TransferSuccess/EmailAddresses.jsx","components/TransferSuccess/InfoDisbursement.jsx","components/TransferSuccess/InfoEmail.jsx","components/TransferSuccess/InfoTransfer.jsx","components/TransferSuccess/SuccessTitle.jsx","components/TransferSuccess/MobileTransferSuccess/MobileTransferSuccess.jsx","components/TransferSuccess/SuccessLastRow.jsx","components/TransferSuccess/SuccessSecondRow.jsx","components/TransferSuccess/SummaryTransfer.jsx","components/TransferSuccess/TransferSuccess.jsx","components/PlaidButton/SelectedBankAccount.jsx","components/AccountError/AccountError.jsx","components/PlaidButton/PlaidButton.jsx","components/PlaidButton/PlaidVerifyButton.jsx","utils/request.js","hooks/useStore.js","components/FieldRadioButton/FieldRadioButton.jsx","components/DisconnectModal/disconnectModal.jsx","components/BankAccounts/AddAccountTooltip.jsx","components/BankAccounts/BankAccounts.jsx","hooks/plaid/usePlaidTokenForMicrodepositStart.js","components/BankAccountSelection/BankAccountSelection.jsx","components/FileUpload/FileUpload.jsx","components/FileUpload/InputFile.jsx","reducers/asset/AssetActionTypes.js","components/DocumentVerification/DocumentVerification.jsx","reducers/asset/AssetActions.js","hooks/useAllTransferFeeConfigs.js","components/CreateAccountWizard/CreateAccountWizard.jsx","components/CreatePartnerAccountFirstStep/CreateAccountFirstStep.jsx","utils/service/phoneFormatter.js","components/TransferDetailsPartner/TransferDetailsPartner.jsx","hooks/useAllRealtors.js","components/CreateAccountWizardForPartner/CreateAccountWizard.jsx","components/AlertBanner/index.jsx","hooks/useAllTransfersSorted.js","utils/service/service_pdf-download.js","components/TransferHistory/TransferDocuments.jsx","components/TransferHistory/InboundTransfer.jsx","components/CustomTooltip/CustomTooltip.jsx","components/TransferHistory/TransferEditTooltip.jsx","components/TransferHistory/OutboundTransfer.jsx","components/TransferHistory/TransferHistoryListing.jsx","components/TransferHistory/MobileHistory/MobileHistory.jsx","components/TransferHistory/TransferHistory.jsx","components/BankAccountsHistory/BankAccountsHistory.jsx","components/Account/Account.jsx","components/MenuNavBar/MenuNavBar.jsx","components/Login/Login.jsx","utils/service/service_message-center.js","components/PaymintsTable/PaymintsTable.jsx","components/MessageCenter/MessageCenterColumnCfg.js","components/MessageCenter/StandardView.jsx","components/MessageCenter/MobileView.jsx","components/MessageCenter/MessageCenter.jsx","components/HomePage/HomePage.jsx","App.js","serviceWorker.js","utils/history.js","reducers/account/AccountReducer.js","reducers/transfer/TransferReducer.js","reducers/asset/AssetReducer.js","reducers/RootReducer.js","store/Store.js","utils/client.js","index.js"],"names":["module","exports","SpinnerLoader","withoutMargin","className","DEFAULT_REDIRECT_CALLBACK","window","history","replaceState","document","title","location","pathname","Auth0Context","React","createContext","useAuth0","useContext","Auth0Provider","children","onRedirectCallback","initOptions","useState","isAuthenticated","setIsAuthenticated","user","setUser","auth0Client","setAuth0","loading","setLoading","popupOpen","setPopupOpen","useEffect","a","createAuth0Client","auth0FromHook","search","includes","handleRedirectCallback","appState","getUser","initAuth0","loginWithPopup","params","console","error","Provider","value","getIdTokenClaims","loginWithRedirect","getTokenSilently","getTokenWithPopup","logout","props","returnTo","origin","CREATE_USER_QUERY","gql","useCreateClient","useMutation","createClient","data","clientPhone","undefined","UPDATE_USER_QUERY","useUpdateClient","updateClient","client","Client","GET_CUSTOMER_QUERY","useClientByPhone","mobileNumber","phone","isNil","isEmpty","useQuery","variables","where","mobilePhone","loadingSearch","refetch","allClients","GET_ALL_CLIENT_DOCUMENT_QUERY","CREATE_TRANSACTION_QUERY","useCreateTransfer","createTransfer","tenant","UPDATE_TRANSACTION_QUERY","useSaveTransfer","saveTransfer","transfer","Transfer","GET_TRANSACTION_QUERY","useTransfer","id","loadingSearchTransfer","refetchTransfer","GET_TRANSACTIONS_QUERY","GET_ALL_TENANTS_QUERY","useAllTenants","tenantID","identifier","allTenants","GET_BRANDINGS_FROM_TENANT_QUERY","useAllBrandingsFromTenant","tenantId","active","loadingBranding","refetchBrandings","branding","allBrandings","GET_DEFAULT_BRANDING_FROM_TENANT_QUERY","useDefaultBrandingFromTenant","loadingDefaultBranding","refetchDefaultBranding","defaultBranding","GET_ESCROW_ACCOUNTS_FROM_TENANT_QUERY","useEscrowAccountFromTenant","destAccount","allBankAccounts","asyncWrapper","promise","then","catch","err","formatFromDisplay","format","primary","secondary","transferType","isDebit","name","firstName","lastName","filter","f","join","sourceBankAccount","bankName","accountLastFourDigits","formatToDisplay","destBankAccount","extractNotesFromJson","possibleJsonString","obj","JSON","parse","note","e","getQueryVariable","query","variable","splitSymbol","vars","split","i","length","pair","filterNotNull","list","item","isNull","formatDayFromUTC","date","newDate","day","month","year","getClientStore","sessionStorage","getItem","getRealtorStore","realtor","clearStore","clear","setItem","key","removeItem","getTenantIdentifier","hostname","paymintsCurrencyFormatter","decimals","style","fallback","formatter","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","numeric","createLogButton","brandLogo","showLogin","onClick","push","noShadow","type","BUTTON_TYPE","INVERSE_BLUE","Logo","mobile","screen","width","src","alt","hidden","withRouter","color","withBorder","withDoubleBorder","withLogButton","widest","internalBox","get","path","selectedTab","classNameBox","classNames","classNameContainer","updateAction","state","payload","ErrorMessageInput","this","Component","defaultProps","APIDomain","process","axios","defaults","baseURL","plaidStartMicrodepoits","method","headers","Authorization","url","response","reload","sendEmailReceipt","route","transfer_GUID","TRANSFER_GUID","emailRecipient","additionalEmailRecipient","getSMSCode","tenant_GUID","client_GUID","saveSensitiveData","log","getSensitiveData","messageKey","transfer_request","transfer_receipt","transfer_fail","transfer_initiated","getPlaidCreateClient","dispatch","APIUtil","getPlaidCreateClientSuccess","errorElement","message","getClientAccounts","clientId","getBankAccountsSuccess","updateAuth0User","updateAuth0UserSuccess","phoneMask","mask","onChange","target","replace","Title","InfoCreateAccount","introductoryText","FieldsPersonalInformation","register","errors","setValue","watch","control","placeholder","autoComplete","ref","required","maxLength","Warning","PersonalInformation","FieldsContactInformation","as","PhoneField","rules","phone_number","Phone","ContactInformation","FooterInformation","setDisabled","checked","href","rel","linkIcon","connect","onUpdateAuth0User","beforeContinue","refetchNewClient","useForm","defaultValues","handleSubmit","action","useStateMachine","messageError","onSetError","disabled","getCode","clientid","onSubmit","newUser","email","clientData","res","auth0User","connection","create_user","role","new_user_role","htmlType","registerButtonText","to","useHistory","isError","setError","verificationCode","code","stringify","setClientStore","onKeyUp","validate","LINK","SsnMask","SsnToggleVisibilityField","visible","setVisible","toggleVisibility","buildCssForIcon","classnames","onFocus","onBlur","SensitiveDataContext","SensitiveDataProvider","clientID","sensitiveData","setSensitiveData","getData","useCallback","useSensitiveData","shouldHideDocuments","status","indexOf","toLowerCase","validAge","DOB","Date","today","startOfToday","differenceInYears","REGEXP_ONLY_4_CHAR","validSSN","ssn","ssnWithoutDash","test","validateAccountinfo","account","validAmount","balance","fee","Select","options","placeholderText","map","states","encrypt","AES","toString","decrypt","enc","Utf8","InfoSSN","FieldSSN","FieldBirthday","dateOfBirth","FieldEmail","address1","city","zipcode","intialform","refetchSensitiveData","newUserWithoutSsnDash","userValues","SSN","FormatAddress","streetNumberName","apartmentSuiteNumber","withSymbol","formatAddress","formatAddressStreetApartment","formatZipCode","formatAddressCityStateZipCode","DestinationAccount","tenantName","description","destAccountLogo","office","logoURL","GET_INSTITUTION_LOGO_QUERY","useInstitutionLogo","institutionID","institutionCode","institutionLogo","allInstitutionLogos","GET_INSTITUTION_LOGO_OR_QUERY","useInstitutionLogoOR","institution","institutionsLogo","saveTransferDoc","transferId","saveTransferDocSuccess","numberMask","createNumberMask","allowDecimal","AmountInput","GET_ALL_CREDIT_TRANSFER_TYPES","useAllCreditTransferTypes","fetchPolicy","isCredit","allTransferTypes","GET_OFFICES_SORTED_QUERY","useAllActiveOfficesSorted","loadingOffices","refetchOffices","activeOffices","allOffices","GET_REALTORS_FROM_TENANT_QUERY","useAllRealtorsFromTenant","realtors","allRealtors","InfoTransfer","FieldsEMD","realtorData","setRealtorData","showREAInfoFill","display","padding","fullName","phoneNumber","FieldsInfoTransfer","purposes","emdVisible","setFieldsEMDVisible","purposesOptions","purpose","label","backgroundColor","borderRadius","marginTop","AntSelect","defaultValue","boxShadow","border","onSelect","InfoPropertyAddress","FieldsInfoPropertyAddress","propertyAddress1","propertyCity","propertyState","propertyZipcode","InfoAmount","FieldInfoAmount","bankBalance","watchDocument","regDocument","controlDocument","setMaxAmountValidate","maxAmountValidate","MAXIMUM_AMOUNT","transferFeeConfigData","getValues","number","justifyContent","first","clientPays","amount","extractTranferFeeFromData","matchesAmount","onPaste","preventDefault","amount2","FieldOfficeSelect","officeOptions","labelInValue","RealtorSelect","setRealtorID","realtorsOptions","splittedFirstAndLast","D","on","showSearch","onClickGoToTransferHistory","createDraftTransfer","newTransfer","creditTransferTypes","tfg","Object","assign","expectedClosingDate","otherIndividuals","getDefaultValues","propertyAddress2","onSaveTransferDoc","notes","setShowREAInfoFill","showAmountInfo","onShowAmountInfo","realtorID","loadingCreditTransferTypes","setPurposes","scrollTo","routingType","saveAsDraft","amountCompare","Number","destAccountId","bankAccountId","newTransferComplete","newUserAddress","HeaderLogo","LIGHT_BLUE","TransferSummary","textTransform","MobileTransferSummary","bankAccount","bankAccountLogo","disbursement","GET_BANK_ACCOUNT_QUERY","useBankAccount","BankAccount","small","progress","ContentModal","Modal","animation","autoFocus","backdrop","enforceFocus","show","isVisible","onExit","onClose","centered","onHide","hide","Header","closeButton","hideCloseButton","Body","content","Footer","withoutButtons","isCancelButton","onSecondaryButton","secondaryButtonText","onPrimaryButton","primaryButtonText","transformPurpose","DisplaySummationRows","borderTop","paddingTop","paddingBottom","SummaryTransfer","moment","UseDifferentAccountLink","transferDwolla","fromSummary","onGetPlaidCreateClient","onstartDwolla","config","sourceBankAccountId","startDwollaSuccess","showModal","setShow","handleClose","handleShow","pathUrl","values","disbursementData","destBankAccountId","customErrMsg","pocPhone","supportEmail","escrowAccountLogo","arrow","onClickBackButton","EmailAddresses","m","marker","pattern","InfoDisbursement","InfoEmail","SuccessTitle","TransferSuccess","address2","MobileTransferSuccess","SuccessLastRow","SuccessSecondRow","transferService","onSendEmailReceipt","sendEmailReceiptSuccess","success","sendEmailReceiptError","emailAddresses","uniqueEmailAddressList","Set","keys","SelectedBankAccount","plaidResponse","onGetPlaidStartMicrodepoits","onGetBankAccounts","nextStep","onSetErrorClient","onSetLoadingService","verified","manual","accountRequest","navigateAccounts","bankAccounts","plaidAccountId","publicToken","metadata","verification_status","responsePlaid","setTimeout","bankAccountSelectedID","bankAccountSelected","find","isLoading","initialSate","plaidInfoToVerify","accessToken","SelectedBankAccounts","PlaidAddBankAccountButton","product","onSuccess","isOpen","token","isAddBank","onPlaidSuccess","clientName","client_id","REACT_APP_PLAID_CLIENT_ID","env","auth","flow_type","selectAccount","usePlaidLink","open","ready","PlaidVerifyButton","authToken","getAuthToken","setData","getbykey","removeStoreByKey","request","create","REACT_APP_BACKEND_URL","xsrfCookieName","xsrfHeaderName","REACT_APP_DOMAIN_URL","FieldRadioButton","handleChange","DisconnectModal","showDisconnectModal","setShowDisconnectModal","onReloadBankAccounts","onDisconnectBankAccount","keyboard","opacity","Button","variant","AddAccountTooltip","dismissHandler","plaidButton","tabIndex","el","getElementById","left","pointerEvents","isSelectAccount","Subtitle","nullBalanceHandler","toFixed","BuildRow","Controller","onGetPlaidVerifyMicrodepoits","reloadingBankAccounts","balanceDateTime","time","setIsOpen","linkToken","setlinkToken","setBankAccountId","NavyFederalCreditUnionSavingsAccount","getTokenResponse","tokenResponse","Fragment","pendingVerification","selection","bankID","body","post","colspan","SmallTable","BankAccountsList","isEmptyBankAccounts","index","TableData","Table","responsive","nextStepFromSummary","disconnectBankAccountSuccess","hasVerifiedAccount","loadingService","reloadBankAccounts","errorClient","isVerifyingAndLinking","setIsVerifyingAndLinking","pncTooltipVisible","setPncTooltipVisible","startToken","setStartToken","isFetchingBankAccounts","isFetchingCreateClient","isFetchedCreateClient","isFetchingDeleteBankAccount","PlaidTokenForMicroDepositsStart","client_user_id","products","forEach","size","codes","it","nextStepAfterPlaid","togglePncTooltip","bool","fontSize","marginBottom","position","onClickMakeTransfer","dob","lastSelected","cantEdit","onCantEdit","disbursementPath","option","isPendingOrSubmitted","editError","showPlaidButton","FileUpload","onDropFiles","selected","invalidFormat","useDropzone","onDrop","getRootProps","getInputProps","isDragActive","InputFile","setInvalidFormat","files","onUploadDocument","formData","form","uploadDocumentSuccess","selectedDocument","selectedDocumentType","addToast","useToasts","FormData","append","responseUploadDocument","documentType","assetId","responseTransferDoc","asset","uploadIdDocument","appearance","uploadImage","htmlFor","GET_ALL_TRANSFER_FEE_CONFIGS","useAllTransferFeeConfigs","domain","allTransferFeeConfigs","createStore","exact","render","CreateAccountFirstStep","CreateAccountSecondStep","BankAccountSelection","RealtorIntroText","introDefault","introText","displayDescription","textAlign","margin","flexDirection","alignItems","marginLeft","height","licenseArray","setLicenseArray","licenses","nameDefault","nameText","displayName","headshotImageURL","brokerage","license","websiteURL","unformattedNumber","formattedNumber","iMask","iNumber","charAt","phoneFormatter","officePhone","partnerURI","GET_ALL_REALTORS_QUERY","landingPageURI","pop","useAllRealtors","setRealtorStore","TransferDetailsPartner","AlertBanner","alertType","text","css","alert","closeIcon","GET_TRANSACTIONS_SORTED_QUERY","downloadPdf","responseType","TransferDocuments","documentData","escrowAgreements","receipts","openPdf","pdfUrl","downloadPdfPromise","file","Blob","fileURL","URL","createObjectURL","marginRight","InboundTransfer","clientDocuments","transferHasDocumentation","Row","Col","dangerouslySetInnerHTML","__html","createdAt","trim","BALL_TYPE","INACTIVE","PENDING","ACTIVE","SENT","VIEWED","COMPLETED","CANCELLED","ERROR","getStatusType","CustomTooltip","tooltipContent","Tooltip","popoverText","OverlayTrigger","placement","overlay","TransferEditTooltip","OutboundTransfer","xs","agent","TransferHistoryListing","transfers","t","DocumentSection","documents","doc","receipt","escrowAgreement","UpdateUI","updatedAt","decimal","MobileHistory","transfersData","transferCards","seeMoreInfo","updateSeeMoreInfo","setTransfers","status_not_in","OR","transferType_is_null","refetchTransfers","allTransfers","useAllTransfersSorted","transfersNew","loadingClientDoc","errorClientDoc","refetchClientDoc","allClientDocuments","useAllClientDocuments","bankAccountCodes","escrowBankAccountCodes","escrowBankAccount","allCodes","querySelector","transfersID","showMoreInfo","innerWidth","BankAccountsHistory","loadingTenant","middleName","validateNumber","ssnCutter","slice","rest","useStyles","makeStyles","theme","tooltip","newTransferStart","isMobile","openMenu","isSelectedAccount","isSelectedBank","isSelectedTransfer","isMessageCenter","isNewTransfer","hideSideNav","classes","userLogoBlue","userLogo","NewTransferActive","NewTransferInactive","bankLogoBlue","bankLogo","amountLogoBlue","amountLogo","messageBlue","messageIcon","LogOut","contactSupport","fontWeight","GET_CLIENTS_MESSAGE","PaymintsTable","table","columnCfg","pdfClickHandler","Function","prototype","dataIndex","sorter","b","defaultSortOrder","localeCompare","data-tooltip","downloadIcon","cursor","StandardView","tableData","pdfOpenHandler","columns","dataSource","addKeyToTableData","pagination","MobileView","mobileArrowIcon","MessageCenter","dynamicDateIndex","DateRanges","Today","Yesterday","subtract","lastXDays","startOf","endOf","baseCriteria","messageType_in","createdAt_gte","toISOString","createdAt_lte","searchCriteria","setSearchCriteria","allClientMessages","whereClause","useClientMessages","availableMessageTypes","setAvailableMessageTypes","showMessageTypes","setShowMessageTypes","showMobileFilter","setShowMobileFilter","sortOrder","setOrder","setTableData","searchKey","setSearchKey","copyTableData","setCopyTableData","daysDiff","setDaysDiff","rangeDate","setRangeDate","filterTableData","messages","checkedMessageTypes","sortTable","sortData","sort","selectMessageType","isChecked","newAvailableMessageTypes","str","orClause","propertyAddress1_contains_i","name_contains_i","buildOrClause","CalendarButton","daysDescription","days","newValue","handleSearchInput","searchIcon","RangePicker","tzOffset","getTimezoneOffset","dateRange","utc","toDate","diff","ranges","onOutsideClick","dropdownIcon","mt","sortIconAsc","sortIconDsc","hasTransfer","brandName","hasInitiatedTransfer","loadingServices","useLocation","header","footer","innerHTML","clientSsn","clientDob","isHide","isNewUser","brandBackgroundImage","brandBackgroundColor","behindFieldsColor","useStyle","fontFamily","customCSS","linkColor","buttonColor","fontColor","transferID","useAllTransfers","Style","styleSingleton","widthWithMenu","fonts","WebFont","load","google","families","tenantFavicon","Helmet","sizes","styles","autoDismiss","autoDismissTimeout","store","Boolean","match","createBrowserHistory","initialState","errorCreateClient","isFetchedBankAccounts","errorBankAccounts","deleteBankAccount","isFetchedDeleteBankAccount","errorDeleteBankAccount","updateAuth0","isFetchedUpdateAuth0","isFetchingUpdateAuth0","errorUpdateAuth0","accountReducer","startDwolla","isFetchedStartDwolla","isFetchingStartDwolla","errorStartDwolla","transferDoc","isFetchingTransferDoc","isFetchedTransferDoc","errorTransferDoc","isFetchingSendEmailReceipt","isFetchedSendEmailReceipt","errorSendEmailReceipt","transferReducer","uploadDocument","isFetchedUploadDocument","isFetchingUploadDocument","errorUploadDocument","assetReducer","rootReducer","combineReducers","ConfigureStore","preLoadedState","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","enhancer","applyMiddleware","thunk","ApolloClient","uri","authorization","preloadedState","currentUser","session","ReactDOM","redirect_uri","targetUrl","navigator","serviceWorker","registration","unregister"],"mappings":"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","file":"static/js/main.e748be6e.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/external-link-icon.bd236a01.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABhCAYAAADGBs+jAAAC3klEQVR4Ae2d4W2bQBiGPUJH6AgZIVJL2p8dIX9C8rMjZISO4BE6gkfpBkA6gKtrreo45UNx3hfO4CcSEmB/7+HnOfCB5Mtuxx8EIAABCEAAAhCAAAQgAAEIQAACENg+geahu/nSDt/v2u55q8untvt2e999uEibzePwo2mH45UsfepwFyXi89Pv2yuBn3Wy/nBREtKl5/okDEckXMClDwlIGPeB+HLUH7YwSooutWMKlbciCWl/5UOzNI8EC0YtBAkaP0s1EiwYtRAkaPws1UiwYNRCkKDxs1QjwYJRC0GCxs9SjQQLRi0ECRo/SzUSLBi1ECRo/CzVSLBg1EKQoPGzVCPBglELQYLGz1KNBAtGLQQJGj9LNRIsGLUQJGj8LNVIsGDUQpCg8bNUI8GCUQtBgsbPUo0EC0YtBAkaP0s1EiwYtRAkaPws1UiwYNRCkKDxs1QjwYJRC0GCxs9SjQQLRi0ECRo/SzUSLBi1ECRo/CzVSLBg1EKQoPGzVK9aQtPyO2ZLL3hLSPQ75qgHbWX/W9gs9h4kLIY6bggJMZvFXkHCYqjjhpAQs1nslVgCo6PqEpKcxQ5ixoai0dyMTZ4fHZ0JSDif5bsrkPBudL7CpSV8feo+Nu2wT3fk/5eHl3vfJxoncTka89il+UibdugDMPvi7ZbNoK11zAY5x3fCv54/MQnuDGcEEoq+HAHJ9tvPhiw7m5x2JfOiznMmTJwF7XC8e3z5WXiTN5FQIJz4PvjbS9OE6UWJvImEAmGCHEFJguaY0T1qrzi0uptLD1FPIooRUn9IQ9c5SCBhgmoarqYZ6+fo/XmzSMhpVFpHQiXwebNIyGlUWl+1hOjgt7K/Up94vdlodLQV2NHneJ1Gpb1IqAQ+bxYJOY1K66fn+8XN0/QznugUX9F++4NCWd/p33z9WhHE0RPRM497P/cNoiyEAAhAAAIQgAAEIAABCEAAAhCAAAQgAIFNEPgD8eazvZqqkSkAAAAASUVORK5CYII=\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"alert\":\"AlertBanner_alert__3vP18\",\"error\":\"AlertBanner_error__1yJ5w\",\"info\":\"AlertBanner_info__3vS58\",\"success\":\"AlertBanner_success__2ybEC\",\"warn\":\"AlertBanner_warn__1zd4c\",\"text\":\"AlertBanner_text__3kxMd\",\"closeIcon\":\"AlertBanner_closeIcon__TiiSw\"};","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABhCAYAAADGBs+jAAAFV0lEQVR4Ae1d7XHbMAz1CB2hI3SE3LVK+7Mj+I+V/OwIHSEjdISOkBEyQjawpA7gHvQRy7LwSIoAZZnInc+yJBLgAwE8kLKz29mfIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgCUgg87I+fikOzL57ql6KsXun1WB5/fy2PP+malBzrZwaBFvwW+PpUlOyrIoPMNLdTsQgUh+OXomzeAPgTwzRv5hWxqI/atx5Q1pW/AQYvMUOMYIw77OL+AGzg+1P9EifdWu++Pf97CPeAS0P9eD5+NigjEMB5oHollvS9rH+57otQIe+mLQ3lWdCfKToobJFHTe+3zw4E+mT8zoSiao75UNhh7j+RpzhE2uUpAsT1OUBRHdAVcJc54aOfQ7OfyrHPDAIOSvo+5wVDV462sx40tLX3EQKxs3mpF41UyPtQKq4XZc3mE6Osjjn2+NT8/YjhE2YUwnBCmZVDrXwu48Kseg1FAlFWWosK7S+L+6VBkzbq3RuB9gK4MFSU9VVh5guIVHjzlbfp+7QSKU709fumQZNUHiVRVJj56hBLeX3lbPa+FMVVChmbNQApjgorWh2VGly30jq/nCHhbVJ6Ju+nj9fcjpl4vAZ555RtAUesh2VECottWgws+eyVEohZS3hh5qsXqkVCKnJfeTd931pgWAHXTwsEBBVX2rMHhUEKWdryb6J/tB+cIkHiUJhBAYcKM5/lia599+hjF9Imx54JPRU1volZP1UC0ESvXS8EHjEtX86fbQGHAPQFD/URYgSaHNkVcI6ZB/eNx97kMkJoYgWeeX8FnNQimqPgOoVy/bWZ2niCqR5LshEEGoWjUCPQwNeqWVRBn3aOeHkoaCpGaB+7n1/cIwNNx7O5zxi08AHi/pZ5AoGKJgrR4s0BP1ZY2tW1jNCHzGQrumOMVI8dgC3aN3b0eSIWtnRQiHn5UuilstXaadC/nupOvhp1jucxg3HQaK9iMka+eFu0PBE7q9g9iLI+xQ4E6U00O7b/ZO21Z5SmEQgkDQ9OBv4gSDu2ahsB5Z0US+0DjovfHV4gsm+sbQQavDSrWwzokoYp+DZvBLlv4+AqX07OEoxhG6x4eGHGCeM3heRkkOwUE4ob4+LzqVyYlyNrBFdopeuLwdJoiJIZgSYpM5URSGdtkiGJC0xkFKYkhaU0Qu8N7Ld+bsYbYIET8Vg7Z7hub2Kyt0w/uaNUTKUeHzdueB4UN9sr9ZmR8mSgXn8HLpd92pQ5j5kH86cd7EHVCwgUSprDiz7Payl3ls9Fy/cxorVDzIHiaLQApgPA3xctjzNirk7jOmiFh8bWUsiRJL2fO7pC2POE1AMLnuLwbWA2nkIfO8GSLq+ikNAvZ4isT11KPX9aMwSftaByfsWNcQ8jRO8pXAx25gMKw3Rtpon8KQSEdoJEX4ntPCHN4hqi5dLF6ZUFMVVb/n3jK0HMCdfDX5Lfc2NUaE87cpMqQUi6PMGBwAKgVDGzerQ/jHve3x4vsat5A8wFiQFoE+Sh2bfx+dDs1QbNWWC3wz+SqIUHSEiqhRnAYfVLfI5Syk2AI+vGwNWh5hVAOYpvFXGFY0XJaFmE7ppNx7lgfKwiE4Qj84TJD2QVZV2pGIFlJaSA4lqRymAEOu2JCvP8quxu4oe6jvWi9rdHu5A1s+HS/5+D+7o+T08pJKnWK2jNaBwPMz/WZYu9NzAuyM+MnIyi6gVDXEK0LCewmbGmIyn9GpJ5xIgVrULVaemgp61ZG6Otmm/hJz6JrpF35PYaQrS9GwKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCFgCBgChsAdI/AfNvTePpLFywoAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/Arrow_right.32e704ca.svg\";","module.exports = __webpack_public_path__ + \"static/media/btn-dropdown-icon.6baa951c.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaoAAAEOCAYAAADYAlMOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADR9JREFUeNrs3T9slOcdwPHX/JEvCIKBEBMpKTA5LVLoENnKAlaHjChdOkZka8e2S6cGqqpbG6kZGilDEKOXJCxVkCoZlshWhhCJSgxVIH8EdgKYOiJnUZPe77hLDmLjs33v3fO+7+cjnUwSAvbj47783vd53xvK1jB/c3Gk8eFk43G88ZhsPEYyANi4hcZjuvG40HiceXrfroXH/eShNQL1RitSAJCXM43Hb1cL1tAqkXql8eEd0xMAfZyyXmvE6r1H/8OWFSJ1qvHhXZECoI+iOe+2GrT6RNX6Ca9bLwAG6HRjsjr1o1C1Dve9a30ASMAv24cBh1qRipHr08zhPgDSEOesDscGi/Y5qjdECoCEtHeeZ0Otaeq2NQEgQXtiojppHQBI1MkI1XHrAECijsehvzjs5/wUAClqbqYQKQBSNbLFGgCQMqECQKgAQKgAECoAECoAECoAhAoAhAoAoQIAoQIAoQJAqABAqAAQKgAQKgAQKgCECgCECgChAgChAgChAkCoAECoABAqSwCAUAGAUAEgVAAgVADwg215/wZf3VqwygzU/r0juf7607OXLTKVNjl+xEQFQHUJFQBCBQBCBYBQAYBQAYBQASBUACBUAAgVAAgVAAgVAEIFAEIFgFABgFABgFABIFQAIFQACBUACBUACBUAQgUAQgVA5W2zBIOxcG8hm1uay+bqc9mNpRtZfbne/Of4uJba1lo2Ojza/Hhg+EA2Whtt/vPI9hELCwgVG1O/X8+uLF7JrnxzJbt291pXQVr112r8v/FrhPg1OwN2cMfBbGznWPOjcAFCRVdxmrk905yccv/9llsxbMUrJq2JPRPZ2K6xrLal5hsCCBUPxGG9i19fbE5Pm5mcNivieO76uaw2X2tOWceeOmbKAoRKoC5ml+5cSmuya8QyPqd4HN19VLAAoaqaOMQXgZq5NZP859oO1sTeiWawHBIEhKrkYlNDHF6LaapIIqpxLuvEMyeaGy8AUuU6qk04P38+O/vZ2cJFqi0+7/j84+sAMFGVSBzqixf4fuzk69d0dfXu1ezVn7zqUCBgoiq6uCj3zf+8WZpIff911Vtf19KcbzIgVEWOVExSg9xynuukuNyaFMUKSMjQ/M3F7/L8Db66tVCKhSp7pDrFHS7iMGDclqkM9u+1FR9MVCapUk5WRd0kAghVpcTGifevv1+ZSHXGaurLqebXDyBUCYtrpMq2caLrSbJ1CyYAoUpU3Ey28+7kVdS+qS6AUCWmfd8+suY6OF8FCFVi4pBX1c5LrSbWwd0rAKFKSPvNDelYk0VrAghVMs7PmR5W8sH8BxYBEKpBi7fAcD5mZbELMLX32gKEqnJsoFg75ABCNSBxbso09Xhxnsq5KkCoTAvWCUCoHhaTVNUv7l3P5OnWSoBQDeDFl+7EdVWiDghVv0PlhXddnKcChKqfE8L9uhdeEyggVKaDUsV9ue6dgAGhEqq0Xb171SIAQtUPN+o3LMIGVPV9ugChMlH1wP4d+/IP/JLAA0KVuzLeieL4cy9lf//FX5ofTVSAUBXcnXt3ShepXx892fxxfMw9VjZUAEKVrzId9uuMVFvesfLmkkDetlmC8kaqM1bhwucf9vz3jfNUB3ccrPTaT89e9gSk0ibHj5io8lSGDQEHn3xu1UjlPVktLS/5UwoIVZ6KfugqIvXHl37X1c999We/8owHhIr+R2rH9h1r/ty79+5mf/rwb70PvbuoA0JFryJ17b+f9/zzcLE0IFQkGymAfrDrb0ChCRuJh0ilJ+8dT2CiYiDTUDzawRIpAKFKKlIRmnjEj1888HORAhCqtCLVFj/+/Yu/WfP6pvVEKpz991TfInVoxyHfXECoyhipTo+7GHe9kXrr0plc7kABIFQVjdTjYtU+PChSgFBVWN6Hrg7tfrbr0HTGqiiRGt467E8RkCvb03PWjsda9+LrjNVP941lh558tutdgYOcpA4MH/BNBoQqT7u3704uVsef7f7msQ73AWVX+UN/I9tH+jZZ/fWjfzS3jvdKCpGq+lt8AEJViomq7aMbHzevb+pFrExSgFCZqHIR1zdtNlapRMo0BQhVn4zWRgsTq5QmqX5HHhCqyhrEzrWNxCq1w31CBQhVyV9w1xOrFM9JOfQHCFUFXnC7iVWqGyf6fcgUEKrKGvQL7uNi9c9P/5VkpGIKrW2pefIAQtUP8YKbSqw673p+4YsPs7OXp0yhgFCRxq2AOmMVkXrr4zPJrpdQAf3iXn8dL7yX7lwa+OcRh//+cPHP6Ye95h5/gInKhJCoOD81OmwjBSBU/X/xtYtN1AGhSpm3VRcqQKiSNrZzzCJ0s067rBPQPzZTPDIp1LbWsvpy3WKsIg6Pun7qYdOzly0ClTY5fsREZapKx9HdRy0C0FdC9WioHNYSckCoUmajwOrisJ87pgNCNWBx/sXhrZVZF0CoEuHw3yrr4rAfMAB2/a3ygmz338Mc9ltd3juewESF6aELDvsBQpWYib0TFkGoAKFKV9x01b3/WtPlrjEX+QJCleRUtcdUZZoChCr1SWJrtSeJ2EDhfB0gVImKw11Vf5E2TQFClbhjTx2r9Nc/vnfckwAQqpTFoa+q3lYppimbKAChKoCqblW3RR8QqoKI81RVuytDTJGxRR9AqAqiaueqTFOAUBVMnK+pylRlSzogVKYqXyeAUPVeFS4AjmnKtVOAUBVUbNUu+22VTFOAUBVcXABb1qnKNAUIlanKNAUgVP15QS/bDkDTFCBUpg9fD4BQ9U+ZrqsyTQFCZarydQAIlanKNAUIFaWbRrzfFJC6bZZgc5p3q5ivZfXlemGnQjZnevayRaDSJsePmKhSVuS3q29G1hsjAokTqh4o6jsAV/WdiwGhEqqCODB8wDcPEKoqKOrOPxMVIFQAsEl2/cEm5b3jCUxUVFb9ft0iAEJVBXNLc4X8vK/dveabBwhVFVxZvOLzBhCqdF26c6mYofrmisN/gFCV3cztmWzh3kIhP/e47dPsrVnfRECoyirOTV38+mKhv4YLX19wrgoQqjKKQ2ZTX0wV9ma0naa+nCrshhBAqFhBHOo7+9nZwh7y+1F0G7GNr0esAKEqgThM9vbVt7O5erle1Nuxig0WACkZmr+5+F2ev8FXt0oyddyvN89HzdyaKf2TIt7+48QzJ0rzFiD79474kw5CVe5QxfbziFRZDvV1o7a11nz34ok9E0IFCJVApSvuDB/BKvI7AQsVCFWpQhVR+uTOJ81IVTlQK01YMV29sPuFwr2tiVCBUBU+VHH+KW4nFBsJ3FZobfE+VjFhFeWt7IUKiq2yb/MhThsXOx+bFwlff7DxYmznWGGiBZiokp6o4jqhq3evNsPkbgy9N1obzZ7f+XwzWqPDoyYqQKi6DVN7AijDXSSKIs5pxSHCeBzacWig4RIqEKpkQiVMwiVUIFRJhaodpIhTREqYiqUdrXbAhApYSWE2U8Tmh4fCVHdfuqL7flNGS5zj6gyXzRlA8hNVXMfU3pVn80M1J672rsLNXLtlogKh6nmo4mLbeIgTndGKa7c2cocMoQKh6lmo3LKItWzklk5CBUK16VDF4b3zc+cFinUF6+XRl5uHBQcdqunZy74hVNrk+JFcf/2BbqaIDRLnrp9zZwjWLf5SE++wXLa3JAF+bGBvnBjbyZtv1CdSbEI8f7w7MQhVbpGyxZyePJ/qc2IFQtU7cbgvXlRcnEtPn1fLD55XznOCUG2aSJFnrKa+nLIQUDJ93UwRW88d7iNP8fyK51lsYe+XvHc8gYmqT+KQzMztGStO7uJ55hAgCNW6zd6edciPvojnWTzfAKHq/oXjfr151wnol3i+xfMOEKquxLUupin6PVW5Rg+EqmtuLssgxK25AKHygkGy/AUJhKorsfvKYT8GIZ537lYBQrUmLxQMkm3qIFRrh8oFvgyQ5x8Ilb/RkrQbSzcsAgiVUJEu50dBqCDtULnoF4RqLbYIM0jOUYFQAYBQASBUACBUACBUAAgVAAgVAAgVVfDt/761CCBUkK4ntj1hEUCoACAf2ywBbM707GWLUGKT40csgokKAIQKAKECAKECQKgAIB1D8zcXv7MMAJioAECoABAqABAqABAqAIQKAIQKAKECAKECAKECQKgAQKgAECoAECoAECoAhAoAhAoAoQIAoQIAoQJAqABAqAAQKgAQKgAQKgCECgCECgCECgChAoBNh2rBMgCQqIUI1bR1ACBR0xGqC9YBgERdGJq/uTjS+MFtawFAgvZseXrfrjhHdcZaAJCYM9GoofhRa6r6tPEYsS4AJCCGqMMRqub29NZU9Zp1ASARr7Xa9MN1VI1/8V7jw2lrA8CAnW41qWno0f86f3PxVOPD69YJgAFF6lTnvxha6Wc1YvVK48M7mXNWAPRH8xRU5yTVtuItlFo/8XBmNyAA+YvWHF4pUqtOVI9MVzFVnWw8jjcek6YsAHowPU1nD244caa9aWI1/xdgAO86d8Ge9uVbAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/user.5a77bd4a.svg\";","module.exports = __webpack_public_path__ + \"static/media/bank.b827d180.svg\";","module.exports = __webpack_public_path__ + \"static/media/amount.09a55498.svg\";","module.exports = __webpack_public_path__ + \"static/media/user-blue.6983d356.svg\";","module.exports = __webpack_public_path__ + \"static/media/bank-blue.88e3537d.svg\";","module.exports = __webpack_public_path__ + \"static/media/amount-blue.6f7da3ce.svg\";","module.exports = __webpack_public_path__ + \"static/media/support.7f045895.svg\";","module.exports = __webpack_public_path__ + \"static/media/logout.24a7bccf.svg\";","module.exports = __webpack_public_path__ + \"static/media/message-blue.ee0c89d2.svg\";","module.exports = __webpack_public_path__ + \"static/media/message.4a8643a3.svg\";","module.exports = __webpack_public_path__ + \"static/media/New-transfer-inactive.8850ae29.svg\";","module.exports = __webpack_public_path__ + \"static/media/New-transfer-active.b149b19c.svg\";","module.exports = __webpack_public_path__ + \"static/media/message-searchicon.069971f3.svg\";","module.exports = __webpack_public_path__ + \"static/media/table-filter-asc-icon.63b817c4.svg\";","module.exports = __webpack_public_path__ + \"static/media/table-filter-dsc-icon.d22723ca.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter-selected-close-icon.6e2f2ee1.svg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"table\":\"style_table__11_L-\",\"amount\":\"style_amount__1G0PZ\"};","module.exports = __webpack_public_path__ + \"static/media/table-download-icon.7029f12b.svg\";","module.exports = __webpack_public_path__ + \"static/media/mobile-table-arrow.bd710ca6.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_question.ae6ef95f.svg\";","module.exports = \"data:image/png;base64,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\"","import React from 'react';\nimport './spinnerloader.css';\n\nconst SpinnerLoader = ({withoutMargin}) =>
;\n\nexport default SpinnerLoader;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport createAuth0Client from \"@auth0/auth0-spa-js\";\nimport SpinnerLoader from \"./components/SpinnerLoader/SpinnerLoader\";\n\nconst DEFAULT_REDIRECT_CALLBACK = () =>\n window.history.replaceState({}, document.title, window.location.pathname);\n\nexport const Auth0Context = React.createContext();\nexport const useAuth0 = () => useContext(Auth0Context);\nexport const Auth0Provider = ({\n children,\n onRedirectCallback = DEFAULT_REDIRECT_CALLBACK,\n ...initOptions\n}) => {\n const [isAuthenticated, setIsAuthenticated] = useState();\n const [user, setUser] = useState();\n const [auth0Client, setAuth0] = useState();\n const [loading, setLoading] = useState(true);\n const [popupOpen, setPopupOpen] = useState(false);\n\n useEffect(() => {\n const initAuth0 = async () => {\n const auth0FromHook = await createAuth0Client(initOptions);\n setAuth0(auth0FromHook);\n\n if (\n window.location.search.includes(\"code=\") &&\n window.location.search.includes(\"state=\")\n ) {\n const { appState } = await auth0FromHook.handleRedirectCallback();\n onRedirectCallback(appState);\n }\n\n const isAuthenticated = await auth0FromHook.isAuthenticated();\n\n setIsAuthenticated(isAuthenticated);\n\n if (isAuthenticated) {\n const user = await auth0FromHook.getUser();\n setUser(user);\n }\n\n setLoading(false);\n };\n initAuth0();\n // eslint-disable-next-line\n }, []);\n\n const loginWithPopup = async (params = {}) => {\n setPopupOpen(true);\n try {\n await auth0Client.loginWithPopup(params);\n } catch (error) {\n console.error(error);\n } finally {\n setPopupOpen(false);\n }\n const user = await auth0Client.getUser();\n setUser(user);\n setIsAuthenticated(true);\n };\n\n const handleRedirectCallback = async () => {\n setLoading(true);\n await auth0Client.handleRedirectCallback();\n const user = await auth0Client.getUser();\n setLoading(false);\n setIsAuthenticated(true);\n setUser(user);\n };\n return (\n auth0Client.getIdTokenClaims(...p),\n loginWithRedirect: (...p) => auth0Client.loginWithRedirect(...p),\n getTokenSilently: (...p) => auth0Client.getTokenSilently(...p),\n getTokenWithPopup: (...p) => auth0Client.getTokenWithPopup(...p),\n logout: (props) =>\n auth0Client.logout({ ...props, returnTo: document.location.origin }),\n }}\n >\n {loading && }\n {!loading && children}\n \n );\n};\n","import { useMutation, useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst CREATE_USER_QUERY = gql`\n mutation createClient($client: ClientCreateInput!) {\n createClient(data: $client) {\n id\n email\n mobilePhone\n }\n }\n`;\n\nexport function useCreateClient() {\n const [createClient, { loading, error, data }] = useMutation(\n CREATE_USER_QUERY\n );\n\n return {\n createClient,\n loading,\n error,\n clientPhone: data ? data.createClient : undefined,\n };\n}\n\nconst UPDATE_USER_QUERY = gql`\n mutation updateClient($id: ID!, $client: ClientUpdateInput!) {\n updateClient(id: $id, data: $client) {\n id\n email\n }\n }\n`;\n\nexport function useUpdateClient() {\n const [updateClient, { loading, error, data }] = useMutation(\n UPDATE_USER_QUERY\n );\n return {\n updateClient,\n loading,\n error,\n client: data ? data.Client : undefined,\n };\n}\n\nconst GET_CUSTOMER_QUERY = gql`\n query allClients($where: ClientWhereInput!) {\n allClients(where: $where) {\n id\n email\n firstName\n middleName\n lastName\n mobilePhone\n address1\n address2\n city\n state\n zipcode\n propertyAddress1\n propertyAddress2\n propertyCity\n propertyState\n propertyZipcode\n active\n updatedAt\n createdAt\n ssn\n tenant {\n id\n name\n tenantGroup {\n id\n groupName\n logoURL\n groupTagline\n bannerColor\n }\n }\n }\n }\n`;\n\nexport function useClient(emailID) {\n const email = isNil(emailID) || isEmpty(emailID) ? null : emailID;\n const { loading, error, data, refetch } = useQuery(GET_CUSTOMER_QUERY, {\n variables: { where: { email: email } },\n });\n return {\n loadingSearch: loading,\n error,\n refetch,\n client: data ? data.allClients[0] : undefined,\n };\n}\n\nexport function useClientByPhone(mobileNumber) {\n const phone =\n isNil(mobileNumber) || isEmpty(mobileNumber) ? '' : mobileNumber;\n const { loading, error, data, refetch } = useQuery(GET_CUSTOMER_QUERY, {\n variables: { where: { mobilePhone: phone } },\n });\n return {\n loadingSearch: loading,\n error,\n refetch,\n client: data ? data.allClients[0] : undefined,\n };\n}\n\nconst GET_ALL_CLIENT_DOCUMENT_QUERY = gql`\n query allClientDocuments($where: ClientDocumentWhereInput!) {\n allClientDocuments(where: $where) {\n id\n type\n description\n filePath\n fileURL\n status\n active\n transfer {\n id\n }\n }\n }\n`;\n\nexport function useAllClientDocuments(clientID) {\n const id = isNil(clientID) || isEmpty(clientID) ? null : clientID;\n const { loading, error, data, refetch } = useQuery(\n GET_ALL_CLIENT_DOCUMENT_QUERY,\n {\n variables: { where: { client: { id } } },\n }\n );\n return {\n loadingClientDoc: loading,\n errorClientDoc: error,\n refetchClientDoc: refetch,\n clientDocuments: data ? data.allClientDocuments : [],\n };\n}\n","import { useMutation, useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst CREATE_TRANSACTION_QUERY = gql`\n mutation CreateTransfer($transfer: TransferCreateInput!) {\n createTransfer(data: $transfer) {\n id\n }\n }\n`;\n\nexport function useCreateTransfer() {\n const [createTransfer, { loading, error, data }] = useMutation(\n CREATE_TRANSACTION_QUERY\n );\n return {\n createTransfer,\n loading,\n error,\n tenant: data ? data.createTransfer : undefined,\n };\n}\n\nconst UPDATE_TRANSACTION_QUERY = gql`\n mutation UpdateTransfer($id: ID!, $transfer: TransferUpdateInput!) {\n updateTransfer(id: $id, data: $transfer) {\n id\n }\n }\n`;\n\nexport function useSaveTransfer() {\n const [saveTransfer, { loading, error, data }] = useMutation(\n UPDATE_TRANSACTION_QUERY\n );\n return {\n saveTransfer,\n loading,\n error,\n transfer: data ? data.Transfer : undefined,\n };\n}\n\nconst GET_TRANSACTION_QUERY = gql`\n query Transfer($id: ID!) {\n Transfer(where: { id: $id }) {\n id\n firstName\n lastName\n email\n mobilePhone\n propertyAddress1\n propertyAddress2\n propertyCity\n propertyState\n propertyZipcode\n purpose\n status\n amount\n fee\n expectedClosingDate\n notes\n sellerName\n transferType {\n id\n name\n }\n otherIndividuals\n destBankAccount {\n id\n }\n sourceBankAccount {\n id\n bankName\n description\n accountNumber\n accountLastFourDigits\n bankDisplayName\n active\n client {\n id\n }\n updatedAt\n createdAt\n }\n office {\n id\n title\n city\n state\n }\n realtor {\n id\n firstName\n lastName\n id\n email\n }\n }\n }\n`;\n\nexport function useTransfer(id) {\n const { loading, error, refetch, data } = useQuery(GET_TRANSACTION_QUERY, {\n variables: { id },\n });\n return {\n loadingSearchTransfer: loading,\n error,\n refetchTransfer: refetch,\n transfer: data ? data.Transfer : undefined,\n };\n}\n\nconst GET_TRANSACTIONS_QUERY = gql`\n query allTransfers($where: TransferWhereInput!) {\n allTransfers(where: $where) {\n id\n firstName\n middleName\n lastName\n otherIndividuals\n email\n mobilePhone\n propertyAddress1\n propertyAddress2\n propertyCity\n propertyState\n propertyZipcode\n amount\n purpose\n expectedClosingDate\n sellerName\n notes\n emailMessage\n status\n active\n disbursement\n sourceBankAccount {\n id\n bankName\n description\n accountNumber\n accountLastFourDigits\n bankDisplayName\n active\n client {\n id\n }\n institutionCode\n updatedAt\n createdAt\n }\n destBankAccount {\n id\n bankName\n description\n accountNumber\n institutionCode\n }\n office {\n id\n title\n }\n realtor {\n firstName\n lastName\n id\n email\n }\n updatedAt\n createdAt\n }\n }\n`;\n\nexport function useAllTransfers(transferID) {\n const id = isNil(transferID) || isEmpty(transferID) ? null : transferID;\n const { loading, error, data, refetch } = useQuery(GET_TRANSACTIONS_QUERY, {\n variables: { where: { client: { id } } },\n });\n return {\n loadingSearchTransfer: loading,\n error,\n refetchTransfers: refetch,\n transfers: data ? data.allTransfers : undefined,\n };\n}\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst GET_ALL_TENANTS_QUERY = gql`\n query allTenants($where: TenantWhereInput!) {\n allTenants(where: $where) {\n id\n name\n description\n identifier\n type\n address1\n address2\n city\n state\n zipcode\n supportEmail\n pocPhone\n routingType\n tenantGroup {\n id\n groupName\n logoURL\n groupTagline\n bannerColor\n }\n }\n }\n`;\n\nexport function useAllTenants(tenantID) {\n const id = isNil(tenantID) || isEmpty(tenantID) ? null : tenantID;\n const { loading, error, data, refetch } = useQuery(GET_ALL_TENANTS_QUERY, {\n variables: { where: { identifier: id } },\n });\n\n return {\n loading,\n error,\n refetch,\n tenant: data ? data.allTenants[0] : undefined,\n };\n}\n\nconst GET_BRANDINGS_FROM_TENANT_QUERY = gql`\n query AllBrandings($tenantId: ID!, $active: Boolean) {\n allBrandings(where: { tenant: { id: $tenantId }, active: $active }) {\n id\n description\n logoURL\n faviconImgURL\n backgroundImageURL\n header\n footer\n registerText\n registerButtonText\n fontFamily\n fontSize\n fontColor\n fontWeight\n backgroundColor\n linkColor\n buttonColor\n accentColor\n customCSS\n tenant {\n id\n }\n }\n }\n`;\nexport function useAllBrandingsFromTenant(tenantId, active) {\n const { loading, error, refetch, data } = useQuery(\n GET_BRANDINGS_FROM_TENANT_QUERY,\n {\n variables: { tenantId, active },\n }\n );\n\n return {\n loadingBranding: loading,\n error,\n refetchBrandings: refetch,\n branding: data ? data.allBrandings[0] : undefined,\n };\n}\n\nconst GET_DEFAULT_BRANDING_FROM_TENANT_QUERY = gql`\n query AllBrandings {\n allBrandings(where: { default: true }) {\n id\n description\n logoURL\n backgroundImageURL\n header\n footer\n registerText\n registerButtonText\n fontFamily\n fontSize\n fontColor\n fontWeight\n backgroundColor\n linkColor\n buttonColor\n accentColor\n customCSS\n tenant {\n id\n }\n }\n }\n`;\nexport function useDefaultBrandingFromTenant() {\n const { loading, error, refetch, data } = useQuery(\n GET_DEFAULT_BRANDING_FROM_TENANT_QUERY\n );\n\n return {\n loadingDefaultBranding: loading,\n error,\n refetchDefaultBranding: refetch,\n defaultBranding: data ? data.allBrandings[0] : undefined,\n };\n}\n\nconst GET_ESCROW_ACCOUNTS_FROM_TENANT_QUERY = gql`\n query ActiveEscrowAccounts($tenantId: ID) {\n allBankAccounts(\n where: { tenant: { id: $tenantId }, ownerType: \"tenant\", active: true }\n ) {\n id\n bankName\n bankDisplayName\n accountNumber\n accountLastFourDigits\n institutionCode\n balance\n balanceDateTime\n active\n }\n }\n`;\n\nexport default function useEscrowAccountFromTenant(tenantId) {\n const { loading, error, refetch, data } = useQuery(\n GET_ESCROW_ACCOUNTS_FROM_TENANT_QUERY,\n {\n variables: { tenantId },\n }\n );\n return {\n loading,\n error,\n refetch,\n destAccount: data ? data.allBankAccounts[0] : undefined,\n };\n}\n","import isEmpty from 'lodash/isEmpty';\nimport split from 'lodash/split';\nimport invoke from 'lodash/invoke';\nimport isNull from 'lodash/isNull';\nimport filter from 'lodash/filter';\nimport join from 'lodash/join';\n\nexport const DEFAULT_DATE_FORMAT = 'MM/DD/YY hh:mm A';\n\nexport const asyncWrapper = async promise => {\n return promise.then(data => [null, data]).catch(err => [err, null]);\n};\n\n/**\n * Takes a transfer object and determines the \"From\" display\n * dangerouslySetInnerHTML\n * @param {*} transfer\n */\nexport const formatFromDisplay = (transfer, format = 'html') => {\n let primary = [];\n let secondary = [];\n\n // FUNDS IN, from = Tenant\n if (transfer?.transferType?.isDebit) {\n primary = transfer?.tenant?.name ?? '';\n secondary = '';\n }\n // FUNDS OUT, to = Client\n else {\n primary = [\n transfer?.client?.firstName ?? '',\n transfer?.client?.lastName ?? '',\n ]\n .filter(f => f)\n .join(' ');\n\n if (\n transfer?.sourceBankAccount?.bankName ||\n transfer?.sourceBankAccount?.accountLastFourDigits\n ) {\n secondary = [\n '(',\n `${transfer?.sourceBankAccount?.bankName ?? ''} `,\n `X${transfer?.sourceBankAccount?.accountLastFourDigits || '----'}`,\n ')',\n ].join('');\n } else {\n secondary = '';\n }\n }\n\n return format === 'html'\n ? `${primary}
${secondary}`\n : `${primary} ${secondary}`;\n};\n\n/**\n * Takes a transfer object and determines the \"To\" value\n * dangerouslySetInnerHTML\n * @param {*} transfer\n */\nexport const formatToDisplay = (transfer, format = 'html') => {\n let primary = [];\n let secondary = [];\n\n // FUNDS IN, to = Client\n if (!transfer?.transferType?.isDebit) {\n primary = [transfer?.tenant?.name ?? ''].filter(f => f).join(' ');\n secondary = '';\n }\n // FUNDS OUT, to = Tenant\n else {\n primary = [\n transfer?.client?.firstName ?? '',\n transfer?.client?.lastName ?? '',\n ]\n .filter(f => f)\n .join(' ');\n\n if (\n transfer?.destBankAccount?.bankName ||\n transfer?.destBankAccount?.accountLastFourDigits\n ) {\n secondary = [\n '(',\n `${transfer?.destBankAccount?.bankName ?? ''} `,\n `X${transfer?.destBankAccount?.accountLastFourDigits || '----'}`,\n ')',\n ].join('');\n } else {\n secondary = '';\n }\n }\n\n return format === 'html'\n ? `${primary}
${secondary}`\n : `${primary} ${secondary}`;\n};\n\n/**\n * The notes property in transfers MIGHT BE stringified JSON and we need to extract the note property from it\n * e.g., [{\"createdAt\":\"12/01/20 11:31 AM\",\"createdBy\":\"someone@somedomain.com\",\"note\":\"foo bar baz note\"}]\n * @param {*} json\n */\nexport const extractNotesFromJson = possibleJsonString => {\n try {\n const obj = JSON.parse(possibleJsonString);\n if (obj[0] && obj[0]?.note) {\n return obj[0]?.note;\n }\n return '';\n } catch (e) {\n return possibleJsonString ? possibleJsonString : '';\n }\n};\n\nexport const getQueryVariable = (query, variable, splitSymbol = '&') => {\n if (!isEmpty(query)) {\n const vars = split(query, splitSymbol);\n for (let i = 0; i < vars.length; i++) {\n const pair = vars[i].split('=');\n if (pair[0] === variable) {\n return pair[1];\n }\n }\n }\n return null;\n};\n\nconst getAddressComponentByType = (components = [], type, path = 'long_name') =>\n (components.find(component => component.types.includes(type)) || {})[path] ||\n '';\n\nexport function getAddressFromPlaceDetails({\n address_components: addressComponents = {},\n geometry = {},\n} = {}) {\n const getComponent = (type, path) =>\n getAddressComponentByType(addressComponents, type, path);\n\n const streetNumber = getComponent('street_number');\n const streetName = getComponent('route');\n const neighborhood = getComponent('neighborhood');\n\n return {\n address: `${streetNumber} ${streetName}`.trim(),\n streetNumber,\n streetName,\n neighborhood,\n zipcode: getComponent('postal_code'),\n city:\n getComponent('locality') ||\n getComponent('sublocality') ||\n neighborhood ||\n getComponent('administrative_area_level_3') ||\n getComponent('administrative_area_level_2'),\n state: `${getComponent('administrative_area_level_1', 'short_name')}`,\n country: getComponent('country'),\n lat: invoke(geometry, 'location.lat'),\n lng: invoke(geometry, 'location.lng'),\n };\n}\n\nexport const filterNotNull = list =>\n filter(list, item => (!isNull(item) ? item !== '' : false));\n\nexport const formatAddressStreetApartment = (\n streetNumberName,\n apartmentSuiteNumber,\n withSymbol = true\n) => {\n const formatAddress = filterNotNull([streetNumberName, apartmentSuiteNumber]);\n if (withSymbol) {\n return join(formatAddress, ', #');\n }\n return join(formatAddress, ', ');\n};\n\nexport const formatAddressCityStateZipCode = (city, state, zipcode) => {\n const formatAddress = filterNotNull([city, state]);\n const formatZipCode = !isNull(zipcode) ? ` ${zipcode}` : '';\n return `${join(formatAddress, ', ')}${formatZipCode}`;\n};\n\nexport const formatDayFromUTC = date => {\n const newDate = split(date, /[-,T]/);\n const day = newDate[2];\n const month = newDate[1];\n const year = newDate[0];\n return `${year}-${month}-${day}`;\n};\nexport const setClientStore = client => {\n return sessionStorage.setItem('client', JSON.stringify(client));\n};\nexport const getClientStore = () => {\n const client = sessionStorage.getItem('client');\n return client ? { user: JSON.parse(client) } : { user: undefined };\n};\nexport const setRealtorStore = realtor => {\n return sessionStorage.setItem('realtor', JSON.stringify(realtor));\n};\nexport const getRealtorStore = () => {\n const realtor = sessionStorage.getItem('realtor');\n return realtor ? { realtor: JSON.parse(realtor) } : { realtor: undefined };\n};\n\nexport const clearStore = () => {\n return sessionStorage.clear();\n};\nexport const setItem = (key, value) => {\n sessionStorage.setItem(key, value);\n};\nexport const getItem = key => {\n return { value: sessionStorage.getItem(key) };\n};\nexport const removeItem = key => {\n sessionStorage.removeItem(key);\n};\n\nexport const getTenantIdentifier = hostname => {\n const [identifier] = hostname.split('.');\n return identifier ? identifier : null;\n};\n\nexport const paymintsCurrencyFormatter = (\n value,\n decimals = 2,\n style = 'currency',\n fallback = '$0.00'\n) => {\n const formatter = new Intl.NumberFormat('en-US', {\n style: style,\n currency: 'USD',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n\n const numeric = +value;\n if (numeric) {\n if (numeric < 0) {\n return ['(', formatter.format(numeric), ')'].join('');\n }\n return formatter.format(numeric);\n }\n return fallback;\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from \"paymints-address-autocomplete-field\";\nimport { withRouter } from \"react-router-dom\";\nimport { getClientStore } from \"../../utils/util\";\nimport \"./boxContainer.css\";\nimport split from \"lodash/split\";\nimport get from \"lodash/get\";\nimport {\n useAllTenants,\n useAllBrandingsFromTenant,\n useDefaultBrandingFromTenant,\n} from \"../../utils/service/service_tenant_api\";\nimport { getQueryVariable } from \"../../utils/util\";\n\nconst createLogButton = (user, brandLogo, history, showLogin) => (\n
\n \n
\n {!user && !showLogin && (\n history.push(\"/login\")}\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n {\"Login\"}\n \n )}\n
\n
\n);\nconst Logo = (props) => {\n const mobile = window.screen.width < 1200;\n return (\n
\n
\n );\n};\n\nconst BoxContainer = ({\n children,\n className = \"\",\n color = \"default\",\n withBorder = true,\n withDoubleBorder = false,\n withLogButton = false,\n widest = false,\n internalBox = false,\n history,\n showLogin = false,\n}) => {\n const { user } = getClientStore();\n const tenantIdentifier = split(window.location.hostname, \".\")[0];\n const { tenant } = useAllTenants(tenantIdentifier);\n const { branding } = useAllBrandingsFromTenant(get(tenant, \"id\", \"\"), true);\n const { defaultBranding } = useDefaultBrandingFromTenant();\n const brandLogo = branding\n ? get(branding, \"logoURL\")\n : get(defaultBranding, \"logoURL\");\n const path = window.location.search.split(\"?\")[2];\n const selectedTab = getQueryVariable(path, \"disbursement\") || null;\n const classNameBox = classNames(\n `paymints__box-container paymints__box-container${\n internalBox ? \"__internal\" : \"\"\n }--${color} ${className}`,\n {\n \"with-border\": withBorder,\n }\n );\n const classNameContainer = classNames(\n `paymints__box-container__container paymints__box-container__box-shadow--default`,\n {\n widest: widest,\n }\n );\n\n if (withDoubleBorder) {\n return (\n <>\n
\n \n \n Success\n
\n
\n
\n {withLogButton &&\n createLogButton(user, brandLogo, history, showLogin)}\n
{children}
\n
\n \n \n );\n }\n\n return (\n
\n
\n {withLogButton && createLogButton(user, brandLogo, history, showLogin)}\n {children}\n
\n
\n );\n};\n\nexport default withRouter(BoxContainer);\n","export default function updateAction(state, payload) {\n return {\n ...state,\n data: {\n ...state.data,\n ...payload\n }\n };\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport \"./errorMessageInput.css\";\n\nclass ErrorMessageInput extends Component {\n render() {\n const { className, children } = this.props;\n const classNameContainer = classNames(\"error-message-input__container\", className, {})\n \n return (\n
\n {children}\n
\n );\n }\n}\n\nErrorMessageInput.propTypes = {\n children: PropTypes.any,\n className: PropTypes.string,\n};\n\nErrorMessageInput.defaultProps = {\n className: '',\n};\n\nexport default ErrorMessageInput;","const APIDomain = process.env.REACT_APP_BASE_SERVICE_URL;\n\nexport default APIDomain;\n","import axios from 'axios';\nimport APIDomain from '../apiSettings';\n\naxios.defaults.baseURL = APIDomain;\n\nexport const plaidCreateClient = data =>\n axios({\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: '/account/auth/create-client',\n data: data,\n }).then(response => {\n return response.data;\n });\n\nexport const plaidStartMicrodepoits = (data, tenantID) => {\n data.tenantId = tenantID;\n return axios({\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: '/account/microdeposit/start',\n data: data,\n }).then(response => {\n window.location.reload();\n return response.data;\n });\n};\n\nexport const startDwolla = (data, config) => {\n let url = '/transfer/start';\n\n if (config?.type === 'disbursement') {\n url = '/transfer/disbursement/start';\n }\n\n /**\n * slight change in data payload\n * was:\n * {\n * destBankAccountId: data.destBankAccountId,\n * sourceBankAccountId: data.sourceBankAccountId,\n * transferId: data.transferId,\n * }\n * now \"sourceBankAccountId\" needs to be just \"bankAccountId\" <= this is NOT correct... bankAccountId === client/vendor bank account\n * please read updated transfer service documentation here: https://github.com/lemonbrew/paymints-transfer-service\n * let me know if you have any questsions - doug\n */\n return axios({\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url,\n data: {\n bankAccountId: data.sourceBankAccountId,\n // bankAccountId: data.destBankAccountId,\n transferId: data.transferId,\n },\n });\n};\n\nexport const getBankAccounts = clientId =>\n axios({\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/account/client-accounts/${clientId}`,\n }).then(response => {\n return response.data;\n });\n\nexport const disconnectBankAccount = clientId =>\n axios({\n method: 'delete',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/account`,\n data: clientId,\n }).then(response => {\n console.log(response.data);\n });\n// .then(response => response.data)\n\nexport const uploadDocument = form =>\n axios({\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/assets/private/`,\n data: form,\n }).then(response => response.data);\n\nexport const saveTransferDoc = (transferId, data) =>\n axios({\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/account/document/${transferId}`,\n data: data,\n }).then(response => response.data);\n\n/**\n *\n * @param {*} data {TRANSFER_GUID: string, emailRecipients: Array, transfer.transferType.name: string}\n */\n\nexport const sendEmailReceipt = async data => {\n let type = data.transfer.transferType.name;\n let route;\n\n try {\n if (type === 'Client Disbursement') {\n route = `/message/email/disbursement-initiated-client`;\n } else if (type === 'Client Transfer') {\n route = `/message/email/transfer-initiated`;\n }\n let response = await axios({\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: route,\n data: {\n transfer_GUID: data.TRANSFER_GUID,\n emailRecipient: data.additionalEmailRecipient,\n additionalEmailRecipient: true,\n },\n });\n return response;\n } catch (error) {\n throw error;\n }\n};\n\nexport const updateAuth0User = (tenantID, data) =>\n axios({\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/users/${tenantID}`,\n data: data,\n })\n .then(response => response.data)\n .catch(() => ({ error: true }));\n\nexport const getSMSCode = (tenant_GUID, client_GUID) =>\n axios({\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/users/resend/${tenant_GUID}/${client_GUID}`,\n }).then(response => response.data);\n\nexport const validateSMSCode = (tenant_GUID, client_GUID, code) =>\n axios({\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/users/${tenant_GUID}/${client_GUID}/${code}`,\n })\n .then(response => response.data)\n .catch(() => {\n return { error: true };\n });\n\nexport const saveSensitiveData = async (client_GUID, tenant_GUID, data) => {\n try {\n axios({\n method: 'put',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/security/customer/${client_GUID}/${tenant_GUID}`,\n data: data,\n });\n } catch (error) {\n console.log(error);\n return { error: true };\n }\n};\n\nexport const getSensitiveData = async (client_GUID, tenant_GUID) => {\n let response;\n try {\n response = await axios({\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url: `/security/customer/${client_GUID}/${tenant_GUID}`,\n });\n } catch (error) {\n console.log(error);\n }\n\n return response?.data;\n};\n","/**\n * @deprecated\n */\nexport const filterList = [\n {\n messageType: \"transfer_request\",\n value: \"Transfer Request\",\n isChecked: false,\n },\n {\n messageType: \"transfer_receipt\",\n value: \"Transfer Receipt\",\n isChecked: false,\n },\n { messageType: \"transfer_fail\", value: \"Transfer Fail\", isChecked: false },\n {\n messageType: \"transfer_initiated\",\n value: \"Transfer Initiated\",\n isChecked: false,\n },\n];\nexport const messageKey = {\n transfer_request: \"Transfer Request\",\n transfer_receipt: \"Transfer Receipt\",\n transfer_fail: \"Transfer Fail\",\n transfer_initiated: \"Transfer Initiated\",\n};\n\nexport const request = [\n { messageType: \"transfer_request\" },\n { messageType: \"transfer_receipt\" },\n { messageType: \"transfer_fail\" },\n { messageType: \"transfer_initiated\" },\n];\n","import * as APIUtil from '../../utils/service/service_api';\nimport * as actionType from './AccountActionTypes';\nimport get from 'lodash/get';\nimport { messageKey } from '../../components/MessageCenter/mock-data';\n\nexport const getPlaidCreateClientFetch = () => ({\n type: actionType.PLAID_CREATE_CUSTOMER_FETCH,\n});\n\nexport const getPlaidCreateClientSuccess = response => ({\n type: actionType.PLAID_CREATE_CUSTOMER_SUCCESS,\n payload: { response },\n});\n\nexport const getPlaidCreateClientError = response => ({\n type: actionType.PLAID_CREATE_CUSTOMER_ERROR,\n payload: { response },\n});\n\nexport const getPlaidCreateClient = data => dispatch => {\n dispatch(getPlaidCreateClientFetch());\n return APIUtil.plaidCreateClient(data)\n .then(response => {\n dispatch(getPlaidCreateClientSuccess(response));\n return response;\n })\n .catch(error => {\n const errorElement = get(error, 'response.data');\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n dispatch(getPlaidCreateClientError(message));\n return { error: true, message: message };\n });\n};\n\nexport const getPlaidStartMicrodepoits = (data, tenantID) => dispatch => {\n return APIUtil.plaidStartMicrodepoits(data, tenantID)\n .then(response => {\n return response;\n })\n .catch(error => {\n const errorElement = get(\n error,\n 'response.data getPlaidStartMicrodepoits'\n );\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n return { error: true, message: message };\n });\n};\n\nexport const getPlaidVerifyMicrodepoits = data => dispatch => {\n return APIUtil.plaidStartMicrodepoits(data)\n .then(response => {\n return response;\n })\n .catch(error => {\n const errorElement = get(\n error,\n 'response.data getPlaidVerifyMicrodepoits'\n );\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n\n return { error: true, message: message };\n });\n};\n\nexport const getBankAccountsFetch = () => ({\n type: actionType.GET_BANK_ACCOUNTS_FETCH,\n});\n\nexport const getBankAccountsSuccess = response => ({\n type: actionType.GET_BANK_ACCOUNTS_SUCCESS,\n payload: { response },\n});\n\nexport const getBankAccountsError = response => ({\n type: actionType.GET_BANK_ACCOUNTS_ERROR,\n payload: { response },\n});\n\nexport const getClientAccounts = id => dispatch => {\n if (id !== undefined) {\n dispatch(getBankAccountsFetch());\n return APIUtil.getBankAccounts(id)\n .then(response => {\n dispatch(getBankAccountsSuccess(response));\n return response;\n })\n .catch(error => {\n const errorElement = get(error, 'response.data');\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n dispatch(getBankAccountsError(message));\n return { error: true, message: message };\n });\n } else {\n return null;\n }\n};\n\nexport const disconnectBankAccountFetch = () => ({\n type: actionType.DELETE_BANK_ACCOUNT_FETCH,\n});\n\nexport const disconnectBankAccountSuccess = response => ({\n type: actionType.DELETE_BANK_ACCOUNT_SUCCESS,\n payload: { response },\n});\n\nexport const disconnectBankAccountError = () => ({\n type: actionType.DELETE_BANK_ACCOUNT_ERROR,\n});\n\nexport const disconnectBankAccount = id => dispatch => {\n dispatch(disconnectBankAccountFetch());\n return APIUtil.disconnectBankAccount(id)\n .then(response => {\n dispatch(disconnectBankAccountSuccess(response));\n return response;\n })\n .catch(error => {\n const errorElement = get(error, 'response.data');\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n dispatch(disconnectBankAccountError());\n return { error: true, message: message };\n });\n};\n\nexport const updateAuth0UserFetch = () => ({\n type: actionType.UPDATE_AUTH0_FETCH,\n});\n\nexport const updateAuth0UserSuccess = response => ({\n type: actionType.UPDATE_AUTH0_SUCCESS,\n payload: { response },\n});\n\nexport const updateAuth0User = (tenantId, data) => dispatch => {\n dispatch(updateAuth0UserFetch());\n return APIUtil.updateAuth0User(tenantId, data).then(response => {\n dispatch(updateAuth0UserSuccess(response));\n if (get(response, 'error')) {\n return 'error';\n }\n return response;\n });\n};\n","export const PLAID_CREATE_CUSTOMER_FETCH = \"PLAID_CREATE_CUSTOMER_FETCH\";\nexport const PLAID_CREATE_CUSTOMER_SUCCESS = \"PLAID_CREATE_CUSTOMER_SUCCESS\";\nexport const PLAID_CREATE_CUSTOMER_ERROR = \"PLAID_CREATE_CUSTOMER_ERROR\";\nexport const GET_BANK_ACCOUNTS_FETCH = \"GET_BANK_ACCOUNTS_FETCH\";\nexport const GET_BANK_ACCOUNTS_SUCCESS = \"GET_BANK_ACCOUNTS_SUCCESS\";\nexport const GET_BANK_ACCOUNTS_ERROR = \"GET_BANK_ACCOUNTS_ERROR\";\nexport const DELETE_BANK_ACCOUNT_FETCH = \"DELETE_BANK_ACCOUNT_FETCH\";\nexport const DELETE_BANK_ACCOUNT_SUCCESS = \"DELETE_BANK_ACCOUNT_SUCCESS\";\nexport const DELETE_BANK_ACCOUNT_ERROR = \"DELETE_BANK_ACCOUNT_ERROR\";\nexport const UPDATE_AUTH0_FETCH = \"UPDATE_AUTH0_FETCH\";\nexport const UPDATE_AUTH0_SUCCESS = \"UPDATE_AUTH0_SUCCESS\";\n","import React from 'react';\nimport MaskedInput from 'react-text-mask'\n\nconst phoneMask = ['(', /\\d/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d?/];\nconst codeMask = [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default ({ ...props }) => {\n const handleChange = (e) => props.onChange(`${e.target.value}`.replace(/[^\\d]/g, \"\"));\n return (\n \n );\n};\nexport const VerificationCode = ({ ...props }) => {\n const handleChange = (e) => props.onChange(`${e.target.value}`.replace(/[^\\d]/g, \"\"));\n return (\n \n );\n};","import React, { useState } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport { connect } from 'react-redux';\nimport { useCreateClient } from '../../utils/service/service_user_api';\nimport { setItem, removeItem } from '../../utils/util';\nimport { withRouter, Link } from 'react-router-dom';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { updateAuth0User } from '../../reducers/account/AccountActions';\nimport PhoneField from '../PhoneField/PhoneField';\nimport Warning from '../../styles/assets/warning.png';\nimport Phone from '../../styles/assets/phone.png';\nimport linkIcon from '../../styles/assets/external-link-icon.svg';\nimport * as APIUtil from '../../utils/service/service_api';\n\nimport '../CreateAccountWizard/createAccount.css';\n\n\nconst Title = () =>
;\n\nconst InfoCreateAccount = ({ introductoryText }) => {\n const organization = 'Paymints';\n return (\n
\n
\n {introductoryText\n ? introductoryText\n : `To create an account and transfer money to ${organization}, please confirm the following details. All fields are required.`}\n
\n
\n );\n};\n\nconst FieldsPersonalInformation = ({\n client,\n register,\n errors,\n setValue,\n watch,\n control,\n}) => {\n return (\n \n
\n
\n \n \n {errors.firstName && errors.firstName.type === 'required' && (\n This is required\n )}\n {errors.firstName && errors.firstName.type === 'maxLength' && (\n Max length exceeded\n )}\n
\n
\n \n \n
\n
\n \n \n {errors.lastName && errors.lastName.type === 'required' && (\n This is required\n )}\n {errors.lastName && errors.lastName.type === 'maxLength' && (\n Max length exceeded\n )}\n
\n
\n
\n \"\"\n
\n Must match your driver's license or government-issued ID.\n
\n
\n
\n );\n};\n\nconst PersonalInformation = ({\n client,\n watch,\n register,\n errors,\n setValue,\n control,\n}) => (\n
\n
\n Personal Information\n
\n \n
\n);\n\nconst FieldsContactInformation = ({ errors, control }) => (\n \n
\n
\n
\n
Mobile Phone
\n
\n We will send a security code to your mobile phone for account\n verification.\n
\n
\n \n {errors.phone_number && errors.phone_number.type === 'required' && (\n This is required\n )}\n
\n
\n \"\"\n
\n Standard text messaging and provider rates may apply.\n
\n
\n
\n
\n);\n\nconst ContactInformation = ({ client, errors, control }) => {\n const email = get(client, 'email');\n return email ? null : (\n
\n
\n Contact Information\n
\n \n
\n );\n};\n\nconst FooterInformation = ({ setDisabled }) => (\n
\n \n setDisabled(!e.target.checked)}\n />{' '}\n {' '}\n {'By clicking Create Account, you agree to CertifID, Inc. '}\n \n Terms of Service{' '}\n \"\"{' '}\n \n {' and '}\n \n Privacy Policy{' '}\n \"\"\n \n {' as well as our partner'} Dwolla's\n \n {' '}\n Terms of Service{' '}\n \"\"\n {' '}\n and{' '}\n \n Privacy Policy.\n \"\"\n \n
\n);\n\nconst nextStep = history => {\n history.push(`/create-account/step-2${get(history, 'location.search')}`);\n};\n\nconst FirstStep = props => {\n const { beforeContinue, onUpdateAuth0User, refetchNewClient } = props;\n const { register, handleSubmit, errors, watch, setValue, control } = useForm({\n defaultValues: props.client,\n });\n const { createClient } = useCreateClient();\n const { action } = useStateMachine(updateAction);\n const [error, onSetError] = useState({\n active: false,\n type: '',\n messageError: '',\n });\n const [disabled, setDisabled] = useState(true);\n const onSubmit = newUser => {\n removeItem('login_user');\n onSetError({ active: false, type: '', messageError: '' });\n const email = get(props.user, 'email')\n ? get(props.user, 'email')\n : `${newUser.phone_number}@paymints.io`;\n const tenantId = get(props, 'tenant.id');\n if (isEmpty(tenantId))\n onSetError({\n active: true,\n messageError: 'Tenant not found, please check url',\n });\n if (email && !isEmpty(tenantId)) {\n const { phone_number } = newUser;\n // Search for all clients with that email\n refetchNewClient({ where: { mobilePhone: '+1' + phone_number } }).then(\n response => {\n const client = get(response, 'data.allClients')[0];\n delete newUser.phone_number;\n if (!client) {\n let clientData = {};\n // Create a new client\n createClient({\n variables: {\n client: {\n ...newUser,\n email: '',\n mobilePhone: '+1' + phone_number,\n tenant: {\n connect: {\n id: tenantId,\n },\n },\n },\n },\n })\n .then(res => {\n clientData = res.data.createClient;\n beforeContinue();\n })\n .then(() => {\n // Create Auth0 client\n const userEmail = get(props.user, 'email');\n if (!userEmail) {\n const auth0User = {\n email: email,\n phone_number: `+1${phone_number}`,\n name: `${newUser.firstName} ${newUser.lastName}`,\n connection: 'sms',\n };\n const auth0Payload = {\n create_user: auth0User,\n role: 'paymints_admin',\n new_user_role: 'paymints_client',\n };\n\n onUpdateAuth0User(tenantId, auth0Payload)\n .then(response => {\n if (response === 'error') {\n onSetError({\n active: true,\n messageError:\n 'Account exists for phone number. Please login in.',\n });\n } else {\n getCode(tenantId, clientData.id, clientData);\n }\n })\n .then(() => {\n action(newUser);\n });\n } else {\n action(newUser);\n nextStep(props.history);\n }\n });\n } else {\n onSetError({ active: true, type: 'sms' });\n setItem('login_user', 'existing_user');\n }\n }\n );\n }\n };\n const getCode = (tenantId, clientid, client) => {\n APIUtil.getSMSCode(tenantId, clientid).then(\n () => {\n props.history.push('/create-account/account-verification', { client });\n },\n error => {\n console.log(error);\n }\n );\n };\n\n return (\n \n \n <InfoCreateAccount introductoryText={props.introductoryText} />\n <form onSubmit={handleSubmit(onSubmit)}>\n <PersonalInformation\n client={props.client}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n control={control}\n />\n <ContactInformation\n client={props.client}\n errors={errors}\n control={control}\n />\n <FooterInformation setDisabled={setDisabled} />\n <div className=\"create-account__footer-buttons center\">\n <PaymintsButton\n htmlType=\"submit\"\n className=\"create-account__button\"\n type={BUTTON_TYPE.INVERSE_BLUE}\n disabled={disabled}\n >\n <div className=\"create-account__button-text\">\n {props.registerButtonText\n ? props.registerButtonText === 'Register!'\n ? 'Create Account'\n : props.registerButtonText\n : 'Create Account'}\n </div>\n </PaymintsButton>\n {error.active && (\n <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n )}\n {error.active && error.type === 'sms' && (\n <ErrorMessageInput>\n Account exists for phone number. Please{' '}\n <Link to=\"/login\">login</Link>\n </ErrorMessageInput>\n )}\n <div>\n {' '}\n Already registered? Click to{' '}\n <span\n className=\"create-account__paymints-link\"\n onClick={() => props.history.push('/login')}\n >\n log in\n </span>{' '}\n </div>\n </div>\n </form>\n </BoxContainer>\n );\n};\n\nexport default withRouter(\n connect(state => ({}), {\n onUpdateAuth0User: updateAuth0User,\n })(FirstStep)\n);\n","import React, { useState } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport { withRouter, useHistory } from 'react-router-dom';\nimport { useForm } from 'react-hook-form';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport get from 'lodash/get';\nimport * as APIUtil from '../../utils/service/service_api';\nimport { setClientStore } from '../../utils/util';\n\nconst CreateAccountVerificationStep = props => {\n const history = useHistory();\n const tenantId = get(props, 'tenant.id');\n const { client } = props.history.location.state;\n const { handleSubmit, errors, register } = useForm();\n const [isError, setError] = useState(false);\n\n const onSubmit = verificationCode => {\n setError(false);\n const { code } = verificationCode;\n APIUtil.validateSMSCode(tenantId, client.id, code).then(res => {\n setError(res['error'] === true);\n if (!res['error']) {\n setClientStore(client);\n if (client.email) {\n history.push('/transfer-history');\n } else {\n history.push('/create-account/step-2');\n }\n }\n });\n };\n const reSendCode = () => {\n getCode(tenantId, client.id);\n };\n const getCode = (tenantId, clientid) => {\n APIUtil.getSMSCode(tenantId, clientid).then(res => {\n return res;\n });\n };\n\n return (\n <BoxContainer widest withLogButton withDoubleBorder showLogin={true}>\n <form onSubmit={handleSubmit(onSubmit)}>\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">\n Now all you need to do is check your phone.\n </div>\n </div>\n <div className=\"create-account__subtitle-information\">\n A text message with a 6-digit verification code has been sent to your\n mobile phone.\n </div>\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Enter Code</label>\n <div className=\"form-group create-account__name-middle\">\n <input\n type=\"number\"\n autoComplete=\"no\"\n name=\"code\"\n placeholder=\" \"\n onKeyUp={() => setError(false)}\n className=\"create-account__input form-control\"\n ref={register({\n required: true,\n validate: value => value.length > 5,\n })}\n />\n {errors.code && errors.code.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.code && errors.code.type === 'validate' && (\n <ErrorMessageInput>Code must be 6 digits</ErrorMessageInput>\n )}\n {isError && <ErrorMessageInput>Invalid Code</ErrorMessageInput>}\n </div>\n </div>\n </BoxContainer>\n <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n htmlType=\"submit\"\n >\n Verify\n </PaymintsButton>\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n noShadow\n type={BUTTON_TYPE.LINK}\n onClick={reSendCode}\n >\n Resend Code\n </PaymintsButton>\n </div>\n </form>\n </BoxContainer>\n );\n};\nexport default withRouter(CreateAccountVerificationStep);\n","import React from 'react';\nimport MaskedInput from 'react-text-mask';\n\nconst SsnMask = [/\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default ({...props}) => {\n const handleChange = (e) => props.onChange(`${e.target.value}`.replace(/_/g, ''));\n\n return (\n <MaskedInput\n mask={SsnMask}\n {...props}\n onChange={handleChange}\n />\n );\n};\n","import React, { useState } from \"react\";\nimport classnames from \"classnames\";\nimport SsnField from \"./SsnInput\";\nimport \"./ssn-toggle-visibility-input.css\";\n\nexport default function SsnToggleVisibilityField(props) {\n const [visible, setVisible] = useState(false)\n\n const toggleVisibility = () => {\n setVisible(!visible)\n }\n\n const buildVisibilityButton = () => (\n <button\n type=\"button\"\n className=\"btn btn-link ssn-toggle-visibility-field__button\"\n onClick={toggleVisibility}\n >\n <i className={buildCssForIcon()} />\n </button>\n );\n\n const buildCssForIcon = () =>\n classnames(\"ssn-toggle-visibility-field__icon\", \"fa\", {\n \"fa-eye-slash\": visible,\n \"fa-eye\": !visible\n });\n\n return (\n <div className=\"ssn-toggle-visibility-field\" onFocus={() => setVisible(true)} onBlur={() => setVisible(false)}>\n <SsnField\n {...props}\n type={visible ? \"text\" : \"password\"}\n />\n {buildVisibilityButton()}\n </div>\n );\n}","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n} from 'react';\nimport { getSensitiveData } from '../utils/service/service_api';\n\nconst SensitiveDataContext = createContext();\n\nexport const SensitiveDataProvider = ({ clientID, tenantID, children }) => {\n const [sensitiveData, setSensitiveData] = useState();\n const [loading, setLoading] = useState(false);\n const res = getSensitiveData(clientID, tenantID);\n const getData = useCallback(\n async () => {\n setLoading(true);\n try {\n const res = await getSensitiveData(clientID, tenantID);\n if (res) {\n setSensitiveData(res.data);\n }\n setLoading(false);\n } catch (error) {\n getData();\n setLoading(false);\n }\n },\n /* eslint-disable */ [clientID, tenantID]\n );\n\n const refetch = () => getData();\n\n useEffect(() => {\n if (clientID && tenantID) getData();\n }, [clientID, tenantID]);\n\n return (\n <SensitiveDataContext.Provider\n value={{ sensitiveData, getData, loading, refetch }}\n >\n {children}\n </SensitiveDataContext.Provider>\n );\n};\n\nexport const useSensitiveData = () => {\n const context = useContext(SensitiveDataContext);\n\n return context;\n};\n","import { startOfToday, differenceInYears } from 'date-fns';\n\n// PAYAPP-900 (\"The receipt should only be generated on completion of the transfer\")\nexport const shouldHideDocuments = status => {\n return ['completed'].indexOf(status.toLowerCase()) < 0;\n};\n\nexport const validAge = value => {\n if (value) {\n const DOB = new Date(value);\n const today = startOfToday();\n return differenceInYears(today, DOB) >= 18;\n }\n};\n\nexport const REGEXP_ONLY_4_CHAR = /^.{4}$/;\n\nexport const validSSN = ssn => {\n if (ssn) {\n const ssnWithoutDash = ssn.replace(/-/g, '');\n return REGEXP_ONLY_4_CHAR.test(ssnWithoutDash);\n }\n};\nexport const validateAccountinfo = (client, account) => {\n return client === account;\n};\n\nexport const validAmount = (value, balance, fee) => {\n return value <= balance - fee;\n};\n\nexport const validateFile = name =>\n name.toLowerCase() === 'image/png' ||\n name.toLowerCase() === 'image/jpeg' ||\n name.toLowerCase() === 'image/jpg';\n","import React from 'react'\n\nexport function Input({ register, name, ...props }) {\n return <input name={name} ref={register} {...props} />\n}\n\nexport function Select({ register, options, placeholderText, name, ...props }) {\n return (\n <select name={name} ref={register} {...props}>\n {placeholderText ? (\n <option value=''>\n {placeholderText}\n </option>\n ) : null}\n {options.map((value) => (\n <option key={value} value={value}>\n {value}\n </option>\n ))}\n </select>\n )\n}\n","export const states = [\n 'Alabama','Alaska','Arizona','Arkansas','California','Colorado',\n 'Connecticut','Delaware','District of Columbia','Florida','Georgia',\n 'Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky',\n 'Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota',\n 'Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire',\n 'New Jersey','New Mexico','New York','North Carolina','North Dakota',\n 'Ohio','Oklahoma','Oregon','Pennsylvania','Puerto Rico','Rhode Island',\n 'South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington',\n 'West Virginia','Wisconsin','Wyoming'\n]","import { AES, enc } from \"crypto-js\";\n\nexport const encrypt = (value) => {\n let encrypted = AES.encrypt(\n value,\n process.env.REACT_APP_GLOBAL_ENCRYPT_KEY\n ).toString();\n\n return encrypted;\n};\n\nexport const decrypt = (value) => {\n let decrypted = AES.decrypt(\n value,\n process.env.REACT_APP_GLOBAL_ENCRYPT_KEY\n ).toString(enc.Utf8);\n\n return decrypted;\n};\n","import React from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport get from 'lodash/get';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport SsnToggleVisibilityField from '../SsnInput/SsnToggleVisibilityInput';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport {\n saveSensitiveData,\n getSensitiveData,\n} from '../../utils/service/service_api';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\n\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { validSSN, validAge } from '../../utils/validations';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport '../CreateAccountWizard/createAccount.css';\nimport { encrypt } from '../../utils/encryption';\n\nconst Title = ({ client }) => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">\n Your account has been verified, {get(client, 'firstName')}.\n </div>\n </div>\n);\n\nconst InfoSSN = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__info-account\">\n Now we need to verify your social security number and date of birth, and\n then we'll be ready to connect to your bank.\n </div>\n </div>\n);\n\nconst FieldSSN = ({ register, errors, control }) => {\n return (\n <div className=\"create-account__information-container\">\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Last 4 Digits of Social Security Number</label>\n <Controller\n as={SsnToggleVisibilityField}\n control={control}\n name=\"ssn\"\n placeholder=\"Social Security Number\"\n className=\"create-account__input form-control emd-landing-page__form-field--password account__control_width\"\n rules={{ required: true, validate: validSSN }}\n />\n {errors.ssn && errors.ssn.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.ssn && errors.ssn.type === 'validate' && (\n <ErrorMessageInput>\n Must be a valid social security number\n </ErrorMessageInput>\n )}\n </div>\n </BoxContainer>\n </div>\n );\n};\n\nconst FieldBirthday = ({ register, errors }) => {\n return (\n <div className=\"create-account__information-container\">\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Date of Birth</label>\n <input\n type=\"date\"\n id=\"dateOfBirth\"\n name=\"dateOfBirth\"\n className=\"create-account__input form-control account__control_width\"\n placeholder=\"yyyy-mm-dd\"\n ref={register({ required: true, validate: validAge })}\n />\n {errors.dateOfBirth && errors.dateOfBirth.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.dateOfBirth && errors.dateOfBirth.type === 'validate' && (\n <ErrorMessageInput>Must be at least 18 years old</ErrorMessageInput>\n )}\n </div>\n </BoxContainer>\n </div>\n );\n};\n\nconst FieldEmail = ({ register, errors }) => {\n return (\n <div className=\"create-account__information-container\">\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Email Address</label>\n <input\n type=\"email\"\n id=\"email\"\n name=\"email\"\n className=\"create-account__input form-control account__control_width\"\n placeholder=\"Email Address\"\n ref={register({ maxLength: 50, required: true })}\n />\n {errors.email && errors.email.type === 'maxLength' && (\n <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n )}\n {errors.email && errors.email.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </div>\n </BoxContainer>\n </div>\n );\n};\n\nconst FieldsPersonalInformation = ({ register, errors, control }) => {\n return (\n <div className=\"create-account__information-container\">\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Address Associated with Bank Account</label>\n <input\n type=\"text\"\n name=\"address1\"\n placeholder=\"Address 1\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.address1 && errors.address1.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <input\n type=\"text\"\n name=\"address2\"\n placeholder=\"Address 2\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register}\n />\n <input\n type=\"text\"\n name=\"city\"\n placeholder=\"City\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.city && errors.city.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <Controller\n as={Select}\n control={control}\n name=\"state\"\n rules={{ required: true }}\n options={states}\n placeholderText=\"State\"\n className=\"create-account__input form-control create-account__address-info\"\n />\n {errors.state && errors.state.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <input\n type=\"text\"\n name=\"zipcode\"\n placeholder=\"Zip code\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.zipcode && errors.zipcode.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </div>\n </BoxContainer>\n </div>\n );\n};\n\nconst FooterInformation = props => {\n return (\n <div className=\"create-account__footer create-account__information-container-footer\">\n <div className=\"create-account__security-icon\">\n <i className=\"fa fa-lock create-account__icon\" />\n </div>\n <div className=\"create-account__information-text\">\n {`By clicking Verify you authorize ${props.props.tenant.name}, by electronic signature, to securely connect to your financial institution.`}\n </div>\n </div>\n );\n};\n\nconst nextStep = history => {\n history.push(`/bank-accounts`);\n window.location.reload();\n};\n\nconst SecondStep = props => {\n const clientId = get(props, 'client.id');\n const tenantId = get(props, 'tenant.id');\n\n const intialform = { ...props.client, email: null };\n const { register, handleSubmit, errors, control } = useForm({\n defaultValues: intialform,\n });\n const { action } = useStateMachine(updateAction);\n const { updateClient } = useUpdateClient();\n const { sensitiveData, refetch: refetchSensitiveData } = useSensitiveData();\n const onSubmit = async newUser => {\n const newUserWithoutSsnDash = {\n ...newUser,\n ssn: newUser.ssn.replace(/-/g, ''),\n };\n\n const { ssn, dateOfBirth, ...userValues } = newUserWithoutSsnDash;\n\n const sensitiveData = {\n SSN: encrypt(ssn),\n DOB: encrypt(dateOfBirth),\n };\n try {\n await saveSensitiveData(clientId, tenantId, sensitiveData);\n const dataSENS = await getSensitiveData(clientId, tenantId);\n await updateClient({\n variables: {\n id: clientId,\n client: userValues,\n },\n });\n\n await props.refetch();\n await refetchSensitiveData();\n await action({ client: newUser });\n nextStep(props.history);\n } catch (error) {\n console.log(error);\n }\n };\n\n return (\n <BoxContainer withDoubleBorder withLogButton>\n <Title client={props.client} />\n <InfoSSN />\n <form onSubmit={handleSubmit(onSubmit)}>\n <FieldSSN register={register} errors={errors} control={control} />\n <FieldBirthday register={register} errors={errors} />\n <FieldEmail register={register} errors={errors} />\n <FieldsPersonalInformation\n register={register}\n errors={errors}\n control={control}\n />\n <FooterInformation props={props} />\n <PaymintsButton\n htmlType=\"submit\"\n className=\"create-account__button create-account__verify\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n {'Verify'}\n </PaymintsButton>\n </form>\n </BoxContainer>\n );\n};\n\nexport default withRouter(connect(state => ({}), {})(SecondStep));\n","import React from 'react';\nimport { formatAddressStreetApartment, formatAddressCityStateZipCode } from '../../utils/util';\nimport \"./formatAddress.css\";\n\nconst FormatAddress = ({streetNumberName, apartmentSuiteNumber, city, state, zipcode}) => {\n return (\n <>\n <div>\n {formatAddressStreetApartment(streetNumberName, apartmentSuiteNumber)}\n </div>\n <div>\n {formatAddressCityStateZipCode(city, state, zipcode)}\n </div>\n </>\n );\n};\n\nexport default FormatAddress;","import React from 'react'\nimport FormatAddress from '../FormatAddress/FormatAddress'\nimport './destinationAccount.css'\n\nexport default function DestinationAccount({\n title = 'Destination Account:',\n bankName,\n accountLastFourDigits,\n description,\n destAccountLogo,\n tenantName,\n address1,\n apartmentSuiteNumber,\n name,\n city,\n state,\n zipcode,\n office,\n logoURL,\n children,\n type,\n}) {\n return (\n <div className='destination-account__destination-account'>\n <div className='destination-account__destination-account-title'>\n {title}\n </div>\n\n <div className='destination-account__destination-account-container'>\n {/*\n <div className=\"destination-account__destination-account-icons\">\n {type === \"from\" && (\n <div className=\"destination-account__destination-account-icon\">\n <img\n className=\"destination-account__destination-account-icon-logo\"\n src={destAccountLogo}\n alt=\"\"\n />\n </div>\n )}\n\n <div className=\"destination-account__destination-account-icon\">\n <img\n className=\"destination-account__destination-account-icon-logo\"\n src={logoURL}\n alt=\"\"\n />\n </div>\n </div>*/}\n\n {type === 'from' ? (\n <div className='destination-account__destination-account-info'>\n {bankName}\n <br />\n Account X{accountLastFourDigits}\n </div>\n ) : (\n <div className='destination-account__destination-account-info'>\n <p>{tenantName}</p>\n <FormatAddress\n streetNumberName={address1}\n apartmentSuiteNumber={apartmentSuiteNumber}\n city={city}\n state={state}\n zipcode={zipcode}\n />\n {office}\n </div>\n )}\n </div>\n {children}\n </div>\n )\n}\n","import { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isNil from \"lodash/isNil\";\n\nconst GET_INSTITUTION_LOGO_QUERY = gql`\n query allInstitutionLogos($institutionCode: String) {\n allInstitutionLogos(where: { institutionCode: $institutionCode }) {\n id\n logoURL\n }\n }\n`;\n\nexport function useInstitutionLogo(institutionID) {\n const id =\n isNil(institutionID) || isEmpty(institutionID) ? null : institutionID;\n const { loading, error, data, refetch } = useQuery(\n GET_INSTITUTION_LOGO_QUERY,\n { variables: { institutionCode: id } }\n );\n return {\n loading,\n error,\n refetch,\n institutionLogo: data ? data.allInstitutionLogos[0] : undefined,\n };\n}\n\nconst GET_INSTITUTION_LOGO_OR_QUERY = gql`\n query allInstitutionLogos($institution: [InstitutionLogoWhereInput]) {\n allInstitutionLogos(where: { OR: $institution }) {\n id\n logoURL\n institutionCode\n }\n }\n`;\n\nexport function useInstitutionLogoOR(institutionID) {\n const institution =\n isNil(institutionID) || isEmpty(institutionID)\n ? [{ institutionCode: null }]\n : institutionID;\n const { loading, error, data, refetch } = useQuery(\n GET_INSTITUTION_LOGO_OR_QUERY,\n {\n variables: { institution: institution },\n }\n );\n return {\n loading,\n error,\n refetch,\n institutionsLogo: data ? data.allInstitutionLogos : [],\n };\n}\n","export const START_DWOLLA_FETCH = \"START_DWOLLA_FETCH\";\nexport const START_DWOLLA_SUCCESS = \"START_DWOLLA_SUCCESS\";\nexport const START_DWOLLA_ERROR = \"START_DWOLLA_ERROR\";\nexport const SAVE_TRANSFER_DOC_FETCH = \"SAVE_TRANSFER_DOC_FETCH\";\nexport const SAVE_TRANSFER_DOC_SUCCESS = \"SAVE_TRANSFER_DOC_SUCCESS\";\nexport const SAVE_TRANSFER_DOC_ERROR = \"SAVE_TRANSFER_DOC_ERROR\";\nexport const SEND_EMAIL_RECEIPT_FETCH = \"SEND_EMAIL_RECEIPT_FETCH\";\nexport const SEND_EMAIL_RECEIPT_SUCCESS = \"SEND_EMAIL_RECEIPT_SUCCESS\";\nexport const SEND_EMAIL_RECEIPT_ERROR = \"SEND_EMAIL_RECEIPT_ERROR\";\n","import * as APIUtil from '../../utils/service/service_api';\nimport * as actionType from './TransferActionType';\nimport get from 'lodash/get';\n\nexport const startDwollaFetch = () => ({\n type: actionType.START_DWOLLA_FETCH,\n});\n\nexport const startDwollaSuccess = response => ({\n type: actionType.START_DWOLLA_SUCCESS,\n payload: { response },\n});\n\nexport const startDwollaError = response => ({\n type: actionType.START_DWOLLA_ERROR,\n payload: { response },\n});\n\nexport const startDwolla = (data, config) => dispatch => {\n dispatch(startDwollaFetch());\n return APIUtil.startDwolla(data, config)\n .then(response => {\n dispatch(startDwollaSuccess(response));\n return response;\n })\n .catch(error => {\n const errorElement = get(error, 'response.data');\n dispatch(startDwollaError(errorElement));\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n return { error: true, message: message };\n });\n};\n\nexport const saveTransferDocFetch = () => ({\n type: actionType.SAVE_TRANSFER_DOC_FETCH,\n});\n\nexport const saveTransferDocSuccess = response => ({\n type: actionType.SAVE_TRANSFER_DOC_SUCCESS,\n payload: { response },\n});\n\nexport const saveTransferDocError = response => ({\n type: actionType.SAVE_TRANSFER_DOC_ERROR,\n payload: { response },\n});\n\nexport const saveTransferDoc = (transferId, data) => dispatch => {\n dispatch(saveTransferDocFetch());\n return APIUtil.saveTransferDoc(transferId, data)\n .then(response => {\n dispatch(saveTransferDocSuccess(response));\n return response;\n })\n .catch(error => {\n const errorElement = get(error, 'response.data');\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'err.message') ||\n get(errorElement, 'err') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n dispatch(saveTransferDocError(errorElement));\n return { error: true, message: message };\n });\n};\n\nexport const sendEmailReceiptFetch = () => ({\n type: actionType.SEND_EMAIL_RECEIPT_FETCH,\n});\n\nexport const sendEmailReceiptSuccess = response => ({\n type: actionType.SEND_EMAIL_RECEIPT_SUCCESS,\n payload: { response },\n});\n\nexport const sendEmailReceiptError = error => ({\n type: actionType.SEND_EMAIL_RECEIPT_ERROR,\n payload: { error },\n});\n\nexport const sendEmailReceipt = data => dispatch => {\n dispatch(sendEmailReceiptFetch());\n return APIUtil.sendEmailReceipt(data)\n .then(response => {\n console.log('hello', response);\n dispatch(sendEmailReceiptSuccess(response));\n return { success: true, ...response };\n })\n .catch(error => {\n const errorElement = get(error, 'response.data');\n dispatch(sendEmailReceiptError(error));\n const message =\n get(errorElement, 'error.body.message') ||\n get(errorElement, 'message') ||\n get(errorElement, 'error_message') ||\n 'Something went wrong... please try again in a few minutes';\n console.log(message);\n return { error: true, message: message };\n });\n};\n","import React from 'react';\nimport get from 'lodash/get';\nimport MaskedInput from 'react-text-mask'\nimport createNumberMask from 'text-mask-addons/dist/createNumberMask'\n\nconst numberMask = createNumberMask({\n allowDecimal: true,\n});\n\nexport default function AmountInput ({...props}) {\n const handleChange = (e) => props.onChange(`${get(e, 'target.value')}`.replace(/[$,_ ]/g, ''));\n\n return (\n <MaskedInput\n mask={numberMask}\n {...props}\n onChange={handleChange}\n />\n );\n};\n","/*\n * src/hooks/useAllCreditTransferTypes.js\n * Description: Query to retrieve transfer types (name / id) where isCredit = true, e.g. \"Client Transfer\"\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nexport const GET_ALL_CREDIT_TRANSFER_TYPES = gql`\n query getAllCreditTransferTypes($where: TransferTypeWhereInput!) {\n allTransferTypes(where: $where) {\n id\n name\n isDebit\n isCredit\n purpose\n }\n }\n`;\n\nconst useAllCreditTransferTypes = () => {\n const { loading, error, data } = useQuery(GET_ALL_CREDIT_TRANSFER_TYPES, {\n fetchPolicy: \"no-cache\",\n variables: {\n where: {\n isCredit: true,\n },\n },\n });\n\n return {\n loading,\n error,\n data: data?.allTransferTypes ?? [],\n };\n};\n\nexport default useAllCreditTransferTypes;\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\nimport isEmpty from 'lodash/isEmpty';\nimport isNil from 'lodash/isNil';\n\nconst GET_OFFICES_SORTED_QUERY = gql`\n query allOfficesSorted($id: ID!) {\n allOffices(\n where: { tenant: { id: $id }, active: true }\n sortBy: title_DESC\n ) {\n id\n title\n city\n state\n }\n }\n`;\n\nexport default function useAllActiveOfficesSorted(tenantID) {\n const id = isNil(tenantID) || isEmpty(tenantID) ? null : tenantID;\n const { loading, error, data, refetch } = useQuery(GET_OFFICES_SORTED_QUERY, {\n variables: {\n id: id,\n },\n });\n\n // the filter is a hack because name_not_i excludes BOTH \"Vendor Disbursement\" and null (no bueno)\n return {\n loadingOffices: loading,\n error,\n refetchOffices: refetch,\n activeOffices: data ? data.allOffices : [],\n };\n}\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\n\nconst GET_REALTORS_FROM_TENANT_QUERY = gql`\n query AllRealtors($tenantId: ID!) {\n allRealtors(where: { tenant: { id: $tenantId }, active: true }) {\n id\n email\n mobilePhone\n active\n firstName\n lastName\n }\n }\n`;\n\nexport default function useAllRealtorsFromTenant(tenantId) {\n const { loading, error, refetch, data } = useQuery(\n GET_REALTORS_FROM_TENANT_QUERY,\n {\n variables: { tenantId },\n fetchPolicy: 'no-cache',\n }\n );\n return {\n loading,\n error,\n refetch,\n realtors: data ? data.allRealtors : undefined,\n };\n}\n","import React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport format from 'dateformat';\nimport { useStateMachine } from 'little-state-machine';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { Select as AntSelect } from 'antd';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n PaymintsNumberFormat,\n} from 'paymints-address-autocomplete-field';\nimport DestinationAccount from '../DestinationAccount/DestinationAccount';\n\nimport {\n useCreateTransfer,\n useSaveTransfer,\n} from '../../utils/service/service_transfer_api';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { saveTransferDoc } from '../../reducers/transfer/TransferActions';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { validAmount } from '../../utils/validations';\nimport { extractNotesFromJson, formatDayFromUTC, getRealtorStore } from '../../utils/util';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport HeaderLogo from '../../styles/assets/lemon.png';\nimport AmountInput from '../AmountInput/AmountInput';\nimport useAllCreditTransferTypes from '../../hooks/useAllCreditTransferTypes';\nimport useAllActiveOfficesSorted from '../../hooks/useAllActiveOfficesSorted';\nimport useAllRealtorsFromTenant from '../../hooks/useAllRealtorsFromTenant';\n\nimport PhoneField from '../PhoneField/PhoneField';\n\nimport '../CreateAccountWizard/createAccount.css';\n\n/**\n * [{amount: Number | null, clientPays: boolean, id: String, tenant: { name: String}}]\n * @param {*} data\n */\nconst extractTranferFeeFromData = data => {\n if (data && data.length > 0) {\n const [first] = data;\n if (first.clientPays) {\n return +first.amount || 0;\n }\n return 0;\n }\n return 0;\n};\n\n/**\n * @TODO extract out to component\n */\nconst Title = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">Transfer Details</div>\n </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst InfoTransfer = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__subtitle\">\n What kind of transfer would you like to make?\n </div>\n </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsEMD = ({\n register,\n errors,\n control,\n realtorData,\n setRealtorData,\n showREAInfoFill,\n}) => {\n return (\n <div\n className=\"create-account__emd-info\"\n style={{ display: showREAInfoFill ? 'block' : 'none', }}\n >\n <div style={{ padding: \"10px\" }}>\n <div className=\"form-group\" style={{ padding: \"-28px\" }}>\n <label>Real Estate Agent's Full Name (Optional)</label>\n <br />\n <input\n type=\"text\"\n // id=\"otherIndividuals\"\n // name=\"otherIndividuals\"\n className=\"create-account__input form-control\"\n placeholder=\" \"\n // ref={register}\n onChange={e =>\n setRealtorData({\n ...realtorData,\n fullName: e.target.value,\n })\n }\n />\n </div>\n <div className=\"form-group\">\n <label>Real Estate Agent's Email Address (Optional)</label>\n <br />\n <input\n type=\"text\"\n id=\"realtorsEmail\"\n name=\"otherIndividuals\"\n className=\"create-account__input form-control\"\n placeholder=\" \"\n // ref={register}\n onChange={e =>\n setRealtorData({\n ...realtorData,\n email: e.target.value,\n })\n }\n />\n </div>\n <div className=\"form-group\">\n <label>Real Estate Agent's Phone Number (Optional)</label>\n\n <div className=\"form-group create-account__name\">\n <Controller\n as={PhoneField}\n control={control}\n name=\"otherIndividuals\"\n placeholder=\" \"\n className=\"create-account__input form-control\"\n rules={{ required: false }}\n onChange={e =>\n setRealtorData({\n ...realtorData,\n phoneNumber: e.toString(),\n })\n }\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoTransfer = ({\n client,\n register,\n errors,\n control,\n setValue,\n purposes,\n emdVisible,\n setFieldsEMDVisible,\n realtorData,\n setRealtorData,\n showREAInfoFill,\n}) => {\n const purposesOptions = purposes.map(purpose => ({\n value: purpose,\n label: purpose\n }))\n return (<>\n <div className=\"bank-accounts__item-title py-4\">PURPOSE</div>\n <BoxContainer withBorder internalBox >\n <label>Select a Purpose</label>\n <div\n className=\"form-group\"\n style={{\n backgroundColor: '#fff',\n borderRadius: '4px',\n padding: '10px',\n marginTop: '10px',\n }}\n >\n <Controller\n as={AntSelect}\n control={control}\n name=\"purpose\"\n rules={{ required: true }}\n options={purposesOptions}\n defaultValue=\"Earnest Money Deposit for Purchase\"\n style={{\n boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n border: '2px solid #c9d1f2',\n borderRadius: '4px',\n width: '100%',\n }}\n onSelect={value => value === \"Earnest Money Deposit for Purchase\" ? setFieldsEMDVisible(true) : setFieldsEMDVisible(false)}\n\n\n />\n {errors.purpose && errors.purpose.type === 'required' && (\n <div className=\"form-check create-account__error-message\">\n\n <ErrorMessageInput>This is required</ErrorMessageInput>\n\n </div>)}\n {emdVisible ? (\n <FieldsEMD\n register={register}\n errors={errors}\n control={control}\n realtorData={realtorData}\n setRealtorData={setRealtorData}\n showREAInfoFill={showREAInfoFill}\n />\n ) : null}\n </div>\n\n </BoxContainer>\n </>\n );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoPropertyAddress = () => (\n <div className=\"bank-accounts__item-title py-4\">PROPERTY ADDRESS AND ADDITIONAL NOTES</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoPropertyAddress = ({\n transfer,\n register,\n errors,\n setValue,\n control,\n}) => {\n return (\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Property Address Related To The Transfer</label>\n <input\n type=\"text\"\n name=\"propertyAddress1\"\n placeholder=\"Address 1\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.propertyAddress1 &&\n errors.propertyAddress1.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <input\n type=\"text\"\n name=\"propertyAddress2\"\n placeholder=\"Address 2\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: false })}\n />\n <input\n type=\"text\"\n name=\"propertyCity\"\n placeholder=\"City\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.propertyCity && errors.propertyCity.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <Controller\n as={Select}\n control={control}\n name=\"propertyState\"\n placeholderText=\"State\"\n rules={{ required: true }}\n options={states}\n className=\"create-account__input form-control create-account__address-info\"\n />\n {errors.propertyState && errors.propertyState.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <input\n type=\"text\"\n name=\"propertyZipcode\"\n placeholder=\"Zip code\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.propertyZipcode &&\n errors.propertyZipcode.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <br />\n {((errors.propertyAddress1 &&\n errors.propertyAddress1.type === 'required') ||\n (errors.propertyCity && errors.propertyCity.type === 'required') ||\n (errors.propertyState && errors.propertyState.type === 'required') ||\n (errors.propertyZipcode &&\n errors.propertyZipcode.type === 'required')) && (\n <ErrorMessageInput>Please select a valid address</ErrorMessageInput>\n )}\n <br />\n <label>Notes (Optional)</label>\n <textarea\n name=\"notes\"\n ref={register}\n placeholder=\" \"\n className=\"create-account__text-area form-control\"\n />\n </div>\n </BoxContainer>\n );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoAmount = () => (\n <div className=\"bank-accounts__item-title py-4\">AMOUNT</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldInfoAmount = ({\n register,\n errors,\n control,\n watch,\n watchDocument,\n regDocument,\n controlDocument,\n bankBalance,\n setMaxAmountValidate,\n maxAmountValidate,\n MAXIMUM_AMOUNT,\n transferFeeConfigData,\n getValues\n}) => {\n return (\n <BoxContainer withBorder internalBox>\n <>\n\n <div className=\"account-blance\">\n <div>Account Balance</div>\n {!bankBalance ? (\n '--'\n ) : (\n <div>\n <PaymintsNumberFormat\n number={bankBalance}\n decimals={2}\n format=\"currency\"\n />\n </div>\n )}\n </div>\n <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n <div className=\"form-group\" style={{ width: \"48%\" }}>\n <label>Amount</label>\n {!bankBalance ? (\n <Controller\n as={AmountInput}\n control={control}\n name=\"amount\"\n placeholder=\"$0.00\"\n onKeyUp={() => setMaxAmountValidate(false)}\n className=\"create-account__input form-control\"\n rules={{\n required: true,\n }}\n autoComplete=\"no\"\n />\n ) : (\n <Controller\n as={AmountInput}\n control={control}\n name=\"amount\"\n placeholder=\"$0.00\"\n onKeyUp={() => setMaxAmountValidate(false)}\n className=\"create-account__input form-control\"\n rules={{\n required: true,\n validate: value =>\n validAmount(\n value,\n bankBalance,\n extractTranferFeeFromData(transferFeeConfigData)\n ),\n }}\n autoComplete=\"no\"\n />\n )}\n\n\n {errors.amount && errors.amount.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.amount && errors.amount.type === 'validate' && (\n <ErrorMessageInput>\n Amount entered exceeds account balance and any applicable\n convenience fees. Please enter an amount lesser than or equal to\n this combined amount.\n </ErrorMessageInput>\n )}\n {maxAmountValidate && (\n <ErrorMessageInput>\n Transfer amount cannot exceed{' '}\n <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n </ErrorMessageInput>\n )}\n </div>\n <div className=\"form-group\" style={{ width: \"48%\" }}>\n <label>Re-Enter Amount</label>\n <Controller\n as={AmountInput}\n control={control}\n name=\"amountCompare\"\n placeholder=\"$0.00\"\n className=\"create-account__input form-control\"\n rules={{\n required: true,\n validate: {\n matchesAmount: value => value === getValues('amount'),\n },\n }}\n onPaste={e => {\n e.preventDefault()\n return false\n }}\n />\n {errors.amount2 && errors.amount2.type === 'required' && (\n <ErrorMessageInput>Amount is required </ErrorMessageInput>\n )}\n {errors.amount2 && errors.amount2.type === 'matchesAmount' && (\n <ErrorMessageInput>Amounts do not match</ErrorMessageInput>\n )}\n\n\n {errors.amount && errors.amount.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.amount && errors.amount.type === 'validate' && (\n <ErrorMessageInput>\n Amount entered exceeds account balance and any applicable\n convenience fees. Please enter an amount lesser than or equal to\n this combined amount.\n </ErrorMessageInput>\n )}\n {maxAmountValidate && (\n <ErrorMessageInput>\n Transfer amount cannot exceed{' '}\n <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n </ErrorMessageInput>\n )}\n </div>\n </div>\n </>\n </BoxContainer>\n\n );\n};\n\nconst FieldOfficeSelect = ({ errors, control, tenantId, setValue }) => {\n const { activeOffices } = useAllActiveOfficesSorted(tenantId);\n const officeOptions = activeOffices.map(office => ({\n value: office.id,\n label: office.title + ' - ' + office.city + ', ' + office.state,\n }));\n\n return (\n <BoxContainer withBorder internalBox>\n <div>\n <div>\n <label>Select an Office to make a payment to</label>\n </div>\n </div>\n <Controller\n as={AntSelect}\n control={control}\n name=\"office\"\n rules={{ required: true }}\n options={officeOptions}\n labelInValue={true}\n placeholder=\"Select an Office:\"\n style={{\n boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n border: '2px solid #c9d1f2',\n borderRadius: '4px',\n width: '100%',\n }}\n />\n {errors?.office && errors?.office?.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </BoxContainer>\n );\n};\n\nconst RealtorSelect = ({ errors, setRealtorID, realtors, transfer }) => {\n const realtorsOptions = realtors?.map(realtor => ({\n\n value: `${realtor.firstName} ${realtor.lastName}`,\n label: `${realtor.firstName} ${realtor.lastName}`,\n key: realtor.id,\n }));\n\n const filteringArrayToGetID = fullName => {\n const splittedFirstAndLast = fullName.split(' ');\n const D = realtors?.filter(obj => {\n return (\n obj.firstName === splittedFirstAndLast[0] &&\n obj.lastName === splittedFirstAndLast[1]\n );\n });\n setRealtorID(D[0].id);\n };\n\n return (\n <BoxContainer withBorder internalBox>\n <div>\n <div>\n <label>Please select your real estate agent</label>\n </div>\n </div>\n\n <AntSelect\n placeholder=\"Select your Real Estate Agent\"\n defaultValue={transfer.transfer ? `${transfer.transfer.realtor.firstName} ${transfer.transfer.realtor.lastName}` : null}\n onChange={filteringArrayToGetID}\n on\n rules={{ required: true }}\n options={realtorsOptions}\n style={{\n boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n border: '2px solid #c9d1f2',\n borderRadius: '4px',\n width: '100%',\n }}\n showSearch\n />\n {errors?.realtor && errors?.realtor?.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </BoxContainer>\n );\n};\n\nconst onClickBackButton = history =>\n history.push(\n `/create-account/step-select-account${get(history, 'location.search')}`\n );\n\nconst onClickGoToTransferHistory = history => history.push('/transfer-history');\n\nconst createDraftTransfer = ({\n props,\n destAccount,\n state,\n newTransfer,\n creditTransferTypes,\n transferFeeConfigData, // array\n realtorData,\n}) => {\n // here's where we deal with the fee (this works)\n let fee = null;\n const [tfg] = transferFeeConfigData;\n if (tfg && tfg.clientPays) {\n fee = tfg.amount;\n }\n\n return {\n //...newTransfer,\n ...Object.assign(newTransfer, { fee }),\n expectedClosingDate: new Date(get(newTransfer, 'expectedClosingDate')),\n firstName: get(props.client, 'firstName'),\n lastName: get(props.client, 'lastName'),\n email: get(props.client, 'email'),\n status: 'draft',\n otherIndividuals: JSON.stringify(realtorData),\n transferType: {\n connect: {\n id: creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].id,\n },\n },\n type: 'Client Transfer',\n client: {\n connect: {\n id: get(props, 'client.id'),\n },\n },\n sourceBankAccount: {\n connect: {\n id: get(state, 'data.bankAccount.id'),\n },\n },\n destBankAccount: {\n connect: {\n id: get(destAccount, 'id'),\n },\n },\n tenant: {\n connect: {\n id: get(props, 'tenant.id'),\n },\n },\n // office: {\n // connect: {\n // id: get(newTransfer, 'office.value'),\n // },\n // },\n };\n};\n\nconst showInfo = amount => {\n if (amount > '5000') {\n return true;\n }\n return false;\n};\n\nconst getDefaultValues = props => {\n if (get(props, 'transfer.propertyAddress1')) {\n return {\n propertyAddress1: get(props, 'transfer.propertyAddress1'),\n propertyAddress2: get(props, 'transfer.propertyAddress2'),\n propertyState: get(props, 'transfer.propertyState'),\n propertyCity: get(props, 'transfer.propertyCity'),\n propertyZipcode: get(props, 'transfer.propertyZipcode'),\n };\n } else {\n if (\n get(props, 'transfer.purpose') === 'Earnest Money Deposit for Purchase'\n ) {\n return {\n propertyAddress1: get(props, 'client.address1'),\n propertyAddress2: get(props, 'client.address2'),\n propertyState: get(props, 'client.state'),\n propertyCity: get(props, 'client.city'),\n propertyZipcode: get(props, 'client.zipcode'),\n };\n } else {\n return {\n propertyAddress1: get(props, 'client.propertyAddress1'),\n propertyAddress2: get(props, 'client.propertyAddress2'),\n propertyState: get(props, 'client.propertyState'),\n propertyCity: get(props, 'client.propertyCity'),\n propertyZipcode: get(props, 'client.propertyZipcode'),\n };\n }\n }\n};\n\n/**\n * The primary component...ideally this should be the only component in this file.\n * @param {*} props\n */\nconst TransferDetails = props => {\n\n const expectedClosingDate = get(props, 'transfer.expectedClosingDate')\n ? formatDayFromUTC(get(props, 'transfer.expectedClosingDate'))\n : undefined;\n\n const { transferFeeConfigData } = props;\n\n let { realtors } = useAllRealtorsFromTenant(props.tenant.id);\n\n const { realtor } = getRealtorStore();\n // console.log(realtor)\n if (realtor && realtor.id.length === 24) {\n // Override realtors object as there is only 1 realtor\n // since coming from the realtor landing page\n realtors = [];\n realtors.push(realtor);\n }\n\n const { register, handleSubmit, errors, setValue, control, watch, getValues, } = useForm({\n defaultValues: {\n ...props.transfer,\n notes: extractNotesFromJson(props?.transfer?.notes),\n expectedClosingDate: expectedClosingDate,\n ...getDefaultValues(props),\n },\n });\n\n const valuesD = getValues()\n\n // PAYAPP-1193\n //Changed to 149999.99 by D.K No ticket assigned just a requestred Hotfix.\n const MAXIMUM_AMOUNT = 149999.99;\n const [maxAmountValidate, setMaxAmountValidate] = useState(false);\n const {\n register: regDocument,\n control: controlDocument,\n watch: watchDocument,\n } = useForm();\n const { state, action } = useStateMachine(updateAction);\n const [emdVisible, setFieldsEMDVisible] = useState(false);\n const [showREAInfoFill, setShowREAInfoFill] = useState(true);\n const [showAmountInfo, onShowAmountInfo] = useState(\n showInfo(watch('amount'))\n );\n const [realtorID, setRealtorID] = useState();\n const [realtorData, setRealtorData] = useState({\n fullName: '',\n email: '',\n phoneNumber: '',\n });\n const { createTransfer } = useCreateTransfer();\n const { saveTransfer } = useSaveTransfer();\n const { updateClient } = useUpdateClient();\n const { destAccount } = useEscrowAccountFromTenant(\n get(props, 'tenant.id', '')\n );\n const { institutionLogo } = useInstitutionLogo(\n get(destAccount, 'institutionCode', '')\n );\n const transferId = get(props, 'transfer.id');\n const [error, onSetError] = useState({ active: false, messageError: '' });\n const {\n data: creditTransferTypes,\n loading: loadingCreditTransferTypes,\n } = useAllCreditTransferTypes();\n const [purposes, setPurposes] = useState([]);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n\n\n useEffect(() => {\n if (realtors && props && props.transfer) {\n const realtor = realtors.filter(obj => {\n return (\n obj.firstName === props.transfer.realtor?.firstName &&\n obj.lastName === props.transfer.realtor?.lastName\n );\n });\n setRealtorID(realtor[0]?.id);\n }\n\n }, [realtors, props]);\n\n useEffect(() => {\n if (creditTransferTypes?.length) {\n const purposes = JSON.parse(\n creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].purpose\n ).purposes;\n setPurposes(purposes);\n }\n if (props?.tenant?.routingType === 'agent') {\n setShowREAInfoFill(false);\n }\n }, [creditTransferTypes]);\n\n const onSubmit = (newTransfer, saveAsDraft = false) => {\n delete newTransfer.amountCompare\n if (Number(watch('amount')) <= MAXIMUM_AMOUNT) {\n setMaxAmountValidate(false);\n const tenantId = get(props, 'tenant.id');\n const destAccountId = get(destAccount, 'id');\n const bankAccountId = get(state, 'data.bankAccount.id');\n\n if (newTransfer?.notes) {\n newTransfer.notes = JSON.stringify([{ note: newTransfer?.notes }]);\n }\n\n if (get(props, 'tenant.routingType') === 'office') {\n newTransfer = {\n ...newTransfer,\n office: {\n connect: {\n id: get(newTransfer, 'office.value'),\n },\n },\n };\n }\n if (get(props, 'tenant.routingType') === 'agent') {\n if (realtor && realtor.id.length === 24) {\n newTransfer = {\n ...newTransfer,\n realtor: {\n connect: {\n id: realtor.id,\n },\n },\n };\n } else {\n newTransfer = {\n ...newTransfer,\n realtor: {\n connect: {\n id: realtorID,\n },\n },\n };\n }\n } else if (realtor && realtor.id.length === 24) {\n newTransfer = {\n ...newTransfer,\n realtor: {\n connect: {\n id: realtor.id,\n },\n },\n };\n }\n\n if (isEmpty(tenantId))\n onSetError({\n active: true,\n messageError: 'Tenant not found, please check url',\n });\n if (isEmpty(destAccountId))\n onSetError({\n active: true,\n messageError: 'Destination account not found, please contact support',\n });\n if (isEmpty(bankAccountId))\n onSetError({\n active: true,\n messageError: 'Bank account not found, please select bank account',\n });\n if (\n !isEmpty(tenantId) &&\n !isEmpty(destAccountId) &&\n !isEmpty(bankAccountId)\n ) {\n const newTransferComplete = createDraftTransfer({\n props,\n destAccount,\n state,\n newTransfer,\n creditTransferTypes,\n transferFeeConfigData,\n realtorData,\n });\n\n if (transferId) {\n saveTransfer({\n variables: {\n id: props.transfer.id,\n transfer: newTransferComplete,\n },\n })\n .then(() => {\n const newUserAddress = {\n propertyAddress1: newTransfer.propertyAddress1,\n propertyAddress2: newTransfer.propertyAddress2,\n propertyState: newTransfer.propertyState,\n propertyCity: newTransfer.propertyCity,\n propertyZipcode: newTransfer.propertyZipcode,\n };\n\n updateClient({\n variables: {\n id: get(props, 'client.id'),\n client: newUserAddress,\n },\n });\n })\n .then(() => props.refetchTransfer())\n .then(() => {\n action({ transfer: newTransferComplete });\n if (saveAsDraft) {\n onClickGoToTransferHistory(props.history);\n } else {\n props.history.push(\n `/create-account/step-4?go_to_transfer=${transferId}`\n );\n }\n });\n } else {\n createTransfer({ variables: { transfer: newTransferComplete } })\n .then(response => {\n const transferId = get(response, 'data.createTransfer.id');\n action({ transfer: newTransferComplete });\n if (!saveAsDraft) {\n props.history.push(\n `/create-account/step-4?go_to_transfer=${transferId}`\n );\n } else {\n onClickGoToTransferHistory(props.history);\n }\n })\n .then(() => {\n const newUserAddress = {\n propertyAddress1: newTransfer.propertyAddress1,\n propertyAddress2: newTransfer.propertyAddress2,\n propertyState: newTransfer.propertyState,\n propertyCity: newTransfer.propertyCity,\n propertyZipcode: newTransfer.propertyZipcode,\n };\n\n updateClient({\n variables: {\n id: get(props, 'client.id'),\n client: newUserAddress,\n },\n });\n });\n }\n }\n } else {\n setMaxAmountValidate(true);\n }\n };\n\n return (\n <BoxContainer withDoubleBorder withLogButton>\n\n <Title />\n\n <form onSubmit={handleSubmit(e => onSubmit(e, false))}>\n <InfoTransfer />\n\n <FieldsInfoTransfer\n register={register}\n errors={errors}\n control={control}\n setValue={setValue}\n purposes={purposes}\n emdVisible={emdVisible}\n setFieldsEMDVisible={setFieldsEMDVisible}\n realtorData={realtorData}\n setRealtorData={setRealtorData}\n client={get(props, 'client')}\n showREAInfoFill={showREAInfoFill}\n />\n <InfoPropertyAddress />\n <FieldsInfoPropertyAddress\n register={register}\n errors={errors}\n setValue={setValue}\n transfer={props.transfer}\n control={control}\n />\n <InfoAmount />\n <FieldInfoAmount\n errors={errors}\n control={control}\n showAmountInfo={showAmountInfo}\n onShowAmountInfo={onShowAmountInfo}\n watch={watch}\n watchDocument={watchDocument}\n regDocument={regDocument}\n controlDocument={controlDocument}\n maxAmountValidate={maxAmountValidate}\n setMaxAmountValidate={setMaxAmountValidate}\n MAXIMUM_AMOUNT={MAXIMUM_AMOUNT}\n bankBalance={get(state, 'data.bankAccount.balance')}\n transferFeeConfigData={transferFeeConfigData}\n getValues={getValues}\n />\n <DestinationAccount\n title=\"Destination Account:\"\n logoURL={HeaderLogo}\n bankName={get(destAccount, 'bankName')}\n accountLastFourDigits={get(destAccount, 'accountLastFourDigits')}\n description={get(destAccount, 'bankDisplayName')}\n destAccountLogo={get(institutionLogo, 'logoURL')}\n tenantName={get(props, 'tenant.name')}\n address1={get(props, 'tenant.address1')}\n apartmentSuiteNumber={get(props, 'tenant.address2')}\n city={get(props, 'tenant.city')}\n state={get(props, 'tenant.state')}\n zipcode={get(props, 'tenant.zipcode')}\n />\n {get(props, 'tenant.routingType') === 'office' && (\n <FieldOfficeSelect\n control={control}\n errors={errors}\n tenantId={get(props, 'tenant.id')}\n setValue={setValue}\n labelInValue={false}\n />\n )}\n {get(props, 'tenant.routingType') === 'agent' && !realtor && (\n <RealtorSelect\n control={control}\n errors={errors}\n tenantId={get(props, 'tenant.id')}\n setValue={setValue}\n labelInValue={false}\n realtors={realtors}\n setRealtorID={setRealtorID}\n transfer={props}\n />\n )}\n <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n onClick={() => onClickBackButton(props.history)}\n noShadow\n type={BUTTON_TYPE.LIGHT_BLUE}\n >\n {'< Back'}\n </PaymintsButton>\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n htmlType=\"submit\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n disabled={loadingCreditTransferTypes}\n >\n Review\n </PaymintsButton>\n {/* <PaymintsButton\n className=\"create-account__save-come-back-button create-account__transfer-action-button\"\n onClick={handleSubmit(e => onSubmit(e, true))}\n noShadow\n type={BUTTON_TYPE.LINK}\n >\n {'Save & Come Back Later'}\n </PaymintsButton> */}\n {error.active && (\n <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n )}\n </div>\n\n </form>\n </BoxContainer>\n );\n};\n\nexport default withRouter(\n connect(state => ({}), {\n onSaveTransferDoc: saveTransferDoc,\n })(TransferDetails)\n);\n","import React from 'react';\nimport get from 'lodash/get';\nimport FormatAddress from '../../FormatAddress/FormatAddress';\nimport { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\n\n/**\n * Taking the purpose string and possible adjustment\n * @param {*} purpose\n */\nconst transformPurpose = purpose => {\n if (!purpose) {\n return '--';\n }\n return purpose;\n};\n\nfunction TransferSummary({ transfer }) {\n return (\n <div className=\"p-4 rounded bg-white mb-2 border\">\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\">Purpose</h6>\n <span style={{ textTransform: 'capitalize' }}>\n {transformPurpose(transfer?.purpose)}\n </span>\n </div>\n\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\">Subject Property</h6>\n <FormatAddress\n streetNumberName={get(transfer, 'propertyAddress1')}\n apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n city={get(transfer, 'propertyCity')}\n state={get(transfer, 'propertyState')}\n zipcode={get(transfer, 'propertyZipcode')}\n />\n </div>\n\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\">Transfer Amount</h6>\n <div className=\"create-account__item-amount\">\n <PaymintsNumberFormat\n number={get(transfer, 'amount')}\n decimals={2}\n format=\"currency\"\n />\n </div>\n </div>\n {transfer?.fee ? (\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\">Fee</h6>\n <div className=\"create-account__item-amount\">\n <PaymintsNumberFormat\n number={transfer?.fee || 0}\n decimals={2}\n format=\"currency\"\n />\n </div>\n </div>\n ) : (\n ''\n )}\n\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\">Total</h6>\n <div className=\"create-account__item-amount\">\n <PaymintsNumberFormat\n number={+transfer?.amount + (+transfer?.fee || 0)}\n decimals={2}\n format=\"currency\"\n />\n </div>\n </div>\n </div>\n );\n}\n\nexport default function MobileTransferSummary({\n transfer,\n bankAccount,\n bankAccountLogo,\n disbursement,\n}) {\n return (\n <div className=\"d-block d-lg-none d-xl-none\">\n <TransferSummary\n key={get(transfer, 'id')}\n transfer={transfer}\n bankAccount={bankAccount}\n bankAccountLogo={bankAccountLogo}\n disbursement={disbursement}\n />\n </div>\n );\n}\n","import { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isNil from \"lodash/isNil\";\n\nconst CREATE_BANK_ACCOUNT_QUERY = gql`\n mutation createBankAccount($bankAccount: BankAccountCreateInput!) {\n createBankAccount(data: $bankAccount) {\n id\n }\n }\n`;\n\nexport function useCreateBankAccount() {\n const [createBankAccount, { loading, error, data }] = useMutation(\n CREATE_BANK_ACCOUNT_QUERY\n );\n return {\n createBankAccount,\n loading,\n error,\n bank: data ? data.createBankAccount : undefined,\n };\n}\n\nconst GET_BANK_ACCOUNTS_QUERY = gql`\n query allBankAccounts($where: BankAccountWhereInput!) {\n allBankAccounts(where: $where) {\n id\n bankName\n description\n institutionCode\n accountLastFourDigits\n bankDisplayName\n accountNumber\n active\n updatedAt\n createdAt\n }\n }\n`;\n\nexport function useAllBankAccountsByClient(clientID) {\n const id = isNil(clientID) || isEmpty(clientID) ? null : clientID;\n const { loading, error, data, refetch } = useQuery(GET_BANK_ACCOUNTS_QUERY, {\n variables: { where: { client: { id }, active: true } },\n });\n return {\n loading,\n error,\n refetch,\n bankAccounts: data ? data.allBankAccounts : undefined,\n };\n}\n\nconst GET_BANK_ACCOUNT_QUERY = gql`\n query BankAccount($bankAccount: ID!) {\n BankAccount(where: { id: $bankAccount }) {\n id\n bankName\n description\n institutionCode\n accountNumber\n accountLastFourDigits\n bankDisplayName\n active\n updatedAt\n createdAt\n }\n }\n`;\n\nexport function useBankAccount(id) {\n const { loading, error, data, refetch } = useQuery(GET_BANK_ACCOUNT_QUERY, {\n variables: { bankAccount: id },\n });\n return {\n loading,\n error,\n refetch,\n bankAccount: data ? data.BankAccount : undefined,\n };\n}\n\nconst UPDATE_BANK_ACCOUNT = gql`\n mutation updateBankAccount($id: ID!, $bankAccount: BankAccountUpdateInput!) {\n updateBankAccount(id: $id, data: $bankAccount) {\n id\n }\n }\n`;\n\nexport function useUpdateBankAccount() {\n const [updateBankAccount, { loading, error, data }] = useMutation(\n UPDATE_BANK_ACCOUNT\n );\n return {\n updateBankAccount,\n loadingDelete: loading,\n error,\n bankAccount: data ? data.updateBankAccount : undefined,\n };\n}\n\nconst GET_ESCROW_BANK_ACCOUNT_QUERY = gql`\n query EscrowAccount($destBankAccount: ID!) {\n EscrowAccount(where: { id: $destBankAccount }) {\n id\n bankName\n institutionCode\n description\n accountNumber\n accountLastFourDigits\n bankDisplayName\n active\n updatedAt\n createdAt\n }\n }\n`;\n\nexport function useEscrowAccount(id) {\n const { loading, error, data, refetch } = useQuery(\n GET_ESCROW_BANK_ACCOUNT_QUERY,\n {\n variables: { destBankAccount: id },\n }\n );\n return {\n loading,\n error,\n refetch,\n destBankAccount: data ? data.destBankAccount : undefined,\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal } from 'react-bootstrap';\nimport { PaymintsButton, BUTTON_TYPE } from 'paymints-address-autocomplete-field';\nimport './contentModal.css';\n\nconst small = (props) => (\n props.small ? ' content-modal--small' : ''\n)\n\nconst progress = (props) => (\n props.progress ? ' content-modal--progress' : ''\n)\n\nconst ContentModal = (props) => (\n <Modal\n animation\n autoFocus\n backdrop\n enforceFocus\n show={props.isVisible}\n onExit={props.onClose}\n centered\n onHide={props.hide ? props.onClose : null}\n className={`content-modal${small(props)}${progress(props)} ${props.className}`}\n >\n <Modal.Header closeButton={!props.hideCloseButton}>\n <Modal.Title id=\"contained-modal-title-vcenter\">{props.title}</Modal.Title>\n </Modal.Header>\n <Modal.Body className=\"content-modal__body\">\n <div className=\"content-modal__content-data\">\n {props.content}\n </div>\n <Modal.Footer>\n {!props.withoutButtons ? \n props.isCancelButton ?\n (\n <PaymintsButton type={BUTTON_TYPE.LIGHT_BLUE} className=\"content-modal__button\" onClick={props.onSecondaryButton}>\n {props.secondaryButtonText}\n </PaymintsButton>\n ) :\n <PaymintsButton type={BUTTON_TYPE.INVERSE_BLUE} className=\"content-modal__button\" onClick={props.onPrimaryButton ? props.onPrimaryButton : props.onClose}>\n {props.primaryButtonText}\n </PaymintsButton>\n : null\n }\n </Modal.Footer>\n </Modal.Body>\n </Modal>\n);\n\nContentModal.propTypes = {\n content: PropTypes.any,\n isVisible: PropTypes.bool,\n onSecondaryButton: PropTypes.func,\n secondaryButtonText: PropTypes.string,\n className: PropTypes.string,\n small: PropTypes.bool,\n isCancelButton: PropTypes.bool,\n progress: PropTypes.bool,\n title: PropTypes.string,\n primaryButtonText: PropTypes.string,\n onPrimaryButton: PropTypes.func,\n onClose: PropTypes.func,\n withoutButtons: PropTypes.bool,\n hideCloseButton: PropTypes.bool,\n hide: PropTypes.bool,\n centered: PropTypes.bool,\n};\n\nContentModal.defaultProps = {\n secondaryButtonText: 'Close',\n small: false,\n progress: false,\n className: '',\n title: '',\n primaryButtonText: 'Close',\n isCancelButton: false,\n withoutButtons: false,\n hideCloseButton: false,\n hide: false,\n};\n\nexport default ContentModal;\n","/*\n * src/components/TransferSummary/TransferSummary.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm } from 'react-hook-form';\nimport { withRouter, Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { useStateMachine } from 'little-state-machine';\nimport moment from 'moment';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport { getQueryVariable } from '../../utils/util';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport {\n PaymintsNumberFormat,\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport DestinationAccount from '../DestinationAccount/DestinationAccount';\nimport { useSaveTransfer } from '../../utils/service/service_transfer_api';\nimport MobileTransferSummary from './MobileTransferSummary/MobileTransferSummary';\nimport { getPlaidCreateClient } from '../../reducers/account/AccountActions';\nimport { startDwolla } from '../../reducers/transfer/TransferActions';\nimport FormatAddress from '../FormatAddress/FormatAddress';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { useBankAccount } from '../../utils/service/service_bank_api';\nimport arrow from '../../styles/assets/Arrow_right.svg';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport HeaderLogo from '../../styles/assets/lemon.png';\nimport ContentModal from '../ContentModal/ContentModal';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport {\n extractNotesFromJson,\n paymintsCurrencyFormatter,\n} from '../../utils/util';\n\nimport '../CreateAccountWizard/createAccount.css';\nimport './transfer-summary.css';\n\nconst Title = () => <div className=\"title\">Review</div>;\n\nconst InfoTransfer = () => (\n <div className=\"infoTransfer\">\n Please confirm that the information below is correct before continuing.\n </div>\n);\n\n/**\n * Taking the purpose string and possible adjustment\n * @param {*} purpose\n */\nconst transformPurpose = purpose => {\n if (!purpose) {\n return '--';\n }\n return purpose;\n};\n\nconst DisplaySummationRows = ({ transfer }) => {\n return (\n <div className=\"summationContainer\">\n <table>\n <tbody>\n <tr>\n <td style={{ textTransform: 'capitalize' }}>{`${transformPurpose(\n transfer?.purpose\n )} Amount`}</td>\n <td>{paymintsCurrencyFormatter(transfer?.amount || 0)}</td>\n </tr>\n {transfer?.fee && (\n <tr>\n <td>Convenience Fee</td>\n <td>{paymintsCurrencyFormatter(transfer?.fee || 0)}</td>\n </tr>\n )}\n <tr\n style={{\n borderTop: 'solid 1px #ccc',\n paddingTop: '5px',\n paddingBottom: '5px',\n }}\n >\n <td />\n <td className=\"transferTotalAmount\">Transfer Total Amount</td>\n </tr>\n <tr>\n <td />\n <td className=\"transferTotal\">\n <PaymintsNumberFormat\n number={+(transfer?.amount || 0) + +(transfer?.fee || 0)}\n decimals={2}\n format=\"currency\"\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n};\n\nconst SummaryTransfer = ({\n transfer,\n bankAccount,\n bankAccountLogo,\n disbursement,\n}) => {\n return (<>\n <MobileTransferSummary\n transfer={transfer}\n bankAccount={bankAccount}\n bankAccountLogo={bankAccountLogo}\n disbursement={disbursement}\n /> \n <div className=\"sectionTitle\">Details</div>\n <div className=\"detailsContainer\">\n <div className=\"col\">\n <div className=\"sectionTitle\">Transfer Date</div>\n <p>{moment().format('MM/DD/YYYY')}</p>\n </div>\n <div className=\"col\">\n <div className=\"sectionTitle\">Purpose</div>\n <p style={{ textTransform: 'capitalize' }}>\n {transformPurpose(transfer?.purpose)}\n </p>\n </div>\n <div className=\"col\">\n <div className=\"sectionTitle\">Subject Property</div>\n <FormatAddress\n streetNumberName={get(transfer, 'propertyAddress1')}\n apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n city={get(transfer, 'propertyCity')}\n state={get(transfer, 'propertyState')}\n zipcode={get(transfer, 'propertyZipcode')}\n />\n </div>\n {transfer.office !== null ? (\n <div className=\"col\">\n <div className=\"sectionTitle\">Office</div>\n <p>\n {transfer?.office?.title} - {transfer?.office?.city},{' '}\n {transfer?.office?.state}\n </p>\n </div>\n ) : null}\n {transfer.realtor !== null ? (\n <div className=\"col\">\n <div className=\"sectionTitle\">Real Estate Agent</div>\n <p>\n {' '}\n {transfer?.realtor?.firstName} {transfer?.realtor?.lastName}{' '}\n {transfer?.realtor?.email}\n </p>\n </div>\n ) : null}\n <div className=\"col\">\n <div className=\"sectionTitle\">Note</div>\n <p>{extractNotesFromJson(transfer?.notes || '')}</p>\n </div>\n </div>\n\n <DisplaySummationRows transfer={transfer} />\n </>)\n \n};\n\nconst UseDifferentAccountLink = ({ account, transferDwolla, history }) => (\n <div className=\"create-account__select-another-account-button\">\n <Link\n disabled={\n get(account, 'createClient.isFetchingCreateClient') ||\n get(transferDwolla, 'startDwolla.isFetchingStartDwolla')\n }\n to={{\n pathname: '/create-account/step-select-account',\n search: `${get(history, 'location.search')}`,\n state: { fromSummary: true },\n }}\n >\n <PaymintsButton\n className=\"create-account__select-another-account-button\"\n disabled={\n get(account, 'createClient.isFetchingCreateClient') ||\n get(transferDwolla, 'startDwolla.isFetchingStartDwolla')\n }\n loading={get(account, 'createClient.isFetchingCreateClient')}\n noShadow\n type={BUTTON_TYPE.LINK}\n >\n {'Use Different Account'}\n </PaymintsButton>\n </Link>\n </div>\n);\n\nconst onClickBackButton = (history, disbursement, id) => {\n if (!disbursement) {\n history.push(`/create-account/step-3${get(history, 'location.search')}`);\n } else {\n history.push(\n `/create-account/step-select-account?go_to_transfer=${id}?disbursement=\"select-bank\"`\n );\n }\n};\n\nconst onClickGoToTransferHistory = history => history.push('/transfer-history');\n\nconst buildLoaderModal = () => (\n <div className=\"create-account__modal\">\n <div className=\"create-account__modal-loading\">\n <SpinnerLoader withoutMargin />\n </div>\n <div className=\"create-account__modal-info\">\n Processing Fund Transfer ...\n </div>\n </div>\n);\n\nconst TransferSummary = props => {\n const {\n history,\n client,\n transfer,\n onstartDwolla,\n transferDwolla,\n account,\n } = props;\n const { handleSubmit, getValues } = useForm({ defaultValues: transfer });\n const { state, action } = useStateMachine(updateAction);\n const { saveTransfer } = useSaveTransfer();\n const { bankAccount } = useBankAccount(get(state, 'data.bankAccount.id', ''));\n const { institutionLogo: bankAccountLogo } = useInstitutionLogo(\n get(bankAccount, 'institutionCode', '')\n );\n const { destBankAccount } = useEscrowAccountFromTenant(\n get(props, 'tenant.id', '')\n );\n const { institutionLogo } = useInstitutionLogo(\n get(destBankAccount, 'institutionCode', '')\n );\n\n const [error, onSetError] = useState({ active: false, messageError: '' });\n const [showModal, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n const pathUrl = get(split(props.location.search, '?'), 2);\n const disbursement = getQueryVariable(pathUrl, 'disbursement');\n\n const onSubmit = (newTransfer, saveAsDraft = false) => {\n const path = get(split(props.location.search, '?'), 1);\n const transferId =\n getQueryVariable(path, 'go_to_transfer') || get(transfer, 'id');\n if (transferId) {\n // const disbursementData = {\n // sourceBankAccountId: get(transfer, \"sourceBankAccount.id\"),\n // destBankAccountId: get(state, \"data.bankAccount.id\"),\n // transferId: transferId,\n // };\n const disbursementData = {\n sourceBankAccountId: get(state, 'data.bankAccount.id', ''),\n destBankAccountId: get(transfer, 'destBankAccount.id'),\n transferId: transferId,\n };\n\n const data = {\n sourceBankAccountId: get(state, 'data.bankAccount.id', ''),\n destBankAccountId: get(transfer, 'destBankAccount.id'),\n transferId: transferId,\n };\n if (saveAsDraft) {\n saveTransfer({\n variables: {\n id: transferId,\n transfer: {\n status: 'draft',\n tenant: {\n connect: {\n id: get(props, 'tenant.id'),\n },\n },\n sourceBankAccount: {\n connect: {\n id: get(state, 'data.bankAccount.id'),\n },\n },\n },\n },\n })\n .then(response => {\n handleClose();\n props.refetchTransfer({\n id: get(response, 'data.updateTransfer.id'),\n });\n action({ transfer: { ...props.transfer } });\n })\n .then(() => {\n if (saveAsDraft) {\n onClickGoToTransferHistory(props.history);\n }\n });\n } else {\n handleShow();\n onSetError({ active: false, messageError: '' });\n onstartDwolla(disbursement ? disbursementData : data, {\n type: disbursement ? 'disbursement' : null,\n }).then(response => {\n if (!get(response, 'error')) {\n handleClose();\n saveTransfer({\n variables: {\n id: transferId,\n transfer: {\n status: 'pending',\n },\n },\n })\n .then(response => {\n props.refetchTransfer({\n id: get(response, 'data.updateTransfer.id'),\n });\n action({ transfer: { ...props.transfer } });\n })\n .then(() => {\n if (saveAsDraft) {\n onClickGoToTransferHistory(props.history);\n } else {\n if (!disbursement) {\n props.history.push(`/create-account/success`);\n } else {\n const path = get(split(props.location.search, '?'), 1);\n const transferId =\n getQueryVariable(path, 'go_to_transfer') || '';\n props.history.push(\n `/create-account/success?go_to_transfer=${transferId}?disbursement=success`\n );\n }\n }\n });\n } else {\n const customErrMsg = `Unfortunately, your transfer cannot be completed at this time due to connectivity issues with your financial institution. Please provide the closer with a certified check or contact ${\n props.tenant.name\n } at ${props.tenant.pocPhone ??\n 'their primary phone number'} or email ${props.tenant\n .supportEmail ??\n 'them'} to get wiring instructions specific to your transaction. We apologize for any inconvenience.`;\n\n handleClose();\n onSetError({\n active: true,\n // messageError: get(response, \"message\"),\n messageError: customErrMsg,\n });\n }\n });\n }\n }\n };\n const path = get(split(props.location.search, '?'), 1);\n const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n const values = getValues();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n <>\n <ContentModal\n isVisible={showModal}\n onClose={handleClose}\n content={buildLoaderModal()}\n small\n withoutButtons\n hideCloseButton\n />\n <BoxContainer withDoubleBorder withLogButton>\n <Title disbursement={disbursement} />\n <form onSubmit={handleSubmit(e => onSubmit(e, false))}>\n {/* review and please confirm...*/}\n <InfoTransfer />\n\n {/* from account -> to account */}\n <div className=\"create-account__destination-account\">\n <DestinationAccount\n title={`Transfer From:`}\n logoURL={disbursement ? HeaderLogo : ''}\n bankName={\n !disbursement\n ? get(bankAccount, 'bankName')\n : get(destBankAccount, 'bankName')\n }\n accountLastFourDigits={\n !disbursement\n ? get(bankAccount, 'accountLastFourDigits')\n : get(destBankAccount, 'accountLastFourDigits')\n }\n description={\n !disbursement\n ? get(bankAccount, 'bankDisplayName')\n : get(destBankAccount, 'bankDisplayName')\n }\n escrowAccountLogo={\n !disbursement\n ? get(bankAccountLogo, 'logoURL')\n : get(institutionLogo, 'logoURL')\n }\n name={`${get(client, 'firstName')} ${get(client, 'lastName')}`}\n tenantName={disbursement ? get(props, 'tenant.name') : ''}\n address1={\n !disbursement\n ? get(client, 'address1')\n : get(props, 'tenant.address1')\n }\n apartmentSuiteNumber={\n !disbursement\n ? get(client, 'address2')\n : get(props, 'tenant.address2')\n }\n city={\n !disbursement ? get(client, 'city') : get(props, 'tenant.city')\n }\n state={\n !disbursement\n ? get(client, 'state')\n : get(props, 'tenant.state')\n }\n zipcode={\n !disbursement\n ? get(client, 'zipcode')\n : get(props, 'tenant.zipcode')\n }\n type={!disbursement ? `from` : `to`}\n >\n <div\n className=\"create-account__use-different-account-link\"\n hidden={bankAccount}\n >\n <UseDifferentAccountLink\n account={account}\n transferDwolla={transferDwolla}\n history={history}\n disbursement={disbursement}\n />\n </div>\n </DestinationAccount>\n <img\n className=\"create-account__destination-account-arrow-logo d-none d-lg-block\"\n src={arrow}\n alt=\"\"\n />\n <DestinationAccount\n title={`Transfer To:`}\n logoURL={!disbursement ? HeaderLogo : ''}\n bankName={\n disbursement\n ? get(bankAccount, 'bankName')\n : get(destBankAccount, 'bankName')\n }\n accountLastFourDigits={\n disbursement\n ? get(bankAccount, 'accountLastFourDigits')\n : get(destBankAccount, 'accountLastFourDigits')\n }\n description={\n disbursement\n ? get(bankAccount, 'bankDisplayName')\n : get(destBankAccount, 'bankDisplayName')\n }\n escrowAccountLogo={\n disbursement\n ? get(bankAccountLogo, 'logoURL')\n : get(institutionLogo, 'logoURL')\n }\n tenantName={get(props, 'tenant.name')}\n address1={\n disbursement\n ? get(client, 'address1')\n : get(props, 'tenant.address1')\n }\n apartmentSuiteNumber={\n disbursement\n ? get(client, 'address2')\n : get(props, 'tenant.address2')\n }\n city={\n disbursement ? get(client, 'city') : get(props, 'tenant.city')\n }\n state={\n disbursement ? get(client, 'state') : get(props, 'tenant.state')\n }\n zipcode={\n disbursement\n ? get(client, 'zipcode')\n : get(props, 'tenant.zipcode')\n }\n type={disbursement ? `from` : `to`}\n />\n </div>\n\n {/* the \"Details\" section */}\n <SummaryTransfer\n transfer={values}\n bankAccount={bankAccount}\n disbursement={disbursement}\n bankAccountLogo={get(bankAccountLogo, 'logoURL')}\n />\n\n <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__make-transfer-action-button\"\n disabled={get(\n transferDwolla,\n 'startDwolla.isFetchingStartDwolla'\n )}\n onClick={() => {\n props.refetchTransfer({\n id: transferId,\n });\n onClickBackButton(props.history, disbursement, transferId);\n }}\n noShadow\n type={BUTTON_TYPE.LIGHT_BLUE}\n >\n <span className=\"button__name\">{'< Back'}</span>\n </PaymintsButton>\n <PaymintsButton\n htmlType=\"submit\"\n disabled={get(\n transferDwolla,\n 'startDwolla.isFetchingStartDwolla'\n )}\n className=\"mr-4 create-account__transfer-action-button mobile__make-transfer-action-button\"\n loading={get(transferDwolla, 'startDwolla.isFetchingStartDwolla')}\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n <span className=\"button__name\">\n {!disbursement ? 'Make Transfer' : 'Accept Payment'}\n </span>\n </PaymintsButton>\n {/* <PaymintsButton\n disabled={get(\n transferDwolla,\n 'startDwolla.isFetchingStartDwolla'\n )}\n className=\"create-account__save-come-back-button create-account__transfer-action-button\"\n onClick={() => {\n if (disbursement) {\n return history.push('/transfer-history');\n } else {\n return handleSubmit(e => onSubmit(e, true));\n }\n }}\n noShadow\n type={BUTTON_TYPE.LINK}\n >\n <span className=\"button__name\">{'Save & Come Back Later'}</span>\n </PaymintsButton> */}\n {error.active && (\n <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n )}\n </div>\n </form>\n </BoxContainer>\n </>\n );\n};\n\nexport default withRouter(\n connect(\n state => ({\n account: state.account,\n transferDwolla: state.transfer,\n }),\n {\n onGetPlaidCreateClient: getPlaidCreateClient,\n onstartDwolla: startDwolla,\n }\n )(TransferSummary)\n);","/*\n * src/components/TransferSuccess/EmailAddresses.jsx\n * Description: PAYAPP-967 refactor\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nconst EmailAddresses = ({ register, errors }) => {\n return (\n <div className=\"create-account__container-email\">\n {[1, 2, 3, 4, 5].map((m) => {\n const marker = `email${m}`;\n return (\n <div className=\"create-account__email-input\" key={m}>\n <input\n type=\"email\"\n id={marker}\n name={marker}\n className=\"create-account__input form-control padding-bottom-10\"\n placeholder=\"Add email address\"\n ref={register({\n maxLength: 50,\n /* eslint-disable no-control-regex */\n pattern: /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/,\n })}\n autoComplete=\"no\"\n />\n {errors[marker] && errors[marker].type === \"maxLength\" && (\n <span style={{ color: \"#c30\" }}>Max length exceeded</span>\n )}\n {errors[marker] && errors[marker].type === \"pattern\" && (\n <span style={{ color: \"#c30\" }}>Invalid email format</span>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default EmailAddresses;\n","/*\n * src/components/TransferSuccess/InfoDisbursement.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nconst InfoDisbursement = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__subtitle-information\">\n You should see the funds deposited into your account within the next 1-3\n business days. Check your email for a transaction summary receipt.\n </div>\n </div>\n);\n\nexport default InfoDisbursement;\n","/*\n * InfoEmail.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nconst InfoEmail = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__subtitle light-black with-margin\">\n You can send a receipt of this transfer to up to 5 people. If you wish to\n do so, please enter their email addresses below:\n </div>\n </div>\n);\n\nexport default InfoEmail;\n","/*\n * src/components/TransferSuccess/InfoTransfer.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\n\nconst InfoTransfer = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__subtitle-information\">\n You should expect to see the money come out of your account within the\n next business day. Check your email for a transfer summary receipt.\n </div>\n </div>\n);\n\nexport default InfoTransfer;\n","/*\n * SuccessTitle.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\n\nconst SuccessTitle = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">Your transfer is now pending.</div>\n </div>\n);\n\nexport default SuccessTitle;\n","import React from 'react';\nimport get from 'lodash/get';\nimport FormatAddress from '../../FormatAddress/FormatAddress';\nimport { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\n\nfunction TransferSuccess({\n transfer,\n bankAccount,\n destAccount,\n bankAccountLogo,\n escrowAccountLogo,\n disbursement,\n tenant,\n}) {\n const tenantName = get(tenant, 'name');\n const address1 = get(tenant, 'address1');\n const address2 = get(tenant, 'address2');\n const city = get(tenant, 'city');\n const state = get(tenant, 'state');\n const zipcode = get(tenant, 'zipcode');\n const office = get(transfer, 'office.title');\n return (\n <div className=\"p-4 rounded bg-white mb-2 border\">\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\">Subject Property:</h6>\n <FormatAddress\n streetNumberName={get(transfer, 'propertyAddress1')}\n apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n city={get(transfer, 'propertyCity')}\n state={get(transfer, 'propertyState')}\n zipcode={get(transfer, 'propertyZipcode')}\n />\n </div>\n\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\">Transfer Amount:</h6>\n <div className=\"create-account__item-amount\">\n <PaymintsNumberFormat\n number={(+transfer?.amount || 0) + (+transfer?.fee || 0)}\n decimals={2}\n format=\"currency\"\n />\n </div>\n </div>\n\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\"> Transfer From Account:</h6>\n <div className=\"create-account__bank-information\">\n <div className=\"create-account__bank-information-logo\">\n {disbursement ? null : (\n <img\n className=\"create-account__bank-information-icon-logo\"\n src={bankAccountLogo}\n alt=\"\"\n />\n )}\n </div>\n <div className=\"create-account__bank-information-account\">\n {disbursement ? (\n <div className=\"create-account__bank-information-account\">\n {tenantName}\n <br />\n {address1}\n {address2 !== null ? (\n <>\n <br />\n {address2}\n </>\n ) : null}\n <br />\n {city}, {state} {zipcode}\n <br />\n {office}\n </div>\n ) : (\n get(bankAccount, 'bankName')\n )}\n <br />\n {disbursement\n ? null\n : `X${get(bankAccount, 'accountLastFourDigits')}`}\n </div>\n </div>\n </div>\n\n <div className=\"mb-4\">\n <h6 className=\"create-account__item-title\"> Transfer To Account:</h6>\n <div className=\"create-account__bank-information\">\n <div className=\"create-account__bank-information-logo\">\n {disbursement ? (\n <img\n className=\"create-account__bank-information-icon-logo\"\n src={bankAccountLogo}\n alt=\"\"\n />\n ) : null}\n </div>\n <div className=\"create-account__bank-information-account\">\n {disbursement ? (\n `${get(bankAccount, 'bankName')}`\n ) : (\n <div className=\"create-account__bank-information-account\">\n {tenantName}\n <br />\n {address1}\n {address2 !== null ? (\n <>\n <br />\n {address2}\n </>\n ) : null}\n <br />\n {city}, {state} {zipcode}\n <br />\n {office}\n </div>\n )}\n <br />\n {disbursement\n ? `X${get(bankAccount, 'accountLastFourDigits')}`\n : null}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport default function MobileTransferSuccess({\n transfer,\n bankAccount,\n destAccount,\n bankAccountLogo,\n escrowAccountLogo,\n tenant,\n disbursement,\n}) {\n return (\n <div className=\"d-block d-lg-none d-xl-none\">\n <TransferSuccess\n key={get(transfer, 'id')}\n transfer={transfer}\n bankAccount={bankAccount}\n destAccount={destAccount}\n bankAccountLogo={bankAccountLogo}\n escrowAccountLogo={escrowAccountLogo}\n tenant={tenant}\n disbursement={disbursement}\n />\n </div>\n );\n}\n//Commented out due to deployment issue\n// import React from 'react';\n// import get from 'lodash/get';\n// import FormatAddress from '../../FormatAddress/FormatAddress';\n// import { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\n\n// function TransferSuccess({\n// transfer,\n// bankAccount,\n// bankEscrowAccount,\n// bankAccountLogo,\n// escrowAccountLogo,\n// }) {\n// return (\n// <div className=\"p-4 rounded bg-white mb-2 border\">\n// <div className=\"mb-4\">\n// <h6 className=\"create-account__item-title\">Subject Property:</h6>\n// <FormatAddress\n// streetNumberName={get(transfer, 'propertyAddress1')}\n// apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n// city={get(transfer, 'propertyCity')}\n// state={get(transfer, 'propertyState')}\n// zipcode={get(transfer, 'propertyZipcode')}\n// />\n// </div>\n\n// <div className=\"mb-4\">\n// <h6 className=\"create-account__item-title\">Transfer Amount:</h6>\n// <div className=\"create-account__item-amount\">\n// <PaymintsNumberFormat\n// number={(+transfer?.amount || 0) + (+transfer?.fee || 0)}\n// decimals={2}\n// format=\"currency\"\n// />\n// </div>\n// </div>\n\n// <div className=\"mb-4\">\n// <h6 className=\"create-account__item-title\"> Transfer From Account:</h6>\n// <div className=\"create-account__bank-information\">\n// <div className=\"create-account__bank-information-logo\">\n// <img\n// className=\"create-account__bank-information-icon-logo\"\n// src={bankAccountLogo}\n// alt=\"\"\n// />\n// </div>\n// <div className=\"create-account__bank-information-account\">\n// {!disbursement\n// ? get(bankAccount, 'bankName')\n// : get(destBankAccount, 'bankName')}\n// <br />\n// {!disbursement\n// ? get(bankAccount, 'accountLastFourDigits')\n// : get(destBankAccount, 'accountLastFourDigits')}\n// </div>\n// </div>\n// </div>\n\n// <div className=\"mb-4\">\n// <h6 className=\"create-account__item-title\"> Transfer To Account:</h6>\n// <div className=\"create-account__bank-information\">\n// <div className=\"create-account__bank-information-logo\">\n// <img\n// className=\"create-account__bank-information-icon-logo\"\n// src={escrowAccountLogo}\n// alt=\"\"\n// />\n// </div>\n// <div className=\"create-account__bank-information-account\">\n// {!disbursement\n// ? get(destBankAccount, 'bankName')\n// : get(bankAccount, 'bankName')}\n// <br />\n// {!disbursement\n// ? get(destBankAccount, 'accountLastFourDigits')\n// : get(bankAccount, 'accountLastFourDigits')}\n// </div>\n// </div>\n// </div>\n// </div>\n// );\n// }\n\n// export default function MobileTransferSuccess({\n// transfer,\n// bankAccount,\n// bankEscrowAccount,\n// bankAccountLogo,\n// escrowAccountLogo,\n// }) {\n// return (\n// <div className=\"d-block d-lg-none d-xl-none\">\n// <TransferSuccess\n// key={get(transfer, 'id')}\n// transfer={transfer}\n// bankAccount={bankAccount}\n// bankEscrowAccount={bankEscrowAccount}\n// bankAccountLogo={bankAccountLogo}\n// escrowAccountLogo={escrowAccountLogo}\n// />\n// </div>\n// );\n// }\n","/*\n * src/components/TransferSuccess/SuccessLastRow.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\nimport get from 'lodash/get';\nimport moment from 'moment';\n\nimport { PaymintsNumberFormat } from 'paymints-address-autocomplete-field';\nimport FormatAddress from '../FormatAddress/FormatAddress';\n\nimport {\n extractNotesFromJson,\n paymintsCurrencyFormatter,\n} from '../../utils/util';\n\nimport './transfer-success.css';\n\n/**\n * Taking the purpose string and possible adjustment\n * @param {*} purpose\n */\nconst transformPurpose = purpose => {\n if (!purpose) {\n return '--';\n }\n return purpose;\n};\n\nconst DisplaySummationRows = ({ transfer }) => {\n return (\n <div className=\"summationContainer\">\n <table>\n <tbody>\n <tr>\n <td style={{ textTransform: 'capitalize' }}>{`${transformPurpose(\n transfer?.purpose\n )} Amount`}</td>\n <td>{paymintsCurrencyFormatter(transfer?.amount || 0)}</td>\n </tr>\n {transfer?.fee && (\n <tr>\n <td>Convenience Fee</td>\n <td>{paymintsCurrencyFormatter(transfer?.fee || 0)}</td>\n </tr>\n )}\n <tr\n style={{\n borderTop: 'solid 1px #ccc',\n paddingTop: '5px',\n paddingBottom: '5px',\n }}\n >\n <td />\n <td className=\"transferTotalAmount\">Transfer Total Amount</td>\n </tr>\n <tr>\n <td />\n <td className=\"transferTotal\">\n <PaymintsNumberFormat\n number={+(transfer?.amount || 0) + +(transfer?.fee || 0)}\n decimals={2}\n format=\"currency\"\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n};\n\nconst SuccessLastRow = ({ transfer }) => {\n return (\n <>\n <div className=\"sectionTitle\">Details</div>\n <div className=\"detailsContainer\">\n <div className=\"col\">\n <div className=\"sectionTitle\">Transfer Date</div>\n <p>{moment().format('MM/DD/YYYY')}</p>\n </div>\n <div className=\"col\">\n <div className=\"sectionTitle\">Purpose</div>\n <p style={{ textTransform: 'capitalize' }}>\n {transformPurpose(transfer?.purpose)}\n </p>\n </div>\n <div className=\"col\">\n <div className=\"sectionTitle\">Subject Property</div>\n <FormatAddress\n streetNumberName={get(transfer, 'propertyAddress1')}\n apartmentSuiteNumber={get(transfer, 'propertyAddress2')}\n city={get(transfer, 'propertyCity')}\n state={get(transfer, 'propertyState')}\n zipcode={get(transfer, 'propertyZipcode')}\n />\n </div>\n {transfer.office !== null ? (\n <div className=\"col\">\n <div className=\"sectionTitle\">Office</div>\n <p>\n {transfer.office.title} - {transfer.office.city},{' '}\n {transfer.office.state}\n </p>\n </div>\n ) : null}\n {transfer.realtor !== null ? (\n <div className=\"col\">\n <div className=\"sectionTitle\">Realtor</div>\n <p>\n {transfer.realtor.firstName} {transfer.realtor.lastName},{' '}\n {transfer.realtor.email}\n </p>\n </div>\n ) : null}\n <div className=\"col\">\n <div className=\"sectionTitle\">Note</div>\n <p>{extractNotesFromJson(transfer?.notes || '')}</p>\n </div>\n </div>\n\n <DisplaySummationRows transfer={transfer} />\n </>\n );\n\n /*\n\n return (\n <div className=\"create-account__row create-account__box\">\n <div className=\"row\">\n <div className=\"col-xs-12 create-account__transfer-details-title\">\n Transfer Details\n </div>\n </div>\n <div className=\"create-account__transfer-details-row\">\n <div className=\"create-account__transfer-details-label\">\n Transfer Date\n </div>\n <div className=\"create-account__transfer-details-value\">\n {moment().format(\"MM/DD/YYYY\")}\n </div>\n </div>\n <div className=\"create-account__transfer-details-row\">\n <div className=\"create-account__transfer-details-label\">Property</div>\n <div className=\"create-account__transfer-details-value\">\n {formatAddressStreetApartment(\n get(transfer, \"propertyAddress1\"),\n get(transfer, \"propertyAddress2\")\n )}{\" \"}\n {formatAddressCityStateZipCode(\n get(transfer, \"propertyCity\"),\n get(transfer, \"propertyState\"),\n get(transfer, \"propertyZipcode\")\n )}\n </div>\n </div>\n <div className=\"create-account__transfer-details-row\">\n <div className=\"create-account__transfer-details-label\">Purpose</div>\n <div className=\"create-account__transfer-details-value\">\n <span style={{ textTransform: \"capitalize\" }}>\n {`${transfer?.purpose ?? \" \"}`}\n </span>\n </div>\n </div>\n <div className=\"create-account__transfer-details-row\">\n <div className=\"create-account__transfer-details-label\">Note</div>\n <div className=\"create-account__transfer-details-value\">\n <span style={{ textTransform: \"capitalize\" }}>\n {extractNotesFromJson(transfer?.notes || \"\")}\n </span>\n </div>\n </div>\n </div>\n );\n */\n};\n\nexport default SuccessLastRow;\n","/*\n * src/components/TransferSuccess/SuccessSecondRow.jsx\n * Description: second row for a transfer record\n * Copyright (c) 2021 PredictiveUX\n */\n\nimport React from 'react';\nimport get from 'lodash/get';\n\nimport arrow from '../../styles/assets/Arrow_right.svg';\n\nconst SuccessSecondRow = ({\n bankAccount,\n destAccount,\n bankAccountLogo,\n escrowAccountLogo,\n tenant,\n disbursement,\n transfer,\n}) => {\n const tenantName = get(tenant, 'name');\n const address1 = get(tenant, 'address1');\n const address2 = get(tenant, 'address2');\n const city = get(tenant, 'city');\n const state = get(tenant, 'state');\n const zipcode = get(tenant, 'zipcode');\n const office = get(transfer, 'office.title');\n return (\n <div className='create-account__row'>\n <div className='row create-account__item-title-container'>\n <div className='col-xs-6 create-account__item-title'>From</div>\n <div className='col-xs-6 create-account__item-title-receiver'>To</div>\n </div>\n <div\n className={!disbursement ? `row` : `row create-account__flex-revers`}\n >\n <div className={`col-xs-5 create-account__item-text`}>\n <div className='create-account__bank-information'>\n <div className='create-account__bank-information-logo'>\n <img\n className='create-account__bank-information-icon-logo'\n src={bankAccountLogo}\n alt=''\n />\n </div>\n <div className=\"create-account__bank-information-account\">\n {get(bankAccount, 'bankName')}\n <br />\n Account X\n {get(bankAccount, 'accountLastFourDigits')\n ? get(bankAccount, 'accountLastFourDigits')\n : ''}\n </div>\n </div>\n </div>\n <img\n className='create-account__destination-account-arrow-logo d-none d-lg-block'\n src={arrow}\n alt=''\n />\n <div className='col-xs-4 create-account__item-text'>\n <div className='create-account__bank-information'>\n <div className='create-account__bank-information-account'>\n {tenantName}\n <br />\n {address1}\n {address2 !== null ? (\n <>\n <br />\n {address2}\n </>\n ) : null}\n <br />\n {city}, {state} {zipcode}\n <br />\n {office}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SuccessSecondRow\n","/*\n * SummaryTransfer.jsx\n * Description:\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from 'react';\n\nimport MobileTransferSuccess from './MobileTransferSuccess/MobileTransferSuccess';\nimport SuccessLastRow from './SuccessLastRow';\nimport SuccessSecondRow from './SuccessSecondRow';\n\nconst SummaryTransfer = ({\n transfer,\n bankAccount,\n destAccount,\n bankAccountLogo,\n escrowAccountLogo,\n tenant,\n disbursement,\n}) => (\n <div className=\"create-account__container-info\">\n <>\n <MobileTransferSuccess\n transfer={transfer}\n bankAccount={bankAccount}\n destAccount={destAccount}\n bankAccountLogo={bankAccountLogo}\n escrowAccountLogo={escrowAccountLogo}\n disbursement={disbursement}\n tenant={tenant}\n />\n <div className=\"d-none d-lg-block\">\n <SuccessSecondRow\n transfer={transfer}\n tenant={tenant}\n bankAccount={bankAccount}\n destAccount={destAccount}\n bankAccountLogo={bankAccountLogo}\n escrowAccountLogo={escrowAccountLogo}\n disbursement={disbursement}\n />\n <SuccessLastRow transfer={transfer} hidden={!disbursement} />\n </div>\n </>\n </div>\n);\n\nexport default SummaryTransfer;\n","/*\n * src/components/TransferSuccess/TransferSuccess.jsx\n * Description: Transfer success page\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { connect } from 'react-redux';\nimport { useForm } from 'react-hook-form';\nimport { withRouter, Link } from 'react-router-dom';\nimport { useStateMachine } from 'little-state-machine';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport ContentModal from '../ContentModal/ContentModal';\nimport { useBankAccount } from '../../utils/service/service_bank_api';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { sendEmailReceipt } from '../../reducers/transfer/TransferActions';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport { getQueryVariable } from '../../utils/util';\n// import { InsuranceBannerAd } from \"../BannerAds/\";\n\n// local imports\nimport EmailAddresses from './EmailAddresses';\nimport InfoDisbursement from './InfoDisbursement';\nimport InfoEmail from './InfoEmail';\nimport InfoTransfer from './InfoTransfer';\nimport SuccessTitle from './SuccessTitle';\nimport SummaryTransfer from './SummaryTransfer';\n\nimport '../CreateAccountWizard/createAccount.css';\n\nconst buildReceiptModal = message => (\n <div className=\"create-account__modal\">\n <div className=\"create-account__modal-info my-4\">{message}</div>\n </div>\n);\n\n/**\n *\n * @param {*} props\n * @returns\n */\nconst TransferSuccess = props => {\n const { register, handleSubmit, errors } = useForm({\n defaultValues: props.transfer,\n });\n const { state, action } = useStateMachine(updateAction);\n const tenant = get(props, 'tenant');\n const { bankAccount } = useBankAccount(get(state, 'data.bankAccount.id', ''));\n const { destAccount } = useEscrowAccountFromTenant(\n get(props, 'tenant.id', '')\n );\n const { institutionLogo: bankAccountLogo } = useInstitutionLogo(\n get(bankAccount, 'institutionCode', '')\n );\n const { institutionLogo: escrowAccountLogo } = useInstitutionLogo(\n get(destAccount, 'institutionCode', '')\n );\n const [showModal, setShow] = useState({ active: false, message: '' });\n const pathUrl = get(split(props.location.search, '?'), 2);\n const disbursement = getQueryVariable(pathUrl, 'disbursement');\n const handleClose = () => setShow({ active: false, message: '' });\n const handleShow = ({ message }) =>\n setShow({ active: true, message: message });\n\n const onSubmit = emailAddresses => {\n // compile a UNIQUE list of email addresses supplied in the form\n /* eslint-disable array-callback-return */\n const uniqueEmailAddressList = [\n ...new Set(\n Object.keys(emailAddresses)\n .map(m => {\n if (emailAddresses[m]) return emailAddresses[m];\n })\n .filter(f => f)\n ),\n ];\n\n if (uniqueEmailAddressList.length === 0) {\n handleShow({ message: 'No emails provided.' });\n return;\n }\n\n const data = {\n transfer: get(props, 'transfer'),\n TRANSFER_GUID: get(props, 'transfer.id'),\n additionalEmailRecipient: uniqueEmailAddressList,\n };\n\n props.onSendEmailReceipt(data).then(response => {\n if (get(response, 'error')) {\n handleShow({\n message: 'Failed to send email. Please try again later.',\n });\n } else {\n action({ emailAddresses });\n handleShow({ message: 'Receipt successfully sent!' });\n }\n });\n };\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n <>\n <ContentModal\n isVisible={showModal.active}\n onClose={handleClose}\n content={buildReceiptModal(showModal.message)}\n small\n hide\n />\n <BoxContainer withDoubleBorder withLogButton>\n <SuccessTitle />\n\n {/* disbursement or non-disbursement */}\n {!disbursement ? <InfoTransfer /> : <InfoDisbursement />}\n\n {/* this is the from -> to arrow component */}\n <SummaryTransfer\n transfer={get(state, 'data.transfer')}\n tenant={tenant}\n bankAccount={bankAccount}\n destAccount={destAccount}\n bankAccountLogo={get(bankAccountLogo, 'logoURL')}\n escrowAccountLogo={get(escrowAccountLogo, 'logoURL')}\n disbursement={disbursement}\n />\n <InfoEmail />\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <EmailAddresses register={register} errors={errors} />\n <div className=\"create-account__send-account-button\">\n <PaymintsButton\n htmlType=\"submit\"\n className=\"create-account__button send\"\n noShadow\n disabled={\n get(\n props.transferService,\n 'sendEmailReceipt.isFetchingSendEmailReceipt'\n ) || errors.length > 0\n }\n loading={get(\n props.transferService,\n 'sendEmailReceipt.isFetchingSendEmailReceipt'\n )}\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n {'Send'}\n </PaymintsButton>\n </div>\n </form>\n <div className=\"create-account__footer-buttons\">\n <Link to=\"/transfer-history\">\n <PaymintsButton\n className=\"create-account__button\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n {'Transfer history'}\n </PaymintsButton>\n </Link>\n </div>\n </BoxContainer>\n </>\n );\n};\n\nexport default withRouter(\n connect(\n state => ({\n transferService: state.transfer,\n }),\n {\n onSendEmailReceipt: sendEmailReceipt,\n }\n )(TransferSuccess)\n);\n","import get from 'lodash/get';\nimport find from 'lodash/find';\n\nconst SelectedBankAccount = ({\n plaidResponse,\n history,\n client,\n tenant,\n action,\n setValue,\n onGetPlaidCreateClient,\n onGetPlaidStartMicrodepoits,\n onGetBankAccounts,\n nextStep,\n onSetError,\n onSetErrorClient,\n onSetLoadingService,\n handleClose,\n verified,\n manual,\n accountRequest,\n navigateAccounts,\n}) => {\n const bankAccounts = plaidResponse;\n const getAction = get(action);\n\n const clientID = get(client, 'id');\n const tenantID = get(tenant, 'id');\n let data = {};\n if (verified || manual) {\n data = {\n id: clientID,\n ...accountRequest,\n };\n } else {\n data = {\n id: clientID,\n plaidAccountId: get(bankAccounts, 'metadata.account.id'),\n publicToken: get(plaidResponse, 'token'),\n };\n }\n let status = bankAccounts.metadata?.account?.verification_status;\n let fetchServer = !status\n ? onGetPlaidCreateClient\n : onGetPlaidStartMicrodepoits;\n return fetchServer(data, tenantID).then(responsePlaid => {\n if (!get(responsePlaid, 'error')) {\n if (!manual) {\n onSetErrorClient({ active: false, messageError: '' });\n }\n setTimeout(() => {\n onGetBankAccounts(clientID)\n .then(response => {\n if (!get(response, 'error')) {\n const bankAccounts = get(response, 'accounts');\n const bankAccountSelectedID = get(responsePlaid, 'bankAccountId');\n const bankAccountSelected = find(bankAccounts, [\n 'id',\n bankAccountSelectedID,\n ]);\n if (bankAccountSelected && action) {\n action({\n bankAccount: {\n id: get(bankAccountSelected, 'id'),\n balance: get(bankAccountSelected, 'balance'),\n },\n });\n setValue('selection', get(bankAccountSelected, 'id'));\n }\n if (!manual) {\n onSetError({ active: false, messageError: '' });\n }\n } else {\n if (!manual) {\n onSetError({\n active: true,\n messageError: get(response, 'message'),\n });\n }\n }\n })\n .then(() => {\n onSetLoadingService(false);\n })\n .then(() => {\n const { status } = responsePlaid;\n if (!manual) {\n handleClose();\n }\n if (status === 'verify' && !manual) {\n history.push(`/create-account/error`, {\n ...responsePlaid,\n ...{ plaidResponse },\n });\n }\n if (navigateAccounts && manual) {\n history.push(`/bank-accounts`);\n }\n });\n }, 8000);\n } else {\n onSetLoadingService(false);\n if (!manual) {\n handleClose();\n onSetErrorClient({\n active: true,\n messageError: get(responsePlaid, 'message'),\n });\n }\n }\n });\n};\n\nexport default SelectedBankAccount;\n","import React, { useState } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport SelectedBankAccounts from '../PlaidButton/SelectedBankAccount';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport { getPlaidCreateClient } from '../../reducers/account/AccountActions';\nimport { getClientAccounts } from '../../reducers/account/AccountActions';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport { connect } from 'react-redux';\nimport { validateAccountinfo } from '../../utils/validations';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore } from '../../utils/util';\nimport ContentModal from '../ContentModal/ContentModal';\n\nconst buildLoaderModal = () => (\n <div className=\"create-account__modal\">\n <div className=\"create-account__modal-loading\">\n <SpinnerLoader withoutMargin />\n </div>\n <div className=\"create-account__modal-info\">Loading please wait...</div>\n </div>\n);\n\nconst AccountError = props => {\n const { action } = useStateMachine(updateAction);\n const [isLoading, onSetLoadingService] = useState(false);\n const initialSate = {\n plaidInfoToVerify: {\n address1: '',\n city: '',\n firstName: '',\n lastName: '',\n zipcode: '',\n state: '',\n },\n accessToken: '',\n };\n const { state } = props.history.location;\n let { plaidInfoToVerify } = state || initialSate;\n const { plaidResponse, accessToken } = state || initialSate;\n const accountRequest = {\n accessToken,\n plaidAccountId: plaidResponse.metadata.account.id,\n verified: 'true',\n manual: 'true',\n };\n //plaidResponse.metadata.account.id\n const { updateClient } = useUpdateClient();\n const { user } = getClientStore();\n const { client } = useClientByPhone(user.mobilePhone);\n const { register, handleSubmit, errors, control, setValue } = useForm({\n defaultValues: client,\n });\n const onSubmit = newUser => {\n updateClient({\n variables: {\n id: client.id,\n client: newUser,\n },\n }).then(() => {\n delete accountRequest.manual;\n onSetLoadingService(true);\n SelectedBankAccounts({\n plaidResponse,\n history: props.history,\n client,\n action,\n setValue,\n onGetPlaidCreateClient: props.onGetPlaidCreateClient,\n onGetBankAccounts: props.onGetBankAccounts,\n verified: 'true',\n manual: 'true',\n onSetLoadingService,\n accountRequest,\n navigateAccounts: true,\n });\n });\n };\n return (\n <>\n <ContentModal\n isVisible={isLoading}\n content={buildLoaderModal()}\n small\n withoutButtons\n hideCloseButton\n />\n <BoxContainer widest withLogButton withDoubleBorder>\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">Error</div>\n </div>\n <div className=\"create-account__line-container\">\n <div className=\"create-account__subtitle with-margin\">\n Your transfer is not complete.\n </div>\n </div>\n <div className=\"create-account__information-container create-account__no-margine\">\n <div className=\"create-account__subtitle-information\">\n The information you entered{' '}\n <span className=\"text text-danger\"></span> does not match your bank\n account records. Please choose how you would like to proceed:\n </div>\n </div>\n <form onSubmit={handleSubmit(onSubmit)}>\n <div className=\"create-account__information-container\">\n <BoxContainer internalBox withBorder>\n <div\n className=\"form-group\"\n hidden={plaidInfoToVerify.firstName === client.firstName}\n >\n <label>You Entered First Name</label>\n <input\n type=\"text\"\n placeholder=\" \"\n id=\"firstName\"\n name=\"firstName\"\n className=\"create-account__input form-control account__control_width\"\n ref={register({\n required: true,\n maxLength: 30,\n validate: value =>\n validateAccountinfo(value, plaidInfoToVerify.firstName),\n })}\n />\n {errors.firstName && errors.firstName.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.firstName && errors.firstName.type === 'validate' && (\n <ErrorMessageInput>\n Your Account details are not matching with bank details\n </ErrorMessageInput>\n )}\n <div className=\"create-account__message-container\">\n <div className=\"create-account__bank-label\">\n Your bank account shows\n </div>\n <div className=\"create-account__user-label\">\n {plaidInfoToVerify ? plaidInfoToVerify.firstName : ''}\n </div>\n </div>\n </div>\n <div\n className=\"form-group\"\n hidden={plaidInfoToVerify.lastName === client.lastName}\n >\n <label>You Entered Last Name</label>\n <input\n type=\"text\"\n id=\"lastName\"\n placeholder=\" \"\n name=\"lastName\"\n className=\"create-account__input form-control account__control_width\"\n ref={register({\n required: true,\n maxLength: 30,\n validate: value =>\n validateAccountinfo(value, plaidInfoToVerify.lastName),\n })}\n />\n {errors.lastName && errors.lastName.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.lastName && errors.lastName.type === 'validate' && (\n <ErrorMessageInput>\n Your Account details are not matching with bank details\n </ErrorMessageInput>\n )}\n <div className=\"create-account__message-container\">\n <div className=\"create-account__bank-label\">\n Your bank account shows:\n </div>\n <div className=\"create-account__user-label\">\n {plaidInfoToVerify ? plaidInfoToVerify.lastName : ''}\n </div>\n </div>\n </div>\n <div\n className=\"form-group\"\n hidden={plaidInfoToVerify.address1 === client.address1}\n >\n <label>You Entered Address1</label>\n <input\n type=\"text\"\n name=\"address1\"\n placeholder=\" \"\n className=\"create-account__input form-control account__control_width\"\n autoComplete=\"no\"\n ref={register({\n required: true,\n validate: value =>\n validateAccountinfo(value, plaidInfoToVerify.address1),\n })}\n />\n {errors.address1 && errors.address1.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.address1 && errors.address1.type === 'validate' && (\n <ErrorMessageInput>\n Your Account details are not matching with bank details\n </ErrorMessageInput>\n )}\n <div className=\"create-account__message-container\">\n <div className=\"create-account__bank-label\">\n Your bank account shows:\n </div>\n <div className=\"create-account__user-label\">\n {plaidInfoToVerify ? plaidInfoToVerify.address1 : ''}\n </div>\n </div>\n </div>\n <div\n className=\"form-group\"\n hidden={plaidInfoToVerify.city === client.city}\n >\n <label>You Entered city</label>\n <input\n type=\"text\"\n name=\"city\"\n placeholder=\" \"\n className=\"create-account__input form-control account__control_width\"\n autoComplete=\"no\"\n ref={register({\n required: true,\n validate: value =>\n validateAccountinfo(value, plaidInfoToVerify.city),\n })}\n />\n {errors.city && errors.city.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.city && errors.city.type === 'validate' && (\n <ErrorMessageInput>\n Your Account details are not matching with bank details\n </ErrorMessageInput>\n )}\n <div className=\"create-account__message-container\">\n <div className=\"create-account__bank-label\">\n Your bank account shows:\n </div>\n <div className=\"create-account__user-label\">\n {plaidInfoToVerify ? plaidInfoToVerify.city : ''}\n </div>\n </div>\n </div>\n <div\n className=\"form-group\"\n hidden={plaidInfoToVerify.state === client.state}\n >\n <label>You Entered state</label>\n <Controller\n as={Select}\n control={control}\n name=\"state\"\n rules={{ required: true }}\n options={states}\n className=\"create-account__input form-control account__control_width\"\n />\n <div className=\"create-account__message-container\">\n <div className=\"create-account__bank-label\">\n Your bank account shows:\n </div>\n <div className=\"create-account__user-label\">\n {plaidInfoToVerify ? plaidInfoToVerify.state : ''}\n </div>\n </div>\n {errors.state && errors.state.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </div>\n <div\n className=\"form-group\"\n hidden={plaidInfoToVerify.zipcode === client.zipcode}\n >\n <label>You Entered zipcode</label>\n <input\n type=\"text\"\n name=\"zipcode\"\n placeholder=\" \"\n className=\"create-account__input form-control account__control_width\"\n autoComplete=\"no\"\n ref={register({\n required: true,\n validate: value =>\n validateAccountinfo(value, plaidInfoToVerify.zipcode),\n })}\n />\n <div className=\"create-account__message-container\">\n <div className=\"create-account__bank-label\">\n Your bank account shows:\n </div>\n <div className=\"create-account__user-label\">\n {plaidInfoToVerify ? plaidInfoToVerify.zipcode : ''}\n </div>\n </div>\n {errors.zipcode && errors.zipcode.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.zipcode && errors.zipcode.type === 'validate' && (\n <ErrorMessageInput>\n Your Account details are not matching with bank details\n </ErrorMessageInput>\n )}\n </div>\n <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n htmlType=\"submit\"\n >\n Save and Continue\n </PaymintsButton>\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n noShadow\n type={BUTTON_TYPE.LIGHT_BLUE}\n onClick={() => {\n onSetLoadingService(true);\n SelectedBankAccounts({\n plaidResponse,\n history: props.history,\n client,\n action,\n setValue,\n onGetPlaidCreateClient: props.onGetPlaidCreateClient,\n onGetBankAccounts: props.onGetBankAccounts,\n verified: 'true',\n manual: 'true',\n onSetLoadingService,\n accountRequest,\n navigateAccounts: true,\n });\n }}\n >\n Override\n </PaymintsButton>\n </div>\n </BoxContainer>\n </div>\n </form>\n </BoxContainer>\n </>\n );\n};\n\nexport default withRouter(\n connect(\n state => ({\n account: state.account,\n }),\n {\n onGetBankAccounts: getClientAccounts,\n onGetPlaidCreateClient: getPlaidCreateClient,\n }\n )(AccountError)\n);\n","import React, { useCallback, useEffect } from 'react';\nimport { usePlaidLink } from 'react-plaid-link';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport './plaid-button.css';\n\nexport default function PlaidAddBankAccountButton({\n product,\n onSuccess,\n onExit,\n disabled,\n isOpen,\n isAddBank,\n token,\n config,\n ...props\n}) {\n const onPlaidSuccess = useCallback(\n (token, metadata) => {\n if (typeof onSuccess !== 'function') return;\n onSuccess({ token, metadata });\n },\n [onSuccess]\n );\n\n config = config\n ? config\n : {\n clientName: 'Paymints.io',\n client_id: process.env.REACT_APP_PLAID_CLIENT_ID,\n env: process.env.REACT_APP_PLAID_ENVIRONMENT || 'sandbox',\n product: product || ['auth'],\n auth: {\n flow_type: 'FLEXIBLE_AUTH',\n },\n selectAccount: true,\n onSuccess: onPlaidSuccess,\n onExit,\n token: token,\n };\n\n const { error, open, ready } = usePlaidLink({ ...config });\n useEffect(() => {\n if (isOpen) {\n open();\n }\n }, [isOpen, open]);\n\n return (\n <>\n <PaymintsButton\n disabled={disabled || error || !ready}\n onClick={open}\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n {...props}\n >\n {props.children}\n </PaymintsButton>\n </>\n );\n}\n","import React, { useCallback, useEffect } from 'react';\nimport { usePlaidLink } from 'react-plaid-link';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport './plaid-button.css';\n\nexport default function PlaidVerifyButton({\n product,\n onSuccess,\n onExit,\n disabled,\n isOpen,\n isAddBank,\n config,\n ...props\n}) {\n const onPlaidSuccess = useCallback(\n (token, metadata) => {\n if (typeof onSuccess !== 'function') return;\n onSuccess({ token, metadata });\n },\n [onSuccess]\n );\n\n config = { ...config, onSuccess: onPlaidSuccess };\n\n const { error, open, ready } = usePlaidLink({ ...config });\n useEffect(() => {\n if (isOpen) {\n open();\n }\n }, [isOpen, open]);\n\n return (\n <>\n <PaymintsButton\n disabled={disabled || error || !ready}\n onClick={open}\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n {...props}\n >\n {props.children}\n </PaymintsButton>\n </>\n );\n}\n","import axios from 'axios';\nimport storeService from '../hooks/useStore';\n\nconst { getAuthToken } = storeService();\nconst authToken = getAuthToken('authToken') || process.env.REACT_APP_AUTH_TOKEN;\n\nconst request = axios.create({\n baseURL: process.env.REACT_APP_BACKEND_URL, // https://api.paymints.dev\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-Token',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${authToken}`,\n },\n});\n\nconst domainRequest = axios.create({\n baseURL: process.env.REACT_APP_DOMAIN_URL,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-Token',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${authToken}`,\n },\n});\n\nconst graphqlAsyncRequest = query => {\n return axios({\n url: process.env.REACT_APP_GRAPH_QL_URL,\n method: 'POST',\n data: {\n query,\n },\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-Token',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${authToken}`,\n },\n });\n};\n\nexport default request;\nexport { domainRequest, graphqlAsyncRequest };\n","export default function storeService() {\n const setData = (key, user) => {\n return sessionStorage.setItem(key, JSON.stringify(user))\n }\n const getUser = () => {\n const user = sessionStorage.getItem('user')\n return user ? { user: JSON.parse(user) } : { user: undefined }\n }\n const getAuthToken = () => {\n const authToken = sessionStorage.getItem('authToken')\n return authToken\n }\n const getbykey = key => {\n const data = sessionStorage.getItem(key)\n return data ? JSON.parse(data) : undefined\n }\n const clearStore = () => {\n return sessionStorage.clear()\n }\n const removeStoreByKey = key => {\n return sessionStorage.removeItem(key)\n }\n return {\n setData,\n getUser,\n getAuthToken,\n getbykey,\n clearStore,\n removeStoreByKey,\n }\n}\n","import React from 'react';\n\nexport default function FieldRadioButton({\n name,\n action,\n handleChange,\n checked,\n ...props\n}) {\n return (\n <input\n className=\"bank-accounts__checkbox\"\n type=\"radio\"\n name=\"selection\"\n {...props}\n onChange={e => handleChange(e)}\n checked={checked ? 'checked' : null}\n />\n );\n}\n","import React from \"react\";\nimport { Modal, Button } from \"react-bootstrap\";\nimport get from \"lodash/get\";\nimport \"./disconnectModal.scss\";\n\nconst DisconnectModal = ({\n showDisconnectModal,\n setShowDisconnectModal,\n onReloadBankAccounts,\n id,\n onDisconnectBankAccount,\n onSetError,\n}) => {\n return (\n <>\n <Modal\n show={showDisconnectModal}\n backdrop=\"static\"\n centered={true}\n keyboard={false}\n style={{ opacity: 1 }}\n onHide={() => setShowDisconnectModal(false)}\n >\n <Modal.Header closeButton>\n <Modal.Title>Disconnect Bank Account</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n Are you sure you want to disconnect this bank account?\n </Modal.Body>\n <Modal.Footer>\n <Button\n variant=\"secondary\"\n onClick={() => {\n setShowDisconnectModal(false);\n }}\n >\n No\n </Button>\n <Button\n variant=\"danger\"\n onClick={() => {\n onDisconnectBankAccount({ bankAccountId: id }).then(\n (response) => {\n if (!get(response, \"error\")) {\n onReloadBankAccounts(true);\n onSetError({ active: false, messageError: \"\" });\n } else {\n onSetError({\n active: true,\n messageError: get(response, \"message\"),\n });\n }\n }\n );\n }}\n >\n Yes\n </Button>\n </Modal.Footer>\n </Modal>\n </>\n );\n};\nexport default DisconnectModal;\n","/*\n * src/components/BankAccounts/AddAccountTooltip.jsx\n * Description: PAYAPP-1085\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\n\nimport questionIcon from \"../../styles/assets/icon_question.svg\";\nimport pncLogo from \"../../styles/assets/icon_pnc.png\";\nimport \"./addAccountTooltip.css\";\n\nconst AddAccountTooltip = ({ dismissHandler, isVisible, plaidButton }) => {\n const closePNCNotification = () => {\n const el = document.getElementById(\"pncFlyover\");\n if (el) {\n el.style.left = \"245px\";\n el.style.opacity = \"0\";\n el.style.pointerEvents = \"none\";\n }\n };\n\n const openPNCNotification = () => {\n const el = document.getElementById(\"pncFlyover\");\n if (el) {\n el.style.left = \"0px\";\n el.style.opacity = \"1\";\n el.style.pointerEvents = \"all\";\n }\n };\n return (\n <div\n id=\"add-account-container\"\n className=\"add-account-container\"\n hidden={!isVisible}\n >\n <div id=\"pncFlyover\">\n <div className=\"notification\">\n <div className=\"content\">\n <div className=\"closeIcon\" role=\"button\" tabIndex=\"0\">\n <i className=\"fa fa-times\" onClick={closePNCNotification} />\n </div>\n <div className=\"notice\">Bank Notice</div>\n <div className=\"disclaimer\">\n The bank you selected is not supported by our 3rd party \n service provider used to connect to your bank.<br/>\n Please try another bank that is supported on the platform \n or contact your title agency or real estate brokerage \n for alternative methods of payment.\n </div>\n </div>\n </div>\n </div>\n <div id=\"add-account-arrow\"></div>\n <div id=\"add-account-tooltip\">\n <div\n id=\"add-account-close-icon\"\n role=\"button\"\n tabIndex=\"0\"\n onClick={() => dismissHandler(false)}\n onKeyUp={() => dismissHandler(false)}\n >\n <i className=\"fa fa-times\" />\n </div>\n <div id=\"add-account-content\">\n <div className=\"title\">\n Connect to over 16,000 banks\n </div>\n <div className=\"findMyBank\" onClick={() => dismissHandler(false)}>\n {plaidButton}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default AddAccountTooltip;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport get from 'lodash/get';\nimport map from 'lodash/map';\nimport size from 'lodash/size';\nimport find from 'lodash/find';\nimport format from 'dateformat';\nimport Table from 'react-bootstrap/Table';\nimport { Controller } from 'react-hook-form';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport {\n getClientAccounts,\n disconnectBankAccount,\n} from '../../reducers/account/AccountActions';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { useInstitutionLogoOR } from '../../utils/service/service_institution_logo';\nimport PlaidButton from '../PlaidButton/PlaidButton';\nimport PlaidAddBankAccountButton from '../PlaidButton/PlaidAddBankAccountButton';\nimport PlaidVerifyButton from '../PlaidButton/PlaidVerifyButton';\nimport usePlaidTokenForMicroDepositsStart from '../../hooks/plaid/usePlaidTokenForMicrodepositStart';\nimport SelectedBankAccounts from '../PlaidButton/SelectedBankAccount';\nimport {\n getPlaidCreateClient,\n getPlaidStartMicrodepoits,\n getPlaidVerifyMicrodepoits,\n} from '../../reducers/account/AccountActions';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport FieldRadioButton from '../FieldRadioButton/FieldRadioButton';\nimport DisconnectModal from '../DisconnectModal/disconnectModal';\nimport { getClientStore } from '../../utils/util';\nimport { getQueryVariable } from '../../utils/util';\nimport AddAccountTooltip from './AddAccountTooltip';\nimport './bankAccounts.css';\n\n///move after testing\n\n// axios.defaults.headers.common = {\n// Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n// };\nconst Title = ({ isSelectAccount }) => (\n <div className=\"bank-accounts__line-container\">\n <div className=\"bank-accounts__title\">\n {isSelectAccount ? 'Select an Account' : 'Linked Bank Accounts'}\n </div>\n </div>\n);\n\nconst Subtitle = ({ disbursement }) => (\n <div className=\"create-account__line-container\">\n {disbursement ? (\n <div className=\"create-account__info-account\">\n Please select the account for depositing your funds:\n </div>\n ) : (\n <div className=\"create-account__info-account\">\n Please select the account you want to transfer money from:\n </div>\n )}\n </div>\n);\n\nconst mobile = window.screen.width < 450;\n\n/**\n * @function\n * Handle potential null balance for account\n */\nconst nullBalanceHandler = balance => {\n if (balance) {\n return '$' + balance.toFixed(2);\n }\n return '$__.__';\n};\n\nconst BuildRow = ({\n Controller,\n bankAccount,\n control,\n setValue,\n isSelectAccount,\n onDisconnectBankAccount,\n onGetPlaidVerifyMicrodepoits,\n onSetError,\n action,\n register,\n onReloadBankAccounts,\n institutionsLogo,\n state,\n bankAccounts,\n client,\n tenant,\n reloadingBankAccounts\n}) => {\n const clientId = get(client, 'id');\n const tenantId = get(tenant, 'id');\n const id = get(bankAccount, 'id');\n let balanceDateTime = get(bankAccount, 'balanceDateTime');\n const timeFormat = 'h:MM TT Z';\n const dateFormat = 'mm/dd/yyyy';\n const date = format(balanceDateTime, dateFormat);\n const time = format(balanceDateTime, timeFormat);\n const institution = get(bankAccount, 'bankName');\n const balance = get(bankAccount, 'balance');\n const accountLastFourDigits = get(bankAccount, 'accountNumber')\n ? get(bankAccount, 'accountNumber')\n : '';\n const institutionCode = get(bankAccount, 'institutionCode');\n const institutionLogo = get(\n find(institutionsLogo, ['institutionCode', institutionCode]),\n 'logoURL'\n );\n const [showDisconnectModal, setShowDisconnectModal] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n let [linkToken, setlinkToken] = useState(false);\n let [bankAccountId, setBankAccountId] = useState(false);\n\n const NavyFederalCreditUnionSavingsAccount =\n bankAccount.bankName === 'Navy Federal Credit Union' &&\n bankAccount.name.includes('Saving');\n\n \n\n const onSuccess1 = data => {\n let body = {\n id: clientId,\n tenantId: tenantId,\n bankAccountId: bankAccountId,\n };\n\n axios\n .post(\n `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/verify`,\n body,\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n }\n )\n .then(() => {\n onReloadBankAccounts(true);\n });\n };\n\n const getTokenResponse = async () => {\n let tokenResponse = await axios({\n url: `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/link-token`,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n data: {\n bankAccountId: bankAccountId,\n id: clientId,\n tenantId: tenantId,\n },\n });\n return tokenResponse.data.linkToken;\n };\n\n const verificationStart = bankID => {\n setBankAccountId(bankID);\n setIsOpen(true);\n };\n\n useEffect(() => {\n if (bankAccountId) {\n getTokenResponse().then(token => {\n setlinkToken(token);\n });\n }\n }, [bankAccountId]);\n\n return (\n <React.Fragment key={id}>\n <DisconnectModal\n showDisconnectModal={showDisconnectModal}\n setShowDisconnectModal={setShowDisconnectModal}\n onReloadBankAccounts={onReloadBankAccounts}\n id={id}\n onDisconnectBankAccount={onDisconnectBankAccount}\n onSetError={onSetError}\n />\n <tr\n style={{\n backgroundColor: NavyFederalCreditUnionSavingsAccount\n ? '#C0C0C0'\n : null,\n }}\n >\n <td className=\"bank-accounts__item-text\">\n <div className=\"bank-accounts__item-bank\">\n {isSelectAccount && !NavyFederalCreditUnionSavingsAccount ? (\n <Controller\n as={FieldRadioButton}\n control={control}\n name=\"selection\"\n disabled={bankAccount.pendingVerification}\n className=\"bank-accounts__checkbox\"\n value={id}\n handleChange={() => {\n setValue([{ selection: id }]);\n action({ bankAccount: { id: id, balance: balance } });\n }}\n checked={get(state, 'data.bankAccount.id') === id}\n />\n ) : null}\n <img\n className=\"bank-accounts__bank-icon\"\n src={institutionLogo}\n alt=\"\"\n />\n <div className=\"bank-accounts__bank-institution\" alt=\"\">\n {institution}\n </div>\n </div>\n </td>\n <td className=\"bank-accounts__item-text\">X{accountLastFourDigits}</td>\n <td className=\"bank-accounts__item-balance\">\n {!balance ? (\n <div className=\"bank-accounts__item-text amountRow\">--</div>\n ) : (\n <span>\n <div className=\"bank-accounts__item-text\">\n {nullBalanceHandler(balance)}\n </div>\n <div className=\"bank-accounts__item-date\">{`as of ${date}`}</div>\n <div className=\"bank-accounts__item-time\">{`${time}`}</div>\n {!balance && (\n <p className=\"bank-accounts__null-balance-error\">\n We're having trouble retrieving your current balance.\n </p>\n )}\n </span>\n )}\n </td>\n {!isSelectAccount ? (\n !balance ? (\n <td className=\"bank-accounts__item-text center\">--</td>\n ) : (\n <td className=\"bank-accounts__item-text center\">\n <i\n className=\"fas fa-sync-alt bank-accounts__update-icon\"\n onClick={() => reloadingBankAccounts()}\n />\n </td>\n )\n ) : null}\n {!isSelectAccount ? (\n <td className=\"bank-accounts__item-text center\">\n <i\n className=\"fas fa-minus-circle bank-accounts__disconnect-icon\"\n onClick={() => {\n setShowDisconnectModal(true);\n }}\n />\n </td>\n ) : null}\n {\n <td className=\"bank-accounts__item-text center\">\n {bankAccount.pendingVerification ? (\n <div>\n <PlaidVerifyButton\n config={{ token: linkToken }}\n onClick={() => verificationStart(bankAccount.id)}\n isOpen={isOpen}\n onSuccess={onSuccess1}\n >\n VERIFY\n </PlaidVerifyButton>\n </div>\n ) : !NavyFederalCreditUnionSavingsAccount ? (\n 'Verified'\n ) : (\n 'Unsupported'\n )}\n </td>\n }\n </tr>\n {/* Navy Federal Credit Union saving account error message */}\n {NavyFederalCreditUnionSavingsAccount && (\n <td colspan=\"6\" style={{ color: 'red' }}>\n Navy Federal Credit Union savings accounts are non-transactional.\n Please move funds to Navy Federal checking account and link the\n checking account. Alternatively, please link another bank account.\n Thank you.\n </td>\n )}\n </React.Fragment>\n );\n};\nconst SmallTable = ({\n key,\n bankAccount,\n onDisconnectBankAccount,\n isSelectAccount,\n action,\n register,\n onReloadBankAccounts,\n institutionsLogo,\n state,\n onSetError,\n setValue,\n control,\n client,\n tenant,\n}) => {\n const clientId = get(client, 'id');\n const tenantId = get(tenant, 'id');\n const id = get(bankAccount, 'id');\n\n let balanceDateTime = get(bankAccount, 'balanceDateTime');\n const timeFormat = 'h:MM TT Z';\n const dateFormat = 'mm/dd/yyyy';\n const date = format(balanceDateTime, dateFormat);\n const time = format(balanceDateTime, timeFormat);\n const institution = get(bankAccount, 'bankName');\n const balance = get(bankAccount, 'balance');\n const accountLastFourDigits = get(bankAccount, 'accountNumber')\n ? get(bankAccount, 'accountNumber')\n : '';\n const institutionCode = get(bankAccount, 'institutionCode');\n const institutionLogo = get(\n find(institutionsLogo, ['institutionCode', institutionCode]),\n 'logoURL'\n );\n const [showDisconnectModal, setShowDisconnectModal] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n let [linkToken, setlinkToken] = useState(false);\n let [bankAccountId, setBankAccountId] = useState(false);\n\n const NavyFederalCreditUnionSavingsAccount =\n bankAccount.bankName === 'Navy Federal Credit Union' &&\n bankAccount.name.includes('Saving');\n\n const onSuccess1 = data => {\n let body = {\n id: clientId,\n tenantId: tenantId,\n bankAccountId: bankAccountId,\n };\n\n axios\n .post(\n `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/verify`,\n body,\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n }\n )\n .then(res => {\n window.location.reload();\n });\n // setTimeout(() => window.location.reload(), 3000);\n };\n\n const getTokenResponse = async () => {\n let tokenResponse = await axios({\n url: `${process.env.REACT_APP_BASE_SERVICE_URL}/account/microdeposit/link-token`,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n data: {\n bankAccountId: bankAccountId,\n id: clientId,\n tenantId: tenantId,\n },\n });\n return tokenResponse.data.linkToken;\n };\n\n const verificationStart = bankID => {\n setBankAccountId(bankID);\n setIsOpen(true);\n };\n\n useEffect(() => {\n if (bankAccountId) {\n getTokenResponse().then(token => {\n setlinkToken(token);\n });\n }\n }, [bankAccountId]);\n return (\n <div\n className={\n isSelectAccount && NavyFederalCreditUnionSavingsAccount\n ? 'bank-accounts__mobile-border-navy-federal-credit-union-unsupported-account-warning'\n : isSelectAccount && !NavyFederalCreditUnionSavingsAccount\n ? `bank-accounts__mobile-border`\n : !isSelectAccount && NavyFederalCreditUnionSavingsAccount\n ? 'bank-accounts__mobile-navy-federal-credit-union-unsupported-account-warning'\n : `bank-accounts__mobile`\n }\n key={key}\n >\n {isSelectAccount && !NavyFederalCreditUnionSavingsAccount ? (\n <div className=\"f-left\">\n <Controller\n as={FieldRadioButton}\n control={control}\n name=\"selection\"\n disabled={bankAccount.pendingVerification}\n className=\"bank-accounts__checkbox\"\n value={id}\n handleChange={() => {\n setValue([{ selection: id }]);\n action({ bankAccount: { id: id, balance: balance } });\n }}\n checked={get(state, 'data.bankAccount.id') === id}\n />\n <img\n className=\"bank-accounts__bank-icon\"\n src={institutionLogo}\n alt=\"\"\n />\n </div>\n ) : (\n <div className=\"f-left\">\n <img\n className=\"bank-accounts__bank-icon\"\n src={institutionLogo}\n alt=\"\"\n />\n </div>\n )}\n <div\n className={\n isSelectAccount\n ? `contentSec f-left`\n : `contentSec f-left contentSec_width`\n }\n >\n <p>\n {institution} X{accountLastFourDigits}\n </p>\n {!balance ? (\n <div className=\"bank-accounts__item-text amountRow\">--</div>\n ) : (\n <span>\n <div className=\"bank-accounts__item-text\">\n {nullBalanceHandler(balance)}\n </div>\n <div className=\"bank-accounts__item-date\">{`as of ${date}`}</div>\n <div className=\"bank-accounts__item-time\">{`${time}`}</div>\n {!balance && (\n <p className=\"bank-accounts__null-balance-error\">\n We're having trouble retrieving your current balance.\n </p>\n )}\n </span>\n )}\n\n {!isSelectAccount ? (\n <div className=\"iconSec\">\n <p className=\"f-left\">\n <i\n className=\"fas fa-minus-circle bank-accounts__disconnect-icon\"\n onClick={() => {\n onDisconnectBankAccount({ bankAccountId: id }).then(\n response => {\n if (!get(response, 'error')) {\n onReloadBankAccounts(true);\n onSetError({ active: false, messageError: '' });\n } else {\n onSetError({\n active: true,\n messageError: get(response, 'message'),\n });\n }\n }\n );\n }}\n />\n Disconnect\n </p>\n {!balance ? null : (\n <p className=\"f-left\">\n <i\n className=\"fas fa-sync-alt bank-accounts__update-icon\"\n onClick={() => onReloadBankAccounts(true)}\n />\n Refresh\n </p>\n )}\n </div>\n ) : null}\n\n <p className=\"f-left\">\n <div className=\"bank-accounts__item-text\">\n {/* DK I will need to make it prettier but in the meantime it works */}\n {bankAccount.pendingVerification ? (\n <div style={!isSelectAccount ? { marginTop: '-15px' } : null}>\n <PlaidVerifyButton\n config={{ token: linkToken }}\n onClick={() => verificationStart(bankAccount.id)}\n isOpen={isOpen}\n onSuccess={onSuccess1}\n >\n VMOBILE\n </PlaidVerifyButton>\n </div>\n ) : !NavyFederalCreditUnionSavingsAccount ? (\n <div className=\"iconSec\">\n <p className=\"f-left\" style={{ marginTop: '-10px' }}>\n <i className=\"fas fa-check bank-accounts__update-icon\" />\n Verified\n </p>\n </div>\n ) : (\n <div className=\"iconSec\">\n <p className=\"f-left\" style={{ marginTop: '-10px' }}>\n <i className=\"fas fa-minus-circle bank-accounts__bank-unsupported-red-icon\" />\n Unsupported\n </p>\n <p className=\"f-left\" style={{ marginTop: '-10px' }}>\n <div colspan=\"6\" style={{ color: 'red', marginTop: '8px' }}>\n Navy Federal Credit Union savings accounts are\n non-transactional. Please move funds to Navy Federal\n checking account and link the checking account.\n Alternatively, please link another bank account. Thank you.\n </div>\n </p>\n </div>\n )}\n </div>\n </p>\n </div>\n </div>\n );\n};\n\nconst BankAccountsList = ({\n isEmptyBankAccounts,\n watch,\n control,\n setValue,\n bankAccounts,\n onDisconnectBankAccount,\n isSelectAccount,\n action,\n register,\n onReloadBankAccounts,\n institutionsLogo,\n state,\n onSetError,\n tenant,\n client,\n reloadingBankAccounts\n}) => {\n if (isEmptyBankAccounts && !isSelectAccount)\n return (\n <p className=\"text text-danger transfer-history__no-data\">\n You have no linked bank accounts\n </p>\n );\n if (isEmptyBankAccounts) return null;\n\n return (\n <>\n {mobile ? (\n <>\n {bankAccounts.map((item, index) => (\n <SmallTable\n bankAccount={item}\n onDisconnectBankAccount={onDisconnectBankAccount}\n isSelectAccount={isSelectAccount}\n action={action}\n state={state}\n register={register}\n onReloadBankAccounts={onReloadBankAccounts}\n institutionsLogo={institutionsLogo}\n onSetError={onSetError}\n control={control}\n setValue={setValue}\n client={client}\n tenant={tenant}\n />\n ))}\n </>\n ) : (\n <TableData\n bankAccounts={bankAccounts}\n onDisconnectBankAccount={onDisconnectBankAccount}\n isSelectAccount={isSelectAccount}\n action={action}\n state={state}\n register={register}\n onReloadBankAccounts={onReloadBankAccounts}\n institutionsLogo={institutionsLogo}\n onSetError={onSetError}\n control={control}\n setValue={setValue}\n client={client}\n tenant={tenant}\n reloadingBankAccounts={reloadingBankAccounts}\n />\n )}\n </>\n );\n};\nconst TableData = ({\n control,\n setValue,\n bankAccounts,\n onDisconnectBankAccount,\n isSelectAccount,\n action,\n register,\n onReloadBankAccounts,\n institutionsLogo,\n state,\n onSetError,\n client,\n tenant,\n reloadingBankAccounts\n}) => {\n return (\n <Table responsive className=\"bank-accounts__table\">\n <thead>\n <tr>\n <th className=\"bank-accounts__item-title\">Financial Institution</th>\n <th className=\"bank-accounts__item-title\">Account</th>\n <th className=\"bank-accounts__item-title\">Balance</th>\n {!isSelectAccount ? (\n <th className=\"bank-accounts__item-title center\">Update</th>\n ) : null}\n {!isSelectAccount ? (\n <th className=\"bank-accounts__item-title center\">Disconnect</th>\n ) : null}\n {!isSelectAccount ? (\n <th className=\"bank-accounts__item-title center\">Status</th>\n ) : (\n <th className=\"bank-accounts__item-title\">Status</th>\n )}\n </tr>\n </thead>\n <tbody>\n {map(bankAccounts, (item, key) => (\n <BuildRow\n Controller={Controller}\n bankAccount={item}\n key={key}\n onDisconnectBankAccount={onDisconnectBankAccount}\n isSelectAccount={isSelectAccount}\n action={action}\n state={state}\n register={register}\n onReloadBankAccounts={onReloadBankAccounts}\n institutionsLogo={institutionsLogo}\n onSetError={onSetError}\n control={control}\n setValue={setValue}\n bankAccounts={bankAccounts}\n client={client}\n tenant={tenant}\n reloadingBankAccounts={reloadingBankAccounts}\n />\n ))}\n </tbody>\n </Table>\n );\n};\nconst nextStep = history =>\n history.push(`/create-account/step-3${get(history, 'location.search')}`);\n\nconst nextStepFromSummary = history =>\n history.push(`/create-account/step-4${get(history, 'location.search')}`);\n\nconst BankAccounts = props => {\n const {\n account,\n onGetBankAccounts,\n onDisconnectBankAccount,\n action,\n state,\n register,\n children,\n isSelectAccount,\n withDoubleBorder,\n withLogButton,\n widest,\n history,\n onGetPlaidCreateClient,\n onGetPlaidVerifyMicrodepoits,\n onGetPlaidStartMicrodepoits,\n location,\n // showPlaidButton,\n loadingService,\n onSetLoadingService,\n watch,\n control,\n setValue,\n tenant,\n client,\n } = props;\n const { user } = getClientStore();\n const { loadingSearch, clientPhone } = useClientByPhone(\n user ? user.mobilePhone : ''\n );\n const [reloadBankAccounts, onReloadBankAccounts] = useState(false);\n const clientId = get(client, 'id');\n const tenantId = get(tenant, 'id');\n const [errorClient, onSetErrorClient] = useState({\n active: false,\n messageError: '',\n });\n const [error, onSetError] = useState({ active: false, messageError: '' });\n const [isVerifyingAndLinking, setIsVerifyingAndLinking] = useState(false);\n const [pncTooltipVisible, setPncTooltipVisible] = useState(false);\n const [startToken, setStartToken] = useState(false);\n const handleClose = () => setIsVerifyingAndLinking(false);\n const handleShow = () => setIsVerifyingAndLinking(true);\n let hasVerifiedAccount;\n const isFetchingBankAccounts = get(\n account,\n 'bankAccounts.isFetchingBankAccounts'\n );\n const isFetchingCreateClient = get(\n account,\n 'createClient.isFetchingCreateClient'\n );\n const isFetchedCreateClient = get(\n account,\n 'createClient.isFetchedCreateClient'\n );\n const isFetchingDeleteBankAccount = get(\n account,\n 'deleteBankAccount.isFetchingDeleteBankAccount'\n );\n const path = window.location.search.split('?')[2];\n const disbursement = getQueryVariable(path, 'disbursement');\n\n const reloadingBankAccounts = () => {\n onSetLoadingService(true);\n onGetBankAccounts(clientId).then(response => {\n onSetLoadingService(false);\n // onReloadBankAccounts(false);\n if (get(response, 'error')) {\n onSetError({ active: true, messageError: get(response, 'message') });\n } else {\n onSetError({ active: false, messageError: '' });\n }\n });\n } \n\n \n\n //Microdeposit flow hooks\n\n const {\n PlaidTokenForMicroDepositsStart,\n } = usePlaidTokenForMicroDepositsStart();\n\n //Requesting token if it was not received yet, for Microdeposit flow start to pass it to the plaid button\n\n useEffect(() => {\n if (!startToken) {\n PlaidTokenForMicroDepositsStart().then(response =>\n setStartToken(response?.data.token)\n );\n }\n }, []);\n\n useEffect(() => {\n onGetBankAccounts(clientId).then(response => {\n if (get(response, 'error')) {\n onSetError({ active: true, messageError: get(response, 'message') });\n } else {\n onSetError({ active: false, messageError: '' });\n }\n });\n if (reloadBankAccounts) {\n \n \n }\n if (isFetchingCreateClient) {\n handleShow();\n onSetLoadingService(true);\n }\n }, [\n onGetBankAccounts,\n clientId,\n reloadBankAccounts,\n isFetchingCreateClient,\n onSetLoadingService\n ]);\n\n const bankAccounts = get(account, 'bankAccounts.bankAccounts.accounts', []);\n if (bankAccounts) {\n bankAccounts.forEach(account => {\n if (!account.pendingVerification) {\n hasVerifiedAccount = true;\n } else {\n }\n });\n }\n\n const isEmptyBankAccounts = size(bankAccounts) === 0;\n const codes = map(bankAccounts, it => ({\n institutionCode: get(it, 'institutionCode'),\n }));\n const { institutionsLogo } = useInstitutionLogoOR(\n size(codes) > 0 ? codes : []\n );\n const nextStepAfterPlaid = get(location, 'state.fromSummary')\n ? nextStepFromSummary\n : nextStep;\n const onClickMakeTransfer = history =>\n history.push('/create-account/step-select-account');\n if (loadingSearch) {\n return <SpinnerLoader />;\n }\n\n const togglePncTooltip = bool => {\n setPncTooltipVisible(bool);\n };\n\n const plaidButton = (\n <>\n <PlaidButton\n isOpen={\n isEmptyBankAccounts &&\n !isFetchingBankAccounts &&\n !isFetchedCreateClient &&\n !isFetchingCreateClient &&\n !error.active &&\n !errorClient.active &&\n startToken\n }\n token={startToken}\n className=\"create-account__button\"\n onSuccess={plaidResponse => {\n SelectedBankAccounts({\n plaidResponse,\n history,\n client,\n tenant,\n action,\n onGetPlaidCreateClient,\n onGetPlaidStartMicrodepoits,\n onGetPlaidVerifyMicrodepoits,\n onGetBankAccounts,\n nextStep: nextStepAfterPlaid,\n onSetError,\n onSetErrorClient,\n onSetLoadingService,\n handleClose,\n setValue,\n });\n }}\n >\n Find My Bank\n </PlaidButton>\n </>\n );\n\n return (\n <>\n <BoxContainer\n widest={widest}\n withLogButton={withLogButton}\n withDoubleBorder={withDoubleBorder}\n >\n <Title isSelectAccount={isSelectAccount} />\n {isSelectAccount ? <Subtitle disbursement={disbursement} /> : null}\n {isFetchingCreateClient ||\n loadingService ||\n isFetchingBankAccounts ||\n isFetchingDeleteBankAccount ||\n isVerifyingAndLinking ? (\n <>\n <SpinnerLoader />\n\n {isVerifyingAndLinking && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n fontSize: '16px',\n color: '#333',\n marginBottom: '10px',\n marginTop: '-20px',\n }}\n >\n Linking and Verifying Account...\n </div>\n )}\n </>\n ) : (\n <BankAccountsList\n bankAccounts={bankAccounts}\n isEmptyBankAccounts={isEmptyBankAccounts}\n onDisconnectBankAccount={onDisconnectBankAccount}\n isSelectAccount={isSelectAccount}\n action={action}\n state={state}\n register={register}\n onReloadBankAccounts={onReloadBankAccounts}\n institutionsLogo={institutionsLogo}\n onSetError={onSetError}\n watch={watch}\n control={control}\n setValue={setValue}\n client={client}\n tenant={tenant}\n reloadingBankAccounts={reloadingBankAccounts}\n />\n )}\n <div\n className={!mobile ? 'pnc' : null}\n style={{ display: 'row !important' }}\n >\n <PaymintsButton\n onClick={() => togglePncTooltip(true)}\n noShadow\n className={`bank-accounts__button bank-accounts__link`}\n type={BUTTON_TYPE.INVERSE_BLUE}\n disabled={\n isFetchingCreateClient || loadingService || isVerifyingAndLinking\n }\n >\n + Add Account\n </PaymintsButton>\n\n <div style={{ position: 'relative' }}>\n <AddAccountTooltip\n dismissHandler={togglePncTooltip}\n isVisible={pncTooltipVisible}\n plaidButton={plaidButton}\n />\n </div>\n <div hidden={isEmptyBankAccounts}>\n <PaymintsButton\n hidden={isSelectAccount}\n className=\"create-account__button\"\n noShadow\n disabled={isVerifyingAndLinking || !hasVerifiedAccount}\n type={BUTTON_TYPE.INVERSE_BLUE}\n onClick={() => onClickMakeTransfer(props.history)}\n >\n {'Make Transfer'}\n </PaymintsButton>\n </div>\n {children}\n {error.active && (\n <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n )}\n {errorClient.active && (\n <ErrorMessageInput>{errorClient.messageError}</ErrorMessageInput>\n )}\n </div>\n </BoxContainer>\n </>\n );\n};\nexport default withRouter(\n connect(\n state => ({\n account: state.account,\n }),\n {\n onGetBankAccounts: getClientAccounts,\n onDisconnectBankAccount: disconnectBankAccount,\n onGetPlaidCreateClient: getPlaidCreateClient,\n onGetPlaidStartMicrodepoits: getPlaidStartMicrodepoits,\n }\n )(BankAccounts)\n);\n","import request from '../../utils/request';\n\nexport default function usePlaidTokenForMicroDepositsStart() {\n const PlaidTokenForMicroDepositsStart = () => {\n return request.post(`/account/plaid/link-token`, {\n user: {\n client_user_id: '123456789',\n },\n options: {\n products: ['auth'],\n clientName: 'paymints.io',\n },\n });\n };\n return {\n PlaidTokenForMicroDepositsStart,\n };\n}\n","import React, { useState, useEffect } from 'react';\nimport { withRouter, Redirect, useHistory } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport get from 'lodash/get';\nimport size from 'lodash/size';\nimport isNil from 'lodash/isNil';\nimport split from 'lodash/split';\nimport find from 'lodash/find';\nimport { useForm } from 'react-hook-form';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport { getPlaidCreateClient } from '../../reducers/account/AccountActions';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport BankAccounts from '../BankAccounts/BankAccounts';\nimport { getQueryVariable } from '../../utils/util';\n\nimport './bankAccountSelection.css';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\n\nconst nextStep = history =>\n history.push(`/create-account/step-3${get(history, 'location.search')}`);\n\nconst nextStepFromSummary = history =>\n history.push(`/create-account/step-4${get(history, 'location.search')}`);\n\nconst isPendingOrSubmitted = option => {\n switch (option) {\n case 'submitted':\n return true;\n case 'pending':\n return true;\n default:\n return false;\n }\n};\n\nconst BankAccountsSelection = props => {\n const history = useHistory();\n const { sensitiveData } = useSensitiveData();\n const ssn = get(sensitiveData, 'SSN');\n const dob = get(sensitiveData, 'DOB');\n const { account, location } = props;\n const { state, action } = useStateMachine(updateAction);\n const bankAccounts = get(account, 'bankAccounts.bankAccounts.accounts');\n let hasVerifiedAccount;\n if (bankAccounts) {\n bankAccounts.forEach(account => {\n if (!account.pendingVerification) {\n hasVerifiedAccount = true;\n } else {\n }\n });\n }\n const lastSelected = find(\n bankAccounts,\n ['id', get(state, 'data.bankAccount.id')],\n undefined\n );\n const { register, watch, setValue, control } = useForm({\n defaultValues: { selection: get(state, 'data.bankAccount.id') },\n });\n const [loadingService, onSetLoadingService] = useState(false);\n const [cantEdit, onCantEdit] = useState(false);\n\n const isEmptyBankAccounts = size(bankAccounts) === 0;\n const isFetchingCreateClient = get(\n account,\n 'createClient.isFetchingCreateClient'\n );\n const nextStepAfterPlaid = history => {\n const path = window.location.search.split('?') || [];\n if (path.length === 3) {\n const path = get(split(window.location.search, '?'), 1);\n const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n history.push(\n `/create-account/step-4?go_to_transfer=${transferId}?disbursement=payment`\n );\n } else {\n return get(location, 'state.fromSummary')\n ? nextStepFromSummary(history)\n : nextStep(history);\n }\n };\n const isFetchingDeleteBankAccount = get(\n account,\n 'deleteBankAccount.isFetchingDeleteBankAccount'\n );\n\n useEffect(\n () => {\n const disbursementPath = window.location.search.split('?')[2];\n const disbursement = getQueryVariable(disbursementPath, 'disbursement');\n if ((!ssn || !dob) && !disbursement) {\n const client = sessionStorage.getItem('client');\n history.push('/create-account/step-2', { client });\n }\n const path = get(split(window.location.search, '?'), 1);\n\n const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n if (transferId) {\n const status = get(props.transfer, 'status');\n if (isPendingOrSubmitted(status)) {\n onCantEdit(true);\n }\n }\n },\n /* eslint-disable */ [props.history, props.transfer]\n );\n\n if (cantEdit) {\n return (\n <Redirect\n to={{\n pathname: '/transfer-history',\n search: '',\n state: { editError: true },\n }}\n />\n );\n }\n\n return (<>\n \n <BankAccounts\n action={action}\n state={state}\n register={register}\n watch={watch}\n setValue={setValue}\n control={control}\n withDoubleBorder\n withLogButton\n isSelectAccount\n widest\n showPlaidButton\n loadingService={loadingService}\n onSetLoadingService={onSetLoadingService}\n {...props}\n >\n <PaymintsButton\n noShadow\n className=\"bank-accounts__button\"\n type={BUTTON_TYPE.INVERSE_BLUE}\n onClick={() => nextStepAfterPlaid(props.history)}\n disabled={\n isEmptyBankAccounts ||\n isFetchingCreateClient ||\n isNil(get(state, 'data.bankAccount.id')) ||\n isFetchingDeleteBankAccount ||\n loadingService ||\n !lastSelected ||\n !hasVerifiedAccount\n }\n >\n {'Continue'}\n </PaymintsButton>\n \n </BankAccounts>\n </>\n \n );\n};\n\nexport default withRouter(\n connect(\n state => ({\n account: state.account,\n }),\n {\n onGetPlaidCreateClient: getPlaidCreateClient,\n }\n )(BankAccountsSelection)\n);\n","import React from 'react'\nimport { useDropzone } from 'react-dropzone'\nimport './fileUpload.css'\n\nexport default function FileUpload({ onDropFiles, selected, invalidFormat }) {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop: onDropFiles })\n\n return (\n <>\n <div {...getRootProps()}>\n <input {...getInputProps()} />\n {selected ? (\n <div className=\"paymints__file-upload__files\">\n <p>{`Selected file: ${selected}, click if you want to change it`}</p>\n </div>\n ) :\n isDragActive ? (\n <div className=\"paymints__file-upload__files\">\n <p>Drop the files here ...</p>\n </div>\n ) : (\n <div className=\"paymints__file-upload__files\">\n <p>Drag and drop some files here, or click to select files</p>\n </div>\n )}\n </div>\n <div className=\"text text-danger\" hidden={!invalidFormat}>File upload must be in jpg or png format</div>\n </>\n )\n}","import React, { useState } from 'react'\nimport FileUpload from './FileUpload';\nimport { validateFile } from '../../utils/validations';\n\nexport default function InputFile({ value, onChange, selected }) {\n const [invalidFormat, setInvalidFormat] = useState(false);\n const onDropFiles = files => {\n if (validateFile(files[0].type)) {\n setInvalidFormat(false);\n onChange(files[0])\n } else {\n setInvalidFormat(true);\n }\n }\n return <FileUpload value={value} selected={selected} onDropFiles={onDropFiles} invalidFormat={invalidFormat} />\n}","export const UPLOAD_DOCUMENT_FETCH = \"UPLOAD_DOCUMENT_FETCH\";\nexport const UPLOAD_DOCUMENT_SUCCESS = \"UPLOAD_DOCUMENT_SUCCESS\";\nexport const UPLOAD_DOCUMENT_ERROR = \"UPLOAD_DOCUMENT_ERROR\";\n","import React, { useState } from 'react'\nimport uploadImage from '../../styles/assets/test-document-upload-success.png';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport InputFile from '../FileUpload/InputFile';\nimport { useForm, Controller } from \"react-hook-form\";\nimport get from \"lodash/get\";\nimport { connect } from 'react-redux';\nimport { withRouter } from \"react-router-dom\";\nimport { uploadDocument } from '../../reducers/asset/AssetActions';\nimport { saveTransferDoc } from '../../reducers/transfer/TransferActions';\nimport { PaymintsButton, BUTTON_TYPE } from 'paymints-address-autocomplete-field';\nimport updateAction from \"../CreateAccountWizard/updateAction\";\nimport { useStateMachine } from \"little-state-machine\";\nimport ContentModal from '../ContentModal/ContentModal';\nimport { useToasts } from 'react-toast-notifications'\nimport SpinnerLoader from \"../SpinnerLoader/SpinnerLoader\";\n\n\nconst buildLoaderModal = () => (\n <div className=\"create-account__modal\">\n <div className=\"create-account__modal-loading\">\n <SpinnerLoader withoutMargin />\n </div>\n <div className=\"create-account__modal-info\">\n Loading please wait...\n </div>\n </div>\n)\nconst uploadIdDocument = ({ props, action, transferId, selectedDocument, selectedDocumentType, onSetError }) => {\n const tenantId = get(props, 'tenant.id');\n const clientId = get(props, 'client.id');\n const type = selectedDocumentType.toLowerCase();\n\n const form = new FormData();\n form.append('TENANT_GUID', tenantId);\n form.append('CLIENT_GUID', clientId);\n // form.append('TRANSFER_GUID', transferId);\n form.append(type, selectedDocument);\n\n return props.onUploadDocument(form)\n .then((responseUploadDocument) => {\n if (!get(responseUploadDocument, 'error')) {\n const data = {\n documentType: type,\n assetId: get(responseUploadDocument, `s3-assets.${type}.assetID`)\n }\n return props.onSaveTransferDoc(transferId, data)\n .then((responseTransferDoc) => {\n if (!get(responseTransferDoc, 'error')) {\n action({ asset: { id: get(responseUploadDocument, `s3-assets.${type}.assetID`) } });\n return { success: true }\n } else {\n return { success: false }\n }\n })\n } else {\n return { success: false }\n }\n })\n}\nconst DocumentVerification = (props) => {\n const [isLoading, onSetLoadingService] = useState(false);\n const { register: regDocument, control: controlDocument, watch: watchDocument, handleSubmit } = useForm();\n const { action } = useStateMachine(updateAction);\n const transferId = get(props, 'client.id');\n const selectedDocument = watchDocument('selectedDocument');\n const selectedDocumentType = watchDocument('selectedDocumentType');\n const { addToast } = useToasts();\n const onSubmit = () => {\n onSetLoadingService(true);\n uploadIdDocument({ props, action, transferId, selectedDocument, selectedDocumentType }).then(response => {\n if (response.success) {\n onSetLoadingService(false);\n props.history.push(`/bank-accounts`);\n addToast('Your Document has successfully uploaded.', { appearance: 'success' });\n }\n });\n }\n return (\n <>\n <ContentModal\n isVisible={isLoading}\n content={buildLoaderModal()}\n small\n withoutButtons\n hideCloseButton\n />\n <BoxContainer widest withLogButton withDoubleBorder>\n <form onSubmit={handleSubmit(() => onSubmit())}>\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">\n More Data is Required\n </div>\n </div>\n <div className=\"create-account__line-container\">\n <div className=\"create-account__subtitle with-margin\">\n Your transfer is not complete.\n </div>\n </div>\n <div className=\"create-account__information-container create-account__no-margine\">\n <div className=\"create-account__subtitle-information\">\n The bank is requesting identification verification.\n </div>\n </div>\n <div className=\"create-account__information-id\">\n <ul className=\"create-account__information-list-id\">\n <li>Full name and ID number should be clearly visible.</li>\n <li>ID cannot be cut off from any side.</li>\n <li>Image must be horizontal and legible.</li>\n <li>Acceptable file types are .jpg, .jpeg, and .png.</li>\n <li>File size must be less than 10MB.</li>\n </ul>\n </div>\n <div className=\"create-account__information-container\">\n <BoxContainer internalBox withBorder>\n <div className=\"create-account__image-id\">\n <img className=\"create-account__image-size-id\" src={uploadImage} alt=\"\" />\n </div>\n\n <div className=\"create-account__type-document-id\">\n Type of document\n <select className=\"create-account__type-document-options-id form-control\" name=\"selectedDocumentType\" ref={regDocument}>\n <option>Passport</option>\n <option>License</option>\n </select>\n </div>\n\n <div className=\"create-account__upload-document form-group\">\n <label htmlFor=\"selectedDocument\">Upload photo</label>\n <Controller as={InputFile} name=\"selectedDocument\" control={controlDocument} selected={get(watchDocument('selectedDocument'), 'name')} />\n </div>\n </BoxContainer>\n <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n htmlType=\"submit\"\n\n >\n Save and Continue\n </PaymintsButton>\n </div>\n </div>\n </form>\n </BoxContainer>\n </>\n )\n}\nexport default withRouter(connect(\n state =>\n ({}), {\n onUploadDocument: uploadDocument,\n onSaveTransferDoc: saveTransferDoc,\n }\n)(DocumentVerification));","import * as APIUtil from \"../../utils/service/service_api\";\nimport * as actionType from \"./AssetActionTypes\";\nimport get from \"lodash/get\";\n\nexport const uploadDocumentFetch = () => ({\n type: actionType.UPLOAD_DOCUMENT_FETCH\n});\n\nexport const uploadDocumentSuccess = response => ({\n type: actionType.UPLOAD_DOCUMENT_SUCCESS,\n payload: { response }\n});\n\nexport const uploadDocumentError = response => ({\n type: actionType.UPLOAD_DOCUMENT_ERROR,\n payload: { response }\n});\n\n\nexport const uploadDocument = (formData) => dispatch => {\n dispatch(uploadDocumentFetch())\n return APIUtil.uploadDocument(formData)\n .then(response => {\n dispatch(uploadDocumentSuccess(response))\n return response;\n })\n .catch(error => {\n const errorElement = get(error, 'response.data');\n const message = get(errorElement, 'error.body.message') || get(errorElement, 'message') || get(errorElement, 'error_message') || get(errorElement, 'error') || \"Something went wrong... please try again in a few minutes\";\n dispatch(uploadDocumentError(errorElement))\n return { error: true, message: message };\n })\n};\n","/*\n * src/hooks/useAllCreditTransferTypes.js\n * Description: Query transfer fee configuration for a particular tenant\n * Copyright (c) 2021 PredictiveUX\n */\nimport { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nconst GET_ALL_TRANSFER_FEE_CONFIGS = gql`\n query AllTransferFeeConfigsByTenantId($identifier: String!) {\n allTransferFeeConfigs(where: { tenant: { identifier: $identifier } }) {\n id\n clientPays\n amount\n tenant {\n name\n }\n }\n }\n`;\n\n/**\n * i.e. \"localhost\" is the canonical domain identifier\n * @param {*} domain\n * @returns\n */\nconst useAllTransferFeeConfigs = (domain) => {\n const { loading, error, data, refetch } = useQuery(\n GET_ALL_TRANSFER_FEE_CONFIGS,\n {\n fetchPolicy: \"no-cache\",\n variables: {\n identifier: domain || \"\",\n },\n }\n );\n\n return { loading, error, data: data?.allTransferFeeConfigs || null, refetch };\n};\n\nexport default useAllTransferFeeConfigs;\n","import React, { useEffect, useState } from 'react';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport { withRouter, Route, Switch } from 'react-router-dom';\nimport { StateMachineProvider, createStore } from 'little-state-machine';\nimport CreateAccountFirstStep from '../CreateAccountFirstStep/CreateAccountFirstStep';\nimport CreateAccountVerificationStep from '../CreateAccountVerificationStep/CreateAccountVerificationStep';\nimport CreateAccountSecondStep from '../CreateAccountSecondStep/CreateAccountSecondStep';\nimport TransferDetails from '../TransferDetails/TransferDetails';\nimport TransferSummary from '../TransferSummary/TransferSummary';\nimport TransferSuccess from '../TransferSuccess/TransferSuccess';\nimport AccountError from '../AccountError/AccountError';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport { useTransfer } from '../../utils/service/service_transfer_api';\nimport { getQueryVariable } from '../../utils/util';\nimport BankAccountSelection from '../BankAccountSelection/BankAccountSelection';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore } from '../../utils/util';\nimport { getItem, removeItem } from '../../utils/util';\nimport DocumentVerification from '../DocumentVerification/DocumentVerification';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport { getTenantIdentifier } from '../../utils/util';\nimport useAllTransferFeeConfigs from '../../hooks/useAllTransferFeeConfigs';\n\ncreateStore({\n data: {},\n});\n\nconst CreateAccountWizard = props => {\n const { user } = getClientStore();\n const path = get(split(window.location.search, '?'), 1);\n //const clientId = getQueryVariable(path, \"client_id\") || \"\";\n const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n const mobile = user ? user.mobilePhone : null;\n const { client, refetch, refetch: refetchNewClient } = useClientByPhone(\n mobile\n );\n const { loadingSearchTransfer, transfer, refetchTransfer } = useTransfer(\n transferId\n );\n\n const { value } = getItem('login_user');\n const { sensitiveData } = useSensitiveData();\n\n // here's where we retrieve the transfer fee configuration for the\n // tenant in question\n const { data: transferFeeConfigData } = useAllTransferFeeConfigs(\n getTenantIdentifier(window.location.hostname)\n );\n\n useEffect(\n () => {\n if (user) {\n if (get(sensitiveData, 'SSN') && get(sensitiveData, 'DOB')) {\n if (!value) {\n props.history.push(\n `/create-account/step-select-account${get(\n props.history,\n 'location.search'\n )}`\n );\n } else {\n removeItem('login_user');\n props.history.push(\n `/create-account/step-select-account${get(\n props.history,\n 'location.search'\n )}`\n );\n }\n }\n }\n },\n /* eslint-disable */ [client, sensitiveData, props.history, refetch]\n );\n\n if (loadingSearchTransfer) {\n return <SpinnerLoader />;\n }\n\n if (transferId && !transfer ) {\n refetchTransfer({\n id: transferId,\n });\n }\n\n \n\n return (\n <StateMachineProvider>\n <Switch>\n <Route\n exact\n path=\"/create-account\"\n render={() => (\n <CreateAccountFirstStep\n user={user}\n client={user ? client : Object.assign({})}\n beforeContinue={refetch}\n refetchNewClient={refetchNewClient}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/account-verification\"\n render={() => (\n <CreateAccountVerificationStep\n user={user}\n client={user ? client : Object.assign({})}\n beforeContinue={refetch}\n refetchNewClient={refetchNewClient}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-2\"\n render={() => (\n <CreateAccountSecondStep\n user={user}\n client={client}\n refetch={refetch}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-select-account\"\n render={() => (\n <BankAccountSelection\n user={user}\n client={client}\n transfer={transfer}\n refetchTransfer={refetchTransfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-3\"\n render={() => (\n <TransferDetails\n user={user}\n client={client}\n transfer={transferId ? transfer: null}\n refetchTransfer={refetchTransfer}\n refetch={refetch}\n transferFeeConfigData={transferFeeConfigData}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-4\"\n render={() => (\n <TransferSummary\n user={user}\n transfer={transfer}\n client={client}\n refetchTransfer={refetchTransfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/success\"\n render={() => (\n <TransferSuccess\n user={user}\n client={client}\n transfer={transfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/error\"\n render={() => (\n <AccountError\n user={user}\n client={client}\n transfer={transfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/verification\"\n render={() => (\n <DocumentVerification\n user={user}\n client={client}\n transfer={transfer}\n {...props}\n />\n )}\n />\n </Switch>\n </StateMachineProvider>\n );\n};\n\nexport default withRouter(CreateAccountWizard);\n","import React, { useState, useEffect } from 'react';\nimport { useForm, Controller } from 'react-hook-form';\nimport { connect } from 'react-redux';\nimport { useCreateClient } from '../../utils/service/service_user_api';\nimport { setItem, removeItem } from '../../utils/util';\nimport { withRouter, Link, Redirect } from 'react-router-dom';\nimport { useStateMachine } from 'little-state-machine';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { updateAuth0User } from '../../reducers/account/AccountActions';\nimport PhoneField from '../PhoneField/PhoneField';\nimport Warning from '../../styles/assets/warning.png';\nimport Phone from '../../styles/assets/phone.png';\nimport linkIcon from '../../styles/assets/external-link-icon.svg';\nimport * as APIUtil from '../../utils/service/service_api';\nimport phoneFormatter from '../../utils/service/phoneFormatter';\n\nimport '../CreateAccountWizard/createAccount.css';\n\nconst mobile = window.screen.width < 1200;\n\nconst Logo = ({ props }) => {\n return (\n <div className=\"paymints__box-container__logo-container\">\n <img\n src={props.brandLogo}\n className=\"paymints__box-container__brand_logo\"\n alt=\"\"\n hidden={mobile}\n />\n <img\n src={props.brandLogo}\n className=\"paymints__box-container__brand_logo\"\n alt=\"\"\n hidden={!mobile}\n />\n </div>\n );\n};\n\n/**\nconst Title = () => {\n return (\n <div>\n <div style={{ fontSize: '24px', fontWeight: '600' }}>Welcome</div>\n </div>\n );\n};\n */\n\nconst RealtorIntroText = ({ props }) => {\n\n const introDefault = props?.realtor?.firstName + ' ' + props?.realtor?.lastName + ' has partnered with ' +\n props.tenant.name + ' to securely transfer funds';\n const introText = props?.realtor?.displayDescription || introDefault;\n\n return (\n <div className=\"\">\n <div\n style={{ textAlign: 'center', margin: '0 1em' }}\n className=\"create-account__subtitle\"\n > \n {introText}\n </div>\n <div style={{ textAlign: 'center', margin: '1em' }}>\n To get started please create an account by entering your name and mobile phone number below.\n </div>\n </div>\n );\n};\n\nconst FieldsPersonalInformation = ({ register, errors }) => {\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: '1em', \n }}\n >\n <div style={{ width: !mobile && '40%', marginTop: '1em' }}>\n <label style={{ display: 'flex' }}>First Name</label>\n <input\n type=\"text\"\n id=\"firstName\"\n name=\"firstName\"\n className=\"create-account__input form-control\"\n placeholder=\" \"\n autoComplete=\"no\"\n ref={register({ required: true, maxLength: 50 })}\n />\n {errors.firstName && errors.firstName.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.firstName && errors.firstName.type === 'maxLength' && (\n <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n )}\n </div>\n <div style={{ width: !mobile && '40%', marginTop: '1em' }}>\n <label style={{ display: 'flex' }}>Middle Name</label>\n <input\n type=\"text\"\n id=\"middleName\"\n name=\"middleName\"\n className=\"create-account__input form-control\"\n placeholder=\" \"\n autoComplete=\"no\"\n ref={register}\n />\n </div>\n <div style={{ width: !mobile && '40%', marginTop: '1em' }}>\n <label style={{ display: 'flex' }}>Last Name</label>\n <input\n type=\"text\"\n id=\"lastName\"\n name=\"lastName\"\n className=\"create-account__input form-control\"\n placeholder=\" \"\n autoComplete=\"no\"\n ref={register({ required: true, maxLength: 50 })}\n />\n {errors.lastName && errors.lastName.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.lastName && errors.lastName.type === 'maxLength' && (\n <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n )}\n </div>\n <div\n style={{ width: !mobile && '40%', margin: '1em' }}\n className=\"create-account__warning-conatiner\"\n >\n <img src={Warning} className=\"create-account__warning-icon\" alt=\"\" />\n <div className=\"create-account__warning-text\">\n Must match your driver's license or government-issued ID.</div>\n </div>\n </div>\n );\n};\n\nconst PersonalInformation = ({\n client,\n watch,\n register,\n errors,\n setValue,\n control,\n}) => (\n <div className=\"create-account__information-container-partner\">\n <FieldsPersonalInformation\n client={client}\n register={register}\n errors={errors}\n setValue={setValue}\n control={control}\n watch={watch}\n />\n </div>\n);\n\nconst FieldsContactInformation = ({ errors, control }) => (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: '1em',\n }}\n >\n <div style={{ width: !mobile && '40%', margin: '1em' }}>\n <label style={{ display: 'flex', marginLeft: mobile && '20%' }}>\n Mobile Phone\n </label>\n <Controller\n as={PhoneField}\n control={control}\n className=\"create-account__input form-control\"\n name=\"phone_number\"\n placeholder=\" \"\n rules={{ required: true }}\n style={{\n width: mobile ? '14em' : '100%',\n height: '32px',\n margin: mobile && '0 auto',\n }}\n />\n {errors.phone_number && errors.phone_number.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <div\n style={{ marginTop: '1em' }}\n className=\"create-account__warning-conatiner\"\n >\n <img src={Phone} className=\"create-account__warning-icon\" alt=\"\" />\n <div className=\"create-account__warning-text\">\n We will send a security code to your mobile phone for account verification.\n </div>\n </div>\n </div>\n </div>\n);\n\nconst ContactInformation = ({ client, errors, control }) => {\n return <FieldsContactInformation errors={errors} control={control} />;\n};\n\nconst FooterInformation = ({ setDisabled }) => (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: '1em',\n }}\n >\n <div style={{ width: '60%', marginTop: '1em' }}>\n <span>\n <input\n type=\"checkbox\"\n className=\"form-group\"\n onChange={e => setDisabled(!e.target.checked)}\n />{' '}\n </span>{' '}\n {'By clicking Create Account, you agree to CertifID, Inc. '}\n <a\n href=\"https://www.certifid.com/company/terms-of-service\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link\"\n >\n Terms of Service{' '}\n <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />{' '}\n </a>\n {' and '}\n <a\n href=\"https://www.certifid.com/company/privacy-policy\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link nowrap\"\n >\n Privacy Policy{' '}\n <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n </a>\n {' as well as our partner'} Dwolla's\n <a\n href=\"https://www.dwolla.com/legal/dwolla-account-terms-of-service/\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link\"\n >\n {' '}\n Terms of Service{' '}\n <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n </a>{' '}\n and{' '}\n <a\n href=\"https://www.dwolla.com/legal/privacy/\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link\"\n >\n Privacy Policy.\n <img src={linkIcon} className=\"create-account__link-icon\" alt=\"\" />\n </a>\n </div>\n </div>\n);\n\nconst nextStep = history => {\n history.push(`/create-account/step-2${get(history, 'location.search')}`);\n};\n\nconst FirstStep = props => {\n const {\n beforeContinue,\n onUpdateAuth0User,\n refetchNewClient,\n realtor,\n } = props;\n\n const { register, handleSubmit, errors, watch, setValue, control } = useForm({\n defaultValues: props.client,\n });\n const { createClient } = useCreateClient();\n const { action } = useStateMachine(updateAction);\n const [error, onSetError] = useState({\n active: false,\n type: '',\n messageError: '',\n });\n const [disabled, setDisabled] = useState(true);\n const [licenseArray, setLicenseArray] = useState([]);\n\n const onSubmit = newUser => {\n removeItem('login_user');\n onSetError({ active: false, type: '', messageError: '' });\n const email = get(props.user, 'email')\n ? get(props.user, 'email')\n : `${newUser.phone_number}@paymints.io`;\n const tenantId = get(props, 'tenant.id');\n if (isEmpty(tenantId))\n onSetError({\n active: true,\n messageError: 'Tenant not found, please check url',\n });\n if (email && !isEmpty(tenantId)) {\n const { phone_number } = newUser;\n // Search for all clients with that email\n refetchNewClient({ where: { mobilePhone: '+1' + phone_number } }).then(\n response => {\n const client = get(response, 'data.allClients')[0];\n delete newUser.phone_number;\n if (!client) {\n let clientData = {};\n // Create a new client\n createClient({\n variables: {\n client: {\n ...newUser,\n email: '',\n mobilePhone: '+1' + phone_number,\n tenant: {\n connect: {\n id: tenantId,\n },\n },\n },\n },\n })\n .then(res => {\n clientData = res.data.createClient;\n beforeContinue();\n })\n .then(() => {\n // Create Auth0 client\n const userEmail = get(props.user, 'email');\n if (!userEmail) {\n const auth0User = {\n email: email,\n phone_number: `+1${phone_number}`,\n name: `${newUser.firstName} ${newUser.lastName}`,\n connection: 'sms',\n };\n const auth0Payload = {\n create_user: auth0User,\n role: 'paymints_admin',\n new_user_role: 'paymints_client',\n };\n\n onUpdateAuth0User(tenantId, auth0Payload)\n .then(response => {\n if (response === 'error') {\n onSetError({\n active: true,\n messageError:\n 'Account exists for phone number. Please login in.',\n });\n } else {\n getCode(tenantId, clientData.id, clientData);\n }\n })\n .then(() => {\n action(newUser);\n });\n } else {\n action(newUser);\n nextStep(props.history);\n }\n });\n } else {\n onSetError({ active: true, type: 'sms' });\n setItem('login_user', 'existing_user');\n }\n }\n );\n }\n };\n\n const getCode = (tenantId, clientid, client) => {\n APIUtil.getSMSCode(tenantId, clientid).then(\n () => {\n props.history.push('/create-account/account-verification', { client });\n },\n error => {\n console.log(error);\n }\n );\n };\n\n useEffect(() => {\n if (props?.realtor) {\n setLicenseArray(JSON.parse(props.realtor.licenses));\n }\n }, [props.realtor]);\n\n const nameDefault = props?.realtor?.firstName + ' ' + props?.realtor?.lastName;\n const nameText = props?.realtor?.displayName || nameDefault;\n\n return (\n <div\n style={{\n backgroundColor: 'white',\n height: '100vh',\n marginTop: mobile && '-20px', \n }}\n > \n <div style={{ display: 'flex', flexDirection: mobile && 'column' }}>\n <div\n style={{\n backgroundColor: !mobile && '#ecf0ff',\n width: mobile ? '100%' : '25em',\n height: !mobile && '100vh',\n }}\n >\n <div style={{ marginTop: '5em' }}>\n {realtor?.headshotImageURL ? (\n <img\n style={{ borderRadius: '50% ' }}\n src={realtor?.headshotImageURL}\n alt={nameText}\n width='200px'\n />\n ) : (\n <img\n style={{ borderRadius: '50% ' }}\n src={`https://ui-avatars.com/api/?name=${realtor?.firstName}+${realtor?.lastName}&size=200`}\n alt={nameText}\n />\n )}\n </div>\n <div style={{ marginTop: '0.5em', fontSize: '2em' }}>\n {nameText}\n </div>\n <div style={{ marginTop: '0.5em', fontSize: '1em' }}>\n <div>{`Agent with ${realtor?.brokerage?.name}`} </div>\n <div>\n {licenseArray && licenseArray.length? (\n <span>License<br/></span>\n ):\"\"}\n {licenseArray.map(license => (\n <span>{`${license.state} #${license.license}`}<br/></span>\n ))}\n </div>\n </div>\n <div\n style={{ marginTop: '1em', marginLeft: '1.5em' }}\n hidden={!realtor?.email}\n >\n </div>\n <div style={{ marginTop: '2em' }}>\n {realtor?.brokerage?.logoURL ? (\n <img\n style={{ width: '10em' }}\n src={realtor?.brokerage?.logoURL}\n alt={`${realtor?.brokerage?.name}`}\n />\n ) : (\n <div style={{ fontSize: '1.5em' }}>\n {`${realtor?.brokerage?.name}`}{' '}\n </div>\n )}\n </div> \n <div\n style={{\n marginTop: '1em',\n fontSize: '1em',\n marginBottom: mobile && '1em',\n }}\n >\n <div><a href={`${realtor?.brokerage?.websiteURL}`} target=\"_blank\">{`${realtor?.brokerage?.websiteURL}`}</a></div>\n <div>\n {phoneFormatter(\n '(XXX) XXX-XXXX',\n realtor?.brokerage?.officePhone?.replace('+1', '')\n )}{' '}\n </div>\n </div>\n </div>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: '3em',\n }}\n >\n <Logo props={props} />\n <RealtorIntroText props={props} />\n <form onSubmit={handleSubmit(onSubmit)}>\n <PersonalInformation\n client={props.client}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n control={control}\n />\n <ContactInformation\n client={props.client}\n errors={errors}\n control={control}\n />\n <FooterInformation setDisabled={setDisabled} />\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: '1em',\n marginBottom: '2em',\n width: mobile && '100%',\n }}\n >\n <PaymintsButton\n htmlType=\"submit\"\n className=\"create-account__button\"\n type={BUTTON_TYPE.INVERSE_BLUE}\n disabled={disabled}\n style={{ marginLeft: '1.5em' }}\n >\n <div className=\"create-account__button-text\">\n {props.registerButtonText\n ? props.registerButtonText === 'Register!'\n ? 'Create Account'\n : props.registerButtonText\n : 'Create Account'}\n </div>\n </PaymintsButton>\n {error.active && (\n <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n )}\n {error.active && error.type === 'sms' && (\n <ErrorMessageInput>\n Account exists for phone number. Please{' '}\n <Link to=\"/login\" params={{ partnerURI: props.partnerURI} }>login</Link>\n </ErrorMessageInput>\n )}\n <div>\n {' '}\n Already registered? Click to{' '}\n <span\n className=\"create-account__paymints-link\"\n onClick={() => props.history.push(`/login?partnerURI=${props.partnerURI}`)}\n >\n log in\n </span>{' '}\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n );\n};\n\nexport default withRouter(\n connect(state => ({}), {\n onUpdateAuth0User: updateAuth0User,\n })(FirstStep)\n);\n","export default function phoneFormatter(mask, unformattedNumber) {\n const number = unformattedNumber?.replace(/-/g, '').replace('+1', '')\n let formattedNumber = ''\n\n for (let iMask = 0, iNumber = -1; iMask < mask?.length && iNumber < number?.length; iMask += 1) {\n formattedNumber +=\n mask.charAt(iMask) === 'X' ? number.charAt((iNumber += 1)) : mask.charAt(iMask)\n }\n\n return formattedNumber\n}\n","import React, { useState, useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { useForm, Controller } from 'react-hook-form';\nimport { withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport format from 'dateformat';\nimport { useStateMachine } from 'little-state-machine';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { Select as AntSelect } from 'antd';\nimport updateAction from '../CreateAccountWizard/updateAction';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n PaymintsNumberFormat,\n} from 'paymints-address-autocomplete-field';\nimport DestinationAccount from '../DestinationAccount/DestinationAccount';\n\nimport {\n useCreateTransfer,\n useSaveTransfer,\n} from '../../utils/service/service_transfer_api';\nimport { useInstitutionLogo } from '../../utils/service/service_institution_logo';\nimport { saveTransferDoc } from '../../reducers/transfer/TransferActions';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { validAmount } from '../../utils/validations';\nimport { extractNotesFromJson, formatDayFromUTC, getRealtorStore } from '../../utils/util';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport useEscrowAccountFromTenant from '../../utils/service/service_tenant_api';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport HeaderLogo from '../../styles/assets/lemon.png';\nimport AmountInput from '../AmountInput/AmountInput';\nimport useAllCreditTransferTypes from '../../hooks/useAllCreditTransferTypes';\nimport useAllActiveOfficesSorted from '../../hooks/useAllActiveOfficesSorted';\nimport useAllRealtorsFromTenant from '../../hooks/useAllRealtorsFromTenant';\n\nimport PhoneField from '../PhoneField/PhoneField';\n\nimport '../CreateAccountWizard/createAccount.css';\n\n/**\n * [{amount: Number | null, clientPays: boolean, id: String, tenant: { name: String}}]\n * @param {*} data\n */\nconst extractTranferFeeFromData = data => {\n if (data && data.length > 0) {\n const [first] = data;\n if (first.clientPays) {\n return +first.amount || 0;\n }\n return 0;\n }\n return 0;\n};\n\n/**\n * @TODO extract out to component\n */\nconst Title = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">Transfer Details</div>\n </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst InfoTransfer = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__subtitle\">\n What kind of transfer would you like to make?\n </div>\n </div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoTransfer = ({\n client,\n register,\n errors,\n control,\n setValue,\n purposes,\n emdVisible,\n setFieldsEMDVisible,\n realtorData,\n setRealtorData,\n showREAInfoFill,\n}) => {\n const purposesOptions = purposes.map(purpose => ({\n value: purpose,\n label: purpose\n }))\n return (<>\n <div className=\"bank-accounts__item-title py-4\">PURPOSE</div>\n <BoxContainer withBorder internalBox >\n <label>Select a Purpose</label>\n <div\n className=\"form-group\"\n style={{\n backgroundColor: '#fff',\n borderRadius: '4px',\n padding: '10px',\n marginTop: '10px',\n }}\n >\n <Controller\n as={AntSelect}\n control={control}\n name=\"purpose\"\n rules={{ required: true }}\n options={purposesOptions}\n defaultValue=\"Earnest Money Deposit for Purchase\"\n style={{\n boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n border: '2px solid #c9d1f2',\n borderRadius: '4px',\n width: '100%',\n }}\n />\n {errors.purpose && errors.purpose.type === 'required' && (\n <div className=\"form-check create-account__error-message\">\n\n <ErrorMessageInput>This is required</ErrorMessageInput>\n\n </div>)}\n </div>\n\n </BoxContainer>\n </>\n );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoPropertyAddress = () => (\n <div className=\"bank-accounts__item-title py-4\">PROPERTY ADDRESS AND ADDITIONAL NOTES</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldsInfoPropertyAddress = ({\n transfer,\n register,\n errors,\n setValue,\n control,\n}) => {\n return (\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Property Address Related To The Transfer</label>\n <input\n type=\"text\"\n name=\"propertyAddress1\"\n placeholder=\"Address 1\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.propertyAddress1 &&\n errors.propertyAddress1.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <input\n type=\"text\"\n name=\"propertyAddress2\"\n placeholder=\"Address 2\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: false })}\n />\n <input\n type=\"text\"\n name=\"propertyCity\"\n placeholder=\"City\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.propertyCity && errors.propertyCity.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <Controller\n as={Select}\n control={control}\n name=\"propertyState\"\n placeholderText=\"State\"\n rules={{ required: true }}\n options={states}\n className=\"create-account__input form-control create-account__address-info\"\n />\n {errors.propertyState && errors.propertyState.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <input\n type=\"text\"\n name=\"propertyZipcode\"\n placeholder=\"Zip code\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: true })}\n />\n {errors.propertyZipcode &&\n errors.propertyZipcode.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n <br />\n {((errors.propertyAddress1 &&\n errors.propertyAddress1.type === 'required') ||\n (errors.propertyCity && errors.propertyCity.type === 'required') ||\n (errors.propertyState && errors.propertyState.type === 'required') ||\n (errors.propertyZipcode &&\n errors.propertyZipcode.type === 'required')) && (\n <ErrorMessageInput>Please select a valid address</ErrorMessageInput>\n )}\n <br />\n <label>Notes (Optional)</label>\n <textarea\n name=\"notes\"\n ref={register}\n placeholder=\" \"\n className=\"create-account__text-area form-control\"\n />\n </div>\n </BoxContainer>\n );\n};\n\n/**\n * @TODO extract out to component\n */\nconst InfoAmount = () => (\n <div className=\"bank-accounts__item-title py-4\">AMOUNT</div>\n);\n\n/**\n * @TODO extract out to component\n */\nconst FieldInfoAmount = ({\n register,\n errors,\n control,\n watch,\n watchDocument,\n regDocument,\n controlDocument,\n bankBalance,\n setMaxAmountValidate,\n maxAmountValidate,\n MAXIMUM_AMOUNT,\n transferFeeConfigData,\n getValues\n}) => {\n return (\n <BoxContainer withBorder internalBox>\n <>\n\n <div className=\"account-blance\">\n <div>Account Balance</div>\n {!bankBalance ? (\n '--'\n ) : (\n <div>\n <PaymintsNumberFormat\n number={bankBalance}\n decimals={2}\n format=\"currency\"\n />\n </div>\n )}\n </div>\n <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n <div className=\"form-group\" style={{ width: \"48%\" }}>\n <label>Amount</label>\n {!bankBalance ? (\n <Controller\n as={AmountInput}\n control={control}\n name=\"amount\"\n placeholder=\"$0.00\"\n onKeyUp={() => setMaxAmountValidate(false)}\n className=\"create-account__input form-control\"\n rules={{\n required: true,\n }}\n autoComplete=\"no\"\n />\n ) : (\n <Controller\n as={AmountInput}\n control={control}\n name=\"amount\"\n placeholder=\"$0.00\"\n onKeyUp={() => setMaxAmountValidate(false)}\n className=\"create-account__input form-control\"\n rules={{\n required: true,\n validate: value =>\n validAmount(\n value,\n bankBalance,\n extractTranferFeeFromData(transferFeeConfigData)\n ),\n }}\n autoComplete=\"no\"\n />\n )}\n\n\n {errors.amount && errors.amount.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.amount && errors.amount.type === 'validate' && (\n <ErrorMessageInput>\n Amount entered exceeds account balance and any applicable\n convenience fees. Please enter an amount lesser than or equal to\n this combined amount.\n </ErrorMessageInput>\n )}\n {maxAmountValidate && (\n <ErrorMessageInput>\n Transfer amount cannot exceed{' '}\n <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n </ErrorMessageInput>\n )}\n </div>\n <div className=\"form-group\" style={{ width: \"48%\" }}>\n <label>Re-Enter Amount</label>\n <Controller\n as={AmountInput}\n control={control}\n name=\"amountCompare\"\n placeholder=\"$0.00\"\n className=\"create-account__input form-control\"\n rules={{\n required: true,\n validate: {\n matchesAmount: value => value === getValues('amount'),\n },\n }}\n onPaste={e => {\n e.preventDefault()\n return false\n }}\n />\n {errors.amount2 && errors.amount2.type === 'required' && (\n <ErrorMessageInput>Amount is required </ErrorMessageInput>\n )}\n {errors.amount2 && errors.amount2.type === 'matchesAmount' && (\n <ErrorMessageInput>Amounts do not match</ErrorMessageInput>\n )}\n\n\n {errors.amount && errors.amount.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.amount && errors.amount.type === 'validate' && (\n <ErrorMessageInput>\n Amount entered exceeds account balance and any applicable\n convenience fees. Please enter an amount lesser than or equal to\n this combined amount.\n </ErrorMessageInput>\n )}\n {maxAmountValidate && (\n <ErrorMessageInput>\n Transfer amount cannot exceed{' '}\n <PaymintsNumberFormat number={MAXIMUM_AMOUNT} format=\"currency\" />{' '}\n </ErrorMessageInput>\n )}\n </div>\n </div>\n </>\n </BoxContainer>\n\n );\n};\n\nconst FieldOfficeSelect = ({ errors, control, tenantId, setValue }) => {\n const { activeOffices } = useAllActiveOfficesSorted(tenantId);\n const officeOptions = activeOffices.map(office => ({\n value: office.id,\n label: office.title + ' - ' + office.city + ', ' + office.state,\n }));\n\n return (\n <BoxContainer withBorder internalBox>\n <div>\n <div>\n <label>Select an Office to make a payment to</label>\n </div>\n </div>\n <Controller\n as={AntSelect}\n control={control}\n name=\"office\"\n rules={{ required: true }}\n options={officeOptions}\n labelInValue={true}\n placeholder=\"Select an Office:\"\n style={{\n boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n border: '2px solid #c9d1f2',\n borderRadius: '4px',\n width: '100%',\n }}\n />\n {errors?.office && errors?.office?.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </BoxContainer>\n );\n};\n\nconst RealtorSelect = ({ errors, setRealtorID, realtors, transfer }) => {\n const realtorsOptions = realtors?.map(realtor => ({\n\n value: `${realtor.firstName} ${realtor.lastName}`,\n label: `${realtor.firstName} ${realtor.lastName}`,\n key: realtor.id,\n }));\n\n const filteringArrayToGetID = fullName => {\n const splittedFirstAndLast = fullName.split(' ');\n const D = realtors?.filter(obj => {\n return (\n obj.firstName === splittedFirstAndLast[0] &&\n obj.lastName === splittedFirstAndLast[1]\n );\n });\n setRealtorID(D[0].id);\n };\n\n return (\n <BoxContainer withBorder internalBox>\n <div>\n <div>\n <label>Please select your real estate agent</label>\n </div>\n </div>\n\n <AntSelect\n placeholder=\"Select your Real Estate Agent\"\n defaultValue={transfer.transfer ? `${transfer.transfer.realtor.firstName} ${transfer.transfer.realtor.lastName}` : null}\n onChange={filteringArrayToGetID}\n on\n rules={{ required: true }}\n options={realtorsOptions}\n style={{\n boxShadow: 'inset 0 1px 1px rgb(0 0 0 / 8%)',\n border: '2px solid #c9d1f2',\n borderRadius: '4px',\n width: '100%',\n }}\n showSearch\n />\n {errors?.realtor && errors?.realtor?.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </BoxContainer>\n );\n};\n\nconst onClickBackButton = history =>\n history.push(\n `/create-account/step-select-account${get(history, 'location.search')}`\n );\n\nconst onClickGoToTransferHistory = history => history.push('/transfer-history');\n\nconst createDraftTransfer = ({\n props,\n destAccount,\n state,\n newTransfer,\n creditTransferTypes,\n transferFeeConfigData, // array\n realtorData,\n}) => {\n // here's where we deal with the fee (this works)\n let fee = null;\n const [tfg] = transferFeeConfigData;\n if (tfg && tfg.clientPays) {\n fee = tfg.amount;\n }\n\n return {\n //...newTransfer,\n ...Object.assign(newTransfer, { fee }),\n expectedClosingDate: new Date(get(newTransfer, 'expectedClosingDate')),\n firstName: get(props.client, 'firstName'),\n lastName: get(props.client, 'lastName'),\n email: get(props.client, 'email'),\n status: 'draft',\n otherIndividuals: JSON.stringify(realtorData),\n transferType: {\n connect: {\n id: creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].id,\n },\n },\n type: 'Client Transfer',\n client: {\n connect: {\n id: get(props, 'client.id'),\n },\n },\n sourceBankAccount: {\n connect: {\n id: get(state, 'data.bankAccount.id'),\n },\n },\n destBankAccount: {\n connect: {\n id: get(destAccount, 'id'),\n },\n },\n tenant: {\n connect: {\n id: get(props, 'tenant.id'),\n },\n },\n // office: {\n // connect: {\n // id: get(newTransfer, 'office.value'),\n // },\n // },\n };\n};\n\nconst showInfo = amount => {\n if (amount > '5000') {\n return true;\n }\n return false;\n};\n\nconst getDefaultValues = props => {\n if (get(props, 'transfer.propertyAddress1')) {\n return {\n propertyAddress1: get(props, 'transfer.propertyAddress1'),\n propertyAddress2: get(props, 'transfer.propertyAddress2'),\n propertyState: get(props, 'transfer.propertyState'),\n propertyCity: get(props, 'transfer.propertyCity'),\n propertyZipcode: get(props, 'transfer.propertyZipcode'),\n };\n } else {\n if (\n get(props, 'transfer.purpose') === 'Earnest Money Deposit for Purchase'\n ) {\n return {\n propertyAddress1: get(props, 'client.address1'),\n propertyAddress2: get(props, 'client.address2'),\n propertyState: get(props, 'client.state'),\n propertyCity: get(props, 'client.city'),\n propertyZipcode: get(props, 'client.zipcode'),\n };\n } else {\n return {\n propertyAddress1: get(props, 'client.propertyAddress1'),\n propertyAddress2: get(props, 'client.propertyAddress2'),\n propertyState: get(props, 'client.propertyState'),\n propertyCity: get(props, 'client.propertyCity'),\n propertyZipcode: get(props, 'client.propertyZipcode'),\n };\n }\n }\n};\n\n/**\n * The primary component...ideally this should be the only component in this file.\n * @param {*} props\n */\nconst TransferDetailsPartners = props => {\n\n const expectedClosingDate = get(props, 'transfer.expectedClosingDate')\n ? formatDayFromUTC(get(props, 'transfer.expectedClosingDate'))\n : undefined;\n\n const { transferFeeConfigData } = props;\n\n let { realtors } = useAllRealtorsFromTenant(props.tenant.id);\n\n const { realtor } = getRealtorStore();\n // console.log(realtor)\n if (realtor && realtor.id.length === 24) {\n // Override realtors object as there is only 1 realtor\n // since coming from the realtor landing page\n realtors = [];\n realtors.push(realtor);\n }\n\n const { register, handleSubmit, errors, setValue, control, watch, getValues, } = useForm({\n defaultValues: {\n ...props.transfer,\n notes: extractNotesFromJson(props?.transfer?.notes),\n expectedClosingDate: expectedClosingDate,\n ...getDefaultValues(props),\n },\n });\n\n const valuesD = getValues()\n\n // PAYAPP-1193\n //Changed to 149999.99 by D.K No ticket assigned just a requestred Hotfix.\n const MAXIMUM_AMOUNT = 149999.99;\n const [maxAmountValidate, setMaxAmountValidate] = useState(false);\n const {\n register: regDocument,\n control: controlDocument,\n watch: watchDocument,\n } = useForm();\n const { state, action } = useStateMachine(updateAction);\n const [emdVisible, setFieldsEMDVisible] = useState(false);\n const [showREAInfoFill, setShowREAInfoFill] = useState(true);\n const [showAmountInfo, onShowAmountInfo] = useState(\n showInfo(watch('amount'))\n );\n const [realtorID, setRealtorID] = useState();\n const [realtorData, setRealtorData] = useState({\n fullName: '',\n email: '',\n phoneNumber: '',\n });\n const { createTransfer } = useCreateTransfer();\n const { saveTransfer } = useSaveTransfer();\n const { updateClient } = useUpdateClient();\n const { destAccount } = useEscrowAccountFromTenant(\n get(props, 'tenant.id', '')\n );\n const { institutionLogo } = useInstitutionLogo(\n get(destAccount, 'institutionCode', '')\n );\n const transferId = get(props, 'transfer.id');\n const [error, onSetError] = useState({ active: false, messageError: '' });\n const {\n data: creditTransferTypes,\n loading: loadingCreditTransferTypes,\n } = useAllCreditTransferTypes();\n const [purposes, setPurposes] = useState([]);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n\n\n useEffect(() => {\n if (realtors && props && props.transfer) {\n const realtor = realtors.filter(obj => {\n return (\n obj.firstName === props.transfer.realtor?.firstName &&\n obj.lastName === props.transfer.realtor?.lastName\n );\n });\n setRealtorID(realtor[0]?.id);\n }\n\n }, [realtors, props]);\n\n useEffect(() => {\n if (creditTransferTypes?.length) {\n const purposes = JSON.parse(\n creditTransferTypes.filter(f => f.name === 'Client Transfer')[0].purpose\n ).purposes;\n setPurposes(purposes);\n }\n if (props?.tenant?.routingType === 'agent') {\n setShowREAInfoFill(false);\n }\n }, [creditTransferTypes]);\n\n const onSubmit = (newTransfer, saveAsDraft = false) => {\n delete newTransfer.amountCompare\n if (Number(watch('amount')) <= MAXIMUM_AMOUNT) {\n setMaxAmountValidate(false);\n const tenantId = get(props, 'tenant.id');\n const destAccountId = get(destAccount, 'id');\n const bankAccountId = get(state, 'data.bankAccount.id');\n\n if (newTransfer?.notes) {\n newTransfer.notes = JSON.stringify([{ note: newTransfer?.notes }]);\n }\n\n if (get(props, 'tenant.routingType') === 'office') {\n newTransfer = {\n ...newTransfer,\n office: {\n connect: {\n id: get(newTransfer, 'office.value'),\n },\n },\n };\n }\n if (get(props, 'tenant.routingType') === 'agent') {\n if (realtor && realtor.id.length === 24) {\n newTransfer = {\n ...newTransfer,\n realtor: {\n connect: {\n id: realtor.id,\n },\n },\n };\n } else {\n newTransfer = {\n ...newTransfer,\n realtor: {\n connect: {\n id: realtorID,\n },\n },\n };\n }\n } else if (realtor && realtor.id.length === 24) {\n newTransfer = {\n ...newTransfer,\n realtor: {\n connect: {\n id: realtor.id,\n },\n },\n };\n }\n\n if (isEmpty(tenantId))\n onSetError({\n active: true,\n messageError: 'Tenant not found, please check url',\n });\n if (isEmpty(destAccountId))\n onSetError({\n active: true,\n messageError: 'Destination account not found, please contact support',\n });\n if (isEmpty(bankAccountId))\n onSetError({\n active: true,\n messageError: 'Bank account not found, please select bank account',\n });\n if (\n !isEmpty(tenantId) &&\n !isEmpty(destAccountId) &&\n !isEmpty(bankAccountId)\n ) {\n const newTransferComplete = createDraftTransfer({\n props,\n destAccount,\n state,\n newTransfer,\n creditTransferTypes,\n transferFeeConfigData,\n realtorData,\n });\n\n if (transferId) {\n saveTransfer({\n variables: {\n id: props.transfer.id,\n transfer: newTransferComplete,\n },\n })\n .then(() => {\n const newUserAddress = {\n propertyAddress1: newTransfer.propertyAddress1,\n propertyAddress2: newTransfer.propertyAddress2,\n propertyState: newTransfer.propertyState,\n propertyCity: newTransfer.propertyCity,\n propertyZipcode: newTransfer.propertyZipcode,\n };\n\n updateClient({\n variables: {\n id: get(props, 'client.id'),\n client: newUserAddress,\n },\n });\n })\n .then(() => props.refetchTransfer())\n .then(() => {\n action({ transfer: newTransferComplete });\n if (saveAsDraft) {\n onClickGoToTransferHistory(props.history);\n } else {\n props.history.push(\n `/create-account/step-4?go_to_transfer=${transferId}`\n );\n }\n });\n } else {\n createTransfer({ variables: { transfer: newTransferComplete } })\n .then(response => {\n const transferId = get(response, 'data.createTransfer.id');\n action({ transfer: newTransferComplete });\n if (!saveAsDraft) {\n props.history.push(\n `/create-account/step-4?go_to_transfer=${transferId}`\n );\n } else {\n onClickGoToTransferHistory(props.history);\n }\n })\n .then(() => {\n const newUserAddress = {\n propertyAddress1: newTransfer.propertyAddress1,\n propertyAddress2: newTransfer.propertyAddress2,\n propertyState: newTransfer.propertyState,\n propertyCity: newTransfer.propertyCity,\n propertyZipcode: newTransfer.propertyZipcode,\n };\n\n updateClient({\n variables: {\n id: get(props, 'client.id'),\n client: newUserAddress,\n },\n });\n });\n }\n }\n } else {\n setMaxAmountValidate(true);\n }\n };\n\n return (\n <BoxContainer withDoubleBorder withLogButton>\n\n <Title />\n\n <form onSubmit={handleSubmit(e => onSubmit(e, false))}>\n <InfoTransfer />\n\n <FieldsInfoTransfer\n register={register}\n errors={errors}\n control={control}\n setValue={setValue}\n purposes={purposes}\n emdVisible={emdVisible}\n setFieldsEMDVisible={setFieldsEMDVisible}\n realtorData={realtorData}\n setRealtorData={setRealtorData}\n client={get(props, 'client')}\n showREAInfoFill={showREAInfoFill}\n />\n <InfoPropertyAddress />\n <FieldsInfoPropertyAddress\n register={register}\n errors={errors}\n setValue={setValue}\n transfer={props.transfer}\n control={control}\n />\n <InfoAmount />\n <FieldInfoAmount\n errors={errors}\n control={control}\n showAmountInfo={showAmountInfo}\n onShowAmountInfo={onShowAmountInfo}\n watch={watch}\n watchDocument={watchDocument}\n regDocument={regDocument}\n controlDocument={controlDocument}\n maxAmountValidate={maxAmountValidate}\n setMaxAmountValidate={setMaxAmountValidate}\n MAXIMUM_AMOUNT={MAXIMUM_AMOUNT}\n bankBalance={get(state, 'data.bankAccount.balance')}\n transferFeeConfigData={transferFeeConfigData}\n getValues={getValues}\n />\n <DestinationAccount\n title=\"Destination Account:\"\n logoURL={HeaderLogo}\n bankName={get(destAccount, 'bankName')}\n accountLastFourDigits={get(destAccount, 'accountLastFourDigits')}\n description={get(destAccount, 'bankDisplayName')}\n destAccountLogo={get(institutionLogo, 'logoURL')}\n tenantName={get(props, 'tenant.name')}\n address1={get(props, 'tenant.address1')}\n apartmentSuiteNumber={get(props, 'tenant.address2')}\n city={get(props, 'tenant.city')}\n state={get(props, 'tenant.state')}\n zipcode={get(props, 'tenant.zipcode')}\n />\n {get(props, 'tenant.routingType') === 'office' && (\n <FieldOfficeSelect\n control={control}\n errors={errors}\n tenantId={get(props, 'tenant.id')}\n setValue={setValue}\n labelInValue={false}\n />\n )}\n {get(props, 'tenant.routingType') === 'agent' && !realtor && (\n <RealtorSelect\n control={control}\n errors={errors}\n tenantId={get(props, 'tenant.id')}\n setValue={setValue}\n labelInValue={false}\n realtors={realtors}\n setRealtorID={setRealtorID}\n transfer={props}\n />\n )}\n <div className=\"create-account__footer-buttons create-account__mobile-transfer-footer-buttons\">\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n onClick={() => onClickBackButton(props.history)}\n noShadow\n type={BUTTON_TYPE.LIGHT_BLUE}\n >\n {'< Back'}\n </PaymintsButton>\n <PaymintsButton\n className=\"mr-4 create-account__transfer-action-button mobile__transfer-action-button\"\n htmlType=\"submit\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n disabled={loadingCreditTransferTypes}\n >\n Review\n </PaymintsButton>\n {/* <PaymintsButton\n className=\"create-account__save-come-back-button create-account__transfer-action-button\"\n onClick={handleSubmit(e => onSubmit(e, true))}\n noShadow\n type={BUTTON_TYPE.LINK}\n >\n {'Save & Come Back Later'}\n </PaymintsButton> */}\n {error.active && (\n <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n )}\n </div>\n\n </form>\n </BoxContainer>\n );\n};\n\nexport default withRouter(\n connect(state => ({}), {\n onSaveTransferDoc: saveTransferDoc,\n })(TransferDetailsPartners)\n);\n","import { useQuery } from '@apollo/react-hooks';\nimport { gql } from 'apollo-boost';\n\nconst GET_ALL_REALTORS_QUERY = gql`\nquery AllRealtors($where: RealtorWhereInput) {\n allRealtors(where: $where) {\n id\n email\n mobilePhone\n active\n firstName\n lastName\n landingPageURI\n headshotImageURL\n displayName\n displayDescription\n licenses\n qrCodeURL\n brokerage {\n name\n logoURL\n websiteURL\n officePhone\n }\n }\n}\n`;\n\nexport default function useAllRealtors(where) {\n const { loading, error, refetch, data } = useQuery(GET_ALL_REALTORS_QUERY, {\n variables: { where },\n fetchPolicy: 'no-cache',\n });\n return {\n loading,\n error,\n refetch,\n realtors: data ? data.allRealtors : undefined,\n };\n}\n","import React, { useEffect, useState } from 'react';\nimport get from 'lodash/get';\nimport split from 'lodash/split';\nimport { withRouter, Route, Switch, useHistory, Redirect } from 'react-router-dom';\nimport { StateMachineProvider, createStore } from 'little-state-machine';\nimport CreateAccountFirstStep from '../CreatePartnerAccountFirstStep/CreateAccountFirstStep';\nimport CreateAccountVerificationStep from '../CreateAccountVerificationStep/CreateAccountVerificationStep';\nimport CreateAccountSecondStep from '../CreateAccountSecondStep/CreateAccountSecondStep';\nimport TransferDetailsPartner from '../TransferDetailsPartner/TransferDetailsPartner';\nimport TransferSummary from '../TransferSummary/TransferSummary';\nimport TransferSuccess from '../TransferSuccess/TransferSuccess';\nimport AccountError from '../AccountError/AccountError';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport { useTransfer } from '../../utils/service/service_transfer_api';\nimport { getQueryVariable } from '../../utils/util';\nimport BankAccountSelection from '../BankAccountSelection/BankAccountSelection';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore, setRealtorStore } from '../../utils/util';\nimport { getItem, removeItem } from '../../utils/util';\nimport DocumentVerification from '../DocumentVerification/DocumentVerification';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport { getTenantIdentifier } from '../../utils/util';\nimport useAllTransferFeeConfigs from '../../hooks/useAllTransferFeeConfigs';\nimport useAllRealtors from '../../hooks/useAllRealtors';\n\n\ncreateStore({\n data: {},\n});\n\nconst CreateAccountWizard = props => {\n const history = useHistory();\n const { user } = getClientStore();\n const path = get(split(window.location.search, '?'), 1);\n //const clientId = getQueryVariable(path, \"client_id\") || \"\";\n\n const landingPageURI = props.history.location.pathname.split('/');\n const partnerURI = landingPageURI.pop() || landingPageURI.pop();\n\n const { realtors } = useAllRealtors({\n // landingPageURI: landingPageURI[2],\n landingPageURI: partnerURI,\n active: true\n });\n const realtor = realtors?.[0];\n\n // TODO: If no realtor, forward to home page -> /create-account\n setRealtorStore(realtor);\n\n props = {\n ...props,\n realtor: realtor,\n partnerURI: partnerURI\n }\n \n const transferId = getQueryVariable(path, 'go_to_transfer') || '';\n const mobile = user ? user.mobilePhone : null;\n const { client, refetch, refetch: refetchNewClient } = useClientByPhone(\n mobile\n );\n \n const { loadingSearchTransfer, transfer, refetchTransfer } = useTransfer(\n transferId\n );\n\n const { value } = getItem('login_user');\n const { sensitiveData } = useSensitiveData();\n\n // here's where we retrieve the transfer fee configuration for the\n // tenant in question\n const { data: transferFeeConfigData } = useAllTransferFeeConfigs(\n getTenantIdentifier(window.location.hostname)\n );\n\n useEffect(\n () => {\n if (user) {\n\n // if (get(sensitiveData, 'SSN') && get(sensitiveData, 'DOB')) {\n // console.log('value', value);\n // if (!value) {\n // props.history.push(\n // `/create-account/step-select-account${get(\n // props.history,\n // 'location.search'\n // )}`\n // );\n // } else {\n // removeItem('login_user');\n // props.history.push(\n // `/create-account/step-select-account${get(\n // props.history,\n // 'location.search'\n // )}`\n // );\n // }\n // }\n }\n },\n /* eslint-disable */ [client, realtor, sensitiveData, props.history, refetch]\n );\n\n if (loadingSearchTransfer) {\n return <SpinnerLoader />;\n }\n\n if (transferId && !transfer) {\n refetchTransfer({\n id: transferId,\n });\n }\n\n return (\n <StateMachineProvider>\n <Switch>\n <Route\n path=\"/partner\"\n render={() => (\n <CreateAccountFirstStep\n user={user}\n client={user ? client : Object.assign({})}\n beforeContinue={refetch}\n refetchNewClient={refetchNewClient}\n realtor={realtor}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/account-verification\"\n render={() => ( \n <CreateAccountVerificationStep\n user={user}\n client={user ? client : Object.assign({})}\n beforeContinue={refetch}\n refetchNewClient={refetchNewClient}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-2\"\n render={() => (\n <CreateAccountSecondStep\n user={user}\n client={client}\n refetch={refetch}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-select-account\"\n render={() => (\n <BankAccountSelection\n user={user}\n client={client}\n transfer={transfer}\n refetchTransfer={refetchTransfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-3\"\n render={() => (\n <TransferDetailsPartner\n user={user}\n client={client}\n transfer={transferId ? transfer : null}\n refetchTransfer={refetchTransfer}\n refetch={refetch}\n transferFeeConfigData={transferFeeConfigData}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/step-4\"\n render={() => (\n <TransferSummary\n user={user}\n transfer={transfer}\n client={client}\n refetchTransfer={refetchTransfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/success\"\n render={() => (\n <TransferSuccess\n user={user}\n client={client}\n transfer={transfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/error\"\n render={() => (\n <AccountError\n user={user}\n client={client}\n transfer={transfer}\n {...props}\n />\n )}\n />\n <Route\n exact\n path=\"/create-account/verification\"\n render={() => (\n <DocumentVerification\n user={user}\n client={client}\n transfer={transfer}\n {...props}\n />\n )}\n />\n </Switch>\n </StateMachineProvider>\n );\n};\n\nexport default withRouter(CreateAccountWizard);\n","/*\n * src/components/AlertBanner/index.js\n * Description: Generic alert banner with success, warn, error, and info states\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState } from \"react\";\n\nimport css from \"./AlertBanner.module.css\";\n\nconst AlertBanner = ({ alertType = \"info\", text, show = true }) => {\n const [visible, setVisible] = useState(show);\n\n return (\n <div className={css.alert} style={{ display: visible ? \"block\" : \"none\" }}>\n <div className={css[alertType]}>\n <div className={css.text}>{text}</div>\n <div\n className={css.closeIcon}\n role=\"button\"\n tabIndex=\"0\"\n onClick={() => setVisible(false)}\n >\n <span className={css[alertType]}>X</span>\n </div>\n </div>\n </div>\n );\n};\n\nexport default AlertBanner;\n","import { useQuery } from '@apollo/react-hooks';\r\nimport { gql } from 'apollo-boost';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport isNil from 'lodash/isNil';\r\n\r\nconst GET_TRANSACTIONS_SORTED_QUERY = gql`\r\n query allTransfersSorted($where: TransferWhereInput!) {\r\n allTransfers(where: $where, sortBy: createdAt_DESC) {\r\n id\r\n firstName\r\n middleName\r\n lastName\r\n otherIndividuals\r\n email\r\n mobilePhone\r\n propertyAddress1\r\n propertyAddress2\r\n propertyCity\r\n propertyState\r\n propertyZipcode\r\n amount\r\n fee\r\n purpose\r\n expectedClosingDate\r\n sellerName\r\n notes\r\n emailMessage\r\n status\r\n disbursement\r\n active\r\n createdAt\r\n tenant {\r\n id\r\n name\r\n address1\r\n address2\r\n city\r\n state\r\n zipcode\r\n }\r\n client {\r\n id\r\n firstName\r\n lastName\r\n address1\r\n address2\r\n city\r\n state\r\n zipcode\r\n propertyAddress1\r\n propertyAddress2\r\n propertyCity\r\n propertyState\r\n propertyZipcode\r\n }\r\n transferType {\r\n id\r\n name\r\n isDebit\r\n isCredit\r\n }\r\n sourceBankAccount {\r\n id\r\n bankName\r\n description\r\n accountNumber\r\n accountLastFourDigits\r\n bankDisplayName\r\n active\r\n client {\r\n id\r\n }\r\n institutionCode\r\n updatedAt\r\n }\r\n destBankAccount {\r\n id\r\n bankName\r\n description\r\n accountNumber\r\n accountLastFourDigits\r\n bankDisplayName\r\n active\r\n client {\r\n id\r\n }\r\n institutionCode\r\n updatedAt\r\n }\r\n agent {\r\n id\r\n firstName\r\n lastName\r\n email\r\n }\r\n realtor {\r\n id\r\n firstName\r\n lastName\r\n email\r\n }\r\n updatedAt\r\n }\r\n }\r\n`;\r\n\r\n// PAYAPP-906: Exclude vendor disbursements from the Client UI\r\nexport function useAllTransfersSorted(clientID) {\r\n const id = isNil(clientID) || isEmpty(clientID) ? null : clientID;\r\n const { loading, error, data, refetch } = useQuery(\r\n GET_TRANSACTIONS_SORTED_QUERY,\r\n {\r\n variables: {\r\n where: {\r\n client: { id },\r\n status_not_in: ['created', 'rejected', 'awaiting approval'],\r\n OR: [\r\n { transferType: { name: 'Client Disbursement' } },\r\n { transferType: { name: 'Client Transfer' } },\r\n { transferType_is_null: true },\r\n ],\r\n },\r\n },\r\n }\r\n );\r\n\r\n // the filter is a hack because name_not_i excludes BOTH \"Vendor Disbursement\" and null (no bueno)\r\n return {\r\n loadingSearchTransfer: loading,\r\n error,\r\n refetchTransfers: refetch,\r\n transfers: data ? data.allTransfers : undefined,\r\n };\r\n}\r\n","/*\n * src/utils/service/service_pdf-download.js\n * Description: PDF ReadableStream download utilities\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport axios from \"axios\";\n\n/**\n * Just the promise\n * @param {*} url\n */\nexport const downloadPdfPromise = (url) => {\n return axios({\n method: \"get\",\n responseType: \"blob\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url,\n });\n};\n\n/**\n * Promise + resolve\n * @param {*} url\n */\nconst downloadPdf = (url) =>\n axios({\n method: \"get\",\n responseType: \"blob\", // <--- this is key\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${process.env.REACT_APP_AUTH_TOKEN}`,\n },\n url,\n }).then((response) => response.data);\n\nexport default downloadPdf;\n","/*\n * src/components/TransferHistory/TransferDocuments.jsx\n * Description: Downloadable documentation for a particular transfer\n * Copyright (c) 2021\n */\nimport React from \"react\";\n\nimport { shouldHideDocuments } from \"../../utils/validations\";\nimport { asyncWrapper } from \"../../utils/util\";\nimport downloadPdfPromise from \"../../utils/service/service_pdf-download\";\n\nconst TransferDocuments = ({ documentData, transferId, status }) => {\n const escrowAgreements = documentData.filter(\n (f) => f?.transfer?.id === transferId && f.type === \"escrow agreement\"\n );\n const receipts = documentData.filter(\n (f) => f?.transfer?.id === transferId && f.type === \"receipt\"\n );\n\n /**\n * PDF stream reader / download functionality\n * @param {*} pdfUrl String\n */\n const openPdf = async (pdfUrl) => {\n const [err, data] = await asyncWrapper(downloadPdfPromise(pdfUrl));\n\n if (err) {\n return;\n }\n\n const file = new Blob([data], { type: \"application/pdf\" });\n const fileURL = URL.createObjectURL(file);\n window.open(fileURL);\n };\n\n return (\n <React.Fragment>\n {escrowAgreements.length > 0 &&\n !shouldHideDocuments(status) &&\n escrowAgreements.map((m) => {\n return (\n <div\n className=\"transfer-history__item-pdf\"\n key={m.id}\n style={{ marginBottom: \"5px\" }}\n >\n <i\n className=\"far fa-file-pdf transfer-history__pdf-icon\"\n style={{ marginRight: \"5px\" }}\n />\n <a\n href={m.fileURL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link\"\n >\n View Escrow Agreement\n </a>\n </div>\n );\n })}\n {receipts.length > 0 &&\n !shouldHideDocuments(status) &&\n receipts.map((m) => {\n return (\n <div\n className=\"transfer-history__item-pdf\"\n key={m.id}\n onClick={() => openPdf(m.fileURL)}\n style={{ marginBottom: \"5px\" }}\n >\n <i\n className=\"far fa-file-pdf transfer-history__pdf-icon\"\n style={{ marginRight: \"5px\" }}\n />\n <a\n href={m.fileURL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link\"\n >\n View Receipt\n </a>\n </div>\n );\n })}\n </React.Fragment>\n );\n};\n\nexport default TransferDocuments;\n","/*\n * src/components/TransferHistory/InboundTransfer.jsx\n * Description: This is a client disbursement\n */\nimport React from 'react';\nimport { Row, Col } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport format from 'dateformat';\nimport {\n PaymintsNumberFormat,\n PaymintsHarveyBall,\n BALL_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport FormatAddress from '../FormatAddress/FormatAddress';\nimport { formatFromDisplay, formatToDisplay } from '../../utils/util';\n\nimport TransferDocuments from './TransferDocuments';\n\nimport './refactor.css';\n\n/**\n * A disbursement\n */\nconst InboundTransfer = ({ transfer, clientDocuments }) => {\n const dateFormat1 = 'mm/dd/yyyy';\n const dateFormat2 = 'hh:MM TT';\n\n /**\n * Determine if a transfer has valid documentation\n * @returns\n */\n const transferHasDocumentation = () => {\n if (clientDocuments && clientDocuments.length > 0) {\n return (\n clientDocuments.filter(f => f?.transfer?.id === transfer.id).length > 0\n );\n }\n return false;\n };\n\n /**\n * @function\n * @param {*} option\n * @returns\n */\n const getStatusType = option => {\n switch (option.toLowerCase().trim()) {\n case 'draft':\n return BALL_TYPE.INACTIVE;\n case 'pending':\n return BALL_TYPE.PENDING;\n case 'submitted':\n return BALL_TYPE.ACTIVE;\n case 'sent':\n return BALL_TYPE.SENT;\n case 'viewed':\n return BALL_TYPE.VIEWED;\n case 'completed':\n return BALL_TYPE.COMPLETED;\n case 'cancelled':\n return BALL_TYPE.CANCELLED;\n case 'error':\n return BALL_TYPE.ERROR;\n default:\n return BALL_TYPE.INACTIVE;\n }\n };\n\n return (\n <div className=\"transferWrapper\">\n <div className=\"topWrapper\">\n <Row>\n <Col className=\"columnHeading\">Date/Time</Col>\n <Col className=\"columnHeading\">From</Col>\n <Col className=\"columnHeading\">To</Col>\n <Col className=\"columnHeading\">Amount</Col>\n <Col />\n <Col className=\"columnHeading\">Status</Col>\n </Row>\n <Row>\n <Col className=\"columnValue\">\n <div\n dangerouslySetInnerHTML={{\n __html: `${format(\n transfer?.createdAt || '',\n dateFormat1\n )}<br/>${format(transfer?.createdAt || '', dateFormat2)}`,\n }}\n />\n </Col>\n <Col className=\"columnValue\">\n <div\n dangerouslySetInnerHTML={{\n __html: formatFromDisplay(transfer),\n }}\n />\n </Col>\n <Col className=\"columnValue\">\n <div\n dangerouslySetInnerHTML={{\n __html: formatToDisplay(transfer),\n }}\n />\n </Col>\n <Col className=\"columnValue\">\n <PaymintsNumberFormat\n className=\"text-success\"\n number={transfer?.amount}\n decimals={2}\n format=\"currency\"\n />\n </Col>\n <Col />\n <Col className=\"columnValue initCaps\">\n <PaymintsHarveyBall type={getStatusType(transfer?.status)}>\n {transfer?.status}\n </PaymintsHarveyBall>\n </Col>\n </Row>\n </div>\n\n {/* related property / actions / documents */}\n <div className=\"bottomWrapper\">\n <Row>\n <Col className=\"columnHeading\">\n Property Address Related To The Transfer\n </Col>\n <Col\n className=\"columnHeading\"\n style={{ display: transfer?.status === 'sent' ? 'block' : 'none' }}\n >\n Actions\n </Col>\n <Col\n className=\"columnHeading\"\n style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n >\n Documents\n </Col>\n </Row>\n <Row>\n <Col>\n <FormatAddress\n streetNumberName={transfer?.propertyAddress1 || ''}\n apartmentSuiteNumber={transfer?.propertyAddress2 || ''}\n city={transfer?.propertyCity || ''}\n state={transfer?.propertyState || ''}\n zipcode={transfer?.propertyZipcode || ''}\n />\n </Col>\n <Col\n style={{ display: transfer?.status === 'sent' ? 'block' : 'none' }}\n >\n <div>\n <Link\n id=\"sent\"\n to={`/create-account/step-select-account?go_to_transfer=${transfer?.id}?disbursement=select-bank`}\n >\n <button className=\"accept-button\">ACCEPT PAYMENT</button>\n </Link>\n </div>\n </Col>\n <Col\n style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n >\n <TransferDocuments\n documentData={clientDocuments}\n transferId={transfer?.id}\n status={transfer?.status}\n />\n </Col>\n </Row>\n </div>\n </div>\n );\n};\n\nexport default InboundTransfer;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\n\nimport \"./custom-tooltip.css\";\n\nexport default class CustomTooltip extends Component {\n render = () => {\n const tooltipContent = (\n <Tooltip className={`paymints-tooltip--${this.props.type}`}>\n {this.props.popoverText}\n </Tooltip>\n );\n\n return (\n <OverlayTrigger placement=\"top\" overlay={tooltipContent}>\n {this.props.content}\n </OverlayTrigger>\n );\n };\n}\n\nCustomTooltip.propTypes = {\n popoverText: PropTypes.any,\n content: PropTypes.any,\n type: PropTypes.oneOf([\"default\", \"blue\"]),\n};\n","/*\n * src/components/TransferHistory/TransferEditTooltip.jsx\n * Description: A simple tooltip component for editing a draft\n * Copyright (c) 2021 PredictiveUX\n */\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport CustomTooltip from \"../CustomTooltip/CustomTooltip\";\n\nconst TransferEditTooltip = ({\n transferId,\n status,\n popoverText = \"You can continue editing the transfer\",\n}) => {\n const content = (\n <Link\n className=\"transfer-history__link-draft\"\n id=\"draft\"\n to={`/create-account/step-select-account?go_to_transfer=${transferId}`}\n >\n {status}\n </Link>\n );\n\n return (\n <CustomTooltip\n popoverText={popoverText}\n content={content}\n type=\"blue\"\n ></CustomTooltip>\n );\n};\n\nexport default TransferEditTooltip;\n","/*\n * src/components/TransferHistory/OutboundTransfer.jsx\n * Description: This is a client disbursement\n */\nimport React from 'react';\nimport { Row, Col } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport format from 'dateformat';\nimport {\n PaymintsNumberFormat,\n PaymintsHarveyBall,\n BALL_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport FormatAddress from '../FormatAddress/FormatAddress';\nimport { formatFromDisplay, formatToDisplay } from '../../utils/util';\n\nimport TransferDocuments from './TransferDocuments';\nimport TransferEditTooltip from './TransferEditTooltip';\n\nimport './refactor.css';\n\n/**\n * A client -> tenant transfer\n */\nconst OutboundTransfer = ({ transfer, clientDocuments }) => {\n const dateFormat1 = 'mm/dd/yyyy';\n const dateFormat2 = 'hh:MM TT';\n\n /**\n * Determine if a transfer has valid documentation\n * @returns\n */\n const transferHasDocumentation = () => {\n if (clientDocuments && clientDocuments.length > 0) {\n return (\n clientDocuments.filter(f => f?.transfer?.id === transfer.id).length > 0\n );\n }\n return false;\n };\n\n /**\n * @function\n * @param {*} option\n * @returns\n */\n const getStatusType = option => {\n switch (option.toLowerCase().trim()) {\n case 'draft':\n return BALL_TYPE.INACTIVE;\n case 'pending':\n return BALL_TYPE.PENDING;\n case 'submitted':\n return BALL_TYPE.ACTIVE;\n case 'sent':\n return BALL_TYPE.SENT;\n case 'viewed':\n return BALL_TYPE.VIEWED;\n case 'completed':\n return BALL_TYPE.COMPLETED;\n case 'cancelled':\n return BALL_TYPE.CANCELLED;\n case 'error':\n return BALL_TYPE.ERROR;\n default:\n return BALL_TYPE.INACTIVE;\n }\n };\n\n return (\n <div className=\"transferWrapper\">\n <div className=\"topWrapper\">\n <Row>\n <Col className=\"columnHeading\">Date/Time</Col>\n <Col className=\"columnHeading\">From</Col>\n <Col className=\"columnHeading\">To</Col>\n <Col className=\"columnHeading\">Amount</Col>\n <Col className=\"columnHeading\">Fee</Col>\n <Col className=\"columnHeading\">Status</Col>\n </Row>\n <Row>\n <Col className=\"columnValue\">\n <div\n dangerouslySetInnerHTML={{\n __html: `${format(\n transfer?.createdAt || '',\n dateFormat1\n )}<br/>${format(transfer?.createdAt || '', dateFormat2)}`,\n }}\n />\n </Col>\n <Col className=\"columnValue\">\n <div\n dangerouslySetInnerHTML={{\n __html: formatFromDisplay(transfer),\n }}\n />\n </Col>\n <Col className=\"columnValue\">\n <div\n dangerouslySetInnerHTML={{\n __html: formatToDisplay(transfer),\n }}\n />\n </Col>\n <Col className=\"columnValue\">\n (-\n <PaymintsNumberFormat\n className=\"text-dark\"\n number={transfer?.amount}\n decimals={2}\n format=\"currency\"\n />\n )\n </Col>\n <Col className=\"columnValue\">\n <div style={{ display: transfer?.fee ? 'block' : 'none' }}>\n (-\n <PaymintsNumberFormat\n className=\"text-dark\"\n number={transfer?.fee}\n decimals={2}\n format=\"currency\"\n />\n )\n </div>\n <div style={{ display: transfer?.fee ? 'none' : 'block' }}>--</div>\n </Col>\n <Col className=\"columnValue initCaps\">\n <PaymintsHarveyBall type={getStatusType(transfer?.status)}>\n {transfer?.status === 'Requested' ||\n transfer?.status === 'viewed' ? (\n <TransferEditTooltip\n transferId={transfer?.id}\n status={transfer?.status}\n />\n ) : (\n transfer?.status || ''\n )}\n </PaymintsHarveyBall>\n </Col>\n </Row>\n </div>\n\n {/* related property / actions / documents */}\n <div className=\"bottomWrapper\">\n <Row>\n <Col xs={6} className=\"columnHeading\">\n Property Address Related To The Transfer\n </Col>\n <Col\n xs={6}\n className=\"columnHeading\"\n style={{\n display: transfer?.status === 'Requested' ? 'block' : 'none',\n }}\n >\n Actions\n </Col>\n <Col\n xs={6}\n className=\"columnHeading\"\n style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n >\n Documents\n </Col>\n </Row>\n <Row>\n <Col xs={6}>\n <FormatAddress\n streetNumberName={transfer?.propertyAddress1 || ''}\n apartmentSuiteNumber={transfer?.propertyAddress2 || ''}\n city={transfer?.propertyCity || ''}\n state={transfer?.propertyState || ''}\n zipcode={transfer?.propertyZipcode || ''}\n />\n </Col>\n <Col\n xs={6}\n style={{\n display: transfer?.status === 'sent' ? 'block' : 'none',\n }}\n >\n <div>\n <Link\n id=\"sent\"\n to={`/create-account/step-select-account?go_to_transfer=${transfer?.id}?disbursement=select-bank`}\n >\n <button className=\"accept-button\">ACCEPT PAYMENT</button>\n </Link>\n </div>\n </Col>\n\n <Col\n xs={6}\n style={{\n display: transfer?.status === 'Requested' ? 'block' : 'none',\n }}\n >\n <div>\n <Link\n id=\"sent\"\n to={`/create-account/step-select-account?go_to_transfer=${transfer?.id}`}\n >\n <button\n className=\"accept-button\"\n style={{ alignItems: 'center' }}\n >\n SEND FUNDS\n </button>\n </Link>\n <div\n style={{ color: 'gray', fontSize: '13px', padding: '5px 0px' }}\n >{`Requested by ${transfer?.agent?.firstName} ${transfer?.agent?.lastName} (${transfer?.agent?.email})`}</div>\n </div>\n </Col>\n <Col\n xs={6}\n style={{ display: transferHasDocumentation() ? 'block' : 'none' }}\n >\n <TransferDocuments\n documentData={clientDocuments}\n transferId={transfer?.id}\n status={transfer?.status}\n />\n </Col>\n </Row>\n <Row>\n <Col\n xs={6}\n className=\"columnHeading\"\n style={{\n display: transfer?.realtor ? 'block' : 'none',\n }}\n >\n Real Estate Agent\n </Col>\n </Row>\n <Row>\n <div\n style={{\n display: transfer?.realtor ? 'block' : 'none',\n padding: '5px 15px',\n }}\n >{`${transfer?.realtor?.firstName} ${transfer?.realtor?.lastName} (${transfer?.realtor?.email})`}</div>\n </Row>\n </div>\n </div>\n );\n};\n\nexport default OutboundTransfer;\n","/*\n * src/components/TransferHistory/TransferHistoryListing.jsx\n * Description: This wrapper component determines inbound (disbursement) or outbound (client -> tenant) transfer\n */\nimport React from 'react';\n\nimport InboundTransfer from './InboundTransfer';\nimport OutboundTransfer from './OutboundTransfer';\n\nconst TransferHistoryListing = ({ transfers, clientDocuments, display }) => {\n if (display) {\n return (\n <>\n {transfers.map(t => {\n return t?.disbursement ? (\n <InboundTransfer\n key={t.id}\n transfer={t}\n clientDocuments={clientDocuments}\n />\n ) : (\n <OutboundTransfer\n key={t.id}\n transfer={t}\n clientDocuments={clientDocuments}\n />\n );\n })}\n </>\n );\n } else {\n return null;\n }\n};\n\nexport default TransferHistoryListing;\n","/*\n * MobileHistory.jsx\n * Description: Transaction history listing for mobile\n */\nimport React from 'react';\nimport { Link } from 'react-router-dom';\nimport get from 'lodash/get';\nimport find from 'lodash/find';\nimport filter from 'lodash/filter';\nimport format from 'dateformat';\nimport {\n PaymintsNumberFormat,\n PaymintsButton,\n PaymintsHarveyBall,\n BUTTON_TYPE,\n BALL_TYPE,\n} from 'paymints-address-autocomplete-field';\n\nimport downloadPdfPromise from '../../../utils/service/service_pdf-download';\nimport { shouldHideDocuments } from '../../../utils/validations';\nimport {\n asyncWrapper,\n formatFromDisplay,\n formatToDisplay,\n} from '../../../utils/util';\n\nimport './MobileHistory.css';\n\n/**\n * @function\n * PDF opener\n * @param {*} url\n */\nconst openPdf = async pdfUrl => {\n const [err, data] = await asyncWrapper(downloadPdfPromise(pdfUrl));\n\n if (err) {\n return;\n }\n\n const file = new Blob([data], { type: 'application/pdf' });\n const fileURL = URL.createObjectURL(file);\n window.open(fileURL);\n};\n\n/**\n * @TODO move to isolated component and basically refactor\n * @param {*} param0\n */\nconst DocumentSection = ({ transfer, clientDocuments, hidden }) => {\n const id = get(transfer, 'id');\n\n const documents = filter(\n clientDocuments,\n doc => get(doc, 'transfer.id') === id\n );\n\n const receipt = get(find(documents, ['type', 'receipt']), 'fileURL');\n\n const escrowAgreement = get(\n find(documents, ['type', 'escrow agreement']),\n 'fileURL'\n );\n\n if (documents.length === 0) {\n return null;\n }\n\n return (\n <div hidden={hidden}>\n <div className=\"document-section\">\n {escrowAgreement || receipt ? (\n <div className=\"mobileSec bgSec clearfix\">\n <p className=\"document-header\">DOCUMENTS</p>\n <div className=\"contentSec_details f-left\">\n {escrowAgreement ? (\n <p>\n <i className=\"far fa-file-pdf transfer-history__pdf-icon\" />\n <a\n href={escrowAgreement}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link\"\n >\n View Escrow Agreement\n </a>\n </p>\n ) : null}\n {receipt ? (\n <p onClick={() => openPdf(receipt)}>\n <i className=\"far fa-file-pdf transfer-history__pdf-icon\" />\n <a\n href=\"#\"\n rel=\"noopener noreferrer\"\n className=\"paymints__link\"\n >\n View Receipt\n </a>\n </p>\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n};\n\n/**\n * @TODO refactor to separate component...no internal component definitions\n * Don't understand why it's called UpdateUI when it's a mobile transfer card block\n * @param {*} param0\n */\nconst UpdateUI = ({ transfer, getStatusType, clientDocuments, tenant }) => {\n const id = get(transfer, 'id');\n const status = get(transfer, 'status');\n const dateFormat = 'mm/dd/yyyy hh:MM TT';\n const updatedAt = format(get(transfer, 'updatedAt'), dateFormat);\n const createdAt = format(get(transfer, 'createdAt'), dateFormat);\n const propertyAddress1 = get(transfer, 'propertyAddress1');\n const propertyAddress2 = get(transfer, 'propertyAddress2');\n const propertyCity = get(transfer, 'propertyCity');\n const propertyState = get(transfer, 'propertyState');\n const propertyZipcode = get(transfer, 'propertyZipcode');\n const amount = get(transfer, 'amount');\n const disbursement = get(transfer, 'disbursement');\n\n return (\n <>\n {disbursement && status === 'draft' ? null : (\n <>\n {!disbursement ? (\n <div className=\"transfer-card\">\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n marginBottom: '6px',\n }}\n >\n <PaymintsHarveyBall type={getStatusType(status)} />\n <div\n className=\"transfer-status\"\n style={{ padding: '0', margin: '4px 5px 0 0 ' }}\n >\n {status}\n </div>\n </div>\n\n {/* <p className=\"transfer-status\">{status}</p> */}\n <div className=\"flex-container\">\n <div className=\"transfer-details\">\n {/* Date/Time */}\n <span className=\"for\">\n <b>Date/Time</b>\n </span>\n <p className=\"date-time\">{createdAt}</p>\n {/* FROM */}\n <span className=\"for\">\n <b>From</b>\n </span>\n <p\n className=\"transfer-source-bank\"\n dangerouslySetInnerHTML={{\n __html: formatFromDisplay(transfer, 'text'),\n }}\n />\n <p className=\"date-time\">Submitted {createdAt}</p>\n\n <span className=\"for\">\n <b>Amount</b>\n </span>\n <p className=\"transfer-amount\">\n {!disbursement ? (\n <>\n (-\n <PaymintsNumberFormat\n className=\"text-dark\"\n number={amount}\n decimals={2}\n format=\"currency\"\n />\n )\n </>\n ) : (\n <PaymintsNumberFormat\n className=\"text-success\"\n number={amount}\n decimals={2}\n format=\"currency\"\n />\n )}\n </p>\n\n {/* FEE */}\n <div\n style={{\n marginTop: '5px',\n display: transfer?.fee ? 'block' : 'none',\n }}\n >\n <span className=\"for\">\n <b>Fee</b>\n </span>\n <p className=\"transfer-amount\">\n (-\n <PaymintsNumberFormat\n className=\"text-dark\"\n number={transfer?.fee}\n decimals={2}\n format=\"currency\"\n />\n )\n </p>\n </div>\n\n {/* TO */}\n <div className=\"transfer-parties\">\n <p>\n <span className=\"for\">To</span>\n <br />\n {formatToDisplay(transfer, 'text')}\n </p>\n <p>\n <span className=\"for\">Property Address</span>\n <br />\n {propertyAddress1}\n {propertyAddress2 ? (\n <>\n <br />\n {propertyAddress2}\n </>\n ) : (\n ''\n )}\n <br />\n {propertyCity}, {propertyState} {propertyZipcode}\n </p>\n <p>\n {status === 'sent' && transfer?.disbursement ? (\n <PaymintsButton\n htmlType=\"submit\"\n className=\"mr-4 mt-3 create-account__transfer-action-button\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n <Link\n id=\"sent\"\n to={`/create-account/step-select-account?go_to_transfer=${id}?disbursement=select-bank`}\n >\n Accept Payment\n </Link>\n </PaymintsButton>\n ) : null}\n </p>\n </div>\n </div>\n </div>\n <DocumentSection\n hidden={shouldHideDocuments(status)}\n transfer={transfer}\n clientDocuments={clientDocuments}\n />\n </div>\n ) : (\n <div className=\"transfer-card\">\n <div style={{ display: 'flex', alignItems: 'end' }}>\n <PaymintsHarveyBall type={getStatusType(status)} />\n <div className=\"transfer-status\">{status}</div>\n </div>\n <div className=\"flex-container\">\n <div className=\"transfer-details\">\n <div className=\"transfer-parties\">\n {/* FROM */}\n <p>\n <span className=\"for\">From</span>\n <br />\n {formatFromDisplay(transfer, 'text')}\n </p>\n <p className=\"date-time\">Submitted {updatedAt}</p>\n {/* TO */}\n <div>\n <span className=\"for\">To</span>\n <p\n className=\"transfer-source-bank\"\n dangerouslySetInnerHTML={{\n __html: formatToDisplay(transfer, 'text'),\n }}\n />\n <p className=\"transfer-amount\">\n {!disbursement ? '-' : null}\n <PaymintsNumberFormat\n className={`${\n disbursement ? 'text-success' : 'text-dark'\n }`}\n number={amount}\n decimal={2}\n format=\"currency\"\n />\n </p>\n <span className=\"for\">Property Address</span>\n <br />\n {propertyAddress1}\n {propertyAddress2 ? (\n <>\n <br />\n {propertyAddress2}\n </>\n ) : (\n ''\n )}\n <br />\n {propertyCity}, {propertyState} {propertyZipcode}\n </div>\n <p>\n {status === 'sent' && transfer?.disbursement ? (\n <PaymintsButton\n htmlType=\"submit\"\n className=\"mr-4 mt-3 create-account__transfer-action-button\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n <Link\n id=\"sent\"\n to={`/create-account/step-select-account?go_to_transfer=${id}?disbursement=select-bank`}\n >\n Accept Payment\n </Link>\n </PaymintsButton>\n ) : null}\n </p>\n </div>\n </div>\n </div>\n <DocumentSection\n hidden={shouldHideDocuments(status)}\n transfer={transfer}\n clientDocuments={clientDocuments}\n />\n </div>\n )}\n </>\n )}\n </>\n );\n};\n\nexport default function MobileHistory({\n transfers,\n institutionsLogo,\n clientDocuments,\n tenant,\n}) {\n /**\n * @function\n * @param {*} option\n * @returns\n */\n const getStatusType = option => {\n switch (option.toLowerCase().trim()) {\n case 'draft':\n return BALL_TYPE.INACTIVE;\n case 'pending':\n return BALL_TYPE.PENDING;\n case 'submitted':\n return BALL_TYPE.ACTIVE;\n case 'sent':\n return BALL_TYPE.SENT;\n case 'viewed':\n return BALL_TYPE.VIEWED;\n case 'completed':\n return BALL_TYPE.COMPLETED;\n case 'cancelled':\n return BALL_TYPE.CANCELLED;\n case 'error':\n return BALL_TYPE.ERROR;\n default:\n return BALL_TYPE.INACTIVE;\n }\n };\n\n const transfersData = transfers || [];\n const transferCards = (transfers || []).map(transfer => (\n <React.Fragment key={transfer.id}>\n <UpdateUI\n key={get(transfer, 'id')}\n transfer={transfer}\n institutionsLogo={institutionsLogo}\n getStatusType={getStatusType}\n clientDocuments={clientDocuments}\n tenant={tenant}\n />\n </React.Fragment>\n ));\n return (\n <div className=\"mobile-history d-block d-lg-none d-xl-none\">\n {transfersData.length ? (\n transferCards\n ) : (\n <p className=\"transfer-history__no-data\">\n You have no pending or completed transfers, select the “+” button to\n start a transfer.\n </p>\n )}\n </div>\n );\n}\n","/*\n * src/components/TransferHistory/TransferHistory.jsx\n * Description: Listing out transfers\n * Copyright (c) 2021 PredictiveUX\n */\nimport React, { useState, useEffect } from 'react';\nimport { withRouter, Link } from 'react-router-dom';\nimport get from 'lodash/get';\nimport map from 'lodash/map';\nimport size from 'lodash/size';\nimport { PaymintsIconButton } from 'paymints-address-autocomplete-field';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport {\n useClientByPhone,\n useAllClientDocuments,\n} from '../../utils/service/service_user_api';\nimport AlertBanner from '../AlertBanner/';\nimport { useAllTransfersSorted } from '../../hooks/useAllTransfersSorted';\n// import useAllTransferArchives from '../../hooks/useAllTransferArchives';\nimport { useInstitutionLogoOR } from '../../utils/service/service_institution_logo';\nimport ContentModal from '../ContentModal/ContentModal';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport { getClientStore } from '../../utils/util';\n\nimport TransferHistoryListing from './TransferHistoryListing';\nimport MobileHistory from './MobileHistory/MobileHistory';\nimport './transferHistory.css';\n\nconst buildCancelEditError = () => (\n <div className=\"transfer-history__modal\">\n <div className=\"transfer-history__modal-info\">\n The transfer cannot be edited\n </div>\n </div>\n);\n\n/**\n * The primary component\n * @param {*} props\n * @returns\n */\nconst TransferHistory = props => {\n // local state\n const [seeMoreInfo, updateSeeMoreInfo] = useState([]);\n\n const [transfers, setTransfers]= useState([])\n // get client information\n const { user } = getClientStore();\n const { loadingSearch, client } = useClientByPhone(user?.mobilePhone || null);\n const clientID = get(client, 'id');\n\n // retrieve transfer information\n\n const {\n loadingSearchTransfer,\n transfers: transfersNew,\n refetchTransfers,\n } = useAllTransfersSorted(clientID);\n\n // retrieve transfer archive information\n\n // const {\n // transfers: transfersArchive,\n // loadingTransfersArchive\n // } = useAllTransferArchives();\n\n \n \n\n // retrieve client documentation\n const { clientDocuments } = useAllClientDocuments(clientID);\n\n // unique list of bank accounts codes\n let bankAccountCodes = [];\n let escrowBankAccountCodes = [];\n if (transfers && transfers.length > 0) {\n bankAccountCodes = [\n ...new Set(\n transfers.map(f => f?.sourceBankAccount?.institutionCode).filter(f => f)\n ),\n ];\n\n escrowBankAccountCodes = [\n ...new Set(\n transfers.map(f => f?.escrowBankAccount?.institutionCode).filter(f => f)\n ),\n ];\n }\n\n // combine them\n const allCodes = [...bankAccountCodes, ...escrowBankAccountCodes].map(m => {\n return {\n institutionCode: m,\n };\n });\n\n const { institutionsLogo } = useInstitutionLogoOR(\n size(allCodes) > 0 ? allCodes : []\n );\n\n const [showModal, setShow] = useState(false);\n const tenant = get(props, 'tenant');\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const nav = document.querySelector('.menu-nav-bar__grey-bar');\n if (!nav) window.location.reload();\n\n /**\n * @function\n */\n const alertBannerText = () => {\n if (transfers) {\n return `You Have ${\n transfers.filter(f => f.status === 'sent').length\n } Transfers Waiting for You!`;\n }\n return '';\n };\n\n /**\n * @function\n */\n const alertBannerShouldBeVisible = () => {\n if (transfers && transfers.length > 0) {\n return transfers.filter(f => f.status === 'sent').length > 0;\n }\n return false;\n };\n\n /**\n *\n * @param {*} history\n * @returns\n */\n const onClickMakeTransfer = history => {\n history.push('/create-account/step-select-account');\n };\n\n useEffect(() => {\n const transfersID = map(transfers, item => ({\n id: item.id,\n showMoreInfo: false,\n }));\n updateSeeMoreInfo(transfersID);\n refetchTransfers();\n if (get(props.location, 'state.editError')) {\n handleShow();\n props.location.state.editError = false;\n }\n // if (transfersNew && transfersArchive) {\n // setTransfers([...transfersNew, ...transfersArchive]) \n // }\n if (transfersNew ) {\n setTransfers([...transfersNew]) \n }\n \n }, [clientID, props.location, refetchTransfers, transfersNew]);\n // }, [clientID, props.location, refetchTransfers, transfersNew, transfersArchive]);\n\n // if (loadingSearch || loadingSearchTransfer || loadingTransfersArchive) {\n if (loadingSearch || loadingSearchTransfer ) {\n return <SpinnerLoader />;\n } else {\n return (\n <>\n <ContentModal\n isVisible={showModal}\n onClose={handleClose}\n content={buildCancelEditError()}\n withoutButtons\n small\n hide\n />\n \n <BoxContainer withDoubleBorder withLogButton widest>\n <div className=\"transfer-history__line-container\">\n <div className=\"transfer-history__title\">Transfers</div>\n <div className=\"transfer-history__addicon\">\n <PaymintsIconButton type=\"primary\" size=\"large\">\n <Link to=\"#\" onClick={() => onClickMakeTransfer(props.history)}>\n <i className=\"fa fa-plus\" />\n </Link>\n </PaymintsIconButton>\n </div>\n </div>\n \n <AlertBanner\n alertType=\"warn\"\n text={alertBannerText()}\n show={alertBannerShouldBeVisible()}\n />\n \n {transfers?.length > 0 ? (\n <>\n <MobileHistory\n transfers={transfers}\n seeMoreInfo={seeMoreInfo}\n updateSeeMoreInfo={updateSeeMoreInfo}\n institutionsLogo={institutionsLogo}\n clientDocuments={clientDocuments}\n tenant={tenant}\n />\n <TransferHistoryListing\n transfers={transfers}\n seeMoreInfo={seeMoreInfo}\n updateSeeMoreInfo={updateSeeMoreInfo}\n institutionsLogo={institutionsLogo}\n clientDocuments={clientDocuments}\n tenant={tenant}\n display={window.innerWidth < 600 ? false : true}\n />\n </>\n ) : (\n <p className=\"transfer-history__no-data\">\n You have no pending or completed transfers, select the “+” button to\n start a transfer.\n </p>\n )}\n </BoxContainer>\n </>\n );\n }\n\n \n};\n\nexport default withRouter(TransferHistory);\n","import React, { useState } from 'react';\nimport BankAccounts from '../BankAccounts/BankAccounts';\n\nconst BankAccountsHistory = props => {\n const [loadingService, onSetLoadingService] = useState(false);\n return (\n <BankAccounts\n withDoubleBorder\n withLogButton\n widest\n loadingService={loadingService}\n onSetLoadingService={onSetLoadingService}\n client\n tenant\n {...props}\n />\n );\n};\n\nexport default BankAccountsHistory;\n","import React, { useEffect } from 'react';\nimport BoxContainer from '../BoxContainer/BoxContainer';\nimport { get, split } from 'lodash';\nimport { useForm, Controller } from 'react-hook-form';\nimport { useUpdateClient } from '../../utils/service/service_user_api';\nimport { withRouter } from 'react-router-dom';\nimport { useClientByPhone } from '../../utils/service/service_user_api';\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from 'paymints-address-autocomplete-field';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { Select } from '../Select/Select';\nimport { states } from '../../utils/constants';\nimport SsnToggleVisibilityField from '../SsnInput/SsnToggleVisibilityInput';\nimport { validSSN, validAge } from '../../utils/validations';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport PhoneField from '../PhoneField/PhoneField';\nimport { getClientStore } from '../../utils/util';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport { encrypt, decrypt } from '../../utils/encryption';\n\nimport './account.css';\nimport { saveSensitiveData } from '../../utils/service/service_api';\nimport { useAllTenants } from '../../utils/service/service_tenant_api';\n\nconst Title = () => (\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">Your Account</div>\n </div>\n);\n\nconst FieldsPersonalInformation = ({\n register,\n watch,\n setValue,\n control,\n errors,\n client,\n}) => {\n const nav = document.querySelector('.menu-nav-bar__grey-bar');\n if (!nav) window.location.reload();\n return (\n <BoxContainer internalBox withBorder>\n <div className=\"form-group\">\n <label>First Name</label>\n <input\n type=\"text\"\n placeholder=\" \"\n id=\"firstName\"\n name=\"firstName\"\n className=\"create-account__input form-control\"\n ref={register({ required: true, maxLength: 30 })}\n />\n {errors.firstName && errors.firstName.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.firstName && errors.firstName.type === 'maxLength' && (\n <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n )}\n </div>\n <div className=\"form-group\">\n <label>Middle Name or Initial</label>\n <input\n type=\"text\"\n id=\"middleName\"\n placeholder=\" \"\n name=\"middleName\"\n className=\"create-account__input form-control account__control_width\"\n ref={register}\n />\n </div>\n <div className=\"form-group\">\n <label>Last Name</label>\n <input\n type=\"text\"\n id=\"lastName\"\n placeholder=\" \"\n name=\"lastName\"\n className=\"create-account__input form-control\"\n ref={register({ required: true, maxLength: 30 })}\n />\n {errors.lastName && errors.lastName.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n {errors.lastName && errors.lastName.type === 'maxLength' && (\n <ErrorMessageInput>Max length exceeded</ErrorMessageInput>\n )}\n </div>\n <div className=\"form-group\">\n <label>Last 4 Digits of Social Security Number</label>\n <Controller\n as={SsnToggleVisibilityField}\n control={control}\n name=\"ssn\"\n placeholder=\"Social Security Number\"\n className=\"create-account__input form-control emd-landing-page__form-field--password account__control_width\"\n rules={{ required: false, validate: validSSN }}\n disabled={client.ssn}\n />\n {errors.ssn && errors.ssn.type === 'validate' && (\n <ErrorMessageInput>\n Must be a valid social security number\n </ErrorMessageInput>\n )}\n </div>\n <div className=\"form-group\">\n <label>Date of Birth</label>\n <input\n type=\"date\"\n id=\"dateOfBirth\"\n name=\"dateOfBirth\"\n className=\"create-account__input form-control account__control_width\"\n placeholder=\"yyyy-mm-dd\"\n ref={register({ required: false, validate: validAge })}\n />\n {errors.dateOfBirth && errors.dateOfBirth.type === 'validate' && (\n <ErrorMessageInput>Must be at least 18 years old</ErrorMessageInput>\n )}\n </div>\n <div className=\"form-group\">\n <label>Email Address</label>\n <input\n type=\"email\"\n id=\"email\"\n name=\"email\"\n className=\"create-account__input form-control padding-bottom-10\"\n placeholder=\"Email Address\"\n ref={register({ maxLength: 50 })}\n />\n {errors.email && errors.email.type === 'maxLength' && (\n <span>Max length exceeded</span>\n )}\n </div>\n <div className=\"form-group\">\n <label>Address Associated with Bank Account</label>\n <input\n type=\"text\"\n name=\"address1\"\n placeholder=\"Address 1\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: false })}\n />\n <input\n type=\"text\"\n name=\"address2\"\n placeholder=\"Address 2\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register}\n />\n <input\n type=\"text\"\n name=\"city\"\n placeholder=\"City\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: false })}\n />\n <Controller\n as={Select}\n control={control}\n name=\"state\"\n rules={{ required: false }}\n options={states}\n placeholderText=\"State\"\n className=\"create-account__input form-control create-account__address-info\"\n />\n <input\n type=\"text\"\n name=\"zipcode\"\n placeholder=\"Zip code\"\n className=\"create-account__input form-control create-account__address-info\"\n autoComplete=\"no\"\n ref={register({ required: false })}\n />\n <br />\n </div>\n </BoxContainer>\n );\n};\n\nconst PersonalInformation = ({\n register,\n watch,\n setValue,\n control,\n errors,\n client,\n}) => (\n <div className=\"create-account__information-container\">\n <div className=\"create-account__title-information\">\n Personal Information\n </div>\n <FieldsPersonalInformation\n register={register}\n errors={errors}\n control={control}\n setValue={setValue}\n watch={watch}\n client={client}\n />\n </div>\n);\n\nconst FieldsContactInformation = ({ register, errors, control }) => {\n return (\n <BoxContainer internalBox withBorder>\n <div className=\"form-group\">\n <label>Mobile Number</label>\n <Controller\n as={PhoneField}\n control={control}\n name=\"mobilePhone\"\n placeholder=\" \"\n className=\"create-account__input form-control\"\n disabled\n />\n {errors.mobilePhone && errors.mobilePhone.type === 'required' && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </div>\n </BoxContainer>\n );\n};\n\nconst ContactInformation = ({ register, errors, control }) => (\n <div className=\"create-account__information-container\">\n <div className=\"create-account__title-information\">Contact Information</div>\n <FieldsContactInformation\n register={register}\n errors={errors}\n control={control}\n />\n </div>\n);\n\nconst Account = props => {\n const { user } = getClientStore();\n const { loadingSearch, client, refetch } = useClientByPhone(user.mobilePhone);\n const clientID = get(client, 'id');\n const { loading, updateClient } = useUpdateClient();\n const tenantIdentifier = split(window.location.hostname, '.')[0];\n const { loading: loadingTenant, tenant } = useAllTenants(tenantIdentifier);\n const tenantID = get(tenant, 'id');\n const { register, handleSubmit, watch, errors, setValue, control } = useForm({\n defaultValues: client,\n });\n const { sensitiveData, refetch: refetchSensitiveData } = useSensitiveData();\n\n const { SSN, DOB } = sensitiveData || {};\n\n useEffect(() => {\n if (client && sensitiveData) {\n setValue([\n { firstName: client.firstName },\n { middleName: client.middleName },\n { lastName: client.lastName },\n { address1: client.address1 },\n { address2: client.address2 },\n { state: client.state },\n { city: client.city },\n { zipcode: client.zipcode },\n { mobilePhone: validateNumber(client.mobilePhone) },\n { email: client.email },\n { ssn: ssnCutter(decrypt(SSN)) },\n { dateOfBirth: decrypt(DOB) },\n ]);\n }\n }, [client, SSN, DOB]);\n\n \n\n const ssnCutter = (ssn) => {\n if (ssn.length > 4) {\n return ssn.slice(ssn?.length - 4)\n } else return ssn\n };\n\n const validateNumber = phone => {\n return phone ? phone.slice(2, 12) : phone;\n };\n\n const onSubmit = async newUser => {\n delete newUser.mobilePhone;\n\n const sensitiveData = {\n SSN: encrypt(newUser.ssn),\n DOB: encrypt(newUser.dateOfBirth),\n };\n //removing sensititve data from query\n const { ssn, dateOfBirth, ...rest } = newUser;\n\n try {\n await saveSensitiveData(clientID, tenantID, sensitiveData);\n\n await updateClient({\n variables: {\n id: client.id,\n client: rest,\n },\n });\n\n await refetch();\n await refetchSensitiveData();\n } catch (err) {\n console.log(err);\n }\n };\n\n if (loading || loadingSearch || loadingTenant) {\n return <SpinnerLoader />;\n }\n\n return (\n <BoxContainer withDoubleBorder withLogButton>\n <Title />\n <form onSubmit={handleSubmit(onSubmit)}>\n <PersonalInformation\n register={register}\n errors={errors}\n control={control}\n setValue={setValue}\n watch={watch}\n client={client}\n />\n <ContactInformation\n register={register}\n errors={errors}\n control={control}\n />\n <div className=\"account__footer-button\">\n <PaymintsButton\n htmlType=\"submit\"\n className=\"create-account__button\"\n noShadow\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n <div className=\"create-account__button-text\">Save</div>\n </PaymintsButton>\n </div>\n </form>\n </BoxContainer>\n );\n};\n\nexport default withRouter(Account);\n","import React, { useState } from \"react\";\nimport includes from \"lodash/includes\";\nimport { withRouter, Link } from \"react-router-dom\";\nimport userLogo from \"../../styles/assets/user.svg\";\nimport bankLogo from \"../../styles/assets/bank.svg\";\nimport amountLogo from \"../../styles/assets/amount.svg\";\nimport userLogoBlue from \"../../styles/assets/user-blue.svg\";\nimport bankLogoBlue from \"../../styles/assets/bank-blue.svg\";\nimport amountLogoBlue from \"../../styles/assets/amount-blue.svg\";\nimport contactSupport from \"../../styles/assets/support.svg\";\nimport LogOut from \"../../styles/assets/logout.svg\";\nimport { useAuth0 } from \"../../react-auth0-spa.js\";\nimport { clearStore } from \"../../utils/util\";\nimport messageBlue from \"../../styles/assets/message-blue.svg\";\nimport messageIcon from \"../../styles/assets/message.svg\";\nimport NewTransferInactive from \"../../styles/assets/New-transfer-inactive.svg\";\nimport NewTransferActive from \"../../styles/assets/New-transfer-active.svg\";\n\nimport \"./menuNavBar.css\";\n\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n arrow: {\n \"&:before\": {\n border: \"rgba(0, 0, 0, 0.7)\"\n },\n color: \"rgba(0, 0, 0, 0.7)\"\n },\n tooltip: {\n backgroundColor: \"rgba(0, 0, 0, 0.7)\",\n color: \"white\",\n marginLeft: \"30px\",\n fontSize: \"1em\",\n }\n}));\n\nconst account = \"/account\";\nconst bankAccounts = \"/bank-accounts\";\nconst transfers = \"/transfer-history\";\nconst message = \"/message-center\";\nconst newTransferStart = [\"/create-account/step-select-account\", \"/create-account/step-select-account\", \"/create-account/step-3\"] ;\n\nconst MenuNavBar = (props) => {\n const pathname = window.location.pathname;\n const isMobile = window.screen.width < 767;\n const [isOpen, openMenu] = useState(isMobile);\n const isSelectedAccount = includes(account, pathname);\n const isSelectedBank = includes(bankAccounts, pathname);\n const isSelectedTransfer = includes(transfers, pathname);\n const isMessageCenter = includes(message, pathname);\n const isNewTransfer = includes(newTransferStart, pathname);\n \n const hideSideNav = (mobile) => (mobile ? openMenu(false) : \"\");\n const { logout } = useAuth0();\n const userLogout = () => {\n logout();\n clearStore();\n };\n const classes = useStyles();\n\n if (props.hide) {\n return props.children;\n }\n\n return (\n <div id=\"outer-container\">\n <main\n id=\"page-wrap\"\n className={`menu-nav-bar__page-wrap ${isOpen ? \"\" : \"menu-toggle-open\"\n }`}\n >\n <div className=\"menu-nav-bar__grey-bar\">\n <div className=\"menu-nav-bar__content\">\n <div className=\"menu-toggle-btn-wrapper\">\n <button\n className=\"menu-toggle-btn\"\n onClick={() => openMenu(!isOpen)}\n >\n <i className=\"fa fa-angle-double-right\"></i>\n </button>\n </div>\n <div className=\"menu-nav-bar-list\">\n <div\n className={`menu-nav-items ${!isOpen ? \"gray_icon\" : \"\"}`}\n onClick={() => hideSideNav(props.mobile)}\n >\n <Link\n className={`menu-link-item ${isSelectedAccount ? \"selected\" : \"\"\n }`}\n to=\"/account\"\n >\n <Tooltip\n arrow\n placement=\"right\"\n classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n title={isOpen ? \"My Account\" : \"\"}\n >\n <img\n src={isSelectedAccount ? userLogoBlue : userLogo}\n alt=\"\"\n />\n </Tooltip>\n <span className={isSelectedAccount ? \"selected\" : \"\"}>\n My Account\n </span>\n </Link>\n </div>\n\n\n <div\n className=\"menu-nav-items\"\n onClick={() => hideSideNav(props.mobile)}\n >\n <Link\n className={`menu-link-item ${isNewTransfer ? \"selected\" : \"\"\n }`}\n to=\"/create-account/step-select-account\"\n >\n <Tooltip\n title={\"New Transfer\"}\n arrow\n placement=\"right\"\n classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n >\n <img src={isNewTransfer ? NewTransferActive : NewTransferInactive} alt=\"\" />\n </Tooltip>\n <span className={isNewTransfer ? \"selected\" : \"\"}>\n New Transfer\n </span>\n </Link>\n </div>\n\n\n <div\n className=\"menu-nav-items\"\n onClick={() => hideSideNav(props.mobile)}\n >\n <Link\n className={`menu-link-item ${isSelectedBank ? \"selected\" : \"\"\n }`}\n to=\"/bank-accounts\"\n >\n <Tooltip\n title={isOpen ? \"Bank Account\" : \"\"}\n arrow\n placement=\"right\"\n classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n >\n <img src={isSelectedBank ? bankLogoBlue : bankLogo} alt=\"\" />\n </Tooltip>\n <span className={isSelectedBank ? \"selected\" : \"\"}>\n Bank Account\n </span>\n </Link>\n </div>\n <div\n className=\"menu-nav-items\"\n onClick={() => hideSideNav(props.mobile)}\n >\n <Link\n className={`menu-link-item ${isSelectedTransfer ? \"selected\" : \"\"\n }`}\n to=\"/transfer-history\"\n >\n <Tooltip\n title={isOpen ? \"Transfer History\" : \"\"}\n arrow\n placement=\"right\"\n classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n >\n <img\n src={isSelectedTransfer ? amountLogoBlue : amountLogo}\n alt=\"\"\n />\n </Tooltip>\n <span className={isSelectedTransfer ? \"selected\" : \"\"}>\n Transfer History\n </span>\n </Link>\n </div>\n <div\n className=\"menu-nav-items\"\n onClick={() => hideSideNav(props.mobile)}\n >\n <Link\n className={`menu-link-item ${isMessageCenter ? \"selected\" : \"\"\n }`}\n to=\"/message-center\"\n >\n <Tooltip\n title={isOpen ? \"Message Center\" : \"\"}\n arrow\n placement=\"right\"\n classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n >\n <img\n src={isMessageCenter ? messageBlue : messageIcon}\n alt=\"\"\n />\n </Tooltip>\n <span className={isMessageCenter ? \"selected\" : \"\"}>\n Message Center\n </span>\n </Link>\n </div>\n <div className=\"menu-nav-items\" onClick={() => userLogout()}>\n <div className=\"menu-link-item\">\n <Tooltip\n title={isOpen ? \"Log Out\" : \"\"}\n arrow\n placement=\"right\"\n classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n >\n <img src={LogOut} alt=\"\" />\n </Tooltip>\n <span>Log Out</span>\n </div>\n </div>\n <div className=\"menu-nav-bar__bar-line\"></div>\n <div className=\"menu-nav-items\" onClick={() => openMenu(!isOpen)}>\n <div className=\"menu-link-item\">\n <Tooltip\n title={isOpen ? \"Contact Support\" : \"\"}\n arrow\n placement=\"right\"\n classes={{ arrow: classes.arrow, tooltip: classes.tooltip }}\n >\n <img src={contactSupport} alt=\"\" />\n </Tooltip>\n <span>Contact support</span>\n </div>\n <div className=\"menu-link-item no_padding\">\n <span className=\"support_links\">\n <a href=\"mailto:support@certifid.com\">support@certifid.com</a>\n <br />\n <a href=\"tel:+1.616.816.1668\">1-616-816-1668</a>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {props.children}\n </main>\n </div>\n );\n};\n\nexport default withRouter(MenuNavBar);\n","import React, { useState } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport BoxContainer from \"../BoxContainer/BoxContainer\";\nimport { useForm, Controller } from \"react-hook-form\";\nimport PhoneField from \"../PhoneField/PhoneField\";\nimport { setItem } from \"../../utils/util\";\nimport ErrorMessageInput from \"../ErrorMessajeInput/ErrorMessageInput\";\nimport {\n PaymintsButton,\n BUTTON_TYPE,\n} from \"paymints-address-autocomplete-field\";\nimport * as APIUtil from \"../../utils/service/service_api\";\nimport { useClientByPhone } from \"../../utils/service/service_user_api\";\nimport Phone from \"../../styles/assets/phone.png\";\n\nimport get from \"lodash/get\";\n\nconst Login = (props) => {\n const [error, onSetError] = useState({ active: false, messageError: \"\" });\n const tenantId = get(props, \"tenant.id\");\n const { errors, control, handleSubmit } = useForm();\n const { refetch: refetchNewClient } = useClientByPhone();\n\n const onSubmit = (newUser) => {\n const { phone_number } = newUser;\n refetchNewClient({ where: { mobilePhone: \"+1\" + phone_number } }).then(\n (response) => {\n const client = get(response, \"data.allClients\")[0];\n if (client) {\n setItem(\"login_user\", \"existing_user\");\n getCode(tenantId, client.id, client);\n } else {\n onSetError({ active: true, messageError: \"\" });\n }\n }\n );\n };\n const getCode = (tenantId, clientid, client) => {\n APIUtil.getSMSCode(tenantId, clientid).then(() => {\n props.history.push(\"/create-account/account-verification\", { client });\n });\n };\n return (\n <BoxContainer\n widest\n withLogButton\n withDoubleBorder\n brandLogo\n showLogin={true}\n >\n <form onSubmit={handleSubmit(onSubmit)}>\n <div className=\"create-account__line-container\">\n <div className=\"create-account__title\">\n Please enter your mobile number.\n </div>\n </div>\n <div className=\"create-account__information-container\">\n <div className=\"create-account__subtitle-information\">\n We will send a security code to your mobile phone for account\n verification.\n </div>\n <BoxContainer withBorder internalBox>\n <div className=\"form-group\">\n <label>Mobile Phone</label>\n <div className=\"form-group create-account__name\">\n <Controller\n as={PhoneField}\n control={control}\n name=\"phone_number\"\n onKeyUp={() =>\n onSetError({ active: false, messageError: \"\" })\n }\n placeholder=\" \"\n className=\"create-account__input form-control\"\n rules={{ required: true }}\n />\n {errors.phone_number &&\n errors.phone_number.type === \"required\" && (\n <ErrorMessageInput>This is required</ErrorMessageInput>\n )}\n </div>\n <div className=\"create-account__warning-conatiner\">\n <img\n src={Phone}\n className=\"create-account__warning-icon\"\n alt=\"\"\n />\n <div className=\"create-account__warning-text\">\n Standard text messaging and provider rates may apply.\n </div>\n </div>\n </div>\n </BoxContainer>\n <div\n className=\"create-account__subtitle-information\"\n hidden={!error.active}\n style={{color: \"red\", fontWeight: \"600\", fontSize: \"20px\"}}\n >\n The phone number entered is not registered. <br />Please{\" \"}\n <span\n className=\"paymints__link create-account__cursor\"\n onClick={() => props.history.push(\"/create-account\")}\n >\n Create Account{\" \"} \n </span>\n to register phone number.\n </div>\n <div className=\"create-account__footer-buttons center\">\n <PaymintsButton\n htmlType=\"submit\"\n className=\"paymints__register-button create-account__button\"\n type={BUTTON_TYPE.INVERSE_BLUE}\n >\n Get Security Code\n </PaymintsButton>\n {error.active && (\n <ErrorMessageInput>{error.messageError}</ErrorMessageInput>\n )}\n </div>\n </div>\n </form>\n </BoxContainer>\n );\n};\n\nexport default withRouter(Login);\n","import { useQuery } from \"@apollo/react-hooks\";\nimport { gql } from \"apollo-boost\";\n\nconst GET_CLIENTS_MESSAGE = gql`\n query AllClientMessages($where: ClientMessageWhereInput) {\n allClientMessages(where: $where) {\n id\n messageURL\n updatedAt\n createdAt\n _label_\n type\n tenant {\n name\n }\n transfer {\n id\n propertyAddress1\n propertyAddress2\n propertyCity\n propertyZipcode\n propertyState\n sellerName\n }\n }\n }\n`;\nexport function useClientMessages(whereClause = {}) {\n const { loading, error, data, refetch } = useQuery(GET_CLIENTS_MESSAGE, {\n variables: { where: whereClause },\n });\n return {\n loading,\n error,\n refetch,\n allClientMessages: data ? data.allClientMessages : [],\n };\n}\n","import React from \"react\";\nimport { Table } from \"antd\";\nimport classnames from \"classnames\";\nimport style from \"./style.module.scss\";\n\nexport default function PaymintsTable({ className, ...props }) {\n const css = classnames(className, style.table);\n return <Table className={css} {...props} />;\n}\n","/*\n * src/components/MessageCenter/MessageCenterColumnCfg.js\n * Description:\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport React from \"react\";\nimport { Tooltip } from \"antd\";\nimport moment from \"moment\";\n\nimport { DEFAULT_DATE_FORMAT } from \"../../utils/util\";\nimport downloadIcon from \"../../styles/assets/table-download-icon.svg\";\n\nimport { messageKey } from \"./mock-data\";\n\nconst emptyValue = \"--\";\n\nconst columnCfg = (pdfClickHandler = Function.prototype) => [\n {\n title: \"DATE CREATED\",\n dataIndex: \"createdAt\",\n render: (a) => {\n return <p>{moment(a).format(DEFAULT_DATE_FORMAT)}</p>;\n },\n sorter: (a, b) => new Date(a.createdAt) - new Date(b.createdAt),\n defaultSortOrder: \"descend\",\n },\n {\n title: \"FROM\",\n dataIndex: \"tenant\",\n render: (text) => <p> {text?.name ?? emptyValue} </p>,\n sorter: (a, b) =>\n (a?.tenant?.name ?? \"\").localeCompare(b?.tenant?.name ?? \"\"),\n }, \n {\n title: \"REFERENCE\",\n dataIndex: \"transfer\",\n render: (text) => <p>{text?.propertyAddress1 ?? emptyValue}</p>,\n sorter: (a, b) =>\n (a?.transfer?.propertyAddress1 ?? \"\").localeCompare(\n b?.transfer?.propertyAddress1 ?? \"\"\n ),\n },\n {\n title: \"TYPE\",\n dataIndex: \"type\",\n render: (text) => <p>{messageKey[text]}</p>,\n sorter: (a, b) => (a?.type ?? \"\").localeCompare(b?.type ?? \"\"),\n },\n\n {\n title: \"DOWNLOAD\",\n dataIndex: \"messageURL\",\n render: (text) => {\n return (\n <Tooltip placement=\"topLeft\" title=\"Download PDF\">\n <span\n data-tooltip\n className=\"download-icon\"\n onClick={() => pdfClickHandler(text)}\n >\n <img\n src={downloadIcon}\n alt=\"Download PDF\"\n style={{ cursor: \"pointer\" }}\n />\n </span>\n </Tooltip>\n );\n },\n },\n];\n\nexport default columnCfg;\n","/*\n * src/components/MessageCenter/StandardView.jsx\n * Description: Browser view w/ Paymints Table\n * Copyright (c) 2020 PredictiveUX\n */\nimport React from \"react\";\n\nimport PaymintsTable from \"../PaymintsTable/PaymintsTable\";\n\nimport columnCfg from \"./MessageCenterColumnCfg\";\nimport \"./messageCenter.css\";\n\nconst StandardView = ({ tableData, pdfOpenHandler }) => {\n /**\n * The \"antD\" <Table> component requires a \"key\" property for each record.\n * @param {*} tableData\n * @returns\n */\n const addKeyToTableData = (tableData) => {\n return tableData.map((m) => {\n return {\n ...m,\n key: m.id,\n };\n });\n };\n\n return (\n <div className=\"message__table-container\">\n <PaymintsTable\n columns={columnCfg(pdfOpenHandler)}\n dataSource={addKeyToTableData(tableData)}\n pagination={{ position: \"both\" }}\n />\n </div>\n );\n};\n\nexport default StandardView;\n","/*\n * src/components/MessageCenter/MobileView.jsx\n * Description: Responsive view\n * Copyright (c) 2020 PredictiveUX\n */\nimport React from \"react\";\nimport moment from \"moment\";\n\nimport { DEFAULT_DATE_FORMAT } from \"../../utils/util\";\n\nimport { messageKey } from \"./mock-data\";\nimport mobileArrowIcon from \"../../styles/assets/mobile-table-arrow.svg\";\n\nconst MobileView = ({ tableData }) => {\n return (\n <div className=\"message__mobile-table-container\">\n {tableData.map((res) => {\n return (\n <div className=\"list-item-mobile\" key={res?.id}>\n <div className=\"left-list\">\n <p>\n <span className=\"dot\"></span>{\" \"}\n {res?.transfer?.propertyAddress1 ?? \"--\"}\n </p>\n <p>{res?.tenant?.name}</p>\n <p>{res?.type ? messageKey[res?.type] : \"N/A\"}</p>\n </div>\n <div className=\"right-time\">\n <span>{moment(res?.updatedAt).format(DEFAULT_DATE_FORMAT)}</span>\n <img src={mobileArrowIcon} alt=\"\" />\n </div>\n </div>\n );\n })}\n {tableData.length === 0 && (\n <div className=\"list-item-mobile\">\n <p>No Records Found</p>\n </div>\n )}\n </div>\n );\n};\n\nexport default MobileView;\n","/*\n * src/components/MessageCenter/MessageCenter.jsx\n * Description: Tabular view of message center with form / filter element\n * Copyright (c) 2020 Mark Fehrenbacher\n */\nimport React, { useState, useEffect } from \"react\";\nimport moment from \"moment\";\nimport { DatePicker } from \"antd\";\nimport OnOutsideClick from \"react-outclick\";\nimport \"antd/dist/antd.css\";\n\nimport searchIcon from \"../../styles/assets/message-searchicon.svg\";\nimport sortIconAsc from \"../../styles/assets/table-filter-asc-icon.svg\";\nimport sortIconDsc from \"../../styles/assets/table-filter-dsc-icon.svg\";\nimport dropdownIcon from \"../../styles/assets/btn-dropdown-icon.svg\";\nimport closeIcon from \"../../styles/assets/filter-selected-close-icon.svg\";\nimport { useClientMessages } from \"../../utils/service/service_message-center\";\nimport downloadPdfPromise from \"../../utils/service/service_pdf-download\";\nimport { asyncWrapper, getClientStore } from \"../../utils/util\";\n\nimport StandardView from \"./StandardView\";\nimport MobileView from \"./MobileView\";\nimport \"./messageCenter.css\";\n\nconst MessageCenter = () => {\n const lastXDays = 7;\n const dynamicDateIndex = `Last ${lastXDays} Days`;\n const DateRanges = {\n Today: [moment(), moment()],\n Yesterday: [moment().subtract(1, \"days\"), moment()],\n [dynamicDateIndex]: [moment().subtract(lastXDays - 1, \"days\"), moment()],\n \"This Month\": [moment().startOf(\"month\"), moment().endOf(\"month\")],\n \"Last Month\": [\n moment()\n .subtract(1, \"months\")\n .startOf(\"month\"),\n moment()\n .subtract(1, \"months\")\n .endOf(\"month\"),\n ],\n };\n\n /**\n * PDF stream reader / download functionality\n * @param {*} pdfUrl String\n */\n const pdfOpenHandler = async (pdfUrl) => {\n const [err, data] = await asyncWrapper(downloadPdfPromise(pdfUrl));\n\n if (err) {\n return;\n }\n\n const file = new Blob([data], { type: \"application/pdf\" });\n const fileURL = URL.createObjectURL(file);\n window.open(fileURL);\n };\n\n /**\n * Set the base criteria: this applies to all queries\n */\n const { user } = getClientStore();\n const baseCriteria = {\n client: { id: user.id },\n messageType_in: [\n \"transfer_fail\",\n \"transfer_initiated\",\n \"transfer_receipt\",\n \"transfer_request\",\n ],\n };\n\n /**\n * Set the initial search criteria\n */\n const [searchCriteria, setSearchCriteria] = useState(\n Object.assign({}, baseCriteria, {\n createdAt_gte: DateRanges[dynamicDateIndex][0].toISOString(),\n createdAt_lte: DateRanges[dynamicDateIndex][1].toISOString(),\n })\n );\n\n /**\n * build the OR clause from the search input\n * @param {*} str\n */\n const buildOrClause = (str) => {\n let orClause = {};\n\n if (str) {\n orClause = [\n { transfer: { propertyAddress1_contains_i: str } },\n { tenant: { name_contains_i: str } },\n ];\n }\n\n return {\n OR: orClause,\n };\n };\n\n /**\n * gql hook\n */\n const { allClientMessages } = useClientMessages(searchCriteria);\n\n /**\n * local state\n * @TODO Refactor to useReducer()\n */\n const [availableMessageTypes, setAvailableMessageTypes] = useState([]);\n const [showMessageTypes, setShowMessageTypes] = useState(false);\n const [showMobileFilter, setShowMobileFilter] = useState(false);\n const [sortOrder, setOrder] = useState(false);\n const [tableData, setTableData] = useState(allClientMessages ?? []);\n const [searchKey, setSearchKey] = useState(\"\");\n const [copyTableData, setCopyTableData] = useState([]);\n const [daysDiff, setDaysDiff] = useState(lastXDays);\n const [rangeDate, setRangeDate] = useState([\n DateRanges[dynamicDateIndex][1],\n DateRanges[dynamicDateIndex][0],\n ]);\n\n /**\n * This function will filter the current result on selected message type(s)\n * @param {*} transferData\n * @param {*} ttArray Selected transfer types (purposes)\n * @param {*} statusArray\n */\n const filterTableData = (messages, checkedMessageTypes) => {\n if (checkedMessageTypes.length) {\n messages = messages\n .filter((f) => f.type)\n .filter((f) => checkedMessageTypes.indexOf(f.type.toLowerCase()) >= 0);\n }\n return messages;\n };\n\n /**\n * This is a workaround function for table sorting in the mobile view\n */\n const sortTable = () => {\n setOrder(!sortOrder);\n const sortData = [\n ...tableData.sort((a, b) => {\n if (!sortOrder) {\n return a.type < b.type ? -1 : 1;\n } else {\n return a.type > b.type ? -1 : 1;\n }\n }),\n ];\n setTableData(sortData);\n };\n\n /**\n * Selecting one message type filter\n * @param {*} isChecked boolean\n * @param {*} index number\n */\n const selectMessageType = (isChecked, index) => {\n const newAvailableMessageTypes = availableMessageTypes.map((m, i) => {\n if (i === index) {\n return {\n ...m,\n isChecked,\n };\n }\n return m;\n });\n\n setAvailableMessageTypes(newAvailableMessageTypes);\n setTableData(\n filterTableData(\n copyTableData,\n newAvailableMessageTypes.filter((f) => f.isChecked).map((m) => m.value)\n )\n );\n };\n\n /**\n * selecting all message type filters\n */\n const selectAllMessageTypes = () => {\n const newAvailableMessageTypes = availableMessageTypes.map((m, i) => {\n return {\n ...m,\n isChecked: true,\n };\n });\n\n setAvailableMessageTypes(newAvailableMessageTypes);\n setTableData(\n filterTableData(\n copyTableData,\n newAvailableMessageTypes.filter((f) => f.isChecked).map((m) => m.value)\n )\n );\n };\n\n /**\n * resetting all message types filters\n */\n const resetAllMessageTypes = () => {\n const newAvailableMessageTypes = availableMessageTypes.map((m, i) => {\n return {\n ...m,\n isChecked: false,\n };\n });\n\n setAvailableMessageTypes(newAvailableMessageTypes);\n setTableData(\n filterTableData(\n copyTableData,\n newAvailableMessageTypes.filter((f) => f.isChecked).map((m) => m.value)\n )\n );\n };\n\n /**\n * setting searchCriteria will trigger a refetch\n */\n const search = () => {\n setSearchCriteria(\n Object.assign({}, searchCriteria, buildOrClause(searchKey))\n );\n };\n\n /**\n * datepicker handler\n * @param {*} e\n */\n const selectRange = (e) => {\n const tzOffset = new Date().getTimezoneOffset();\n setRangeDate(e);\n\n const dateRange = e\n ? e.map((m) => {\n return moment(moment.utc(m).toDate())\n .subtract(tzOffset, \"minute\")\n .format(\"MM/DD/YYYY\");\n })\n : [];\n\n if (dateRange.length > 0) {\n setDaysDiff(moment(dateRange[1]).diff(moment(dateRange[0]), \"days\"));\n setSearchCriteria(\n Object.assign(\n {},\n {\n ...searchCriteria,\n createdAt_gte: moment(dateRange[0])\n .startOf(\"DAY\")\n .toISOString(),\n createdAt_lte: moment(dateRange[1])\n .endOf(\"DAY\")\n .toISOString(),\n }\n )\n );\n } else {\n // extract out start/end dates and leave out\n const { createdAt_gte, createdAt_lte, ...rest } = searchCriteria;\n setSearchCriteria(rest);\n setDaysDiff(null);\n }\n };\n\n /**\n * Handling the search input state\n * @param {*} e\n */\n const handleSearchInput = (e) => {\n const newValue = e?.target?.value ?? \"\";\n setSearchKey(newValue);\n\n if (e.key === \"Enter\" || !newValue) {\n search();\n }\n };\n\n const CalendarButton = ({ days }) => {\n let daysDescription;\n switch (days) {\n case 0:\n daysDescription = \"Today\";\n break;\n case 1:\n daysDescription = \"Yesterday\";\n break;\n case 7:\n daysDescription = \"Last 7 days\";\n break;\n default:\n daysDescription = null;\n break;\n }\n const resetData = () => {\n const { createdAt_gte, createdAt_lte, ...rest } = searchCriteria;\n setSearchCriteria(rest);\n setDaysDiff(null);\n };\n return (\n <>\n {daysDescription && (\n <div className=\"select-filter-item calendar\" onClick={resetData}>\n <span>{daysDescription}</span>\n <img src={closeIcon} alt=\"\" />\n </div>\n )}\n </>\n );\n };\n\n /**\n * handling client message data from GraphQL\n */\n useEffect(() => {\n if (allClientMessages && allClientMessages.length > 0) {\n setTableData(allClientMessages);\n setCopyTableData(allClientMessages);\n\n setAvailableMessageTypes(\n [\n ...new Set(\n allClientMessages\n .filter((f) => f.type)\n .map((m) => m.type.toLowerCase())\n ),\n ].map((m) => {\n return {\n label: m.split(\"_\").join(\" \"),\n value: m,\n isChecked: false,\n };\n })\n );\n } else {\n setTableData([]);\n setCopyTableData([]);\n setAvailableMessageTypes([]);\n }\n }, [allClientMessages]);\n\n /**\n * rendering\n */\n return (\n <div className=\"message__container-outer\">\n <div className=\"message__container\">\n <h6 className=\"message__page-title\">Messages</h6>\n <div className=\"message__search-container\">\n {/* search input */}\n <div className=\"message__search-form-group\">\n <input\n type=\"text\"\n placeholder=\"Enter address or name\"\n onKeyUp={(e) => handleSearchInput(e)}\n />\n <img src={searchIcon} alt=\"\" onClick={search} />\n </div>\n\n {/* search button */}\n <button className=\"message__search-btn\" onClick={search}>\n Search\n </button>\n\n {/* date picker */}\n <DatePicker.RangePicker\n size=\"small\"\n onChange={selectRange}\n className=\"message__range-picker\"\n value={rangeDate}\n format={\"MM/DD/YYYY\"}\n ranges={DateRanges}\n />\n\n {/* message type selection */}\n <OnOutsideClick\n onOutsideClick={() => setShowMessageTypes(false)}\n display=\"contents\"\n >\n <div className=\"dropdown\">\n <button\n className=\"dropdown-btn\"\n onClick={() => setShowMessageTypes(!showMessageTypes)}\n >\n <span>Message Type</span> <img src={dropdownIcon} alt=\"\" />\n </button>\n <div\n className={`dropdown-menu ${showMessageTypes ? \"show\" : \"\"}`}\n >\n <div className=\"disktop-filter\">\n <p className=\"filter-title\">Filter By</p>\n <div className=\"filter-container\">\n {availableMessageTypes.map((mt, index) => {\n return (\n <label className=\"filter-item\" key={mt.label}>\n <input\n type=\"checkbox\"\n checked={mt.isChecked}\n onChange={(e) =>\n selectMessageType(e.target.checked, index)\n }\n />\n <span style={{ textTransform: \"capitalize\" }}>\n {mt.label}\n </span>\n </label>\n );\n })}\n </div>\n <div className=\"filter-footer\">\n <button onClick={selectAllMessageTypes}>Select All</button>\n <button onClick={resetAllMessageTypes}>Reset</button>\n </div>\n </div>\n </div>\n </div>\n </OnOutsideClick>\n </div>\n\n <div className=\"message__filter-container\">\n <img\n src={sortIconAsc}\n alt=\"sortIconAsc\"\n hidden={sortOrder}\n className=\"message__mobile-short-icon\"\n onClick={() => sortTable()}\n />\n <img\n src={sortIconDsc}\n alt=\"sortIconDsc\"\n hidden={!sortOrder}\n className=\"message__mobile-short-icon\"\n onClick={() => sortTable()}\n />\n <div className=\"dropdown\">\n <button\n className=\"dropdown-btn\"\n onClick={() => setShowMobileFilter(!showMobileFilter)}\n >\n <span>Message Type</span> <img src={dropdownIcon} alt=\"\" />\n </button>\n <div className={`dropdown-menu ${showMobileFilter ? \"show\" : \"\"}`}>\n <div\n className=\"mobile-backdrop\"\n onClick={() => setShowMobileFilter(!showMobileFilter)}\n ></div>\n\n {/* mobile filter container */}\n <div className=\"mobile-filter-container\">\n <div className=\"top-line\"></div>\n <p className=\"filter-title\">Filter By Message Type</p>\n <div className=\"filter-container\">\n {availableMessageTypes.map((mt, index) => {\n return (\n <label className=\"filter-item\" key={mt.label}>\n <input\n type=\"checkbox\"\n checked={mt.isChecked}\n onChange={(e) =>\n selectMessageType(e.target.checked, index)\n }\n />\n <span\n style={{\n textTransform: \"capitalize\",\n fontWeight: \"normal\",\n }}\n >\n {mt.label}\n </span>\n </label>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n {<CalendarButton days={daysDiff} />}\n </div>\n\n {/* standard and mobile */}\n <StandardView tableData={tableData} pdfOpenHandler={pdfOpenHandler} />\n <MobileView tableData={tableData} />\n </div>\n </div>\n );\n};\n\nexport default MessageCenter;\n","import React, { useEffect, useState } from 'react';\nimport {\n withRouter,\n Route,\n Switch,\n Redirect,\n useLocation,\n} from 'react-router-dom';\nimport NavBar from '../NavBar/NavBar';\nimport CreateAccount from '../CreateAccountWizard/CreateAccountWizard';\nimport CreateAccountForPartner from '../CreateAccountWizardForPartner/CreateAccountWizard';\nimport TransferHistory from '../TransferHistory/TransferHistory';\nimport BankAccountsHistory from '../BankAccountsHistory/BankAccountsHistory';\nimport Account from '../Account/Account';\nimport MenuNavBar from '../MenuNavBar/MenuNavBar';\nimport SpinnerLoader from '../SpinnerLoader/SpinnerLoader';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { useAuth0 } from '../../react-auth0-spa';\nimport Login from '../Login/Login';\nimport ErrorMessageInput from '../ErrorMessajeInput/ErrorMessageInput';\nimport { clearStore } from '../../utils/util';\nimport { getSensitiveData } from '../../utils/service/service_api';\nimport { useSensitiveData } from '../../contexts/sensitiveDataContext';\nimport MessageCenter from '../MessageCenter/MessageCenter';\nimport {\n getTargetedHeaderBranding,\n getTargetedFooterBranding,\n} from '../../utils/tenantGroupBranding';\n\nconst HomePage = ({\n hasTransfer,\n user,\n loading,\n loadingSearch,\n loadingSearchTransfer,\n loadingBranding,\n brandLogo,\n brandName,\n introductoryText,\n registerButtonText,\n tenant,\n loadingTenant,\n hasInitiatedTransfer,\n saveTransfer,\n history,\n client,\n branding,\n defaultBranding,\n loadingDefaultBranding,\n}) => {\n let content;\n const loadingServices =\n loading ||\n loadingSearch ||\n loadingSearchTransfer ||\n loadingBranding ||\n loadingTenant;\n const { logout } = useAuth0();\n const [error, onSetError] = useState({ active: false, messageError: '' });\n const { sensitiveData, setSensitiveData } = useSensitiveData();\n const location = useLocation();\n\n useEffect(\n () => {\n /**\n * https://lemonbrew.atlassian.net/browse/PAYAPP-981\n * here is where we decide between tenant group branding, tenant branding or default branding\n * Removing Tenant Group\n \n if (!loadingBranding && !loadingDefaultBranding && tenant?.tenantGroup) {\n document.getElementById('header').innerHTML = getTargetedHeaderBranding(\n tenant,\n branding,\n defaultBranding\n );\n document.getElementById('footer').innerHTML = getTargetedFooterBranding(\n tenant,\n branding,\n defaultBranding\n );\n }\n */\n if (!loadingBranding && !loadingDefaultBranding) {\n const header = document.getElementById('header');\n const footer = document.getElementById('footer');\n header.innerHTML = branding\n ? get(branding, 'header')\n : get(defaultBranding, 'header');\n footer.innerHTML = branding\n ? get(branding, 'footer')\n : get(defaultBranding, 'footer');\n }\n\n if ((!user && location.pathname !== '/login' && !location.pathname.includes('/partner'))) {\n history.push('/create-account');\n return;\n }\n\n const clientId = get(client, 'id');\n if (user && !clientId && !loadingSearch) {\n if (isEmpty(clientId)) {\n onSetError({\n active: true,\n messageError: 'Client not found, please login',\n });\n setTimeout(() => {\n logout();\n clearStore();\n }, 2000);\n }\n }\n\n const clientSsn = get(sensitiveData, 'SSN');\n const clientDob = get(sensitiveData, 'DOB');\n const transferId = get(hasInitiatedTransfer, 'id');\n\n if ((!clientSsn || !clientDob) && setSensitiveData) {\n getSensitiveData(clientId, get(tenant, 'id'))\n .then(res => {\n if (res?.data) {\n const { SSN, DOB } = res.data;\n setSensitiveData({\n SSN,\n DOB,\n });\n } else {\n }\n })\n .catch(error => console.log(error));\n }\n\n if (hasInitiatedTransfer) {\n saveTransfer({\n variables: {\n id: transferId,\n transfer: {\n status: 'viewed',\n },\n },\n });\n\n if (clientSsn && clientDob) {\n history.push(\n `/create-account/step-select-account?go_to_transfer=${transferId}`\n );\n } else {\n history.push(`/create-account/step-2?go_to_transfer=${transferId}`);\n }\n }\n },\n /* eslint-disable */ [\n client,\n hasInitiatedTransfer,\n sensitiveData,\n history,\n saveTransfer,\n user,\n branding,\n defaultBranding,\n loadingBranding,\n loadingDefaultBranding,\n logout,\n loadingSearch,\n ]\n );\n\n if (loadingServices) {\n content = <SpinnerLoader />;\n }\n\n if (error.active) {\n content = <ErrorMessageInput>{error.messageError}</ErrorMessageInput>;\n }\n\n const mobile = window.screen.width < 1200;\n const isHide = !user;\n const hideLogo = false;\n\n const isNewUser = !user?.email.length > 0;\n\n return (\n <MenuNavBar\n brandLogo={brandLogo}\n brandName={brandName}\n hide={isHide}\n mobile={mobile}\n >\n <div className=\"App\">\n <div className=\"App-container\">\n {hideLogo ? <NavBar logo={brandLogo} /> : ''}\n <div className=\"App__container\">\n {loadingServices || error.active ? (\n content\n ) : (\n <Switch>\n <Route exact path=\"/account\">\n <Account />\n </Route>\n <Route exact path=\"/transfer-history\">\n <TransferHistory tenant={tenant} />\n </Route>\n <Route exact path=\"/message-center\">\n <MessageCenter />\n </Route>\n <Route exact path=\"/bank-accounts\">\n <BankAccountsHistory client={client} tenant={tenant} />\n </Route>\n <Route path=\"/create-account\">\n <CreateAccount\n introductoryText={introductoryText}\n registerButtonText={registerButtonText}\n tenant={tenant}\n brandLogo={brandLogo}\n />\n </Route>\n <Route exact path=\"/login\">\n <Login tenant={tenant} />\n </Route>\n <Route path=\"/partner/\">\n <CreateAccountForPartner\n introductoryText={introductoryText}\n registerButtonText={registerButtonText}\n tenant={tenant}\n brandLogo={brandLogo}\n />\n </Route>\n <Route exact path=\"/\">\n {user ? (\n isNewUser ? (\n <Redirect to=\"/account\" />\n ) : (\n <Redirect to=\"/transfer-history\" />\n )\n ) : (\n <Redirect to=\"/create-account\" />\n )}\n </Route>\n </Switch>\n )}\n </div>\n </div>\n </div>\n </MenuNavBar>\n );\n};\n\nexport default withRouter(HomePage);\n","import React from 'react';\nimport { connect, Provider } from 'react-redux';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { useAuth0 } from './react-auth0-spa';\nimport get from 'lodash/get';\nimport size from 'lodash/size';\nimport isNull from 'lodash/isNull';\nimport split from 'lodash/split';\nimport find from 'lodash/find';\nimport { useClientByPhone } from './utils/service/service_user_api';\nimport {\n useAllTransfers,\n useSaveTransfer,\n} from './utils/service/service_transfer_api';\nimport {\n useAllTenants,\n useAllBrandingsFromTenant,\n useDefaultBrandingFromTenant,\n} from './utils/service/service_tenant_api';\nimport HomePage from './components/HomePage/HomePage';\nimport { styleSingleton } from 'react-style-singleton';\nimport WebFont from 'webfontloader';\nimport { getClientStore } from './utils/util';\nimport './App.css';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './styles/react-boostrap/bootstrapv3.css';\nimport { ToastProvider } from 'react-toast-notifications';\nimport SpinnerLoader from './components/SpinnerLoader/SpinnerLoader';\nimport { Helmet } from 'react-helmet';\nimport { SensitiveDataProvider } from './contexts/sensitiveDataContext';\n\nconst App = props => {\n const { loading } = useAuth0();\n const { user } = getClientStore();\n const tenantIdentifier = split(window.location.hostname, '.')[0];\n const { loading: loadingTenant, tenant } = useAllTenants(tenantIdentifier);\n\n const { loadingSearch, client } = useClientByPhone(\n user ? user.mobilePhone : ''\n );\n const { loadingSearchTransfer, transfers } = useAllTransfers(\n get(client, 'id', '')\n );\n const { loadingBranding, branding } = useAllBrandingsFromTenant(\n get(tenant, 'id', ''),\n true\n );\n const {\n loadingDefaultBranding,\n defaultBranding,\n } = useDefaultBrandingFromTenant();\n const { saveTransfer } = useSaveTransfer();\n const Style = styleSingleton();\n\n const hasTransfer = size(transfers) !== 0;\n const hasInitiatedTransfer = find(transfers, ['status', 'Initiated']);\n\n let brandLogo,\n brandBackgroundImage,\n brandBackgroundColor,\n brandName,\n introductoryText,\n registerButtonText,\n behindFieldsColor,\n useStyle,\n fontFamily,\n customCSS,\n linkColor,\n buttonColor,\n fontColor;\n\n if (!loadingBranding && !loadingDefaultBranding) {\n brandLogo = branding\n ? get(branding, 'logoURL')\n : get(defaultBranding, 'logoURL');\n brandBackgroundImage = branding\n ? get(branding, 'backgroundImageURL')\n : get(defaultBranding, 'backgroundImageURL');\n brandBackgroundColor = branding\n ? get(branding, 'backgroundColor')\n : get(defaultBranding, 'backgroundColor');\n brandName = get(tenant, 'identifier');\n introductoryText = branding\n ? get(branding, 'registerText')\n : get(defaultBranding, 'registerText');\n registerButtonText = branding\n ? get(branding, 'registerButtonText')\n : get(defaultBranding, 'registerButtonText');\n behindFieldsColor = branding\n ? get(branding, 'accentColor')\n : get(defaultBranding, 'accentColor');\n fontFamily = branding\n ? get(branding, 'fontFamily')\n : get(defaultBranding, 'fontFamily');\n customCSS = branding\n ? get(branding, 'customCSS')\n : get(defaultBranding, 'customCSS');\n linkColor = branding\n ? get(branding, 'linkColor')\n : get(defaultBranding, 'linkColor');\n buttonColor = branding\n ? get(branding, 'buttonColor')\n : get(defaultBranding, 'buttonColor');\n fontColor = branding\n ? get(branding, 'fontColor')\n : get(defaultBranding, 'fontColor');\n fontFamily = fontFamily ? fontFamily : 'Poppins';\n const mobile = window.screen.width < 1200;\n const isHide = !user;\n\n //Menu width - grey menu width\n const widthWithMenu = isHide || mobile ? '100%' : 'calc(100vw - 60px)';\n\n useStyle = `\n .paymints__box-container__box-shadow--default {\n background-color: ${brandBackgroundColor};\n }\n\n .paymints__box-container__internal--default {\n background-color: ${behindFieldsColor};\n }\n\n .App {\n font-family: ${fontFamily} !important;\n background-image: url(${brandBackgroundImage});\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n background-attachment: fixed;\n width: ${widthWithMenu};\n color: ${fontColor} !important;\n }\n\n body {\n font-family: ${fontFamily} !important;\n color: ${fontColor} !important;\n }\n\n label {\n color: black !important;\n }\n\n .table>tbody>tr>td {\n color: ${fontColor};\n }\n\n .form-control {\n color: ${fontColor} !important;\n }\n\n .ant-btn {\n font-family: ${fontFamily} !important;\n border-radius: 10px;\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n height: 45px !important;\n text-transform: capitalize !important;\n font-weight: 600;\n }\n\n .ant-btn.box-container__button-log {\n border-radius: 4px !important;\n border-color: ${buttonColor} !important;\n }\n\n .accept-button {\n font-family: ${fontFamily} !important;\n background-color: ${buttonColor} !important;\n border: none !important;\n }\n\n #sent {\n text-decoration: none;\n }\n\n .paymints__register-button.ant-btn {\n font-family: ${fontFamily} !important;\n background-color: ${buttonColor} !important;\n border: none !important;\n }\n\n .paymints__register-button.ant-btn:hover {\n background-color: white !important;\n color: ${fontColor} !important;\n border: solid 1px white !important;\n }\n\n .content-modal__button.ant-btn {\n padding-left: 15px !important;\n padding-right: 15px !important;\n }\n\n .paymints__link {\n color: ${linkColor};\n }\n\n .transfer-history__row-item {\n background-color: ${behindFieldsColor};\n }\n\n .box-container__button-log {\n background-color: ${buttonColor} !important;\n border-radius: 4px !important;\n border-color: ${buttonColor}\n }\n\n .box-container__button-log:hover {\n border-radius: 4px !important;\n color: ${buttonColor} !important;\n }\n\n .create-account__button {\n background-color: ${buttonColor} !important;\n border-color: ${buttonColor} !important;\n border-radius: 4px !important;\n }\n\n .create-account__button:hover {\n background-color: white !important;\n border-radius: 4px !important;\n color: ${buttonColor} !important;\n }\n\n .create-account__save-come-back-button {\n color: #1e5fe3;\n border-radius: 4px !important;\n }\n\n .modal-backdrop {\n z-index: 1500;\n }\n\n ${\n mobile\n ? `.menu-nav-bar__icon-angle-left {\n color: #4162fa;\n }\n\n .menu-nav-bar__icon-angle-right {\n color: #4162fa;\n }`\n : ``\n }\n\n ${customCSS ? customCSS : ''}\n `;\n\n const fonts = fontFamily\n ? [`${fontFamily}:300,400,700`, 'Poppins:300,400,700', 'sans-serif']\n : ['Poppins:300,400,700', 'sans-serif'];\n\n WebFont.load({\n google: {\n families: fonts,\n },\n });\n }\n\n const tenantName = get(tenant, 'name', 'paymints.io');\n const tenantFavicon = get(branding, 'faviconImgURL');\n\n if (loadingBranding || loadingDefaultBranding) {\n return <SpinnerLoader />;\n }\n\n return (\n <>\n <Helmet>\n <title>{tenantName}\n \n \n