{"version":3,"sources":["serviceWorker.ts","clientConfig.ts","app/layout/Footer.tsx","core/util/stringExtensions.ts","app/layout/Header.tsx","generated/generated-models.tsx","app/common/CapitalDate.tsx","app/layout/Navbar/UserDetailsNavItem.tsx","app/layout/Navbar/CardNavLink.tsx","app/layout/Navbar/index.ts","app/layout/Navbar/Navbar.tsx","app/lib/components/Loading.tsx","app/common/CEmail.tsx","app/SupportContactInformation/SupportContactInformation.tsx","app/authentication/ActiveSessions/ActiveSessions.tsx","app/common/PrivateRoute.tsx","app/authentication/Login/LoginWrapper.tsx","app/authentication/Login/LoginHeader.tsx","app/components/Button.tsx","app/authentication/Login/LoginErrorMessage.tsx","app/authentication/Login/EnterUsernamePassword.tsx","app/components/RequestMultiFactorToken/index.tsx","app/components/RequestMultiFactorToken/RequestMultiFactorTokenComponent.tsx","app/authentication/Login/EnterMfa.tsx","app/components/FieldErrorMessage.tsx","app/components/utilities.ts","core/util/currencySymbol.ts","app/components/Input.tsx","core/util/nameof.ts","app/components/Form.tsx","app/authentication/Login/EnterNewPassword.tsx","app/authentication/Login/EnterNewPasswordValidator.ts","app/authentication/Login/index.tsx","app/authentication/Login/Login.tsx","core/log.ts","app/components/MoneyFormatted.tsx","app/components/MoneySigned.tsx","app/finance-summary/FinanceSummaryView.tsx","app/finance-summary/FinanceSummaryComponent.tsx","app/common/CError.tsx","app/common/CApolloError.tsx","core/util/sort.ts","core/util/array.ts","app/components/Title.tsx","app/instrument/AccountsSummary.tsx","app/instrument/InstrumentHeader.tsx","app/instrument/InstrumentPage.tsx","app/validation/securityTokenValidator.ts","app/components/RequestMultiFactorTokenFormik.tsx","app/accountTransfer/managePayAnyoneAccounts/AddPayAnyone.tsx","app/accountTransfer/managePayAnyoneAccounts/AddPayAnyoneValidate.ts","app/accountTransfer/utilities/TransferWizard/useTransferWizardContext.tsx","app/accountTransfer/utilities/TransferWizard/Confirm.tsx","app/accountTransfer/utilities/TransferWizard/Create.tsx","app/accountTransfer/utilities/TransferWizard/Receipt.tsx","app/components/fundsTransferCards/FromAccountCard.tsx","app/components/fundsTransferCards/FundsTransferCardsContainer.tsx","app/accountTransfer/utilities/SelectAccount.tsx","app/accountTransfer/utilities/TransferWizard/AccountSelect.tsx","app/accountTransfer/utilities/TransferWizard/TransferWizardContainer.tsx","app/accountTransfer/utilities/TransferWizard/useTransferWizard.ts","app/accountTransfer/utilities/TransferWizard/index.tsx","app/accountTransfer/utilities/TransferWizard/Select.tsx","app/accountTransfer/PayAnyoneRequest/SelectPayAnyone.tsx","app/components/BankingCutoff.tsx","app/components/DatePicker.tsx","app/components/ButtonGroup/ButtonGroup.tsx","app/components/ButtonGroup/index.tsx","app/components/ButtonGroup/ButtonGroupItem.tsx","app/components/ButtonGroup/useButtonGroup.ts","app/accountTransfer/utilities/TransferScheduleInput.tsx","core/apollo/dataIdFromObject.ts","schema/clientSchema.ts","core/localState/resolvers.ts","core/localState/resolvers/updateNetworkStatus.ts","core/localState/mutations/dismissNotification.tsx","core/apollo/client.ts","core/apollo/errorHandler.ts","app/accountTransfer/utilities/validation.ts","app/components/FutureDatedWarningText.tsx","app/components/PaymentCard/PaymentCard.tsx","app/components/Alert.tsx","app/accountTransfer/PayAnyoneRequest/CreatePayAnyone.tsx","app/accountTransfer/PayAnyoneRequest/CreatePayAnyoneValidate.tsx","app/accountTransfer/utilities/list/ListGroup.tsx","app/accountTransfer/utilities/list/ListGroupItem.tsx","app/accountTransfer/utilities/list/DueOnListItems.tsx","app/accountTransfer/utilities/list/ListGroupHeader.tsx","core/util/dateExtensions.ts","app/accountTransfer/utilities/fundsTransfers.ts","app/accountTransfer/PayAnyoneRequest/ConfirmPayAnyone.tsx","app/accountTransfer/utilities/list/DueOnListItemsReceipt.tsx","app/accountTransfer/PayAnyoneRequest/PayAnyoneReceipt.tsx","app/accountTransfer/PayAnyoneRequest/index.ts","app/accountTransfer/PayAnyoneRequest/PayAnyonePage.tsx","app/lang/CLoanWord.tsx","app/accountTransfer/DeleteTransfer/index.ts","app/accountTransfer/DeleteTransfer/DeleteTransfer.tsx","app/accountTransfer/Payment/CreatePayment.tsx","app/accountTransfer/Payment/CreatePaymentValidate.tsx","app/accountTransfer/Payment/ConfirmPayment.tsx","app/accountTransfer/Payment/PaymentReceipt.tsx","app/accountTransfer/Payment/SelectPayment.tsx","app/accountTransfer/Payment/index.ts","app/accountTransfer/Payment/PaymentPage.tsx","app/accountTransfer/Redraw/CreateRedraw.tsx","app/accountTransfer/Redraw/CreateRedrawValidate.tsx","app/accountTransfer/Redraw/ConfirmRedraw.tsx","app/accountTransfer/Redraw/RedrawReceipt.tsx","app/accountTransfer/Redraw/SelectRedraw.tsx","app/accountTransfer/Redraw/index.tsx","app/accountTransfer/Redraw/RedrawPage.tsx","app/accountTransfer/InterAccountTransferRequest/CreateInterAccount.tsx","app/accountTransfer/InterAccountTransferRequest/CreateInterAccountValidate.tsx","app/accountTransfer/InterAccountTransferRequest/ConfirmInterAccount.tsx","app/accountTransfer/InterAccountTransferRequest/InterAccountReceipt.tsx","app/accountTransfer/InterAccountTransferRequest/SelectInterAccount.tsx","app/accountTransfer/InterAccountTransferRequest/index.tsx","app/accountTransfer/InterAccountTransferRequest/InterAccountPage.tsx","app/accountTransfer/ManageBpayBillerHistory/AddBpayBiller.tsx","app/accountTransfer/ManageBpayBillerHistory/AddBpayBillerValidate.ts","app/accountTransfer/BPayRequest/SelectBpay.tsx","app/accountTransfer/BPayRequest/CreateBpay.tsx","app/accountTransfer/BPayRequest/CreateBpayValidate.tsx","app/accountTransfer/BPayRequest/ConfirmBpay.tsx","app/accountTransfer/BPayRequest/BpayReceipt.tsx","app/accountTransfer/BPayRequest/index.ts","app/accountTransfer/BPayRequest/BpayPage.tsx","app/components/BpayText.tsx","app/accountTransfer/ManageBpayBillerHistory/ManageBpayBillerHistory.tsx","app/accountTransfer/ManageBpayBillerHistory/index.ts","app/accountTransfer/managePayAnyoneAccounts/ManagePayAnyoneAccounts.tsx","app/accountTransfer/utilities/ActionCard.tsx","app/accountTransfer/AccountTransferHome/TransferCards.tsx","app/accountTransfer/AccountTransferHome/TransferRow.tsx","app/accountTransfer/AccountTransferHome/PendingTransfers.tsx","app/accountTransfer/AccountTransferHome/RecentTransfers.tsx","app/accountTransfer/AccountTransferHome/index.ts","app/accountTransfer/AccountTransferHome/AccountTransferHome.tsx","app/accountTransfer/index.ts","app/accountTransfer/AccountTransferPage.tsx","app/statements/StatementsList.tsx","app/disbursement/FileThumb.tsx","app/common/forms/ErrorMessage.tsx","app/common/forms/CInputFormGroup.tsx","app/common/forms/FormikDebugger.tsx","app/disbursement/yupDisbursementRequestInput.ts","app/disbursement/DisbursementRequestSuccessful.tsx","app/disbursement/DisbursementRequestForm.tsx","app/account/changeAccountDescription/PlainAccountDescription.tsx","app/account/changeAccountDescription/yupChangeAccountDescriptionInput.ts","app/account/changeAccountDescription/ChangeAccountDescription.tsx","app/account/changeAccountDescription/EditableAccountDescription.tsx","app/components/NumberPercentage.tsx","app/account/AccountSummaryHeader.tsx","app/components/TransactionPageIcon.tsx","app/transaction/TransactionListView/DesktopTransactionList/PaginationFooter.tsx","app/transaction/PaginationUtilities.ts","app/components/TransactionPageIconMoney.tsx","app/transaction/TransactionListView/DesktopTransactionList/DetailView.tsx","app/transaction/TransactionListView/DesktopTransactionList/TransactionRow.tsx","app/transaction/TransactionListView/DesktopTransactionList/index.ts","app/transaction/TransactionListView/DesktopTransactionList/DesktopTransactonList.tsx","app/transaction/TransactionListView/MobileTransaction.tsx","app/transaction/TransactionListView/MobileTransactionList.tsx","app/transaction/TransactionListView/index.ts","app/transaction/TransactionListView/TransactionListView.tsx","app/lib/useScreenSize.tsx","app/transaction/TransactionListView/MobileTransactionDetail.tsx","app/account/AccountView.tsx","app/cards/indue/IndueCardPageCards.tsx","app/cards/indue/IndueCardListTable.tsx","app/cards/indue/IndueCardPage.tsx","app/cards/indue/IndueCardResetPinValidate.ts","app/lib/components/DelayedRender.tsx","core/apollo/SecurityTokenApollo.ts","app/cards/indue/utilities/cardNumber.ts","app/cards/indue/IndueCardResetPinPage.tsx","app/cards/indue/IndueCardChangeStatusValidate.ts","app/cards/indue/IndueCardConfirmStatusChange.tsx","app/cards/indue/IndueCardListPage.tsx","app/cards/IndueCardConfirmCreateCard.tsx","app/account/AccountPage.tsx","app/authentication/Logout.tsx","app/authentication/ChangePassword/changePasswordValidator.ts","app/authentication/ChangePassword/ChangePasswordPage.tsx","app/authentication/ChangePassword/index.ts","app/authentication/ForgottenPassword.tsx","app/authentication/ResetPassword/ResetPasswordInputValidator.ts","app/authentication/ResetPassword/ResetPasswordForm.tsx","app/authentication/ResetPassword/ResetPassword.tsx","app/other/DisplayHtmlContent.tsx","app/other/TermsAndConditions.tsx","app/other/PrivacyPolicy.tsx","app/authentication/AcceptTerms.tsx","app/app/App.tsx","index.tsx"],"names":["Boolean","window","location","hostname","match","clientConfigFn","windowConfig","__INTERFI__","siteTitle","footerText","supportEmailAddress","supportPhoneNumber","bankingCutOffWarning","logoImageUri","logoSecondaryImageUri","heroImageUri","showInstrumentTitle","showAccountTitle","arrearsMessage","forgotUsernamePageTitle","forgotUsernamePageCopy","myFinancesTitle","maturesMetricLabel","accountAvailableLabel","minimumInstalmentLabel","redirectToSingleInstrument","hideTransferPage","transferMenuText","transactionHistoryLimitDays","transactionPageSize","hideLastLoginIp","loginWelcomeMessage","loginResetPasswordText","allowOnlinePasswordReset","allowOnLineStatements","baseuri","process","clientVersion","showClientVersion","showAvailableRedraw","showTermsAndConditions","showPrivacyPolicy","fundsTransferDescriptionRequired","showTransactionsAsLender","useSimpleLayout","currencyFormat","currencyLocale","hideCardPage","futureDatedTransferWarning","showUserInWelcomeMessage","showIconsTransactionPage","BETA_showDetailView","showPrimaryBorrowerName","showAccountCurrentRate","canViewArrearsAmount","Footer","className","to","IsNullOrWhiteSpace","value","trim","StringIsEqual","a","b","ignoreCase","localeCompare","toLowerCase","PreferredCorrespondanceType","PreferredContactTime","Period","IndueCardStatus","RecurrenceEndEnum","TaskFrequencyPeriod","LoginV3AuthError","MultiFactorResult","FileType","PrivacyLevel","AddressDetailType","FieldDataType","Header","clientConfig","src","alt","role","gql","AccountByIdOrNumberDocument","useAccountByIdOrNumberQuery","baseOptions","Apollo","ChangeAccountDescriptionDocument","ChangeAccountDescriptionComponent","props","mutation","InstrumentAuthorityAccountsDocument","useInstrumentAuthorityAccountsQuery","BpayBillerHistoryDocument","useBpayBillerHistoryQuery","BpayTransferRequestDocument","StopPendingFundsTransferDocument","CreateBpayBillerDocument","DeleteBpayPartyBillerDocument","TransferLimitValidationDocument","AccountFundsTransfersDocument","useAccountFundsTransfersQuery","CreatePayAnyoneBankAccountDocument","CurrentUserPartyBankAccountsDocument","useCurrentUserPartyBankAccountsQuery","DeletePartyBankAccountDocument","RequestPayAnyoneTransferDocument","useRequestPayAnyoneTransferMutation","InstrumentByAccountIdDocument","CloseOtherSessionsDocument","ChangeCurrentUserPasswordDocument","PasswordValidatorByApplicationDocument","BankingUserLogoutDocument","BankingUserLogoutComponent","RequestPasswordResetDocument","AcceptTermsDocument","BankingUserLoginV2Document","useBankingUserLoginV2Mutation","IsUserAuthenticatedDocument","useIsUserAuthenticatedQuery","IndueCardChangePinDocument","IndueCardChangeStatusDocument","useIndueCardChangeStatusMutation","IndueCardCreateCardDocument","IndueCardDetailsDocument","useIndueCardDetailsQuery","IndueCardsandAssociationsByAccountDocument","RequestNewMultiFactorSecurityTokenDocument","DisbursementRequestDocument","DisbursementRequestComponent","FinanceSummaryQueryDocument","useFinanceSummaryQueryQuery","InstrumentByIdOrNumberDocument","IsShariaDocument","IsShariaComponent","query","CDate","date","format","CTime","isNaN","Date","getTime","UserDetailsNavItem","state","showMenu","dropdownMenu","React","createRef","handleToggle","ev","setState","document","addEventListener","handleClickEvent","current","target","Element","contains","closeMenu","removeEventListener","this","name","session","Party","FirstName","LastName","OrganisationName","lastLoginAttempt","LastLoginAttempt","lastLoginFrom","LastLoginFrom","lastPasswordChange","LastPasswordChange","id","data-toggle","aria-haspopup","aria-expanded","aria-labelledby","href","Component","CardNavLink","accountNumber","url","data","variables","idOrNumber","account","accountByIdOrNumber","showCards","CardAvailable","Cards","length","NavBar","accountMatch","useRouteMatch","partialRefetch","notifyOnNetworkStatusChange","errorPolicy","userSessionData","userSessionError","error","userSessionLoading","loading","loggedIn","type","data-target","aria-controls","aria-label","isExact","params","accountId","userSession","pathname","Loading","aria-valuetext","CEmail","email","SupportContactInformation","IncludePlease","phoneNumber","emailAddress","LoginRow","attempt","currentSession","activeText","hasExpired","SessionStart","LastActivity","IpAddress","UserAgentHeader","Id","la","now","Expires","IsDeleted","hasMultipleActiveSessions","currentTime","currentSessionId","CurrentSession","LoginAttempts","some","ActiveSessions","hasMultipleActive","closeOtherSessions","called","handleCloseOtherSessions","input","CloseCurrentSession","scrollTo","top","behavior","map","x","onClick","PrivateRoute","isOnPath","path","indexOf","isAuthenticated","undefined","shouldRedirectToAcceptTerms","LastTermsAcceptance","pathName","HasTempPassword","shouldRedirectToChangePassword","getPathname","render","from","LoginWrapper","children","config","title","LoginHeader","heading","subHeading","Button","isSubmit","isBlock","disabled","style","buttonClasses","classNames","aria-hidden","LoginErrorMessage","errorMessage","loginV2","AuthError","Invalidcredentials","Mfatokeninvalid","Newpasswordinvalid","AuthMessage","Passwordexpired","Mfarequired","Requirepasswordchange","generateErrorMessage","loginError","loginResponse","EnterUsernamePassword","requiresMfa","requiresNewPassword","useState","username","setUsername","password","setPassword","userLogin","AuthSucceeded","autoComplete","onSubmit","e","preventDefault","Password","Username","context","headers","then","response","handleSubmit","htmlFor","placeholder","onChange","RequestMultiFactorTokenComponent","showRequestNewToken","getToken","requestMfaOnDisplay","visible","requestToken","seconds","setSeconds","alreadyRequestedMfa","setAlreadyRequestedMfa","useEffect","inputClasses","interval","setInterval","clearInterval","RequestTokenButton","toString","padStart","stopPropagation","EnterMfa","reset","twoFactorToken","setTwoFactorToken","TwoFactorToken","RequestMultiFactorToken","FieldErrorMessage","errorName","useAddErrorClass","fieldName","useFormikContext","errors","touched","getFieldId","getCurrencySymbol","Intl","NumberFormat","currency","formatToParts","Input","useField","field","helper","setValue","inputClassName","helpTextId","helpText","fieldId","handleOnChange","setTouched","replace","charallow","formProps","placeHolder","pattern","getPattern","inputMode","getInputMode","getType","printableOnly","label","thousandSeparator","allowLeadingZeros","allowNegative","decimalScale","fixedDecimalScale","onValueChange","floatValue","onBlur","_","maxLength","bind","Form","noValidate","initialFormValues","confirmPassword","EnterNewPassword","values","NewPassword","initialValues","validationSchema","yup","required","oneOf","min","matches","defined","Login","loginPage","setLoginPage","token","loginDetails","setLoginDetails","log","level","message","source","namespace","createDebug","debug","generateMessage","MoneyFormatted","amount","classes","addColour","locale","minimumFractionDigits","signMoney","direction","isLenderPerspective","MoneySigned","isShowZero","WelcomeMessage","showUser","FinanceSummaryView","financeSummary","onLineClick","Instruments","filter","inst","instrument","data-href","Number","PrimaryBorrower","Description","LoanPurpose","TotalPrincipal","TotalRedraw","Amount","navToInstrument","baseUrl","history","line","info","push","FinanceSummaryComponent","Query","CError","header","width","CApolloError","sortByProp","array","propName","order","dir","sort","notEmpty","makeNonEmpty","groupBy","transactions","getKey","keyComparisonCheck","reduce","acc","element","key","elements","i","splice","Title","subtitle","AccountTableRow","redrawConsideration","useHistory","ProductType","CurrentBalance","Redraw","AccountTableBody","Accounts","colSpan","RedrawConsideration","AccountsSummary","GreaterThanZero","displayValue","InstrumentHeader","MaturityDate","TotalTermMonths","RemainingTermMonths","InstrumentPage","instrumentNumber","instrumentByIdOrNumber","getSecurityTokenValidator","notRequired","RequestMultiFactorTokenFormik","meta","helpers","AddPayAnyone","goBack","payAnyoneAdded","createPayAnyone","addPayAnyonePage","setAddPayAnyonePage","AccountName","accountName","AccountNumber","Bsb","bsb","refetchQueries","result","createPayAnyoneBankAccount","NewPartyBankAccount","BankAccount","Code","max","test","isSubmitting","Message","TransferWizardContext","createContext","TransferWizardContextProvider","formState","updateFormsState","initialPage","useSelectionPage","page","updatePage","fundsTransferId","updateFundsTransferId","bpayBiller","updateBpayBiller","bankAccount","updateBankAccount","interAccount","updateInterAccount","updateAccountId","currentPage","updateform","pageState","updateFundsTransfer","biller","Provider","useTransferWizardContext","useContext","Error","Confirm","Create","Receipt","FromAccountCard","FundsTransferCardsContainer","Children","count","child","AccountCard","updateAccount","useTransferWizard","SelectAccount","authorityType","accounts","instrumentByAccount","CurrentUserAccountAuthority","BPay","Operate","PayAnyone","AccountSelect","TransferWizard","fundsTransferQuery","accountIdOrNumber","transferId","payAnyoneBankAccount","interAccountToAccount","redrawAccount","paymentAccount","createTransfer","formstate","confirmTransfer","modifyTransfer","gotoSelect","changeAccount","confirmBiller","confirmPayAnyone","confirmInterAccount","refetch","BankAccounts","findIndex","returnToHome","confirmPaymentAccount","confirmRedrawAccount","TransferWizardContainer","Select","PayAnyoneCard","letter","bankAccounts","transferWizard","BankIdentifierText","BankName","SelectPayAnyone","createNewAccount","setCreateNewAccount","PartyBankAccounts","payAnyone","payAnyoneAccounts","partyBankAccount","Deleted","toUpperCase","firstKey","secondKey","icon","faPlus","size","BankingCutoff","DatePicker","setFieldValue","selected","val","minDate","maxDate","dateFormat","ButtonGroupContext","ButtonGroup","composition","useButtonGroup","classnames","TransferUntilInput","showUntilInputBlock","frequency","Once","numberOfTimesInputEnabled","recurrenceEnd","Numberofocurrences","untilDateInputEnabled","Bydate","Never","minUntilDate","defaultConfig","minStartingDate","TransferScheduleInput","mergedConfig","Weekly","Fortnightly","Monthly","dataIdFromObject","defaultDataIdFromObject","startsWith","__typename","ClientSchema","ResultCode","success","badInput","exception","resolvers","Mutation","updateNetworkStatus","args","cache","isConnected","dismissNotification","root","_context","notificationId","warn","fragment","selectionSet","notificationSelections","selections","find","kind","t","definitions","fragSelections","trace","concat","mergeFieldSelections","cnotif","readFragment","Dismissed","writeFragment","Success","Data","ConversionType","InterestConversionNotification","_args","dismissed","BaseUri","BaseApiUri","joinPaths","LoginUri","SecurityUri","apolloCache","InMemoryCache","addTypename","client","ApolloClient","link","ApolloLink","onError","graphQLErrors","networkError","locations","statusCode","uriEqual","tolerant","includes","clearStore","catch","createUploadLink","credentials","uri","typeDefs","validateTransferDescription","transferDescription","mystring","String","containsNonPrintable","step","ascii","charCodeAt","validateLimit","limitType","friendlyText","moreThan","startingOn","parent","scheduledForToday","isSameDay","currentRedraw","createError","accountLimit","accountLimits","EffectiveDate","Limits","limit","RemainingDailyRedrawLimit","RemainingDailyPayAnyoneLimit","validateSchedule","endingOn","when","schema","numberOfTimesAmount","integer","FutureDatedWarningText","PaymentCard","details","Alert","CreatePayAnyone","faExclamationTriangle","CreatePayAnyoneForm","wizard","transferReference","ListGroup","ListGroupItem","iconType","faUniversity","faHashtag","faCommentAlt","faPen","faCalendarAlt","faRedoAlt","faTimes","faReceipt","faAddressBook","iconToUse","fixedWidth","keyText","descriptionText","DueOnListItems","recurring","formatDate","paymentDate","repeatText","recurrence","endDate","repeats","ListGroupHeader","addTimeZoneOffset","offsetMins","getTimezoneOffset","getFullYear","getMonth","getDate","Math","transferTypes","createTransferTimes","StartingOn","Frequency","RecurrenceEnd","NumberOfTimesAmount","EndingOn","createTransferVariable","withdrawalDescription","depositDescription","times","TransferType","FixedAmountOption","BankAccountId","ToAccountId","WithdrawalDescription","DepositDescription","AccountId","FromAccountId","ConfirmPayAnyone","requestPayment","paymentData","requestPayAnyoneTransfer","FundsTransfer","DueOnListItemsReceipt","fundsTransfer","FurtherNotice","SpecifiedDate","NumberOfTimes","PaymentReceipt","fetchPolicy","ProcessedAccountFundsTransfers","PendingAccountFundsTransfers","ReceiptNumber","PayAnyoneRequest","CLoanWord","shariaRentText","IsSharia","isSharia","DeleteTransfer","stopTransferMutation","stopPendingFundsTransfer","BillerName","ToAccountDescription","CreatedOn","RegularPayment","FundsTransferId","Payment","PaymentForm","ConfirmPayment","FromAccountDescription","PaymentAccountCard","SelectPayment","paymentAccounts","CreatePayment","ConfirmRedraw","RedrawReceipt","RedrawCard","SelectRedraw","redrawAccounts","RedrawPage","CreateRedraw","CreateInterAccount","fromAccountId","currentAccount","CreateInterAccountForm","availableTransfer","flatMap","ConfirmInterAccount","fromAccount","toAccount","sendPaymentRequest","InterAccountReceipt","SelectInterAccount","InterAccountPage","AddBpayBiller","billerAdded","createBiller","billerDescription","billerCode","customerReferenceNumber","addBpayBillerPage","setAddBpayBillerPage","BillerCode","CustomerReferenceNumber","BillerDescription","createBpayBiller","NewBpayBiller","optional","BillerCard","billers","billerNameClass","Billercode","SelectBpay","createNewBiller","setCreateNewBiller","BpayBillerHistory","billerHistory","bpayTransfer","transferTimes","SaveBillerDetails","bpayTransferRequest","BPayRequest","CreateBpay","ConfirmBpay","BpayText","billerDisplayName","description","BillerHistoryRow","code","deleteBiller","ManageBpayBillerHistoryView","ManageBpayBillerHistory","billerToDelete","setBillerToDelete","deleteBPayMutation","deleteBpayLoading","bpayHistory","PartyBillerHistoryId","ManagePayAnyoneAccountsView","deletePartyBankAccount","pba","IsUsedByTransfer","BankAccountRow","ManagePayAnyoneAccounts","partyBankAccountToBeDeleted","setPartyBankAccountToBeDeleted","deletePartyBankAccountMutation","deletePbaLoading","deletePbaError","PartyBankAccountId","ActionCard","cardClassName","BpayCard","PayAnyoneAllowedCard","DailyPayAnyoneLimit","RedrawAllowedCard","DailyRedrawLimit","InterAccountTransferCard","BankAccountTransferCard","interAccountAllowed","availableBankAccounts","SettingsCard","payAnyoneAllowed","bPayAllowed","TransferCards","forEach","showBPay","showPayAnyone","showInterAccountTransfer","showRedraw","redrawAllowed","showBankAccountTransfer","showSettings","TransferUntil","transfer","RemainingNumberOfTimes","toLocaleUpperCase","TransferRow","canDeleteTransfer","AvailableActions","faMinusCircle","color","NextScheduledDate","TransferTypeDescription","PendingTransferRows","pendingTransfers","PendingTransfers","RecentTransfers","recentTransfers","AccountTransferHome","transferModel","BPayAllowed","InterAccountAllowed","PayAnyoneAllowed","redraw","RedrawAllowed","TransferHistory","AccountTransferPage","recentTransfersToShow","basePath","pendingFundsTransfers","processedFundsTransfers","slice","transferDetailsProps","AllowOnlineDisbursements","StatementDocumentRow","statement","generateStatementLink","rel","PeriodFrom","PeriodTo","InstrumentId","FileId","StatementsList","statements","validFileExtensions","isImageExt","file","ext","endsWith","FileThumb","thumb","nextProps","reader","FileReader","onloadend","readAsDataURL","height","round","CErrorMessage","data-valmsg-for","data-valmsg-replace","CInputFormGroup","groupClassName","inputType","inputId","placeholderText","showLabel","fieldWrapper","fieldNode","formNote","inputmode","FormikDebuggerConnected","connect","formik","toggleShow","show","position","right","bottom","overflow","padding","backgroundColor","Fragment","isValidating","submitCount","JSON","stringify","FormikDebugger","maximised","isProd","yupDisbursementRequestInput","File","PayeeName","PaymentDate","PaymentDescription","RequestedAmount","positive","DisbursementRequestSuccessful","disbursement","Documents","doc","fileItem","FileItemView","FileName","DisbursementRequestForm","mutateFn","SupplierBankAccountName","update","event","currentTarget","files","disbursementRequest","PlainAccountDescription","onStartEdit","yupChangeAccountDescriptionInput","Name","ChangeAccountDescription","previousDescription","onCancel","onUpdated","clientMutationId","Guid","create","isDisabled","changeAccountDescription","EditableAccountDescription","isEditing","onFinishEdit","NumberPercentage","number","maximumFractionDigits","GenerateTile","AccountSummaryHeader","offsetProduct","OffsetAccount","ArrearsBalance","Rate","MonthlyInstalment","NextInstalmentDue","TransactionPageIcon","iconName","faMoneyBillAlt","faCalendar","faArrowAltCircleDown","faArrowAltCircleUp","faComment","getIcon","iconStyle","marginRight","PaginationFooter","gotoPage","pagination","totalPages","pageNodes","nextPage","pageTransactions","filteredTransactions","filteredTrans","tran","IsPending","WasReversed","AppearsOnStatement","WasBackedOut","cutOffDate","addDays","filterTransactions","pagedTransactions","startIndex","endIndex","usePagedTransactions","disablePaging","setCurrentPage","Transactions","ceil","constrainPage","pageNumber","returnValue","previousPage","TransactionPageIconMoney","colour","getColour","DescriptionListItem","DetailViewerContainer","DetailView","trans","TransactionDescription","transaction","faClock","ExpandDetailView","currentDetail","setDetailView","transId","handleClick","faChevronUp","cursor","faChevronDown","TransactionRow","detailView","Effective","TransactionType","Note","Increase","Decrease","Balance","DesktopTransactionList","detailTransaction","setDetailTransaction","MobileTransaction","pendingClassName","textAlign","TransactionDateCard","groupItemClasses","toDateString","showDetailView","MobileTransactionList","isVisible","setIsVisible","setLoading","items","setItems","hasNextPage","setHasNextPage","setError","loadItems","newHasNextPage","loadMore","useLoadItems","ARRAY_SIZE","startCursor","Promise","resolve","newArray","setTimeout","groupedTransactionList","newItem","useInfiniteScroll","onLoadMore","rootMargin","sentryRef","toggleVisibility","scrollY","endOfDay","firstElement","secondElement","valueOf","item","ref","faArrowUp","TransactionListView","useMediaQuery","ListItem","TransactionContainer","StatementText","TransactionView","PendingTransactionView","MobileTransactionDetail","AccountView","historyDays","IndueCardPageCards","indueCard","CanHold","CanActivate","CanReportLostStolen","CanClose","statusToText","status","Active","Activeoff","Cardcreated","Closed","Lost","Ordered","Other","Restricted","Stolen","Damaged","CardTableRow","card","maskedCard","CardNumber","substr","ExpiryDate","Status","CardTableBody","cards","IndueCardListTable","selectable","tableClassName","IndueCardPage","CardId","cardId","indueCardDetails","initialState","childrenVisible","DelayedRender","timerId","setChildrenVisible","delay","clearTimeout","isTokenRequiredError","extensions","useSecurityTokenMutation","mutationResult","tokenRequired","setTokenRequired","originalResponse","filteredErrors","getMaskedCardNumber","cardNum","IndueCardResetPinPage","changePin","changePinData","changePinError","pinString","NewPin","Pin","SuccesfullyChangedPin","Result","ConfirmPin","RegExp","Validate","selectedStatus","changeStatus","ActivateCardForm","CloseCardForm","HoldCardForm","LostOrStolenCardForm","console","IndueCardConfirmStatusChange","statusType","RequestCard","queryResult","cardAvailable","indueCardsByAccount","association","partyAssociationByAccount","authority","IsSecondaryBorrower","PrimaryBorrowerHasCard","IsNonBorrower","requestCardError","IndueCardListPage","accountIdString","induecards","IndueCardConfirmCreateCardPage","acceptedTerms","setAcceptedTerms","readTerms","setReadTerms","createCard","numPages","setNumPages","pdfDocument","useCallback","onscroll","difference","scrollHeight","scrollTop","clientHeight","abs","toolTipRef","useRef","toolTip","findDOMNode","$","tooltip","handleUserAcceptsTerms","onLoadSuccess","inputRef","Array","el","index","scale","tabIndex","pointerEvents","marginTop","AccountPageComponent","withRouter","cardsEnabled","Statements","cardid","IndueCardConfirmCreateCard","Logout","onLogout","onCompleted","logout","logoutMuation","err","confirmNewPassword","oldPassword","newPassword","securityToken","requiresToken","ChangePassword","changePassword","changePasswordResult","authenticatedData","passwordValidator","usePasswordValidatorByApplicationQuery","firstLogin","IsFirstLogin","hasTempPassword","changeCurrentUserPassword","UseMultiFactorAuth","getErrorMessage","SuccesfullyChangedPassword","passwordValidatorByApplication","MinimumPasswordLength","RequireLowerCaseCharacters","MinimumLowerCaseCharacterCount","RequireUpperCaseCharacters","MinimumUpperCaseCharacterCount","ProhibitRepeatingAlphabetCharacters","ProhibitSequentialAlphabetCharacters","RequireNumberCharacters","MinimumNumberCharacterCount","ProhibitRepeatingNumberCharacters","ProhibitSequentialNumberCharacters","RequireBaseSymbols","MinimumBaseSymbolCharacterCount","RequireExtendedSymbols","MinimumExtendedSymbolCharacterCount","ProhibitRepeatingSymbolCharacters","MinimumPasswordHistory","vals","CurrentPassword","ForgottenPassword","ResetPasswordInputValidator","shape","ResetMethod","ContactDetails","is","ResetPasswordForm","submitting","submitForm","checked","ResetPassword","passwordReset","ResetResults","requestPasswordReset","DisplayHtmlContext","content","setContent","setloading","fetch","ok","text","getContent","dangerouslySetInnerHTML","__html","TermsAndConditions","PrivacyPolicy","DisplayHtmlContent","AcceptTerms","acceptTerms","onScroll","App","useLocation","component","AppRouter","require","ApolloApp","ApolloProvider","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.9046ef28.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n process.env.PUBLIC_URL || \"\",\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","/** Base config at build time, not overriden by window.__INTERFI__ */\r\nexport interface BaseConfig {\r\n\t/** BaseUri, used to access the api. Fixed at build time, window config wont override. */\r\n\tbaseuri: string;\r\n\r\n\t/** Build version. Fixed at build time, window config wont override */\r\n\tclientVersion: string;\r\n}\r\n\r\n/** Client configuration options */\r\nexport interface ClientConfig {\r\n\t/** Title used for the site */\r\n\tsiteTitle: string;\r\n\r\n\t/** Brand text in the footer */\r\n\tfooterText: string;\r\n\r\n\t/** Contact email address */\r\n\tsupportEmailAddress: string;\r\n\r\n\t/** Contact phone number */\r\n\tsupportPhoneNumber: string;\r\n\r\n\t/** Text value for the bank cut off eg 2pm */\r\n\tbankingCutOffWarning: string;\r\n\r\n\t/** Main Logo, eg '/images/logo.png' */\r\n\tlogoImageUri: string;\r\n\r\n\t/** Secondary Logo, eg '/images/secondary-logo.png' */\r\n\tlogoSecondaryImageUri: string;\r\n\r\n\t/** Large image on login screen. at least 1000x1000, will scale and cover. eg '/images/hero.jpg' */\r\n\theroImageUri: string;\r\n\r\n\t/** Show the instrument title on the instrument page */\r\n\tshowInstrumentTitle: boolean;\r\n\r\n\t/** Show Account Title on the account page */\r\n\tshowAccountTitle: boolean;\r\n\r\n\t/** Show an arrears message on the account page if account in arrears */\r\n\tarrearsMessage: string;\r\n\r\n\t/** Custom page header for the 'Can’t remember your username' page */\r\n\tforgotUsernamePageTitle: string;\r\n\r\n\t/** Custom body copy for the 'Can’t remember your username' page */\r\n\tforgotUsernamePageCopy: string;\r\n\r\n\t/** title to use for My Finances, defaults to My Finances */\r\n\tmyFinancesTitle: string;\r\n\r\n\t/** Label to use for matures metric, defaults to Matures */\r\n\tmaturesMetricLabel?: string;\r\n\r\n\t/** Account screen available column header, defaults to Available */\r\n\taccountAvailableLabel: string;\r\n\r\n\t/** Account screen - minimum instalment label */\r\n\tminimumInstalmentLabel: string;\r\n\r\n\t/** Redirect to the instrument page if the user only has a single instrument */\r\n\tredirectToSingleInstrument: boolean;\r\n\r\n\t/** Hide the Nav link to the transfers page */\r\n\thideTransferPage: boolean;\r\n\r\n\t/** Text to use for Transfer menu item */\r\n\ttransferMenuText: string;\r\n\r\n\t/** Hide the Last login from the menu */\r\n\thideLastLoginIp: boolean;\r\n\r\n\t/** Number of days of transactions to show */\r\n\ttransactionHistoryLimitDays?: number;\r\n\r\n\t/** How many transactions to show per page */\r\n\ttransactionPageSize?: number;\r\n\r\n\t/** Welcome message to display on login screen */\r\n\tloginWelcomeMessage: string;\r\n\r\n\t/** Reset Password button text displayed on login screen */\r\n\tloginResetPasswordText: string;\r\n\r\n\t/** Allow passwords to be reset online, otherwise show forgotten password */\r\n\tallowOnlinePasswordReset: boolean;\r\n\r\n\t/** Show online statements */\r\n\tallowOnLineStatements: boolean;\r\n\r\n\t/** Show available redraw columns and tile */\r\n\tshowAvailableRedraw: boolean;\r\n\r\n\t/** Show terms and conditions in footer */\r\n\tshowTermsAndConditions: boolean;\r\n\r\n\t/** Show Privacy Policy in footer */\r\n\tshowPrivacyPolicy: boolean;\r\n\r\n\t/** Display version number in footer */\r\n\tshowClientVersion: boolean;\r\n\r\n\t/** If true makes the funds transfer description and reference required fields */\r\n\tfundsTransferDescriptionRequired: boolean;\r\n\r\n\t/** If true show debit/credit transactions from a Lender's perspective, if false, show from a Borrowers perspective */\r\n\tshowTransactionsAsLender: boolean;\r\n\r\n\t/** If true, override login style to have a full coloured background, login box centered, and logo in the top-left corner */\r\n\tuseSimpleLayout: boolean;\r\n\r\n\t/** Specifies the local currency symbol to be used with the Customer Portal */\r\n\tcurrencyFormat: string;\r\n\r\n\t/** Specifies the locale for the currency symbol to be used with the Customer Portal this can affect whether the symbol is prefixed by a letter, ie A$ vs $ */\r\n\tcurrencyLocale: string;\r\n\r\n\t//** Hide the Nav link to the Cards page */\r\n\thideCardPage: boolean;\r\n\r\n\t// ** Text value for the future dated funds transfer warning */\r\n\tfutureDatedTransferWarning: string;\r\n\r\n\t//** If true, will show the logged on user's name after 'myFinancesTitle', ie. allows welcome message to be set */\r\n\tshowUserInWelcomeMessage: boolean;\r\n\r\n\tshowIconsTransactionPage: boolean;\r\n\r\n BETA_showDetailView: boolean;\r\n\r\n\t//** If true, this will display the Primary Borrowers Name on the list of acccounts rather than the Instrument Description or Loan Purpose */\r\n\tshowPrimaryBorrowerName: boolean;\r\n\t\r\n\t//** If true, this will display an accounts current rate in the account summary header */\r\n\tshowAccountCurrentRate: boolean;\r\n\r\n\t//** If true, this will display overlimit ammount in the account summary header */\r\n\tcanViewArrearsAmount: boolean;\r\n\r\n}\r\nconst clientConfigFn = (): ClientConfig & BaseConfig => {\r\n\tvar windowConfig = window && (window as any).__INTERFI__ as Partial;\r\n\treturn {\r\n\t\tsiteTitle: \"\",\r\n\t\tfooterText: \"\",\r\n\t\tsupportEmailAddress: \"\",\r\n\t\tsupportPhoneNumber: \"\",\r\n\t\tbankingCutOffWarning: \"\",\r\n\t\tlogoImageUri: \"\",\r\n\t\tlogoSecondaryImageUri: \"\",\r\n\t\theroImageUri: \"\",\r\n\t\tshowInstrumentTitle: true,\r\n\t\tshowAccountTitle: true,\r\n\t\tarrearsMessage: \"\",\r\n\t\tforgotUsernamePageTitle: \"\",\r\n\t\tforgotUsernamePageCopy: \"\",\r\n\t\tmyFinancesTitle: \"My Finances\",\r\n\t\tmaturesMetricLabel: \"Matures\",\r\n\t\taccountAvailableLabel: \"Available\",\r\n\t\tminimumInstalmentLabel: \"Min monthly instalment\",\r\n\t\tredirectToSingleInstrument: false,\r\n\t\thideTransferPage: false,\r\n\t\ttransferMenuText: \"Transfer\",\r\n\t\ttransactionHistoryLimitDays: 90,\r\n\t\ttransactionPageSize: 20,\r\n\t\thideLastLoginIp: false,\r\n\t\tloginWelcomeMessage: \"Welcome to your Online Portal\",\r\n\t\tloginResetPasswordText: \"Reset Password\",\r\n\t\tallowOnlinePasswordReset: false,\r\n\t\tallowOnLineStatements: false,\r\n\t\tbaseuri: process.env.REACT_APP_CAPITAL_BASEURI || \"///\",\r\n\t\tclientVersion: process.env.REACT_APP_CAPITAL_CLIENT_VERSION || \"\",\r\n\t\tshowClientVersion: true,\r\n\t\tshowAvailableRedraw: true,\r\n\t\tshowTermsAndConditions: false,\r\n\t\tshowPrivacyPolicy: false,\r\n\t\tfundsTransferDescriptionRequired: false,\r\n\t\tshowTransactionsAsLender: true,\r\n\t\tuseSimpleLayout: false,\r\n\t\tcurrencyFormat: \"AUD\",\r\n\t\tcurrencyLocale: \"EN-AU\",\r\n\t\thideCardPage: true,\r\n\t\tfutureDatedTransferWarning: \"Future-dated transfers require cleared funds in your account on the day before the scheduled transfer date or your transfer will be unsuccessful.\",\r\n\t\tshowUserInWelcomeMessage: false,\r\n\t\tshowIconsTransactionPage: false,\r\n BETA_showDetailView: false,\r\n\t\tshowPrimaryBorrowerName: false,\r\n\t\tshowAccountCurrentRate: false,\r\n\t\tcanViewArrearsAmount: false,\r\n\r\n\t\t...windowConfig, //overrides from live site\r\n\t};\r\n};\r\n\r\nexport {\r\n\tclientConfigFn\r\n}\r\n","import React from \"react\";\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst Footer = () => {\r\n const { clientVersion, footerText, showPrivacyPolicy, showTermsAndConditions, showClientVersion, useSimpleLayout } = clientConfigFn();\r\n if(!useSimpleLayout) {\r\n return (\r\n \r\n )\r\n } else {\r\n return <>\r\n }\r\n};\r\n\r\nexport {\r\n Footer\r\n};\r\n","export const EmptyString = \"\";\r\n\r\nexport function IsNullOrWhiteSpace(value?: string | null) {\r\n return !value || !value.trim();\r\n}\r\n\r\nexport function NotEmptyOrWhiteSpace(value?: string | null): value is string {\r\n return !IsNullOrWhiteSpace(value);\r\n}\r\n\r\n/**\r\n * TODO: check IE < 11 compat with localeCompare\r\n * @param a\r\n * @param b\r\n * @param ignoreCase\r\n */\r\nexport function StringIsEqual(\r\n a?: string | null,\r\n b?: string | null,\r\n ignoreCase: boolean = true\r\n): boolean {\r\n return (\r\n a === b ||\r\n (a != null &&\r\n b != null &&\r\n (0 === a.localeCompare(b) ||\r\n (ignoreCase && a.toLowerCase() === b.toLowerCase())))\r\n );\r\n}\r\n\r\nexport function toBool(value?: string, fallback: boolean = false) {\r\n if (IsNullOrWhiteSpace(value)) {\r\n return fallback;\r\n }\r\n if (typeof value === \"string\") {\r\n value = value.trim().toLowerCase();\r\n }\r\n switch (value) {\r\n case \"true\":\r\n return true;\r\n case \"1\":\r\n return true;\r\n case \"on\":\r\n return true;\r\n case \"yes\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nexport function toOptionalNumber(value?: string) {\r\n if (IsNullOrWhiteSpace(value)) {\r\n return undefined;\r\n }\r\n return parseInt(value || \"\", 10);\r\n}\r\n","import * as React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { IsNullOrWhiteSpace } from 'core/util/stringExtensions';\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nconst Header = () => {\r\n const clientConfig = clientConfigFn();\r\n\r\n if(!clientConfig.useSimpleLayout) {\r\n return (\r\n
\r\n
\r\n {!IsNullOrWhiteSpace(clientConfig.logoImageUri) &&\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n {!IsNullOrWhiteSpace(clientConfig.logoSecondaryImageUri) &&\r\n
\r\n\r\n \r\n
\r\n }\r\n
\r\n
\r\n );\r\n } else {\r\n return <>\r\n }\r\n}\r\n\r\nexport {\r\n Header\r\n}\r\n","// tslint:disable max-line-length\r\n// tslint:disable no-namespace\r\n// tslint:disable max-classes-per-file\r\n// tslint:disable trailing-comma\r\n// tslint:disable no-string-literal\r\n// tslint:disable no-shadowed-variable array-type\r\nimport { gql } from '@apollo/client';\r\nimport * as React from 'react';\r\nimport * as Apollo from '@apollo/client';\r\nimport * as ApolloReactComponents from '@apollo/client/react/components';\r\nimport * as ApolloReactHoc from '@apollo/client/react/hoc';\r\nexport type Maybe = T | undefined;\r\nexport type Exact = { [K in keyof T]: T[K] };\r\nexport type Omit = Pick>;\r\n/** All built-in and custom scalars, mapped to their actual values */\r\nexport type Scalars = {\r\n ID: string;\r\n String: string;\r\n Boolean: boolean;\r\n Int: number;\r\n Float: number;\r\n /** The multiplier path scalar represents a valid GraphQL multiplier path string. */\r\n MultiplierPath: any;\r\n Uuid: any;\r\n /** The built-in `Decimal` scalar type. */\r\n Decimal: number;\r\n /** The `Long` scalar type represents non-fractional signed whole 64-bit numeric values. Long can represent values between -(2^63) and 2^63 - 1. */\r\n Long: any;\r\n /** The `DateTime` scalar represents an ISO-8601 compliant date time type. */\r\n DateTime: Date;\r\n};\r\n\r\n/** Schema */\r\nexport type Query = {\r\n __typename?: 'Query';\r\n /** Get a user's account by it's ID or number */\r\n accountByIdOrNumber?: Maybe;\r\n /** Retrieve the redraw/payanyone limits for an account belonging to a user */\r\n accountLimits?: Maybe>>;\r\n accountsTransferableByAccount?: Maybe>>;\r\n authorityOperateAccounts?: Maybe>>;\r\n /** Retrieve bank branch details by BSB */\r\n bankBranchLookup?: Maybe;\r\n /** Retrieve BPAY Biller details by the biller code */\r\n bpayBiller?: Maybe;\r\n /** Validates a BPay Biller Code and CRN */\r\n bpayValidate?: Maybe;\r\n /** The current users finance summary */\r\n financeSummary?: Maybe;\r\n /** Gets the details of the IndueCard from the supplied CardId */\r\n indueCardDetails?: Maybe;\r\n /** Gets the IndueCards for the supplied account and logged in party */\r\n indueCardsByAccount?: Maybe>>;\r\n /** Retrieves the parent instrument by the account number or id */\r\n instrumentByAccount?: Maybe;\r\n /** Get details of a user's Instrument by ID or number */\r\n instrumentByIdOrNumber?: Maybe;\r\n localConfig: LocalConfig;\r\n /** Retrieves the party association for the current user to the account by the account number or id */\r\n partyAssociationByAccount?: Maybe;\r\n /** Gets the Password Validation rules for an application */\r\n passwordValidatorByApplication?: Maybe;\r\n /** Get all transaction categories. */\r\n transactionCategories?: Maybe>>;\r\n /** Get Transactions on an Account */\r\n transactionsByAccount?: Maybe;\r\n userNotificationInteractions?: Maybe;\r\n /** Retrieve upcoming fixed interest and interest only expiries */\r\n userNotifications?: Maybe>>;\r\n /** Retrieve information about the current users session */\r\n userSession?: Maybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryAccountByIdOrNumberArgs = {\r\n idOrNumber?: Maybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryAccountLimitsArgs = {\r\n accountId?: Maybe;\r\n filter?: Maybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryAccountsTransferableByAccountArgs = {\r\n input: AccountsTransferableByAccountInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryAuthorityOperateAccountsArgs = {\r\n input?: Maybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryBankBranchLookupArgs = {\r\n input: BankBranchDetailsInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryBpayBillerArgs = {\r\n input: BpayBillerDetailsInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryBpayValidateArgs = {\r\n input: BpayValidatorInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryIndueCardDetailsArgs = {\r\n input: IndueCardDetailsInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryIndueCardsByAccountArgs = {\r\n input: IndueCardsByAccountInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryInstrumentByAccountArgs = {\r\n account: InstrumentByAccountInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryInstrumentByIdOrNumberArgs = {\r\n idOrNumber?: Maybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryPartyAssociationByAccountArgs = {\r\n input: PartyAssociationByAccountInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryTransactionsByAccountArgs = {\r\n accountId: Scalars['Uuid'];\r\n after?: Maybe;\r\n first?: Maybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryUserNotificationInteractionsArgs = {\r\n input?: Maybe;\r\n skip?: Maybe;\r\n take?: Maybe;\r\n};\r\n\r\nexport type Mutation = {\r\n __typename?: 'Mutation';\r\n /** Records that the user has accepted the terms and conditions */\r\n acceptTerms?: Maybe;\r\n acknowledgeUserNotification?: Maybe;\r\n activateCard?: Maybe;\r\n /** Attempt to apply a list of profile specific account Categorisation updates */\r\n assignAccountCategories?: Maybe;\r\n /** Creates a new BPAY transfer from a user's account */\r\n bpayTransferRequest?: Maybe;\r\n categoriseAccountTransactions?: Maybe;\r\n /** Attempt to apply a list of profile specific account Categorisation updates */\r\n categoriseProfileAccounts?: Maybe;\r\n /** Updates the name of the user's account */\r\n changeAccountDescription?: Maybe;\r\n changeCardPin?: Maybe;\r\n /**\r\n * Change the password of the currently logged in user\r\n * This endpoint supports Two Factor Authorisation\r\n */\r\n changeCurrentUserPassword?: Maybe;\r\n /** Change the Status of an Indue Card */\r\n changePin?: Maybe;\r\n /** Change the Pin for an Indue Card */\r\n changeStatus?: Maybe;\r\n changeUsername?: Maybe;\r\n /** Can be used to check if a MFA token is valid. MFA token can be requested by using the RequestMultiFactorAuthorisation mutation */\r\n checkMultiFactorAuthorisation?: Maybe;\r\n /** Closes all of the user's open sessions. Optionally can be used to close the current session as well */\r\n closeCurrentUserSessions?: Maybe;\r\n /** Create a saved BPAY Biller for the user */\r\n createBpayBiller?: Maybe;\r\n /** Create an Indue Card */\r\n createCard?: Maybe;\r\n /** Create a saved Pay Anyone Bank Account for the user */\r\n createPayAnyoneBankAccount?: Maybe;\r\n /** Deletes a user's saved BPAY biller */\r\n deleteBpayPartyBiller?: Maybe;\r\n /** Delete a bank account from the current user */\r\n deletePartyBankAccount?: Maybe;\r\n deleteProfileCustomAccountCategory?: Maybe;\r\n /** Create a disbursement request and optionally allow the user to upload supporting documentation */\r\n disbursementRequest?: Maybe;\r\n dismissNotification?: Maybe;\r\n /**\r\n * Logs in a user and if succesfull returns a http only authorization cookie.\r\n * This endpoint will automatically trigger the sending of a Two Factor Token if required.\r\n * The field Code of the response indicates whether login was successfull\r\n * * 499 - A Two Factor Token is required\r\n * * 498 - The supplied Two Factor Token is invalid\r\n * * Unauthorized - The username/password was incorrect or the account has been locked\r\n * * BadRequest - The temporary password has expired and a new temporary password must be requested\r\n * * 200 - The user has logged in successfully\r\n * \r\n * CanUseTrustedDevice indicates if the profile has the Trusted device feature enabled and is\r\n * only populated when the endpoint returns a 499 two factor token required response\r\n */\r\n login?: Maybe;\r\n /**\r\n * Used to retrieve a JWT access token and optionally a trusted device token.\r\n * The tokens will be returned as http only cookies as well as in the body of the response\r\n */\r\n loginV2?: Maybe;\r\n /** Ends the user's current session. This should be called as the final part of any logout flow */\r\n logout?: Maybe;\r\n /** Attempt to apply a list of profile specific account Categorisation updates */\r\n removeAccountFromCategory?: Maybe;\r\n /** Attempt to apply a list of profile specific account ordering updates */\r\n reorderProfileAccounts?: Maybe;\r\n requestInterInstrumentTransfer?: Maybe;\r\n /**\r\n * Request a new Two Factor Token. This endpoint can only be called by logged in users.\r\n * This should be called after an endpoint indicates that a two factor token is required\r\n */\r\n requestMultiFactorAuthorisation?: Maybe;\r\n /**\r\n * If a user forgets their password they can request a password reset if it's been enabled\r\n * An email or SMS with their new login details will be sent to the user if the provided details are correct\r\n */\r\n requestPasswordReset?: Maybe;\r\n requestPayAnyoneTransfer?: Maybe;\r\n /**\r\n * Request a new Two Factor Token. This endpoint can only be called by logged in users.\r\n * This should be called after an endpoint indicates that a two factor token is required\r\n */\r\n requestTrustedDevice?: Maybe;\r\n /** Stop a user's funds transfer that has not yet executed */\r\n stopPendingFundsTransfer?: Maybe;\r\n suspendCard?: Maybe;\r\n /** Update the Name and optional ordering of the provided categories */\r\n updateProfileAccountCategories?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationAcknowledgeUserNotificationArgs = {\r\n input: AcknowledgedUserNotificationInput;\r\n};\r\n\r\n\r\nexport type MutationActivateCardArgs = {\r\n input: ActivateCardInput;\r\n};\r\n\r\n\r\nexport type MutationAssignAccountCategoriesArgs = {\r\n input?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationBpayTransferRequestArgs = {\r\n input: BpayTransferRequestInput;\r\n};\r\n\r\n\r\nexport type MutationCategoriseAccountTransactionsArgs = {\r\n input?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationCategoriseProfileAccountsArgs = {\r\n input?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationChangeAccountDescriptionArgs = {\r\n input: ChangeAccountDescriptionInput;\r\n};\r\n\r\n\r\nexport type MutationChangeCardPinArgs = {\r\n input: ChangeCardPinInput;\r\n};\r\n\r\n\r\nexport type MutationChangeCurrentUserPasswordArgs = {\r\n input: ChangePasswordInput;\r\n};\r\n\r\n\r\nexport type MutationChangePinArgs = {\r\n input: IndueCardChangePinInput;\r\n};\r\n\r\n\r\nexport type MutationChangeStatusArgs = {\r\n input: IndueCardChangeStatusInput;\r\n};\r\n\r\n\r\nexport type MutationChangeUsernameArgs = {\r\n input: ChangeUsernameInput;\r\n};\r\n\r\n\r\nexport type MutationCheckMultiFactorAuthorisationArgs = {\r\n input: CheckMultiFactorAuthorisationInput;\r\n};\r\n\r\n\r\nexport type MutationCloseCurrentUserSessionsArgs = {\r\n input: ForceCloseCurrentUserSessionsInput;\r\n};\r\n\r\n\r\nexport type MutationCreateBpayBillerArgs = {\r\n input: CreateBpayBillerInput;\r\n};\r\n\r\n\r\nexport type MutationCreateCardArgs = {\r\n input: IndueCardCreateCardInput;\r\n};\r\n\r\n\r\nexport type MutationCreatePayAnyoneBankAccountArgs = {\r\n input: CreatePayAnyoneBankAccountInput;\r\n};\r\n\r\n\r\nexport type MutationDeleteBpayPartyBillerArgs = {\r\n input: DeleteBpayPartyBillerInput;\r\n};\r\n\r\n\r\nexport type MutationDeletePartyBankAccountArgs = {\r\n input: DeletePartyBankAccountInput;\r\n};\r\n\r\n\r\nexport type MutationDeleteProfileCustomAccountCategoryArgs = {\r\n input: DeleteProfileCustomAccountCategoryInput;\r\n};\r\n\r\n\r\nexport type MutationDisbursementRequestArgs = {\r\n input: DisbursementRequestInput;\r\n};\r\n\r\n\r\nexport type MutationDismissNotificationArgs = {\r\n NotificationId: Scalars['ID'];\r\n};\r\n\r\n\r\nexport type MutationLoginArgs = {\r\n input: LoginInput;\r\n};\r\n\r\n\r\nexport type MutationLoginV2Args = {\r\n input: LoginV2Input;\r\n};\r\n\r\n\r\nexport type MutationRemoveAccountFromCategoryArgs = {\r\n input?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationReorderProfileAccountsArgs = {\r\n input?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationRequestInterInstrumentTransferArgs = {\r\n input: RequestInterInstrumentTransferInput;\r\n};\r\n\r\n\r\nexport type MutationRequestMultiFactorAuthorisationArgs = {\r\n input?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationRequestPasswordResetArgs = {\r\n input: ResetPasswordInput;\r\n};\r\n\r\n\r\nexport type MutationRequestPayAnyoneTransferArgs = {\r\n input: RequestPayAnyoneTransferInput;\r\n};\r\n\r\n\r\nexport type MutationRequestTrustedDeviceArgs = {\r\n input: RequestTrustedDeviceInput;\r\n};\r\n\r\n\r\nexport type MutationStopPendingFundsTransferArgs = {\r\n input: StopPendingFundsTransferInput;\r\n};\r\n\r\n\r\nexport type MutationSuspendCardArgs = {\r\n input: SuspendCardInput;\r\n};\r\n\r\n\r\nexport type MutationUpdateProfileAccountCategoriesArgs = {\r\n input?: Maybe;\r\n};\r\n\r\nexport type Account = {\r\n __typename?: 'Account';\r\n /**\r\n * Account limits for given date range. If none provided will be as of now. Includes from\r\n * and to. If\r\n */\r\n AccountLimits?: Maybe>>;\r\n AllowAdhocPaymentDisbursements?: Maybe;\r\n AllowOnlineDisbursements?: Maybe;\r\n AnnualInstalment?: Maybe;\r\n ApplicationAmount?: Maybe;\r\n /** application number related to the account. */\r\n ApplicationNumber?: Maybe;\r\n ApprovedAmount?: Maybe;\r\n /** current arrears balance. */\r\n ArrearsBalance?: Maybe;\r\n BankAccounts?: Maybe>>;\r\n /** BankIdentifierText code for the account. */\r\n BankIdentifierText?: Maybe;\r\n /** Biller Code for the given account set at product level. */\r\n BillerCode?: Maybe;\r\n /** Bpay Number for the account. */\r\n BpayNumber?: Maybe;\r\n CardAccount?: Maybe;\r\n CardAvailable?: Maybe;\r\n CardBalance?: Maybe;\r\n /** identifier for the account. */\r\n CardIdentifier?: Maybe;\r\n CardLimit?: Maybe;\r\n CardProduct?: Maybe;\r\n /** current amount reserved for a linked card. */\r\n CardReservation?: Maybe;\r\n Cards?: Maybe>>;\r\n /** current principal balance. */\r\n CurrentBalance?: Maybe;\r\n /** currently remaining daily limit. */\r\n CurrentDailyPayAnyoneLimit?: Maybe;\r\n /** currently remaining daily limit. */\r\n CurrentDailyRedrawLimit?: Maybe;\r\n /** current instalament type for the account. */\r\n CurrentInstalmentSource?: Maybe;\r\n /** Active users authority on this account */\r\n CurrentUserAccountAuthority?: Maybe;\r\n /** daily limit. */\r\n DailyPayAnyoneLimit?: Maybe;\r\n /** daily limit. */\r\n DailyRedrawLimit?: Maybe;\r\n /**\r\n * current number of days in arrears.\r\n * @deprecated No no longer populated\r\n */\r\n DaysInArrears?: Maybe;\r\n /** description of the account. */\r\n Description?: Maybe;\r\n /** display order for the account. */\r\n DisplayOrder?: Maybe;\r\n /** if outstanding authorisations are displayed on internet banking. */\r\n DisplayOutstandingAuthorisations?: Maybe;\r\n /** documentation level for the account. */\r\n DocumentationLevel?: Maybe;\r\n Documents?: Maybe>>;\r\n EnforceOffsetBalanceLimit?: Maybe;\r\n FixedInterestPeriodExpiryDate?: Maybe;\r\n FortnightlyInstalment?: Maybe;\r\n FortnightlyTrue?: Maybe;\r\n FortnightlyTwo?: Maybe;\r\n /**\r\n * Obslete Moving to FurtherAdvances connection\r\n * @deprecated Moving to FurtherAdvances connection\r\n */\r\n FurtherAdvanceApplicationAmount?: Maybe;\r\n /**\r\n * Obslete Moving to FurtherAdvances connection\r\n * @deprecated Moving to FurtherAdvances connection\r\n */\r\n FurtherAdvanceApprovedAmount?: Maybe;\r\n /**\r\n * Obslete Moving to FurtherAdvances connection\r\n * @deprecated Moving to FurtherAdvances connection\r\n */\r\n FurtherAdvanceSettlementAmount?: Maybe;\r\n HasOffsetLinked?: Maybe;\r\n /** regular payment flag. */\r\n HasRegularPayment?: Maybe;\r\n /** The database identifier of the record. */\r\n Id: Scalars['Uuid'];\r\n IncomingFundsTransfers?: Maybe>>;\r\n InstalmentCalculationType?: Maybe;\r\n InstalmentFrequencyPeriod?: Maybe;\r\n /** current amount of instalments reserved. */\r\n InstalmentReservation?: Maybe;\r\n /** GUID identifier of the parent instrument. */\r\n InstrumentId?: Maybe;\r\n InterestOnlyExpiryDate?: Maybe;\r\n InterestType?: Maybe;\r\n IsRedrawExcluded?: Maybe;\r\n LastInterestChargeDate?: Maybe;\r\n /** account legacy number. */\r\n LegacyNumber?: Maybe;\r\n /** legacy product code for the account. */\r\n LegacyProductCode?: Maybe;\r\n LinkedAccounts?: Maybe>>;\r\n /** Gets and set the Maturity Date for an account */\r\n MaturityDate?: Maybe;\r\n MonthlyInstalment?: Maybe;\r\n NextInstalmentDue?: Maybe;\r\n NextRepaymentDate?: Maybe;\r\n Notifications?: Maybe>>;\r\n /** account number. */\r\n Number?: Maybe;\r\n /** current number of reserved instalments. */\r\n NumberOfReservedInstalments?: Maybe;\r\n OffsetAccount?: Maybe;\r\n OffsetBalanceLimit?: Maybe;\r\n /** current other arrears balance. */\r\n OtherArrears?: Maybe;\r\n PendingAccountFundsTransfers?: Maybe>>;\r\n ProcessedAccountFundsTransfers?: Maybe>>;\r\n ProductAvailableForOffset?: Maybe;\r\n /** description of the product type. */\r\n ProductType?: Maybe;\r\n /** GUID identifier of a product type. */\r\n ProductTypeId?: Maybe;\r\n ProfileAccountCategorisations?: Maybe>>;\r\n /** Profile Specific Ordering for this account */\r\n ProfileOrder?: Maybe;\r\n /** current account interest rate. */\r\n Rate?: Maybe;\r\n /** current redraw amount. */\r\n Redraw?: Maybe;\r\n RedrawFlag?: Maybe;\r\n /** remaining term in months. */\r\n RemainingTermMonths?: Maybe;\r\n RepaymentAmount?: Maybe;\r\n RepaymentSchedule?: Maybe;\r\n RiskLevel?: Maybe;\r\n ScheduleAnnualInstalment?: Maybe;\r\n /** current schedule balance. */\r\n ScheduledBalance?: Maybe;\r\n ScheduleFortnightlyInstalment?: Maybe;\r\n ScheduleFortnightlyTrue?: Maybe;\r\n ScheduleFortnightlyTwo?: Maybe;\r\n ScheduleMonthlyInstalment?: Maybe;\r\n ScheduleWeeklyFour?: Maybe;\r\n ScheduleWeeklyInstalment?: Maybe;\r\n ScheduleWeeklyTrue?: Maybe;\r\n /** account sequence number. */\r\n SequenceNumber?: Maybe;\r\n /** Settlement Date for an account */\r\n SettlementDate?: Maybe;\r\n StatementFee?: Maybe;\r\n Statements?: Maybe>>;\r\n /** current account status. */\r\n Status?: Maybe;\r\n /** if the account product is tax tracking. */\r\n TaxProduct?: Maybe;\r\n /** term in months. */\r\n TermInMonths?: Maybe;\r\n /** Active users authority on this account */\r\n TotalApprovedAmount?: Maybe;\r\n /** @deprecated Use TransactionsConnection */\r\n Transactions?: Maybe>>;\r\n TransactionsConnection?: Maybe;\r\n Transfers?: Maybe>>;\r\n /** current uncleared funds balance. */\r\n UnclearedFunds?: Maybe;\r\n WeeklyFour?: Maybe;\r\n WeeklyInstalment?: Maybe;\r\n WeeklyTrue?: Maybe;\r\n};\r\n\r\n\r\nexport type AccountDocumentsArgs = {\r\n where?: Maybe;\r\n};\r\n\r\n\r\nexport type AccountProcessedAccountFundsTransfersArgs = {\r\n filter?: Maybe;\r\n};\r\n\r\n\r\nexport type AccountTransactionsArgs = {\r\n after?: Maybe;\r\n first?: Maybe;\r\n};\r\n\r\n\r\nexport type AccountTransactionsConnectionArgs = {\r\n after?: Maybe;\r\n first?: Maybe;\r\n};\r\n\r\nexport type Party = {\r\n __typename?: 'Party';\r\n Addresses?: Maybe>>;\r\n BpayBillerHistory?: Maybe>>;\r\n Contacts?: Maybe>>;\r\n CustomFields?: Maybe>>;\r\n Documents?: Maybe>>;\r\n FirstName?: Maybe;\r\n FullName?: Maybe;\r\n Id: Scalars['Uuid'];\r\n KnownAs?: Maybe;\r\n LastName?: Maybe;\r\n MailingAddress?: Maybe;\r\n OrganisationLegalName?: Maybe;\r\n OrganisationName?: Maybe;\r\n PartyBankAccounts?: Maybe>>;\r\n /** Number identifier of the Party */\r\n PartyNumber?: Maybe;\r\n /** Preferred correspondance type. */\r\n PreferredCorrespondanceType?: Maybe;\r\n PreferredEmail?: Maybe;\r\n PreferredPhone?: Maybe;\r\n PreferredSms?: Maybe;\r\n ResedentialAddress?: Maybe;\r\n};\r\n\r\n\r\nexport type PartyDocumentsArgs = {\r\n where?: Maybe;\r\n};\r\n\r\nexport type UserSession = {\r\n __typename?: 'UserSession';\r\n /** Authorities on accounts for this profile */\r\n AccountAuthorities?: Maybe>>;\r\n AccountCategorisation?: Maybe>>;\r\n /** The Accounts that have been ordered by this profile */\r\n AccountOrdering?: Maybe>>;\r\n /** Whether the user can use the Trusted Device feature */\r\n CanUseTrustedDevice: Scalars['Boolean'];\r\n CurrentServerTime: Scalars['DateTime'];\r\n CurrentSession?: Maybe;\r\n Features?: Maybe>>;\r\n FinanceSummary?: Maybe;\r\n /** The profile has an active Temporary Password */\r\n HasTempPassword: Scalars['Boolean'];\r\n Id: Scalars['Uuid'];\r\n IsDeleted?: Maybe;\r\n IsFirstLogin?: Maybe;\r\n /** Whether InterInstrument Transfers are enabled */\r\n IsInterInstrumentTransferEnabled: Scalars['Boolean'];\r\n IsSharia?: Maybe;\r\n LastLoginAttempt: Scalars['DateTime'];\r\n LastLoginFrom?: Maybe;\r\n LastPasswordChange: Scalars['DateTime'];\r\n LastTermsAcceptance?: Maybe;\r\n LoginAttempts?: Maybe>>;\r\n Notifications?: Maybe>>;\r\n Party?: Maybe;\r\n ProfileCustomCategories?: Maybe>>;\r\n /**\r\n * Whether the current session/device is considered a trusted device.\r\n * This is useful if you're storing your trusted device token in a http cookie and can't directly check if it's valid\r\n */\r\n TrustedDeviceInUse: Scalars['Boolean'];\r\n /** The profile requires mfa / 2fa */\r\n UseMultiFactorAuth: Scalars['Boolean'];\r\n};\r\n\r\nexport type Instrument = {\r\n __typename?: 'Instrument';\r\n Accounts?: Maybe>>;\r\n /** account with the highest arrears. */\r\n AccountWithHighestArrearsDays?: Maybe;\r\n /** application number. */\r\n ApplicationNumber?: Maybe;\r\n /** approved amount. */\r\n ApprovedAmount?: Maybe;\r\n /** name of the brand. */\r\n Brand?: Maybe;\r\n /** if the loan is set to charge default interest. */\r\n ChargeDefaultInterest?: Maybe;\r\n /** current LVR. */\r\n CurrentLVR?: Maybe;\r\n /** current schedule-based LVR. */\r\n CurrentScheduleLVR?: Maybe;\r\n /** current total schedule-based LVR including linked loans. */\r\n CurrentScheduleTotalLVR?: Maybe;\r\n /** current total LVR which includes linked loans. */\r\n CurrentTotalLVR?: Maybe;\r\n CustomFields?: Maybe>>;\r\n /** a description of the loan. */\r\n Description?: Maybe;\r\n Documents?: Maybe>>;\r\n /** name of the funder. */\r\n Funder?: Maybe;\r\n /** if the loan has an active full and final discharge. */\r\n HasActiveFullFinalDischarge?: Maybe;\r\n /** highest number of days in arrears. */\r\n HighestAccountArrearsDays?: Maybe;\r\n /** The database identifier of the record. */\r\n Id: Scalars['Uuid'];\r\n InstrumentType?: Maybe;\r\n InterestAccrued?: Maybe;\r\n InterestDue?: Maybe;\r\n InterestPaid?: Maybe;\r\n IsArrangementInPlace?: Maybe;\r\n /** if the loan is fully discharged. */\r\n IsFullyDischarged?: Maybe;\r\n /** if the loan has an active hardship agreement. */\r\n IsUnderHardshipAgreement?: Maybe;\r\n /** purpose of the loan. */\r\n LoanPurpose?: Maybe;\r\n /** date of maturity. */\r\n MaturityDate?: Maybe;\r\n /** loan number. */\r\n Number?: Maybe;\r\n /** anticipated settlement date for an application. */\r\n OriginalAnticipatedSettlementDate?: Maybe;\r\n /** original application amount. */\r\n OriginalApplicationAmount?: Maybe;\r\n /** original application date. */\r\n OriginalApplicationDate?: Maybe;\r\n /** LVR at the original settlement date. */\r\n OriginalSettlementLVR?: Maybe;\r\n /** name of the primary borrower. */\r\n PrimaryBorrower?: Maybe;\r\n /** Account or Instrument redraw consideration */\r\n RedrawConsideration?: Maybe;\r\n /** whether the loan is regulated. */\r\n Regulated?: Maybe;\r\n /** remaining term in months. */\r\n RemainingTermMonths: Scalars['Long'];\r\n /** initial settlement date. */\r\n SettlementDate?: Maybe;\r\n /** statements generated for a loan. */\r\n Statements?: Maybe>>;\r\n /** current loan status. */\r\n Status?: Maybe;\r\n /** original loan term. */\r\n Term?: Maybe;\r\n /** total arrears amount. */\r\n TotalArrears?: Maybe;\r\n /** total amount redraw reserved for active cards. */\r\n TotalCardReservation?: Maybe;\r\n /** total number of days the loan as a whole has been in arrears. */\r\n TotalDaysInArrears?: Maybe;\r\n /** total amount of reserved instalments. */\r\n TotalInstalmentReservation?: Maybe;\r\n /** total principal amount. */\r\n TotalPrincipal?: Maybe;\r\n /** loan-level redraw amount. */\r\n TotalRedraw?: Maybe;\r\n /** total schedule amount. */\r\n TotalSchedule?: Maybe;\r\n /** total value of active securities. */\r\n TotalSecurityValue?: Maybe;\r\n /** total term for the loan. */\r\n TotalTermMonths?: Maybe;\r\n /** total unclears funds amount. */\r\n TotalUnclearedFunds?: Maybe;\r\n};\r\n\r\n\r\nexport type InstrumentDocumentsArgs = {\r\n where?: Maybe;\r\n};\r\n\r\nexport type FinanceSummary = {\r\n __typename?: 'FinanceSummary';\r\n Id: Scalars['Uuid'];\r\n Instruments?: Maybe>>;\r\n TotalPrincipal?: Maybe;\r\n TotalRedraw?: Maybe;\r\n};\r\n\r\nexport type LinkedAccount = {\r\n __typename?: 'LinkedAccount';\r\n ChildAccount?: Maybe;\r\n /** This the effective date the accounts were linked. */\r\n EffectiveFrom: Scalars['DateTime'];\r\n /** the date and time a status was left. */\r\n EffectiveTo?: Maybe;\r\n Id: Scalars['Uuid'];\r\n ParentAccount?: Maybe;\r\n /** This is the priority order in which items will be dispersed between the linked accounts. */\r\n Priority: Scalars['Int'];\r\n /** This is the percentage ratio of the link between these accounts. 0 - 100 */\r\n Ratio: Scalars['Decimal'];\r\n};\r\n\r\nexport type ProfileCustomCategory = {\r\n __typename?: 'ProfileCustomCategory';\r\n Accounts?: Maybe>>;\r\n Id: Scalars['Uuid'];\r\n Name?: Maybe;\r\n Ordering?: Maybe;\r\n};\r\n\r\n/** Represents a transaction against an account. */\r\nexport type AccountTransaction = {\r\n __typename?: 'AccountTransaction';\r\n Account?: Maybe;\r\n /** transaction that a manual interest adjustment is for. */\r\n AdjustsInterestForTransactionId?: Maybe;\r\n /** whether this transaction appears on statements. */\r\n AppearsOnStatement?: Maybe;\r\n /** transaction that a backout is for. */\r\n BackOutTransactionId?: Maybe;\r\n /** principal balance. */\r\n Balance?: Maybe;\r\n /** colour a transaction should be rendered in. */\r\n Colour?: Maybe;\r\n CreatedOn: Scalars['DateTime'];\r\n /** when the transaction is expected to clear. */\r\n DateToClear?: Maybe;\r\n /** decrease amount. */\r\n Decrease?: Maybe;\r\n /** transaction that a dishonour is for. */\r\n DishonourTransactionId?: Maybe;\r\n /** date the transaction is effective. */\r\n Effective: Scalars['DateTime'];\r\n /** date the transaction is effective. Alias for Effective */\r\n EffectiveDate: Scalars['DateTime'];\r\n Id: Scalars['Uuid'];\r\n /** increase amount. */\r\n Increase?: Maybe;\r\n /** file item Id of the invoice */\r\n InvoiceFileItemId?: Maybe;\r\n IsPending?: Maybe;\r\n /** transaction note. */\r\n Note?: Maybe;\r\n /** date the transaction was processed. */\r\n Processed: Scalars['DateTime'];\r\n /** transaction that a reversal is for. */\r\n ReversalTransactionId?: Maybe;\r\n /** transaction sequence number. */\r\n SequenceNumber?: Maybe;\r\n /** text that appears on a statement. */\r\n StatementText?: Maybe;\r\n TransactionCategory?: Maybe;\r\n /** transaction number. */\r\n TransactionNumber?: Maybe;\r\n /** transaction type. */\r\n TransactionType?: Maybe;\r\n /** transaction type number. */\r\n TransactionTypeNumber?: Maybe;\r\n Transfer?: Maybe;\r\n /** CLR type of the DTO. */\r\n Type?: Maybe;\r\n /** if the transaction is uncleared. */\r\n Uncleared?: Maybe;\r\n /** name of the waiver transaction related to the current transaction type. */\r\n WaiverTransactionName?: Maybe;\r\n /** transaction that a waive is for. */\r\n WaiveTransactionId?: Maybe;\r\n /** whether the transaction was backed out. */\r\n WasBackedOut?: Maybe;\r\n /** whether the transaction was dishonoured. */\r\n WasDishonoured?: Maybe;\r\n /** whether the transaction was reversed. */\r\n WasReversed?: Maybe;\r\n /** whether the transaction was waived. */\r\n WasWaived?: Maybe;\r\n};\r\n\r\n/** Region within a country eg. state. */\r\nexport type GeographicRegion = {\r\n __typename?: 'GeographicRegion';\r\n /** Country specific abbreviation eg VIC, NSW */\r\n Abbreviation?: Maybe;\r\n /** Parent country of this region */\r\n Country?: Maybe;\r\n /** Name of the region. eg. Victoria, Alaska. */\r\n Name?: Maybe;\r\n};\r\n\r\nexport type GraphContact = {\r\n __typename?: 'GraphContact';\r\n /** active from date for a contact. */\r\n ActiveFrom?: Maybe;\r\n /** the active to date for a contact record. */\r\n ActiveTo?: Maybe;\r\n /** a comment for the contact. */\r\n Comment?: Maybe;\r\n /** the country code. */\r\n CountryCode?: Maybe;\r\n /** the details. */\r\n Details?: Maybe;\r\n /** the extension. */\r\n Extension?: Maybe;\r\n Id: Scalars['Uuid'];\r\n /** whether the address is deleted. */\r\n IsDeleted: Scalars['Boolean'];\r\n /** the preferred email contact flag. */\r\n IsPreferredEmail: Scalars['Boolean'];\r\n /** the preferred phone contact flag. */\r\n IsPreferredPhone: Scalars['Boolean'];\r\n /** the preferred sms number flag. */\r\n IsPreferredSms: Scalars['Boolean'];\r\n Party?: Maybe;\r\n /** the time a contact maybe used. */\r\n PreferredContactTime: PreferredContactTime;\r\n /** the region code. */\r\n RegionCode?: Maybe;\r\n /** the type of contact. */\r\n Type?: Maybe;\r\n /** whether the contact details have been verified. */\r\n Verified: Scalars['Boolean'];\r\n};\r\n\r\n/**\r\n * Represents a transfer of funds from one account to another, either internally or\r\n * externally.\r\n */\r\nexport type FundsTransfer = {\r\n __typename?: 'FundsTransfer';\r\n /** GUID identifier of the account the transfer is linked to. */\r\n AccountId?: Maybe;\r\n /** date and time the transfer was added to the system. */\r\n AddedOn?: Maybe;\r\n /** additional amount to apply on top of the installment amount. */\r\n AdditionalAmount?: Maybe;\r\n /** amount of the transfer. */\r\n Amount?: Maybe;\r\n /** source of the funds transfer. */\r\n ApplicationInstance?: Maybe;\r\n /** description of the bank account. */\r\n BankAccountDescription?: Maybe;\r\n /** GUID identifier of the bank account the transfer will use. */\r\n BankAccountId?: Maybe;\r\n /** biller code for a bpay payment */\r\n Billercode?: Maybe;\r\n /** biller name for a bpay payment. */\r\n BillerName?: Maybe;\r\n BpayBiller?: Maybe;\r\n /** if the funds transfer can be removed. */\r\n CanRemove?: Maybe;\r\n /** description on a cheque. */\r\n ChequeNote?: Maybe;\r\n /** who created the item. */\r\n CreatedByFullName?: Maybe;\r\n /** work pool the creator is in. */\r\n CreatedByWorkpool?: Maybe;\r\n /** date the entity was created. */\r\n CreatedOn?: Maybe;\r\n /** customer reference number for a bpay payment. */\r\n CustomerReferenceNumber?: Maybe;\r\n /** description for the deposit transaction. */\r\n DepositDescription?: Maybe;\r\n /** date the recurrence will end on or after. */\r\n EndingOn?: Maybe;\r\n /** whether the transfer is for a fixed amount. */\r\n FixedAmountOption?: Maybe;\r\n /** frequency of any recurrences. */\r\n Frequency?: Maybe;\r\n /** description of the from account. */\r\n FromAccountDescription?: Maybe;\r\n /** GUID identifier of the internal account to draw funds from. */\r\n FromAccountId?: Maybe;\r\n FromBankAccount?: Maybe;\r\n /** wether the transfer continues until further notice. */\r\n FurtherNotice?: Maybe;\r\n /** The database identifier of the record. */\r\n Id: Scalars['Uuid'];\r\n IsCopied?: Maybe;\r\n /** if the record is to be deleted. */\r\n IsDeleted?: Maybe;\r\n IsExisting?: Maybe;\r\n /** if the record has been modified. */\r\n IsModified?: Maybe;\r\n /** if the record has been newly added. */\r\n IsNew?: Maybe;\r\n /** date the transfer last ran. */\r\n LastExecuted?: Maybe;\r\n /** whether the transfer is for the minimum installment. */\r\n MinimumAmount?: Maybe;\r\n /** whether the transfer is for the minimum installment plus an amount. */\r\n MinimumAmountPlus?: Maybe;\r\n /** who last modified the entity. */\r\n ModifiedByFullName?: Maybe;\r\n /** date the entity was last modified. */\r\n ModifiedOn?: Maybe;\r\n /** bank identifier for a new bank account. */\r\n NewBankAccountIdentifier?: Maybe;\r\n /** bank account name for a new bank account. */\r\n NewBankAccountName?: Maybe;\r\n /** bank account number for a new bank account. */\r\n NewBankAccountNumber?: Maybe;\r\n /** a bank account suffix for a new bank account. */\r\n NewBankAccountSuffix?: Maybe;\r\n /**\r\n * date the transfer will next execute, taking into account the business\r\n * day rules if the apply.\r\n */\r\n NextExecutedDate?: Maybe;\r\n /** date the transfer is next schedule for. */\r\n NextScheduledDate?: Maybe;\r\n /** whether the transfer ends after a number of repeats. */\r\n NumberOfTimes?: Maybe;\r\n /** number of repeats. */\r\n NumberOfTimesAmount?: Maybe;\r\n /** name of a cheque payee. */\r\n Payee?: Maybe;\r\n /** type of payment calculation. */\r\n PaymentCalculationType?: Maybe;\r\n PaymentType?: Maybe;\r\n /** percentage of installment amount. */\r\n PercentageOfInstalment?: Maybe;\r\n /** whether the installments should be recalculated after a funds transfer. */\r\n RecalculateInstalments?: Maybe;\r\n /** receipt number. */\r\n ReceiptNumber?: Maybe;\r\n /** if the funds transfer is the regular payment */\r\n RegularPayment?: Maybe;\r\n /** number of remaining payments for the direct debit. */\r\n RemainingNumberOfTimes?: Maybe;\r\n /** repayment number. */\r\n RepaymentNumber?: Maybe;\r\n /** Sequence Number of the transaction if it has been processed */\r\n SequenceNumber?: Maybe;\r\n /** whether the transfer continues until a date. */\r\n SpecifiedDate?: Maybe;\r\n /** date the transfer starts on. */\r\n StartingOn?: Maybe;\r\n /** GUID identifier of the task that is scheduled to run the funds trasfer. */\r\n TaskId?: Maybe;\r\n /** description of the to account. */\r\n ToAccountDescription?: Maybe;\r\n /** GUID identifier of the internal account to deposit funds into. */\r\n ToAccountId?: Maybe;\r\n ToBankAccount?: Maybe;\r\n /** GUID identifier of the type of transfer. */\r\n TransferType?: Maybe;\r\n /** a description of the type of transfer. */\r\n TransferTypeDescription?: Maybe;\r\n /** CLR type of the DTO. */\r\n Type?: Maybe;\r\n /** whether the business day rules apply to a transfer. */\r\n UseBusinessDayCheck?: Maybe;\r\n /**\r\n * whether the transfer will use the greater of the selected amount or the\r\n * installment amount in case of a change in installments.\r\n */\r\n UseGreaterOfInstalment?: Maybe;\r\n /** whether a new bank account is being used for a pay anyone transfer type. */\r\n UseNewBankAccount?: Maybe;\r\n /** whether the transfer will use a percentage of the installments. */\r\n UsePercentageOfInstalment?: Maybe;\r\n /** description for the withdrawal transaction. */\r\n WithdrawalDescription?: Maybe;\r\n};\r\n\r\n/** Current User Authority on an Account */\r\nexport type AccountAuthority = {\r\n __typename?: 'AccountAuthority';\r\n Account?: Maybe;\r\n /** Whether the user can use the account to BPay. */\r\n BPay: Scalars['Boolean'];\r\n Id: Scalars['Uuid'];\r\n /** Whether the user can use the account for inter-account transfers. */\r\n Operate: Scalars['Boolean'];\r\n /** Whether the user can use the account to pay any third-party. */\r\n PayAnyone: Scalars['Boolean'];\r\n /** Whether the user can use the account for redraws to nominated accounts. */\r\n Redraw: Scalars['Boolean'];\r\n /** Whether the user can see the account. */\r\n View: Scalars['Boolean'];\r\n};\r\n\r\n/** Information about pagination in a connection. */\r\nexport type PageInfo = {\r\n __typename?: 'PageInfo';\r\n /** When paginating forwards, the cursor to continue. */\r\n endCursor?: Maybe;\r\n /** Indicates whether more edges exist following the set defined by the clients arguments. */\r\n hasNextPage: Scalars['Boolean'];\r\n /** Indicates whether more edges exist prior the set defined by the clients arguments. */\r\n hasPreviousPage: Scalars['Boolean'];\r\n /** When paginating backwards, the cursor to continue. */\r\n startCursor?: Maybe;\r\n totalCount: Scalars['Int'];\r\n};\r\n\r\n\r\n/** Input for querying an Account's Instrument, supply either an Id or Number */\r\nexport type InstrumentByAccountInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** Id of the account */\r\n Id?: Maybe;\r\n /** Number of the account */\r\n Number?: Maybe;\r\n};\r\n\r\n\r\nexport type BpayBillerDetailsInput = {\r\n BillerCode: Scalars['Long'];\r\n EffectiveDate: Scalars['DateTime'];\r\n};\r\n\r\nexport type BankBranchDetailsInput = {\r\n BankIdentifier: Scalars['String'];\r\n BankIdentifierType?: Maybe;\r\n};\r\n\r\nexport type GroupedDateRangeInput = {\r\n DateRange?: Maybe;\r\n Period?: Maybe;\r\n};\r\n\r\nexport type BpayValidatorInput = {\r\n /** The BPAY payment amount */\r\n Amount?: Maybe;\r\n /** The BPAY BillerCode */\r\n BillerCode: Scalars['Long'];\r\n /** The BPAY CRN */\r\n CustomerReferenceNumber: Scalars['String'];\r\n /** Date the payment is going to be made */\r\n PaymentDate?: Maybe;\r\n};\r\n\r\nexport type AuthorityOperateAccountsInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** Specifies that the operate accounts returned must allow BPAY */\r\n MustAllowBPay?: Maybe;\r\n /** Specifies that the operate accounts returned must allow pay anyone */\r\n MustAllowPayAnyone?: Maybe;\r\n /** Specifies that the operate accounts returned must allow redraw */\r\n MustAllowRedraw?: Maybe;\r\n};\r\n\r\n/** Input for querying which accounts can be transferred to from the supplied account */\r\nexport type AccountsTransferableByAccountInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** Id of the account */\r\n Id?: Maybe;\r\n /** Number of the account */\r\n Number?: Maybe;\r\n};\r\n\r\nexport type IndueCardDetailsInput = {\r\n /** The CardId to fetch the details of */\r\n CardId: Scalars['Uuid'];\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type IndueCardsByAccountInput = {\r\n /** The AccountId to fetch the cards for */\r\n AccountId: Scalars['Uuid'];\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\n/** Filter the notifications to show */\r\nexport type ApplicationNotificationsFilterInput = {\r\n /** Optionally filter by brand */\r\n BrandId?: Maybe;\r\n /** Only show matching */\r\n NotificationTypeCode?: Maybe>>;\r\n};\r\n\r\n/** Input for querying the party associations for an account, supply either an Id or Number */\r\nexport type PartyAssociationByAccountInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** Id of the account */\r\n Id?: Maybe;\r\n /** Number of the account */\r\n Number?: Maybe;\r\n};\r\n\r\nexport type InterestConversionNotification = {\r\n __typename?: 'InterestConversionNotification';\r\n Account?: Maybe;\r\n ConversionDate?: Maybe;\r\n ConversionType?: Maybe;\r\n Dismissed?: Maybe;\r\n Id: Scalars['Uuid'];\r\n Message?: Maybe;\r\n NewInstalmentAmount?: Maybe;\r\n NewInstalmentFrequency?: Maybe;\r\n};\r\n\r\nexport type ConnectionWithNodesOfGraphAccountTransaction = {\r\n __typename?: 'ConnectionWithNodesOfGraphAccountTransaction';\r\n edges?: Maybe>>;\r\n nodes?: Maybe>>;\r\n pageInfo?: Maybe;\r\n};\r\n\r\nexport type BpayBiller = {\r\n __typename?: 'BpayBiller';\r\n Billercode: Scalars['Long'];\r\n /** customer description of biller fall back to BillerName */\r\n BillerDescription?: Maybe;\r\n /** Bpay specified name */\r\n BillerName?: Maybe;\r\n /** customer last used CRN for this biller */\r\n CustomerReferenceNumber?: Maybe;\r\n Id?: Maybe;\r\n};\r\n\r\nexport type BankBranch = {\r\n __typename?: 'BankBranch';\r\n BankIdentifier?: Maybe;\r\n /** customer description of branch type */\r\n BankIdentifierType?: Maybe;\r\n /** Bank specified name */\r\n BankName?: Maybe;\r\n /** branch description / address */\r\n Description?: Maybe;\r\n Id: Scalars['Uuid'];\r\n};\r\n\r\n/** Account limits for the specified date */\r\nexport type EffectiveAccountLimit = {\r\n __typename?: 'EffectiveAccountLimit';\r\n EffectiveDate: Scalars['DateTime'];\r\n Id?: Maybe;\r\n Limits?: Maybe;\r\n};\r\n\r\n/** Category for Account Transactions eg Visa Categories */\r\nexport type TransactionCategory = {\r\n __typename?: 'TransactionCategory';\r\n /** Category Code eg. Visa code */\r\n code?: Maybe;\r\n /** Id of the category */\r\n id: Scalars['Uuid'];\r\n /** Human readable name */\r\n name?: Maybe;\r\n};\r\n\r\nexport type BpayValidatorResponse = {\r\n __typename?: 'BpayValidatorResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n /** BPay validation errors */\r\n ValidationErrors?: Maybe>>;\r\n};\r\n\r\nexport type IndueCard = {\r\n __typename?: 'IndueCard';\r\n /** Indicates whether card current status allows activation */\r\n CanActivate: Scalars['Boolean'];\r\n /** Indicates whether card current status allows it to be closed */\r\n CanClose: Scalars['Boolean'];\r\n /** Indicates whether card current status allows it to be put on hold */\r\n CanHold: Scalars['Boolean'];\r\n /** Indicates whether card current status allows it to be reported lost or stolen */\r\n CanReportLostStolen: Scalars['Boolean'];\r\n /** Indicates whether card current status allows it to be unheld */\r\n CanUnHold: Scalars['Boolean'];\r\n /** Masked card number */\r\n CardNumber?: Maybe;\r\n /** Date that card will expire */\r\n ExpiryDate?: Maybe;\r\n /** Id of the card */\r\n Id: Scalars['Uuid'];\r\n /** Current status of the card */\r\n Status: IndueCardStatus;\r\n};\r\n\r\nexport type ConnectionWithNodesOfGraphApplicationNotificationInteraction = {\r\n __typename?: 'ConnectionWithNodesOfGraphApplicationNotificationInteraction';\r\n edges?: Maybe>>;\r\n nodes?: Maybe>>;\r\n pageInfo?: Maybe;\r\n};\r\n\r\nexport type PasswordValidator = {\r\n __typename?: 'PasswordValidator';\r\n MinimumBaseSymbolCharacterCount: Scalars['Int'];\r\n MinimumExtendedSymbolCharacterCount: Scalars['Int'];\r\n MinimumLowerCaseCharacterCount: Scalars['Int'];\r\n MinimumNumberCharacterCount: Scalars['Int'];\r\n MinimumPasswordHistory: Scalars['Int'];\r\n MinimumPasswordLength: Scalars['Int'];\r\n MinimumUpperCaseCharacterCount: Scalars['Int'];\r\n ProhibitRepeatingAlphabetCharacters: Scalars['Boolean'];\r\n ProhibitRepeatingNumberCharacters: Scalars['Boolean'];\r\n ProhibitRepeatingSymbolCharacters: Scalars['Boolean'];\r\n ProhibitSequentialAlphabetCharacters: Scalars['Boolean'];\r\n ProhibitSequentialNumberCharacters: Scalars['Boolean'];\r\n RequireBaseSymbols: Scalars['Boolean'];\r\n RequireExtendedSymbols: Scalars['Boolean'];\r\n RequireLowerCaseCharacters: Scalars['Boolean'];\r\n RequireNumberCharacters: Scalars['Boolean'];\r\n RequireUpperCaseCharacters: Scalars['Boolean'];\r\n};\r\n\r\nexport type PartyAccountAssociation = {\r\n __typename?: 'PartyAccountAssociation';\r\n /** Indicates whether the party is another type of association for the account other than borrower */\r\n IsNonBorrower: Scalars['Boolean'];\r\n /** Indicates whether the party is a primary borrower for the account */\r\n IsPrimaryBorrower: Scalars['Boolean'];\r\n /** Indicates whether the party is a secondary borrower for the account */\r\n IsSecondaryBorrower: Scalars['Boolean'];\r\n /** Indicates whether the primary borrower for the account has a non-closed card */\r\n PrimaryBorrowerHasCard: Scalars['Boolean'];\r\n};\r\n\r\nexport type LoginResponse = {\r\n __typename?: 'LoginResponse';\r\n /**\r\n * This is set only when login fails due to missing two factor token.\r\n * It indicates whether this profile can use the trusted device feature\r\n */\r\n CanUseTrustedDevice?: Maybe;\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n TrustedDeviceToken?: Maybe;\r\n UserSession?: Maybe;\r\n};\r\n\r\nexport type LoginInput = {\r\n ApplicationInstance?: Maybe;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n ClientVersionNumber?: Maybe;\r\n /** Set to true if you'd like a trusted device token to be returned after login */\r\n GenerateTrustedDeviceToken?: Maybe;\r\n Password?: Maybe;\r\n Referrer?: Maybe;\r\n RemoteClientIPAddress?: Maybe;\r\n TwoFactorToken?: Maybe;\r\n UserAgentHeader?: Maybe;\r\n Username?: Maybe;\r\n};\r\n\r\nexport type LoginV2Input = {\r\n /** The application name/version number */\r\n ClientVersionNumber?: Maybe;\r\n /** Set to true if you'd like a trusted device token to be returned after login */\r\n GenerateTrustedDeviceToken?: Maybe;\r\n /** If logged in with a temporary password then a new password must be specified */\r\n NewPassword?: Maybe;\r\n OnBehalfOfUsername?: Maybe;\r\n /** The client's password */\r\n Password: Scalars['String'];\r\n /** You can optionally override the referrer here */\r\n Referrer?: Maybe;\r\n /** You may optionally supply the user's IP Address */\r\n RemoteClientIPAddress?: Maybe;\r\n /** If logging into an account that requires 2FA then the token must be provided here */\r\n TwoFactorToken?: Maybe;\r\n /** You can optionally override the user agent here */\r\n UserAgentHeader?: Maybe;\r\n /** The client's username */\r\n Username: Scalars['String'];\r\n};\r\n\r\n/** Request a new Bpay transfer to be setup */\r\nexport type BpayTransferRequestInput = {\r\n /** GUID identifier of the account the transfer will come from */\r\n AccountId: Scalars['Uuid'];\r\n /** amount of the transfer. */\r\n Amount: Scalars['Decimal'];\r\n /** biller code for a bpay payment */\r\n Billercode: Scalars['Long'];\r\n /** User Description of Biller to save in history */\r\n BillerDescription?: Maybe;\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: Maybe;\r\n /** customer reference number for a bpay payment. */\r\n CustomerReferenceNumber: Scalars['String'];\r\n /** The date the recurrence will end on or after. */\r\n EndingOn?: Maybe;\r\n /** frequency of any recurrences. */\r\n Frequency?: Maybe;\r\n /** number of repeats. */\r\n NumberOfTimesAmount?: Maybe;\r\n RecurrenceEnd?: Maybe;\r\n SaveBillerDetails?: Maybe;\r\n StartingOn: Scalars['DateTime'];\r\n TwoFactorToken?: Maybe;\r\n /** description for the withdrawal transaction. */\r\n WithdrawalDescription?: Maybe;\r\n};\r\n\r\nexport type ForceCloseCurrentUserSessionsInput = {\r\n clientMutationId?: Maybe;\r\n CloseCurrentSession?: Maybe;\r\n};\r\n\r\nexport type StopPendingFundsTransferInput = {\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: Maybe;\r\n FundsTransferId: Scalars['Uuid'];\r\n StopOn?: Maybe;\r\n};\r\n\r\n/** Request a new Pay Anyone transfer to be setup */\r\nexport type RequestPayAnyoneTransferInput = {\r\n /** GUID identifier of an instrument account for the transfer. */\r\n AccountId: Scalars['Uuid'];\r\n /** additional amount to apply on top of the installment amount. */\r\n AdditionalAmount?: Maybe;\r\n /** amount to transfer. */\r\n Amount: Scalars['Decimal'];\r\n /** The GUID identifier of the bank account the transfer will use. */\r\n BankAccountId?: Maybe;\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: Maybe;\r\n /** description for the deposit transaction. */\r\n DepositDescription?: Maybe;\r\n /** The date the recurrence will end on or after. */\r\n EndingOn?: Maybe;\r\n /** whether the transfer is for a fixed amount. */\r\n FixedAmountOption?: Maybe;\r\n /**\r\n * frequency of any recurrences.\r\n * ONCE if no recurrences\r\n */\r\n Frequency: TaskFrequencyPeriod;\r\n /**\r\n * GUID identifier of the internal instrument account to draw funds from.\r\n * Required for Interaccount transfer\r\n * Required for Redraw - should be the same as AccountId\r\n */\r\n FromAccountId?: Maybe;\r\n /** whether the transfer is for the minimum installment. */\r\n MinimumAmount?: Maybe;\r\n /** whether the transfer is for the minimum installment plus an amount. */\r\n MinimumAmountPlus?: Maybe;\r\n NewBankAccount?: Maybe;\r\n /** number of repeats. */\r\n NumberOfTimesAmount?: Maybe;\r\n /** percentage of installment amount. */\r\n PercentageOfInstalment?: Maybe;\r\n RecurrenceEnd?: Maybe;\r\n /** Date the transfer will begin */\r\n StartingOn: Scalars['DateTime'];\r\n /**\r\n * GUID of the internal instrument account to deposit funds into.\r\n * Required for Direct Debit repayments\r\n */\r\n ToAccountId?: Maybe;\r\n /**\r\n * Id of the funds transfer type. \r\n * eg. Direct credit transfer type id.\r\n */\r\n TransferType: Scalars['Uuid'];\r\n TwoFactorToken?: Maybe;\r\n /**\r\n * whether the transfer will use the greater of the selected amount or the\r\n * installment amount in case of a change in installments.\r\n */\r\n UseGreaterOfInstalment?: Maybe;\r\n /** whether a new bank account is being used for a pay anyone transfer type. */\r\n UseNewBankAccount?: Maybe;\r\n /** whether the transfer will use a percentage of the installments. */\r\n UsePercentageOfInstalment?: Maybe;\r\n /** description for the withdrawal transaction. */\r\n WithdrawalDescription?: Maybe;\r\n};\r\n\r\nexport type ChangePasswordInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** The password the user logged in with */\r\n CurrentPassword?: Maybe;\r\n /** The new password. It must meet complexity requirements */\r\n NewPassword?: Maybe;\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type DeletePartyBankAccountInput = {\r\n clientMutationId?: Maybe;\r\n /** ID of the user's bank account to be deleted */\r\n PartyBankAccountId: Scalars['Uuid'];\r\n};\r\n\r\nexport type DeleteBpayPartyBillerInput = {\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: Maybe;\r\n /** ID of the saved BPAY biller/CRN */\r\n PartyBillerHistoryId?: Maybe;\r\n};\r\n\r\nexport type ChangeCardPinInput = {\r\n CardId: Scalars['Uuid'];\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** PIN must be 4-6 digits */\r\n NewPin?: Maybe;\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type ActivateCardInput = {\r\n CardId: Scalars['Uuid'];\r\n clientMutationId?: Maybe;\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type SuspendCardInput = {\r\n CardId: Scalars['Uuid'];\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type DisbursementRequestInput = {\r\n AccountId: Scalars['Uuid'];\r\n /** Supplier Bank Account Number */\r\n AccountNumber?: Maybe;\r\n BankIdentifierText?: Maybe;\r\n clientMutationId?: Maybe;\r\n File?: Maybe;\r\n InstrumentId: Scalars['Uuid'];\r\n PayeeName?: Maybe;\r\n PaymentDate: Scalars['DateTime'];\r\n PaymentDescription?: Maybe;\r\n RequestedAmount: Scalars['Decimal'];\r\n SupplierBankAccountName?: Maybe;\r\n};\r\n\r\n/** Input to request to begin a new Multi Factor Authorisation */\r\nexport type RequestMultiFactorAuthorisationInput = {\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ChangeAccountDescriptionInput = {\r\n AccountId: Scalars['Uuid'];\r\n clientMutationId?: Maybe;\r\n Name?: Maybe;\r\n};\r\n\r\nexport type ReorderProfileAccountsInput = {\r\n AccountOrdering: Array;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\n/** List of Accounts and categories to be added */\r\nexport type AssignAccountCategoriesInput = {\r\n /** List of Accounts and categories to be added */\r\n AccountCategorisations: Array;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type RemoveAccountFromCategoryInput = {\r\n AccountCategoriesToRemove: Array;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type UpdateProfileAccountCategoriesInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** User defined order for the account */\r\n Updates: Array;\r\n};\r\n\r\nexport type DeleteProfileCustomAccountCategoryInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** User defined order for the account */\r\n Deletions: Array;\r\n};\r\n\r\n/** Request the categorisation of a list of AccountTransactions */\r\nexport type CategoriseAccountTransactionsInput = {\r\n /** List of categorisations to attempt */\r\n categorisations?: Maybe>>;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ResetPasswordInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n ContactDetails?: Maybe;\r\n /** Method to receive new password 'email' or 'sms' */\r\n ResetMethod?: Maybe;\r\n TwoFactorToken?: Maybe;\r\n Username?: Maybe;\r\n};\r\n\r\nexport type CategoriseProfileAccountsInput = {\r\n /** Accounts to be categorised */\r\n CategoriesToApply?: Maybe>>;\r\n /** Remove categories from accounts. Removals are processed first */\r\n CategoriesToRemove?: Maybe>>;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ChangeUsernameInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** The new username */\r\n newUsername?: Maybe;\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\n/** Input for adding a BPAY Biller to a party */\r\nexport type CreateBpayBillerInput = {\r\n /** Biller Code used to identify the BPAY biller */\r\n BillerCode: Scalars['Int'];\r\n /** Optional customer friendly name of the BPAY biller */\r\n BillerDescription?: Maybe;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** Customer reference number used to identify the customer making the payment */\r\n CustomerReferenceNumber: Scalars['String'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type CreatePayAnyoneBankAccountInput = {\r\n /** Name of the bank account */\r\n AccountName: Scalars['String'];\r\n /** Number of the bank account */\r\n AccountNumber: Scalars['String'];\r\n /** 6 digit code used to identify the bank and branch */\r\n Bsb: Scalars['String'];\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\n/** Input for creating an inter instrument transfer */\r\nexport type RequestInterInstrumentTransferInput = {\r\n /** amount to transfer. */\r\n Amount: Scalars['Decimal'];\r\n /** Id of the Inter Instrument input to correlate with response */\r\n clientMutationId?: Maybe;\r\n /** description for the deposit transaction. */\r\n DepositDescription?: Maybe;\r\n /** The date the recurrence will end on or after. */\r\n EndingOn?: Maybe;\r\n /**\r\n * frequency of any recurrences.\r\n * ONCE if no recurrences\r\n */\r\n Frequency: TaskFrequencyPeriod;\r\n /** GUID identifier of the internal instrument account to draw funds from. */\r\n FromAccountId: Scalars['Uuid'];\r\n /** number of repeats. */\r\n NumberOfTimesAmount?: Maybe;\r\n /** When the recurring transfer ends, ie Once, ByDate, Never, NumberOfOcurrences */\r\n RecurrenceEnd?: Maybe;\r\n /** Date the transfer will begin */\r\n StartingOn: Scalars['DateTime'];\r\n /** GUID of the internal instrument account to deposit funds into. */\r\n ToAccountId: Scalars['Uuid'];\r\n /** description for the withdrawal transaction. */\r\n WithdrawalDescription?: Maybe;\r\n};\r\n\r\nexport type CheckMultiFactorAuthorisationInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** The two factor token to check */\r\n TwoFactorToken: Scalars['String'];\r\n};\r\n\r\nexport type IndueCardChangePinInput = {\r\n /** The CardId which is having its Pin set */\r\n CardId: Scalars['Uuid'];\r\n /** The new Pin to be set */\r\n Pin: Scalars['String'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type IndueCardChangeStatusInput = {\r\n /** CardId to change status of */\r\n CardId: Scalars['Uuid'];\r\n /**\r\n * Status to be changed to. Can be\r\n * * Active\r\n * * ActiveOff (hold)\r\n * * Lost\r\n * * Stolen\r\n * * Closed\r\n */\r\n Status: IndueCardStatus;\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type RequestTrustedDeviceInput = {\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type AcknowledgedUserNotificationInput = {\r\n BrandId?: Maybe;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n Dismissed?: Maybe;\r\n UserNotificationId: Scalars['Uuid'];\r\n};\r\n\r\nexport type IndueCardCreateCardInput = {\r\n /** The AccountId which is requesting a card to be created */\r\n AccountId: Scalars['Uuid'];\r\n /** Mothers Maiden Name security question to associate with the card for card management support calls from Indue's end */\r\n SecurityQuestionAnswer?: Maybe;\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: Maybe;\r\n};\r\n\r\nexport type LoginV2Response = {\r\n __typename?: 'LoginV2Response';\r\n /** bearer token that can be passed in as the auth header */\r\n AccessToken?: Maybe;\r\n /** Indicates if the Authentication succeeded or the reason for failure */\r\n AuthError?: Maybe;\r\n /** Additional information on why the login failed */\r\n AuthMessage?: Maybe;\r\n /** If the login has succeeded */\r\n AuthSucceeded: Scalars['Boolean'];\r\n /**\r\n * This is set only when login fails due to missing two factor token.\r\n * It indicates whether this profile can use the trusted device feature\r\n */\r\n CanUseTrustedDevice?: Maybe;\r\n /** The trusted device token if trusted device has been requested */\r\n TrustedDeviceToken?: Maybe;\r\n /** Information about the just logged in user */\r\n UserSession?: Maybe;\r\n};\r\n\r\nexport type BpayTransferRequestResponse = {\r\n __typename?: 'BpayTransferRequestResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n FundsTransfer?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n ValidationErrors?: Maybe>>;\r\n};\r\n\r\nexport type ForceCloseCurrentUserSessionsResponse = {\r\n __typename?: 'ForceCloseCurrentUserSessionsResponse';\r\n clientMutationId?: Maybe;\r\n /** @deprecated Refer to errors response object instead */\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n /** @deprecated Refer to errors response object instead */\r\n Message?: Maybe;\r\n /** @deprecated Refer to errors response object instead */\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type LogoutPayload = {\r\n __typename?: 'LogoutPayload';\r\n /** @deprecated Refer to errors response object instead */\r\n Code?: Maybe;\r\n /** @deprecated Refer to errors response object instead */\r\n Message?: Maybe;\r\n /** @deprecated Refer to errors response object instead */\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type AcceptTermsPayload = {\r\n __typename?: 'AcceptTermsPayload';\r\n /** @deprecated Refer to errors response object instead */\r\n Code?: Maybe;\r\n /** @deprecated Refer to errors response object instead */\r\n Message?: Maybe;\r\n /** @deprecated Refer to errors response object instead */\r\n Success: Scalars['Boolean'];\r\n UserSession: UserSession;\r\n};\r\n\r\nexport type StopPendingFundsTransferResponse = {\r\n __typename?: 'StopPendingFundsTransferResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n FundsTransfer?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type RequestPayAnyoneTransferResponse = {\r\n __typename?: 'RequestPayAnyoneTransferResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n FundsTransfer?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type ChangePasswordResponse = {\r\n __typename?: 'ChangePasswordResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n UserSession?: Maybe;\r\n};\r\n\r\nexport type DeletePartyBankAccountResponse = {\r\n __typename?: 'DeletePartyBankAccountResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n PartyBankAccountId: Scalars['Uuid'];\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type DeleteBpayPartyBillerResponse = {\r\n __typename?: 'DeleteBpayPartyBillerResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n PartyBillerHistoryId: Scalars['Uuid'];\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type ChangeCardPinResponse = {\r\n __typename?: 'ChangeCardPinResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type ActivateCardResponse = {\r\n __typename?: 'ActivateCardResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type SuspendCardResponse = {\r\n __typename?: 'SuspendCardResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type DisbursementRequestResponse = {\r\n __typename?: 'DisbursementRequestResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type RequestMultiFactorAuthorisationResponse = {\r\n __typename?: 'RequestMultiFactorAuthorisationResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type ChangeAccountDescriptionResponse = {\r\n __typename?: 'ChangeAccountDescriptionResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type ReorderProfileAccountsResponse = {\r\n __typename?: 'ReorderProfileAccountsResponse';\r\n AppliedOrdering?: Maybe>>;\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n FailedOrdering?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type AssignAccountCategoriesResponse = {\r\n __typename?: 'AssignAccountCategoriesResponse';\r\n /** Categorisations Applied */\r\n AppliedCategorisation?: Maybe>>;\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n /** Categorisations that failed */\r\n FailedCategorisation?: Maybe>>;\r\n Message?: Maybe;\r\n /** Categorisations Removed via AccountCategorisationToAssignInput.RemoveFromOtherCategories */\r\n RemovedCategorisation?: Maybe>>;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type RemoveAccountFromCategoryResponse = {\r\n __typename?: 'RemoveAccountFromCategoryResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Failed?: Maybe>>;\r\n Message?: Maybe;\r\n RemovedCategories?: Maybe>>;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type UpdateProfileAccountCategoriesResponse = {\r\n __typename?: 'UpdateProfileAccountCategoriesResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Failed?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n Updated?: Maybe>>;\r\n};\r\n\r\nexport type DeleteProfileCustomAccountCategoryResponse = {\r\n __typename?: 'DeleteProfileCustomAccountCategoryResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Deleted?: Maybe>>;\r\n Failed?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\n/** Request the categorisation of a list of AccountTransactions */\r\nexport type CategoriseAccountTransactionsResponse = {\r\n __typename?: 'CategoriseAccountTransactionsResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n /** Failed categorisations */\r\n failedCategorisations?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n /** Successful categorisations */\r\n successfulCategorisations?: Maybe>>;\r\n};\r\n\r\nexport type ResetPasswordResponse = {\r\n __typename?: 'ResetPasswordResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type CategoriseProfileAccountsResponse = {\r\n __typename?: 'CategoriseProfileAccountsResponse';\r\n /** Categories applied to accounts */\r\n CategoriesApplied?: Maybe>>;\r\n /** Categories removed from accounts */\r\n CategoriesRemoved?: Maybe>>;\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n /** Categories removed from accounts */\r\n FailedCategorisations?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type ChangeUsernameResponse = {\r\n __typename?: 'ChangeUsernameResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type CreateBpayBillerResponse = {\r\n __typename?: 'CreateBpayBillerResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n NewBpayBiller?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type CreatePayAnyoneBankAccountResponse = {\r\n __typename?: 'CreatePayAnyoneBankAccountResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n NewPartyBankAccount?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type RequestInterInstrumentTransferResponse = {\r\n __typename?: 'RequestInterInstrumentTransferResponse';\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n FundsTransfer: FundsTransfer;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type CheckMultiFactorAuthorisationResponse = {\r\n __typename?: 'CheckMultiFactorAuthorisationResponse';\r\n /** Indicates whether the MFA token is valid */\r\n Result: MultiFactorResult;\r\n};\r\n\r\nexport type IndueCardChangeResponse = {\r\n __typename?: 'IndueCardChangeResponse';\r\n /** The card which was changed */\r\n Card: IndueCard;\r\n /** Result from the response of the card change */\r\n Result: Scalars['Boolean'];\r\n};\r\n\r\nexport type RequestTrustedDeviceResponse = {\r\n __typename?: 'RequestTrustedDeviceResponse';\r\n Token?: Maybe;\r\n};\r\n\r\nexport type UserNotificationInteraction = {\r\n __typename?: 'UserNotificationInteraction';\r\n /** When the Notification was dismissed or acknowledged */\r\n Dismissed?: Maybe;\r\n Id: Scalars['Uuid'];\r\n Notification?: Maybe;\r\n /** When the notification was first viewed by / delivered */\r\n Viewed?: Maybe;\r\n};\r\n\r\nexport type IndueCardCreateCardResponse = {\r\n __typename?: 'IndueCardCreateCardResponse';\r\n /** The card which was created */\r\n Card?: Maybe;\r\n clientMutationId?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type LookBackDaysInput = {\r\n Days?: Maybe;\r\n};\r\n\r\nexport type DocumentLinkFilterInput = {\r\n Document?: Maybe;\r\n};\r\n\r\n\r\n/** Represents the details of a bank account. */\r\nexport type BankAccount = {\r\n __typename?: 'BankAccount';\r\n /** account name. */\r\n AccountName?: Maybe;\r\n /** account number. */\r\n AccountNumber?: Maybe;\r\n /** bank identifier GUID identifier. */\r\n BankIdentifierId?: Maybe;\r\n /** bank identifier text. */\r\n BankIdentifierText?: Maybe;\r\n /** name of the bank related to the bank identifier. */\r\n BankName?: Maybe;\r\n /** whether this bank account can be used for direct credits. */\r\n HasDirectCreditAuthority?: Maybe;\r\n /** whether this bank account can be used for direct debits. */\r\n HasDirectDebitAuthority?: Maybe;\r\n /** The database identifier of the record. */\r\n Id: Scalars['Uuid'];\r\n /** whether this account can be used for pay anyone. */\r\n IsPayAnyone?: Maybe;\r\n /** whether this is a borrower nominated account. */\r\n Nominated?: Maybe;\r\n /** account suffix. */\r\n Suffix?: Maybe;\r\n};\r\n\r\n/** The Current and Available balances of the card account */\r\nexport type CardBalance = {\r\n __typename?: 'CardBalance';\r\n /**\r\n * Total amount in the account that may be withdrawn.\r\n * This is the current balance less any oustanding holds or debits that are yet to be posted to the account.\r\n * A $100 hold on the card will reduce the AvailableBalance by $100 but will not change the CurrentBalance.\r\n */\r\n availableBalance?: Maybe;\r\n /**\r\n * Total amount of funds in the account.\r\n * Purchase of $500 prior to clearing will show AvailableBalance $500 less than CurrentBalance.\r\n * When the transaction clears CurrentBalance will reduce by $500.\r\n */\r\n currentBalance?: Maybe;\r\n};\r\n\r\nexport type Card = {\r\n __typename?: 'Card';\r\n ExpiryDate: Scalars['DateTime'];\r\n HolderRelationship?: Maybe;\r\n Id: Scalars['Uuid'];\r\n NameOnCard?: Maybe;\r\n Number?: Maybe;\r\n State?: Maybe;\r\n Type?: Maybe;\r\n};\r\n\r\n\r\n\r\n/** Is a statement of account. */\r\nexport type StatementDocument = {\r\n __typename?: 'StatementDocument';\r\n /** object identifier of the linked account. */\r\n AccountId: Scalars['Uuid'];\r\n /** number of the linked account. */\r\n AccountNumber?: Maybe;\r\n /** ad-hoc status of the statement. */\r\n AdHoc?: Maybe;\r\n /** who created the item. */\r\n CreatedByFullName?: Maybe;\r\n /** work pool the creator is in. */\r\n CreatedByWorkpool?: Maybe;\r\n /** date the entity was created. */\r\n CreatedOn?: Maybe;\r\n /** object identifier of the file. */\r\n FileId: Scalars['Uuid'];\r\n /** name of the imported statement file. */\r\n Filename?: Maybe;\r\n /** whether the statement file has been attached. */\r\n HasFile?: Maybe;\r\n /** The database identifier of the record. */\r\n Id: Scalars['Uuid'];\r\n /** object identifier of the linked instrument. */\r\n InstrumentId: Scalars['Uuid'];\r\n /** number of the linked instrument. */\r\n InstrumentNumber?: Maybe;\r\n IsCopied?: Maybe;\r\n /** if the record is to be deleted. */\r\n IsDeleted?: Maybe;\r\n IsExisting?: Maybe;\r\n /** if the record has been modified. */\r\n IsModified?: Maybe;\r\n /** if the record has been newly added. */\r\n IsNew?: Maybe;\r\n /** who last modified the entity. */\r\n ModifiedByFullName?: Maybe;\r\n /** date the entity was last modified. */\r\n ModifiedOn?: Maybe;\r\n /** statement number. */\r\n Number?: Maybe;\r\n /** object identifier of the addressee party. */\r\n PartyId: Scalars['Uuid'];\r\n /** name of the addressee party. */\r\n PartyName?: Maybe;\r\n /** start date of the statement period. */\r\n PeriodFrom: Scalars['DateTime'];\r\n /** end date of the statement period. */\r\n PeriodTo: Scalars['DateTime'];\r\n /** date the statement was processed. */\r\n ProcessedDate: Scalars['DateTime'];\r\n /** CLR type of the DTO. */\r\n Type?: Maybe;\r\n};\r\n\r\nexport type AccountCategorisation = {\r\n __typename?: 'AccountCategorisation';\r\n Account?: Maybe;\r\n AccountOrder?: Maybe;\r\n Category?: Maybe;\r\n Id: Scalars['Uuid'];\r\n};\r\n\r\nexport type ProfileAccountOrdering = {\r\n __typename?: 'ProfileAccountOrdering';\r\n Account?: Maybe;\r\n Id: Scalars['Uuid'];\r\n Ordering?: Maybe;\r\n};\r\n\r\nexport type AccountDocumentLink = {\r\n __typename?: 'AccountDocumentLink';\r\n /** the document. */\r\n Document?: Maybe;\r\n Id: Scalars['Uuid'];\r\n /** Has this document link been removed */\r\n IsDeleted: Scalars['Boolean'];\r\n};\r\n\r\nexport type PartyBankAccount = {\r\n __typename?: 'PartyBankAccount';\r\n BankAccount?: Maybe;\r\n Bpay: Scalars['Boolean'];\r\n Deleted: Scalars['Boolean'];\r\n Description?: Maybe;\r\n DirectCredit: Scalars['Boolean'];\r\n DirectDebit: Scalars['Boolean'];\r\n Id: Scalars['Uuid'];\r\n IsPayWayCustomer: Scalars['Boolean'];\r\n IsUsedByTransfer: Scalars['Boolean'];\r\n PartyId: Scalars['Uuid'];\r\n PayAnyone: Scalars['Boolean'];\r\n Viewable?: Maybe;\r\n};\r\n\r\n/** An address for a Party */\r\nexport type GraphAssociatedAddress = {\r\n __typename?: 'GraphAssociatedAddress';\r\n Address?: Maybe
;\r\n Comment?: Maybe;\r\n /** when the effective date for the address is */\r\n EffectiveDate?: Maybe;\r\n Id: Scalars['Uuid'];\r\n IsDefaultMailingAddress: Scalars['Boolean'];\r\n IsDefaultResidentialAddress: Scalars['Boolean'];\r\n /** whether the address is deleted. */\r\n IsDeleted: Scalars['Boolean'];\r\n /** if the address is invalid. */\r\n IsInvalid: Scalars['Boolean'];\r\n IsPrevious: Scalars['Boolean'];\r\n /** the reason for taking an action on the address */\r\n Reason?: Maybe;\r\n};\r\n\r\nexport enum PreferredCorrespondanceType {\r\n Mail = 'MAIL',\r\n Phone = 'PHONE',\r\n Email = 'EMAIL',\r\n Sms = 'SMS'\r\n}\r\n\r\n/** Custom Field */\r\nexport type GraphCustomField = {\r\n __typename?: 'GraphCustomField';\r\n /** the value for date time data types. */\r\n DateValue?: Maybe;\r\n /** the metadata for the field. */\r\n Definition?: Maybe;\r\n /** the value for flag data types. */\r\n FlagValue: Scalars['Boolean'];\r\n Id: Scalars['Uuid'];\r\n /** the value for money data types. */\r\n MoneyValue?: Maybe;\r\n /** the value for number data types. */\r\n NumberValue: Scalars['Decimal'];\r\n /** the value for text data types. */\r\n TextValue?: Maybe;\r\n};\r\n\r\nexport type PartyDocumentLink = {\r\n __typename?: 'PartyDocumentLink';\r\n /** the document. */\r\n Document?: Maybe;\r\n Id: Scalars['Uuid'];\r\n /** Has this document link been removed */\r\n IsDeleted: Scalars['Boolean'];\r\n};\r\n\r\nexport type LoginAttempt = {\r\n __typename?: 'LoginAttempt';\r\n ClientVersion?: Maybe;\r\n EventDate: Scalars['DateTime'];\r\n Expires: Scalars['DateTime'];\r\n Id: Scalars['Uuid'];\r\n IpAddress?: Maybe;\r\n IsDeleted?: Maybe;\r\n LastActivity: Scalars['DateTime'];\r\n SessionStart: Scalars['DateTime'];\r\n Successful?: Maybe;\r\n UserAgentHeader?: Maybe;\r\n};\r\n\r\nexport type InstrumentDocumentLink = {\r\n __typename?: 'InstrumentDocumentLink';\r\n /** the document. */\r\n Document?: Maybe;\r\n Id: Scalars['Uuid'];\r\n /** Has this document link been removed */\r\n IsDeleted: Scalars['Boolean'];\r\n};\r\n\r\nexport type Money = {\r\n __typename?: 'Money';\r\n Amount: Scalars['Decimal'];\r\n CurrencyCode?: Maybe;\r\n};\r\n\r\n/** Country */\r\nexport type Country = {\r\n __typename?: 'Country';\r\n /** Phone dialing prefix. eg. 61 */\r\n IsdPrefix?: Maybe;\r\n /** Country ISO code eg AU */\r\n IsoCode?: Maybe;\r\n /** ISO Currency code eg. AUD */\r\n IsoCurrencyCode?: Maybe;\r\n /** Name of Country. eg. Australia */\r\n Name?: Maybe;\r\n /** Mask used for valid postcodes */\r\n PostalCodeMask?: Maybe;\r\n /** Postal codes required */\r\n PostalCodeRequired: Scalars['Boolean'];\r\n /** Type of Region eg. State, District, Region, Province */\r\n RegionLabel?: Maybe;\r\n /** Region required */\r\n RegionRequired: Scalars['Boolean'];\r\n /** Are postal codes used */\r\n UsePostalCode: Scalars['Boolean'];\r\n /** Are Regions used */\r\n UseRegions: Scalars['Boolean'];\r\n};\r\n\r\nexport type GraphContactType = {\r\n __typename?: 'GraphContactType';\r\n /** Description of the contact */\r\n Description?: Maybe;\r\n Id: Scalars['Uuid'];\r\n /** Is a Phone contact */\r\n IsPhone: Scalars['Boolean'];\r\n ReceiveMessages: Scalars['Boolean'];\r\n};\r\n\r\nexport enum PreferredContactTime {\r\n Anytime = 'ANYTIME',\r\n Morning = 'MORNING',\r\n Businesshours = 'BUSINESSHOURS',\r\n Afterhours = 'AFTERHOURS',\r\n Never = 'NEVER'\r\n}\r\n\r\nexport type DateRangeInput = {\r\n From?: Maybe;\r\n To?: Maybe;\r\n};\r\n\r\n/** How to Group values in a period eg available redraw over the next month by day. */\r\nexport enum Period {\r\n Day = 'DAY',\r\n Eachchange = 'EACHCHANGE',\r\n Month = 'MONTH',\r\n Single = 'SINGLE',\r\n Week = 'WEEK'\r\n}\r\n\r\nexport type EdgeOfGraphAccountTransaction = {\r\n __typename?: 'EdgeOfGraphAccountTransaction';\r\n cursor?: Maybe;\r\n node?: Maybe;\r\n};\r\n\r\nexport type AccountLimit = {\r\n __typename?: 'AccountLimit';\r\n DailyPayAnyoneLimit?: Maybe;\r\n DailyRedrawLimit?: Maybe;\r\n RemainingDailyPayAnyoneLimit?: Maybe;\r\n RemainingDailyRedrawLimit?: Maybe;\r\n};\r\n\r\nexport type ErrorMessage = {\r\n __typename?: 'ErrorMessage';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n};\r\n\r\nexport enum IndueCardStatus {\r\n Ordered = 'ORDERED',\r\n Active = 'ACTIVE',\r\n Lost = 'LOST',\r\n Stolen = 'STOLEN',\r\n Restricted = 'RESTRICTED',\r\n Activeoff = 'ACTIVEOFF',\r\n Other = 'OTHER',\r\n Closed = 'CLOSED',\r\n Damaged = 'DAMAGED',\r\n Cardcreated = 'CARDCREATED'\r\n}\r\n\r\nexport type EdgeOfGraphApplicationNotificationInteraction = {\r\n __typename?: 'EdgeOfGraphApplicationNotificationInteraction';\r\n cursor?: Maybe;\r\n node?: Maybe;\r\n};\r\n\r\n/** Method to determine when to stop the recurrence */\r\nexport enum RecurrenceEndEnum {\r\n Once = 'ONCE',\r\n Bydate = 'BYDATE',\r\n Never = 'NEVER',\r\n Numberofocurrences = 'NUMBEROFOCURRENCES'\r\n}\r\n\r\nexport enum TaskFrequencyPeriod {\r\n Once = 'ONCE',\r\n Daily = 'DAILY',\r\n Weekly = 'WEEKLY',\r\n Fortnightly = 'FORTNIGHTLY',\r\n Monthly = 'MONTHLY',\r\n Quarterly = 'QUARTERLY',\r\n Quarterlyfinancialyear = 'QUARTERLYFINANCIALYEAR',\r\n Sixmonthly = 'SIXMONTHLY',\r\n Annually = 'ANNUALLY',\r\n Dayofmonth = 'DAYOFMONTH',\r\n Firstofmonth = 'FIRSTOFMONTH',\r\n Lastofmonth = 'LASTOFMONTH',\r\n Schedule = 'SCHEDULE',\r\n Weekday = 'WEEKDAY'\r\n}\r\n\r\nexport type NewBankAccountInput = {\r\n /** bank identifier for a new bank account. */\r\n NewBankAccountIdentifier?: Maybe;\r\n /** bank account name for a new bank account. */\r\n NewBankAccountName?: Maybe;\r\n /** bank account number for a new bank account. */\r\n NewBankAccountNumber?: Maybe;\r\n /** a bank account suffix for a new bank account. */\r\n NewBankAccountSuffix?: Maybe;\r\n};\r\n\r\n/** Model Upload Scalar: https://github.com/jaydenseric/graphql-multipart-request-spec */\r\nexport type UploadInput = {\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n FileName?: Maybe;\r\n name?: Maybe;\r\n};\r\n\r\n/** Request to update the profile specific ordering of an Account */\r\nexport type SetAccountOrderingInput = {\r\n /** Account to Apply Ordering */\r\n AccountId: Scalars['Uuid'];\r\n /** Optional Id of an existing ordering entry to update, null or empty to update all orderings for this account */\r\n Id?: Maybe;\r\n /** User defined order for the account */\r\n Ordering?: Maybe;\r\n};\r\n\r\n/** Request to assign Account to a list of categories */\r\nexport type AccountCategorisationRequestInput = {\r\n /** Account to Apply Categorisation */\r\n AccountId: Scalars['Uuid'];\r\n /** Categorisations to Apply */\r\n Categories?: Maybe>>;\r\n /** Optional, if true, Remove the account from all other categories */\r\n RemoveFromOtherCategories?: Maybe;\r\n};\r\n\r\n/** Request to update the profile specific Categorisation of an Account */\r\nexport type CategoryToRemoveInput = {\r\n /** Account to Apply Categorisation */\r\n AccountId: Scalars['Uuid'];\r\n /** Category to Remove */\r\n Category?: Maybe;\r\n /** Optional Id of an existing Categorisation entry to update, null or empty to update all Categorisations for this account */\r\n Id?: Maybe;\r\n};\r\n\r\n/** Profile Specific Category, Either Id or Name must be supplied */\r\nexport type ProfileAccountCategoryInput = {\r\n Id?: Maybe;\r\n Name?: Maybe;\r\n Ordering?: Maybe;\r\n};\r\n\r\nexport type ProfileCategoryDeletionInput = {\r\n Id?: Maybe;\r\n};\r\n\r\nexport type AccountTransactionCategorisationRequestInput = {\r\n /** Transaction to categorise */\r\n accountId: Scalars['Uuid'];\r\n /** Transaction to categorise */\r\n accountTransactionId: Scalars['Uuid'];\r\n /** Category to apply. Null to remove category */\r\n categoryId?: Maybe;\r\n};\r\n\r\nexport type AccountCategorisationToApplyInput = {\r\n /** Category to apply. Null applies the default category with empty string '' as the name */\r\n AccountCategory?: Maybe;\r\n /** Account to Apply Ordering */\r\n AccountId: Scalars['Uuid'];\r\n /** User defined order for the account within the category */\r\n AccountOrder?: Maybe;\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n /** Optionally remove all other categorisations from the account */\r\n RemoveOtherCategories?: Maybe;\r\n};\r\n\r\nexport type AccountCategorisationToRemoveInput = {\r\n /** Id of the category to remove */\r\n AccountCategoryId?: Maybe;\r\n /** Account to Apply Ordering */\r\n AccountId: Scalars['Uuid'];\r\n /**\r\n * Relay Spec https://facebook.github.io/relay/graphql/mutations.htm\r\n * enforced camelCase to match spec\r\n */\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport enum LoginV3AuthError {\r\n /** An MFA token is required but has not been provided */\r\n Mfarequired = 'MFAREQUIRED',\r\n /** The provided MFA token is invalid */\r\n Mfatokeninvalid = 'MFATOKENINVALID',\r\n /** The password has expired */\r\n Passwordexpired = 'PASSWORDEXPIRED',\r\n /** The username or password is invalid */\r\n Invalidcredentials = 'INVALIDCREDENTIALS',\r\n /** The provided new password is invalid. Check the AuthErrorDescription field for more information */\r\n Newpasswordinvalid = 'NEWPASSWORDINVALID',\r\n /** User logged in with a temp password and must change their password before proceeding. Provide a value to NewPassword field */\r\n Requirepasswordchange = 'REQUIREPASSWORDCHANGE'\r\n}\r\n\r\nexport type DisbursementStage = {\r\n __typename?: 'DisbursementStage';\r\n AccountNumber?: Maybe;\r\n BankIdentifierText?: Maybe;\r\n Documents?: Maybe>>;\r\n Id: Scalars['Uuid'];\r\n PayeeName?: Maybe;\r\n PaymentDate: Scalars['DateTime'];\r\n PaymentDescription?: Maybe;\r\n RequestedAmount: Scalars['Decimal'];\r\n};\r\n\r\nexport type FailedAccountOrdering = {\r\n __typename?: 'FailedAccountOrdering';\r\n Ordering?: Maybe;\r\n Reason?: Maybe;\r\n};\r\n\r\nexport type FailedAccountCategorisationRequest = {\r\n __typename?: 'FailedAccountCategorisationRequest';\r\n Categorisation?: Maybe;\r\n Reason?: Maybe;\r\n};\r\n\r\nexport type FailedRemoveAccountFromCategory = {\r\n __typename?: 'FailedRemoveAccountFromCategory';\r\n Reason?: Maybe;\r\n Request?: Maybe;\r\n};\r\n\r\nexport type FailedCategory = {\r\n __typename?: 'FailedCategory';\r\n Id?: Maybe;\r\n Name?: Maybe;\r\n Ordering?: Maybe;\r\n};\r\n\r\nexport type FailedProfileCategoryDeletion = {\r\n __typename?: 'FailedProfileCategoryDeletion';\r\n Id?: Maybe;\r\n};\r\n\r\nexport type FailedAccountTransactionCategorisationRequest = {\r\n __typename?: 'FailedAccountTransactionCategorisationRequest';\r\n /** Transaction to categorise */\r\n accountId: Scalars['Uuid'];\r\n /** Transaction to categorise */\r\n accountTransactionId: Scalars['Uuid'];\r\n /** Category to apply. Null to remove category */\r\n categoryId?: Maybe;\r\n failureCode?: Maybe;\r\n failureMessage?: Maybe;\r\n};\r\n\r\nexport type FailedAccountCategorisation = {\r\n __typename?: 'FailedAccountCategorisation';\r\n clientMutationId?: Maybe;\r\n reason?: Maybe;\r\n};\r\n\r\nexport enum MultiFactorResult {\r\n /** Supplied mfa request is incorrect, expired, or otherwise invalid */\r\n Invalid = 'INVALID',\r\n /** Mfa succeeded */\r\n Success = 'SUCCESS',\r\n /** Mfa is not enabled for this profile */\r\n Notenabled = 'NOTENABLED'\r\n}\r\n\r\nexport type UserNotification = {\r\n __typename?: 'UserNotification';\r\n /** Text body to display */\r\n Body?: Maybe;\r\n /** Can the notification be dismissed */\r\n Dismissable: Scalars['Boolean'];\r\n /** When the notification is shown from. */\r\n EffectiveFrom: Scalars['DateTime'];\r\n /** When the notification is shown until. */\r\n EffectiveTo?: Maybe;\r\n /** Is this notification enabled */\r\n Enabled: Scalars['Boolean'];\r\n /** Category of the Notification */\r\n UserNotificationType?: Maybe;\r\n};\r\n\r\n/** Add Graph filter object for GraphFile */\r\nexport type FileFilterInput = {\r\n DocumentCategory?: Maybe;\r\n DocumentType?: Maybe;\r\n PrivacyLevel?: Maybe;\r\n UserGenerated?: Maybe;\r\n};\r\n\r\n/** Represents a document linked to an instrument. */\r\nexport type File = {\r\n __typename?: 'File';\r\n CreatedOn: Scalars['DateTime'];\r\n /** Document Category */\r\n DocumentCategory?: Maybe;\r\n /** document type. */\r\n DocumentType: FileType;\r\n FileName?: Maybe;\r\n Id: Scalars['Uuid'];\r\n /** Has the file been deleted */\r\n IsDeleted: Scalars['Boolean'];\r\n /** document name. */\r\n Name?: Maybe;\r\n /** note against the document. */\r\n Note?: Maybe;\r\n /** document number. */\r\n Number?: Maybe;\r\n /** The Privacy level of a document */\r\n PrivacyLevel: PrivacyLevel;\r\n /** whether the document was user generated. */\r\n UserGenerated?: Maybe;\r\n};\r\n\r\n/** A Physical address, eg. Street Address */\r\nexport type Address = {\r\n __typename?: 'Address';\r\n /**\r\n * whether the address is a street address\r\n * or a postal box.\r\n */\r\n AddressDetailType: AddressDetailType;\r\n /** the address line 1 details if the address is not broken up */\r\n AddressLine1?: Maybe;\r\n /** the address line 2 details if the address is not broken up */\r\n AddressLine2?: Maybe;\r\n /** the address line 3 details if the address is not broken up */\r\n AddressLine3?: Maybe;\r\n /** the address line 4 details if the address is not broken up */\r\n AddressLine4?: Maybe;\r\n /** the building name. */\r\n Building?: Maybe;\r\n /** the country. */\r\n Country?: Maybe;\r\n /** the floor name. */\r\n FloorName?: Maybe;\r\n /** the floor number. */\r\n FloorNumber?: Maybe;\r\n /** the geographic location details of an address. */\r\n GeographicPosition?: Maybe;\r\n /** whether an address has been validated. */\r\n HasBeenVerified: Scalars['Boolean'];\r\n Id: Scalars['Uuid'];\r\n /** whether an address is a valid address. */\r\n IsValid: Scalars['Boolean'];\r\n /** the lot number. */\r\n LotNumber?: Maybe;\r\n /** the details of the postal box or roadside drop. */\r\n PostalBoxDetails?: Maybe;\r\n /** the postal area code. */\r\n PostalCode?: Maybe;\r\n /** the property name. */\r\n PropertyName?: Maybe;\r\n /** the geographic region (state/province etc). */\r\n Region?: Maybe;\r\n /** the name of the street. */\r\n StreetName?: Maybe;\r\n /**\r\n * the starting street number. Also used\r\n * as the individual street number.\r\n */\r\n StreetNumberFrom?: Maybe;\r\n /**\r\n * the ending street number. Ignored when\r\n * an address is one number only.\r\n */\r\n StreetNumberTo?: Maybe;\r\n /** Street Type eg. Street, Way, Boulevard */\r\n StreetType?: Maybe;\r\n /** the suburb or town. */\r\n SuburbTown?: Maybe;\r\n /** the unit number. */\r\n UnitNumber?: Maybe;\r\n};\r\n\r\n/** Definition of a custom field */\r\nexport type GraphFieldDefinition = {\r\n __typename?: 'GraphFieldDefinition';\r\n /** the datatype. */\r\n DataType: FieldDataType;\r\n /** the size limit for a text type field. */\r\n FieldLength: Scalars['Int'];\r\n /** help text displayed to a user. */\r\n HelpText?: Maybe;\r\n Id: Scalars['Uuid'];\r\n /** if the field is only active for Instruments. */\r\n InstrumentOnly: Scalars['Boolean'];\r\n /** if the Field Definition is active in the system. */\r\n IsActive: Scalars['Boolean'];\r\n /** if the field should only be added to a instrument/party once. */\r\n IsUnique: Scalars['Boolean'];\r\n /** the name of the field. */\r\n Name?: Maybe;\r\n /** if the field is only active for Parties. */\r\n PartyOnly: Scalars['Boolean'];\r\n /** the privacy level. */\r\n PrivacyLevel: PrivacyLevel;\r\n /** whether the field must be set. */\r\n Required: Scalars['Boolean'];\r\n};\r\n\r\n/** Profile Specific Category, Either Id or Name must be supplied */\r\nexport type AccountCategoryInput = {\r\n /** Id of an existing category */\r\n CategoryId?: Maybe;\r\n /** Order of the category if it is a new category */\r\n CategoryOrder?: Maybe;\r\n /** Name of an existing category or the new category if it doesn't exist */\r\n Name?: Maybe;\r\n};\r\n\r\nexport type FailedOrdering = {\r\n __typename?: 'FailedOrdering';\r\n /** Account to Apply Ordering */\r\n AccountId: Scalars['Uuid'];\r\n /** Optional Id of an existing ordering entry to update, null or empty to update all orderings for this account */\r\n Id?: Maybe;\r\n /** User defined order for the account */\r\n Ordering?: Maybe;\r\n /** Optional, Current User will be used if not provided */\r\n ProfileId?: Maybe;\r\n};\r\n\r\nexport type FailedCategorisation = {\r\n __typename?: 'FailedCategorisation';\r\n /** Account to Apply Categorisation */\r\n AccountId: Scalars['Uuid'];\r\n /** User defined category for the account */\r\n Category?: Maybe;\r\n};\r\n\r\nexport type FailedCategoryRemovalRequest = {\r\n __typename?: 'FailedCategoryRemovalRequest';\r\n /** Account to Apply Categorisation */\r\n AccountId: Scalars['Uuid'];\r\n /** Category to Remove */\r\n Category?: Maybe;\r\n /** Optional Id of an existing Categorisation entry to update, null or empty to update all Categorisations for this account */\r\n Id?: Maybe;\r\n};\r\n\r\nexport type UserNotificationType = {\r\n __typename?: 'UserNotificationType';\r\n /** Short code to reference the type */\r\n Code?: Maybe;\r\n /** Description of the type */\r\n Description?: Maybe;\r\n};\r\n\r\nexport type ValueFilterOfFileTypeInput = {\r\n /** Where equal to value */\r\n _eq?: Maybe;\r\n /** Where value is in list */\r\n _in?: Maybe>;\r\n /** Where not equal to value */\r\n _neq?: Maybe;\r\n};\r\n\r\nexport type ValueFilterOfPrivacyLevelInput = {\r\n /** Where equal to value */\r\n _eq?: Maybe;\r\n /** Where value is in list */\r\n _in?: Maybe>;\r\n /** Where not equal to value */\r\n _neq?: Maybe;\r\n};\r\n\r\nexport type GraphDocumentCategoryFilterInput = {\r\n Id?: Maybe;\r\n Name?: Maybe;\r\n};\r\n\r\nexport enum FileType {\r\n Document = 'DOCUMENT',\r\n Statement = 'STATEMENT',\r\n Image = 'IMAGE',\r\n Profileimage = 'PROFILEIMAGE',\r\n Logo = 'LOGO',\r\n Signature = 'SIGNATURE',\r\n Template = 'TEMPLATE',\r\n Resource = 'RESOURCE',\r\n Documentheader = 'DOCUMENTHEADER',\r\n Documentfooter = 'DOCUMENTFOOTER',\r\n Marketingimage = 'MARKETINGIMAGE'\r\n}\r\n\r\nexport type DocumentCategory = {\r\n __typename?: 'DocumentCategory';\r\n Id: Scalars['Uuid'];\r\n /** name of the category. */\r\n Name?: Maybe;\r\n};\r\n\r\nexport enum PrivacyLevel {\r\n Private = 'PRIVATE',\r\n Restricted = 'RESTRICTED',\r\n Public = 'PUBLIC'\r\n}\r\n\r\n/** The set of address detail types. */\r\nexport enum AddressDetailType {\r\n /** The address is a street address. */\r\n Street = 'STREET',\r\n /** The address contains postal box details. */\r\n Postalbox = 'POSTALBOX',\r\n /** The address could not be broken up into the relevant details. */\r\n Printformat = 'PRINTFORMAT'\r\n}\r\n\r\n/** Geo Location */\r\nexport type GeographicLocation = {\r\n __typename?: 'GeographicLocation';\r\n Latitude: Scalars['Decimal'];\r\n Longitude: Scalars['Decimal'];\r\n};\r\n\r\nexport enum FieldDataType {\r\n Text = 'TEXT',\r\n Number = 'NUMBER',\r\n Money = 'MONEY',\r\n Flag = 'FLAG',\r\n Date = 'DATE'\r\n}\r\n\r\nexport type StringFilterInput = {\r\n /** Where is equal to enum */\r\n _eq?: Maybe;\r\n /** Where enum is in list */\r\n _in?: Maybe>>;\r\n /** Where not equal to enum */\r\n _neq?: Maybe;\r\n};\r\n\r\nexport type ValueFilterOfGuidInput = {\r\n /** Where equal to value */\r\n _eq?: Maybe;\r\n /** Where value is in list */\r\n _in?: Maybe>;\r\n /** Where not equal to value */\r\n _neq?: Maybe;\r\n};\r\n\r\nexport type MutationResponse = {\r\n Code: Scalars['String'];\r\n Success: Scalars['Boolean'];\r\n Message?: Maybe;\r\n};\r\n\r\nexport type CurrentTheme = {\r\n __typename?: 'CurrentTheme';\r\n theme: Scalars['String'];\r\n};\r\n\r\nexport type LocalConfig = {\r\n __typename?: 'LocalConfig';\r\n allowOnlinePasswordReset: Scalars['Boolean'];\r\n currentTheme?: Maybe;\r\n};\r\n\r\nexport type DismissNotificationResult = MutationResponse & {\r\n __typename?: 'DismissNotificationResult';\r\n Code: Scalars['String'];\r\n Success: Scalars['Boolean'];\r\n Message?: Maybe;\r\n Data?: Maybe;\r\n};\r\n\r\nexport type CurrentUserNotificationsQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type CurrentUserNotificationsQuery = (\r\n { __typename?: 'Query' }\r\n & { userNotifications?: Maybe\r\n & { Account?: Maybe<(\r\n { __typename?: 'Account' }\r\n & Pick\r\n )>, NewInstalmentAmount?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )> }\r\n )>>> }\r\n);\r\n\r\nexport type AccountByIdOrNumberQueryVariables = Exact<{\r\n idOrNumber: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type AccountByIdOrNumberQuery = (\r\n { __typename?: 'Query' }\r\n & { accountByIdOrNumber?: Maybe<(\r\n { __typename?: 'Account' }\r\n & Pick\r\n & { Transactions?: Maybe\r\n )>>>, Statements?: Maybe\r\n )>>>, Cards?: Maybe\r\n )>>>, CurrentUserAccountAuthority?: Maybe<(\r\n { __typename?: 'AccountAuthority' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type ChangeAccountDescriptionMutationVariables = Exact<{\r\n input: ChangeAccountDescriptionInput;\r\n}>;\r\n\r\n\r\nexport type ChangeAccountDescriptionMutation = (\r\n { __typename?: 'Mutation' }\r\n & { changeAccountDescription?: Maybe<(\r\n { __typename?: 'ChangeAccountDescriptionResponse' }\r\n & Pick\r\n & { Data?: Maybe<(\r\n { __typename?: 'Account' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type InstrumentAuthorityAccountsQueryVariables = Exact<{\r\n account: Scalars['String'];\r\n date?: Maybe;\r\n}>;\r\n\r\n\r\nexport type InstrumentAuthorityAccountsQuery = (\r\n { __typename?: 'Query' }\r\n & { instrumentByAccount?: Maybe<(\r\n { __typename?: 'Instrument' }\r\n & Pick\r\n & { Accounts?: Maybe\r\n & { CurrentUserAccountAuthority?: Maybe<(\r\n { __typename?: 'AccountAuthority' }\r\n & Pick\r\n )> }\r\n )>>> }\r\n )>, accountLimits?: Maybe\r\n & { Limits?: Maybe<(\r\n { __typename?: 'AccountLimit' }\r\n & { DailyRedrawLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, RemainingDailyRedrawLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, DailyPayAnyoneLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, RemainingDailyPayAnyoneLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )> }\r\n )> }\r\n )>>> }\r\n);\r\n\r\nexport type BpayBillerDetailsQueryVariables = Exact<{\r\n input: BpayBillerDetailsInput;\r\n}>;\r\n\r\n\r\nexport type BpayBillerDetailsQuery = (\r\n { __typename?: 'Query' }\r\n & { bpayBiller?: Maybe<(\r\n { __typename?: 'BpayBiller' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type BpayBillerHistoryQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type BpayBillerHistoryQuery = (\r\n { __typename?: 'Query' }\r\n & { userSession?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & { Party?: Maybe<(\r\n { __typename?: 'Party' }\r\n & Pick\r\n & { BpayBillerHistory?: Maybe\r\n )>>> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type BpayTransferRequestMutationVariables = Exact<{\r\n input: BpayTransferRequestInput;\r\n}>;\r\n\r\n\r\nexport type BpayTransferRequestMutation = (\r\n { __typename?: 'Mutation' }\r\n & { bpayTransferRequest?: Maybe<(\r\n { __typename?: 'BpayTransferRequestResponse' }\r\n & Pick\r\n & { FundsTransfer?: Maybe<(\r\n { __typename?: 'FundsTransfer' }\r\n & Pick\r\n )>, ValidationErrors?: Maybe\r\n )>>> }\r\n )> }\r\n);\r\n\r\nexport type StopPendingFundsTransferMutationVariables = Exact<{\r\n input: StopPendingFundsTransferInput;\r\n}>;\r\n\r\n\r\nexport type StopPendingFundsTransferMutation = (\r\n { __typename?: 'Mutation' }\r\n & { stopPendingFundsTransfer?: Maybe<(\r\n { __typename?: 'StopPendingFundsTransferResponse' }\r\n & Pick\r\n & { FundsTransfer?: Maybe<(\r\n { __typename: 'FundsTransfer' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type CreateBpayBillerMutationVariables = Exact<{\r\n input: CreateBpayBillerInput;\r\n}>;\r\n\r\n\r\nexport type CreateBpayBillerMutation = (\r\n { __typename?: 'Mutation' }\r\n & { createBpayBiller?: Maybe<(\r\n { __typename?: 'CreateBpayBillerResponse' }\r\n & Pick\r\n & { NewBpayBiller?: Maybe<(\r\n { __typename?: 'BpayBiller' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type DeleteBpayPartyBillerMutationVariables = Exact<{\r\n input: DeleteBpayPartyBillerInput;\r\n}>;\r\n\r\n\r\nexport type DeleteBpayPartyBillerMutation = (\r\n { __typename?: 'Mutation' }\r\n & { deleteBpayPartyBiller?: Maybe<(\r\n { __typename?: 'DeleteBpayPartyBillerResponse' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type BankBranchDetailsQueryVariables = Exact<{\r\n args: BankBranchDetailsInput;\r\n}>;\r\n\r\n\r\nexport type BankBranchDetailsQuery = (\r\n { __typename?: 'Query' }\r\n & { bankBranchLookup?: Maybe<(\r\n { __typename?: 'BankBranch' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type TransferLimitValidationQueryVariables = Exact<{\r\n accountId?: Maybe;\r\n date?: Maybe;\r\n}>;\r\n\r\n\r\nexport type TransferLimitValidationQuery = (\r\n { __typename?: 'Query' }\r\n & { accountLimits?: Maybe\r\n & { Limits?: Maybe<(\r\n { __typename?: 'AccountLimit' }\r\n & { RemainingDailyRedrawLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, RemainingDailyPayAnyoneLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )> }\r\n )> }\r\n )>>>, accountByIdOrNumber?: Maybe<(\r\n { __typename?: 'Account' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type AccountFundsTransfersQueryVariables = Exact<{\r\n accountIdOrNumber: Scalars['String'];\r\n transactionFilter?: Maybe;\r\n}>;\r\n\r\n\r\nexport type AccountFundsTransfersQuery = (\r\n { __typename?: 'Query' }\r\n & { accountByIdOrNumber?: Maybe<(\r\n { __typename?: 'Account' }\r\n & Pick\r\n & { PendingAccountFundsTransfers?: Maybe\r\n )>>>, ProcessedAccountFundsTransfers?: Maybe\r\n )>>>, BankAccounts?: Maybe\r\n )>>>, AccountLimits?: Maybe\r\n & { Limits?: Maybe<(\r\n { __typename?: 'AccountLimit' }\r\n & { DailyRedrawLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, RemainingDailyRedrawLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, DailyPayAnyoneLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, RemainingDailyPayAnyoneLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )> }\r\n )> }\r\n )>>>, CurrentUserAccountAuthority?: Maybe<(\r\n { __typename?: 'AccountAuthority' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type CreatePayAnyoneBankAccountMutationVariables = Exact<{\r\n input: CreatePayAnyoneBankAccountInput;\r\n}>;\r\n\r\n\r\nexport type CreatePayAnyoneBankAccountMutation = (\r\n { __typename?: 'Mutation' }\r\n & { createPayAnyoneBankAccount?: Maybe<(\r\n { __typename?: 'CreatePayAnyoneBankAccountResponse' }\r\n & Pick\r\n & { NewPartyBankAccount?: Maybe<(\r\n { __typename?: 'PartyBankAccount' }\r\n & Pick\r\n & { BankAccount?: Maybe<(\r\n { __typename?: 'BankAccount' }\r\n & Pick\r\n )> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type CurrentUserPartyBankAccountsQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type CurrentUserPartyBankAccountsQuery = (\r\n { __typename?: 'Query' }\r\n & { userSession?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n & { Party?: Maybe<(\r\n { __typename?: 'Party' }\r\n & Pick\r\n & { PartyBankAccounts?: Maybe\r\n & { BankAccount?: Maybe<(\r\n { __typename?: 'BankAccount' }\r\n & Pick\r\n )> }\r\n )>>> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type DeletePartyBankAccountMutationVariables = Exact<{\r\n input: DeletePartyBankAccountInput;\r\n}>;\r\n\r\n\r\nexport type DeletePartyBankAccountMutation = (\r\n { __typename?: 'Mutation' }\r\n & { deletePartyBankAccount?: Maybe<(\r\n { __typename?: 'DeletePartyBankAccountResponse' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type RequestPayAnyoneTransferMutationVariables = Exact<{\r\n input: RequestPayAnyoneTransferInput;\r\n}>;\r\n\r\n\r\nexport type RequestPayAnyoneTransferMutation = (\r\n { __typename?: 'Mutation' }\r\n & { requestPayAnyoneTransfer?: Maybe<(\r\n { __typename?: 'RequestPayAnyoneTransferResponse' }\r\n & Pick\r\n & { FundsTransfer?: Maybe<(\r\n { __typename?: 'FundsTransfer' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type InstrumentByAccountIdQueryVariables = Exact<{\r\n account: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type InstrumentByAccountIdQuery = (\r\n { __typename?: 'Query' }\r\n & { instrumentByAccount?: Maybe<(\r\n { __typename?: 'Instrument' }\r\n & Pick\r\n & { Accounts?: Maybe\r\n & { CurrentUserAccountAuthority?: Maybe<(\r\n { __typename?: 'AccountAuthority' }\r\n & Pick\r\n )> }\r\n )>>> }\r\n )> }\r\n);\r\n\r\nexport type AccountLimitQueryVariables = Exact<{\r\n accountId: Scalars['String'];\r\n date?: Maybe;\r\n}>;\r\n\r\n\r\nexport type AccountLimitQuery = (\r\n { __typename?: 'Query' }\r\n & { accountLimits?: Maybe\r\n & { Limits?: Maybe<(\r\n { __typename?: 'AccountLimit' }\r\n & { DailyRedrawLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, RemainingDailyRedrawLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, DailyPayAnyoneLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, RemainingDailyPayAnyoneLimit?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )> }\r\n )> }\r\n )>>> }\r\n);\r\n\r\nexport type RequestPayAnyoneTransferMutationMutationVariables = Exact<{\r\n input: RequestPayAnyoneTransferInput;\r\n}>;\r\n\r\n\r\nexport type RequestPayAnyoneTransferMutationMutation = (\r\n { __typename?: 'Mutation' }\r\n & { requestPayAnyoneTransfer?: Maybe<(\r\n { __typename?: 'RequestPayAnyoneTransferResponse' }\r\n & Pick\r\n & { FundsTransfer?: Maybe<(\r\n { __typename?: 'FundsTransfer' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type UpdatePendingAccountFundsTransfersFragmentFragment = (\r\n { __typename: 'Account' }\r\n & Pick\r\n & { PendingAccountFundsTransfers?: Maybe\r\n )>>> }\r\n);\r\n\r\nexport type CloseOtherSessionsMutationVariables = Exact<{\r\n input: ForceCloseCurrentUserSessionsInput;\r\n}>;\r\n\r\n\r\nexport type CloseOtherSessionsMutation = (\r\n { __typename?: 'Mutation' }\r\n & { closeCurrentUserSessions?: Maybe<(\r\n { __typename?: 'ForceCloseCurrentUserSessionsResponse' }\r\n & Pick\r\n & { Data?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n & { CurrentSession?: Maybe<(\r\n { __typename?: 'LoginAttempt' }\r\n & Pick\r\n )>, LoginAttempts?: Maybe\r\n )>>> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type ChangeCurrentUserPasswordMutationVariables = Exact<{\r\n input: ChangePasswordInput;\r\n}>;\r\n\r\n\r\nexport type ChangeCurrentUserPasswordMutation = (\r\n { __typename?: 'Mutation' }\r\n & { changeCurrentUserPassword?: Maybe<(\r\n { __typename?: 'ChangePasswordResponse' }\r\n & Pick\r\n & { UserSession?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n & { Party?: Maybe<(\r\n { __typename?: 'Party' }\r\n & Pick\r\n )> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type PasswordValidatorByApplicationQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type PasswordValidatorByApplicationQuery = (\r\n { __typename?: 'Query' }\r\n & { passwordValidatorByApplication?: Maybe<(\r\n { __typename?: 'PasswordValidator' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type BankingUserLogoutMutationVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type BankingUserLogoutMutation = (\r\n { __typename?: 'Mutation' }\r\n & { logout?: Maybe<(\r\n { __typename?: 'LogoutPayload' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type RequestPasswordResetMutationVariables = Exact<{\r\n input: ResetPasswordInput;\r\n}>;\r\n\r\n\r\nexport type RequestPasswordResetMutation = (\r\n { __typename?: 'Mutation' }\r\n & { requestPasswordReset?: Maybe<(\r\n { __typename?: 'ResetPasswordResponse' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type AcceptTermsMutationVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type AcceptTermsMutation = (\r\n { __typename?: 'Mutation' }\r\n & { acceptTerms?: Maybe<(\r\n { __typename?: 'AcceptTermsPayload' }\r\n & Pick\r\n & { UserSession: (\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n ) }\r\n )> }\r\n);\r\n\r\nexport type BankingUserLoginMutationVariables = Exact<{\r\n input: LoginInput;\r\n}>;\r\n\r\n\r\nexport type BankingUserLoginMutation = (\r\n { __typename?: 'Mutation' }\r\n & { login?: Maybe<(\r\n { __typename?: 'LoginResponse' }\r\n & Pick\r\n & { UserSession?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n & { FinanceSummary?: Maybe<(\r\n { __typename?: 'FinanceSummary' }\r\n & Pick\r\n )>, Party?: Maybe<(\r\n { __typename?: 'Party' }\r\n & Pick\r\n )> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type BankingUserLoginV2MutationVariables = Exact<{\r\n input: LoginV2Input;\r\n}>;\r\n\r\n\r\nexport type BankingUserLoginV2Mutation = (\r\n { __typename?: 'Mutation' }\r\n & { loginV2?: Maybe<(\r\n { __typename?: 'LoginV2Response' }\r\n & Pick\r\n & { UserSession?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n & { FinanceSummary?: Maybe<(\r\n { __typename?: 'FinanceSummary' }\r\n & Pick\r\n )>, Party?: Maybe<(\r\n { __typename?: 'Party' }\r\n & Pick\r\n )> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type IsUserAuthenticatedQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type IsUserAuthenticatedQuery = (\r\n { __typename?: 'Query' }\r\n & { userSession?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n & { Party?: Maybe<(\r\n { __typename?: 'Party' }\r\n & Pick\r\n )>, CurrentSession?: Maybe<(\r\n { __typename?: 'LoginAttempt' }\r\n & Pick\r\n )>, LoginAttempts?: Maybe\r\n )>>> }\r\n )> }\r\n);\r\n\r\nexport type IndueCardChangePinMutationVariables = Exact<{\r\n input: IndueCardChangePinInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardChangePinMutation = (\r\n { __typename?: 'Mutation' }\r\n & { changePin?: Maybe<(\r\n { __typename?: 'IndueCardChangeResponse' }\r\n & Pick\r\n & { Card: (\r\n { __typename?: 'IndueCard' }\r\n & Pick\r\n ) }\r\n )> }\r\n);\r\n\r\nexport type IndueCardChangeStatusMutationVariables = Exact<{\r\n input: IndueCardChangeStatusInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardChangeStatusMutation = (\r\n { __typename?: 'Mutation' }\r\n & { changeStatus?: Maybe<(\r\n { __typename?: 'IndueCardChangeResponse' }\r\n & Pick\r\n & { Card: (\r\n { __typename?: 'IndueCard' }\r\n & Pick\r\n ) }\r\n )> }\r\n);\r\n\r\nexport type IndueCardCreateCardMutationVariables = Exact<{\r\n input: IndueCardCreateCardInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardCreateCardMutation = (\r\n { __typename?: 'Mutation' }\r\n & { createCard?: Maybe<(\r\n { __typename?: 'IndueCardCreateCardResponse' }\r\n & Pick\r\n & { Card?: Maybe<(\r\n { __typename?: 'IndueCard' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type IndueCardDetailsQueryVariables = Exact<{\r\n input: IndueCardDetailsInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardDetailsQuery = (\r\n { __typename?: 'Query' }\r\n & { indueCardDetails?: Maybe<(\r\n { __typename?: 'IndueCard' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type IndueCardsandAssociationsByAccountQueryVariables = Exact<{\r\n accountId: Scalars['Uuid'];\r\n accountIdString: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type IndueCardsandAssociationsByAccountQuery = (\r\n { __typename?: 'Query' }\r\n & { indueCardsByAccount?: Maybe\r\n )>>>, partyAssociationByAccount?: Maybe<(\r\n { __typename?: 'PartyAccountAssociation' }\r\n & Pick\r\n )>, accountByIdOrNumber?: Maybe<(\r\n { __typename?: 'Account' }\r\n & Pick\r\n & { CurrentUserAccountAuthority?: Maybe<(\r\n { __typename?: 'AccountAuthority' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type IndueCardsByAccountQueryVariables = Exact<{\r\n input: IndueCardsByAccountInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardsByAccountQuery = (\r\n { __typename?: 'Query' }\r\n & { indueCardsByAccount?: Maybe\r\n )>>> }\r\n);\r\n\r\nexport type PartyAssociationByAccountQueryVariables = Exact<{\r\n input: PartyAssociationByAccountInput;\r\n}>;\r\n\r\n\r\nexport type PartyAssociationByAccountQuery = (\r\n { __typename?: 'Query' }\r\n & { partyAssociationByAccount?: Maybe<(\r\n { __typename?: 'PartyAccountAssociation' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type RequestNewMultiFactorSecurityTokenMutationVariables = Exact<{\r\n input: RequestMultiFactorAuthorisationInput;\r\n}>;\r\n\r\n\r\nexport type RequestNewMultiFactorSecurityTokenMutation = (\r\n { __typename?: 'Mutation' }\r\n & { requestMultiFactorAuthorisation?: Maybe<(\r\n { __typename?: 'RequestMultiFactorAuthorisationResponse' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type DisbursementRequestMutationVariables = Exact<{\r\n input: DisbursementRequestInput;\r\n}>;\r\n\r\n\r\nexport type DisbursementRequestMutation = (\r\n { __typename?: 'Mutation' }\r\n & { disbursementRequest?: Maybe<(\r\n { __typename?: 'DisbursementRequestResponse' }\r\n & Pick\r\n & { Data?: Maybe<(\r\n { __typename?: 'DisbursementStage' }\r\n & Pick\r\n & { Documents?: Maybe\r\n )>>> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type FinanceSummaryQueryInlineQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type FinanceSummaryQueryInlineQuery = (\r\n { __typename?: 'Query' }\r\n & { financeSummary?: Maybe<(\r\n { __typename?: 'FinanceSummary' }\r\n & Pick\r\n & { TotalPrincipal?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, TotalRedraw?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, Instruments?: Maybe\r\n & { Accounts?: Maybe\r\n )>>> }\r\n )>>> }\r\n )> }\r\n);\r\n\r\nexport type FinanceSummaryQueryQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type FinanceSummaryQueryQuery = (\r\n { __typename?: 'Query' }\r\n & { financeSummary?: Maybe<(\r\n { __typename?: 'FinanceSummary' }\r\n & { TotalPrincipal?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, TotalRedraw?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )>, Instruments?: Maybe\r\n & { Accounts?: Maybe\r\n )>>> }\r\n )>>> }\r\n )> }\r\n);\r\n\r\nexport type InstrumentByIdOrNumberQueryVariables = Exact<{\r\n idOrNumber: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type InstrumentByIdOrNumberQuery = (\r\n { __typename?: 'Query' }\r\n & { instrumentByIdOrNumber?: Maybe<(\r\n { __typename?: 'Instrument' }\r\n & Pick\r\n & { Accounts?: Maybe\r\n )>>> }\r\n )> }\r\n);\r\n\r\nexport type IsShariaQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type IsShariaQuery = (\r\n { __typename?: 'Query' }\r\n & { userSession?: Maybe<(\r\n { __typename?: 'UserSession' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type DismissNotificationMutationVariables = Exact<{\r\n notificationId: Scalars['ID'];\r\n}>;\r\n\r\n\r\nexport type DismissNotificationMutation = (\r\n { __typename?: 'Mutation' }\r\n & { dismissNotification?: Maybe<(\r\n { __typename?: 'DismissNotificationResult' }\r\n & Pick\r\n & { Data?: Maybe<(\r\n { __typename?: 'InterestConversionNotification' }\r\n & Pick\r\n & { Account?: Maybe<(\r\n { __typename?: 'Account' }\r\n & Pick\r\n )>, NewInstalmentAmount?: Maybe<(\r\n { __typename?: 'Money' }\r\n & Pick\r\n )> }\r\n )> }\r\n )> }\r\n);\r\n\r\nexport const UpdatePendingAccountFundsTransfersFragmentFragmentDoc = gql`\r\n fragment updatePendingAccountFundsTransfersFragment on Account {\r\n __typename\r\n Id\r\n PendingAccountFundsTransfers {\r\n Id\r\n ApplicationInstance\r\n ReceiptNumber\r\n AccountId\r\n TransferType\r\n TaskId\r\n TransferTypeDescription\r\n StartingOn\r\n Frequency\r\n FurtherNotice\r\n EndingOn\r\n FromAccountId\r\n FromAccountDescription\r\n ToAccountId\r\n ToAccountDescription\r\n Billercode\r\n BillerName\r\n CustomerReferenceNumber\r\n Amount\r\n RegularPayment\r\n NextScheduledDate\r\n DepositDescription\r\n WithdrawalDescription\r\n NumberOfTimes\r\n SpecifiedDate\r\n }\r\n}\r\n `;\r\nexport const CurrentUserNotificationsDocument = gql`\r\n query currentUserNotifications {\r\n userNotifications {\r\n Id\r\n Account {\r\n InstrumentId\r\n Number\r\n Id\r\n }\r\n ConversionType\r\n ConversionDate\r\n NewInstalmentAmount {\r\n CurrencyCode\r\n Amount\r\n }\r\n NewInstalmentFrequency\r\n Dismissed @client\r\n }\r\n}\r\n `;\r\nexport type CurrentUserNotificationsComponentProps = Omit, 'query'>;\r\n\r\n export const CurrentUserNotificationsComponent = (props: CurrentUserNotificationsComponentProps) => (\r\n query={CurrentUserNotificationsDocument} {...props} />\r\n );\r\n \r\nexport type CurrentUserNotificationsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withCurrentUserNotifications(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n CurrentUserNotificationsQuery,\r\n CurrentUserNotificationsQueryVariables,\r\n CurrentUserNotificationsProps>) {\r\n return ApolloReactHoc.withQuery>(CurrentUserNotificationsDocument, {\r\n alias: 'currentUserNotifications',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useCurrentUserNotificationsQuery__\r\n *\r\n * To run a query within a React component, call `useCurrentUserNotificationsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useCurrentUserNotificationsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useCurrentUserNotificationsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useCurrentUserNotificationsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(CurrentUserNotificationsDocument, baseOptions);\r\n }\r\nexport function useCurrentUserNotificationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(CurrentUserNotificationsDocument, baseOptions);\r\n }\r\nexport type CurrentUserNotificationsQueryHookResult = ReturnType;\r\nexport type CurrentUserNotificationsLazyQueryHookResult = ReturnType;\r\nexport type CurrentUserNotificationsQueryResult = Apollo.QueryResult;\r\nexport const AccountByIdOrNumberDocument = gql`\r\n query accountByIdOrNumber($idOrNumber: String!) {\r\n accountByIdOrNumber(idOrNumber: $idOrNumber) {\r\n Id\r\n Number\r\n Description\r\n DisplayOrder\r\n InstrumentId\r\n LegacyNumber\r\n ProductType\r\n CurrentBalance\r\n Redraw\r\n ArrearsBalance\r\n InterestType\r\n CardAccount\r\n CardAvailable\r\n MonthlyInstalment\r\n NextInstalmentDue\r\n OffsetAccount\r\n Rate\r\n Transactions {\r\n Id\r\n SequenceNumber\r\n TransactionNumber\r\n Processed\r\n Effective\r\n EffectiveDate\r\n TransactionType\r\n StatementText\r\n Increase\r\n Decrease\r\n Balance\r\n Note\r\n WasReversed\r\n WasDishonoured\r\n WasBackedOut\r\n WasWaived\r\n AppearsOnStatement\r\n CreatedOn\r\n IsPending\r\n }\r\n Statements {\r\n Id\r\n Number\r\n InstrumentId\r\n AccountNumber\r\n AccountId\r\n PartyId\r\n ProcessedDate\r\n PeriodFrom\r\n PeriodTo\r\n FileId\r\n Filename\r\n Type\r\n AdHoc\r\n }\r\n Cards {\r\n Id\r\n Number\r\n HolderRelationship\r\n State\r\n ExpiryDate\r\n Type\r\n NameOnCard\r\n }\r\n CurrentUserAccountAuthority {\r\n Id\r\n BPay\r\n Operate\r\n PayAnyone\r\n Redraw\r\n View\r\n }\r\n }\r\n}\r\n `;\r\nexport type AccountByIdOrNumberComponentProps = Omit, 'query'> & ({ variables: AccountByIdOrNumberQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const AccountByIdOrNumberComponent = (props: AccountByIdOrNumberComponentProps) => (\r\n query={AccountByIdOrNumberDocument} {...props} />\r\n );\r\n \r\nexport type AccountByIdOrNumberProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withAccountByIdOrNumber(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n AccountByIdOrNumberQuery,\r\n AccountByIdOrNumberQueryVariables,\r\n AccountByIdOrNumberProps>) {\r\n return ApolloReactHoc.withQuery>(AccountByIdOrNumberDocument, {\r\n alias: 'accountByIdOrNumber',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useAccountByIdOrNumberQuery__\r\n *\r\n * To run a query within a React component, call `useAccountByIdOrNumberQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useAccountByIdOrNumberQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useAccountByIdOrNumberQuery({\r\n * variables: {\r\n * idOrNumber: // value for 'idOrNumber'\r\n * },\r\n * });\r\n */\r\nexport function useAccountByIdOrNumberQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(AccountByIdOrNumberDocument, baseOptions);\r\n }\r\nexport function useAccountByIdOrNumberLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(AccountByIdOrNumberDocument, baseOptions);\r\n }\r\nexport type AccountByIdOrNumberQueryHookResult = ReturnType;\r\nexport type AccountByIdOrNumberLazyQueryHookResult = ReturnType;\r\nexport type AccountByIdOrNumberQueryResult = Apollo.QueryResult;\r\nexport const ChangeAccountDescriptionDocument = gql`\r\n mutation changeAccountDescription($input: ChangeAccountDescriptionInput!) {\r\n changeAccountDescription(input: $input) {\r\n Code\r\n Message\r\n Success\r\n Data {\r\n Id\r\n Description\r\n }\r\n }\r\n}\r\n `;\r\nexport type ChangeAccountDescriptionMutationFn = Apollo.MutationFunction;\r\nexport type ChangeAccountDescriptionComponentProps = Omit, 'mutation'>;\r\n\r\n export const ChangeAccountDescriptionComponent = (props: ChangeAccountDescriptionComponentProps) => (\r\n mutation={ChangeAccountDescriptionDocument} {...props} />\r\n );\r\n \r\nexport type ChangeAccountDescriptionProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withChangeAccountDescription(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n ChangeAccountDescriptionMutation,\r\n ChangeAccountDescriptionMutationVariables,\r\n ChangeAccountDescriptionProps>) {\r\n return ApolloReactHoc.withMutation>(ChangeAccountDescriptionDocument, {\r\n alias: 'changeAccountDescription',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useChangeAccountDescriptionMutation__\r\n *\r\n * To run a mutation, you first call `useChangeAccountDescriptionMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useChangeAccountDescriptionMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [changeAccountDescriptionMutation, { data, loading, error }] = useChangeAccountDescriptionMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useChangeAccountDescriptionMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(ChangeAccountDescriptionDocument, baseOptions);\r\n }\r\nexport type ChangeAccountDescriptionMutationHookResult = ReturnType;\r\nexport type ChangeAccountDescriptionMutationResult = Apollo.MutationResult;\r\nexport type ChangeAccountDescriptionMutationOptions = Apollo.BaseMutationOptions;\r\nexport const InstrumentAuthorityAccountsDocument = gql`\r\n query instrumentAuthorityAccounts($account: String!, $date: DateTime) {\r\n instrumentByAccount(account: {Id: $account}) {\r\n Id\r\n Accounts {\r\n Id\r\n Number\r\n Description\r\n Redraw\r\n CurrentBalance\r\n CurrentUserAccountAuthority {\r\n Id\r\n BPay\r\n Operate\r\n PayAnyone\r\n Redraw\r\n View\r\n }\r\n }\r\n }\r\n accountLimits(\r\n accountId: $account\r\n filter: {DateRange: {From: $date, To: $date}}\r\n ) {\r\n Id\r\n EffectiveDate\r\n Limits {\r\n DailyRedrawLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyRedrawLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n DailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type InstrumentAuthorityAccountsComponentProps = Omit, 'query'> & ({ variables: InstrumentAuthorityAccountsQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const InstrumentAuthorityAccountsComponent = (props: InstrumentAuthorityAccountsComponentProps) => (\r\n query={InstrumentAuthorityAccountsDocument} {...props} />\r\n );\r\n \r\nexport type InstrumentAuthorityAccountsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withInstrumentAuthorityAccounts(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n InstrumentAuthorityAccountsQuery,\r\n InstrumentAuthorityAccountsQueryVariables,\r\n InstrumentAuthorityAccountsProps>) {\r\n return ApolloReactHoc.withQuery>(InstrumentAuthorityAccountsDocument, {\r\n alias: 'instrumentAuthorityAccounts',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useInstrumentAuthorityAccountsQuery__\r\n *\r\n * To run a query within a React component, call `useInstrumentAuthorityAccountsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useInstrumentAuthorityAccountsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useInstrumentAuthorityAccountsQuery({\r\n * variables: {\r\n * account: // value for 'account'\r\n * date: // value for 'date'\r\n * },\r\n * });\r\n */\r\nexport function useInstrumentAuthorityAccountsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(InstrumentAuthorityAccountsDocument, baseOptions);\r\n }\r\nexport function useInstrumentAuthorityAccountsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(InstrumentAuthorityAccountsDocument, baseOptions);\r\n }\r\nexport type InstrumentAuthorityAccountsQueryHookResult = ReturnType;\r\nexport type InstrumentAuthorityAccountsLazyQueryHookResult = ReturnType;\r\nexport type InstrumentAuthorityAccountsQueryResult = Apollo.QueryResult;\r\nexport const BpayBillerDetailsDocument = gql`\r\n query BpayBillerDetails($input: BpayBillerDetailsInput!) {\r\n bpayBiller(input: $input) {\r\n Id\r\n Billercode\r\n BillerDescription\r\n }\r\n}\r\n `;\r\nexport type BpayBillerDetailsComponentProps = Omit, 'query'> & ({ variables: BpayBillerDetailsQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const BpayBillerDetailsComponent = (props: BpayBillerDetailsComponentProps) => (\r\n query={BpayBillerDetailsDocument} {...props} />\r\n );\r\n \r\nexport type BpayBillerDetailsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withBpayBillerDetails(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n BpayBillerDetailsQuery,\r\n BpayBillerDetailsQueryVariables,\r\n BpayBillerDetailsProps>) {\r\n return ApolloReactHoc.withQuery>(BpayBillerDetailsDocument, {\r\n alias: 'bpayBillerDetails',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useBpayBillerDetailsQuery__\r\n *\r\n * To run a query within a React component, call `useBpayBillerDetailsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useBpayBillerDetailsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useBpayBillerDetailsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useBpayBillerDetailsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(BpayBillerDetailsDocument, baseOptions);\r\n }\r\nexport function useBpayBillerDetailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(BpayBillerDetailsDocument, baseOptions);\r\n }\r\nexport type BpayBillerDetailsQueryHookResult = ReturnType;\r\nexport type BpayBillerDetailsLazyQueryHookResult = ReturnType;\r\nexport type BpayBillerDetailsQueryResult = Apollo.QueryResult;\r\nexport const BpayBillerHistoryDocument = gql`\r\n query bpayBillerHistory {\r\n userSession {\r\n Party {\r\n Id\r\n BpayBillerHistory {\r\n Id\r\n Billercode\r\n BillerDescription\r\n BillerName\r\n CustomerReferenceNumber\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type BpayBillerHistoryComponentProps = Omit, 'query'>;\r\n\r\n export const BpayBillerHistoryComponent = (props: BpayBillerHistoryComponentProps) => (\r\n query={BpayBillerHistoryDocument} {...props} />\r\n );\r\n \r\nexport type BpayBillerHistoryProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withBpayBillerHistory(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n BpayBillerHistoryQuery,\r\n BpayBillerHistoryQueryVariables,\r\n BpayBillerHistoryProps>) {\r\n return ApolloReactHoc.withQuery>(BpayBillerHistoryDocument, {\r\n alias: 'bpayBillerHistory',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useBpayBillerHistoryQuery__\r\n *\r\n * To run a query within a React component, call `useBpayBillerHistoryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useBpayBillerHistoryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useBpayBillerHistoryQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useBpayBillerHistoryQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(BpayBillerHistoryDocument, baseOptions);\r\n }\r\nexport function useBpayBillerHistoryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(BpayBillerHistoryDocument, baseOptions);\r\n }\r\nexport type BpayBillerHistoryQueryHookResult = ReturnType;\r\nexport type BpayBillerHistoryLazyQueryHookResult = ReturnType;\r\nexport type BpayBillerHistoryQueryResult = Apollo.QueryResult;\r\nexport const BpayTransferRequestDocument = gql`\r\n mutation bpayTransferRequest($input: BpayTransferRequestInput!) {\r\n bpayTransferRequest(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n FundsTransfer {\r\n Id\r\n ApplicationInstance\r\n ReceiptNumber\r\n AccountId\r\n TransferType\r\n TaskId\r\n TransferTypeDescription\r\n StartingOn\r\n Frequency\r\n FurtherNotice\r\n EndingOn\r\n FromAccountId\r\n FromAccountDescription\r\n ToAccountId\r\n ToAccountDescription\r\n Billercode\r\n BillerName\r\n CustomerReferenceNumber\r\n Amount\r\n RegularPayment\r\n NextScheduledDate\r\n DepositDescription\r\n WithdrawalDescription\r\n NumberOfTimes\r\n SpecifiedDate\r\n }\r\n ValidationErrors {\r\n Code\r\n Message\r\n }\r\n }\r\n}\r\n `;\r\nexport type BpayTransferRequestMutationFn = Apollo.MutationFunction;\r\nexport type BpayTransferRequestComponentProps = Omit, 'mutation'>;\r\n\r\n export const BpayTransferRequestComponent = (props: BpayTransferRequestComponentProps) => (\r\n mutation={BpayTransferRequestDocument} {...props} />\r\n );\r\n \r\nexport type BpayTransferRequestProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withBpayTransferRequest(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n BpayTransferRequestMutation,\r\n BpayTransferRequestMutationVariables,\r\n BpayTransferRequestProps>) {\r\n return ApolloReactHoc.withMutation>(BpayTransferRequestDocument, {\r\n alias: 'bpayTransferRequest',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useBpayTransferRequestMutation__\r\n *\r\n * To run a mutation, you first call `useBpayTransferRequestMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useBpayTransferRequestMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [bpayTransferRequestMutation, { data, loading, error }] = useBpayTransferRequestMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useBpayTransferRequestMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(BpayTransferRequestDocument, baseOptions);\r\n }\r\nexport type BpayTransferRequestMutationHookResult = ReturnType;\r\nexport type BpayTransferRequestMutationResult = Apollo.MutationResult;\r\nexport type BpayTransferRequestMutationOptions = Apollo.BaseMutationOptions;\r\nexport const StopPendingFundsTransferDocument = gql`\r\n mutation stopPendingFundsTransfer($input: StopPendingFundsTransferInput!) {\r\n stopPendingFundsTransfer(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n FundsTransfer {\r\n __typename\r\n Id\r\n ApplicationInstance\r\n ReceiptNumber\r\n AccountId\r\n TransferType\r\n TaskId\r\n TransferTypeDescription\r\n StartingOn\r\n Frequency\r\n FurtherNotice\r\n EndingOn\r\n FromAccountId\r\n FromAccountDescription\r\n ToAccountId\r\n ToAccountDescription\r\n Billercode\r\n BillerName\r\n CustomerReferenceNumber\r\n Amount\r\n RegularPayment\r\n NextScheduledDate\r\n DepositDescription\r\n WithdrawalDescription\r\n NumberOfTimes\r\n SpecifiedDate\r\n }\r\n }\r\n}\r\n `;\r\nexport type StopPendingFundsTransferMutationFn = Apollo.MutationFunction;\r\nexport type StopPendingFundsTransferComponentProps = Omit, 'mutation'>;\r\n\r\n export const StopPendingFundsTransferComponent = (props: StopPendingFundsTransferComponentProps) => (\r\n mutation={StopPendingFundsTransferDocument} {...props} />\r\n );\r\n \r\nexport type StopPendingFundsTransferProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withStopPendingFundsTransfer(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n StopPendingFundsTransferMutation,\r\n StopPendingFundsTransferMutationVariables,\r\n StopPendingFundsTransferProps>) {\r\n return ApolloReactHoc.withMutation>(StopPendingFundsTransferDocument, {\r\n alias: 'stopPendingFundsTransfer',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useStopPendingFundsTransferMutation__\r\n *\r\n * To run a mutation, you first call `useStopPendingFundsTransferMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useStopPendingFundsTransferMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [stopPendingFundsTransferMutation, { data, loading, error }] = useStopPendingFundsTransferMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useStopPendingFundsTransferMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(StopPendingFundsTransferDocument, baseOptions);\r\n }\r\nexport type StopPendingFundsTransferMutationHookResult = ReturnType;\r\nexport type StopPendingFundsTransferMutationResult = Apollo.MutationResult;\r\nexport type StopPendingFundsTransferMutationOptions = Apollo.BaseMutationOptions;\r\nexport const CreateBpayBillerDocument = gql`\r\n mutation createBpayBiller($input: CreateBpayBillerInput!) {\r\n createBpayBiller(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n NewBpayBiller {\r\n Id\r\n Billercode\r\n BillerDescription\r\n BillerName\r\n CustomerReferenceNumber\r\n }\r\n }\r\n}\r\n `;\r\nexport type CreateBpayBillerMutationFn = Apollo.MutationFunction;\r\nexport type CreateBpayBillerComponentProps = Omit, 'mutation'>;\r\n\r\n export const CreateBpayBillerComponent = (props: CreateBpayBillerComponentProps) => (\r\n mutation={CreateBpayBillerDocument} {...props} />\r\n );\r\n \r\nexport type CreateBpayBillerProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withCreateBpayBiller(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n CreateBpayBillerMutation,\r\n CreateBpayBillerMutationVariables,\r\n CreateBpayBillerProps>) {\r\n return ApolloReactHoc.withMutation>(CreateBpayBillerDocument, {\r\n alias: 'createBpayBiller',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useCreateBpayBillerMutation__\r\n *\r\n * To run a mutation, you first call `useCreateBpayBillerMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCreateBpayBillerMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [createBpayBillerMutation, { data, loading, error }] = useCreateBpayBillerMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useCreateBpayBillerMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(CreateBpayBillerDocument, baseOptions);\r\n }\r\nexport type CreateBpayBillerMutationHookResult = ReturnType;\r\nexport type CreateBpayBillerMutationResult = Apollo.MutationResult;\r\nexport type CreateBpayBillerMutationOptions = Apollo.BaseMutationOptions;\r\nexport const DeleteBpayPartyBillerDocument = gql`\r\n mutation deleteBpayPartyBiller($input: DeleteBpayPartyBillerInput!) {\r\n deleteBpayPartyBiller(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n PartyBillerHistoryId\r\n }\r\n}\r\n `;\r\nexport type DeleteBpayPartyBillerMutationFn = Apollo.MutationFunction;\r\nexport type DeleteBpayPartyBillerComponentProps = Omit, 'mutation'>;\r\n\r\n export const DeleteBpayPartyBillerComponent = (props: DeleteBpayPartyBillerComponentProps) => (\r\n mutation={DeleteBpayPartyBillerDocument} {...props} />\r\n );\r\n \r\nexport type DeleteBpayPartyBillerProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withDeleteBpayPartyBiller(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n DeleteBpayPartyBillerMutation,\r\n DeleteBpayPartyBillerMutationVariables,\r\n DeleteBpayPartyBillerProps>) {\r\n return ApolloReactHoc.withMutation>(DeleteBpayPartyBillerDocument, {\r\n alias: 'deleteBpayPartyBiller',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useDeleteBpayPartyBillerMutation__\r\n *\r\n * To run a mutation, you first call `useDeleteBpayPartyBillerMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDeleteBpayPartyBillerMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [deleteBpayPartyBillerMutation, { data, loading, error }] = useDeleteBpayPartyBillerMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useDeleteBpayPartyBillerMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(DeleteBpayPartyBillerDocument, baseOptions);\r\n }\r\nexport type DeleteBpayPartyBillerMutationHookResult = ReturnType;\r\nexport type DeleteBpayPartyBillerMutationResult = Apollo.MutationResult;\r\nexport type DeleteBpayPartyBillerMutationOptions = Apollo.BaseMutationOptions;\r\nexport const BankBranchDetailsDocument = gql`\r\n query BankBranchDetails($args: BankBranchDetailsInput!) {\r\n bankBranchLookup(input: $args) {\r\n BankIdentifier\r\n BankName\r\n Description\r\n }\r\n}\r\n `;\r\nexport type BankBranchDetailsComponentProps = Omit, 'query'> & ({ variables: BankBranchDetailsQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const BankBranchDetailsComponent = (props: BankBranchDetailsComponentProps) => (\r\n query={BankBranchDetailsDocument} {...props} />\r\n );\r\n \r\nexport type BankBranchDetailsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withBankBranchDetails(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n BankBranchDetailsQuery,\r\n BankBranchDetailsQueryVariables,\r\n BankBranchDetailsProps>) {\r\n return ApolloReactHoc.withQuery>(BankBranchDetailsDocument, {\r\n alias: 'bankBranchDetails',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useBankBranchDetailsQuery__\r\n *\r\n * To run a query within a React component, call `useBankBranchDetailsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useBankBranchDetailsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useBankBranchDetailsQuery({\r\n * variables: {\r\n * args: // value for 'args'\r\n * },\r\n * });\r\n */\r\nexport function useBankBranchDetailsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(BankBranchDetailsDocument, baseOptions);\r\n }\r\nexport function useBankBranchDetailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(BankBranchDetailsDocument, baseOptions);\r\n }\r\nexport type BankBranchDetailsQueryHookResult = ReturnType;\r\nexport type BankBranchDetailsLazyQueryHookResult = ReturnType;\r\nexport type BankBranchDetailsQueryResult = Apollo.QueryResult;\r\nexport const TransferLimitValidationDocument = gql`\r\n query transferLimitValidation($accountId: String, $date: DateTime) {\r\n accountLimits(\r\n accountId: $accountId\r\n filter: {DateRange: {From: $date, To: $date}}\r\n ) {\r\n EffectiveDate\r\n Id\r\n Limits {\r\n RemainingDailyRedrawLimit {\r\n Amount\r\n CurrencyCode\r\n }\r\n RemainingDailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n }\r\n }\r\n accountByIdOrNumber(idOrNumber: $accountId) {\r\n Id\r\n Redraw\r\n }\r\n}\r\n `;\r\nexport type TransferLimitValidationComponentProps = Omit, 'query'>;\r\n\r\n export const TransferLimitValidationComponent = (props: TransferLimitValidationComponentProps) => (\r\n query={TransferLimitValidationDocument} {...props} />\r\n );\r\n \r\nexport type TransferLimitValidationProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withTransferLimitValidation(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n TransferLimitValidationQuery,\r\n TransferLimitValidationQueryVariables,\r\n TransferLimitValidationProps>) {\r\n return ApolloReactHoc.withQuery>(TransferLimitValidationDocument, {\r\n alias: 'transferLimitValidation',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useTransferLimitValidationQuery__\r\n *\r\n * To run a query within a React component, call `useTransferLimitValidationQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useTransferLimitValidationQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useTransferLimitValidationQuery({\r\n * variables: {\r\n * accountId: // value for 'accountId'\r\n * date: // value for 'date'\r\n * },\r\n * });\r\n */\r\nexport function useTransferLimitValidationQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(TransferLimitValidationDocument, baseOptions);\r\n }\r\nexport function useTransferLimitValidationLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(TransferLimitValidationDocument, baseOptions);\r\n }\r\nexport type TransferLimitValidationQueryHookResult = ReturnType;\r\nexport type TransferLimitValidationLazyQueryHookResult = ReturnType;\r\nexport type TransferLimitValidationQueryResult = Apollo.QueryResult;\r\nexport const AccountFundsTransfersDocument = gql`\r\n query accountFundsTransfers($accountIdOrNumber: String!, $transactionFilter: LookBackDaysInput = {Days: 90}) {\r\n accountByIdOrNumber(idOrNumber: $accountIdOrNumber) {\r\n Id\r\n Number\r\n Description\r\n DisplayOrder\r\n InstrumentId\r\n LegacyNumber\r\n ProductType\r\n CurrentBalance\r\n Redraw\r\n InterestType\r\n CardAccount\r\n MonthlyInstalment\r\n NextInstalmentDue\r\n PendingAccountFundsTransfers {\r\n Id\r\n ApplicationInstance\r\n ReceiptNumber\r\n AccountId\r\n TransferType\r\n TaskId\r\n TransferTypeDescription\r\n StartingOn\r\n Frequency\r\n FurtherNotice\r\n EndingOn\r\n FromAccountId\r\n FromAccountDescription\r\n ToAccountId\r\n ToAccountDescription\r\n Billercode\r\n BillerName\r\n CustomerReferenceNumber\r\n Amount\r\n RegularPayment\r\n NextScheduledDate\r\n DepositDescription\r\n WithdrawalDescription\r\n NumberOfTimes\r\n NumberOfTimesAmount\r\n RemainingNumberOfTimes\r\n SpecifiedDate\r\n CreatedOn\r\n }\r\n ProcessedAccountFundsTransfers(filter: $transactionFilter) {\r\n Id\r\n ApplicationInstance\r\n ReceiptNumber\r\n AccountId\r\n TransferType\r\n TaskId\r\n TransferTypeDescription\r\n StartingOn\r\n Frequency\r\n FurtherNotice\r\n EndingOn\r\n FromAccountId\r\n FromAccountDescription\r\n ToAccountId\r\n ToAccountDescription\r\n Billercode\r\n BillerName\r\n CustomerReferenceNumber\r\n Amount\r\n RegularPayment\r\n NextScheduledDate\r\n DepositDescription\r\n WithdrawalDescription\r\n NumberOfTimes\r\n NumberOfTimesAmount\r\n RemainingNumberOfTimes\r\n SpecifiedDate\r\n CreatedOn\r\n }\r\n BankAccounts {\r\n AccountName\r\n Id\r\n BankIdentifierText\r\n BankIdentifierId\r\n AccountNumber\r\n Suffix\r\n Nominated\r\n HasDirectDebitAuthority\r\n HasDirectCreditAuthority\r\n IsPayAnyone\r\n BankName\r\n }\r\n AccountLimits {\r\n Id\r\n EffectiveDate\r\n Limits {\r\n DailyRedrawLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyRedrawLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n DailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n }\r\n }\r\n CurrentUserAccountAuthority {\r\n Id\r\n BPay\r\n Operate\r\n PayAnyone\r\n Redraw\r\n View\r\n }\r\n }\r\n}\r\n `;\r\nexport type AccountFundsTransfersComponentProps = Omit, 'query'> & ({ variables: AccountFundsTransfersQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const AccountFundsTransfersComponent = (props: AccountFundsTransfersComponentProps) => (\r\n query={AccountFundsTransfersDocument} {...props} />\r\n );\r\n \r\nexport type AccountFundsTransfersProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withAccountFundsTransfers(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n AccountFundsTransfersQuery,\r\n AccountFundsTransfersQueryVariables,\r\n AccountFundsTransfersProps>) {\r\n return ApolloReactHoc.withQuery>(AccountFundsTransfersDocument, {\r\n alias: 'accountFundsTransfers',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useAccountFundsTransfersQuery__\r\n *\r\n * To run a query within a React component, call `useAccountFundsTransfersQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useAccountFundsTransfersQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useAccountFundsTransfersQuery({\r\n * variables: {\r\n * accountIdOrNumber: // value for 'accountIdOrNumber'\r\n * transactionFilter: // value for 'transactionFilter'\r\n * },\r\n * });\r\n */\r\nexport function useAccountFundsTransfersQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(AccountFundsTransfersDocument, baseOptions);\r\n }\r\nexport function useAccountFundsTransfersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(AccountFundsTransfersDocument, baseOptions);\r\n }\r\nexport type AccountFundsTransfersQueryHookResult = ReturnType;\r\nexport type AccountFundsTransfersLazyQueryHookResult = ReturnType;\r\nexport type AccountFundsTransfersQueryResult = Apollo.QueryResult;\r\nexport const CreatePayAnyoneBankAccountDocument = gql`\r\n mutation createPayAnyoneBankAccount($input: CreatePayAnyoneBankAccountInput!) {\r\n createPayAnyoneBankAccount(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n NewPartyBankAccount {\r\n Id\r\n BankAccount {\r\n Id\r\n AccountName\r\n AccountNumber\r\n BankIdentifierText\r\n BankName\r\n HasDirectCreditAuthority\r\n HasDirectDebitAuthority\r\n IsPayAnyone\r\n }\r\n Description\r\n DirectCredit\r\n DirectDebit\r\n IsUsedByTransfer\r\n PartyId\r\n PayAnyone\r\n Viewable\r\n }\r\n }\r\n}\r\n `;\r\nexport type CreatePayAnyoneBankAccountMutationFn = Apollo.MutationFunction;\r\nexport type CreatePayAnyoneBankAccountComponentProps = Omit, 'mutation'>;\r\n\r\n export const CreatePayAnyoneBankAccountComponent = (props: CreatePayAnyoneBankAccountComponentProps) => (\r\n mutation={CreatePayAnyoneBankAccountDocument} {...props} />\r\n );\r\n \r\nexport type CreatePayAnyoneBankAccountProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withCreatePayAnyoneBankAccount(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n CreatePayAnyoneBankAccountMutation,\r\n CreatePayAnyoneBankAccountMutationVariables,\r\n CreatePayAnyoneBankAccountProps>) {\r\n return ApolloReactHoc.withMutation>(CreatePayAnyoneBankAccountDocument, {\r\n alias: 'createPayAnyoneBankAccount',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useCreatePayAnyoneBankAccountMutation__\r\n *\r\n * To run a mutation, you first call `useCreatePayAnyoneBankAccountMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCreatePayAnyoneBankAccountMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [createPayAnyoneBankAccountMutation, { data, loading, error }] = useCreatePayAnyoneBankAccountMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useCreatePayAnyoneBankAccountMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(CreatePayAnyoneBankAccountDocument, baseOptions);\r\n }\r\nexport type CreatePayAnyoneBankAccountMutationHookResult = ReturnType;\r\nexport type CreatePayAnyoneBankAccountMutationResult = Apollo.MutationResult;\r\nexport type CreatePayAnyoneBankAccountMutationOptions = Apollo.BaseMutationOptions;\r\nexport const CurrentUserPartyBankAccountsDocument = gql`\r\n query currentUserPartyBankAccounts {\r\n userSession {\r\n Id\r\n Party {\r\n Id\r\n PartyBankAccounts {\r\n Id\r\n PartyId\r\n Viewable\r\n PayAnyone\r\n DirectCredit\r\n DirectDebit\r\n Bpay\r\n Description\r\n Deleted\r\n IsUsedByTransfer\r\n IsPayWayCustomer\r\n BankAccount {\r\n AccountName\r\n BankIdentifierId\r\n BankIdentifierText\r\n AccountNumber\r\n Suffix\r\n Nominated\r\n HasDirectDebitAuthority\r\n HasDirectCreditAuthority\r\n IsPayAnyone\r\n BankName\r\n Id\r\n }\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type CurrentUserPartyBankAccountsComponentProps = Omit, 'query'>;\r\n\r\n export const CurrentUserPartyBankAccountsComponent = (props: CurrentUserPartyBankAccountsComponentProps) => (\r\n query={CurrentUserPartyBankAccountsDocument} {...props} />\r\n );\r\n \r\nexport type CurrentUserPartyBankAccountsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withCurrentUserPartyBankAccounts(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n CurrentUserPartyBankAccountsQuery,\r\n CurrentUserPartyBankAccountsQueryVariables,\r\n CurrentUserPartyBankAccountsProps>) {\r\n return ApolloReactHoc.withQuery>(CurrentUserPartyBankAccountsDocument, {\r\n alias: 'currentUserPartyBankAccounts',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useCurrentUserPartyBankAccountsQuery__\r\n *\r\n * To run a query within a React component, call `useCurrentUserPartyBankAccountsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useCurrentUserPartyBankAccountsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useCurrentUserPartyBankAccountsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useCurrentUserPartyBankAccountsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(CurrentUserPartyBankAccountsDocument, baseOptions);\r\n }\r\nexport function useCurrentUserPartyBankAccountsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(CurrentUserPartyBankAccountsDocument, baseOptions);\r\n }\r\nexport type CurrentUserPartyBankAccountsQueryHookResult = ReturnType;\r\nexport type CurrentUserPartyBankAccountsLazyQueryHookResult = ReturnType;\r\nexport type CurrentUserPartyBankAccountsQueryResult = Apollo.QueryResult;\r\nexport const DeletePartyBankAccountDocument = gql`\r\n mutation deletePartyBankAccount($input: DeletePartyBankAccountInput!) {\r\n deletePartyBankAccount(input: $input) {\r\n Code\r\n Success\r\n Message\r\n PartyBankAccountId\r\n }\r\n}\r\n `;\r\nexport type DeletePartyBankAccountMutationFn = Apollo.MutationFunction;\r\nexport type DeletePartyBankAccountComponentProps = Omit, 'mutation'>;\r\n\r\n export const DeletePartyBankAccountComponent = (props: DeletePartyBankAccountComponentProps) => (\r\n mutation={DeletePartyBankAccountDocument} {...props} />\r\n );\r\n \r\nexport type DeletePartyBankAccountProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withDeletePartyBankAccount(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n DeletePartyBankAccountMutation,\r\n DeletePartyBankAccountMutationVariables,\r\n DeletePartyBankAccountProps>) {\r\n return ApolloReactHoc.withMutation>(DeletePartyBankAccountDocument, {\r\n alias: 'deletePartyBankAccount',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useDeletePartyBankAccountMutation__\r\n *\r\n * To run a mutation, you first call `useDeletePartyBankAccountMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDeletePartyBankAccountMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [deletePartyBankAccountMutation, { data, loading, error }] = useDeletePartyBankAccountMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useDeletePartyBankAccountMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(DeletePartyBankAccountDocument, baseOptions);\r\n }\r\nexport type DeletePartyBankAccountMutationHookResult = ReturnType;\r\nexport type DeletePartyBankAccountMutationResult = Apollo.MutationResult;\r\nexport type DeletePartyBankAccountMutationOptions = Apollo.BaseMutationOptions;\r\nexport const RequestPayAnyoneTransferDocument = gql`\r\n mutation requestPayAnyoneTransfer($input: RequestPayAnyoneTransferInput!) {\r\n requestPayAnyoneTransfer(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n FundsTransfer {\r\n Id\r\n ApplicationInstance\r\n ReceiptNumber\r\n AccountId\r\n TransferType\r\n TaskId\r\n TransferTypeDescription\r\n StartingOn\r\n Frequency\r\n FurtherNotice\r\n EndingOn\r\n FromAccountId\r\n FromAccountDescription\r\n ToAccountId\r\n ToAccountDescription\r\n Billercode\r\n BillerName\r\n CustomerReferenceNumber\r\n Amount\r\n RegularPayment\r\n NextScheduledDate\r\n DepositDescription\r\n WithdrawalDescription\r\n NumberOfTimes\r\n SpecifiedDate\r\n }\r\n }\r\n}\r\n `;\r\nexport type RequestPayAnyoneTransferMutationFn = Apollo.MutationFunction;\r\nexport type RequestPayAnyoneTransferComponentProps = Omit, 'mutation'>;\r\n\r\n export const RequestPayAnyoneTransferComponent = (props: RequestPayAnyoneTransferComponentProps) => (\r\n mutation={RequestPayAnyoneTransferDocument} {...props} />\r\n );\r\n \r\nexport type RequestPayAnyoneTransferProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withRequestPayAnyoneTransfer(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n RequestPayAnyoneTransferMutation,\r\n RequestPayAnyoneTransferMutationVariables,\r\n RequestPayAnyoneTransferProps>) {\r\n return ApolloReactHoc.withMutation>(RequestPayAnyoneTransferDocument, {\r\n alias: 'requestPayAnyoneTransfer',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useRequestPayAnyoneTransferMutation__\r\n *\r\n * To run a mutation, you first call `useRequestPayAnyoneTransferMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useRequestPayAnyoneTransferMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [requestPayAnyoneTransferMutation, { data, loading, error }] = useRequestPayAnyoneTransferMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useRequestPayAnyoneTransferMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(RequestPayAnyoneTransferDocument, baseOptions);\r\n }\r\nexport type RequestPayAnyoneTransferMutationHookResult = ReturnType;\r\nexport type RequestPayAnyoneTransferMutationResult = Apollo.MutationResult;\r\nexport type RequestPayAnyoneTransferMutationOptions = Apollo.BaseMutationOptions;\r\nexport const InstrumentByAccountIdDocument = gql`\r\n query instrumentByAccountId($account: String!) {\r\n instrumentByAccount(account: {Id: $account}) {\r\n Id\r\n Accounts {\r\n Id\r\n Number\r\n Description\r\n Redraw\r\n CurrentBalance\r\n ProductType\r\n CurrentUserAccountAuthority {\r\n Id\r\n BPay\r\n Operate\r\n PayAnyone\r\n Redraw\r\n View\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type InstrumentByAccountIdComponentProps = Omit, 'query'> & ({ variables: InstrumentByAccountIdQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const InstrumentByAccountIdComponent = (props: InstrumentByAccountIdComponentProps) => (\r\n query={InstrumentByAccountIdDocument} {...props} />\r\n );\r\n \r\nexport type InstrumentByAccountIdProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withInstrumentByAccountId(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n InstrumentByAccountIdQuery,\r\n InstrumentByAccountIdQueryVariables,\r\n InstrumentByAccountIdProps>) {\r\n return ApolloReactHoc.withQuery>(InstrumentByAccountIdDocument, {\r\n alias: 'instrumentByAccountId',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useInstrumentByAccountIdQuery__\r\n *\r\n * To run a query within a React component, call `useInstrumentByAccountIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useInstrumentByAccountIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useInstrumentByAccountIdQuery({\r\n * variables: {\r\n * account: // value for 'account'\r\n * },\r\n * });\r\n */\r\nexport function useInstrumentByAccountIdQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(InstrumentByAccountIdDocument, baseOptions);\r\n }\r\nexport function useInstrumentByAccountIdLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(InstrumentByAccountIdDocument, baseOptions);\r\n }\r\nexport type InstrumentByAccountIdQueryHookResult = ReturnType;\r\nexport type InstrumentByAccountIdLazyQueryHookResult = ReturnType;\r\nexport type InstrumentByAccountIdQueryResult = Apollo.QueryResult;\r\nexport const AccountLimitDocument = gql`\r\n query accountLimit($accountId: String!, $date: DateTime) {\r\n accountLimits(\r\n accountId: $accountId\r\n filter: {DateRange: {From: $date, To: $date}}\r\n ) {\r\n Id\r\n EffectiveDate\r\n Limits {\r\n DailyRedrawLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyRedrawLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n DailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type AccountLimitComponentProps = Omit, 'query'> & ({ variables: AccountLimitQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const AccountLimitComponent = (props: AccountLimitComponentProps) => (\r\n query={AccountLimitDocument} {...props} />\r\n );\r\n \r\nexport type AccountLimitProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withAccountLimit(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n AccountLimitQuery,\r\n AccountLimitQueryVariables,\r\n AccountLimitProps>) {\r\n return ApolloReactHoc.withQuery>(AccountLimitDocument, {\r\n alias: 'accountLimit',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useAccountLimitQuery__\r\n *\r\n * To run a query within a React component, call `useAccountLimitQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useAccountLimitQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useAccountLimitQuery({\r\n * variables: {\r\n * accountId: // value for 'accountId'\r\n * date: // value for 'date'\r\n * },\r\n * });\r\n */\r\nexport function useAccountLimitQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(AccountLimitDocument, baseOptions);\r\n }\r\nexport function useAccountLimitLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(AccountLimitDocument, baseOptions);\r\n }\r\nexport type AccountLimitQueryHookResult = ReturnType;\r\nexport type AccountLimitLazyQueryHookResult = ReturnType;\r\nexport type AccountLimitQueryResult = Apollo.QueryResult;\r\nexport const RequestPayAnyoneTransferMutationDocument = gql`\r\n mutation requestPayAnyoneTransferMutation($input: RequestPayAnyoneTransferInput!) {\r\n requestPayAnyoneTransfer(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n FundsTransfer {\r\n Id\r\n ApplicationInstance\r\n ReceiptNumber\r\n AccountId\r\n TransferType\r\n TaskId\r\n TransferTypeDescription\r\n StartingOn\r\n Frequency\r\n FurtherNotice\r\n EndingOn\r\n FromAccountId\r\n FromAccountDescription\r\n ToAccountId\r\n ToAccountDescription\r\n Billercode\r\n BillerName\r\n CustomerReferenceNumber\r\n Amount\r\n RegularPayment\r\n NextScheduledDate\r\n DepositDescription\r\n WithdrawalDescription\r\n NumberOfTimes\r\n SpecifiedDate\r\n }\r\n }\r\n}\r\n `;\r\nexport type RequestPayAnyoneTransferMutationMutationFn = Apollo.MutationFunction;\r\nexport type RequestPayAnyoneTransferMutationComponentProps = Omit, 'mutation'>;\r\n\r\n export const RequestPayAnyoneTransferMutationComponent = (props: RequestPayAnyoneTransferMutationComponentProps) => (\r\n mutation={RequestPayAnyoneTransferMutationDocument} {...props} />\r\n );\r\n \r\nexport type RequestPayAnyoneTransferMutationProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withRequestPayAnyoneTransferMutation(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n RequestPayAnyoneTransferMutationMutation,\r\n RequestPayAnyoneTransferMutationMutationVariables,\r\n RequestPayAnyoneTransferMutationProps>) {\r\n return ApolloReactHoc.withMutation>(RequestPayAnyoneTransferMutationDocument, {\r\n alias: 'requestPayAnyoneTransferMutation',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useRequestPayAnyoneTransferMutationMutation__\r\n *\r\n * To run a mutation, you first call `useRequestPayAnyoneTransferMutationMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useRequestPayAnyoneTransferMutationMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [requestPayAnyoneTransferMutationMutation, { data, loading, error }] = useRequestPayAnyoneTransferMutationMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useRequestPayAnyoneTransferMutationMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(RequestPayAnyoneTransferMutationDocument, baseOptions);\r\n }\r\nexport type RequestPayAnyoneTransferMutationMutationHookResult = ReturnType;\r\nexport type RequestPayAnyoneTransferMutationMutationResult = Apollo.MutationResult;\r\nexport type RequestPayAnyoneTransferMutationMutationOptions = Apollo.BaseMutationOptions;\r\nexport const CloseOtherSessionsDocument = gql`\r\n mutation CloseOtherSessions($input: ForceCloseCurrentUserSessionsInput!) {\r\n closeCurrentUserSessions(input: $input) {\r\n Code\r\n Success\r\n Message\r\n clientMutationId\r\n Data {\r\n Id\r\n Features\r\n CurrentServerTime\r\n LastLoginAttempt\r\n LastLoginFrom\r\n LastPasswordChange\r\n IsFirstLogin\r\n CurrentSession {\r\n Id\r\n IsDeleted\r\n LastActivity\r\n SessionStart\r\n EventDate\r\n IpAddress\r\n Successful\r\n ClientVersion\r\n UserAgentHeader\r\n Expires\r\n }\r\n LoginAttempts {\r\n Id\r\n EventDate\r\n IpAddress\r\n Successful\r\n ClientVersion\r\n UserAgentHeader\r\n IsDeleted\r\n LastActivity\r\n SessionStart\r\n Expires\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type CloseOtherSessionsMutationFn = Apollo.MutationFunction;\r\nexport type CloseOtherSessionsComponentProps = Omit, 'mutation'>;\r\n\r\n export const CloseOtherSessionsComponent = (props: CloseOtherSessionsComponentProps) => (\r\n mutation={CloseOtherSessionsDocument} {...props} />\r\n );\r\n \r\nexport type CloseOtherSessionsProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withCloseOtherSessions(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n CloseOtherSessionsMutation,\r\n CloseOtherSessionsMutationVariables,\r\n CloseOtherSessionsProps>) {\r\n return ApolloReactHoc.withMutation>(CloseOtherSessionsDocument, {\r\n alias: 'closeOtherSessions',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useCloseOtherSessionsMutation__\r\n *\r\n * To run a mutation, you first call `useCloseOtherSessionsMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCloseOtherSessionsMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [closeOtherSessionsMutation, { data, loading, error }] = useCloseOtherSessionsMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useCloseOtherSessionsMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(CloseOtherSessionsDocument, baseOptions);\r\n }\r\nexport type CloseOtherSessionsMutationHookResult = ReturnType;\r\nexport type CloseOtherSessionsMutationResult = Apollo.MutationResult;\r\nexport type CloseOtherSessionsMutationOptions = Apollo.BaseMutationOptions;\r\nexport const ChangeCurrentUserPasswordDocument = gql`\r\n mutation changeCurrentUserPassword($input: ChangePasswordInput!) {\r\n changeCurrentUserPassword(input: $input) {\r\n Code\r\n Success\r\n Message\r\n UserSession {\r\n Id\r\n Features\r\n CurrentServerTime\r\n LastLoginAttempt\r\n LastLoginFrom\r\n LastPasswordChange\r\n IsFirstLogin\r\n HasTempPassword\r\n UseMultiFactorAuth\r\n Party {\r\n Id\r\n PartyNumber\r\n FullName\r\n OrganisationName\r\n FirstName\r\n LastName\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type ChangeCurrentUserPasswordMutationFn = Apollo.MutationFunction;\r\nexport type ChangeCurrentUserPasswordComponentProps = Omit, 'mutation'>;\r\n\r\n export const ChangeCurrentUserPasswordComponent = (props: ChangeCurrentUserPasswordComponentProps) => (\r\n mutation={ChangeCurrentUserPasswordDocument} {...props} />\r\n );\r\n \r\nexport type ChangeCurrentUserPasswordProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withChangeCurrentUserPassword(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n ChangeCurrentUserPasswordMutation,\r\n ChangeCurrentUserPasswordMutationVariables,\r\n ChangeCurrentUserPasswordProps>) {\r\n return ApolloReactHoc.withMutation>(ChangeCurrentUserPasswordDocument, {\r\n alias: 'changeCurrentUserPassword',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useChangeCurrentUserPasswordMutation__\r\n *\r\n * To run a mutation, you first call `useChangeCurrentUserPasswordMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useChangeCurrentUserPasswordMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [changeCurrentUserPasswordMutation, { data, loading, error }] = useChangeCurrentUserPasswordMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useChangeCurrentUserPasswordMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(ChangeCurrentUserPasswordDocument, baseOptions);\r\n }\r\nexport type ChangeCurrentUserPasswordMutationHookResult = ReturnType;\r\nexport type ChangeCurrentUserPasswordMutationResult = Apollo.MutationResult;\r\nexport type ChangeCurrentUserPasswordMutationOptions = Apollo.BaseMutationOptions;\r\nexport const PasswordValidatorByApplicationDocument = gql`\r\n query passwordValidatorByApplication {\r\n passwordValidatorByApplication {\r\n MinimumPasswordLength\r\n RequireLowerCaseCharacters\r\n MinimumLowerCaseCharacterCount\r\n RequireUpperCaseCharacters\r\n MinimumUpperCaseCharacterCount\r\n RequireNumberCharacters\r\n MinimumNumberCharacterCount\r\n RequireBaseSymbols\r\n MinimumBaseSymbolCharacterCount\r\n RequireExtendedSymbols\r\n MinimumExtendedSymbolCharacterCount\r\n ProhibitSequentialAlphabetCharacters\r\n ProhibitSequentialNumberCharacters\r\n ProhibitRepeatingAlphabetCharacters\r\n ProhibitRepeatingNumberCharacters\r\n ProhibitRepeatingSymbolCharacters\r\n MinimumPasswordHistory\r\n }\r\n}\r\n `;\r\nexport type PasswordValidatorByApplicationComponentProps = Omit, 'query'>;\r\n\r\n export const PasswordValidatorByApplicationComponent = (props: PasswordValidatorByApplicationComponentProps) => (\r\n query={PasswordValidatorByApplicationDocument} {...props} />\r\n );\r\n \r\nexport type PasswordValidatorByApplicationProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withPasswordValidatorByApplication(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PasswordValidatorByApplicationQuery,\r\n PasswordValidatorByApplicationQueryVariables,\r\n PasswordValidatorByApplicationProps>) {\r\n return ApolloReactHoc.withQuery>(PasswordValidatorByApplicationDocument, {\r\n alias: 'passwordValidatorByApplication',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePasswordValidatorByApplicationQuery__\r\n *\r\n * To run a query within a React component, call `usePasswordValidatorByApplicationQuery` and pass it any options that fit your needs.\r\n * When your component renders, `usePasswordValidatorByApplicationQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = usePasswordValidatorByApplicationQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function usePasswordValidatorByApplicationQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(PasswordValidatorByApplicationDocument, baseOptions);\r\n }\r\nexport function usePasswordValidatorByApplicationLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(PasswordValidatorByApplicationDocument, baseOptions);\r\n }\r\nexport type PasswordValidatorByApplicationQueryHookResult = ReturnType;\r\nexport type PasswordValidatorByApplicationLazyQueryHookResult = ReturnType;\r\nexport type PasswordValidatorByApplicationQueryResult = Apollo.QueryResult;\r\nexport const BankingUserLogoutDocument = gql`\r\n mutation bankingUserLogout {\r\n logout {\r\n Code\r\n Success\r\n Message\r\n }\r\n}\r\n `;\r\nexport type BankingUserLogoutMutationFn = Apollo.MutationFunction;\r\nexport type BankingUserLogoutComponentProps = Omit, 'mutation'>;\r\n\r\n export const BankingUserLogoutComponent = (props: BankingUserLogoutComponentProps) => (\r\n mutation={BankingUserLogoutDocument} {...props} />\r\n );\r\n \r\nexport type BankingUserLogoutProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withBankingUserLogout(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n BankingUserLogoutMutation,\r\n BankingUserLogoutMutationVariables,\r\n BankingUserLogoutProps>) {\r\n return ApolloReactHoc.withMutation>(BankingUserLogoutDocument, {\r\n alias: 'bankingUserLogout',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useBankingUserLogoutMutation__\r\n *\r\n * To run a mutation, you first call `useBankingUserLogoutMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useBankingUserLogoutMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [bankingUserLogoutMutation, { data, loading, error }] = useBankingUserLogoutMutation({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useBankingUserLogoutMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(BankingUserLogoutDocument, baseOptions);\r\n }\r\nexport type BankingUserLogoutMutationHookResult = ReturnType;\r\nexport type BankingUserLogoutMutationResult = Apollo.MutationResult;\r\nexport type BankingUserLogoutMutationOptions = Apollo.BaseMutationOptions;\r\nexport const RequestPasswordResetDocument = gql`\r\n mutation requestPasswordReset($input: ResetPasswordInput!) {\r\n requestPasswordReset(input: $input) {\r\n Code\r\n Success\r\n Message\r\n }\r\n}\r\n `;\r\nexport type RequestPasswordResetMutationFn = Apollo.MutationFunction;\r\nexport type RequestPasswordResetComponentProps = Omit, 'mutation'>;\r\n\r\n export const RequestPasswordResetComponent = (props: RequestPasswordResetComponentProps) => (\r\n mutation={RequestPasswordResetDocument} {...props} />\r\n );\r\n \r\nexport type RequestPasswordResetProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withRequestPasswordReset(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n RequestPasswordResetMutation,\r\n RequestPasswordResetMutationVariables,\r\n RequestPasswordResetProps>) {\r\n return ApolloReactHoc.withMutation>(RequestPasswordResetDocument, {\r\n alias: 'requestPasswordReset',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useRequestPasswordResetMutation__\r\n *\r\n * To run a mutation, you first call `useRequestPasswordResetMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useRequestPasswordResetMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [requestPasswordResetMutation, { data, loading, error }] = useRequestPasswordResetMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useRequestPasswordResetMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(RequestPasswordResetDocument, baseOptions);\r\n }\r\nexport type RequestPasswordResetMutationHookResult = ReturnType;\r\nexport type RequestPasswordResetMutationResult = Apollo.MutationResult;\r\nexport type RequestPasswordResetMutationOptions = Apollo.BaseMutationOptions;\r\nexport const AcceptTermsDocument = gql`\r\n mutation acceptTerms {\r\n acceptTerms {\r\n Code\r\n Success\r\n Message\r\n UserSession {\r\n Id\r\n LastTermsAcceptance\r\n }\r\n }\r\n}\r\n `;\r\nexport type AcceptTermsMutationFn = Apollo.MutationFunction;\r\nexport type AcceptTermsComponentProps = Omit, 'mutation'>;\r\n\r\n export const AcceptTermsComponent = (props: AcceptTermsComponentProps) => (\r\n mutation={AcceptTermsDocument} {...props} />\r\n );\r\n \r\nexport type AcceptTermsProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withAcceptTerms(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n AcceptTermsMutation,\r\n AcceptTermsMutationVariables,\r\n AcceptTermsProps>) {\r\n return ApolloReactHoc.withMutation>(AcceptTermsDocument, {\r\n alias: 'acceptTerms',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useAcceptTermsMutation__\r\n *\r\n * To run a mutation, you first call `useAcceptTermsMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useAcceptTermsMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [acceptTermsMutation, { data, loading, error }] = useAcceptTermsMutation({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useAcceptTermsMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(AcceptTermsDocument, baseOptions);\r\n }\r\nexport type AcceptTermsMutationHookResult = ReturnType;\r\nexport type AcceptTermsMutationResult = Apollo.MutationResult;\r\nexport type AcceptTermsMutationOptions = Apollo.BaseMutationOptions;\r\nexport const BankingUserLoginDocument = gql`\r\n mutation bankingUserLogin($input: LoginInput!) {\r\n login(input: $input) {\r\n Code\r\n Message\r\n Success\r\n UserSession {\r\n Id\r\n FinanceSummary {\r\n Id\r\n }\r\n Features\r\n CurrentServerTime\r\n LastLoginAttempt\r\n LastLoginFrom\r\n LastPasswordChange\r\n IsFirstLogin\r\n Party {\r\n Id\r\n PartyNumber\r\n FirstName\r\n LastName\r\n FullName\r\n }\r\n IsSharia\r\n }\r\n }\r\n}\r\n `;\r\nexport type BankingUserLoginMutationFn = Apollo.MutationFunction;\r\nexport type BankingUserLoginComponentProps = Omit, 'mutation'>;\r\n\r\n export const BankingUserLoginComponent = (props: BankingUserLoginComponentProps) => (\r\n mutation={BankingUserLoginDocument} {...props} />\r\n );\r\n \r\nexport type BankingUserLoginProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withBankingUserLogin(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n BankingUserLoginMutation,\r\n BankingUserLoginMutationVariables,\r\n BankingUserLoginProps>) {\r\n return ApolloReactHoc.withMutation>(BankingUserLoginDocument, {\r\n alias: 'bankingUserLogin',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useBankingUserLoginMutation__\r\n *\r\n * To run a mutation, you first call `useBankingUserLoginMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useBankingUserLoginMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [bankingUserLoginMutation, { data, loading, error }] = useBankingUserLoginMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useBankingUserLoginMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(BankingUserLoginDocument, baseOptions);\r\n }\r\nexport type BankingUserLoginMutationHookResult = ReturnType;\r\nexport type BankingUserLoginMutationResult = Apollo.MutationResult;\r\nexport type BankingUserLoginMutationOptions = Apollo.BaseMutationOptions;\r\nexport const BankingUserLoginV2Document = gql`\r\n mutation bankingUserLoginV2($input: LoginV2Input!) {\r\n loginV2(input: $input) {\r\n AccessToken\r\n TrustedDeviceToken\r\n CanUseTrustedDevice\r\n AuthMessage\r\n AuthError\r\n AuthSucceeded\r\n UserSession {\r\n Id\r\n FinanceSummary {\r\n Id\r\n }\r\n Features\r\n CurrentServerTime\r\n LastLoginAttempt\r\n LastLoginFrom\r\n LastPasswordChange\r\n IsFirstLogin\r\n Party {\r\n Id\r\n PartyNumber\r\n FirstName\r\n LastName\r\n FullName\r\n }\r\n IsSharia\r\n }\r\n }\r\n}\r\n `;\r\nexport type BankingUserLoginV2MutationFn = Apollo.MutationFunction;\r\nexport type BankingUserLoginV2ComponentProps = Omit, 'mutation'>;\r\n\r\n export const BankingUserLoginV2Component = (props: BankingUserLoginV2ComponentProps) => (\r\n mutation={BankingUserLoginV2Document} {...props} />\r\n );\r\n \r\nexport type BankingUserLoginV2Props = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withBankingUserLoginV2(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n BankingUserLoginV2Mutation,\r\n BankingUserLoginV2MutationVariables,\r\n BankingUserLoginV2Props>) {\r\n return ApolloReactHoc.withMutation>(BankingUserLoginV2Document, {\r\n alias: 'bankingUserLoginV2',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useBankingUserLoginV2Mutation__\r\n *\r\n * To run a mutation, you first call `useBankingUserLoginV2Mutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useBankingUserLoginV2Mutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [bankingUserLoginV2Mutation, { data, loading, error }] = useBankingUserLoginV2Mutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useBankingUserLoginV2Mutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(BankingUserLoginV2Document, baseOptions);\r\n }\r\nexport type BankingUserLoginV2MutationHookResult = ReturnType;\r\nexport type BankingUserLoginV2MutationResult = Apollo.MutationResult;\r\nexport type BankingUserLoginV2MutationOptions = Apollo.BaseMutationOptions;\r\nexport const IsUserAuthenticatedDocument = gql`\r\n query isUserAuthenticated {\r\n userSession {\r\n Id\r\n Features\r\n CurrentServerTime\r\n LastLoginAttempt\r\n LastLoginFrom\r\n LastPasswordChange\r\n LastTermsAcceptance\r\n IsFirstLogin\r\n HasTempPassword\r\n UseMultiFactorAuth\r\n Party {\r\n Id\r\n PartyNumber\r\n FullName\r\n OrganisationName\r\n FirstName\r\n LastName\r\n }\r\n CurrentSession {\r\n Id\r\n IsDeleted\r\n LastActivity\r\n SessionStart\r\n Expires\r\n EventDate\r\n IpAddress\r\n Successful\r\n ClientVersion\r\n UserAgentHeader\r\n }\r\n LoginAttempts {\r\n Id\r\n IsDeleted\r\n LastActivity\r\n SessionStart\r\n Expires\r\n EventDate\r\n IpAddress\r\n Successful\r\n ClientVersion\r\n UserAgentHeader\r\n }\r\n }\r\n}\r\n `;\r\nexport type IsUserAuthenticatedComponentProps = Omit, 'query'>;\r\n\r\n export const IsUserAuthenticatedComponent = (props: IsUserAuthenticatedComponentProps) => (\r\n query={IsUserAuthenticatedDocument} {...props} />\r\n );\r\n \r\nexport type IsUserAuthenticatedProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withIsUserAuthenticated(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IsUserAuthenticatedQuery,\r\n IsUserAuthenticatedQueryVariables,\r\n IsUserAuthenticatedProps>) {\r\n return ApolloReactHoc.withQuery>(IsUserAuthenticatedDocument, {\r\n alias: 'isUserAuthenticated',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIsUserAuthenticatedQuery__\r\n *\r\n * To run a query within a React component, call `useIsUserAuthenticatedQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useIsUserAuthenticatedQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useIsUserAuthenticatedQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useIsUserAuthenticatedQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(IsUserAuthenticatedDocument, baseOptions);\r\n }\r\nexport function useIsUserAuthenticatedLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(IsUserAuthenticatedDocument, baseOptions);\r\n }\r\nexport type IsUserAuthenticatedQueryHookResult = ReturnType;\r\nexport type IsUserAuthenticatedLazyQueryHookResult = ReturnType;\r\nexport type IsUserAuthenticatedQueryResult = Apollo.QueryResult;\r\nexport const IndueCardChangePinDocument = gql`\r\n mutation IndueCardChangePin($input: IndueCardChangePinInput!) {\r\n changePin(input: $input) {\r\n Result\r\n Card {\r\n CardNumber\r\n ExpiryDate\r\n Id\r\n Status\r\n }\r\n }\r\n}\r\n `;\r\nexport type IndueCardChangePinMutationFn = Apollo.MutationFunction;\r\nexport type IndueCardChangePinComponentProps = Omit, 'mutation'>;\r\n\r\n export const IndueCardChangePinComponent = (props: IndueCardChangePinComponentProps) => (\r\n mutation={IndueCardChangePinDocument} {...props} />\r\n );\r\n \r\nexport type IndueCardChangePinProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withIndueCardChangePin(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IndueCardChangePinMutation,\r\n IndueCardChangePinMutationVariables,\r\n IndueCardChangePinProps>) {\r\n return ApolloReactHoc.withMutation>(IndueCardChangePinDocument, {\r\n alias: 'indueCardChangePin',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIndueCardChangePinMutation__\r\n *\r\n * To run a mutation, you first call `useIndueCardChangePinMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useIndueCardChangePinMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [indueCardChangePinMutation, { data, loading, error }] = useIndueCardChangePinMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useIndueCardChangePinMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(IndueCardChangePinDocument, baseOptions);\r\n }\r\nexport type IndueCardChangePinMutationHookResult = ReturnType;\r\nexport type IndueCardChangePinMutationResult = Apollo.MutationResult;\r\nexport type IndueCardChangePinMutationOptions = Apollo.BaseMutationOptions;\r\nexport const IndueCardChangeStatusDocument = gql`\r\n mutation IndueCardChangeStatus($input: IndueCardChangeStatusInput!) {\r\n changeStatus(input: $input) {\r\n Result\r\n Card {\r\n CardNumber\r\n ExpiryDate\r\n Id\r\n Status\r\n }\r\n }\r\n}\r\n `;\r\nexport type IndueCardChangeStatusMutationFn = Apollo.MutationFunction;\r\nexport type IndueCardChangeStatusComponentProps = Omit, 'mutation'>;\r\n\r\n export const IndueCardChangeStatusComponent = (props: IndueCardChangeStatusComponentProps) => (\r\n mutation={IndueCardChangeStatusDocument} {...props} />\r\n );\r\n \r\nexport type IndueCardChangeStatusProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withIndueCardChangeStatus(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IndueCardChangeStatusMutation,\r\n IndueCardChangeStatusMutationVariables,\r\n IndueCardChangeStatusProps>) {\r\n return ApolloReactHoc.withMutation>(IndueCardChangeStatusDocument, {\r\n alias: 'indueCardChangeStatus',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIndueCardChangeStatusMutation__\r\n *\r\n * To run a mutation, you first call `useIndueCardChangeStatusMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useIndueCardChangeStatusMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [indueCardChangeStatusMutation, { data, loading, error }] = useIndueCardChangeStatusMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useIndueCardChangeStatusMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(IndueCardChangeStatusDocument, baseOptions);\r\n }\r\nexport type IndueCardChangeStatusMutationHookResult = ReturnType;\r\nexport type IndueCardChangeStatusMutationResult = Apollo.MutationResult;\r\nexport type IndueCardChangeStatusMutationOptions = Apollo.BaseMutationOptions;\r\nexport const IndueCardCreateCardDocument = gql`\r\n mutation IndueCardCreateCard($input: IndueCardCreateCardInput!) {\r\n createCard(input: $input) {\r\n Success\r\n Card {\r\n Id\r\n Status\r\n }\r\n }\r\n}\r\n `;\r\nexport type IndueCardCreateCardMutationFn = Apollo.MutationFunction;\r\nexport type IndueCardCreateCardComponentProps = Omit, 'mutation'>;\r\n\r\n export const IndueCardCreateCardComponent = (props: IndueCardCreateCardComponentProps) => (\r\n mutation={IndueCardCreateCardDocument} {...props} />\r\n );\r\n \r\nexport type IndueCardCreateCardProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withIndueCardCreateCard(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IndueCardCreateCardMutation,\r\n IndueCardCreateCardMutationVariables,\r\n IndueCardCreateCardProps>) {\r\n return ApolloReactHoc.withMutation>(IndueCardCreateCardDocument, {\r\n alias: 'indueCardCreateCard',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIndueCardCreateCardMutation__\r\n *\r\n * To run a mutation, you first call `useIndueCardCreateCardMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useIndueCardCreateCardMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [indueCardCreateCardMutation, { data, loading, error }] = useIndueCardCreateCardMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useIndueCardCreateCardMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(IndueCardCreateCardDocument, baseOptions);\r\n }\r\nexport type IndueCardCreateCardMutationHookResult = ReturnType;\r\nexport type IndueCardCreateCardMutationResult = Apollo.MutationResult;\r\nexport type IndueCardCreateCardMutationOptions = Apollo.BaseMutationOptions;\r\nexport const IndueCardDetailsDocument = gql`\r\n query indueCardDetails($input: IndueCardDetailsInput!) {\r\n indueCardDetails(input: $input) {\r\n CardNumber\r\n ExpiryDate\r\n Id\r\n Status\r\n CanActivate\r\n CanHold\r\n CanUnHold\r\n CanReportLostStolen\r\n CanClose\r\n }\r\n}\r\n `;\r\nexport type IndueCardDetailsComponentProps = Omit, 'query'> & ({ variables: IndueCardDetailsQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const IndueCardDetailsComponent = (props: IndueCardDetailsComponentProps) => (\r\n query={IndueCardDetailsDocument} {...props} />\r\n );\r\n \r\nexport type IndueCardDetailsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withIndueCardDetails(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IndueCardDetailsQuery,\r\n IndueCardDetailsQueryVariables,\r\n IndueCardDetailsProps>) {\r\n return ApolloReactHoc.withQuery>(IndueCardDetailsDocument, {\r\n alias: 'indueCardDetails',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIndueCardDetailsQuery__\r\n *\r\n * To run a query within a React component, call `useIndueCardDetailsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useIndueCardDetailsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useIndueCardDetailsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useIndueCardDetailsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(IndueCardDetailsDocument, baseOptions);\r\n }\r\nexport function useIndueCardDetailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(IndueCardDetailsDocument, baseOptions);\r\n }\r\nexport type IndueCardDetailsQueryHookResult = ReturnType;\r\nexport type IndueCardDetailsLazyQueryHookResult = ReturnType;\r\nexport type IndueCardDetailsQueryResult = Apollo.QueryResult;\r\nexport const IndueCardsandAssociationsByAccountDocument = gql`\r\n query indueCardsandAssociationsByAccount($accountId: Uuid!, $accountIdString: String!) {\r\n indueCardsByAccount(input: {AccountId: $accountId}) {\r\n CardNumber\r\n ExpiryDate\r\n Id\r\n Status\r\n CanActivate\r\n CanHold\r\n CanUnHold\r\n CanReportLostStolen\r\n CanClose\r\n }\r\n partyAssociationByAccount(input: {Id: $accountIdString}) {\r\n IsPrimaryBorrower\r\n IsSecondaryBorrower\r\n IsNonBorrower\r\n PrimaryBorrowerHasCard\r\n }\r\n accountByIdOrNumber(idOrNumber: $accountIdString) {\r\n Id\r\n CurrentUserAccountAuthority {\r\n Id\r\n BPay\r\n Operate\r\n PayAnyone\r\n Redraw\r\n View\r\n }\r\n }\r\n}\r\n `;\r\nexport type IndueCardsandAssociationsByAccountComponentProps = Omit, 'query'> & ({ variables: IndueCardsandAssociationsByAccountQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const IndueCardsandAssociationsByAccountComponent = (props: IndueCardsandAssociationsByAccountComponentProps) => (\r\n query={IndueCardsandAssociationsByAccountDocument} {...props} />\r\n );\r\n \r\nexport type IndueCardsandAssociationsByAccountProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withIndueCardsandAssociationsByAccount(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IndueCardsandAssociationsByAccountQuery,\r\n IndueCardsandAssociationsByAccountQueryVariables,\r\n IndueCardsandAssociationsByAccountProps>) {\r\n return ApolloReactHoc.withQuery>(IndueCardsandAssociationsByAccountDocument, {\r\n alias: 'indueCardsandAssociationsByAccount',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIndueCardsandAssociationsByAccountQuery__\r\n *\r\n * To run a query within a React component, call `useIndueCardsandAssociationsByAccountQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useIndueCardsandAssociationsByAccountQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useIndueCardsandAssociationsByAccountQuery({\r\n * variables: {\r\n * accountId: // value for 'accountId'\r\n * accountIdString: // value for 'accountIdString'\r\n * },\r\n * });\r\n */\r\nexport function useIndueCardsandAssociationsByAccountQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(IndueCardsandAssociationsByAccountDocument, baseOptions);\r\n }\r\nexport function useIndueCardsandAssociationsByAccountLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(IndueCardsandAssociationsByAccountDocument, baseOptions);\r\n }\r\nexport type IndueCardsandAssociationsByAccountQueryHookResult = ReturnType;\r\nexport type IndueCardsandAssociationsByAccountLazyQueryHookResult = ReturnType;\r\nexport type IndueCardsandAssociationsByAccountQueryResult = Apollo.QueryResult;\r\nexport const IndueCardsByAccountDocument = gql`\r\n query indueCardsByAccount($input: IndueCardsByAccountInput!) {\r\n indueCardsByAccount(input: $input) {\r\n CardNumber\r\n ExpiryDate\r\n Id\r\n Status\r\n CanActivate\r\n CanHold\r\n CanUnHold\r\n CanReportLostStolen\r\n CanClose\r\n }\r\n}\r\n `;\r\nexport type IndueCardsByAccountComponentProps = Omit, 'query'> & ({ variables: IndueCardsByAccountQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const IndueCardsByAccountComponent = (props: IndueCardsByAccountComponentProps) => (\r\n query={IndueCardsByAccountDocument} {...props} />\r\n );\r\n \r\nexport type IndueCardsByAccountProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withIndueCardsByAccount(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IndueCardsByAccountQuery,\r\n IndueCardsByAccountQueryVariables,\r\n IndueCardsByAccountProps>) {\r\n return ApolloReactHoc.withQuery>(IndueCardsByAccountDocument, {\r\n alias: 'indueCardsByAccount',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIndueCardsByAccountQuery__\r\n *\r\n * To run a query within a React component, call `useIndueCardsByAccountQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useIndueCardsByAccountQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useIndueCardsByAccountQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useIndueCardsByAccountQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(IndueCardsByAccountDocument, baseOptions);\r\n }\r\nexport function useIndueCardsByAccountLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(IndueCardsByAccountDocument, baseOptions);\r\n }\r\nexport type IndueCardsByAccountQueryHookResult = ReturnType;\r\nexport type IndueCardsByAccountLazyQueryHookResult = ReturnType;\r\nexport type IndueCardsByAccountQueryResult = Apollo.QueryResult;\r\nexport const PartyAssociationByAccountDocument = gql`\r\n query partyAssociationByAccount($input: PartyAssociationByAccountInput!) {\r\n partyAssociationByAccount(input: $input) {\r\n IsPrimaryBorrower\r\n IsSecondaryBorrower\r\n IsNonBorrower\r\n PrimaryBorrowerHasCard\r\n }\r\n}\r\n `;\r\nexport type PartyAssociationByAccountComponentProps = Omit, 'query'> & ({ variables: PartyAssociationByAccountQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const PartyAssociationByAccountComponent = (props: PartyAssociationByAccountComponentProps) => (\r\n query={PartyAssociationByAccountDocument} {...props} />\r\n );\r\n \r\nexport type PartyAssociationByAccountProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withPartyAssociationByAccount(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyAssociationByAccountQuery,\r\n PartyAssociationByAccountQueryVariables,\r\n PartyAssociationByAccountProps>) {\r\n return ApolloReactHoc.withQuery>(PartyAssociationByAccountDocument, {\r\n alias: 'partyAssociationByAccount',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyAssociationByAccountQuery__\r\n *\r\n * To run a query within a React component, call `usePartyAssociationByAccountQuery` and pass it any options that fit your needs.\r\n * When your component renders, `usePartyAssociationByAccountQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = usePartyAssociationByAccountQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function usePartyAssociationByAccountQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(PartyAssociationByAccountDocument, baseOptions);\r\n }\r\nexport function usePartyAssociationByAccountLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(PartyAssociationByAccountDocument, baseOptions);\r\n }\r\nexport type PartyAssociationByAccountQueryHookResult = ReturnType;\r\nexport type PartyAssociationByAccountLazyQueryHookResult = ReturnType;\r\nexport type PartyAssociationByAccountQueryResult = Apollo.QueryResult;\r\nexport const RequestNewMultiFactorSecurityTokenDocument = gql`\r\n mutation requestNewMultiFactorSecurityToken($input: RequestMultiFactorAuthorisationInput!) {\r\n requestMultiFactorAuthorisation(input: $input) {\r\n clientMutationId\r\n Code\r\n Message\r\n Success\r\n }\r\n}\r\n `;\r\nexport type RequestNewMultiFactorSecurityTokenMutationFn = Apollo.MutationFunction;\r\nexport type RequestNewMultiFactorSecurityTokenComponentProps = Omit, 'mutation'>;\r\n\r\n export const RequestNewMultiFactorSecurityTokenComponent = (props: RequestNewMultiFactorSecurityTokenComponentProps) => (\r\n mutation={RequestNewMultiFactorSecurityTokenDocument} {...props} />\r\n );\r\n \r\nexport type RequestNewMultiFactorSecurityTokenProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withRequestNewMultiFactorSecurityToken(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n RequestNewMultiFactorSecurityTokenMutation,\r\n RequestNewMultiFactorSecurityTokenMutationVariables,\r\n RequestNewMultiFactorSecurityTokenProps>) {\r\n return ApolloReactHoc.withMutation>(RequestNewMultiFactorSecurityTokenDocument, {\r\n alias: 'requestNewMultiFactorSecurityToken',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useRequestNewMultiFactorSecurityTokenMutation__\r\n *\r\n * To run a mutation, you first call `useRequestNewMultiFactorSecurityTokenMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useRequestNewMultiFactorSecurityTokenMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [requestNewMultiFactorSecurityTokenMutation, { data, loading, error }] = useRequestNewMultiFactorSecurityTokenMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useRequestNewMultiFactorSecurityTokenMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(RequestNewMultiFactorSecurityTokenDocument, baseOptions);\r\n }\r\nexport type RequestNewMultiFactorSecurityTokenMutationHookResult = ReturnType;\r\nexport type RequestNewMultiFactorSecurityTokenMutationResult = Apollo.MutationResult;\r\nexport type RequestNewMultiFactorSecurityTokenMutationOptions = Apollo.BaseMutationOptions;\r\nexport const DisbursementRequestDocument = gql`\r\n mutation disbursementRequest($input: DisbursementRequestInput!) {\r\n disbursementRequest(input: $input) {\r\n clientMutationId\r\n Code\r\n Success\r\n Message\r\n Data {\r\n Id\r\n PayeeName\r\n BankIdentifierText\r\n AccountNumber\r\n PaymentDescription\r\n RequestedAmount\r\n PaymentDate\r\n Documents {\r\n Id\r\n FileName\r\n Name\r\n CreatedOn\r\n DocumentType\r\n IsDeleted\r\n PrivacyLevel\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type DisbursementRequestMutationFn = Apollo.MutationFunction;\r\nexport type DisbursementRequestComponentProps = Omit, 'mutation'>;\r\n\r\n export const DisbursementRequestComponent = (props: DisbursementRequestComponentProps) => (\r\n mutation={DisbursementRequestDocument} {...props} />\r\n );\r\n \r\nexport type DisbursementRequestProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withDisbursementRequest(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n DisbursementRequestMutation,\r\n DisbursementRequestMutationVariables,\r\n DisbursementRequestProps>) {\r\n return ApolloReactHoc.withMutation>(DisbursementRequestDocument, {\r\n alias: 'disbursementRequest',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useDisbursementRequestMutation__\r\n *\r\n * To run a mutation, you first call `useDisbursementRequestMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDisbursementRequestMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [disbursementRequestMutation, { data, loading, error }] = useDisbursementRequestMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useDisbursementRequestMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(DisbursementRequestDocument, baseOptions);\r\n }\r\nexport type DisbursementRequestMutationHookResult = ReturnType;\r\nexport type DisbursementRequestMutationResult = Apollo.MutationResult;\r\nexport type DisbursementRequestMutationOptions = Apollo.BaseMutationOptions;\r\nexport const FinanceSummaryQueryInlineDocument = gql`\r\n query financeSummaryQueryInline {\r\n financeSummary {\r\n Id\r\n TotalPrincipal {\r\n CurrencyCode\r\n Amount\r\n }\r\n TotalRedraw {\r\n CurrencyCode\r\n Amount\r\n }\r\n Instruments {\r\n Id\r\n Number\r\n LoanPurpose\r\n Description\r\n TotalPrincipal\r\n TotalRedraw\r\n Status\r\n IsUnderHardshipAgreement\r\n InstrumentType\r\n Term\r\n TotalTermMonths\r\n RemainingTermMonths\r\n PrimaryBorrower\r\n Accounts {\r\n Id\r\n Number\r\n Description\r\n DisplayOrder\r\n InstrumentId\r\n LegacyNumber\r\n ProductType\r\n CurrentBalance\r\n Redraw\r\n InterestType\r\n CardAccount\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type FinanceSummaryQueryInlineComponentProps = Omit, 'query'>;\r\n\r\n export const FinanceSummaryQueryInlineComponent = (props: FinanceSummaryQueryInlineComponentProps) => (\r\n query={FinanceSummaryQueryInlineDocument} {...props} />\r\n );\r\n \r\nexport type FinanceSummaryQueryInlineProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withFinanceSummaryQueryInline(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n FinanceSummaryQueryInlineQuery,\r\n FinanceSummaryQueryInlineQueryVariables,\r\n FinanceSummaryQueryInlineProps>) {\r\n return ApolloReactHoc.withQuery>(FinanceSummaryQueryInlineDocument, {\r\n alias: 'financeSummaryQueryInline',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useFinanceSummaryQueryInlineQuery__\r\n *\r\n * To run a query within a React component, call `useFinanceSummaryQueryInlineQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useFinanceSummaryQueryInlineQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useFinanceSummaryQueryInlineQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useFinanceSummaryQueryInlineQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(FinanceSummaryQueryInlineDocument, baseOptions);\r\n }\r\nexport function useFinanceSummaryQueryInlineLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(FinanceSummaryQueryInlineDocument, baseOptions);\r\n }\r\nexport type FinanceSummaryQueryInlineQueryHookResult = ReturnType;\r\nexport type FinanceSummaryQueryInlineLazyQueryHookResult = ReturnType;\r\nexport type FinanceSummaryQueryInlineQueryResult = Apollo.QueryResult;\r\nexport const FinanceSummaryQueryDocument = gql`\r\n query financeSummaryQuery {\r\n financeSummary {\r\n TotalPrincipal {\r\n CurrencyCode\r\n Amount\r\n }\r\n TotalRedraw {\r\n CurrencyCode\r\n Amount\r\n }\r\n Instruments {\r\n Id\r\n Number\r\n Description\r\n TotalPrincipal\r\n TotalRedraw\r\n Status\r\n IsUnderHardshipAgreement\r\n InstrumentType\r\n PrimaryBorrower\r\n Accounts {\r\n Id\r\n Number\r\n Description\r\n DisplayOrder\r\n InstrumentId\r\n LegacyNumber\r\n ProductType\r\n CurrentBalance\r\n Redraw\r\n InterestType\r\n CardAccount\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type FinanceSummaryQueryComponentProps = Omit, 'query'>;\r\n\r\n export const FinanceSummaryQueryComponent = (props: FinanceSummaryQueryComponentProps) => (\r\n query={FinanceSummaryQueryDocument} {...props} />\r\n );\r\n \r\nexport type FinanceSummaryQueryProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withFinanceSummaryQuery(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n FinanceSummaryQueryQuery,\r\n FinanceSummaryQueryQueryVariables,\r\n FinanceSummaryQueryProps>) {\r\n return ApolloReactHoc.withQuery>(FinanceSummaryQueryDocument, {\r\n alias: 'financeSummaryQuery',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useFinanceSummaryQueryQuery__\r\n *\r\n * To run a query within a React component, call `useFinanceSummaryQueryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useFinanceSummaryQueryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useFinanceSummaryQueryQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useFinanceSummaryQueryQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(FinanceSummaryQueryDocument, baseOptions);\r\n }\r\nexport function useFinanceSummaryQueryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(FinanceSummaryQueryDocument, baseOptions);\r\n }\r\nexport type FinanceSummaryQueryQueryHookResult = ReturnType;\r\nexport type FinanceSummaryQueryLazyQueryHookResult = ReturnType;\r\nexport type FinanceSummaryQueryQueryResult = Apollo.QueryResult;\r\nexport const InstrumentByIdOrNumberDocument = gql`\r\n query instrumentByIdOrNumber($idOrNumber: String!) {\r\n instrumentByIdOrNumber(idOrNumber: $idOrNumber) {\r\n Id\r\n Number\r\n LoanPurpose\r\n Description\r\n TotalPrincipal\r\n TotalRedraw\r\n Status\r\n IsUnderHardshipAgreement\r\n InstrumentType\r\n Term\r\n TotalTermMonths\r\n RemainingTermMonths\r\n MaturityDate\r\n RedrawConsideration\r\n PrimaryBorrower\r\n Accounts {\r\n Id\r\n Number\r\n Description\r\n DisplayOrder\r\n InstrumentId\r\n LegacyNumber\r\n ProductType\r\n CurrentBalance\r\n Redraw\r\n InterestType\r\n CardAccount\r\n RedrawFlag\r\n OffsetAccount\r\n CardAvailable\r\n }\r\n }\r\n}\r\n `;\r\nexport type InstrumentByIdOrNumberComponentProps = Omit, 'query'> & ({ variables: InstrumentByIdOrNumberQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const InstrumentByIdOrNumberComponent = (props: InstrumentByIdOrNumberComponentProps) => (\r\n query={InstrumentByIdOrNumberDocument} {...props} />\r\n );\r\n \r\nexport type InstrumentByIdOrNumberProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withInstrumentByIdOrNumber(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n InstrumentByIdOrNumberQuery,\r\n InstrumentByIdOrNumberQueryVariables,\r\n InstrumentByIdOrNumberProps>) {\r\n return ApolloReactHoc.withQuery>(InstrumentByIdOrNumberDocument, {\r\n alias: 'instrumentByIdOrNumber',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useInstrumentByIdOrNumberQuery__\r\n *\r\n * To run a query within a React component, call `useInstrumentByIdOrNumberQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useInstrumentByIdOrNumberQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useInstrumentByIdOrNumberQuery({\r\n * variables: {\r\n * idOrNumber: // value for 'idOrNumber'\r\n * },\r\n * });\r\n */\r\nexport function useInstrumentByIdOrNumberQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(InstrumentByIdOrNumberDocument, baseOptions);\r\n }\r\nexport function useInstrumentByIdOrNumberLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(InstrumentByIdOrNumberDocument, baseOptions);\r\n }\r\nexport type InstrumentByIdOrNumberQueryHookResult = ReturnType;\r\nexport type InstrumentByIdOrNumberLazyQueryHookResult = ReturnType;\r\nexport type InstrumentByIdOrNumberQueryResult = Apollo.QueryResult;\r\nexport const IsShariaDocument = gql`\r\n query isSharia {\r\n userSession {\r\n Id\r\n IsSharia\r\n }\r\n}\r\n `;\r\nexport type IsShariaComponentProps = Omit, 'query'>;\r\n\r\n export const IsShariaComponent = (props: IsShariaComponentProps) => (\r\n query={IsShariaDocument} {...props} />\r\n );\r\n \r\nexport type IsShariaProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withIsSharia(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IsShariaQuery,\r\n IsShariaQueryVariables,\r\n IsShariaProps>) {\r\n return ApolloReactHoc.withQuery>(IsShariaDocument, {\r\n alias: 'isSharia',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIsShariaQuery__\r\n *\r\n * To run a query within a React component, call `useIsShariaQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useIsShariaQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useIsShariaQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useIsShariaQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n return Apollo.useQuery(IsShariaDocument, baseOptions);\r\n }\r\nexport function useIsShariaLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n return Apollo.useLazyQuery(IsShariaDocument, baseOptions);\r\n }\r\nexport type IsShariaQueryHookResult = ReturnType;\r\nexport type IsShariaLazyQueryHookResult = ReturnType;\r\nexport type IsShariaQueryResult = Apollo.QueryResult;\r\nexport const DismissNotificationDocument = gql`\r\n mutation dismissNotification($notificationId: ID!) @client {\r\n dismissNotification(NotificationId: $notificationId) @client {\r\n Code\r\n Success\r\n Message\r\n Data {\r\n Id\r\n Account {\r\n InstrumentId\r\n Number\r\n Id\r\n }\r\n ConversionType\r\n ConversionDate\r\n NewInstalmentAmount {\r\n CurrencyCode\r\n Amount\r\n }\r\n NewInstalmentFrequency\r\n Dismissed @client\r\n }\r\n }\r\n}\r\n `;\r\nexport type DismissNotificationMutationFn = Apollo.MutationFunction;\r\nexport type DismissNotificationComponentProps = Omit, 'mutation'>;\r\n\r\n export const DismissNotificationComponent = (props: DismissNotificationComponentProps) => (\r\n mutation={DismissNotificationDocument} {...props} />\r\n );\r\n \r\nexport type DismissNotificationProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withDismissNotification(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n DismissNotificationMutation,\r\n DismissNotificationMutationVariables,\r\n DismissNotificationProps>) {\r\n return ApolloReactHoc.withMutation>(DismissNotificationDocument, {\r\n alias: 'dismissNotification',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useDismissNotificationMutation__\r\n *\r\n * To run a mutation, you first call `useDismissNotificationMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDismissNotificationMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [dismissNotificationMutation, { data, loading, error }] = useDismissNotificationMutation({\r\n * variables: {\r\n * notificationId: // value for 'notificationId'\r\n * },\r\n * });\r\n */\r\nexport function useDismissNotificationMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n return Apollo.useMutation(DismissNotificationDocument, baseOptions);\r\n }\r\nexport type DismissNotificationMutationHookResult = ReturnType;\r\nexport type DismissNotificationMutationResult = Apollo.MutationResult;\r\nexport type DismissNotificationMutationOptions = Apollo.BaseMutationOptions;","import React from \"react\";\r\nimport { FormattedDate, FormattedTime } from \"react-intl\";\r\n\r\nconst CDate: React.FC<{\r\n date?: Date | string | null;\r\n format?: string;\r\n}> = ({ date, format }) => {\r\n if (date) {\r\n return ;\r\n }\r\n return N/A;\r\n};\r\n\r\nconst CTime: React.FC<{ date?: Date | string | null }> = ({ date }) => {\r\n if (date) {\r\n if(!isNaN(new Date(date).getTime())){\r\n return ;\r\n }\r\n return {date}\r\n }\r\n return ;\r\n};\r\n\r\nexport{\r\n CDate,\r\n CTime\r\n}\r\n","import { Link } from \"react-router-dom\";\r\nimport React from \"react\";\r\nimport { IsUserAuthenticatedQuery } from \"generated/generated-models\";\r\nimport { CDate } from \"../../common/CapitalDate\";\r\nimport { IsNullOrWhiteSpace } from 'core/util/stringExtensions';\r\nimport { clientConfigFn } from 'clientConfig';\r\ninterface ComponentState {\r\n showMenu: boolean;\r\n hideLastLoginIp: boolean;\r\n}\r\nclass UserDetailsNavItem extends React.Component<\r\n { session?: IsUserAuthenticatedQuery[\"userSession\"]; },\r\n ComponentState\r\n > {\r\n readonly state: ComponentState = {\r\n showMenu: false,\r\n hideLastLoginIp: clientConfigFn().hideLastLoginIp\r\n };\r\n dropdownMenu = React.createRef();\r\n\r\n handleToggle: React.ReactEventHandler = ev => {\r\n this.setState({ showMenu: !this.state.showMenu });\r\n };\r\n\r\n showMenu = () => {\r\n this.setState({ showMenu: true }, () => {\r\n document.addEventListener(\"click\", this.handleClickEvent);\r\n });\r\n };\r\n\r\n handleClickEvent: EventListener = ev => {\r\n if (!this.dropdownMenu ||\r\n !this.dropdownMenu.current ||\r\n !(ev.target instanceof Element) ||\r\n !this.dropdownMenu.current.contains(ev.target)) {\r\n this.closeMenu();\r\n }\r\n };\r\n\r\n closeMenu = () => {\r\n this.setState({ showMenu: false }, () => {\r\n document.removeEventListener(\"click\", this.handleClickEvent);\r\n });\r\n };\r\n\r\n render() {\r\n const { state, props } = this;\r\n let name = (props.session && props.session.Party && `${props.session.Party.FirstName} ${props.session.Party.LastName}`);\r\n if (IsNullOrWhiteSpace(name)) {\r\n name = (props.session && props.session.Party && `${props.session.Party.OrganisationName}`);\r\n }\r\n if (IsNullOrWhiteSpace(name)) {\r\n name = 'Menu';\r\n }\r\n\r\n const lastLoginAttempt = props.session && props.session.LastLoginAttempt;\r\n const lastLoginFrom = props.session && props.session.LastLoginFrom;\r\n const lastPasswordChange = props.session && props.session.LastPasswordChange;\r\n\r\n return (\r\n
    \r\n \r\n {name}\r\n \r\n
    \r\n \r\n Last logged in: \r\n \r\n {state && !state.hideLastLoginIp && (\r\n from {lastLoginFrom}\r\n )}\r\n \r\n Last password change: \r\n \r\n
    \r\n Change your password\r\n Log off\r\n
    \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport {\r\n UserDetailsNavItem\r\n}\r\n","import { clientConfigFn } from \"clientConfig\";\r\nimport { useAccountByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport { NavLink } from \"react-router-dom\"\r\n\r\nconst CardNavLink = ({ accountNumber, url }: { accountNumber: string, url: string }) => {\r\n const { data } = useAccountByIdOrNumberQuery({ variables: { idOrNumber: accountNumber } });\r\n\r\n const account = data?.accountByIdOrNumber;\r\n\r\n const { hideCardPage } = clientConfigFn();\r\n const showCards = (account?.CardAvailable ?? false) || (account?.Cards?.length ?? 0) > 0\r\n const cardsEnabled = !hideCardPage && showCards;\r\n\r\n if (!cardsEnabled) {\r\n return null;\r\n }\r\n\r\n return (\r\n
  • \r\n \r\n Cards\r\n \r\n
  • \r\n )\r\n}\r\n\r\nexport default CardNavLink\r\n","import NavBar from \"./Navbar\";\r\n\r\nexport default NavBar;\r\n","import { NavLink, useRouteMatch } from \"react-router-dom\";\r\nimport { useIsUserAuthenticatedQuery } from \"generated/generated-models\";\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport { UserDetailsNavItem } from './UserDetailsNavItem';\r\nimport CardNavLink from \"./CardNavLink\";\r\n\r\nconst NavBar = () => {\r\n const accountMatch = useRouteMatch<{ accountId: string }>(\"/Account/Index/:accountId/\");\r\n\r\n const { data: userSessionData, error: userSessionError, loading: userSessionLoading } = useIsUserAuthenticatedQuery({\r\n partialRefetch: true,\r\n notifyOnNetworkStatusChange: true,\r\n errorPolicy: \"all\"\r\n });\r\n\r\n const { hideTransferPage, allowOnLineStatements, useSimpleLayout, logoImageUri } = clientConfigFn();\r\n\r\n const loggedIn = userSessionData && !userSessionError && !userSessionLoading;\r\n\r\n if (!useSimpleLayout) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {loggedIn &&\r\n
    \r\n {/*
    \r\n }\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default NavBar;\r\n","import React from \"react\";\r\n\r\nexport const Loading = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n email: string;\r\n}\r\nexport const CEmail: React.FC = ({ email }) => (\r\n {email}\r\n);\r\n","import React from \"react\";\r\nimport { CEmail } from \"../common/CEmail\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nexport const SupportContactInformation = ({IncludePlease = false}) => {\r\n const clientConfig = clientConfigFn();\r\n const phoneNumber = clientConfig && clientConfig.supportPhoneNumber;\r\n const emailAddress = clientConfig && clientConfig.supportEmailAddress;\r\n\r\n if (phoneNumber !== \"\" && emailAddress !== \"\") {\r\n return (\r\n \r\n {IncludePlease ? \"Please contact\" : \"Contact\"} support on {phoneNumber}, or alternatively email \r\n \r\n );\r\n }\r\n if (phoneNumber !== \"\") {\r\n return {IncludePlease ? \"Please contact\" : \"Contact\"} support on {phoneNumber};\r\n }\r\n if (emailAddress !== \"\") {\r\n return (\r\n \r\n {IncludePlease ? \"Please contact\" : \"Contact\"} support \r\n \r\n );\r\n }\r\n return {IncludePlease ? \"Please contact\" : \"Contact\"} support.;\r\n};\r\n","import React, { Fragment } from \"react\";\r\nimport {\r\n LoginAttempt,\r\n useCloseOtherSessionsMutation,\r\n IsUserAuthenticatedQuery\r\n} from \"generated/generated-models\";\r\nimport { CDate, CTime } from \"app/common/CapitalDate\";\r\nimport { SupportContactInformation } from \"app/SupportContactInformation/SupportContactInformation\";\r\n\r\ntype UserSession = IsUserAuthenticatedQuery[\"userSession\"];\r\n\r\ninterface Props {\r\n userSession?: UserSession;\r\n}\r\n\r\nconst LoginRow = ({ attempt, currentSession }: { attempt?: LoginAttempt, currentSession: boolean }) => {\r\n if(attempt == null) {\r\n return null;\r\n }\r\n\r\n const activeText = hasExpired(attempt, new Date()) ? \"Closed\" : \"Active\";\r\n\r\n return (\r\n \r\n \r\n {activeText}\r\n {currentSession && (\r\n <>
    (This session)\r\n )}\r\n \r\n \r\n - \r\n \r\n \r\n - \r\n \r\n {attempt.IpAddress}\r\n {attempt.UserAgentHeader}\r\n \r\n )\r\n}\r\n\r\nconst hasExpired = (la: LoginAttempt, now: Date) => (\r\n la.Expires == null\r\n || new Date(la.Expires) < now\r\n || la.IsDeleted === true\r\n);\r\n\r\nconst ActiveSessions = ({ userSession }: Props) => {\r\n const hasMultipleActive = hasMultipleActiveSessions(userSession);\r\n const [closeOtherSessions, data] = useCloseOtherSessionsMutation();\r\n const { called, loading, error } = data;\r\n\r\n const scrollToTop = () => {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: \"smooth\"\r\n });\r\n }\r\n\r\n const handleCloseOtherSessions = () => {\r\n closeOtherSessions({ variables: { input: { CloseCurrentSession: false } } });\r\n scrollToTop();\r\n }\r\n\r\n return (\r\n
    \r\n

    Login History

    \r\n {called && loading && (\r\n
    Closing other sessions
    \r\n )}\r\n {called && error && (\r\n
    \r\n Could not close other sessions. Please logout and try again{\" \"}\r\n \r\n Log off\r\n \r\n
    \r\n )}\r\n {called && !loading && !error && (\r\n
    \r\n Other Sessions closed. Return Home\r\n
    \r\n )}\r\n\r\n {hasMultipleActive && (\r\n \r\n

    Another login is active.

    \r\n
    \r\n There is already another active session for the credentials\r\n you supplied.\r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {userSession?.LoginAttempts?.map(x => \r\n \r\n )}\r\n \r\n
    ActiveStartedLast ActivityIP AddressBrowser Details
    \r\n
    \r\n
    \r\n

    What does this mean?

    \r\n

    \r\n There are a couple of harmless reasons you may be seeing this\r\n message:\r\n

    \r\n
      \r\n
    • \r\n You have logged back into web banking after closing your\r\n browser, without correctly logging off; or,\r\n
    • \r\n
    • \r\n Your spouse, partner or another authorised operator may be\r\n logged in at the same time with your credentials.\r\n
    • \r\n
    \r\n

    \r\n If you have confirmed that neither of these are the cause, please\r\n make a note of the IP address of the last login (in the details\r\n above, or in the top-right corner of your browser) and .\r\n

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

    What can I do?

    \r\n

    You have several options:

    \r\n
      \r\n
    • \r\n Make sure you always log off using the link in the top-right\r\n corner of your browser.\r\n
    • \r\n
    • \r\n Do not share your credentials with anyone, including your spouse\r\n or partner. If you require they have access then you can contact\r\n support and have them added as an authority and they will\r\n receive their own credentials.\r\n
    • \r\n
    • \r\n You can{\" \"}\r\n \r\n then continue with your login, or you can{\" \"}\r\n \r\n Log off\r\n {\" \"}\r\n and try again later.\r\n
    • \r\n
    \r\n

    \r\n All activity on this site is tracked, so if you believe this login\r\n to be suspicious, please report it.\r\n

    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport function hasMultipleActiveSessions(\r\n userSession: UserSession | undefined\r\n) {\r\n const currentTime = new Date();\r\n const currentSessionId = userSession?.CurrentSession?.Id;\r\n const hasMultipleActive = userSession?.LoginAttempts?.some(\r\n la =>\r\n la != null\r\n && la.Id !== currentSessionId\r\n && !hasExpired(la, currentTime)\r\n );\r\n return hasMultipleActive;\r\n}\r\n\r\nexport default ActiveSessions;\r\n","import React from 'react';\r\nimport { useIsUserAuthenticatedQuery } from \"../../generated/generated-models\";\r\nimport { Loading } from \"../lib/components/Loading\"\r\nimport { Redirect, Route, RouteProps } from 'react-router';\r\nimport { hasMultipleActiveSessions } from 'app/authentication/ActiveSessions/ActiveSessions';\r\nimport { clientConfigFn } from 'clientConfig';\r\n\r\n/** Redirects to login/password/etc when attempting to access a private page */\r\nconst PrivateRoute: React.FC = (props) => {\r\n const { data, loading } = useIsUserAuthenticatedQuery();\r\n\r\n if (loading) {\r\n return \r\n }\r\n\r\n const isOnPath = (path: string, location: Location) => {\r\n return location?.pathname?.indexOf(path) >= 0;\r\n };\r\n\r\n const isAuthenticated = data?.userSession?.CurrentSession?.Id !== undefined\r\n\r\n const shouldRedirectToChangePassword = () => {\r\n return isAuthenticated\r\n && !shouldRedirectToAcceptTerms()\r\n && data?.userSession?.HasTempPassword === true\r\n }\r\n\r\n const shouldRedirectToAcceptTerms = () => {\r\n return isAuthenticated\r\n && !data?.userSession?.LastTermsAcceptance\r\n && clientConfigFn().showTermsAndConditions\r\n }\r\n\r\n /** Returns undefined if user can access page returns path to redirect page */\r\n const getPathname = () => {\r\n if (!isAuthenticated) {\r\n return \"/security/login\";\r\n }\r\n\r\n if (shouldRedirectToAcceptTerms()) {\r\n if (isOnPath(\"firsttimelogin\", window.location)) {\r\n return undefined;\r\n }\r\n return \"/security/acceptterms\";\r\n }\r\n\r\n if (shouldRedirectToChangePassword()) {\r\n if (isOnPath(\"changepassword\", window.location)) {\r\n return undefined;\r\n }\r\n return \"/security/changepassword\"\r\n }\r\n\r\n if (hasMultipleActiveSessions(data?.userSession)) {\r\n if (isOnPath(\"activesessions\", window.location)) {\r\n return undefined;\r\n }\r\n return \"/security/activesessions\"\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n const pathName = getPathname();\r\n\r\n if (pathName === undefined) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n } else {\r\n return {\r\n return \r\n }} />\r\n }\r\n}\r\n\r\n\r\nexport default PrivateRoute;\r\n","import { clientConfigFn } from \"clientConfig\";\r\nimport React from \"react\";\r\n\r\nconst LoginWrapper: React.FC = ({ children }) => {\r\n const config = clientConfigFn();\r\n\r\n if (clientConfigFn().useSimpleLayout) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n {config.heroImageUri !== \"\"\r\n && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default LoginWrapper;\r\n","import React from \"react\";\r\n\r\ntype Props = {\r\n heading: string;\r\n subHeading: string;\r\n}\r\n\r\nconst LoginHeader = ({heading, subHeading }: Props) => {\r\n return (\r\n
    \r\n

    {heading}

    \r\n

    {subHeading}

    \r\n
    \r\n )\r\n}\r\n\r\nexport default LoginHeader;\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\n\r\ntype Props = {\r\n loading?: boolean;\r\n type?: \"submit\" | \"reset\" | \"button\";\r\n role?: \"primary\" | \"secondary\";\r\n isBlock?: boolean;\r\n onClick?: (event: React.MouseEvent) => void;\r\n id?: string;\r\n className?: string;\r\n isSubmit?: boolean;\r\n disabled?: boolean;\r\n style?: React.CSSProperties\r\n}\r\n\r\nconst Button: React.FC = ({\r\n loading = false,\r\n isSubmit,\r\n type = isSubmit ? \"submit\" : \"button\",\r\n role = \"primary\",\r\n onClick,\r\n isBlock,\r\n id,\r\n className,\r\n children,\r\n disabled = false,\r\n style\r\n}) => {\r\n const buttonClasses = classNames([\r\n \"btn\",\r\n className,\r\n { \"btn-primary\": role === \"primary\" },\r\n { \"btn-secondary\": role === \"secondary\" },\r\n { \"btn-block\": isBlock },\r\n { \"btn-submit\": isSubmit},\r\n ]);\r\n\r\n return (\r\n \r\n {loading && <>\r\n \r\n Loading...\r\n }\r\n {!loading && <>{ children }}\r\n \r\n )\r\n}\r\n\r\nexport default Button;\r\n","import { ApolloError } from \"@apollo/client\";\r\nimport { BankingUserLoginV2Mutation, LoginV3AuthError } from \"generated/generated-models\";\r\n\r\nconst generateErrorMessage = (error?: ApolloError, data?: BankingUserLoginV2Mutation | null) => {\r\n if (error != null) {\r\n return \"An error has occured during login\";\r\n }\r\n\r\n switch (data?.loginV2?.AuthError) {\r\n case LoginV3AuthError.Invalidcredentials:\r\n return \"Invalid Username or Password\";\r\n case LoginV3AuthError.Mfatokeninvalid:\r\n return \"Invalid Security Token\";\r\n case LoginV3AuthError.Newpasswordinvalid:\r\n return `New Password is invalid: ${data.loginV2.AuthMessage}`;\r\n case LoginV3AuthError.Passwordexpired:\r\n return \"Your temporary password has expired\";\r\n case LoginV3AuthError.Mfarequired:\r\n case LoginV3AuthError.Requirepasswordchange:\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nconst LoginErrorMessage = ({ loginError, loginResponse }: { loginError?: ApolloError, loginResponse?: BankingUserLoginV2Mutation | null }) => {\r\n const errorMessage = generateErrorMessage(loginError, loginResponse);\r\n\r\n if (errorMessage == null) {\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n {errorMessage}\r\n
    \r\n )\r\n}\r\n\r\n\r\nexport default LoginErrorMessage;","import React, { useState } from \"react\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport LoginHeader from \"./LoginHeader\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { useBankingUserLoginV2Mutation, LoginV3AuthError } from \"generated/generated-models\";\r\nimport Button from \"app/components/Button\";\r\nimport LoginErrorMessage from \"./LoginErrorMessage\";\r\n\r\ntype Props = {\r\n requiresMfa: (username: string, password: string) => void;\r\n requiresNewPassword: (username: string, password: string, token: string) => void;\r\n}\r\n\r\nconst EnterUsernamePassword = ({ requiresMfa, requiresNewPassword }: Props) => {\r\n const [username, setUsername] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [userLogin, { loading, data, error }] = useBankingUserLoginV2Mutation();\r\n const config = clientConfigFn();\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (username === \"\" || password === \"\") {\r\n return;\r\n }\r\n\r\n userLogin({\r\n variables: {\r\n input: {\r\n Password: password,\r\n Username: username,\r\n }\r\n },\r\n context: { headers: { \"X-Interfi-RequestType\": \"Anonymous\" }, },\r\n })\r\n .then(response => {\r\n if (response?.data?.loginV2 === undefined) {\r\n return;\r\n }\r\n\r\n if (response.data.loginV2.AuthError === LoginV3AuthError.Mfatokeninvalid \r\n || response.data.loginV2.AuthError === LoginV3AuthError.Mfarequired) {\r\n requiresMfa(username, password);\r\n }\r\n\r\n if(response.data.loginV2.AuthError === LoginV3AuthError.Requirepasswordchange){\r\n requiresNewPassword(username, password, \"\")\r\n }\r\n });\r\n }\r\n\r\n if (data?.loginV2?.AuthSucceeded) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    handleSubmit(e)}>\r\n
    \r\n \r\n setUsername(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n setPassword(e.target.value)}\r\n />\r\n
    \r\n
    \r\n \r\n Login\r\n \r\n \r\n {config.allowOnlinePasswordReset ? config.loginResetPasswordText : \"Forgotten Password?\"}\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default EnterUsernamePassword;\r\n","import RequestMultiFactorTokenComponent from \"./RequestMultiFactorTokenComponent\";\r\n\r\nexport default RequestMultiFactorTokenComponent;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n useRequestNewMultiFactorSecurityTokenMutation\r\n} from \"generated/generated-models\";\r\nimport classNames from \"classnames\";\r\n\r\ntype Props = {\r\n /** Called whenever the user entered token changes */\r\n getToken?: (token: string) => void;\r\n /** Display error message */\r\n errorMessage?: string;\r\n /** Whether the request new token button is displayed */\r\n showRequestNewToken?: boolean;\r\n /** Whether a token is automatically requested when this component mounts */\r\n requestMfaOnDisplay?: boolean;\r\n /** Whether the component should be displayed */\r\n visible?: boolean;\r\n}\r\n\r\nconst RequestMultiFactorTokenComponent = ({\r\n showRequestNewToken = true,\r\n errorMessage,\r\n getToken,\r\n requestMfaOnDisplay = false,\r\n visible = true\r\n}: Props) => {\r\n const initialSeconds = 60;\r\n\r\n const [requestToken] = useRequestNewMultiFactorSecurityTokenMutation();\r\n const [seconds, setSeconds] = useState(0);\r\n const [alreadyRequestedMfa, setAlreadyRequestedMfa] = useState(false);\r\n\r\n useEffect(() => {\r\n if (requestMfaOnDisplay && visible && !alreadyRequestedMfa) {\r\n setAlreadyRequestedMfa(true);\r\n setSeconds(initialSeconds);\r\n requestToken({ variables: { input: {} } });\r\n }\r\n }, [requestMfaOnDisplay, visible, alreadyRequestedMfa, requestToken])\r\n\r\n const inputClasses = classNames([\"form-control\", { \"is-invalid\": errorMessage != null && errorMessage !== \"\" }])\r\n\r\n useEffect(() => {\r\n let interval: NodeJS.Timeout | undefined = undefined;\r\n if (seconds > 0) {\r\n interval = setInterval(() => {\r\n setSeconds(seconds => seconds - 1);\r\n }, 1000);\r\n } else if (seconds === 0) {\r\n clearInterval(interval);\r\n }\r\n return () => {\r\n if (interval != null) {\r\n clearInterval(interval);\r\n }\r\n }\r\n }, [seconds]);\r\n\r\n const handleOnChange = (e: React.ChangeEvent) => {\r\n e.stopPropagation();\r\n if (getToken != null) {\r\n getToken(e.target.value)\r\n }\r\n }\r\n\r\n const RequestTokenButton = () => {\r\n const handleClick = () => {\r\n requestToken({ variables: { input: {} } })\r\n setSeconds(60);\r\n }\r\n if (seconds <= 0) {\r\n return (\r\n
    \r\n \r\n Get New Token\r\n \r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n You may request a new token in: {seconds.toString().padStart(2, \"0\")} secs\r\n
    \r\n )\r\n }\r\n }\r\n\r\n if (!visible) {\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n {errorMessage}\r\n
    \r\n {showRequestNewToken && }\r\n
    \r\n )\r\n};\r\n\r\nexport default RequestMultiFactorTokenComponent;\r\n","import Button from \"app/components/Button\";\r\nimport { useBankingUserLoginV2Mutation, LoginV3AuthError } from \"generated/generated-models\";\r\nimport React, { useState } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport RequestMultiFactorToken from \"../../components/RequestMultiFactorToken\";\r\nimport LoginErrorMessage from \"./LoginErrorMessage\";\r\nimport LoginHeader from \"./LoginHeader\";\r\n\r\ntype Props = {\r\n username: string;\r\n password: string;\r\n requiresNewPassword: (username: string, password: string, token: string) => void;\r\n reset: () => void;\r\n}\r\n\r\nconst EnterMfa = ({ username, password, requiresNewPassword, reset }: Props) => {\r\n const [twoFactorToken, setTwoFactorToken] = useState(\"\");\r\n const [userLogin, { loading, data, error }] = useBankingUserLoginV2Mutation();\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (twoFactorToken === \"\") {\r\n return;\r\n }\r\n\r\n userLogin({\r\n variables: {\r\n input: {\r\n Password: password,\r\n Username: username,\r\n TwoFactorToken: twoFactorToken\r\n }\r\n },\r\n context: { headers: { \"X-Interfi-RequestType\": \"Anonymous\" } }\r\n });\r\n }\r\n\r\n if (data?.loginV2?.AuthSucceeded) {\r\n return \r\n }\r\n\r\n if (data?.loginV2?.AuthError === LoginV3AuthError.Requirepasswordchange) {\r\n requiresNewPassword(username, password, twoFactorToken)\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    handleSubmit(e)}>\r\n\r\n \r\n\r\n
    \r\n \r\n Log in\r\n \r\n \r\n Go Back\r\n \r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default EnterMfa;\r\n","import { ErrorMessage } from \"formik\";\r\nimport React from \"react\";\r\n\r\nconst FieldErrorMessage = (props: { errorName: string }) => (\r\n
    \r\n \r\n
    \r\n)\r\n\r\nexport default FieldErrorMessage;\r\n","import { useFormikContext } from \"formik\";\r\n\r\n/**\r\n * Add an error class if appropriate\r\n * @param fieldName Name of the formik field\r\n * @param className Current class names\r\n */\r\nexport const useAddErrorClass = (fieldName: string, className: string) => {\r\n const { errors, touched } = useFormikContext();\r\n\r\n if (errors[fieldName] && touched[fieldName]) {\r\n return `${className} is-invalid`\r\n }\r\n\r\n return className;\r\n}\r\n\r\nexport const getHelpTextId = (fieldName: string) => {\r\n return `${fieldName}-helpblock`\r\n}\r\n\r\n/**\r\n * Generate a field id based on the name/id\r\n * @param fieldName Name of the field\r\n * @param id Optionally pass in Id to override name\r\n */\r\nexport const getFieldId = (fieldName: string, id?: string) => {\r\n if (id != null) {\r\n return id;\r\n }\r\n return `${fieldName}-input`;\r\n}\r\n","import { clientConfigFn } from \"../../clientConfig\";\r\n\r\nexport function getCurrencySymbol() {\r\n return new Intl.NumberFormat(clientConfigFn().currencyLocale, { style: 'currency', currency: clientConfigFn().currencyFormat }).formatToParts(undefined)[0].value;\r\n}\r\n","import React, {useState} from \"react\";\r\nimport { useField } from \"formik\";\r\nimport FieldErrorMessage from \"./FieldErrorMessage\";\r\nimport { getFieldId, getHelpTextId, useAddErrorClass } from \"./utilities\";\r\nimport classNames from \"classnames\";\r\nimport NumberFormat, { NumberFormatProps } from 'react-number-format';\r\nimport { getCurrencySymbol } from \"core/util/currencySymbol\"\r\n\r\ntype InputType =\r\n | \"text\"\r\n | \"wholeNumber\"\r\n | \"currency\"\r\n | \"password\"\r\n\r\ntype Props = {\r\n name: string;\r\n type: InputType;\r\n className?: string;\r\n label?: string;\r\n helpText?: string;\r\n placeHolder?: string;\r\n disabled?: boolean;\r\n printableOnly?: boolean;\r\n}\r\n\r\nconst Input = (props: Props) => {\r\n const [field,, helper] = useField(props.name);\r\n const [value, setValue] = useState();\r\n\r\n let inputClassName = classNames([\r\n \"form-control\",\r\n props.className,\r\n { \"form-control-wholenumber\": props.type === \"wholeNumber\" },\r\n { \"form-control-currency\": props.type === \"currency\" },\r\n { \"form-control-text\": props.type === \"text\" || props.type === \"password\" },\r\n ])\r\n\r\n inputClassName = useAddErrorClass(props.name, inputClassName)\r\n const helpTextId = props.helpText != null ? getHelpTextId(props.name) : undefined\r\n const fieldId = getFieldId(props.name);\r\n\r\n const charallow = (e:any) => \r\n {\r\n setValue(e.target.value.replace(/[^ -~]/g,''));\r\n }\r\n\r\n const handleOnChange = (e:any) => \r\n {\r\n helper.setValue(e.target.value);\r\n helper.setTouched(e.target);\r\n field.onChange(e);\r\n charallow(e);\r\n }\r\n\r\n const getPattern = () => {\r\n switch (props.type) {\r\n case \"wholeNumber\":\r\n return \"[0-9]*\";\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n const getInputMode = () => {\r\n switch (props.type) {\r\n case \"wholeNumber\":\r\n return \"numeric\";\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n const getType = () => {\r\n switch(props.type) {\r\n case \"password\":\r\n return \"password\";\r\n default:\r\n return \"text\"\r\n }\r\n }\r\n\r\n const formProps: NumberFormatProps = {\r\n className: inputClassName,\r\n id: fieldId,\r\n name: props.name,\r\n placeholder: props.placeHolder,\r\n disabled: props.disabled,\r\n \"aria-describedby\": helpTextId,\r\n input: \"text\",\r\n pattern: getPattern(),\r\n inputMode: getInputMode(),\r\n type: getType(),\r\n printableOnly: \"false\"\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n {props.type === \"currency\" &&\r\n
    \r\n {getCurrencySymbol()}\r\n
    \r\n }\r\n\r\n {props.type === \"currency\" &&\r\n helper.setValue(x.floatValue)}\r\n onBlur={_ => helper.setTouched(true)}\r\n value={field.value}\r\n />\r\n }\r\n\r\n {props.type === \"wholeNumber\" &&\r\n helper.setValue(x.floatValue)}\r\n onBlur={_ => helper.setTouched(true)}\r\n value={field.value}\r\n maxLength={15}\r\n />\r\n }\r\n\r\n {(props.type === \"text\" || props.type === \"password\" ) && (props.printableOnly !== true) &&\r\n \r\n }\r\n\r\n {(props.type === \"text\" || props.type === \"password\" ) && props.printableOnly === true &&\r\n \r\n }\r\n \r\n\r\n
    \r\n {props.helpText}\r\n
    \r\n )\r\n}\r\n\r\nexport default Input;\r\n","/**\r\n * provides autocomplete for object property names to avoid magic strings\r\n * @example nameof(\"UseNewBankAccount\") = \"UseNewBankAccount\"\r\n */\r\n\r\nexport function nameof(key: keyof T): keyof T {\r\n return key;\r\n}\r\n\r\n/**\r\n * provides autocomplete for object property names to avoid magic strings\r\n * @example const fac = nameofFactory(); fac(\"Id\") = \"Id\"\r\n */\r\nexport const nameofFactory = () => (name: keyof T) => name;\r\n","import React from \"react\";\r\nimport { Form as FormikForm } from \"formik\";\r\n\r\ntype Props = {\r\n className?: string;\r\n}\r\n\r\nconst Form: React.FC = (props) => {\r\n let className = \"standardform\";\r\n\r\n if (props.className != null) {\r\n className = `${className} ${props.className}`;\r\n }\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default Form;\r\n","import { useBankingUserLoginV2Mutation } from \"generated/generated-models\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport LoginHeader from \"./LoginHeader\";\r\nimport Button from \"app/components/Button\";\r\nimport Input from \"app/components/Input\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport Form from \"app/components/Form\";\r\nimport { Formik } from \"formik\";\r\nimport { Validate } from \"./EnterNewPasswordValidator\";\r\nimport LoginErrorMessage from \"./LoginErrorMessage\";\r\n\r\nexport type EnterNewPasswordFormProps = {\r\n password: string;\r\n confirmPassword: string;\r\n}\r\n\r\ntype Props = {\r\n username: string;\r\n password: string;\r\n twoFactorToken: string;\r\n reset: () => void;\r\n}\r\n\r\nconst initialFormValues: EnterNewPasswordFormProps = { password: \"\", confirmPassword: \"\" }\r\n\r\nconst EnterNewPassword = ({ username, password, twoFactorToken, reset }: Props) => {\r\n const [userLogin, { loading, data, error }] = useBankingUserLoginV2Mutation();\r\n\r\n const handleSubmit = async (values: EnterNewPasswordFormProps) => {\r\n await userLogin({\r\n variables: {\r\n input: {\r\n Password: password,\r\n Username: username,\r\n TwoFactorToken: twoFactorToken,\r\n NewPassword: values.password\r\n }\r\n },\r\n context: { headers: { \"X-Interfi-RequestType\": \"Anonymous\" }, },\r\n });\r\n }\r\n if (data?.loginV2?.AuthSucceeded) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n\r\n {\r\n handleSubmit(values)\r\n }}\r\n validationSchema={Validate()}\r\n >\r\n {() => {\r\n return (\r\n
    \r\n (\"password\")}\r\n type=\"password\"\r\n label=\"New Password\"\r\n />\r\n (\"confirmPassword\")}\r\n type=\"password\"\r\n label=\"Confirm New Password\"\r\n />\r\n\r\n
    \r\n \r\n Log in\r\n \r\n\r\n \r\n Go Back\r\n \r\n
    \r\n \r\n )\r\n }}\r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default EnterNewPassword;\r\n","import * as yup from \"yup\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { EnterNewPasswordFormProps } from \"./EnterNewPassword\";\r\n\r\nexport const Validate = () =>{\r\n const schema: yup.ObjectSchema = yup.object({\r\n confirmPassword: yup\r\n .string()\r\n .required()\r\n .oneOf(\r\n [yup.ref(nameof(\"password\"))],\r\n \"Passwords must match\"\r\n )\r\n .label(\"Confirm Password\"),\r\n\r\n password: yup\r\n .string()\r\n .required()\r\n .min(6)\r\n .matches(/[A-Z]/, 'At least one upper case letter required')\r\n .matches(/[a-z]/, 'At least one lower case letter required')\r\n .matches(/[0-9]/, 'At least one number required')\r\n .matches(/[!|@|#|$|%|^|&|*|(|)|-|_]/, 'At least one special character required')\r\n .label(\"New Password\")\r\n\r\n }).defined();\r\n return schema\r\n}","import Login from \"./Login\";\r\n\r\nexport default Login;\r\n","import React, { useState } from \"react\";\r\nimport LoginWrapper from \"app/authentication/Login/LoginWrapper\";\r\nimport EnterUsernameAndPasswordV2 from \"./EnterUsernamePassword\";\r\nimport EnterMfa from \"app/authentication/Login/EnterMfa\";\r\nimport EnterNewPassword from \"./EnterNewPassword\";\r\n\r\ntype LoginPage =\r\n | \"UsernamePassword\"\r\n | \"SecurityToken\"\r\n | \"NewPassword\"\r\n\r\ntype LoginDetails = {\r\n username: string;\r\n password: string;\r\n token: string;\r\n}\r\n\r\nconst Login = () => { \r\n const [loginPage, setLoginPage] = useState(\"UsernamePassword\")\r\n const [loginDetails, setLoginDetails] = useState({\r\n password: \"\",\r\n username: \"\",\r\n token: \"\"\r\n });\r\n\r\n const reset = () =>{\r\n setLoginPage(\"UsernamePassword\")\r\n\r\n setLoginDetails({\r\n password: \"\",\r\n username: \"\",\r\n token: \"\"})\r\n }\r\n\r\n const handleRequiresMFa = (username: string, password: string) => {\r\n setLoginDetails({\r\n username: username,\r\n password: password,\r\n token: \"\"\r\n })\r\n setLoginPage(\"SecurityToken\")\r\n }\r\n\r\n const requiresNewPassword = (username: string, password: string, token: string) => {\r\n setLoginDetails({\r\n username: username,\r\n password: password,\r\n token: token\r\n })\r\n setLoginPage(\"NewPassword\")\r\n }\r\n\r\n return (\r\n \r\n {loginPage === \"SecurityToken\" &&\r\n \r\n }\r\n {loginPage === \"UsernamePassword\" &&\r\n \r\n }\r\n {loginPage === \"NewPassword\" && \r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default Login;\r\n","import debug from \"debug\";\r\n\r\nconst BASE = \"capital\";\r\n\r\ntype logLevel = \"trace\" | \"info\" | \"warn\" | \"error\";\r\n\r\nclass Log {\r\n // tslint:disable-next-line:no-any\r\n public generateMessage(level: logLevel, message: any, source: any) {\r\n // Set the prefix which will cause debug to enable the message\r\n const namespace = `${BASE}:${level}`;\r\n const createDebug = debug(namespace);\r\n\r\n // Set the colour of the message based on the level\r\n // createDebug.color = COLOURS[level];\r\n\r\n if (source) {\r\n createDebug(source, message);\r\n } else {\r\n createDebug(message);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n public trace(message: any, source?: any) {\r\n return this.generateMessage(\"trace\", message, source);\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n public info(message: any, source?: any) {\r\n return this.generateMessage(\"info\", message, source);\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n public warn(message: any, source?: any) {\r\n return this.generateMessage(\"warn\", message, source);\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n public error(message: any, source?: any) {\r\n return this.generateMessage(\"error\", message, source);\r\n }\r\n}\r\n\r\nexport const log = new Log();\r\nexport default log;\r\n","import React from \"react\";\r\nimport { FormattedNumber, IntlProvider } from \"react-intl\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport classNames from \"classnames\";\r\n\r\ntype Props = {\r\n amount?: number,\r\n addColour?: boolean,\r\n className?: string\r\n}\r\n\r\nconst MoneyFormatted = ({ className, amount = 0, addColour = false }: Props) => {\r\n const classes = classNames([\r\n className,\r\n \"money\",\r\n ])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MoneyFormatted;\r\n","import MoneyFormatted from \"./MoneyFormatted\";\r\nimport { clientConfigFn } from \"../../clientConfig\";\r\nimport classNames from \"classnames\";\r\n\r\ntype Props = {\r\n amount?: number,\r\n direction: \"credit\" | \"debit\" | \"total\"\r\n isShowZero?: boolean,\r\n addColour?: boolean,\r\n className?: string\r\n}\r\n\r\nconst signMoney = (amount: number, direction: \"credit\" | \"debit\" | \"total\") => {\r\n const config = clientConfigFn();\r\n var isLenderPerspective = config.showTransactionsAsLender\r\n\r\n if (amount === 0) {\r\n return 0;\r\n }\r\n\r\n if (isLenderPerspective) {\r\n if (direction === \"credit\") {\r\n return -1 * amount;\r\n }\r\n else if (direction === \"debit\" || direction === \"total\") {\r\n return amount;\r\n }\r\n }\r\n else {\r\n if (direction === \"credit\") {\r\n return amount;\r\n }\r\n else if (direction === \"debit\" || direction === \"total\") {\r\n return -1 * amount;\r\n }\r\n }\r\n\r\n return amount;\r\n}\r\n\r\nconst MoneySigned = ({ amount = 0, direction, isShowZero = true, addColour = false, className }: Props) => {\r\n if (amount === 0 && !isShowZero) {\r\n return null;\r\n }\r\n\r\n const classes = classNames([\r\n {\"money-credit\": direction === \"credit\" },\r\n {\"money-debit\": direction === \"debit\" },\r\n {\"money-total\": direction === \"total\" },\r\n {\"money-colorise\": addColour },\r\n className\r\n ]);\r\n\r\n return ;\r\n}\r\n\r\nexport default MoneySigned;\r\n","import React from \"react\";\r\nimport MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport MoneySigned from \"../components/MoneySigned\";\r\nimport {\r\n FinanceSummary,\r\n Instrument,\r\n useIsUserAuthenticatedQuery\r\n} from \"generated/generated-models\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { IsNullOrWhiteSpace } from \"core/util/stringExtensions\";\r\n\r\nconst FinanceLine: (\r\n instrument: Instrument,\r\n onClick?: (instrument: Instrument) => void\r\n) => JSX.Element = (instrument, onClick) => {\r\n if (instrument == null) {\r\n return <>;\r\n }\r\n\r\n const lineClicked = (e: React.SyntheticEvent<{}>) => {\r\n e.preventDefault();\r\n if (onClick) {\r\n onClick(instrument);\r\n }\r\n };\r\n return (\r\n \r\n \r\n {clientConfigFn().showPrimaryBorrowerName\r\n ? {instrument.PrimaryBorrower}\r\n : {instrument.Description || instrument.LoanPurpose}\r\n }\r\n
    \r\n {instrument.Number}\r\n \r\n \r\n \r\n \r\n { clientConfigFn().showAvailableRedraw ? \r\n \r\n : null}\r\n \r\n );\r\n};\r\n\r\nconst WelcomeMessage = ({showUser, title} : {showUser?: boolean, title?: string}) => {\r\n const { data } = useIsUserAuthenticatedQuery();\r\n if(showUser){\r\n if(!IsNullOrWhiteSpace(data?.userSession?.Party?.FirstName)){\r\n return

    {title} {data?.userSession?.Party?.FirstName}

    \r\n }\r\n else{\r\n return

    {title} {data?.userSession?.Party?.OrganisationName}

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

    {title}

    \r\n}\r\n\r\ninterface FinanceSummaryViewProps {\r\n financeSummary?: FinanceSummary;\r\n onLineClick?: (instrument: Instrument) => void;\r\n myFinancesTitle?: string;\r\n showUserInWelcomeMessage?: boolean;\r\n}\r\n\r\nconst FinanceSummaryView: (\r\n props: FinanceSummaryViewProps\r\n) => JSX.Element = ({ financeSummary, onLineClick, myFinancesTitle, showUserInWelcomeMessage }) => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {clientConfigFn().showAvailableRedraw ? : null}\r\n \r\n \r\n \r\n {financeSummary &&\r\n financeSummary.Instruments &&\r\n financeSummary.Instruments.filter(x => x != null).map(inst => {\r\n if (inst) {\r\n return FinanceLine(inst, onLineClick);\r\n }\r\n return <>;\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n {clientConfigFn().showAvailableRedraw ? : null}\r\n \r\n \r\n
    AccountBalance{clientConfigFn().accountAvailableLabel}
    Total\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport {\r\n FinanceSummaryView\r\n}\r\n","import { History } from \"history\";\r\nimport React from \"react\";\r\nimport gql from \"graphql-tag\";\r\n// import query from \"./financeSummaryQuery.graphql\";\r\n// type definitions define the \"shape\" of your data and specify\r\n// which ways the data can be fetched from the GraphQL server.\r\nimport { Query } from \"@apollo/client/react/components\";\r\nimport { QueryResult } from \"@apollo/client\"\r\nimport {\r\n Instrument,\r\n FinanceSummaryQueryInlineQuery,\r\n} from \"generated/generated-models\";\r\nimport { log } from \"core/log\";\r\nimport { Loading } from \"../lib/components/Loading\";\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport { FinanceSummaryView } from './FinanceSummaryView';\r\nimport { Redirect } from 'react-router';\r\n\r\nconst query = gql`\r\n query financeSummaryQueryInline {\r\n financeSummary {\r\n Id\r\n TotalPrincipal {\r\n CurrencyCode\r\n Amount\r\n }\r\n TotalRedraw {\r\n CurrencyCode\r\n Amount\r\n }\r\n Instruments {\r\n Id\r\n Number\r\n LoanPurpose\r\n Description\r\n TotalPrincipal\r\n TotalRedraw\r\n Status\r\n IsUnderHardshipAgreement\r\n InstrumentType\r\n Term\r\n TotalTermMonths\r\n RemainingTermMonths\r\n PrimaryBorrower\r\n\r\n Accounts {\r\n Id\r\n Number\r\n Description\r\n DisplayOrder\r\n InstrumentId\r\n LegacyNumber\r\n ProductType\r\n CurrentBalance\r\n Redraw\r\n InterestType\r\n CardAccount\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst navToInstrument = (baseUrl: string, history?: History) => (\r\n line: Instrument\r\n) => {\r\n log.info(`nav to ${baseUrl} ${line.Number}`);\r\n if (history) {\r\n history.push(baseUrl + line.Number);\r\n }\r\n};\r\n\r\nconst FinanceSummaryComponent = ({ history }: { history: History }) => (\r\n query={query}>\r\n {({\r\n data,\r\n loading,\r\n error,\r\n }: QueryResult) => {\r\n if (loading) {\r\n return ;\r\n }\r\n if (error) {\r\n return
    `Error!: ${error.message}`
    ;\r\n }\r\n if (!data) {\r\n return FinanceSummaryView({});\r\n }\r\n const financeSummary = data.financeSummary || undefined;\r\n\r\n const {myFinancesTitle, showUserInWelcomeMessage, redirectToSingleInstrument} = clientConfigFn() \r\n\r\n if(redirectToSingleInstrument){\r\n if(financeSummary && financeSummary.Instruments && financeSummary.Instruments.length === 1 && financeSummary.Instruments[0]){\r\n //single instrument redirect\r\n log.info(`Single instrument redirecting to instrument page ${financeSummary.Instruments[0].Number}`);\r\n // navToInstrument(\"instrument/Index/\", history)(financeSummary.Instruments[0]);\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n return FinanceSummaryView({\r\n financeSummary,\r\n onLineClick: navToInstrument(\"instrument/Index/\", history),\r\n myFinancesTitle,\r\n showUserInWelcomeMessage\r\n });\r\n }}\r\n \r\n);\r\n\r\nexport {\r\n FinanceSummaryComponent\r\n};\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n header?: string;\r\n error?: string;\r\n}\r\n\r\n/** Used for full page errors */\r\nconst CError: React.FC = ({ header, error }) => {\r\n return (\r\n
    \r\n
    \r\n

    {header || \"Error\"}

    \r\n
    {error}
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport { CError };\r\n","import { ApolloError } from \"@apollo/client\";\r\nimport React from \"react\";\r\nimport { CError } from \"./CError\";\r\n\r\ninterface Props {\r\n header?: string;\r\n error?: ApolloError;\r\n}\r\nconst CApolloError: React.FC = ({ header, error }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport { CApolloError };\r\n","export const sortByProp = (\r\n array: T[],\r\n propName: keyof T,\r\n order: \"ASC\" | \"DESC\" = \"ASC\"\r\n): T[] => {\r\n const dir = order === \"ASC\" ? 1 : -1;\r\n return array.sort((a, b) => {\r\n if (a[propName] < b[propName]) {\r\n return -1 * dir;\r\n }\r\n if (a[propName] > b[propName]) {\r\n return 1 * dir;\r\n }\r\n return 0;\r\n });\r\n};\r\n","import { Maybe } from \"graphql/jsutils/Maybe\";\r\n\r\nexport function notEmpty(\r\n value: TValue | null | undefined\r\n): value is TValue {\r\n return value !== null && value !== undefined;\r\n}\r\n\r\nexport function makeNonEmpty(value: Maybe[]>) {\r\n return (value || []).filter(notEmpty);\r\n}\r\n\r\ntype groupByResult = {\r\n key: KeyType;\r\n elements: ElementType[];\r\n}\r\n\r\nexport function groupBy(\r\n transactions: (ElementType | null | undefined)[],\r\n getKey: (element: ElementType) => KeyType,\r\n keyComparisonCheck: (firstKey: KeyType, secondKey: KeyType) => number) {\r\n\r\n const group = transactions\r\n .reduce((acc, element) => {\r\n if (element == null) {\r\n return acc;\r\n }\r\n\r\n const key = getKey(element);\r\n\r\n if (acc.length === 0) {\r\n acc.push({\r\n key: key,\r\n elements: [element]\r\n })\r\n return acc;\r\n }\r\n\r\n for (let i = 0; i < acc.length; i++) {\r\n if (keyComparisonCheck(acc[i].key, key) === 0) {\r\n acc[i].elements.push(element);\r\n return acc;\r\n }\r\n\r\n if (keyComparisonCheck(key, acc[i].key) < 0) {\r\n acc.splice(i, 0, {\r\n key: key,\r\n elements: [element]\r\n })\r\n return acc;\r\n }\r\n }\r\n\r\n acc.push({\r\n key: key,\r\n elements: [element]\r\n });\r\n return acc;\r\n }, [] as groupByResult[]);\r\n\r\n return group;\r\n}\r\n","import React from \"react\";\r\n\r\ntype Props = {\r\n title: string;\r\n subtitle?: string;\r\n}\r\n\r\nconst Title = (props: Props) => {\r\n let subtitle = null;\r\n\r\n if(props.subtitle != null) {\r\n subtitle = <>\r\n
    \r\n {props.subtitle}\r\n \r\n }\r\n\r\n return (\r\n

    \r\n {props.title}\r\n {subtitle}\r\n

    \r\n )\r\n}\r\n\r\nexport default Title;\r\n","import MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport MoneySigned from \"../components/MoneySigned\";\r\nimport { Account, Instrument, InstrumentByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport { sortByProp } from \"core/util/sort\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport Title from \"app/components/Title\";\r\nimport { CApolloError } from \"app/common/CApolloError\";\r\nimport { useHistory } from \"react-router\";\r\n\r\ntype AccountTableRowProps = {\r\n redrawConsideration?: string\r\n account: Account\r\n instrument: Instrument;\r\n}\r\n\r\nconst AccountTableRow = ({ account, redrawConsideration, instrument }: AccountTableRowProps) => {\r\n const history = useHistory();\r\n\r\n if (account == null) {\r\n return null;\r\n }\r\n\r\n const clickHandler = () => {\r\n history.push(\"/Account/Index/\" + account.Number);\r\n };\r\n\r\n return (\r\n \r\n \r\n {clientConfigFn().showPrimaryBorrowerName\r\n ? {instrument.PrimaryBorrower}\r\n : {account.Description || account.ProductType}\r\n }\r\n
    \r\n {account.Number}\r\n \r\n \r\n \r\n \r\n {clientConfigFn().showAvailableRedraw &&\r\n \r\n {redrawConsideration === \"Account\" &&\r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nconst AccountTableBody = ({ instrument }: { instrument: InstrumentByIdOrNumberQuery[\"instrumentByIdOrNumber\"] }) => {\r\n if (instrument?.Accounts == null) {\r\n return (\r\n \r\n No Active Accounts\r\n \r\n );\r\n }\r\n\r\n return (\r\n <> {\r\n sortByProp(makeNonEmpty(instrument.Accounts), \"DisplayOrder\")\r\n .map(account => )\r\n } \r\n )\r\n};\r\n\r\nconst AccountsSummary = ({ instrument }: { instrument: InstrumentByIdOrNumberQuery[\"instrumentByIdOrNumber\"] }) => {\r\n const clientConfig = clientConfigFn();\r\n\r\n if (instrument == null) {\r\n return ;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n <p>\r\n Please click or tap the account below to view more information.\r\n </p>\r\n <table className=\"table table-selectable\" id=\"accounts\">\r\n <thead>\r\n <tr className=\"table-no-select\">\r\n <th>Description</th>\r\n <th className=\"money-table-header\">Balance</th>\r\n {clientConfig.showAvailableRedraw ? <th className=\"money-table-header\">{clientConfig.accountAvailableLabel}</th> : null}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <AccountTableBody\r\n instrument={instrument}\r\n />\r\n </tbody>\r\n <tfoot>\r\n <tr className=\"table-no-select\">\r\n <td>Total</td>\r\n <td className=\"money-cell\">\r\n <MoneySigned amount={instrument.TotalPrincipal} direction=\"total\" />\r\n </td>\r\n {clientConfig.showAvailableRedraw ?\r\n <td className=\"money-cell\">\r\n <MoneyFormatted amount={instrument.TotalRedraw} />\r\n </td> : null\r\n }\r\n </tr>\r\n </tfoot>\r\n </table>\r\n </div>\r\n );\r\n};\r\n\r\nexport default AccountsSummary;\r\n","import { CDate } from \"../common/CapitalDate\";\r\nimport { InstrumentByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport MoneySigned from \"../components/MoneySigned\";\r\nimport { CApolloError } from \"app/common/CApolloError\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nconst GreaterThanZero = ({ value }: { value: number }) => {\r\n let displayValue = value < 0 ? 0 : value;\r\n\r\n return <span className=\"metric-value\">\r\n {displayValue}\r\n </span>\r\n}\r\n\r\nconst InstrumentHeader = ({ instrument }: { instrument: InstrumentByIdOrNumberQuery[\"instrumentByIdOrNumber\"] }) => {\r\n const clientConfig = clientConfigFn();\r\n\r\n if (instrument == null) {\r\n return <CApolloError />;\r\n }\r\n\r\n return (\r\n <div className=\"account-metric-head\">\r\n {clientConfig.showInstrumentTitle &&\r\n <h2>\r\n {instrument.LoanPurpose}\r\n </h2>}\r\n <div className=\"metric-group container\">\r\n <div className=\"row\">\r\n <div className=\"col-md metric-tile instrument-number\">\r\n <span className=\"metric-label\">Loan Number</span>\r\n <span className=\"metric-value\">{instrument.Number}</span>\r\n </div>\r\n <div className=\"col-md metric-tile instrument-totalprincipal\">\r\n <span className=\"metric-label\">Current balance</span>\r\n <span className=\"metric-value\">\r\n <MoneySigned amount={instrument.TotalPrincipal} direction=\"total\" />\r\n </span>\r\n </div>\r\n <div className=\"col-md metric-tile instrument-maturitydate\">\r\n <span className=\"metric-label\">{clientConfig.maturesMetricLabel}</span>\r\n <span className=\"metric-value\">\r\n <CDate date={instrument.MaturityDate} />\r\n </span>\r\n </div>\r\n <div className=\"col-md metric-tile instrument-totaltermmonths\">\r\n <span className=\"metric-label\">Term (months)</span>\r\n <span className=\"metric-value\">\r\n {instrument.TotalTermMonths}\r\n </span>\r\n </div>\r\n <div className=\"col-md metric-tile instrument-remainingtermmonths\">\r\n <span className=\"metric-label\">Term remaining (months)</span>\r\n <GreaterThanZero value={instrument.RemainingTermMonths} />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default InstrumentHeader;\r\n","import { CApolloError } from \"app/common/CApolloError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useInstrumentByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport AccountsSummary from \"./AccountsSummary\";\r\nimport InstrumentHeader from \"./InstrumentHeader\";\r\n\r\nconst InstrumentPage = ({ instrumentNumber }: { instrumentNumber: string }) => {\r\n const { data, loading, error } = useInstrumentByIdOrNumberQuery({ variables: { idOrNumber: instrumentNumber } });\r\n\r\n const instrument = data?.instrumentByIdOrNumber;\r\n\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n\r\n if (error) {\r\n return <CApolloError error={error} />\r\n }\r\n\r\n return (\r\n <section className=\"sub-wrap\">\r\n <InstrumentHeader\r\n instrument={instrument}\r\n />\r\n <AccountsSummary instrument={instrument} />\r\n </section>\r\n );\r\n}\r\n\r\nexport default InstrumentPage;\r\n","import * as yup from \"yup\";\r\n\r\nexport const getSecurityTokenValidator = (requiresMfa: boolean) => {\r\n if (requiresMfa) {\r\n return yup\r\n .string()\r\n .label(\"Security Token\")\r\n .required()\r\n .length(6);\r\n }\r\n else {\r\n return yup\r\n .string()\r\n .label(\"Security Token\")\r\n .notRequired();\r\n }\r\n}\r\n","import { useField } from \"formik\";\r\nimport React from \"react\";\r\nimport RequestMultiFactorToken from \"./RequestMultiFactorToken\";\r\n\r\ntype Props = {\r\n /** Formik name */\r\n name: string;\r\n /** Whether the request new token button is displayed */\r\n showRequestNewToken?: boolean;\r\n /** Whether a token is automatically requested when this component mounts */\r\n requestMfaOnDisplay?: boolean;\r\n /** Whether the component should be displayed */\r\n visible?: boolean;\r\n}\r\n\r\nconst RequestMultiFactorTokenFormik = (props: Props) => {\r\n const [, meta, helpers] = useField(props)\r\n\r\n const getError = () => {\r\n if(meta.touched && meta.error != null && meta.error !== \"\") {\r\n return meta.error;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n const handleTokenUpdate = (token: string) => {\r\n helpers.setValue(token);\r\n }\r\n\r\n return (\r\n <RequestMultiFactorToken\r\n getToken={handleTokenUpdate}\r\n errorMessage={getError()}\r\n showRequestNewToken={props.showRequestNewToken}\r\n requestMfaOnDisplay={props.requestMfaOnDisplay}\r\n visible={props.visible}\r\n />\r\n )\r\n}\r\n\r\nexport default RequestMultiFactorTokenFormik;\r\n","import Input from \"app/components/Input\";\r\nimport React, { useState } from \"react\";\r\nimport Form from \"app/components/Form\";\r\nimport {\r\n BankAccount,\r\n CurrentUserPartyBankAccountsDocument,\r\n useCreatePayAnyoneBankAccountMutation\r\n} from \"generated/generated-models\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik } from \"formik\";\r\nimport { Validate } from \"./AddPayAnyoneValidate\";\r\nimport Button from \"app/components/Button\";\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\n\r\nexport type AddPayAnyoneFormProps = {\r\n accountName: string;\r\n accountNumber: string;\r\n bsb: string;\r\n twoFactorToken?: string;\r\n}\r\n\r\ntype AddPayAnyoneProps = {\r\n goBack?: () => void;\r\n payAnyoneAdded?: (bankAccount: BankAccount) => void;\r\n}\r\n\r\ntype AddPayAnyonePage = \r\n | \"WithoutMFA\"\r\n | \"WithMFA\"\r\n\r\nconst AddPayAnyone = ({\r\n goBack = () => { },\r\n payAnyoneAdded = (_) => { } \r\n}: AddPayAnyoneProps) => {\r\n const [createPayAnyone, { data, error }] = useCreatePayAnyoneBankAccountMutation();\r\n const initialValues: AddPayAnyoneFormProps = {\r\n accountName: \"\",\r\n accountNumber: \"\",\r\n bsb: \"\",\r\n };\r\n const [addPayAnyonePage, setAddPayAnyonePage] = useState<AddPayAnyonePage>(\"WithoutMFA\");\r\n\r\n const handleRequiresMFA = () => {\r\n setAddPayAnyonePage(\"WithMFA\")\r\n };\r\n\r\n const handleSubmit = async (values: AddPayAnyoneFormProps) => {\r\n const result = await createPayAnyone(\r\n {\r\n variables: {\r\n input: {\r\n AccountName: values.accountName,\r\n AccountNumber: values.accountNumber,\r\n Bsb: values.bsb,\r\n TwoFactorToken: values.twoFactorToken\r\n }\r\n },\r\n refetchQueries: [{ query: CurrentUserPartyBankAccountsDocument }]\r\n }\r\n );\r\n if (result.data?.createPayAnyoneBankAccount?.NewPartyBankAccount?.BankAccount != null) {\r\n payAnyoneAdded(result.data?.createPayAnyoneBankAccount?.NewPartyBankAccount?.BankAccount);\r\n }\r\n\r\n if(result.data?.createPayAnyoneBankAccount?.Code === \"499\") {\r\n handleRequiresMFA();\r\n }\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={values => handleSubmit(values)}\r\n validationSchema={() => Validate(addPayAnyonePage === \"WithMFA\")}\r\n >\r\n {({ isSubmitting, values }) => {\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <h2>Add Pay Anyone Bank Account</h2>\r\n <Form>\r\n <Input\r\n name={nameof<AddPayAnyoneFormProps>(\"accountName\")}\r\n type=\"text\"\r\n label=\"Account Name\"\r\n />\r\n\r\n <Input\r\n name={nameof<AddPayAnyoneFormProps>(\"bsb\")}\r\n type=\"text\"\r\n label=\"BSB\"\r\n />\r\n\r\n <Input\r\n name={nameof<AddPayAnyoneFormProps>(\"accountNumber\")}\r\n type=\"text\"\r\n label=\"Account Number\"\r\n />\r\n\r\n {addPayAnyonePage === \"WithMFA\" &&\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<AddPayAnyoneFormProps>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n />\r\n }\r\n\r\n {data?.createPayAnyoneBankAccount?.Message != null &&\r\n <div className=\"alert alert-danger\">\r\n {data?.createPayAnyoneBankAccount.Message}\r\n </div>}\r\n\r\n {error != null &&\r\n <div className=\"alert alert-danger\">\r\n Error submitting create new pay anyone bank account request. Please try again\r\n </div>}\r\n\r\n <Button\r\n role=\"secondary\"\r\n onClick={goBack}\r\n disabled={isSubmitting}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n >\r\n Create Pay Anyone Account\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default AddPayAnyone;\r\n","import * as yup from \"yup\";\r\nimport { AddPayAnyoneFormProps } from \"./AddPayAnyone\";\r\nimport { getSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => {\r\n const schema: yup.ObjectSchema<AddPayAnyoneFormProps> = yup.object({\r\n accountName: yup\r\n .string()\r\n .label(\"Account name\")\r\n .max(1024)\r\n .required(),\r\n\r\n accountNumber: yup\r\n .string()\r\n .label(\"Account number\")\r\n .min(6)\r\n .max(9)\r\n .matches(/^[0-9]+$/, \"Account number should only contain numbers\")\r\n .required(),\r\n\r\n bsb: yup\r\n .string()\r\n .label(\"BSB\")\r\n .required()\r\n .matches(/^[0-9,-]+$/, \"BSB should only contain numbers\")\r\n .test(\"lengthCheck\", \"BSB must be 6 digits\", bsb => {\r\n if (bsb?.length === 6) {\r\n return true\r\n } else if (bsb?.length === 7 && bsb.indexOf(\"-\") !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }),\r\n\r\n twoFactorToken: getSecurityTokenValidator(requiresMfa),\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import { BankAccount, BpayBiller, Account } from \"generated/generated-models\";\r\nimport React, { ReactNode, useState } from \"react\"\r\n\r\nexport type Pages =\r\n | \"AccountSelect\"\r\n | \"Select\"\r\n | \"Create\"\r\n | \"Confirm\"\r\n | \"Receipt\"\r\n\r\nexport type TransferWizardContextProps = {\r\n currentPage: Pages;\r\n accountId: string;\r\n formState: any;\r\n fundsTransferId?: string;\r\n bpayBiller?: BpayBiller;\r\n bankAccount?: BankAccount;\r\n interAccount?: Account;\r\n updateform: (state: any) => void;\r\n updatePage: (page: Pages) => void;\r\n updateFundsTransfer: (id: string) => void;\r\n updateBpayBiller: (biller: BpayBiller) => void;\r\n updateInterAccount: (interAccount: Account) => void;\r\n updateBankAccount: (bankAccount?: BankAccount) => void;\r\n updateAccountId: (account: string) => void;\r\n}\r\n\r\nexport const TransferWizardContext = React.createContext<TransferWizardContextProps | undefined>(undefined);\r\n\r\ntype TransferWizardContextProviderProps = {\r\n accountId: string,\r\n useSelectionPage?: boolean,\r\n children?: ReactNode\r\n}\r\n\r\nexport const TransferWizardContextProvider: React.FC<TransferWizardContextProviderProps> = (props) => {\r\n const [formState, updateFormsState] = useState({});\r\n\r\n const initialPage = props.useSelectionPage ? \"Select\" : \"Create\";\r\n const [page, updatePage] = useState<Pages>(initialPage)\r\n const [fundsTransferId, updateFundsTransferId] = useState<string | undefined>(undefined);\r\n const [bpayBiller, updateBpayBiller] = useState<BpayBiller | undefined>(undefined);\r\n const [bankAccount, updateBankAccount] = useState<BankAccount | undefined>(undefined);\r\n const [interAccount, updateInterAccount] = useState<Account | undefined>(undefined);\r\n const [accountId, updateAccountId] = useState(props.accountId);\r\n\r\n const context: TransferWizardContextProps = {\r\n accountId: accountId,\r\n currentPage: page,\r\n formState: formState,\r\n fundsTransferId: fundsTransferId,\r\n bpayBiller: bpayBiller,\r\n bankAccount: bankAccount,\r\n interAccount: interAccount,\r\n updateform: formState => updateFormsState(() => formState),\r\n updatePage: pageState => updatePage(() => pageState),\r\n updateFundsTransfer: updateFundsTransferId,\r\n updateBpayBiller: biller => updateBpayBiller(() => biller),\r\n updateBankAccount: bankAccount => updateBankAccount(() => bankAccount),\r\n updateInterAccount: interAccount => updateInterAccount(() => interAccount),\r\n updateAccountId: accountId => updateAccountId(() => accountId),\r\n }\r\n\r\n return (\r\n <TransferWizardContext.Provider value={context}>\r\n {props.children}\r\n </TransferWizardContext.Provider>\r\n )\r\n}\r\n\r\nexport const useTransferWizardContext = () => {\r\n const context = React.useContext(TransferWizardContext)\r\n if (context == null) {\r\n throw new Error(\"This component must be used within a <TransferWizard> component.\")\r\n }\r\n return context\r\n}\r\n","import React from \"react\";\r\nimport { useTransferWizardContext } from \"./useTransferWizardContext\";\r\n\r\nconst Confirm: React.FC = (props) => {\r\n const context = useTransferWizardContext();\r\n\r\n if (context.currentPage === \"Confirm\") {\r\n return (\r\n <>\r\n {props.children}\r\n </>\r\n )\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default Confirm;\r\n","import React from \"react\";\r\nimport { useTransferWizardContext } from \"./useTransferWizardContext\";\r\n\r\nconst Create: React.FC = (props) => {\r\n const context = useTransferWizardContext();\r\n\r\n if (context.currentPage === \"Create\") {\r\n return (\r\n <>\r\n {props.children}\r\n </>\r\n )\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default Create;\r\n","import React from \"react\";\r\nimport { useTransferWizardContext } from \"./useTransferWizardContext\";\r\n\r\nconst Receipt: React.FC = (props) => {\r\n const context = useTransferWizardContext();\r\n\r\n if (context.currentPage === \"Receipt\") {\r\n return (\r\n <>\r\n {props.children}\r\n </>\r\n )\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default Receipt;\r\n","import { IsNullOrWhiteSpace } from \"core/util/stringExtensions\";\r\nimport { AccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport MoneyFormatted from \"../MoneyFormatted\";\r\n\r\n\r\ntype Props = {\r\n account: AccountFundsTransfersQuery[\"accountByIdOrNumber\"];\r\n title?: string;\r\n onClick: () => void;\r\n}\r\n\r\nconst FromAccountCard = ({ account, title, onClick }: Props) => {\r\n return (\r\n <div className=\"card-body payment-create-summary-account\" onClick={onClick}>\r\n <h5 className=\"card-title\">{title}</h5>\r\n <div className=\"payment-create-summary-account-details\">\r\n <div>{IsNullOrWhiteSpace(account?.Description) ? account?.ProductType : account?.Description}</div>\r\n <div className=\"payment-create-summary-account-details-number\">{account?.Number}</div>\r\n </div>\r\n <div className=\"payment-create-summary-account-details-available\">\r\n <div>Available</div>\r\n <strong>\r\n <MoneyFormatted amount={account?.Redraw} />\r\n </strong>\r\n </div>\r\n <div className=\"payment-create-summary-account-details-balance\">\r\n <div>Balance</div>\r\n <div>\r\n <MoneyFormatted amount={account?.CurrentBalance} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FromAccountCard;\r\n","import { Children } from \"react\";\r\n\r\nconst FundsTransferCardsContainer: React.FC = (props) => {\r\n if (Children.count(props.children) === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n <ul className=\"card payment-create-summary list-group list-group-flush\">\r\n {Children.map(props.children, child =>\r\n <li className=\"list-group-item\">\r\n {child}\r\n </li>\r\n )}\r\n </ul>\r\n );\r\n}\r\n\r\nexport default FundsTransferCardsContainer;\r\n","import { CError } from \"app/common/CError\";\r\nimport FromAccountCard from \"app/components/fundsTransferCards/FromAccountCard\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport { Account, useInstrumentByAccountIdQuery } from \"generated/generated-models\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { AuthorityType } from \"./TransferWizard/TransferWizardContainer\";\r\n\r\nconst AccountCard = ({ account }: { account: Account }) => {\r\n const { updateAccount } = useTransferWizard();\r\n\r\n return (\r\n <FromAccountCard account={account} onClick={() => updateAccount(account.Id)} />\r\n )\r\n}\r\n\r\nconst SelectAccount = ({ accountNumber, authorityType }: { accountNumber: string, authorityType: AuthorityType }) => {\r\n const { loading, error, data } = useInstrumentByAccountIdQuery({ variables: { account: accountNumber } });\r\n\r\n const accounts = makeNonEmpty(data?.instrumentByAccount?.Accounts)\r\n .filter(account => {\r\n switch(authorityType) {\r\n case \"bpay\":\r\n return account.CurrentUserAccountAuthority?.BPay ?? false;\r\n case \"operate\":\r\n return account.CurrentUserAccountAuthority?.Operate ?? false;\r\n case \"payAnyone\":\r\n return account.CurrentUserAccountAuthority?.PayAnyone ?? false;\r\n case \"redraw\":\r\n return account.CurrentUserAccountAuthority?.Redraw ?? false;\r\n default:\r\n return false;\r\n }\r\n });\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || accounts == null) {\r\n return <CError error=\"Could not load account details\" />\r\n }\r\n\r\n return (\r\n <div className=\"select-destination\">\r\n <Title title=\"Select an Account\" />\r\n <FundsTransferCardsContainer>\r\n {accounts.map(x =>\r\n <AccountCard account={x} key={x.Id} />\r\n )}\r\n </FundsTransferCardsContainer>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SelectAccount;\r\n","import SelectAccount from \"../SelectAccount\";\r\nimport { AuthorityType } from \"./TransferWizardContainer\";\r\nimport { useTransferWizardContext } from \"./useTransferWizardContext\";\r\n\r\nconst AccountSelect = ({authorityType}: {authorityType: AuthorityType}) => {\r\n const context = useTransferWizardContext();\r\n\r\n if (context.currentPage === \"AccountSelect\") {\r\n return (\r\n <SelectAccount accountNumber={context.accountId} authorityType={authorityType} />\r\n )\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default AccountSelect;\r\n","import React from \"react\";\r\nimport AccountSelect from \"./AccountSelect\";\r\nimport { TransferWizardContextProvider } from \"./useTransferWizardContext\";\r\n\r\nexport type AuthorityType =\r\n | \"operate\"\r\n | \"redraw\"\r\n | \"payAnyone\"\r\n | \"bpay\"\r\n\r\nexport type Props = {\r\n accountId: string;\r\n useSelectionPage?: boolean;\r\n authorityType: AuthorityType;\r\n}\r\n\r\nconst TransferWizard: React.FC<Props> = (props) => {\r\n return (\r\n <div className=\"sub-wrap form-wrap flex-fill d-flex\">\r\n <TransferWizardContextProvider\r\n accountId={props.accountId}\r\n useSelectionPage={props.useSelectionPage}\r\n >\r\n {props.children}\r\n <AccountSelect authorityType={props.authorityType} />\r\n </TransferWizardContextProvider>\r\n </div>\r\n )\r\n}\r\n\r\nexport default TransferWizard;\r\n","import { BankAccount, BpayBiller, Account, useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useTransferWizardContext } from \"./useTransferWizardContext\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\n\r\n\r\nexport function useTransferWizard<T>() {\r\n const context = useTransferWizardContext();\r\n const history = useHistory();\r\n\r\n const fundsTransferQuery = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: context.accountId }\r\n });\r\n\r\n return {\r\n formState: context.formState as Partial<T>,\r\n transferId: context.fundsTransferId,\r\n bpayBiller: context.bpayBiller,\r\n payAnyoneBankAccount: context.bankAccount,\r\n interAccountToAccount: context.interAccount,\r\n accountId: context.accountId,\r\n redrawAccount: context.bankAccount,\r\n paymentAccount: context.bankAccount,\r\n createTransfer: (formstate: any) => {\r\n context.updateform(formstate);\r\n context.updatePage(\"Confirm\");\r\n },\r\n confirmTransfer: (transferId: string) => {\r\n context.updateFundsTransfer(transferId);\r\n context.updatePage(\"Receipt\");\r\n },\r\n modifyTransfer: () => {\r\n context.updatePage(\"Create\");\r\n },\r\n gotoSelect: () => {\r\n context.updatePage(\"Select\");\r\n },\r\n changeAccount: () => {\r\n context.updatePage(\"AccountSelect\");\r\n },\r\n confirmBiller: (biller: BpayBiller) => {\r\n context.updateBpayBiller(biller);\r\n context.updatePage(\"Create\");\r\n },\r\n confirmPayAnyone: (account: BankAccount) => {\r\n context.updateBankAccount(account);\r\n context.updatePage(\"Create\");\r\n },\r\n confirmInterAccount: (account: Account) => {\r\n context.updateInterAccount(account);\r\n context.updatePage(\"Create\");\r\n },\r\n updateAccount: (accountId: string) => {\r\n context.updateAccountId(accountId);\r\n context.updatePage(\"Create\");\r\n\r\n fundsTransferQuery.refetch().then(({data}) => {\r\n const bankAccounts = makeNonEmpty(data.accountByIdOrNumber?.BankAccounts);\r\n\r\n if (bankAccounts.findIndex(x => x.Id === accountId) === -1) {\r\n context.updateBankAccount(undefined);\r\n }\r\n });\r\n },\r\n returnToHome: (accountNumber: string) => {\r\n history.push(`/Account/Index/${accountNumber}/Transfer`);\r\n },\r\n confirmPaymentAccount: (account: BankAccount) => {\r\n context.updateBankAccount(account);\r\n context.updatePage(\"Create\");\r\n },\r\n confirmRedrawAccount: (account: BankAccount) => {\r\n context.updateBankAccount(account);\r\n context.updatePage(\"Create\");\r\n }\r\n };\r\n};\r\n","import React from \"react\";\r\nimport Select from \"./Select\";\r\nimport Confirm from \"./Confirm\";\r\nimport Create from \"./Create\";\r\nimport Receipt from \"./Receipt\";\r\nimport TransferWizardContainer, { Props as TransferWizardProps } from \"./TransferWizardContainer\";\r\nexport { useTransferWizard } from \"./useTransferWizard\";\r\n\r\ntype TransferWizardComposition = {\r\n Select: React.FC;\r\n Create: React.FC;\r\n Confirm: React.FC;\r\n Receipt: React.FC;\r\n} & React.FC<TransferWizardProps>;\r\n\r\nconst TransferWizard: TransferWizardComposition = props =>\r\n <TransferWizardContainer {...props} />;\r\nTransferWizard.Select = Select;\r\nTransferWizard.Confirm = Confirm;\r\nTransferWizard.Create = Create;\r\nTransferWizard.Receipt = Receipt;\r\n\r\nexport default TransferWizard;\r\n","import React from \"react\";\r\nimport { useTransferWizardContext } from \"./useTransferWizardContext\";\r\n\r\nconst Select: React.FC = (props) => {\r\n const context = useTransferWizardContext();\r\n\r\n if (context.currentPage === \"Select\") {\r\n return (\r\n <>\r\n {props.children}\r\n </>\r\n )\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default Select;\r\n","import { faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Button from \"app/components/Button\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { groupBy } from \"core/util/array\";\r\nimport { BankAccount, useCurrentUserPartyBankAccountsQuery } from \"generated/generated-models\";\r\nimport React, { useState } from \"react\";\r\nimport { useHistory } from \"react-router\";\r\nimport AddPayAnyone from \"../managePayAnyoneAccounts/AddPayAnyone\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\n\r\ntype PayAnyoneCardProps = { letter: string, bankAccounts: BankAccount[] };\r\n\r\nconst PayAnyoneCard = ({ letter, bankAccounts }: PayAnyoneCardProps) => {\r\n const transferWizard = useTransferWizard();\r\n bankAccounts = bankAccounts.sort((a, b) => a.AccountName! > b.AccountName! ? 1 : -1)\r\n\r\n return (\r\n <div className=\"select-destination\">\r\n <div className=\"card-header\">\r\n {letter}\r\n </div>\r\n <ul className=\"list-group list-group-flush\"> \r\n {bankAccounts\r\n .map(bankAccount => {\r\n return (\r\n <li className=\"list-group-item\" key={bankAccount.Id} onClick={() => transferWizard.confirmPayAnyone(bankAccount)}>\r\n <div>{bankAccount.AccountName}</div>\r\n <div className=\"text-muted\">{bankAccount.BankIdentifierText} {bankAccount.AccountNumber}</div>\r\n <div className=\"text-muted\">{bankAccount.BankName}</div>\r\n </li>\r\n )\r\n })}\r\n </ul>\r\n </div>\r\n )\r\n}\r\n\r\nconst SelectPayAnyone = () => {\r\n const { loading, error, data } = useCurrentUserPartyBankAccountsQuery();\r\n const history = useHistory();\r\n const [createNewAccount, setCreateNewAccount] = useState(false);\r\n const transferWizard = useTransferWizard();\r\n\r\n const handleCreateNewAccountClick = () => {\r\n setCreateNewAccount(true);\r\n }\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.userSession?.Party?.PartyBankAccounts == null) {\r\n return <CError error=\"Could not load Pay Anyone details\" />\r\n }\r\n\r\n if (createNewAccount) {\r\n return <AddPayAnyone\r\n goBack={() => setCreateNewAccount(false)}\r\n payAnyoneAdded={payAnyone => transferWizard.confirmPayAnyone(payAnyone)}\r\n />\r\n }\r\n\r\n const bankAccounts = data?.userSession?.Party?.PartyBankAccounts\r\n .filter(partyBankAccount => partyBankAccount?.PayAnyone === true && partyBankAccount.Deleted === false)\r\n .map(partyBankAccount => partyBankAccount?.BankAccount)\r\n\r\n const payAnyoneAccounts = groupBy(bankAccounts,\r\n (bankAccount) => (bankAccount.AccountName || \"\").toUpperCase()[0],\r\n (firstKey, secondKey) => firstKey.localeCompare(secondKey))\r\n\r\n return (\r\n <div>\r\n <Title title=\"Select Pay Anyone\" />\r\n <div className=\"card\">\r\n <div className=\"select-destination select-new\">\r\n <div className=\"card-header\">\r\n New Bank Account\r\n </div>\r\n <ul className=\"list-group list-group-flush\">\r\n <li className=\"list-group-item\" onClick={handleCreateNewAccountClick}>\r\n <div>New Pay Anyone</div>\r\n <div><FontAwesomeIcon icon={faPlus} size=\"lg\" /></div>\r\n </li>\r\n </ul>\r\n </div>\r\n {payAnyoneAccounts.map(x =>\r\n <PayAnyoneCard bankAccounts={x.elements} letter={x.key} key={x.key} />\r\n )}\r\n </div>\r\n <br />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Go Back\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SelectPayAnyone;\r\n","import React from \"react\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nconst BankingCutoff = () => {\r\n return (\r\n <div className=\"alert alert-warning\">\r\n {clientConfigFn().bankingCutOffWarning}\r\n </div>\r\n )\r\n}\r\n\r\nexport default BankingCutoff;\r\n","import React from \"react\";\r\nimport ReactDatepicker from \"react-datepicker\";\r\nimport { useFormikContext, useField } from \"formik\";\r\nimport { getFieldId, useAddErrorClass } from \"./utilities\";\r\nimport FieldErrorMessage from \"./FieldErrorMessage\";\r\nimport classNames from \"classnames\";\r\n\r\ntype Props = {\r\n name: string;\r\n className?: string;\r\n label?: string;\r\n disabled?: boolean;\r\n maxDate?: Date;\r\n minDate: Date;\r\n}\r\n\r\nconst DatePicker = (props: Props) => {\r\n const { setFieldValue } = useFormikContext();\r\n const [field] = useField(props.name);\r\n const fieldId = getFieldId(props.name);\r\n\r\n let inputClassName = classNames([\"form-control\", classNames])\r\n inputClassName = useAddErrorClass(props.name, inputClassName)\r\n\r\n return (\r\n <div className=\"form-group \">\r\n <label htmlFor={fieldId}>{props.label}</label>\r\n <div className=\"input-group\">\r\n <ReactDatepicker\r\n selected={(field.value && new Date(field.value)) || null}\r\n onChange={val => {\r\n setFieldValue(field.name, val);\r\n }}\r\n id={fieldId}\r\n minDate={props.minDate}\r\n maxDate={props.maxDate}\r\n className={inputClassName}\r\n dateFormat=\"d MMM y\"\r\n disabled={props.disabled}\r\n />\r\n </div>\r\n <FieldErrorMessage errorName={props.name} />\r\n </div>\r\n )\r\n}\r\n\r\nexport default DatePicker;\r\n","import React from \"react\";\r\nimport FieldErrorMessage from \"../FieldErrorMessage\";\r\n\r\ntype ButtonGroupContextProps = {\r\n name: string;\r\n}\r\n\r\nexport const ButtonGroupContext = React.createContext<ButtonGroupContextProps | undefined>(undefined);\r\n\r\nexport type Props = {\r\n /** Field name */\r\n name: string;\r\n /** Label for the button group */\r\n label?: string;\r\n}\r\n\r\nconst ButtonGroup: React.FC<Props> = (props) => {\r\n const context = {\r\n name: props.name\r\n }\r\n\r\n return (\r\n <div className=\"form-group\">\r\n <label className=\"button-group-label\">{props.label}</label>\r\n <div className=\"btn-group btn-group-toggle\">\r\n <ButtonGroupContext.Provider value={context}>\r\n {props.children}\r\n </ButtonGroupContext.Provider>\r\n </div>\r\n <FieldErrorMessage errorName={props.name} />\r\n </div>\r\n )\r\n}\r\n\r\nexport default ButtonGroup;\r\n","import React from \"react\";\r\nimport ButtonGroup, { Props as ButtonGroupProps } from \"./ButtonGroup\";\r\nimport ButtonGroupItem, { Props as ButtonGroupItemProps } from \"./ButtonGroupItem\";\r\n\r\ntype ButtonGroupComposition = {\r\n Button: React.FC<ButtonGroupItemProps>;\r\n} & React.FC<ButtonGroupProps>;\r\n\r\nconst composition: ButtonGroupComposition = props =>\r\n <ButtonGroup {...props} />\r\n\r\ncomposition.Button = ButtonGroupItem;\r\n\r\nexport default composition;\r\n","import { useField } from \"formik\";\r\nimport React from \"react\";\r\nimport { useButtonGroup } from \"./useButtonGroup\";\r\nimport classnames from \"classnames\";\r\n\r\nexport type Props = {\r\n /** CSS class names */\r\n className?: string;\r\n /** toggle the field to disabled */\r\n disabled?: boolean;\r\n /** Value of the button */\r\n value: string;\r\n}\r\n\r\nconst ButtonGroupItem: React.FC<Props> = (props) => {\r\n const context = useButtonGroup();\r\n const [field] = useField(context.name);\r\n\r\n const fieldId = `${context.name}-${props.value}`;\r\n\r\n let className = classnames([\r\n \"btn button-group-btn-item\",\r\n {\"active\": field.value === props.value},\r\n props.className\r\n ]);\r\n\r\n return (\r\n <label className={className}>\r\n <input\r\n {...field}\r\n type=\"radio\"\r\n id={fieldId}\r\n autoComplete=\"off\"\r\n value={props.value}\r\n disabled={props.disabled}\r\n />\r\n {props.children}\r\n </label>\r\n )\r\n}\r\n\r\nexport default ButtonGroupItem;\r\n","import React from \"react\"\r\nimport { ButtonGroupContext } from \"./ButtonGroup\";\r\n\r\nexport const useButtonGroup = () => {\r\n const context = React.useContext(ButtonGroupContext)\r\n if (context == null) {\r\n throw new Error(\"This component must be used within a <ButtonGroup> component.\")\r\n }\r\n return context\r\n}\r\n","import React from \"react\";\r\nimport { RecurrenceEndEnum, TaskFrequencyPeriod } from \"generated/generated-models\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport Datepicker from \"app/components/DatePicker\";\r\nimport Input from \"app/components/Input\";\r\nimport ButtonGroup from \"app/components/ButtonGroup\";\r\n\r\n\r\nexport type TransferScheduleInputValues = {\r\n startingOn: Date;\r\n frequency: TaskFrequencyPeriod;\r\n recurrenceEnd: RecurrenceEndEnum;\r\n endingOn?: Date;\r\n numberOfTimesAmount?: number;\r\n}\r\n\r\ntype Config = {\r\n minStartingDate: Date;\r\n minUntilDate: Date;\r\n maxDate?: Date;\r\n}\r\n\r\ntype Props = {\r\n values: TransferScheduleInputValues\r\n config: Config\r\n}\r\n\r\nconst TransferUntilInput = ({ values, config }: Props) => {\r\n const showUntilInputBlock = values.frequency !== TaskFrequencyPeriod.Once;\r\n const numberOfTimesInputEnabled = values.recurrenceEnd === RecurrenceEndEnum.Numberofocurrences;\r\n const untilDateInputEnabled = values.recurrenceEnd === RecurrenceEndEnum.Bydate;\r\n\r\n if (!showUntilInputBlock) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"transfer-schedule-until\">\r\n <ButtonGroup\r\n label=\"Until\"\r\n name={nameof<typeof values>(\"recurrenceEnd\")}\r\n >\r\n <ButtonGroup.Button value={RecurrenceEndEnum.Never}>Forever</ButtonGroup.Button>\r\n <ButtonGroup.Button value={RecurrenceEndEnum.Bydate}>Date</ButtonGroup.Button>\r\n <ButtonGroup.Button value={RecurrenceEndEnum.Numberofocurrences}>No. of Payments</ButtonGroup.Button>\r\n </ButtonGroup>\r\n\r\n {untilDateInputEnabled &&\r\n <Datepicker\r\n name={nameof<typeof values>(\"endingOn\")}\r\n label=\"End Date\"\r\n minDate={config.minUntilDate}\r\n maxDate={config.maxDate}\r\n />\r\n }\r\n\r\n {numberOfTimesInputEnabled &&\r\n <Input\r\n name={nameof<typeof values>(\"numberOfTimesAmount\")}\r\n type=\"wholeNumber\"\r\n\r\n />\r\n }\r\n </div>\r\n );\r\n};\r\n\r\nconst defaultConfig = {\r\n minStartingDate: new Date(),\r\n minUntilDate: new Date(),\r\n maxDate: undefined,\r\n};\r\n\r\nconst TransferScheduleInput = ({ values, config }: Props) => {\r\n const mergedConfig = {\r\n ...defaultConfig,\r\n ...config,\r\n };\r\n const { minStartingDate, maxDate } = mergedConfig;\r\n return (\r\n <div className=\"transfer-schedule-container\">\r\n <Datepicker\r\n label=\"Starting On\"\r\n name={nameof<typeof values>(\"startingOn\")}\r\n minDate={minStartingDate}\r\n maxDate={maxDate}\r\n />\r\n\r\n <ButtonGroup\r\n name={nameof<typeof values>(\"frequency\")}\r\n label=\"Frequency\"\r\n >\r\n <ButtonGroup.Button value={TaskFrequencyPeriod.Once}>Once</ButtonGroup.Button>\r\n <ButtonGroup.Button value={TaskFrequencyPeriod.Weekly}>Weekly</ButtonGroup.Button>\r\n <ButtonGroup.Button value={TaskFrequencyPeriod.Fortnightly}>Fortnightly</ButtonGroup.Button>\r\n <ButtonGroup.Button value={TaskFrequencyPeriod.Monthly}>Monthly</ButtonGroup.Button>\r\n </ButtonGroup>\r\n\r\n <TransferUntilInput config={mergedConfig} values={values} />\r\n </div>\r\n );\r\n};\r\n\r\nexport default TransferScheduleInput;\r\n","import { IdGetter, defaultDataIdFromObject } from \"@apollo/client/cache\";\r\nimport { IsNullOrWhiteSpace } from \"../util/stringExtensions\";\r\nexport const dataIdFromObject: IdGetter = (result: any) => {\r\n let id = defaultDataIdFromObject(result);\r\n if (!IsNullOrWhiteSpace(id)) {\r\n return id;\r\n }\r\n if (result.Id !== undefined) {\r\n if (`${result.Id}`.startsWith(result.__typename)) {\r\n return result.Id; // already has typename\r\n }\r\n id = `${result.__typename}:${result.Id}`;\r\n return id;\r\n }\r\n return id;\r\n};\r\n","import gql from \"graphql-tag\";\r\nexport const ClientSchema = gql`\r\n\tinterface MutationResponse {\r\n\t\tCode: String!\r\n\t\tSuccess: Boolean!\r\n\t\tMessage: String\r\n\t}\r\n\r\n\ttype CurrentTheme {\r\n\t\ttheme: String!\r\n\t}\r\n\r\n\ttype LocalConfig {\r\n\t\tallowOnlinePasswordReset: Boolean!\r\n\t\tcurrentTheme: CurrentTheme\r\n\t}\r\n\r\n\ttype InterestConversionNotification {\r\n\t\tDismissed: Boolean\r\n\t}\r\n\r\n\ttype Query {\r\n\t\tlocalConfig: LocalConfig!\r\n\t}\r\n\r\n\ttype DismissNotificationResult implements MutationResponse {\r\n\t\tCode: String!\r\n\t\tSuccess: Boolean!\r\n\t\tMessage: String\r\n\t\tData: InterestConversionNotification\r\n\t}\r\n\r\n\ttype Mutation {\r\n\t\tdismissNotification(NotificationId: ID!): DismissNotificationResult\r\n\t}\r\n`;\r\nexport default ClientSchema;\r\n","import { updateNetworkStatus } from \"./resolvers/updateNetworkStatus\";\r\nimport { Resolvers as ApolloResolvers, DataProxy } from \"@apollo/client\";\r\nimport {\r\n Query,\r\n Mutation,\r\n InterestConversionNotification,\r\n Maybe,\r\n} from \"generated/generated-models\";\r\nimport { dismissNotificationMutation } from \"./mutations/dismissNotification\";\r\nimport log from \"../log\";\r\n\r\n// import { Query } from \"generated/generated-models\";\r\nexport const ResultCode = {\r\n success: \"200\",\r\n badInput: \"400\",\r\n exception: \"500\",\r\n};\r\n\r\nexport type LocalStateResolver<\r\n Result = any,\r\n Args = any,\r\n Context = { cache: DataProxy; [key: string]: any },\r\n RootValue = any,\r\n Info = any\r\n> = (rootValue: RootValue, args: Args, context: Context, info?: Info) => Result;\r\n\r\ninterface RootResolver {\r\n Query: { [key in keyof Query]?: LocalStateResolver<Query[key]> } | Resolvers;\r\n Mutation:\r\n | { [key in keyof Mutation]?: LocalStateResolver<Mutation[key]> }\r\n | Resolvers;\r\n}\r\n\r\ninterface Resolvers {\r\n [key: string]: Resolvers | LocalStateResolver;\r\n}\r\n\r\nexport const resolvers: RootResolver & Resolvers & ApolloResolvers = {\r\n Query: {},\r\n Mutation: {\r\n updateNetworkStatus,\r\n dismissNotification: dismissNotificationMutation,\r\n },\r\n InterestConversionNotification: {\r\n Dismissed: (\r\n root: Maybe<InterestConversionNotification>,\r\n _args,\r\n _context\r\n ) => {\r\n log.info(`Dismissed: `, {\r\n root,\r\n _args,\r\n dismissed: root && root.Dismissed,\r\n });\r\n return root && root.Dismissed !== undefined && root.Dismissed;\r\n },\r\n },\r\n};\r\n","import { DataProxy } from \"@apollo/client\";\r\nimport { log } from \"core/log\";\r\nimport { LocalStateResolver } from \"../resolvers\";\r\n\r\ninterface NetworkStatus {\r\n isConnected: boolean;\r\n}\r\nexport const updateNetworkStatus: LocalStateResolver<\r\n NetworkStatus,\r\n NetworkStatus\r\n> = (_: any, args, { cache }: { cache: DataProxy }) => {\r\n if (undefined === args) {\r\n return { isConnected: false };\r\n }\r\n\r\n const { isConnected } = args;\r\n log.info(`updateNetworkStatus ${isConnected ? \"True\" : \"False\"}`);\r\n //cache.writeData({ data: { isConnected } });\r\n return { isConnected };\r\n};\r\n","import {\r\n DismissNotificationResult,\r\n DismissNotificationMutationVariables,\r\n InterestConversionNotification,\r\n Maybe,\r\n} from \"generated/generated-models\";\r\nimport log from \"core/log\";\r\nimport { dataIdFromObject } from \"core/apollo/dataIdFromObject\";\r\nimport gql from \"graphql-tag\";\r\nimport { LocalStateResolver, ResultCode } from \"../resolvers\";\r\nimport { IsNullOrWhiteSpace } from \"core/util/stringExtensions\";\r\nimport {\r\n SelectionSetNode,\r\n FragmentDefinitionNode,\r\n FieldNode,\r\n DocumentNode,\r\n} from \"graphql\";\r\n\r\nexport const dismissNotificationMutation: LocalStateResolver<\r\n DismissNotificationResult,\r\n DismissNotificationMutationVariables\r\n> = (root, args, _context, info) => {\r\n //\r\n if (args === undefined || IsNullOrWhiteSpace(args.notificationId)) {\r\n const message = \"Missing NotificationId\";\r\n log.warn(\"Can't hide notification: \" + message);\r\n // return { Code: ResultCode.badInput, Success: false, Message: message };\r\n }\r\n log.info(`Hiding notification`, { args, root });\r\n const { cache } = _context;\r\n const id = `${dataIdFromObject({\r\n id: args.notificationId,\r\n __typename: \"InterestConversionNotification\",\r\n })}`;\r\n\r\n const fragment = gql`\r\n fragment writeHiddenNotification on InterestConversionNotification {\r\n __typename\r\n Id\r\n Dismissed @client\r\n ConversionType\r\n }\r\n `;\r\n mergeFieldSelections(info, fragment);\r\n\r\n const cnotif = cache.readFragment<Partial<InterestConversionNotification>>({\r\n fragment: fragment,\r\n id,\r\n });\r\n const data: Partial<InterestConversionNotification> = {\r\n ...cnotif,\r\n Dismissed: true,\r\n };\r\n cache.writeFragment({ fragment: fragment, id, data });\r\n\r\n const result = {\r\n __typename: \"DismissNotificationResult\",\r\n Code: ResultCode.success,\r\n Success: true,\r\n Message: \"Dismissed\",\r\n Data: (data && data.ConversionType ? data : undefined) as Maybe<\r\n InterestConversionNotification\r\n >,\r\n } as DismissNotificationResult;\r\n return result;\r\n};\r\n\r\nfunction mergeFieldSelections(\r\n info: { field: FieldNode },\r\n fragment: DocumentNode\r\n) {\r\n if (info && info.field && info.field.selectionSet) {\r\n const infoSelections = info.field.selectionSet as SelectionSetNode;\r\n const notificationSelections = infoSelections.selections.find(\r\n x => x.kind === \"Field\" && x.name.value === \"Data\"\r\n ) as FieldNode;\r\n const t =\r\n fragment &&\r\n fragment.definitions &&\r\n (fragment.definitions[0] as FragmentDefinitionNode);\r\n const fragSelections = t && t.selectionSet && t.selectionSet;\r\n\r\n if (\r\n notificationSelections &&\r\n notificationSelections.selectionSet &&\r\n fragSelections.selections\r\n ) {\r\n log.trace(\"joining selections\");\r\n fragSelections.selections = notificationSelections.selectionSet.selections.concat(\r\n fragSelections.selections\r\n );\r\n }\r\n }\r\n}\r\n","import {\r\n ApolloClient,\r\n InMemoryCache,\r\n ApolloLink,\r\n HttpOptions\r\n} from \"@apollo/client\";\r\nimport { joinPaths } from \"urijs\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { errorHandler } from \"./errorHandler\";\r\nimport { dataIdFromObject } from \"./dataIdFromObject\";\r\nimport { ClientSchema } from \"schema/clientSchema\";\r\nimport { resolvers } from \"../localState/resolvers\";\r\nimport { createUploadLink } from \"apollo-upload-client\";\r\nimport { onError } from \"@apollo/client/link/error\";\r\n\r\n/// Where static content is served from\r\nconst BaseUri = clientConfigFn().baseuri;\r\n\r\n// graphQl uri\r\nconst BaseApiUri = joinPaths(BaseUri, \"/graphql\").href();\r\n\r\nexport const LoginUri = joinPaths(BaseUri, \"/security/login\").href();\r\nexport const SecurityUri = joinPaths(BaseUri, \"/security\").href();\r\n\r\nfunction httpLinkOptions(): HttpOptions {\r\n return {\r\n credentials: \"same-origin\",\r\n uri: BaseApiUri,\r\n headers: {\r\n \"X-Interfi-Authorisation\": \"YWJjLWRlZi1naGktMzMzLTMzMy0zMzM=\",\r\n },\r\n };\r\n}\r\n\r\nconst apolloCache = new InMemoryCache({\r\n // cacheRedirects: CacheRedirects,\r\n dataIdFromObject,\r\n addTypename: true,\r\n});\r\n\r\nconst client = new ApolloClient({\r\n cache: apolloCache,\r\n link: ApolloLink.from([\r\n onError(errorHandler),\r\n // Old types so we just cast it around until everything is happy\r\n (createUploadLink(httpLinkOptions()) as unknown) as ApolloLink,\r\n ]),\r\n resolvers,\r\n typeDefs: ClientSchema,\r\n});\r\n\r\nexport { client };\r\n","import { ErrorLink } from \"@apollo/client/link/error\";\r\nimport { log } from \"../log\";\r\nimport { equal as uriEqual } from \"uri-js\";\r\nimport {\r\n LoginUri,\r\n SecurityUri,\r\n client,\r\n} from \"./client\";\r\nimport { ServerError, ServerParseError } from \"@apollo/client\";\r\n\r\nconst authFailed = (error: Error | ServerError | ServerParseError) => {\r\n if ((\"statusCode\" in error) && (error.statusCode === 401 || error.statusCode === 403)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst onLoginPage = () => {\r\n if (uriEqual(window.location.pathname, LoginUri, { tolerant: true })) {\r\n return true;\r\n }\r\n if (window.location.pathname.includes(SecurityUri)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport const errorHandler: ErrorLink.ErrorHandler = ({\r\n graphQLErrors,\r\n networkError\r\n}) => {\r\n if (graphQLErrors) {\r\n graphQLErrors.map(({ message, locations, path }) =>\r\n log.error(\r\n `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`\r\n )\r\n );\r\n }\r\n if (networkError) {\r\n log.error(`[Network error]: ${networkError.message}`);\r\n\r\n if (authFailed(networkError) && !onLoginPage()) {\r\n\r\n log.warn(\"Logging out and redirect to login\");\r\n client\r\n .clearStore()\r\n .then(() => (window.location.href = LoginUri))\r\n .catch(() => (window.location.href = LoginUri));\r\n }\r\n }\r\n};\r\n","import { clientConfigFn } from \"clientConfig\";\r\nimport { client } from \"core/apollo/client\";\r\nimport { getCurrencySymbol } from \"core/util/currencySymbol\";\r\nimport { isSameDay } from \"date-fns\";\r\nimport { TaskFrequencyPeriod, RecurrenceEndEnum, TransferLimitValidationDocument, TransferLimitValidationQuery, TransferLimitValidationQueryVariables } from \"generated/generated-models\";\r\nimport * as yup from \"yup\";\r\n\r\nexport const validateTransferDescription = (label: string) => {\r\n const config = clientConfigFn();\r\n\r\n let transferDescription = yup\r\n .string()\r\n .max(64)\r\n .label(label) \r\n .test(\r\n 'Must have basic latin characters only',\r\n 'You must only enter basic latin characters',\r\n function(transferDescription) {\r\n const mystring: string = String(transferDescription);\r\n var containsNonPrintable : boolean = false;\r\n\r\n for (let step = 0; step < mystring.length; step++) {\r\n var ascii = mystring.charCodeAt(step);\r\n if(ascii < 32 || ascii > 127)\r\n {\r\n containsNonPrintable = true;\r\n }\r\n }\r\n return (!containsNonPrintable);\r\n }\r\n ) \r\n\r\n\r\n if (config.fundsTransferDescriptionRequired) {\r\n transferDescription = transferDescription.required()\r\n }\r\n\r\n return transferDescription;\r\n}\r\n\r\ntype LimitType =\r\n | \"redraw\"\r\n | \"payAnyone\"\r\n\r\nexport const validateLimit = (accountId: string, limitType: LimitType) => {\r\n const friendlyText = limitType === \"redraw\" ? \"redraw\" : \"pay anyone limit\"\r\n\r\n return {\r\n amount: yup\r\n .number()\r\n .required()\r\n .moreThan(0)\r\n .label(\"Amount\")\r\n .test(limitType, `Amount is greater then the available ${friendlyText}`, async function (amount) {\r\n const startingOn = this.parent.startingOn;\r\n const scheduledForToday = isSameDay(new Date(), startingOn);\r\n\r\n if (amount == null) {\r\n return false;\r\n }\r\n\r\n const variables: TransferLimitValidationQueryVariables = {\r\n accountId: accountId,\r\n date: startingOn\r\n };\r\n\r\n const result = await client.query<TransferLimitValidationQuery>({\r\n query: TransferLimitValidationDocument,\r\n variables: variables\r\n });\r\n\r\n if (scheduledForToday) {\r\n const currentRedraw = result.data?.accountByIdOrNumber?.Redraw ?? 0;\r\n\r\n if (currentRedraw < amount) {\r\n return this.createError({ message: `Amount is greater then the available ${friendlyText} of ${getCurrencySymbol()}${currentRedraw}` });\r\n }\r\n }\r\n \r\n const accountLimit = result.data?.accountLimits\r\n ?.find(x => isSameDay(new Date(x?.EffectiveDate || 0), startingOn))\r\n ?.Limits\r\n\r\n let limit = 0;\r\n\r\n if (limitType === \"redraw\") {\r\n limit = accountLimit?.RemainingDailyRedrawLimit?.Amount ?? 0;\r\n } else {\r\n limit = accountLimit?.RemainingDailyPayAnyoneLimit?.Amount ?? 0;\r\n }\r\n\r\n if (amount == null) {\r\n return false;\r\n }\r\n\r\n if (limit >= amount) {\r\n return true;\r\n } else {\r\n return this.createError({ message: `Amount is greater then the available ${friendlyText} of ${getCurrencySymbol()}${limit}` });\r\n }\r\n }),\r\n }\r\n}\r\n\r\nexport const validateSchedule = () => {\r\n return {\r\n frequency: yup\r\n .mixed<TaskFrequencyPeriod>()\r\n .required()\r\n .label(\"Frequency\"),\r\n\r\n recurrenceEnd: yup\r\n .mixed<RecurrenceEndEnum>()\r\n .required()\r\n .label(\"Recurrence\"),\r\n\r\n endingOn: yup\r\n .date()\r\n .when([\"recurrenceEnd\", \"frequency\", \"startingOn\"], (recurrenceEnd: RecurrenceEndEnum, frequency: TaskFrequencyPeriod, startingOn: Date, schema: yup.DateSchema) => {\r\n if (recurrenceEnd === RecurrenceEndEnum.Bydate && frequency !== TaskFrequencyPeriod.Once) {\r\n return schema\r\n .required()\r\n .min(startingOn, \"\");\r\n }\r\n return schema;\r\n })\r\n .label(\"Ending Date\"),\r\n\r\n numberOfTimesAmount: yup\r\n .number()\r\n .when([\"recurrenceEnd\", \"frequency\"], (recurrenceEnd: RecurrenceEndEnum, frequency: TaskFrequencyPeriod, schema: yup.NumberSchema) => {\r\n if (recurrenceEnd === RecurrenceEndEnum.Numberofocurrences && frequency !== TaskFrequencyPeriod.Once) {\r\n return schema\r\n .required()\r\n .integer()\r\n .moreThan(1)\r\n }\r\n return schema;\r\n })\r\n .label(\"No. of Payments\"),\r\n }\r\n}\r\n","import { clientConfigFn } from \"clientConfig\";\r\n\r\ntype Props = {\r\n date: Date\r\n}\r\n\r\nconst FutureDatedWarningText = ({ date }: Props) => {\r\n\r\n if (date > new Date() && clientConfigFn().futureDatedTransferWarning.trim() !== \"\") {\r\n return (\r\n <div className=\"alert alert-warning\">\r\n {clientConfigFn().futureDatedTransferWarning}\r\n </div>\r\n )\r\n }\r\n else{\r\n return (null);\r\n }\r\n}\r\n\r\nexport default FutureDatedWarningText;","import classNames from \"classnames\";\r\n\r\ntype Props = {\r\n title?: string;\r\n name?: React.ReactNode;\r\n details?: React.ReactNode;\r\n onClick?: () => void;\r\n className?: string;\r\n}\r\n\r\nconst PaymentCard = (props: Props) => {\r\n const classes = classNames([\"card-body\", props.className, {\"selectable-card\": props.onClick != null}])\r\n return (\r\n <div className={classes} onClick={props.onClick}>\r\n <h5 className=\"card-title\">{props.title}</h5>\r\n <div>\r\n <div>{props.name}</div>\r\n <div className=\"text-muted\">{props.details}</div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default PaymentCard;\r\n","type Props = {\r\n message: string;\r\n visible?: boolean;\r\n}\r\n\r\n/** Use for displaying errors when submitting a form, etc */\r\nconst Alert = ({ message, visible = true }: Props) => {\r\n if (!visible) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"alert alert-danger inline-alert\">\r\n {message}\r\n </div>\r\n )\r\n}\r\n\r\nexport default Alert;\r\n","import BankingCutOff from \"app/components/BankingCutoff\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Form from \"app/components/Form\";\r\nimport Input from \"app/components/Input\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik, useFormikContext } from \"formik\";\r\nimport {\r\n RecurrenceEndEnum,\r\n TaskFrequencyPeriod,\r\n useAccountFundsTransfersQuery\r\n} from \"generated/generated-models\";\r\nimport TransferScheduleInput, { TransferScheduleInputValues } from \"../utilities/TransferScheduleInput\";\r\nimport { Validate } from \"./CreatePayAnyoneValidate\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport Title from \"app/components/Title\";\r\nimport Button from \"app/components/Button\";\r\nimport FutureDatedWarningText from \"app/components/FutureDatedWarningText\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\nimport FromAccountCard from \"app/components/fundsTransferCards/FromAccountCard\";\r\nimport PaymentCard from \"app/components/PaymentCard/PaymentCard\";\r\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Alert from \"app/components/Alert\";\r\n\r\nexport type PayAnyoneFormProps = {\r\n transferReference?: string;\r\n transferDescription?: string;\r\n amount?: number;\r\n} & TransferScheduleInputValues\r\n\r\ntype Props = {\r\n accountId: string;\r\n}\r\n\r\nconst CreatePayAnyone = (props: Props) => {\r\n const { changeAccount, payAnyoneBankAccount, returnToHome , gotoSelect } = useTransferWizard();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: props.accountId }\r\n });\r\n const { values, isSubmitting } = useFormikContext<PayAnyoneFormProps>();\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.accountByIdOrNumber == null) {\r\n return <CError error=\"Could not load pay anyone details\" />\r\n }\r\n\r\n return (\r\n <div className=\"payanyone-create-page\">\r\n <Title\r\n title=\"Pay Anyone\"\r\n />\r\n\r\n <FundsTransferCardsContainer>\r\n <FromAccountCard account={data.accountByIdOrNumber} title=\"From\" onClick={changeAccount} />\r\n {payAnyoneBankAccount == null ?\r\n <PaymentCard\r\n onClick={gotoSelect}\r\n title=\"To\"\r\n name={<div><FontAwesomeIcon icon={faExclamationTriangle} /> Please select a pay anyone account</div>}\r\n details=\"Click here to select a pay anyone account\"\r\n className=\"payment-create-summary-account-warning\"\r\n /> :\r\n <PaymentCard\r\n title=\"To\"\r\n name={payAnyoneBankAccount?.AccountName}\r\n details={`${payAnyoneBankAccount?.BankIdentifierText} ${payAnyoneBankAccount?.AccountNumber} (${payAnyoneBankAccount?.BankName})`}\r\n onClick={gotoSelect}\r\n />\r\n }\r\n </FundsTransferCardsContainer>\r\n\r\n <Form>\r\n <Input\r\n name={nameof<PayAnyoneFormProps>(\"transferDescription\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're redrawing money from\"\r\n label=\"Description\"\r\n />\r\n\r\n <Input\r\n name={nameof<PayAnyoneFormProps>(\"transferReference\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're depositing money into\"\r\n label=\"Reference\"\r\n />\r\n\r\n <Input\r\n name={nameof<PayAnyoneFormProps>(\"amount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n\r\n <TransferScheduleInput\r\n values={values}\r\n config={{\r\n minStartingDate: new Date(),\r\n minUntilDate: new Date(values.startingOn),\r\n }}\r\n />\r\n\r\n <FutureDatedWarningText date={values.startingOn} />\r\n\r\n <BankingCutOff />\r\n\r\n <Alert message=\"Please select a pay anyone account\" visible={payAnyoneBankAccount == null} />\r\n \r\n <Button\r\n role=\"secondary\"\r\n disabled={isSubmitting}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n disabled={payAnyoneBankAccount == null}\r\n >\r\n Pay Someone\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n}\r\n\r\nconst CreatePayAnyoneForm = () => {\r\n const wizard = useTransferWizard<PayAnyoneFormProps>();\r\n\r\n const initialValues: PayAnyoneFormProps = {\r\n amount: undefined,\r\n transferDescription: \"\",\r\n endingOn: undefined,\r\n startingOn: new Date(),\r\n frequency: TaskFrequencyPeriod.Once,\r\n recurrenceEnd: RecurrenceEndEnum.Never,\r\n numberOfTimesAmount: undefined,\r\n transferReference: \"\",\r\n\r\n ...wizard.formState\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => wizard.createTransfer(values)}\r\n validationSchema={Validate(wizard.accountId)}\r\n >\r\n <CreatePayAnyone accountId={wizard.accountId} />\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default CreatePayAnyoneForm;\r\n","import * as yup from \"yup\";\r\nimport { PayAnyoneFormProps } from \"./CreatePayAnyone\";\r\nimport { validateLimit, validateSchedule, validateTransferDescription } from \"../utilities/validation\";\r\n\r\nexport const Validate = (accountId: string) => {\r\n const schema: yup.ObjectSchema<PayAnyoneFormProps> = yup.object({\r\n transferDescription: validateTransferDescription(\"Description\"),\r\n transferReference: validateTransferDescription(\"Reference\"),\r\n\r\n startingOn: yup\r\n .date()\r\n .required(),\r\n\r\n ...validateLimit(accountId, \"payAnyone\"),\r\n ...validateSchedule()\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import React from \"react\";\r\n\r\nconst ListGroup:React.FC = ({children}) => (\r\n <ul className=\"list-group list-group-confirm\">\r\n {children}\r\n </ul>\r\n)\r\n\r\nexport default ListGroup\r\n","import React from \"react\";\r\nimport {\r\n faAddressBook,\r\n faCalendarAlt,\r\n faCommentAlt,\r\n faHashtag,\r\n faPen,\r\n faReceipt,\r\n faRedoAlt,\r\n faTimes,\r\n faUniversity\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\ntype Icon =\r\n | \"BSB\"\r\n | \"AccountNumber\"\r\n | \"Description\"\r\n | \"Reference\"\r\n | \"Date\"\r\n | \"Reoccuring\"\r\n | \"Ending\"\r\n | \"Receipt\"\r\n | \"CRN\"\r\n\r\ntype Props = {\r\n iconType: Icon;\r\n keyText: string;\r\n descriptionText?: string;\r\n}\r\n\r\nconst ListGroupItem = (props: Props) => {\r\n const iconToUse = () => {\r\n switch(props.iconType) {\r\n case \"BSB\":\r\n return faUniversity;\r\n case \"AccountNumber\":\r\n return faHashtag;\r\n case \"Description\":\r\n return faCommentAlt;\r\n case \"Reference\":\r\n return faPen;\r\n case \"Date\":\r\n return faCalendarAlt;\r\n case \"Reoccuring\":\r\n return faRedoAlt;\r\n case \"Ending\":\r\n return faTimes;\r\n case \"Receipt\":\r\n return faReceipt;\r\n case \"CRN\":\r\n return faAddressBook;\r\n }\r\n }\r\n\r\n return (\r\n <li className=\"list-group-item confirm-item\">\r\n <span className=\"list-group-item-key\">\r\n <FontAwesomeIcon icon={iconToUse()} fixedWidth={true} size=\"lg\" className=\"icon-confirm\" />\r\n {props.keyText}\r\n </span>\r\n {props.descriptionText != null &&\r\n <span className=\"list-group-item-value\">{props.descriptionText}</span>\r\n }\r\n </li>\r\n )\r\n}\r\n\r\nexport default ListGroupItem\r\n","import { TaskFrequencyPeriod, RecurrenceEndEnum } from \"generated/generated-models\";\r\nimport { format } from \"date-fns\";\r\nimport React from \"react\";\r\nimport ListGroupItem from \"./ListGroupItem\";\r\n\r\ntype DueOnListItemsProps = {\r\n paymentDate?: Date;\r\n endDate?: Date;\r\n repeats?: number;\r\n recurrence: string;\r\n frequency?: string;\r\n}\r\n\r\n/**Displays when a transaction starts and how often it will repeat in a list group */\r\nconst DueOnListItems = (props: DueOnListItemsProps) => {\r\n const recurring = props.frequency?.toLowerCase() !== TaskFrequencyPeriod.Once.toLowerCase();\r\n\r\n // Hack because dates are actually strings\r\n const formatDate = (date: Date) => format(new Date(date), 'd MMM yyyy')\r\n\r\n const repeatText = () => {\r\n if (props.frequency?.toLowerCase() === TaskFrequencyPeriod.Weekly.toLowerCase()) {\r\n return \"Repeats Weekly\";\r\n } else if (props.frequency?.toLowerCase() === TaskFrequencyPeriod.Fortnightly.toLowerCase()) {\r\n return \"Repeats Fortnightly\";\r\n } else if (props.frequency?.toLowerCase() === TaskFrequencyPeriod.Monthly.toLowerCase()) {\r\n return \"Repeats Monthly\";\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n const untilText = () => {\r\n if (props.recurrence.toLowerCase() === RecurrenceEndEnum.Bydate.toLowerCase()) {\r\n return `Ends on ${formatDate(props.endDate!)}`;\r\n } else if (props.recurrence.toLowerCase() === RecurrenceEndEnum.Numberofocurrences.toLowerCase()) {\r\n return `Ends after ${props.repeats} payments`;\r\n } else if (props.recurrence.toLowerCase() === RecurrenceEndEnum.Never.toLowerCase()) {\r\n return \"Continues Forever\"\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n \r\n return (\r\n <>\r\n {props.paymentDate != null &&\r\n <ListGroupItem\r\n iconType=\"Date\"\r\n keyText=\"Payment Date\"\r\n descriptionText={formatDate(props.paymentDate)}\r\n />\r\n }\r\n\r\n {recurring &&\r\n <ListGroupItem\r\n iconType=\"Reoccuring\"\r\n keyText={repeatText()}\r\n />\r\n }\r\n {recurring &&\r\n <ListGroupItem\r\n iconType=\"Ending\"\r\n keyText={untilText()}\r\n />\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default DueOnListItems;\r\n","import MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport React from \"react\";\r\n\r\nconst ListGroupHeader = (props: { accountNumber: string; amount: number }) => {\r\n return (\r\n <li className=\"list-group-item confirm-item-header\">\r\n <span className=\"list-group-item-key\">{props.accountNumber}</span>\r\n <span className=\"list-group-item-value\"><MoneyFormatted amount={props.amount} /></span>\r\n </li>\r\n )\r\n}\r\n\r\nexport default ListGroupHeader;\r\n","export function addTimeZoneOffset(date: Date): Date {\r\n const offsetMins = -1 * date.getTimezoneOffset();\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, Math.max(0,offsetMins));\r\n}\r\n","import { addTimeZoneOffset } from \"core/util/dateExtensions\";\r\nimport { RecurrenceEndEnum, RequestPayAnyoneTransferInput, TaskFrequencyPeriod } from \"generated/generated-models\";\r\nimport { TransferScheduleInputValues } from \"./TransferScheduleInput\";\r\n\r\nexport const transferTypes = {\r\n DirectDebitTransferTypeId: \"4506315D-27A5-480F-AFED-9F91008C46D0\",\r\n RepaymentTransferTypeId: \"4506315D-27A5-480F-AFED-9F91008C46D0\",\r\n DirectCreditTransferTypeId: \"18D26CAD-F9B5-4870-BB8A-9F91008B6AA4\",\r\n PayAnyoneTransferTypeId: \"18D26CAD-F9B5-4870-BB8A-9F91008B6AA4\",\r\n RedrawTransferTypeId: \"18D26CAD-F9B5-4870-BB8A-9F91008B6AA4\",\r\n BpayTransferTypeId: \"0299344C-B7A3-4E2B-A812-B069A3A29DC6\",\r\n InterAccountTransferTypeId: \"7474C57E-BC94-4DCC-8740-9F91008ECBE4\"\r\n}\r\n\r\nexport const createTransferTimes = (recurrence: Partial<TransferScheduleInputValues>) => {\r\n const getFrequency = () => {\r\n if (recurrence.recurrenceEnd === RecurrenceEndEnum.Once) {\r\n return TaskFrequencyPeriod.Once;\r\n } else {\r\n return recurrence.frequency || TaskFrequencyPeriod.Once;\r\n }\r\n }\r\n\r\n const getNumberOfTimes = () => {\r\n if (recurrence.recurrenceEnd === RecurrenceEndEnum.Numberofocurrences) {\r\n return recurrence.numberOfTimesAmount;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n const getEndDate = () => {\r\n if (recurrence.recurrenceEnd === RecurrenceEndEnum.Bydate) {\r\n return addTimeZoneOffset(recurrence.endingOn!);\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n return {\r\n StartingOn: addTimeZoneOffset(recurrence.startingOn || new Date()),\r\n Frequency: getFrequency(),\r\n RecurrenceEnd: recurrence.recurrenceEnd,\r\n NumberOfTimesAmount: getNumberOfTimes(),\r\n EndingOn: getEndDate()\r\n }\r\n}\r\n\r\n/** Create a base transfer object */\r\nexport const createTransferVariable = (\r\n accountId: string,\r\n amount: number,\r\n withdrawalDescription: string,\r\n depositDescription: string,\r\n recurrence: Partial<TransferScheduleInputValues>\r\n) => {\r\n const times = createTransferTimes(recurrence);\r\n\r\n const input: RequestPayAnyoneTransferInput = {\r\n TransferType: \"00000000-0000-0000-0000-000000000000\",\r\n StartingOn: times.StartingOn,\r\n Frequency: times.Frequency,\r\n RecurrenceEnd: times.RecurrenceEnd,\r\n NumberOfTimesAmount: times.NumberOfTimesAmount,\r\n FixedAmountOption: true,\r\n Amount: amount,\r\n BankAccountId: \"00000000-0000-0000-0000-000000000000\",\r\n ToAccountId: \"00000000-0000-0000-0000-000000000000\",\r\n WithdrawalDescription: withdrawalDescription,\r\n DepositDescription: depositDescription,\r\n AccountId: accountId,\r\n FromAccountId: \"00000000-0000-0000-0000-000000000000\",\r\n EndingOn: times.EndingOn\r\n }\r\n\r\n return input;\r\n}\r\n","import { Redirect } from \"react-router\";\r\nimport { PayAnyoneFormProps } from \"./CreatePayAnyone\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport DueOnListItems from \"../utilities/list/DueOnListItems\";\r\nimport {\r\n useAccountFundsTransfersQuery,\r\n useRequestPayAnyoneTransferMutation\r\n} from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport Title from \"app/components/Title\";\r\nimport { createTransferVariable, transferTypes } from \"../utilities/fundsTransfers\";\r\nimport Button from \"app/components/Button\";\r\nimport Alert from \"app/components/Alert\";\r\n\r\nconst ConfirmPayAnyone = () => {\r\n const { accountId } = useTransferWizard();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId }\r\n });\r\n const [requestPayment, paymentData] = useRequestPayAnyoneTransferMutation();\r\n const { payAnyoneBankAccount, formState, modifyTransfer, confirmTransfer } = useTransferWizard<PayAnyoneFormProps>();\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\r\n }\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (data?.accountByIdOrNumber == null || error) {\r\n return <CError error=\"Could not load account details\" />\r\n }\r\n\r\n const sendPaymentRequest = () => {\r\n const input = createTransferVariable(\r\n accountId,\r\n formState.amount || 0,\r\n formState.transferReference || \"\",\r\n formState.transferDescription || \"\",\r\n formState\r\n )\r\n input.TransferType = transferTypes.PayAnyoneTransferTypeId;\r\n input.BankAccountId = payAnyoneBankAccount?.Id;\r\n\r\n requestPayment({\r\n variables: {\r\n input: input\r\n },\r\n }).then(x => {\r\n const fundsTransferId = x.data?.requestPayAnyoneTransfer?.FundsTransfer?.Id;\r\n if (x.data?.requestPayAnyoneTransfer?.Success === true) {\r\n confirmTransfer(fundsTransferId);\r\n }\r\n })\r\n }\r\n\r\n const accountNumber = data.accountByIdOrNumber.Number;\r\n\r\n return (\r\n <div className=\"payanyone-confirm-page\">\r\n <Title title=\"Confirm Pay Anyone\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader accountNumber={accountNumber || \"\"} amount={formState.amount} />\r\n <DueOnListItems\r\n recurrence={formState.recurrenceEnd || \"\"}\r\n paymentDate={formState.startingOn}\r\n frequency={formState.frequency || \"\"}\r\n endDate={formState.endingOn}\r\n repeats={formState.numberOfTimesAmount}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"BSB\"\r\n keyText=\"BSB\"\r\n descriptionText={payAnyoneBankAccount?.BankIdentifierText}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Account\"\r\n descriptionText={payAnyoneBankAccount?.AccountNumber}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={formState.transferDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={formState.transferReference}\r\n />\r\n </ListGroup>\r\n\r\n <Button\r\n role=\"secondary\"\r\n onClick={modifyTransfer}\r\n disabled={paymentData.loading}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n onClick={sendPaymentRequest}\r\n loading={paymentData.loading}\r\n >\r\n Confirm\r\n </Button>\r\n <Alert\r\n visible={paymentData.error != null || paymentData.data?.requestPayAnyoneTransfer?.Success === false}\r\n message={`Error submitting pay anyone request. ${paymentData.data?.requestPayAnyoneTransfer?.Message}`}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmPayAnyone;\r\n","import { RecurrenceEndEnum, FundsTransfer } from \"generated/generated-models\";\r\nimport React from \"react\";\r\nimport DueOnListItems from \"./DueOnListItems\";\r\n\r\ntype DueOnListItemsReceiptProps = {\r\n fundsTransfer: FundsTransfer;\r\n}\r\n\r\n/**Displays when a funds transfer will start and how often it will repeat in a list group based */\r\nconst DueOnListItemsReceipt = ({ fundsTransfer }: DueOnListItemsReceiptProps) => {\r\n const getRecurrence = () => {\r\n if (fundsTransfer.FurtherNotice === true) {\r\n return RecurrenceEndEnum.Never;\r\n }\r\n\r\n if (fundsTransfer.SpecifiedDate === true) {\r\n return RecurrenceEndEnum.Bydate;\r\n }\r\n\r\n if (fundsTransfer.NumberOfTimes === true) {\r\n return RecurrenceEndEnum.Numberofocurrences;\r\n }\r\n\r\n return RecurrenceEndEnum.Once;\r\n }\r\n\r\n return (\r\n <DueOnListItems\r\n paymentDate={fundsTransfer.StartingOn}\r\n frequency={fundsTransfer.Frequency || \"\"}\r\n endDate={fundsTransfer.EndingOn}\r\n repeats={fundsTransfer.NumberOfTimesAmount}\r\n recurrence={getRecurrence()}\r\n />\r\n )\r\n}\r\n\r\nexport default DueOnListItemsReceipt;\r\n","import { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { PayAnyoneFormProps } from \"./CreatePayAnyone\";\r\nimport Button from \"app/components/Button\";\r\n\r\nconst PaymentReceipt = () => {\r\n const { transferId, payAnyoneBankAccount, accountId, returnToHome } = useTransferWizard<PayAnyoneFormProps>();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId },\r\n fetchPolicy: \"network-only\"\r\n });\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n\r\n if (error != null || data?.accountByIdOrNumber?.ProcessedAccountFundsTransfers == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n const fundsTransfer = data.accountByIdOrNumber.ProcessedAccountFundsTransfers\r\n .concat(data.accountByIdOrNumber.PendingAccountFundsTransfers)\r\n .find(x => x?.Id === transferId);\r\n\r\n if (fundsTransfer == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n return (\r\n <div className=\"bpay-receipt-page\">\r\n <Title title=\"Pay Anyone Complete\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader\r\n accountNumber={data.accountByIdOrNumber.Number || \"\"}\r\n amount={fundsTransfer?.Amount || 0}\r\n />\r\n\r\n\r\n <ListGroupItem\r\n iconType=\"Receipt\"\r\n keyText=\"Receipt\"\r\n descriptionText={fundsTransfer.ReceiptNumber}\r\n />\r\n\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n\r\n <ListGroupItem\r\n iconType=\"BSB\"\r\n keyText=\"BSB\"\r\n descriptionText={payAnyoneBankAccount?.BankIdentifierText}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Account\"\r\n descriptionText={payAnyoneBankAccount?.AccountNumber}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={fundsTransfer.DepositDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={fundsTransfer.WithdrawalDescription}\r\n />\r\n\r\n </ListGroup>\r\n <Button isSubmit={true} onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)} >\r\n Ok\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport default PaymentReceipt;\r\n","import PayAnyoneRequest from \"./PayAnyonePage\";\r\n\r\nexport default PayAnyoneRequest;\r\n","import SelectPayAnyone from \"./SelectPayAnyone\";\r\nimport CreatePayAnyone from \"./CreatePayAnyone\";\r\nimport ConfirmPayAnyone from \"./ConfirmPayAnyone\";\r\nimport PayAnyoneReciept from \"./PayAnyoneReceipt\";\r\nimport TransferWizard from \"../utilities/TransferWizard\";\r\n\r\nconst PayAnyonePage = (props: { accountId: string}) => {\r\n return (\r\n <TransferWizard accountId={props.accountId} useSelectionPage={true} authorityType={\"payAnyone\"}>\r\n <TransferWizard.Select>\r\n <SelectPayAnyone />\r\n </TransferWizard.Select>\r\n <TransferWizard.Create>\r\n <CreatePayAnyone />\r\n </TransferWizard.Create>\r\n <TransferWizard.Confirm>\r\n <ConfirmPayAnyone />\r\n </TransferWizard.Confirm>\r\n <TransferWizard.Receipt>\r\n <PayAnyoneReciept />\r\n </TransferWizard.Receipt>\r\n </TransferWizard>\r\n )\r\n}\r\n\r\nexport default PayAnyonePage;\r\n","import React from \"react\";\r\nimport { IsShariaComponent } from \"generated/generated-models\";\r\nexport const CLoanWord = () => {\r\n return (\r\n <IsShariaComponent>\r\n {({ data }) =>\r\n <span>\r\n {shariaRentText(\r\n (data && data.userSession && data.userSession.IsSharia) || false\r\n )}\r\n </span>\r\n }\r\n </IsShariaComponent>\r\n );\r\n};\r\nconst shariaRentText = (isSharia: boolean) => {\r\n return (isSharia && \"Rental\") || \"Loan\";\r\n};\r\n","import DeleteTransfer from \"./DeleteTransfer\";\r\n\r\nexport default DeleteTransfer;\r\n","import {\r\n Redirect,\r\n useHistory,\r\n} from \"react-router-dom\";\r\nimport {\r\n AccountFundsTransfersDocument,\r\n FundsTransfer,\r\n useStopPendingFundsTransferMutation\r\n} from \"generated/generated-models\";\r\nimport MoneyFormatted from \"../../components/MoneyFormatted\";\r\nimport React from \"react\";\r\nimport { CLoanWord } from \"../../lang/CLoanWord\";\r\nimport { CError } from \"app/common/CError\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport { format } from \"date-fns\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\n\r\ntype Props = { \r\n fundsTransfer: FundsTransfer;\r\n }\r\n\r\nconst DeleteTransfer = ({ fundsTransfer }: Props) => {\r\n const [stopTransferMutation, { error, data, loading }] = useStopPendingFundsTransferMutation();\r\n const history = useHistory();\r\n\r\n if (data?.stopPendingFundsTransfer?.Success === true) {\r\n return <Redirect to=\"../../transfer\" push={false} />;\r\n }\r\n\r\n if (error || data?.stopPendingFundsTransfer?.Success === false) {\r\n return <CError error=\"Failed to stop transfer\" />\r\n }\r\n\r\n const stopTransfer = () => {\r\n stopTransferMutation({\r\n variables: { input: { FundsTransferId: fundsTransfer.Id } },\r\n refetchQueries: [\r\n {\r\n query: AccountFundsTransfersDocument,\r\n variables: {accountIdOrNumber: fundsTransfer.AccountId}\r\n }\r\n ]\r\n });\r\n }\r\n\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <h2>\r\n Cancel Funds Transfer <br/>\r\n <small className=\"text-muted\">Receipt No. {fundsTransfer.ReceiptNumber}</small>\r\n </h2>\r\n\r\n <ListGroup>\r\n <li className=\"list-group-item confirm-item-header\">\r\n <span className=\"list-group-item-key\">{fundsTransfer?.BillerName || fundsTransfer.ToAccountDescription}</span>\r\n <span className=\"list-group-item-value\"><MoneyFormatted amount={fundsTransfer?.Amount} /></span>\r\n </li>\r\n\r\n <ListGroupItem\r\n iconType=\"Receipt\"\r\n keyText=\"Receipt\"\r\n descriptionText={fundsTransfer.ReceiptNumber}\r\n />\r\n\r\n {fundsTransfer.StartingOn != null &&\r\n <ListGroupItem\r\n iconType=\"Date\"\r\n keyText=\"Payment Date\"\r\n descriptionText={format(new Date(fundsTransfer.StartingOn), 'd MMM yyyy')}\r\n />\r\n }\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={fundsTransfer.DepositDescription}\r\n />\r\n\r\n {fundsTransfer.CreatedOn &&\r\n <ListGroupItem\r\n iconType=\"Date\"\r\n keyText=\"Created On\"\r\n descriptionText={format(new Date(fundsTransfer.CreatedOn), 'd MMM yyyy')}\r\n />\r\n }\r\n\r\n </ListGroup>\r\n\r\n {fundsTransfer.RegularPayment && (\r\n <div className=\"alert alert-warning\">\r\n <strong>Warning!</strong>\r\n <p>\r\n This transfer is part or all of your regular payment. If you\r\n remove this, you must ensure you make other arrangments to pay\r\n your {<CLoanWord />} in order to meet your minimum required\r\n repayment. Failure to do so may cause your account to go into\r\n default.\r\n </p>\r\n </div>\r\n )}\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Go Back\"\r\n className=\"btn btn-secondary\"\r\n onClick={() => history.push(\"../../transfer\")}\r\n disabled={loading}\r\n />\r\n\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Cancel Transfer\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => stopTransfer()}\r\n disabled={loading}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default DeleteTransfer;\r\n","import BankingCutOff from \"app/components/BankingCutoff\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Form from \"app/components/Form\";\r\nimport Input from \"app/components/Input\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik, useFormikContext } from \"formik\";\r\nimport {\r\n RecurrenceEndEnum,\r\n TaskFrequencyPeriod,\r\n useAccountFundsTransfersQuery\r\n} from \"generated/generated-models\";\r\nimport TransferScheduleInput, { TransferScheduleInputValues } from \"../utilities/TransferScheduleInput\";\r\nimport { Validate } from \"./CreatePaymentValidate\";\r\nimport FutureDatedWarningText from \"app/components/FutureDatedWarningText\";\r\nimport FromAccountCard from \"app/components/fundsTransferCards/FromAccountCard\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport PaymentCard from \"app/components/PaymentCard/PaymentCard\";\r\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Alert from \"app/components/Alert\";\r\nimport Button from \"app/components/Button\";\r\n\r\nexport type PaymentFormProps = {\r\n transferReference?: string;\r\n transferDescription?: string;\r\n amount?: number;\r\n} & TransferScheduleInputValues\r\n\r\nconst Payment = (props: { accountId: string }) => {\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: props.accountId }\r\n });\r\n const { values, isSubmitting } = useFormikContext<PaymentFormProps>();\r\n const { changeAccount, paymentAccount, gotoSelect, returnToHome } = useTransferWizard();\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.accountByIdOrNumber?.BankAccounts == null) {\r\n return <CError error=\"Could not load Payment details\" />\r\n }\r\n\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title\r\n title=\"New Payment\"\r\n />\r\n\r\n <FundsTransferCardsContainer>\r\n <FromAccountCard account={data.accountByIdOrNumber} title=\"To\" onClick={changeAccount} />\r\n {paymentAccount == null ?\r\n <PaymentCard\r\n onClick={gotoSelect}\r\n title=\"From\"\r\n name={<div><FontAwesomeIcon icon={faExclamationTriangle} /> Please select a bank account</div>}\r\n details=\"Click here to select a bank account\"\r\n className=\"payment-create-summary-account-warning\"\r\n /> :\r\n <PaymentCard\r\n onClick={gotoSelect}\r\n title=\"From\"\r\n name={paymentAccount?.AccountName}\r\n details={`${paymentAccount?.BankIdentifierText} ${paymentAccount?.AccountNumber} (${paymentAccount?.BankName})`}\r\n />\r\n }\r\n </FundsTransferCardsContainer>\r\n\r\n <Form>\r\n <Input\r\n name={nameof<PaymentFormProps>(\"transferDescription\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're depositing money into\"\r\n label=\"Description\"\r\n />\r\n\r\n <Input\r\n name={nameof<PaymentFormProps>(\"transferReference\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're withdrawing money from\"\r\n label=\"Reference\"\r\n />\r\n\r\n <Input\r\n name={nameof<PaymentFormProps>(\"amount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n\r\n <TransferScheduleInput\r\n values={values}\r\n config={{\r\n minStartingDate: new Date(),\r\n minUntilDate: new Date(values.startingOn),\r\n }}\r\n />\r\n\r\n <FutureDatedWarningText date={values.startingOn} />\r\n\r\n <BankingCutOff />\r\n\r\n <Alert message=\"Please select a bank account\" visible={paymentAccount == null} />\r\n\r\n <Button\r\n role=\"secondary\"\r\n disabled={isSubmitting}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n disabled={paymentAccount == null}\r\n >\r\n Create Payment\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n}\r\n\r\nconst PaymentForm = () => {\r\n const wizard = useTransferWizard<PaymentFormProps>();\r\n\r\n const initialValues: PaymentFormProps = {\r\n amount: undefined,\r\n transferDescription: \"\",\r\n endingOn: undefined,\r\n startingOn: new Date(),\r\n frequency: TaskFrequencyPeriod.Once,\r\n recurrenceEnd: RecurrenceEndEnum.Never,\r\n numberOfTimesAmount: undefined,\r\n transferReference: \"\",\r\n\r\n ...wizard.formState\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => wizard.createTransfer(values)}\r\n validationSchema={Validate()}\r\n >\r\n <Payment accountId={wizard.accountId} />\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default PaymentForm;\r\n","import * as yup from \"yup\";\r\nimport { PaymentFormProps } from \"./CreatePayment\";\r\nimport { validateSchedule, validateTransferDescription } from \"../utilities/validation\";\r\n\r\nexport const Validate = () => {\r\n const schema: yup.ObjectSchema<PaymentFormProps> = yup.object({\r\n \r\n transferDescription: validateTransferDescription(\"Description\"),\r\n transferReference: validateTransferDescription(\"Reference\"),\r\n\r\n startingOn: yup\r\n .date()\r\n .required(),\r\n\r\n amount: yup\r\n .number()\r\n .required()\r\n .moreThan(0)\r\n .label(\"Amount\"),\r\n\r\n ...validateSchedule()\r\n }).defined();\r\n\r\n return schema;\r\n}\r\n","import { useHistory } from \"react-router\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport DueOnListItems from \"../utilities/list/DueOnListItems\";\r\nimport {\r\n useAccountFundsTransfersQuery,\r\n useRequestPayAnyoneTransferMutation\r\n} from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { createTransferVariable, transferTypes } from \"../utilities/fundsTransfers\";\r\nimport Title from \"app/components/Title\";\r\nimport Alert from \"app/components/Alert\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { PaymentFormProps } from \"./CreatePayment\";\r\n\r\nconst ConfirmPayment = () => {\r\n const { accountId, formState, paymentAccount, confirmTransfer } = useTransferWizard<PaymentFormProps>();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId }\r\n });\r\n const history = useHistory();\r\n const [requestPayment, paymentData] = useRequestPayAnyoneTransferMutation();\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (data?.accountByIdOrNumber == null || error) {\r\n return <CError error=\"Could not load account details\" />\r\n }\r\n\r\n const input = createTransferVariable(\r\n accountId,\r\n formState.amount!,\r\n formState.transferReference || \"\",\r\n formState.transferDescription || \"\",\r\n formState\r\n )\r\n input.TransferType = transferTypes.RepaymentTransferTypeId;\r\n input.BankAccountId = paymentAccount?.Id;\r\n\r\n const sendPaymentRequest = () => {\r\n requestPayment({\r\n variables: {\r\n input: input\r\n },\r\n }).then(x => {\r\n const fundsTransferId = x.data?.requestPayAnyoneTransfer?.FundsTransfer?.Id;\r\n if (x.data?.requestPayAnyoneTransfer?.Success === true) {\r\n confirmTransfer(fundsTransferId);\r\n }\r\n })\r\n }\r\n\r\n const accountNumber = data.accountByIdOrNumber.Number;\r\n const bankAccount = data.accountByIdOrNumber.BankAccounts?.find(x => x?.Id);\r\n\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title title=\"Confirm Payment\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader accountNumber={accountNumber || \"\"} amount={formState.amount!} />\r\n <DueOnListItems\r\n recurrence={formState.recurrenceEnd || \"\"}\r\n paymentDate={formState.startingOn}\r\n frequency={formState.frequency || \"\"}\r\n endDate={formState.endingOn}\r\n repeats={formState.numberOfTimesAmount}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"BSB\"\r\n keyText=\"BSB\"\r\n descriptionText={bankAccount?.BankIdentifierText}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Account\"\r\n descriptionText={bankAccount?.AccountNumber}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={formState.transferDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={formState.transferReference}\r\n />\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"cancel\"\r\n value=\"Go Back\"\r\n className=\"btn btn-secondary\"\r\n onClick={() => history.push(\"Create\")}\r\n disabled={paymentData.loading}\r\n />\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Confirm\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n />\r\n <Alert\r\n visible={paymentData.error != null || paymentData.data?.requestPayAnyoneTransfer?.Success === false}\r\n message={`Error submitting payment request. ${paymentData.data?.requestPayAnyoneTransfer?.Message}`}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmPayment\r\n","import { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\n\r\nconst PaymentReceipt = () => {\r\n const { accountId, returnToHome, transferId } = useTransferWizard();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId },\r\n fetchPolicy: \"network-only\"\r\n });\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n\r\n if (error != null || data?.accountByIdOrNumber?.ProcessedAccountFundsTransfers == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n const fundsTransfer = data.accountByIdOrNumber.ProcessedAccountFundsTransfers\r\n .concat(data.accountByIdOrNumber.PendingAccountFundsTransfers)\r\n .find(x => x?.Id === transferId);\r\n\r\n if (fundsTransfer == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n return (\r\n <div className=\"payment-receipt-wrapper sub-wrap form-wrap\">\r\n <Title title=\"Payment Complete\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader\r\n accountNumber={data.accountByIdOrNumber.Number || \"\"}\r\n amount={fundsTransfer?.Amount || 0}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Receipt\"\r\n keyText=\"Receipt\"\r\n descriptionText={fundsTransfer.ReceiptNumber}\r\n />\r\n\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"From\"\r\n descriptionText={fundsTransfer.FromAccountDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={fundsTransfer.DepositDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={fundsTransfer.WithdrawalDescription}\r\n />\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Ok\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default PaymentReceipt;\r\n","import { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { BankAccount, useAccountFundsTransfersQuery} from \"generated/generated-models\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport Button from \"app/components/Button\";\r\nimport { useHistory } from \"react-router\";\r\nimport PaymentCard from \"app/components/PaymentCard/PaymentCard\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\n\r\ntype PaymentAccountCardProps = { bankAccount: BankAccount };\r\n\r\nconst PaymentAccountCard = ({ bankAccount }: PaymentAccountCardProps) => {\r\n const transferWizard = useTransferWizard();\r\n\r\n return (\r\n <PaymentCard\r\n onClick={() => transferWizard.confirmPaymentAccount(bankAccount)}\r\n title=\"From\"\r\n name={bankAccount?.AccountName}\r\n details={\r\n <div>\r\n <div>{bankAccount?.BankIdentifierText} {bankAccount?.AccountNumber}</div>\r\n <div>{bankAccount?.BankName}</div>\r\n </div>\r\n }\r\n />\r\n )\r\n}\r\n\r\nconst SelectPayment = () => {\r\n const { accountId } = useTransferWizard();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId }\r\n });\r\n const history = useHistory();\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.accountByIdOrNumber?.BankAccounts == null) {\r\n return <CError error=\"Could not load Payment bank account details\" />\r\n }\r\n\r\n const account = data.accountByIdOrNumber;\r\n\r\n const paymentAccounts = makeNonEmpty(account.BankAccounts);\r\n\r\n return (\r\n <div>\r\n <Title title=\"Select Payment From Account\" />\r\n <div className=\"select-destination\">\r\n {account.BankAccounts?.length === 0 &&\r\n <div>\r\n <div className=\"alert alert-warning\">No available Bank Accounts associated with this account</div>\r\n </div>}\r\n <FundsTransferCardsContainer>\r\n {paymentAccounts.map(x =>\r\n <PaymentAccountCard bankAccount={x} key={x.Id} />\r\n )}\r\n </FundsTransferCardsContainer>\r\n </div>\r\n <br />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Go Back\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SelectPayment;","import Payment from \"./PaymentPage\";\r\n\r\nexport default Payment;\r\n","import CreatePayment from \"./CreatePayment\";\r\nimport ConfirmPayment from \"./ConfirmPayment\";\r\nimport PaymentReciept from \"./PaymentReceipt\";\r\nimport TransferWizard from \"../utilities/TransferWizard\";\r\nimport SelectPayment from \"./SelectPayment\";\r\n\r\nconst PaymentPage = (props: { accountId: string }) => {\r\n return (\r\n <TransferWizard accountId={props.accountId} useSelectionPage={true} authorityType={\"operate\"}>\r\n <TransferWizard.Create>\r\n <CreatePayment />\r\n </TransferWizard.Create>\r\n <TransferWizard.Confirm>\r\n <ConfirmPayment />\r\n </TransferWizard.Confirm>\r\n <TransferWizard.Receipt>\r\n <PaymentReciept />\r\n </TransferWizard.Receipt>\r\n <TransferWizard.Select>\r\n <SelectPayment />\r\n </TransferWizard.Select>\r\n </TransferWizard>\r\n )\r\n}\r\n\r\nexport default PaymentPage;\r\n","import BankingCutOff from \"app/components/BankingCutoff\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Form from \"app/components/Form\";\r\nimport Input from \"app/components/Input\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik, useFormikContext } from \"formik\";\r\nimport {\r\n RecurrenceEndEnum,\r\n TaskFrequencyPeriod,\r\n useAccountFundsTransfersQuery\r\n} from \"generated/generated-models\";\r\nimport TransferScheduleInput, { TransferScheduleInputValues } from \"../utilities/TransferScheduleInput\";\r\nimport { Validate } from \"./CreateRedrawValidate\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport Title from \"app/components/Title\";\r\nimport FutureDatedWarningText from \"app/components/FutureDatedWarningText\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\nimport FromAccountCard from \"app/components/fundsTransferCards/FromAccountCard\";\r\nimport Button from \"app/components/Button\";\r\nimport PaymentCard from \"app/components/PaymentCard/PaymentCard\";\r\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Alert from \"app/components/Alert\";\r\n\r\n\r\nexport type RedrawFormProps = {\r\n transferReference?: string;\r\n transferDescription?: string;\r\n amount?: number;\r\n} & TransferScheduleInputValues\r\n\r\ntype Props = {\r\n accountId: string;\r\n}\r\n\r\nconst Payment = (props: Props) => {\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: props.accountId }\r\n });\r\n const { redrawAccount, changeAccount, gotoSelect, returnToHome } = useTransferWizard();\r\n const { values, isSubmitting } = useFormikContext<RedrawFormProps>();\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.accountByIdOrNumber?.BankAccounts == null) {\r\n return <CError error=\"Could not load Redraw details\" />\r\n }\r\n\r\n return (\r\n <div className=\"redraw-create-page\">\r\n <Title\r\n title=\"New Redraw\"\r\n />\r\n\r\n <FundsTransferCardsContainer>\r\n <FromAccountCard account={data.accountByIdOrNumber} title=\"From\" onClick={changeAccount} />\r\n {redrawAccount == null ?\r\n <PaymentCard\r\n onClick={gotoSelect}\r\n title=\"To\"\r\n name={<div><FontAwesomeIcon icon={faExclamationTriangle} /> Please select a bank account</div>}\r\n details=\"Click here to select a bank account\"\r\n className=\"payment-create-summary-account-warning\"\r\n /> :\r\n\r\n <PaymentCard\r\n onClick={gotoSelect}\r\n title=\"To\"\r\n name={redrawAccount?.AccountName}\r\n details={\r\n <div>\r\n <div>{redrawAccount?.BankIdentifierText} {redrawAccount?.AccountNumber}</div>\r\n <div>{redrawAccount?.BankName}</div>\r\n </div>}\r\n />\r\n }\r\n </FundsTransferCardsContainer>\r\n\r\n <Form>\r\n <Input\r\n name={nameof<RedrawFormProps>(\"transferDescription\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're redrawing money from\"\r\n label=\"Description\"\r\n printableOnly = {true}\r\n />\r\n\r\n <Input\r\n name={nameof<RedrawFormProps>(\"transferReference\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're depositing money into\"\r\n label=\"Reference\"\r\n printableOnly = {true}\r\n />\r\n\r\n <Input\r\n name={nameof<RedrawFormProps>(\"amount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n\r\n <TransferScheduleInput\r\n values={values}\r\n config={{\r\n minStartingDate: new Date(),\r\n minUntilDate: new Date(values.startingOn),\r\n }}\r\n />\r\n\r\n <FutureDatedWarningText date={values.startingOn} />\r\n\r\n <BankingCutOff />\r\n\r\n <Alert message=\"Please select a bank account\" visible={redrawAccount == null} />\r\n\r\n <Button\r\n role=\"secondary\"\r\n disabled={isSubmitting}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n disabled={redrawAccount == null}\r\n >\r\n Create Redraw\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n}\r\n\r\nconst PaymentForm = () => {\r\n const wizard = useTransferWizard<RedrawFormProps>();\r\n\r\n const initialValues: RedrawFormProps = {\r\n amount: undefined,\r\n transferDescription: \"\",\r\n endingOn: undefined,\r\n startingOn: new Date(),\r\n frequency: TaskFrequencyPeriod.Once,\r\n recurrenceEnd: RecurrenceEndEnum.Never,\r\n numberOfTimesAmount: undefined,\r\n transferReference: \"\",\r\n\r\n ...wizard.formState\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => wizard.createTransfer(values)}\r\n validationSchema={Validate(wizard.accountId)}\r\n >\r\n <Payment accountId={wizard.accountId} />\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default PaymentForm;\r\n","import * as yup from \"yup\";\r\nimport { RedrawFormProps } from \"./CreateRedraw\";\r\nimport { validateLimit, validateSchedule, validateTransferDescription } from \"../utilities/validation\";\r\n\r\nexport const Validate = (accountId: string) => {\r\n const schema: yup.ObjectSchema<RedrawFormProps> = yup.object({\r\n\r\n transferDescription: validateTransferDescription(\"Description\"),\r\n transferReference: validateTransferDescription(\"Reference\"),\r\n\r\n startingOn: yup\r\n .date()\r\n .required(),\r\n\r\n ...validateLimit(accountId, \"redraw\"),\r\n ...validateSchedule()\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import Alert from \"app/components/Alert\";\r\nimport { Redirect } from \"react-router\";\r\nimport { RedrawFormProps } from \"./CreateRedraw\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport DueOnListItems from \"../utilities/list/DueOnListItems\";\r\nimport {\r\n useAccountFundsTransfersQuery,\r\n useRequestPayAnyoneTransferMutation\r\n} from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { createTransferVariable, transferTypes } from \"../utilities/fundsTransfers\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport Title from \"app/components/Title\";\r\n\r\nconst ConfirmRedraw = () => {\r\n const { formState, confirmTransfer, modifyTransfer, accountId, redrawAccount } = useTransferWizard<RedrawFormProps>();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId }\r\n });\r\n const [requestPayment, paymentData] = useRequestPayAnyoneTransferMutation();\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\r\n }\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (data?.accountByIdOrNumber == null || error) {\r\n return <CError error=\"Could not load account details\" />\r\n }\r\n\r\n const input = createTransferVariable(\r\n accountId,\r\n formState.amount,\r\n formState.transferReference || \"\",\r\n formState.transferDescription || \"\",\r\n formState\r\n )\r\n input.TransferType = transferTypes.RedrawTransferTypeId;\r\n input.BankAccountId = redrawAccount?.Id;\r\n input.FromAccountId = accountId;\r\n\r\n const sendPaymentRequest = () => {\r\n requestPayment({\r\n variables: {\r\n input: input\r\n },\r\n }).then(x => {\r\n const fundsTransferId = x.data?.requestPayAnyoneTransfer?.FundsTransfer?.Id;\r\n\r\n if (x.data?.requestPayAnyoneTransfer?.Success === true) {\r\n confirmTransfer(fundsTransferId);\r\n }\r\n })\r\n }\r\n\r\n const accountNumber = data.accountByIdOrNumber.Number;\r\n\r\n return (\r\n <div className=\"redraw-confirm-page\">\r\n <Title title=\"Confirm Redraw\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader accountNumber={accountNumber || \"\"} amount={formState.amount} />\r\n <DueOnListItems\r\n recurrence={formState.recurrenceEnd || \"\"}\r\n paymentDate={formState.startingOn}\r\n frequency={formState.frequency || \"\"}\r\n endDate={formState.endingOn}\r\n repeats={formState.numberOfTimesAmount}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"BSB\"\r\n keyText=\"BSB\"\r\n descriptionText={redrawAccount?.BankIdentifierText}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Account\"\r\n descriptionText={redrawAccount?.AccountNumber}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={formState.transferDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={formState.transferReference}\r\n />\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"cancel\"\r\n value=\"Go Back\"\r\n className=\"btn btn-secondary\"\r\n onClick={() => modifyTransfer()}\r\n disabled={paymentData.loading}\r\n />\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Confirm\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n />\r\n <Alert\r\n visible={paymentData.error != null || paymentData.data?.requestPayAnyoneTransfer?.Success === false}\r\n message={`Error submitting redraw request. ${paymentData.data?.requestPayAnyoneTransfer?.Message}`}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmRedraw;\r\n","import { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { RedrawFormProps } from \"./CreateRedraw\";\r\n\r\nconst RedrawReceipt = () => {\r\n const { transferId, accountId, returnToHome } = useTransferWizard<RedrawFormProps>();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId },\r\n fetchPolicy: \"network-only\"\r\n });\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n\r\n if (error != null || data?.accountByIdOrNumber?.ProcessedAccountFundsTransfers == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n const fundsTransfer = data.accountByIdOrNumber.ProcessedAccountFundsTransfers\r\n .concat(data.accountByIdOrNumber.PendingAccountFundsTransfers)\r\n .find(x => x?.Id === transferId);\r\n\r\n if (fundsTransfer == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n return (\r\n <div className=\"redraw-receipt-page\">\r\n <Title title=\"Redraw Complete\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader\r\n accountNumber={data.accountByIdOrNumber.Number || \"\"}\r\n amount={fundsTransfer?.Amount || 0}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Receipt\"\r\n keyText=\"Receipt\"\r\n descriptionText={fundsTransfer.ReceiptNumber}\r\n />\r\n\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"From\"\r\n descriptionText={fundsTransfer.FromAccountDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={fundsTransfer.DepositDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={fundsTransfer.WithdrawalDescription}\r\n />\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Ok\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default RedrawReceipt;\r\n","import { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { BankAccount, useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport React from \"react\";\r\nimport Button from \"app/components/Button\";\r\nimport { useHistory } from \"react-router\";\r\nimport PaymentCard from \"app/components/PaymentCard/PaymentCard\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\n\r\nconst RedrawCard = ({ bankAccount }: { bankAccount: BankAccount }) => {\r\n const transferWizard = useTransferWizard();\r\n\r\n return (\r\n <PaymentCard\r\n onClick={() => transferWizard.confirmRedrawAccount(bankAccount)}\r\n title=\"To\"\r\n name={bankAccount?.AccountName}\r\n details={\r\n <div>\r\n <div>{bankAccount?.BankIdentifierText} {bankAccount?.AccountNumber}</div>\r\n <div>{bankAccount?.BankName}</div>\r\n </div>\r\n }\r\n />\r\n )\r\n}\r\n\r\nconst SelectRedraw = () => {\r\n const { accountId } = useTransferWizard();\r\n const history = useHistory();\r\n\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId }\r\n });\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.accountByIdOrNumber?.BankAccounts == null) {\r\n return <CError error=\"Could not load Redraw details\" />\r\n }\r\n\r\n const account = data.accountByIdOrNumber;\r\n\r\n const redrawAccounts = makeNonEmpty(account.BankAccounts);\r\n\r\n return (\r\n <div>\r\n <Title title=\"Select Redraw Bank Account\" />\r\n <div>\r\n {account.BankAccounts?.length === 0 &&\r\n <div>\r\n <div className=\"alert alert-warning\">No available Bank Accounts associated with this account</div>\r\n </div>}\r\n <FundsTransferCardsContainer>\r\n {redrawAccounts.map(x =>\r\n <RedrawCard bankAccount={x} key={x.Id} />\r\n )}\r\n </FundsTransferCardsContainer>\r\n </div>\r\n <br />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Go Back\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SelectRedraw;\r\n","import RedrawPage from \"./RedrawPage\";\r\n\r\nexport default RedrawPage;\r\n","import CreateRedraw from \"./CreateRedraw\";\r\nimport ConfirmRedraw from \"./ConfirmRedraw\";\r\nimport RedrawReceipt from \"./RedrawReceipt\";\r\nimport TransferWizard from \"../utilities/TransferWizard\";\r\nimport SelectRedraw from \"./SelectRedraw\";\r\n\r\nconst RedrawPage = (props: { accountId: string }) => {\r\n return (\r\n <TransferWizard accountId={props.accountId} useSelectionPage={true} authorityType={\"redraw\"}>\r\n <TransferWizard.Select>\r\n <SelectRedraw />\r\n </TransferWizard.Select>\r\n <TransferWizard.Create>\r\n <CreateRedraw />\r\n </TransferWizard.Create>\r\n <TransferWizard.Confirm>\r\n <ConfirmRedraw />\r\n </TransferWizard.Confirm>\r\n <TransferWizard.Receipt>\r\n <RedrawReceipt />\r\n </TransferWizard.Receipt>\r\n </TransferWizard>\r\n )\r\n}\r\n\r\nexport default RedrawPage;\r\n","import BankingCutOff from \"app/components/BankingCutoff\";\r\nimport Form from \"app/components/Form\";\r\nimport Input from \"app/components/Input\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik, useFormikContext } from \"formik\";\r\nimport {\r\n useInstrumentAuthorityAccountsQuery,\r\n TaskFrequencyPeriod,\r\n RecurrenceEndEnum\r\n} from \"generated/generated-models\";\r\nimport TransferScheduleInput, { TransferScheduleInputValues } from \"../utilities/TransferScheduleInput\";\r\nimport { Validate } from \"./CreateInterAccountValidate\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { CError } from \"app/common/CError\";\r\nimport FutureDatedWarningText from \"app/components/FutureDatedWarningText\";\r\nimport Button from \"app/components/Button\";\r\nimport Title from \"app/components/Title\";\r\nimport FromAccountCard from \"app/components/fundsTransferCards/FromAccountCard\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\nimport PaymentCard from \"app/components/PaymentCard/PaymentCard\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport Alert from \"app/components/Alert\";\r\n\r\nexport type InterAccountFormProps = {\r\n transferReference?: string;\r\n transferDescription?: string;\r\n amount?: number;\r\n} & TransferScheduleInputValues\r\n\r\ntype Props = {\r\n fromAccountId: string;\r\n toAccountId?: string;\r\n}\r\n\r\nconst CreateInterAccount = ({ fromAccountId }: Props) => {\r\n const { interAccountToAccount, gotoSelect, returnToHome, changeAccount } = useTransferWizard();\r\n const { values, isSubmitting } = useFormikContext<InterAccountFormProps>();\r\n const { data, loading, error } = useInstrumentAuthorityAccountsQuery({\r\n variables: {\r\n account: fromAccountId,\r\n },\r\n fetchPolicy: \"network-only\"\r\n });\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.instrumentByAccount == null) {\r\n return <CError error=\"Could not load inter account details\" />\r\n }\r\n\r\n const currentAccount = data?.instrumentByAccount?.Accounts?.filter(x => x?.Id === fromAccountId)[0];\r\n\r\n return (\r\n\r\n <div className=\"interaccount-create-page\">\r\n <Title\r\n title=\"New Inter-Account Transfer\"\r\n subtitle={`From Account ${currentAccount?.Number}`}\r\n />\r\n\r\n <FundsTransferCardsContainer>\r\n <FromAccountCard account={currentAccount} title=\"From\" onClick={changeAccount} />\r\n {interAccountToAccount?.Id === currentAccount?.Id ?\r\n <PaymentCard\r\n onClick={gotoSelect}\r\n title=\"To\"\r\n name={<div><FontAwesomeIcon icon={faExclamationTriangle} /> Please select an account</div>}\r\n details=\"Click here to select an account\"\r\n className=\"payment-create-summary-account-warning\"\r\n /> :\r\n <FromAccountCard account={interAccountToAccount} title=\"To\" onClick={gotoSelect} />\r\n }\r\n\r\n </FundsTransferCardsContainer>\r\n\r\n\r\n <Form>\r\n\r\n <Input\r\n name={nameof<InterAccountFormProps>(\"transferDescription\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're withdrawing money from\"\r\n label=\"Description\"\r\n printableOnly = {true}\r\n />\r\n\r\n <Input\r\n name={nameof<InterAccountFormProps>(\"transferReference\")}\r\n type=\"text\"\r\n helpText=\"This will appear in the account you're depositing money into\"\r\n label=\"Reference\"\r\n />\r\n\r\n <Input\r\n name={nameof<InterAccountFormProps>(\"amount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n\r\n <TransferScheduleInput\r\n values={values}\r\n config={{\r\n minStartingDate: new Date(),\r\n minUntilDate: new Date(values.startingOn),\r\n }}\r\n />\r\n\r\n <FutureDatedWarningText date={values.startingOn} />\r\n\r\n <BankingCutOff />\r\n \r\n <Alert message=\"Please select a To account\" visible={interAccountToAccount?.Id === currentAccount?.Id} />\r\n\r\n <Button\r\n role=\"secondary\"\r\n disabled={isSubmitting}\r\n onClick={() => returnToHome(currentAccount?.Number!)}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n disabled={interAccountToAccount?.Id === currentAccount?.Id}\r\n >\r\n Create Transfer\r\n </Button>\r\n\r\n </Form>\r\n </div>)\r\n}\r\n\r\nconst CreateInterAccountForm = () => {\r\n const wizard = useTransferWizard<InterAccountFormProps>();\r\n\r\n const initialValues: InterAccountFormProps = {\r\n amount: undefined,\r\n transferDescription: \"\",\r\n endingOn: undefined,\r\n startingOn: new Date(),\r\n frequency: TaskFrequencyPeriod.Once,\r\n recurrenceEnd: RecurrenceEndEnum.Never,\r\n numberOfTimesAmount: undefined,\r\n transferReference: \"\",\r\n\r\n ...wizard.formState\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => wizard.createTransfer(values)}\r\n validationSchema={Validate(wizard.accountId)}\r\n >\r\n <CreateInterAccount fromAccountId={wizard.accountId} />\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default CreateInterAccountForm;\r\n","import * as yup from \"yup\";\r\nimport { InterAccountFormProps } from \"./CreateInterAccount\";\r\nimport { validateSchedule, validateTransferDescription } from \"../utilities/validation\";\r\nimport { isSameDay } from \"date-fns\";\r\nimport { FinanceSummaryQueryDocument, FinanceSummaryQueryQuery } from \"generated/generated-models\";\r\nimport { client } from \"core/apollo/client\";\r\nimport { getCurrencySymbol } from \"core/util/currencySymbol\"\r\n\r\nexport const Validate = (accountId?: string) => {\r\n const schema: yup.ObjectSchema<InterAccountFormProps> = yup.object({ \r\n\r\n transferDescription: validateTransferDescription(\"Description\"),\r\n transferReference: validateTransferDescription(\"Reference\"),\r\n\r\n startingOn: yup\r\n .date()\r\n .required(),\r\n\r\n amount: yup\r\n .number()\r\n .required()\r\n .moreThan(0)\r\n .label(\"Amount\")\r\n //eslint-disable-next-line\r\n .test(\"transferLimit\", \"${path} is greater then the available transfer\", async function (amount) {\r\n const startingOn = this.parent.startingOn;\r\n\r\n // Don't check limit in the future as it may change\r\n if (isSameDay(startingOn, new Date()) === false) {\r\n return true;\r\n }\r\n\r\n const result = await client.query<FinanceSummaryQueryQuery>({\r\n query: FinanceSummaryQueryDocument\r\n });\r\n\r\n var availableTransfer = result.data?.financeSummary?.Instruments\r\n ?.flatMap(instrument => instrument?.Accounts)\r\n ?.find(account => account?.Id === accountId)\r\n ?.Redraw;\r\n\r\n if (amount == null || availableTransfer == null) {\r\n return false;\r\n }\r\n\r\n if (amount > availableTransfer) {\r\n return this.createError({ message: `Amount is greater then the available transfer of ${getCurrencySymbol()}${availableTransfer}` });\r\n }\r\n\r\n return true;\r\n }),\r\n\r\n ...validateSchedule()\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { InterAccountFormProps } from \"./CreateInterAccount\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport DueOnListItems from \"../utilities/list/DueOnListItems\";\r\nimport {\r\n AccountFundsTransfersDocument,\r\n useFinanceSummaryQueryQuery,\r\n useRequestPayAnyoneTransferMutation\r\n} from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { createTransferVariable, transferTypes } from \"../utilities/fundsTransfers\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport Title from \"app/components/Title\";\r\nimport Alert from \"app/components/Alert\";\r\n\r\nconst ConfirmInterAccount = () => {\r\n const { data, loading, error } = useFinanceSummaryQueryQuery();\r\n const [requestPayment, paymentData] = useRequestPayAnyoneTransferMutation();\r\n const { formState, confirmTransfer, modifyTransfer, interAccountToAccount, accountId: fromAccountId } = useTransferWizard<InterAccountFormProps>();\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\r\n }\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n const accounts = data?.financeSummary?.Instruments\r\n ?.flatMap(instrument => instrument?.Accounts);\r\n\r\n const fromAccount = accounts\r\n ?.find(account => account?.Id === fromAccountId);\r\n\r\n const toAccount = accounts\r\n ?.find(account => account?.Id === interAccountToAccount?.Id);\r\n\r\n if (fromAccount == null || toAccount == null || error) {\r\n return <CError error=\"Could not load account details\" />\r\n }\r\n\r\n const sendPaymentRequest = () => {\r\n const input = createTransferVariable(\r\n fromAccountId,\r\n formState.amount!,\r\n formState.transferDescription || \"\",\r\n formState.transferReference || \"\",\r\n formState\r\n )\r\n input.TransferType = transferTypes.InterAccountTransferTypeId;\r\n input.FromAccountId = fromAccountId;\r\n input.ToAccountId = interAccountToAccount?.Id;\r\n\r\n requestPayment({\r\n variables: {\r\n input: input\r\n },\r\n refetchQueries: [\r\n {\r\n query: AccountFundsTransfersDocument,\r\n variables: { accountIdOrNumber: fromAccount.Id }\r\n },\r\n {\r\n query: AccountFundsTransfersDocument,\r\n variables: { accountIdOrNumber: toAccount.Id }\r\n }\r\n ]\r\n }).then(x => {\r\n const fundsTransferId = x.data?.requestPayAnyoneTransfer?.FundsTransfer?.Id;\r\n if (x.data?.requestPayAnyoneTransfer?.Success === true) {\r\n confirmTransfer(fundsTransferId);\r\n }\r\n })\r\n }\r\n\r\n return (\r\n <div className=\"interaccount-confirm-page\">\r\n <Title title=\"Confirm Inter-Account Transfer\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader accountNumber={fromAccount.Number || \"\"} amount={formState.amount} />\r\n <DueOnListItems\r\n recurrence={formState.recurrenceEnd || \"\"}\r\n paymentDate={formState.startingOn}\r\n frequency={formState.frequency || \"\"}\r\n endDate={formState.endingOn}\r\n repeats={formState.numberOfTimesAmount}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Account\"\r\n descriptionText={toAccount?.Number}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={formState.transferDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={formState.transferReference}\r\n />\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"cancel\"\r\n value=\"Go Back\"\r\n className=\"btn btn-secondary\"\r\n onClick={() => modifyTransfer()}\r\n disabled={paymentData.loading}\r\n />\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Confirm\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n />\r\n <Alert\r\n visible={paymentData.error != null || paymentData.data?.requestPayAnyoneTransfer?.Success === false}\r\n message={`Error submitting inter-account request. ${paymentData.data?.requestPayAnyoneTransfer?.Message}`}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmInterAccount;\r\n","import { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useFinanceSummaryQueryQuery } from \"generated/generated-models\";\r\nimport React from \"react\";\r\nimport DueOnListItems from \"../utilities/list/DueOnListItems\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { InterAccountFormProps } from \"./CreateInterAccount\";\r\n\r\nconst InterAccountReceipt = () => {\r\n const { data, loading, error } = useFinanceSummaryQueryQuery();\r\n const { formState, accountId: fromAccountId, interAccountToAccount, returnToHome } = useTransferWizard<InterAccountFormProps>();\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n\r\n const accounts = data?.financeSummary?.Instruments\r\n ?.flatMap(instrument => instrument?.Accounts);\r\n\r\n const fromAccount = accounts\r\n ?.find(account => account?.Id === fromAccountId);\r\n\r\n const toAccount = accounts\r\n ?.find(account => account?.Id === interAccountToAccount?.Id);\r\n\r\n if (fromAccount == null || toAccount == null || error != null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n return (\r\n <div className=\"interaccount-receipt-page\">\r\n <Title title=\"Inter-Account Transfer Complete\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader\r\n accountNumber={toAccount.Number || \"\"}\r\n amount={formState.amount || 0}\r\n />\r\n\r\n <DueOnListItems\r\n recurrence={formState.recurrenceEnd || \"\"}\r\n paymentDate={formState.startingOn}\r\n frequency={formState.frequency || \"\"}\r\n endDate={formState.endingOn}\r\n repeats={formState.numberOfTimesAmount}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Account\"\r\n descriptionText={toAccount?.Number}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={formState.transferDescription}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Reference\"\r\n descriptionText={formState.transferReference}\r\n />\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Ok\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => returnToHome(fromAccount.Number!)}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default InterAccountReceipt;\r\n","import { useInstrumentAuthorityAccountsQuery } from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport Title from \"app/components/Title\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\nimport FromAccountCard from \"app/components/fundsTransferCards/FromAccountCard\";\r\nimport Button from \"app/components/Button\";\r\nimport { useHistory } from \"react-router\";\r\n\r\nexport type Props = {\r\n accountId: string;\r\n}\r\n\r\nconst SelectInterAccount = () => {\r\n const wizard = useTransferWizard();\r\n const { data, loading, error } = useInstrumentAuthorityAccountsQuery({\r\n variables: {\r\n account: wizard.accountId,\r\n },\r\n fetchPolicy: \"network-only\"\r\n });\r\n const history = useHistory();\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.instrumentByAccount?.Accounts === null) {\r\n return <CError error=\"Could not load Pay Anyone details\" />\r\n }\r\n\r\n const currentAccount = data?.instrumentByAccount?.Accounts?.filter(x => x?.Id === wizard.accountId)[0];\r\n\r\n const accounts = makeNonEmpty(data?.instrumentByAccount?.Accounts)?.filter(x => x?.CurrentUserAccountAuthority?.Operate && x.Id !== wizard.accountId);\r\n\r\n return (\r\n <div>\r\n <div className=\"select-destination\">\r\n <Title\r\n title=\"Select To Account\"\r\n subtitle={`From Account ${currentAccount?.Number}`}\r\n />\r\n {accounts.length === 0 &&\r\n <div>\r\n <div className=\"alert alert-warning\">No Accounts available for selection</div>\r\n </div>}\r\n <FundsTransferCardsContainer>\r\n {accounts.map(x =>\r\n <FromAccountCard \r\n account={x} \r\n onClick={() => wizard.confirmInterAccount(x)} />\r\n )}\r\n </FundsTransferCardsContainer>\r\n </div>\r\n <br />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Go Back\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SelectInterAccount;\r\n","import InterAccountPage from \"./InterAccountPage\";\r\n\r\nexport default InterAccountPage;\r\n","import CreateInterAccount from \"./CreateInterAccount\";\r\nimport ConfirmInterAccount from \"./ConfirmInterAccount\";\r\nimport InterAccountReceipt from \"./InterAccountReceipt\";\r\nimport TransferWizard from \"../utilities/TransferWizard\";\r\nimport SelectInterAccount from \"./SelectInterAccount\";\r\n\r\nconst InterAccountPage = (props: { accountId: string }) => {\r\n return (\r\n <TransferWizard accountId={props.accountId} useSelectionPage={true} authorityType={\"operate\"}>\r\n <TransferWizard.Create>\r\n <CreateInterAccount />\r\n </TransferWizard.Create>\r\n <TransferWizard.Confirm>\r\n <ConfirmInterAccount />\r\n </TransferWizard.Confirm>\r\n <TransferWizard.Receipt>\r\n <InterAccountReceipt />\r\n </TransferWizard.Receipt>\r\n <TransferWizard.Select>\r\n <SelectInterAccount />\r\n </TransferWizard.Select>\r\n </TransferWizard>\r\n )\r\n}\r\n\r\nexport default InterAccountPage;\r\n","import Input from \"app/components/Input\";\r\nimport React, { useState } from \"react\";\r\nimport Form from \"app/components/Form\";\r\nimport {\r\n BpayBiller,\r\n BpayBillerHistoryDocument,\r\n useCreateBpayBillerMutation\r\n} from \"generated/generated-models\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik } from \"formik\";\r\nimport { Validate } from \"./AddBpayBillerValidate\";\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport Button from \"app/components/Button\";\r\n\r\nexport type AddBpayFormProps = {\r\n billerCode?: number;\r\n customerReferenceNumber: string;\r\n billerDescription?: string;\r\n twoFactorToken?: string;\r\n}\r\n\r\ntype AddBpayBillerProps = {\r\n goBack?: () => void;\r\n billerAdded?: (biller: BpayBiller) => void;\r\n}\r\n\r\ntype AddBpayBillerMFAProps =\r\n | \"WithoutMFA\"\r\n | \"WithMFA\"\r\n\r\nconst AddBpayBiller = ({\r\n goBack = () => { },\r\n billerAdded = (_) => { } }: AddBpayBillerProps) => {\r\n const [createBiller, { data, error }] = useCreateBpayBillerMutation();\r\n const initialValues: AddBpayFormProps = {\r\n billerDescription: \"\",\r\n billerCode: undefined,\r\n customerReferenceNumber: \"\"\r\n }\r\n\r\n const [addBpayBillerPage, setAddBpayBillerPage] = useState<AddBpayBillerMFAProps>(\"WithoutMFA\");\r\n\r\n const handleRequiresMFA = () => {\r\n setAddBpayBillerPage(\"WithMFA\")\r\n };\r\n\r\n const handleSubmit = async (values: AddBpayFormProps) => {\r\n const result = await createBiller(\r\n {\r\n variables: {\r\n input: {\r\n BillerCode: (values.billerCode!),\r\n CustomerReferenceNumber: values.customerReferenceNumber,\r\n BillerDescription: values.billerDescription,\r\n TwoFactorToken: values.twoFactorToken\r\n }\r\n },\r\n refetchQueries: [{ query: BpayBillerHistoryDocument }]\r\n }\r\n );\r\n\r\n if (result.data?.createBpayBiller?.Code === \"499\") {\r\n handleRequiresMFA();\r\n }\r\n\r\n if (result.data?.createBpayBiller?.NewBpayBiller != null) {\r\n billerAdded(result.data.createBpayBiller.NewBpayBiller);\r\n }\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => handleSubmit(values)}\r\n validationSchema={() => Validate(addBpayBillerPage === \"WithMFA\")}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <h2>Add Biller</h2>\r\n <Form>\r\n <Input\r\n name={nameof<AddBpayFormProps>(\"billerCode\")}\r\n type=\"wholeNumber\"\r\n label=\"Biller code\"\r\n />\r\n\r\n <Input\r\n name={nameof<AddBpayFormProps>(\"customerReferenceNumber\")}\r\n type=\"text\"\r\n label=\"Customer reference number\"\r\n />\r\n\r\n <Input\r\n name={nameof<AddBpayFormProps>(\"billerDescription\")}\r\n type=\"text\"\r\n label=\"Biller name\"\r\n helpText=\"Biller name is optional\"\r\n printableOnly = {true}\r\n />\r\n\r\n {addBpayBillerPage === \"WithMFA\" &&\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<AddBpayFormProps>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n />\r\n }\r\n\r\n {data?.createBpayBiller?.Message != null &&\r\n <div className=\"alert alert-danger\">\r\n {data?.createBpayBiller.Message}\r\n </div>}\r\n\r\n {error != null &&\r\n <div className=\"alert alert-danger\">\r\n Error submitting new biller request. Please try again\r\n </div>}\r\n\r\n <Button\r\n role=\"secondary\"\r\n onClick={goBack}\r\n disabled={isSubmitting}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n >\r\n Create Biller\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default AddBpayBiller;\r\n","import * as yup from \"yup\";\r\nimport { AddBpayFormProps } from \"./AddBpayBiller\";\r\nimport { getSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => {\r\n const schema: yup.ObjectSchema<AddBpayFormProps> = yup.object({\r\n billerCode: yup\r\n .number()\r\n .label(\"Biller code\")\r\n .required()\r\n .test(\"length\", \"Biller code must be at least 4 digits\", val => {\r\n if (val == null) {\r\n return true;\r\n } else if (val.toString().length >= 4) {\r\n return true;\r\n }\r\n return false;\r\n }),\r\n\r\n customerReferenceNumber: yup\r\n .string()\r\n .label(\"Reference number\")\r\n .required()\r\n .max(20)\r\n .matches(/^[0-9]+$/, \"Customer reference should only contain numbers\"),\r\n\r\n billerDescription: yup\r\n .string()\r\n .label(\"Name\")\r\n .test(\r\n 'Must have basic latin characters only',\r\n 'You must only enter basic latin characters',\r\n function(transferDescription) {\r\n const mystring: string = String(transferDescription);\r\n var containsNonPrintable : boolean = false;\r\n \r\n for (let step = 0; step < mystring.length; step++) {\r\n var ascii = mystring.charCodeAt(step);\r\n if(ascii < 32 || ascii > 127)\r\n {\r\n containsNonPrintable = true;\r\n }\r\n }\r\n return (!containsNonPrintable);\r\n }\r\n ) \r\n .optional()\r\n .max(20),\r\n\r\n twoFactorToken: getSecurityTokenValidator(requiresMfa)\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import { faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport classNames from \"classnames\";\r\nimport { groupBy } from \"core/util/array\";\r\nimport { BpayBiller, useBpayBillerHistoryQuery } from \"generated/generated-models\";\r\nimport React, { useState } from \"react\";\r\nimport AddBpayBiller from \"../ManageBpayBillerHistory/AddBpayBiller\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\n\r\ntype BillerCardProps = { letter: string, billers: BpayBiller[] };\r\n\r\nconst BillerCard = ({ letter, billers }: BillerCardProps) => {\r\n const transferWizard = useTransferWizard();\r\n billers = billers.sort((a, b) => a.BillerName! > b.BillerName! ? 1 : -1)\r\n\r\n return (\r\n <div className=\"select-destination\">\r\n <div className=\"card-header\">\r\n {letter}\r\n </div>\r\n <ul className=\"list-group list-group-flush\">\r\n {billers\r\n .map(biller => {\r\n const billerNameClass = classNames({ \"text-muted\": biller.BillerDescription != null })\r\n return (\r\n <li className=\"list-group-item\" key={biller.Id} onClick={() => transferWizard.confirmBiller(biller)}>\r\n <div>{biller.BillerDescription}</div>\r\n <div className={billerNameClass}>{biller.BillerName}</div>\r\n <div className=\"text-muted\">{biller.Billercode} {biller.CustomerReferenceNumber}</div>\r\n </li>\r\n )\r\n })}\r\n </ul>\r\n </div>\r\n )\r\n}\r\n\r\nconst SelectBpay = () => {\r\n const { loading, error, data } = useBpayBillerHistoryQuery();\r\n const [createNewBiller, setCreateNewBiller] = useState(false);\r\n const transferWizard = useTransferWizard();\r\n\r\n const handleCreateNewBillerClick = () => {\r\n setCreateNewBiller(true);\r\n }\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.userSession?.Party?.BpayBillerHistory == null) {\r\n return <CError error=\"Could not load Redraw details\" />\r\n }\r\n\r\n if (createNewBiller) {\r\n return <AddBpayBiller\r\n goBack={() => setCreateNewBiller(false)}\r\n billerAdded={biller => transferWizard.confirmBiller(biller)}\r\n />\r\n }\r\n\r\n const billerHistory = groupBy(data?.userSession?.Party?.BpayBillerHistory,\r\n (biller) => (biller.BillerDescription ?? biller.BillerName!).toUpperCase()[0],\r\n (firstKey, secondKey) => firstKey.localeCompare(secondKey))\r\n\r\n return (\r\n <div>\r\n <Title title=\"Select a Biller\" />\r\n <div className=\"card\">\r\n <div className=\"select-destination select-new\">\r\n <div className=\"card-header\">\r\n New Biller\r\n </div>\r\n <ul className=\"list-group list-group-flush\">\r\n <li className=\"list-group-item\" onClick={handleCreateNewBillerClick}>\r\n <div>Pay new biller</div>\r\n <div><FontAwesomeIcon icon={faPlus} size=\"lg\" /></div>\r\n </li>\r\n </ul>\r\n </div>\r\n {billerHistory.map(x =>\r\n <BillerCard billers={x.elements} letter={x.key} key={x.key} />\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SelectBpay;\r\n","import BankingCutOff from \"app/components/BankingCutoff\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Form from \"app/components/Form\";\r\nimport Input from \"app/components/Input\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik, useFormikContext } from \"formik\";\r\nimport {\r\n RecurrenceEndEnum,\r\n TaskFrequencyPeriod,\r\n useAccountFundsTransfersQuery\r\n} from \"generated/generated-models\";\r\nimport TransferScheduleInput, { TransferScheduleInputValues } from \"../utilities/TransferScheduleInput\";\r\nimport { Validate } from \"./CreateBpayValidate\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport Title from \"app/components/Title\";\r\nimport FutureDatedWarningText from \"app/components/FutureDatedWarningText\";\r\nimport FromAccountCard from \"app/components/fundsTransferCards/FromAccountCard\";\r\nimport FundsTransferCardsContainer from \"app/components/fundsTransferCards/FundsTransferCardsContainer\";\r\nimport PaymentCard from \"app/components/PaymentCard/PaymentCard\";\r\n\r\nexport type BpayFormProps = {\r\n transferDescription?: string;\r\n amount?: number;\r\n} & TransferScheduleInputValues\r\n\r\ntype Props = {\r\n accountId: string;\r\n}\r\n\r\nconst Payment = (props: Props) => {\r\n const { bpayBiller, gotoSelect, changeAccount, returnToHome } = useTransferWizard();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: props.accountId }\r\n });\r\n const { values, isSubmitting } = useFormikContext<BpayFormProps>();\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error || data?.accountByIdOrNumber == null) {\r\n return <CError error=\"Could not load BPAY details\" />\r\n }\r\n\r\n return (\r\n <div className=\"bpay-create-page\">\r\n <Title\r\n title=\"Pay a BPAY Bill\"\r\n />\r\n\r\n <FundsTransferCardsContainer>\r\n <FromAccountCard account={data.accountByIdOrNumber} title=\"From\" onClick={changeAccount} />\r\n <PaymentCard\r\n title=\"To\"\r\n name={bpayBiller?.BillerDescription || bpayBiller?.BillerName}\r\n details={`BILLER ${bpayBiller?.Billercode} REF ${bpayBiller?.CustomerReferenceNumber}`}\r\n onClick={gotoSelect}\r\n />\r\n </FundsTransferCardsContainer>\r\n\r\n <Form>\r\n <Input\r\n name={nameof<BpayFormProps>(\"transferDescription\")}\r\n type=\"text\"\r\n helpText=\"This will appear in your account\"\r\n label=\"Description\"\r\n printableOnly = {true}\r\n />\r\n\r\n <Input\r\n name={nameof<BpayFormProps>(\"amount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n\r\n <TransferScheduleInput\r\n values={values}\r\n config={{\r\n minStartingDate: new Date(),\r\n minUntilDate: new Date(values.startingOn),\r\n }}\r\n />\r\n\r\n <FutureDatedWarningText date={values.startingOn} />\r\n\r\n <BankingCutOff />\r\n\r\n <input\r\n type=\"submit\"\r\n id=\"cancel\"\r\n value=\"Go Back\"\r\n className=\"btn btn-secondary\"\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n disabled={isSubmitting}\r\n />\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Pay Bill\"\r\n className=\"btn btn-primary btn-submit\"\r\n disabled={isSubmitting}\r\n />\r\n </Form>\r\n </div>\r\n )\r\n}\r\n\r\nconst PaymentForm = () => {\r\n const wizard = useTransferWizard<BpayFormProps>();\r\n\r\n const initialValues: BpayFormProps = {\r\n amount: undefined,\r\n transferDescription: \"\",\r\n endingOn: undefined,\r\n startingOn: new Date(),\r\n frequency: TaskFrequencyPeriod.Once,\r\n recurrenceEnd: RecurrenceEndEnum.Never,\r\n numberOfTimesAmount: undefined,\r\n\r\n ...wizard.formState\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => wizard.createTransfer(values)}\r\n validationSchema={Validate(wizard.accountId)}\r\n >\r\n <Payment accountId={wizard.accountId} />\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default PaymentForm;\r\n","import * as yup from \"yup\";\r\nimport { BpayFormProps } from \"./CreateBpay\";\r\nimport { validateLimit, validateSchedule, validateTransferDescription } from \"../utilities/validation\";\r\n\r\nexport const Validate = (accountId: string) => {\r\n const schema: yup.ObjectSchema<BpayFormProps> = yup.object({\r\n transferDescription: validateTransferDescription(\"Description\"),\r\n\r\n startingOn: yup\r\n .date()\r\n .required(),\r\n\r\n ...validateLimit(accountId, \"redraw\"),\r\n ...validateSchedule()\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { BpayFormProps } from \"./CreateBpay\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport DueOnListItems from \"../utilities/list/DueOnListItems\";\r\nimport {\r\n useAccountFundsTransfersQuery,\r\n useBpayTransferRequestMutation\r\n} from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport Title from \"app/components/Title\";\r\nimport { createTransferTimes } from \"../utilities/fundsTransfers\";\r\n\r\nconst ConfirmPayment = () => {\r\n const { accountId } = useTransferWizard();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId }\r\n });\r\n const [bpayTransfer, paymentData] = useBpayTransferRequestMutation();\r\n const { bpayBiller, formState, modifyTransfer, confirmTransfer } = useTransferWizard<BpayFormProps>();\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\r\n }\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (data?.accountByIdOrNumber == null || error) {\r\n return <CError error=\"Could not load account details\" />\r\n }\r\n\r\n if (paymentData.error != null) {\r\n return <CError error=\"Error submitting payment request. Please try again\" />\r\n }\r\n\r\n const sendPaymentRequest = () => {\r\n const transferTimes = createTransferTimes(formState);\r\n\r\n bpayTransfer({\r\n variables: {\r\n input: {\r\n AccountId: accountId,\r\n Amount: formState.amount!,\r\n Billercode: bpayBiller?.Billercode,\r\n CustomerReferenceNumber: bpayBiller?.CustomerReferenceNumber!,\r\n SaveBillerDetails: false,\r\n BillerDescription: bpayBiller?.BillerDescription || bpayBiller?.BillerName,\r\n WithdrawalDescription: formState.transferDescription,\r\n StartingOn: transferTimes.StartingOn,\r\n EndingOn: transferTimes.EndingOn,\r\n Frequency: transferTimes.Frequency,\r\n NumberOfTimesAmount: transferTimes.NumberOfTimesAmount,\r\n RecurrenceEnd: transferTimes.RecurrenceEnd\r\n }\r\n }\r\n }).then(x => {\r\n const fundsTransferId = x.data?.bpayTransferRequest?.FundsTransfer?.Id;\r\n confirmTransfer(fundsTransferId);\r\n })\r\n }\r\n\r\n const accountNumber = data.accountByIdOrNumber.Number;\r\n\r\n return (\r\n <div className=\"bpay-confirm-page\">\r\n <Title title=\"Confirm BPAY\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader accountNumber={accountNumber || \"\"} amount={formState.amount} />\r\n <DueOnListItems\r\n recurrence={formState.recurrenceEnd || \"\"}\r\n paymentDate={formState.startingOn}\r\n frequency={formState.frequency || \"\"}\r\n endDate={formState.endingOn}\r\n repeats={formState.numberOfTimesAmount}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"BSB\"\r\n keyText=\"Biller\"\r\n descriptionText={bpayBiller?.BillerDescription || bpayBiller?.BillerName}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Biller Code\"\r\n descriptionText={bpayBiller?.Billercode}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"CRN\"\r\n keyText=\"Customer Reference\"\r\n descriptionText={bpayBiller?.CustomerReferenceNumber}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={formState.transferDescription}\r\n />\r\n\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"cancel\"\r\n value=\"Go Back\"\r\n className=\"btn btn-secondary\"\r\n onClick={() => modifyTransfer()}\r\n disabled={paymentData.loading}\r\n />\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Confirm\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmPayment;\r\n","import { CError } from \"app/common/CError\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupHeader from \"../utilities/list/ListGroupHeader\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { BpayFormProps } from \"./CreateBpay\";\r\n\r\nconst PaymentReceipt = () => {\r\n const { transferId, bpayBiller, accountId, returnToHome } = useTransferWizard<BpayFormProps>();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId },\r\n fetchPolicy: \"network-only\"\r\n });\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n\r\n if (error != null || data?.accountByIdOrNumber?.ProcessedAccountFundsTransfers == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n const fundsTransfer = data.accountByIdOrNumber.ProcessedAccountFundsTransfers\r\n .concat(data.accountByIdOrNumber.PendingAccountFundsTransfers)\r\n .find(x => x?.Id === transferId);\r\n\r\n if (fundsTransfer == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n return (\r\n <div className=\"bpay-receipt-page\">\r\n <Title title=\"BPAY Complete\" />\r\n\r\n <ListGroup>\r\n <ListGroupHeader\r\n accountNumber={data.accountByIdOrNumber.Number || \"\"}\r\n amount={fundsTransfer?.Amount || 0}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Receipt\"\r\n keyText=\"Receipt\"\r\n descriptionText={fundsTransfer.ReceiptNumber}\r\n />\r\n\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n\r\n <ListGroupItem\r\n iconType=\"BSB\"\r\n keyText=\"Biller\"\r\n descriptionText={bpayBiller?.BillerDescription || bpayBiller?.BillerName}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Biller Code\"\r\n descriptionText={bpayBiller?.Billercode}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"CRN\"\r\n keyText=\"Customer Reference\"\r\n descriptionText={bpayBiller?.CustomerReferenceNumber}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Description\"\r\n keyText=\"Description\"\r\n descriptionText={fundsTransfer.WithdrawalDescription}\r\n />\r\n\r\n </ListGroup>\r\n <input\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Ok\"\r\n className=\"btn btn-primary btn-submit\"\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default PaymentReceipt;\r\n","import BPayRequest from \"./BpayPage\";\r\n\r\nexport default BPayRequest;\r\n","import SelectBpay from \"./SelectBpay\";\r\nimport CreateBpay from \"./CreateBpay\";\r\nimport ConfirmBpay from \"./ConfirmBpay\";\r\nimport BpayReciept from \"./BpayReceipt\";\r\nimport TransferWizard from \"../utilities/TransferWizard\";\r\n\r\nconst BpayPage = (props: { accountId: string }) => {\r\n return (\r\n <TransferWizard accountId={props.accountId} useSelectionPage={true} authorityType={\"bpay\"}>\r\n <TransferWizard.Select>\r\n <SelectBpay />\r\n </TransferWizard.Select>\r\n <TransferWizard.Create>\r\n <CreateBpay />\r\n </TransferWizard.Create>\r\n <TransferWizard.Confirm>\r\n <ConfirmBpay />\r\n </TransferWizard.Confirm>\r\n <TransferWizard.Receipt>\r\n <BpayReciept />\r\n </TransferWizard.Receipt>\r\n </TransferWizard>\r\n )\r\n}\r\n\r\nexport default BpayPage;\r\n","import React from \"react\";\r\n\r\nconst BpayText = () => (\r\n <>\r\n <span>B<span className=\"bpay\">PAY<span className=\"registered\">®</span></span></span>\r\n </>\r\n)\r\n\r\nexport default BpayText;\r\n","import React, { useState } from \"react\";\r\nimport {\r\n BpayBillerHistoryDocument,\r\n useBpayBillerHistoryQuery,\r\n useDeleteBpayPartyBillerMutation\r\n} from \"generated/generated-models\";\r\nimport {\r\n StringIsEqual,\r\n} from \"core/util/stringExtensions\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport BpayText from \"app/components/BpayText\"\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport Button from \"app/components/Button\";\r\n\r\ntype BpayBiller = {\r\n id: string,\r\n code: string,\r\n description: string,\r\n name: string,\r\n customerReferenceNumber: string,\r\n}\r\n\r\nconst billerDisplayName = (biller: BpayBiller) => {\r\n return `${biller.description === \"\" ? biller.name : biller.description} (${StringIsEqual(biller.description, biller.name) ? \"\" : biller.name.trim()})`;\r\n};\r\n\r\nconst BillerHistoryRow = (props: { biller: BpayBiller, deleteBiller: (biller: BpayBiller) => void }) => {\r\n return (\r\n <tr>\r\n <td>{props.biller.code}</td>\r\n <td>\r\n {billerDisplayName(props.biller)}\r\n </td>\r\n <td>{props.biller.customerReferenceNumber}</td>\r\n <td className=\"text-right\">\r\n <button\r\n onClick={() => props.deleteBiller(props.biller)}\r\n className=\"btn btn-mini btn-danger\"\r\n >\r\n Delete\r\n </button>\r\n </td>\r\n </tr>\r\n );\r\n};\r\n\r\ninterface Props {\r\n billerHistory: BpayBiller[];\r\n deleteBiller: (biller: BpayBiller) => void;\r\n}\r\nconst ManageBpayBillerHistoryView: React.FC<Props> = ({\r\n billerHistory,\r\n deleteBiller,\r\n}) => {\r\n return (\r\n <div className=\"sub-wrap\">\r\n <h2>Manage your saved <BpayText /> billers</h2>\r\n\r\n <table className=\"table\">\r\n <thead>\r\n <tr>\r\n <th>Biller Code</th>\r\n <th>Biller Name</th>\r\n <th>Customer Reference Number</th>\r\n <th />\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {(billerHistory).map(biller =>\r\n <BillerHistoryRow\r\n key={biller.code}\r\n biller={biller}\r\n deleteBiller={deleteBiller}\r\n />)}\r\n {billerHistory.length === 0 && (\r\n <tr>\r\n <td colSpan={4}>You have no <BpayText /> billers saved</td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n};\r\n\r\nconst ManageBPayBillerHistory = () => {\r\n const [billerToDelete, setBillerToDelete] = useState<BpayBiller | undefined>(undefined);\r\n const { data, loading, error } = useBpayBillerHistoryQuery();\r\n const [deleteBPayMutation, { loading: deleteBpayLoading }] = useDeleteBpayPartyBillerMutation();\r\n\r\n const deleteBPay = () => {\r\n if (billerToDelete != null) {\r\n deleteBPayMutation({\r\n variables: { input: { PartyBillerHistoryId: billerToDelete.id } },\r\n refetchQueries: [\r\n { query: BpayBillerHistoryDocument },\r\n ],\r\n }).then(() => setBillerToDelete(undefined));\r\n }\r\n }\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error != null || data?.userSession?.Party?.BpayBillerHistory == null) {\r\n return <CError error=\"Could not retrieve BPAY Biller History\" />\r\n }\r\n\r\n if (billerToDelete == null) {\r\n const bpayHistory = data.userSession.Party.BpayBillerHistory.map(x => {\r\n return {\r\n code: x?.Billercode as string,\r\n id: x?.Id || \"\",\r\n description: x?.BillerDescription || \"\",\r\n customerReferenceNumber: x?.CustomerReferenceNumber || \"\",\r\n name: x?.BillerName || \"\"\r\n }\r\n });\r\n\r\n return <ManageBpayBillerHistoryView billerHistory={bpayHistory} deleteBiller={setBillerToDelete} />\r\n }\r\n\r\n return (\r\n\r\n <div className=\"sub-wrap form-wrap\">\r\n <h2>Confirm Delete Biller</h2>\r\n\r\n <ListGroup>\r\n <li className=\"list-group-item confirm-item-header\">\r\n <span className=\"list-group-item-key\">{billerDisplayName(billerToDelete)}</span>\r\n </li>\r\n\r\n <ListGroupItem\r\n iconType=\"Reference\"\r\n keyText=\"Biller Code\"\r\n descriptionText={billerToDelete.code}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"Receipt\"\r\n keyText=\"Customer Reference Number\"\r\n descriptionText={billerToDelete.customerReferenceNumber}\r\n />\r\n\r\n </ListGroup>\r\n\r\n <div className=\"button-group\">\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => setBillerToDelete(undefined)}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n role=\"primary\"\r\n onClick={() => deleteBPay()}\r\n loading={deleteBpayLoading}\r\n >\r\n Delete Biller\r\n </Button>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ManageBPayBillerHistory;\r\n","import ManageBpayBillerHistory from \"./ManageBpayBillerHistory\";\r\n\r\nexport default ManageBpayBillerHistory;\r\n","import React, { Fragment, useState } from \"react\";\r\nimport {\r\n PartyBankAccount,\r\n CurrentUserPartyBankAccountsDocument,\r\n useCurrentUserPartyBankAccountsQuery,\r\n useDeletePartyBankAccountMutation,\r\n} from \"generated/generated-models\";\r\n\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CApolloError } from \"app/common/CApolloError\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport ListGroup from \"../utilities/list/ListGroup\";\r\nimport ListGroupItem from \"../utilities/list/ListGroupItem\";\r\nimport Button from \"app/components/Button\";\r\n\r\ninterface RowProps {\r\n pba: PartyBankAccount;\r\n deletePartyBankAccount: (pba: PartyBankAccount) => void;\r\n}\r\n\r\nconst BankAccountRow = ({ pba, deletePartyBankAccount }: RowProps) => {\r\n return (\r\n <tr key={pba.Id}>\r\n <td>\r\n {(pba.BankAccount && pba.BankAccount.AccountName) || pba.Description}\r\n </td>\r\n <td>{pba.BankAccount && pba.BankAccount.BankIdentifierText}</td>\r\n <td>{pba.BankAccount && pba.BankAccount.AccountNumber}</td>\r\n <td className=\"text-right\">\r\n {pba.IsUsedByTransfer && (\r\n <div className=\"danger\">Account in use for pending transfer</div>\r\n )}\r\n {!pba.IsUsedByTransfer && (\r\n <button\r\n onClick={() => deletePartyBankAccount(pba)}\r\n className=\"btn btn-mini btn-danger\"\r\n >\r\n Delete\r\n </button>\r\n )}\r\n </td>\r\n </tr>\r\n );\r\n};\r\n\r\ninterface ViewProps {\r\n bankAccounts: PartyBankAccount[];\r\n deletePartyBankAccount: (pba: PartyBankAccount) => void;\r\n}\r\nconst ManagePayAnyoneAccountsView: React.FC<ViewProps> = ({\r\n bankAccounts,\r\n deletePartyBankAccount,\r\n}) => {\r\n return (\r\n <div className=\"sub-wrap\">\r\n <h2>Manage your saved pay anyone bank accounts</h2>\r\n\r\n <table className=\"table\">\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>BSB</th>\r\n <th>Account</th>\r\n <th />\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {(bankAccounts || []).map(biller =>\r\n BankAccountRow({\r\n pba: biller,\r\n deletePartyBankAccount:\r\n deletePartyBankAccount ||\r\n (() => {\r\n return;\r\n }),\r\n })\r\n )}\r\n {bankAccounts.length <= 0 && (\r\n <tr>\r\n <td colSpan={4}>You have no saved pay anyone bank accounts</td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n};\r\n\r\nconst ManagePayAnyoneAccounts = () => {\r\n const [partyBankAccountToBeDeleted, setPartyBankAccountToBeDeleted] = useState<PartyBankAccount | undefined>(undefined)\r\n const [deletePartyBankAccountMutation, { loading: deletePbaLoading, error: deletePbaError }] = useDeletePartyBankAccountMutation()\r\n\r\n const deletePartyBankAccount = () => {\r\n deletePartyBankAccountMutation({\r\n variables: {\r\n input: { PartyBankAccountId: partyBankAccountToBeDeleted?.Id },\r\n },\r\n refetchQueries: [\r\n { query: CurrentUserPartyBankAccountsDocument },\r\n ],\r\n }).then(() => setPartyBankAccountToBeDeleted(undefined));\r\n }\r\n\r\n const { data, loading, error } = useCurrentUserPartyBankAccountsQuery()\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n if (error) {\r\n return <CApolloError\r\n error={error!}\r\n header={\"Could not load bank accounts\"}\r\n />\r\n }\r\n\r\n if (partyBankAccountToBeDeleted) {\r\n return (\r\n\r\n\r\n <div className=\"sub-wrap form-wrap\">\r\n <h2>Confirm Delete Pay Anyone Account</h2>\r\n\r\n <ListGroup>\r\n <li className=\"list-group-item confirm-item-header\">\r\n <span className=\"list-group-item-key\">{partyBankAccountToBeDeleted.BankAccount?.AccountName}</span>\r\n </li>\r\n\r\n <ListGroupItem\r\n iconType=\"BSB\"\r\n keyText=\"BSB\"\r\n descriptionText={partyBankAccountToBeDeleted.BankAccount?.BankIdentifierText}\r\n />\r\n\r\n <ListGroupItem\r\n iconType=\"AccountNumber\"\r\n keyText=\"Account\"\r\n descriptionText={partyBankAccountToBeDeleted.BankAccount?.AccountNumber}\r\n />\r\n\r\n\r\n </ListGroup>\r\n <div className=\"button-group\">\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => setPartyBankAccountToBeDeleted(undefined)}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n role=\"primary\"\r\n onClick={deletePartyBankAccount}\r\n loading={deletePbaLoading}\r\n >\r\n Delete Pay Anyone Account\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <Fragment>\r\n\r\n {deletePbaError && (\r\n <CApolloError\r\n error={deletePbaError}\r\n header={\"Could not remove bank account\"}\r\n />\r\n )}\r\n <ManagePayAnyoneAccountsView\r\n bankAccounts={makeNonEmpty(\r\n data?.userSession?.Party?.PartyBankAccounts\r\n ).filter(x => !x.Deleted && x.PayAnyone)}\r\n deletePartyBankAccount={setPartyBankAccountToBeDeleted}\r\n />\r\n\r\n </Fragment>\r\n );\r\n}\r\n\r\nexport { ManagePayAnyoneAccounts };\r\n","import classNames from \"classnames\"\r\nimport React from \"react\"\r\nimport { Link } from \"react-router-dom\"\r\n\r\ntype Props = {\r\n title: string;\r\n link: string\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst ActionCard: React.FC<Props> = (props) => {\r\n const cardClassName = classNames(\r\n \"card h-100 transfer-card\",\r\n props.className,\r\n {\"transfer-card-disabled\": props.disabled}\r\n )\r\n\r\n const Header = () => {\r\n if(props.disabled === true) {\r\n return <h5 className=\"card-title\">{props.title}</h5>\r\n } else {\r\n return (\r\n <h5 className=\"card-title\">\r\n <Link to={x => `${x.pathname}/${props.link}`} className=\"stretched-link\" >{props.title}</Link>\r\n </h5>\r\n )\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"col px-1 pb-2\">\r\n <div className={cardClassName}>\r\n <div className=\"card-body\">\r\n <Header />\r\n <div className=\"card-text\">\r\n {props.children}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ActionCard;\r\n","import { Link } from \"react-router-dom\";\r\nimport MoneyFormatted from \"../../components/MoneyFormatted\";\r\nimport ActionCard from \"../utilities/ActionCard\";\r\nimport React from \"react\";\r\nimport { useInstrumentAuthorityAccountsQuery } from \"generated/generated-models\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport BpayText from \"app/components/BpayText\";\r\n\r\nconst BpayCard = () => (\r\n <ActionCard title=\"BPAY\" link=\"BPAY\">\r\n <img src=\"/Images/bpay-blue.png\" alt=\"BPAY\" className=\"bpay-image\" />\r\n <p>Pay a bill using <BpayText/></p>\r\n </ActionCard>\r\n);\r\n\r\ntype PayAnyoneProps = {\r\n DailyPayAnyoneLimit: number,\r\n RemainingDailyPayAnyoneLimit: number\r\n}\r\nconst PayAnyoneAllowedCard: React.FC<PayAnyoneProps> = (props) => (\r\n <ActionCard title=\"Pay Anyone\" link=\"PayAnyone\">\r\n <p className=\"action-card-text\">\r\n Make a payment to another Australian bank account\r\n </p>\r\n <div className=\"row\">\r\n <div className=\"col-md-6\">\r\n <div className=\"amount-value\">\r\n <MoneyFormatted amount={props.RemainingDailyPayAnyoneLimit} />\r\n </div>\r\n <small className=\"amount-label\">Remaining today</small>\r\n </div>\r\n <div className=\"col-md-6 \">\r\n <div className=\"amount-value\">\r\n <MoneyFormatted amount={props.DailyPayAnyoneLimit} />\r\n </div>\r\n <small className=\"amount-label\">Daily limit</small>\r\n </div>\r\n </div>\r\n </ActionCard>\r\n);\r\n\r\ntype RedrawAllowedProps = {\r\n RemainingDailyRedrawLimit: number,\r\n DailyRedrawLimit: number\r\n}\r\nconst RedrawAllowedCard: React.FC<RedrawAllowedProps> = (props) => {\r\n return (\r\n <ActionCard title=\"Redraw\" link=\"Redraw\">\r\n <p className=\"action-card-text\">\r\n Redraw your available funds into a nominated bank account\r\n </p>\r\n <div className=\"row\">\r\n <div className=\"col-md-6\">\r\n <div className=\"amount-value\">\r\n <MoneyFormatted amount={props.RemainingDailyRedrawLimit} />\r\n </div>\r\n <small className=\"amount-label\">Remaining today</small>\r\n </div>\r\n <div className=\"col-md-6\">\r\n <div className=\"amount-value\">\r\n <MoneyFormatted amount={props.DailyRedrawLimit} />\r\n </div>\r\n <small className=\"amount-label\">Daily limit</small>\r\n </div>\r\n </div>\r\n </ActionCard>\r\n );\r\n};\r\n\r\nconst InterAccountTransferCard = () => (\r\n <ActionCard title=\"Transfer\" link=\"InterAccount\">\r\n <p>Transfer money between your accounts</p>\r\n </ActionCard>\r\n);\r\n\r\ntype BankAccountTransferProps = {\r\n interAccountAllowed: boolean,\r\n availableBankAccounts: boolean\r\n}\r\nconst BankAccountTransferCard: React.FC<BankAccountTransferProps> = (props) => {\r\n if (props.interAccountAllowed && props.availableBankAccounts) {\r\n return (\r\n <ActionCard title=\"Payment\" link=\"Payment\">\r\n <p>Make a payment from your nominated bank accounts</p>\r\n </ActionCard>\r\n );\r\n } else if (props.availableBankAccounts) {\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-md-offset-2 col-md-8\">\r\n You have not authorised any bank accounts to withdraw from or deposit\r\n into.\r\n </div>\r\n </div>\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst SettingsCard = (props: { payAnyoneAllowed: boolean, bPayAllowed: boolean }) => (\r\n <div className=\"col px-1 pb-2\">\r\n <div className=\"card h-100 transfer-card\">\r\n <div className=\"card-body\">\r\n <h5 className=\"card-title\">\r\n Settings\r\n </h5>\r\n <div className=\"card-text\">\r\n <p>Configure your transfer funds settings</p>\r\n {props.payAnyoneAllowed &&\r\n <div>\r\n <Link to={x => `${x.pathname}/BankAccount`} className=\"card-link\">\r\n Manage Pay Anyone Accounts\r\n </Link>\r\n </div>\r\n }\r\n\r\n {props.bPayAllowed &&\r\n <div>\r\n <Link to={x => `${x.pathname}/BillerHistory`} className=\"card-link\">\r\n Manage <BpayText/> billers\r\n </Link>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n)\r\n\r\ntype Props = {\r\n redraw: number,\r\n redrawAllowed: boolean,\r\n bPayAllowed: boolean,\r\n payAnyoneAllowed: boolean,\r\n interAccountAllowed: boolean,\r\n availableBankAccounts: boolean,\r\n accountId: string\r\n}\r\n\r\nconst TransferCards = (props: Props) => {\r\n const { data, loading, error } = useInstrumentAuthorityAccountsQuery({\r\n variables: {\r\n account: props.accountId,\r\n },\r\n fetchPolicy: \"network-only\"\r\n });\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n\r\n const limit = data?.accountLimits?.[0]?.Limits;\r\n\r\n if (limit == null || error != null) {\r\n return <CError error=\"Could not load transfer details\" />\r\n }\r\n\r\n let count = 0;\r\n data?.instrumentByAccount?.Accounts?.forEach(element => {\r\n if (element?.CurrentUserAccountAuthority?.Operate) {\r\n count++;\r\n }\r\n\r\n });\r\n\r\n const showBPay = props.bPayAllowed;\r\n const showPayAnyone = props.payAnyoneAllowed;\r\n const showInterAccountTransfer = props.interAccountAllowed && count > 0;\r\n const showRedraw = props.redrawAllowed;\r\n const showBankAccountTransfer = props.interAccountAllowed && props.availableBankAccounts;\r\n const showSettings = props.bPayAllowed || props.payAnyoneAllowed;\r\n\r\n return (\r\n <div className=\"transfer-options container\">\r\n <div className=\"row row-cols-1 row-cols-md-3\">\r\n {showBPay && <BpayCard />}\r\n {showPayAnyone && <PayAnyoneAllowedCard\r\n DailyPayAnyoneLimit={limit.DailyPayAnyoneLimit?.Amount || 0}\r\n RemainingDailyPayAnyoneLimit={limit.RemainingDailyPayAnyoneLimit?.Amount || 0}\r\n />}\r\n {showInterAccountTransfer && <InterAccountTransferCard />}\r\n {showRedraw && <RedrawAllowedCard\r\n DailyRedrawLimit={limit.DailyRedrawLimit?.Amount || 0}\r\n RemainingDailyRedrawLimit={limit.RemainingDailyRedrawLimit?.Amount || 0}\r\n />}\r\n {showBankAccountTransfer && <BankAccountTransferCard\r\n availableBankAccounts={props.availableBankAccounts}\r\n interAccountAllowed={props.interAccountAllowed}\r\n />}\r\n {showSettings && <SettingsCard bPayAllowed={props.bPayAllowed} payAnyoneAllowed={props.payAnyoneAllowed} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TransferCards;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { faMinusCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n FundsTransfer,\r\n TaskFrequencyPeriod,\r\n} from \"generated/generated-models\";\r\nimport { CDate } from \"app/common/CapitalDate\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\n\r\ninterface Props {\r\n transfer: FundsTransfer;\r\n canDeleteTransfer: boolean;\r\n}\r\n\r\nconst TransferUntil: React.FC<{ transfer: FundsTransfer }> = ({ transfer }) => {\r\n const {\r\n Frequency,\r\n FurtherNotice,\r\n EndingOn,\r\n NumberOfTimes,\r\n NumberOfTimesAmount,\r\n SpecifiedDate,\r\n RemainingNumberOfTimes,\r\n } = transfer;\r\n\r\n if (Frequency == null || Frequency.toLocaleUpperCase() === TaskFrequencyPeriod.Once.toUpperCase()) {\r\n return null;\r\n }\r\n\r\n if (FurtherNotice) {\r\n return <span>Until Further notice</span>;\r\n }\r\n\r\n if (NumberOfTimes) {\r\n var message = `Remaining ${RemainingNumberOfTimes} of ${NumberOfTimesAmount} `;\r\n\r\n if (NumberOfTimesAmount != null && NumberOfTimesAmount > 1) {\r\n message += \"times\";\r\n } else {\r\n message += \"time\";\r\n }\r\n\r\n return <span>{message}</span>\r\n }\r\n\r\n if (SpecifiedDate && EndingOn != null) {\r\n return (\r\n <span>\r\n Until <CDate date={EndingOn} />\r\n </span>\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst TransferRow = ({ transfer, canDeleteTransfer }: Props) => {\r\n const toAccount = () => {\r\n if(transfer.Billercode == null || Number(transfer.Billercode) <= 0) {\r\n return transfer.ToAccountDescription\r\n } else {\r\n return `${transfer.BillerName} (${transfer.CustomerReferenceNumber})`;\r\n }\r\n }\r\n\r\n const Frequency = () => {\r\n if(transfer.Frequency != null && transfer.Frequency !== TaskFrequencyPeriod.Once) {\r\n return <span>{transfer.Frequency}</span>;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const AvailableActions = () => {\r\n if (!canDeleteTransfer) {\r\n return <td></td>\r\n }\r\n return (\r\n <td>\r\n <Link\r\n to={x => `${x.pathname}/Delete/${transfer.Id}`}\r\n >\r\n <FontAwesomeIcon icon={faMinusCircle} size=\"lg\" style={{color: \"red\"}} />\r\n </Link>\r\n </td>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <tr className={\"transfer-row\"} key={transfer.Id}>\r\n <td>\r\n <CDate date={transfer.NextScheduledDate} />\r\n </td>\r\n <td>\r\n {transfer.ReceiptNumber}\r\n </td>\r\n <td>\r\n <div className=\"transfer-frequency\">\r\n <Frequency />\r\n </div>\r\n <div className=\"transfer-until\">\r\n <TransferUntil transfer={transfer} />\r\n </div>\r\n </td>\r\n <td>\r\n <div>{transfer.TransferTypeDescription}</div>\r\n {transfer.FromAccountDescription != null && <div>From: {transfer.FromAccountDescription}</div>}\r\n <div>\r\n To: <span className=\"col-transfer-to\">{toAccount()}</span>\r\n </div>\r\n {transfer.RegularPayment && (\r\n <strong>Regular Payment</strong>\r\n )}\r\n </td>\r\n <td className=\"money-cell\">\r\n <MoneyFormatted amount={transfer.Amount} />\r\n </td>\r\n <td className=\"summary-cell\">\r\n <Frequency />\r\n\r\n <TransferUntil transfer={transfer} />\r\n\r\n <div>{transfer.TransferTypeDescription}</div>\r\n\r\n <div>From: {transfer.FromAccountDescription}</div>\r\n <div>\r\n To: <span className=\"col-tfer-to\">{toAccount()}</span>\r\n </div>\r\n\r\n {transfer.RegularPayment && (\r\n <strong>Regular Payment</strong>\r\n )}\r\n\r\n <MoneyFormatted amount={transfer.Amount} />\r\n </td>\r\n <AvailableActions />\r\n </tr>\r\n <tr>\r\n <td className=\"summary-cell\">\r\n <CDate date={transfer.NextScheduledDate} />\r\n </td>\r\n <td className=\"summary-cell\">\r\n <span className=\"transaction-type\">\r\n {transfer.TransferTypeDescription} - <Frequency />\r\n </span>\r\n {transfer.RegularPayment && (\r\n <strong className=\"text-warning\">Regular Payment</strong>\r\n )}\r\n\r\n <span><TransferUntil transfer={transfer} /></span>\r\n <strong><MoneyFormatted amount={transfer.Amount} /></strong>\r\n <span>From: {transfer.FromAccountDescription}</span>\r\n <span>To: {toAccount()}</span>\r\n </td>\r\n <td className=\"summary-cell\">\r\n <AvailableActions />\r\n </td>\r\n </tr>\r\n </>\r\n );\r\n};\r\n\r\nexport default TransferRow;\r\n","import { FundsTransfer } from \"generated/generated-models\";\r\nimport TransferRow from \"./TransferRow\";\r\nimport React from \"react\";\r\n\r\ntype RowsProps = {\r\n pendingTransfers: FundsTransfer[];\r\n canDeleteTransfer: boolean;\r\n}\r\n\r\nconst PendingTransferRows = ({ pendingTransfers, canDeleteTransfer }: RowsProps) => {\r\n if (pendingTransfers.length === 0) {\r\n return (\r\n <tr className=\"no-transfers-row\">\r\n <td colSpan={6}>\r\n <p className=\"text-center text-muted\">No pending transfers</p>\r\n </td>\r\n </tr>\r\n );\r\n }\r\n\r\n return (\r\n <>{\r\n pendingTransfers.map(transfer => (\r\n <TransferRow\r\n transfer={transfer}\r\n canDeleteTransfer={canDeleteTransfer}\r\n key={transfer.Id}\r\n />))\r\n }</>\r\n );\r\n};\r\n\r\ntype Props = {\r\n pendingTransfers: FundsTransfer[];\r\n interAccountAllowed: boolean;\r\n}\r\n\r\nconst PendingTransfers: React.FC<Props> = (props) => {\r\n return (\r\n <div className=\"pendingtransfers-container\">\r\n <h3>Upcoming Transfers</h3>\r\n <p>\r\n Transfers that are scheduled to come into or go out of your account.\r\n </p>\r\n <div className=\"table-responsive\">\r\n <table className=\"table pending-transfers\">\r\n <thead>\r\n <tr>\r\n <th className=\"date-header\">Next Due</th>\r\n <th className=\"receipt-header\">Receipt #</th>\r\n <th className=\"frequency-header\">Frequency</th>\r\n <th className=\"type-header\">Type</th>\r\n <th className=\"amount-header\">Amount</th>\r\n <th className=\"action-header\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <PendingTransferRows\r\n canDeleteTransfer={props.interAccountAllowed}\r\n pendingTransfers={props.pendingTransfers}\r\n />\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PendingTransfers;\r\n","import { FundsTransfer } from \"generated/generated-models\";\r\nimport TransferRow from \"./TransferRow\";\r\nimport React from \"react\";\r\nconst RecentTransfers = ({ recentTransfers }: { recentTransfers: FundsTransfer[] }) => {\r\n return (\r\n <div className=\"recenttransfers-container\">\r\n <h3>Recent Transfers</h3>\r\n <p>\r\n The ten most recent transfers to come into or go out of your\r\n account.\r\n </p>\r\n <div className=\"table-responsive\">\r\n <table className=\"table recent-transfers\">\r\n <thead>\r\n <tr>\r\n <th className=\"date-header\">Processed</th>\r\n <th className=\"receipt-header\">Receipt #</th>\r\n <th className=\"frequency-header\">Frequency</th>\r\n <th className=\"type-header\">Type</th>\r\n <th className=\"amount-header\">Amount</th>\r\n <th className=\"action-header\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {(recentTransfers.length === 0) && (\r\n <tr className=\"no-transfers-row\">\r\n <td colSpan={6}>\r\n <p className=\"text-center text-muted\">No transfer history</p>\r\n </td>\r\n </tr>\r\n )}\r\n {recentTransfers.map(transfer => (\r\n <TransferRow\r\n transfer={transfer}\r\n canDeleteTransfer={false}\r\n key={transfer.Id}\r\n />\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RecentTransfers;\r\n","import AccountTransferHome from \"./AccountTransferHome\";\r\n\r\nexport default AccountTransferHome;\r\n","import React from \"react\";\r\nimport TransferCards from \"./TransferCards\";\r\nimport PendingTransfers from \"./PendingTransfers\";\r\nimport RecentTransfers from \"./RecentTransfers\";\r\nimport {\r\n Account,\r\n FundsTransfer,\r\n} from \"generated/generated-models\";\r\n\r\ntype FundsTransferProps = {\r\n transferModel: {\r\n InterAccountAllowed: boolean;\r\n RedrawAllowed: boolean;\r\n PayAnyoneAllowed: boolean;\r\n AllowOnlineDisbursements: boolean;\r\n BPayAllowed: boolean;\r\n Redraw?: number;\r\n PendingTransfers?: FundsTransfer[];\r\n TransferHistory?: FundsTransfer[];\r\n };\r\n account: Account;\r\n}\r\n\r\nconst AccountTransferHome = (props: FundsTransferProps) => {\r\n const { transferModel } = props;\r\n\r\n const getNumberOfBankAccounts = (account: FundsTransferProps[\"account\"]) => {\r\n if (account.BankAccounts === undefined) {\r\n return 0;\r\n }\r\n\r\n return account.BankAccounts.length\r\n }\r\n\r\n return (\r\n <div className=\"main-content sub-wrap\">\r\n <h2>Transfer Funds</h2>\r\n <TransferCards\r\n availableBankAccounts={getNumberOfBankAccounts(props.account) > 0}\r\n bPayAllowed={props.transferModel.BPayAllowed}\r\n interAccountAllowed={props.transferModel.InterAccountAllowed}\r\n payAnyoneAllowed={props.transferModel.PayAnyoneAllowed}\r\n redraw={props.transferModel.Redraw || 0}\r\n redrawAllowed={props.transferModel.RedrawAllowed}\r\n accountId={props.account.Id}\r\n />\r\n <PendingTransfers\r\n interAccountAllowed={props.transferModel.InterAccountAllowed}\r\n pendingTransfers={props.transferModel.PendingTransfers || []}\r\n />\r\n <RecentTransfers recentTransfers={transferModel.TransferHistory || []} />\r\n </div>\r\n );\r\n};\r\n\r\nexport default AccountTransferHome;\r\n","import { AccountTransferPage } from \"./AccountTransferPage\";\r\n\r\nexport default AccountTransferPage\r\n","import React from \"react\";\r\nimport {\r\n Switch,\r\n Route,\r\n useRouteMatch\r\n} from \"react-router-dom\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport PayAnyoneRequest from \"./PayAnyoneRequest\";\r\nimport DeleteTransfer from \"./DeleteTransfer\";\r\nimport Payment from \"./Payment\";\r\nimport Redraw from \"./Redraw\";\r\nimport InterAccountTransfer from \"./InterAccountTransferRequest\";\r\nimport BpayRequest from \"./BPayRequest\";\r\nimport ManageBpayBillerHistory from \"./ManageBpayBillerHistory\";\r\nimport { ManagePayAnyoneAccounts } from \"./managePayAnyoneAccounts/ManagePayAnyoneAccounts\";\r\nimport AccountTransferHome from \"./AccountTransferHome\";\r\n\r\ntype Props = {\r\n accountIdOrNumber: string,\r\n recentTransfersToShow?: number\r\n}\r\n\r\nconst AccountTransferPage: React.FC<Props> = ({ accountIdOrNumber, recentTransfersToShow = 10 }) => {\r\n const { path } = useRouteMatch();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountIdOrNumber }\r\n });\r\n\r\n const account = data?.accountByIdOrNumber;\r\n const basePath = path || \"transfer\";\r\n\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n\r\n if (error || account == null) {\r\n return <CError error={\"Could not load funds transfer details\"} />;\r\n }\r\n\r\n const pendingFundsTransfers = makeNonEmpty(account.PendingAccountFundsTransfers);\r\n\r\n const processedFundsTransfers = makeNonEmpty(account.ProcessedAccountFundsTransfers)\r\n .slice(0, recentTransfersToShow);\r\n\r\n return (\r\n <Switch>\r\n <Route path={`${basePath}/PayAnyone`}>\r\n <PayAnyoneRequest accountId={account.Id} />\r\n </Route>\r\n <Route path={`${basePath}/Redraw`}>\r\n <Redraw accountId={account.Id} />\r\n </Route>\r\n <Route path={`${basePath}/InterAccount`}>\r\n <InterAccountTransfer accountId={account.Id} />\r\n </Route>\r\n <Route path={`${basePath}/bpay`}>\r\n <BpayRequest accountId={account.Id} />\r\n </Route>\r\n\r\n <Route path={`${basePath}/Payment`}>\r\n <Payment accountId={account.Id} />\r\n </Route>\r\n <Route path={`${basePath}/bankaccount`}>\r\n <ManagePayAnyoneAccounts />\r\n </Route>\r\n <Route path={`${basePath}/billerhistory`}>\r\n <ManageBpayBillerHistory />\r\n </Route>\r\n <Route path={`${basePath}/Delete/:fundsTransferId`}>\r\n {transferDetailsProps => {\r\n const fundsTransferId = transferDetailsProps?.match?.params.fundsTransferId;\r\n\r\n const transfer = makeNonEmpty(account.PendingAccountFundsTransfers)\r\n .find(x => x.Id === fundsTransferId) || { Id: fundsTransferId };\r\n\r\n return <DeleteTransfer fundsTransfer={transfer} />;\r\n }}\r\n </Route>\r\n <Route>\r\n <AccountTransferHome\r\n account={account}\r\n transferModel={{\r\n Redraw: account?.Redraw,\r\n BPayAllowed: account?.CurrentUserAccountAuthority?.BPay || false,\r\n RedrawAllowed:\r\n account?.CurrentUserAccountAuthority?.Redraw || false,\r\n PayAnyoneAllowed:\r\n account?.CurrentUserAccountAuthority?.PayAnyone || false,\r\n InterAccountAllowed:\r\n account?.CurrentUserAccountAuthority?.Operate || false,\r\n AllowOnlineDisbursements: false,\r\n PendingTransfers: pendingFundsTransfers,\r\n TransferHistory: processedFundsTransfers,\r\n }}\r\n />\r\n </Route>\r\n </Switch>\r\n );\r\n}\r\n\r\nexport {\r\n AccountTransferPage\r\n}\r\n","import React from \"react\";\r\nimport { StatementDocument } from \"generated/generated-models\";\r\nimport { CDate } from \"../common/CapitalDate\";\r\n\r\ninterface Props {\r\n statements: StatementDocument[];\r\n}\r\n\r\nconst StatementsList = ({ statements }: Props) => (\r\n <section className=\"sub-wrap\">\r\n <h2>Statements</h2>\r\n\r\n <table className=\"table\" id=\"statements\">\r\n <thead>\r\n <tr>\r\n <th>Number</th>\r\n <th>Account</th>\r\n <th>From</th>\r\n <th>To</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n {(statements || []).map(statement => {\r\n return (\r\n <StatementDocumentRow\r\n statement={statement}\r\n key={statement.Id || statement.Number}\r\n />\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </section>\r\n);\r\n\r\nconst StatementDocumentRow = ({\r\n statement,\r\n}: {\r\n statement: StatementDocument;\r\n}) => {\r\n return (\r\n <tr>\r\n <td><a href={generateStatementLink(statement)} target=\"_blank\" rel=\"noopener noreferrer\">{statement.Number}</a></td>\r\n <td>{statement.AccountNumber}</td>\r\n <td>\r\n <CDate date={statement.PeriodFrom} />\r\n </td>\r\n <td>\r\n <CDate date={statement.PeriodTo} />\r\n </td>\r\n </tr>\r\n );\r\n};\r\n\r\nconst generateStatementLink = (statement: StatementDocument): string => {\r\n return `/api/statements/${statement.InstrumentId}/documents/${statement.FileId}`;\r\n};\r\n\r\nexport default StatementsList;\r\n","import React, { Fragment } from \"react\";\r\nimport { IsNullOrWhiteSpace } from \"core/util/stringExtensions\";\r\n\r\ninterface Props {\r\n file?: Partial<File>;\r\n}\r\n\r\nconst validFileExtensions = [\"jpg\", \"jpeg\", \"gif\", \"svg\", \"png\"];\r\n\r\nconst isImageExt = (file?: Partial<File>) => {\r\n if (file === undefined) {\r\n return false;\r\n }\r\n if (IsNullOrWhiteSpace(file.name)) {\r\n return false;\r\n }\r\n\r\n return validFileExtensions.some(\r\n ext => file && file.name && file.name.endsWith(ext)\r\n );\r\n};\r\n\r\nexport class FileThumb extends React.Component<Props> {\r\n state = {\r\n loading: false,\r\n thumb: undefined,\r\n };\r\n componentWillReceiveProps(nextProps: Props) {\r\n if (!nextProps.file) {\r\n this.setState({ loading: false, thumb: undefined });\r\n return;\r\n }\r\n this.setState({ loading: true }, () => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n this.setState({ loading: false, thumb: reader.result });\r\n };\r\n\r\n if (nextProps.file) {\r\n reader.readAsDataURL(nextProps.file as File);\r\n } else {\r\n this.setState({ loading: false, thumb: undefined });\r\n }\r\n });\r\n }\r\n render() {\r\n const { file } = this.props;\r\n const { loading, thumb } = this.state;\r\n if (!file) {\r\n return null;\r\n }\r\n if (loading) {\r\n return <p>loading...</p>;\r\n }\r\n\r\n return (\r\n <Fragment>\r\n {isImageExt(file) && (\r\n <img\r\n src={thumb}\r\n alt={file.name}\r\n className=\"img-thumbnail\"\r\n height={200}\r\n width={200}\r\n />\r\n )}\r\n <div>\r\n <p>Filename: {file.name}</p>\r\n <p>Size: {Math.round(file.size || 0 / 1000)} KB</p>\r\n </div>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ErrorMessage, ErrorMessageProps } from \"formik\";\r\n\r\nexport const CErrorMessage = ({\r\n name,\r\n className = \"\",\r\n ...props\r\n}: ErrorMessageProps) => {\r\n return (\r\n <span className={`invalid-feedback form-error-message ${className}`}>\r\n <ErrorMessage\r\n {...props}\r\n name={name}\r\n className={`invalid-feedback ${className}`}\r\n data-valmsg-for={name}\r\n data-valmsg-replace=\"true\"\r\n />\r\n </span>\r\n );\r\n};\r\n","import React, { ReactNode } from \"react\";\r\nimport { Field, useFormikContext } from \"formik\";\r\nimport { CErrorMessage } from \"app/common/forms/ErrorMessage\";\r\n\r\ntype Props = {\r\n groupClassName?: string;\r\n inputClassName?: string;\r\n inputType?: string;\r\n fieldName: string;\r\n label?: string;\r\n inputId?: string;\r\n placeholderText?: string;\r\n showLabel?: boolean;\r\n formNote?: string;\r\n disabled?: boolean;\r\n pattern?: string;\r\n inputmode?: string;\r\n fieldWrapper?: (feildNode: React.ReactNode) => ReactNode;\r\n}\r\n\r\nexport const CInputFormGroup: React.FC<Props> = ({\r\n fieldName,\r\n groupClassName = \"form-group\",\r\n inputClassName = \"form-control\",\r\n inputType,\r\n label,\r\n inputId,\r\n placeholderText,\r\n showLabel = true,\r\n fieldWrapper = (fieldNode: React.ReactNode) => fieldNode,\r\n formNote,\r\n disabled = false,\r\n pattern,\r\n inputmode,\r\n children\r\n}) => {\r\n const { errors, touched } = useFormikContext<any>();\r\n\r\n if (errors[fieldName] && touched[fieldName]) {\r\n inputClassName = `${inputClassName} is-invalid`\r\n }\r\n\r\n return (\r\n <div className={groupClassName}>\r\n {showLabel && <label htmlFor={fieldName}>{label || fieldName}</label>}\r\n {fieldWrapper(\r\n <>\r\n <Field\r\n type={inputType}\r\n className={inputClassName}\r\n id={inputId || fieldName}\r\n name={fieldName}\r\n placeholder={placeholderText}\r\n disabled={disabled}\r\n pattern={pattern}\r\n inputmode={inputmode}\r\n />\r\n <CErrorMessage name={fieldName} />\r\n <small className=\"form-text text-muted formnote\">{formNote}</small>\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default CInputFormGroup;\r\n","import { FormikProps, connect } from \"formik\";\r\nimport React from \"react\";\r\n\r\nconst FormikDebuggerConnected = connect<\r\n {\r\n show: boolean;\r\n toggleShow: (show: boolean) => void;\r\n },\r\n { formik: FormikProps<any> }\r\n>(({ formik, toggleShow, show }) => {\r\n // const [showDebug, setShow] = useState(\r\n // show && process.env.NODE_ENV === \"development\"\r\n // );\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n top: \"10px\",\r\n right: \"10px\",\r\n bottom: \"10px\",\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <div\r\n className=\"pull-right\"\r\n style={{\r\n // overflow: \"scroll\",\r\n // height: \"100%\",\r\n padding: \"10px\",\r\n backgroundColor: \"rgba(22, 22, 22, 0.3)\",\r\n }}\r\n >\r\n <button\r\n className=\"pull-right\"\r\n onClick={() => toggleShow(show)}\r\n type=\"button\"\r\n >\r\n {show ? \"Hide\" : \"Debug\"}\r\n </button>\r\n\r\n {show && (\r\n <React.Fragment>\r\n <p>isSubmitting: {`${formik.isSubmitting}`}</p>\r\n <p>isValidating: {`${formik.isValidating}`}</p>\r\n <p>submitcount: {`${formik.submitCount}`}</p>\r\n\r\n <h3>Values:</h3>\r\n <pre>{JSON.stringify(formik.values, null, 4)}</pre>\r\n\r\n <h3>Error</h3>\r\n <pre>{JSON.stringify(formik.errors, null, 4)}</pre>\r\n\r\n <h3>Touched</h3>\r\n <pre>{JSON.stringify(formik.touched, null, 4)}</pre>\r\n <p />\r\n </React.Fragment>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n});\r\n\r\nexport class FormikDebugger extends React.Component {\r\n state = {\r\n maximised: false,\r\n isProd: process.env.NODE_ENV === \"production\",\r\n };\r\n\r\n render() {\r\n const { toggleShow } = this;\r\n if (this.state.isProd) {\r\n return null;\r\n }\r\n return (\r\n <FormikDebuggerConnected\r\n show={this.state.maximised}\r\n toggleShow={toggleShow}\r\n />\r\n );\r\n }\r\n\r\n toggleShow = () => {\r\n this.setState({ maximised: !this.state.maximised });\r\n };\r\n}\r\n","import { DisbursementRequestInput } from \"generated/generated-models\";\r\nimport * as yup from \"yup\";\r\n\r\nexport const yupDisbursementRequestInput = yup\r\n .object<DisbursementRequestInput>({\r\n AccountId: yup.string().required(),\r\n InstrumentId: yup.string().required(),\r\n AccountNumber: yup\r\n .string()\r\n .required()\r\n .min(4)\r\n .matches(\r\n /^\\s*\\d+\\s*$/,\r\n \"Supplier account number should only have digits 0-9\"\r\n ),\r\n BankIdentifierText: yup\r\n .string()\r\n .required()\r\n .min(6)\r\n .matches(/^\\s*\\d\\d\\d-?\\d\\d\\d\\s*$/, \"Format should be xxx-xxx\"),\r\n File: yup.mixed().required(),\r\n PayeeName: yup.string().required(),\r\n PaymentDate: yup.date().required(),\r\n PaymentDescription: yup.string().required(),\r\n RequestedAmount: yup\r\n .number()\r\n .required()\r\n .positive()\r\n .moreThan(0),\r\n })\r\n .required();\r\n","import React from \"react\";\r\nimport { DisbursementStage, File } from \"generated/generated-models\";\r\nimport MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport { CDate } from \"../common/CapitalDate\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nexport interface Props {\r\n disbursement: DisbursementStage;\r\n}\r\nconst DisbursementRequestSuccessful = ({ disbursement }: Props) => {\r\n return (\r\n <div>\r\n <h2>Payment Requested</h2>\r\n <p>\r\n Your payment request has been sent for processing with the following\r\n details:\r\n </p>\r\n\r\n <h3>Supplier Details</h3>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-6\">\r\n <label>Supplier name</label>\r\n <div>{disbursement.PayeeName}</div>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-3\">\r\n <label>BSB</label>\r\n <div>{disbursement.BankIdentifierText}</div>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-4\">\r\n <label>Account number</label>\r\n <div>{disbursement.AccountNumber}</div>\r\n </div>\r\n </div>\r\n <h3>Payment Details</h3>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-6\">\r\n <label>Payment description</label>\r\n <div>{disbursement.PaymentDescription}</div>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-2\">\r\n <label>Amount</label>\r\n <div>\r\n <MoneyFormatted amount={disbursement.RequestedAmount} />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-2\">\r\n <label>Payment date</label>\r\n <div>\r\n <CDate date={disbursement.PaymentDate} />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-6\">\r\n <label>Supporting document</label>\r\n {makeNonEmpty(disbursement.Documents).map(doc => (\r\n <FileItemView fileItem={doc} key={doc.Id} />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst FileItemView = ({ fileItem }: { fileItem: File }) => {\r\n return (\r\n <div>\r\n <p>Filename: {fileItem.FileName}</p>\r\n </div>\r\n );\r\n};\r\n\r\nexport { DisbursementRequestSuccessful };\r\n","import React from \"react\";\r\nimport { Formik, Form } from \"formik\";\r\n// import yup from \"yup\";\r\nimport { FileThumb } from \"./FileThumb\";\r\nimport {\r\n DisbursementRequestInput, DisbursementRequestComponent,\r\n} from \"generated/generated-models\";\r\nimport log from \"core/log\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport { Loading } from \"../lib/components/Loading\";\r\nimport { CInputFormGroup } from \"../common/forms/CInputFormGroup\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport Datepicker from \"app/components/DatePicker\";\r\nimport { FormikDebugger } from \"../common/forms/FormikDebugger\";\r\nimport { yupDisbursementRequestInput } from \"./yupDisbursementRequestInput\";\r\nimport { CErrorMessage } from \"../common/forms/ErrorMessage\";\r\nimport { CApolloError } from \"../common/CApolloError\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { DisbursementRequestSuccessful } from \"./DisbursementRequestSuccessful\";\r\nimport { addTimeZoneOffset } from 'core/util/dateExtensions';\r\n\r\ninterface DisbursementRequestFormValues extends DisbursementRequestInput {}\r\n\r\ninterface Props {\r\n InstrumentId?: Guid | string;\r\n AccountId: Guid | string;\r\n}\r\n\r\nexport class DisbursementRequestForm extends React.Component<Props> {\r\n render() {\r\n return (\r\n <div className=\"container\">\r\n <DisbursementRequestComponent>\r\n {(mutateFn, { called, data, error, loading }) => (\r\n <Formik<DisbursementRequestFormValues>\r\n initialValues={{\r\n File: undefined,\r\n InstrumentId: `${this.props.InstrumentId}`,\r\n AccountId: this.props.AccountId.toString(),\r\n AccountNumber: \"\",\r\n BankIdentifierText: \"\",\r\n PayeeName: \"\",\r\n PaymentDate: addTimeZoneOffset(new Date()),\r\n PaymentDescription: \"\",\r\n RequestedAmount: 0,\r\n SupplierBankAccountName: \"\",\r\n }}\r\n onSubmit={values => {\r\n if (values && values.File && values.File.name) {\r\n mutateFn({\r\n variables: {\r\n input: {\r\n ...(values as DisbursementRequestInput),\r\n File: values && values.File && values.File,\r\n },\r\n },\r\n update: (cache, result) => {\r\n log.info(\"Disbursement Request\", result);\r\n },\r\n });\r\n }\r\n }}\r\n validationSchema={yupDisbursementRequestInput}\r\n render={formik => {\r\n const { values, setFieldValue } = formik;\r\n\r\n if (called && !loading && error) {\r\n return <CApolloError error={error} />;\r\n }\r\n if (called && !loading && !error) {\r\n return (\r\n <div className=\"alert alert-success\" role=\"alert\">\r\n <div>\r\n <Link to={\"./disbursements\"}>\r\n Return to disbursements\r\n </Link>\r\n </div>\r\n {data &&\r\n data.disbursementRequest &&\r\n data.disbursementRequest.Data && (\r\n <DisbursementRequestSuccessful\r\n disbursement={data.disbursementRequest.Data}\r\n />\r\n )}\r\n <div>\r\n <Link to={\"./disbursements\"}>\r\n Return to disbursements\r\n </Link>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <div>\r\n <Link to={\"./disbursements\"}>\r\n Return to disbursements\r\n </Link>\r\n </div>\r\n <h2>Request New Disbursement</h2>\r\n <Form>\r\n <FormikDebugger />\r\n <div className=\"row\">\r\n <CInputFormGroup\r\n fieldName={nameof<typeof values>(\"PayeeName\")}\r\n label=\"Supplier Name\"\r\n groupClassName=\"form-group col-lg-6\"\r\n />\r\n </div>\r\n\r\n <div className=\"row\">\r\n <CInputFormGroup\r\n fieldName={nameof<typeof values>(\r\n \"BankIdentifierText\"\r\n )}\r\n label=\"Supplier BSB\"\r\n groupClassName=\"form-group col-lg-6\"\r\n />\r\n </div>\r\n <div className=\"row\">\r\n <CInputFormGroup\r\n fieldName={nameof<typeof values>(\"AccountNumber\")}\r\n label=\"Supplier Account Number\"\r\n groupClassName=\"form-group col-lg-6\"\r\n />\r\n </div>\r\n <div className=\"row\">\r\n <CInputFormGroup\r\n fieldName={nameof<typeof values>(\r\n \"PaymentDescription\"\r\n )}\r\n label=\"Payment Description\"\r\n groupClassName=\"form-group col-lg-6\"\r\n />\r\n </div>\r\n <div className=\"row\">\r\n <CInputFormGroup\r\n fieldName={nameof<typeof values>(\"RequestedAmount\")}\r\n label=\"Amount\"\r\n inputType=\"number\"\r\n groupClassName=\"form-group col-lg-6\"\r\n />\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-6\">\r\n <label>Payment Date</label>\r\n <Datepicker\r\n name={nameof<typeof values>(\"PaymentDate\")}\r\n minDate={\r\n addTimeZoneOffset(new Date())\r\n }\r\n />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-6\">\r\n <label htmlFor=\"File\">Supporting Document</label>\r\n <input\r\n id=\"File\"\r\n name=\"File\"\r\n type=\"File\"\r\n onChange={event => {\r\n setFieldValue(\r\n \"File\",\r\n event.currentTarget &&\r\n event.currentTarget.files &&\r\n event.currentTarget.files[0]\r\n );\r\n }}\r\n className=\"form-control\"\r\n />\r\n <CErrorMessage name={nameof<typeof values>(\"File\")} />\r\n <p className=\"help-block\">\r\n For example, an invoice, estimate of fees or a\r\n receipt.\r\n </p>\r\n <FileThumb file={values.File} />\r\n </div>\r\n </div>\r\n <div className=\"row\">\r\n <div className=\"form-group col-lg-6\">\r\n {!loading && (\r\n <button\r\n type=\"submit\"\r\n className=\"btn btn-primary\"\r\n disabled={\r\n (called && loading) ||\r\n (data &&\r\n data.disbursementRequest &&\r\n data.disbursementRequest.Success) || undefined\r\n }\r\n >\r\n submit\r\n </button>\r\n )}\r\n {called && loading && <Loading />}\r\n </div>\r\n </div>\r\n </Form>\r\n </>\r\n );\r\n }}\r\n />\r\n )}\r\n </DisbursementRequestComponent>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nexport const PlainAccountDescription = ({\r\n description,\r\n onStartEdit,\r\n}: {\r\n description: string;\r\n onStartEdit: () => void;\r\n}) => {\r\n return (\r\n <div className=\"cap-account-description\">\r\n <h2\r\n className=\"description-edit\"\r\n title=\"Click to edit your account name\"\r\n onClick={onStartEdit}\r\n >\r\n {description} \r\n </h2>\r\n </div>\r\n );\r\n};\r\n","import * as yup from \"yup\";\r\nimport { ChangeAccountDescriptionInput } from \"generated/generated-models\";\r\n\r\nexport const yupChangeAccountDescriptionInput = yup.object<\r\n ChangeAccountDescriptionInput\r\n>({\r\n AccountId: yup.string().required(),\r\n Name: yup\r\n .string()\r\n .required()\r\n .min(1),\r\n});\r\n","import React from \"react\";\r\nimport {\r\n ChangeAccountDescriptionInput,\r\n ChangeAccountDescriptionComponent,\r\n} from \"generated/generated-models\";\r\nimport { Formik, Form } from \"formik\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport { FormikDebugger } from \"app/common/forms/FormikDebugger\";\r\nimport { CInputFormGroup } from \"app/common/forms/CInputFormGroup\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { yupChangeAccountDescriptionInput } from \"./yupChangeAccountDescriptionInput\";\r\n\r\ninterface Props {\r\n accountId: Guid | string;\r\n previousDescription: string;\r\n onCancel: () => void;\r\n onUpdated: () => void;\r\n}\r\n\r\nconst ChangeAccountDescription: React.FC<Props> = ({\r\n accountId,\r\n previousDescription,\r\n onCancel,\r\n onUpdated,\r\n}) => {\r\n return (\r\n <div className=\"cap-change-account-description\">\r\n <ChangeAccountDescriptionComponent>\r\n {(mutateFn, { called, data, error, loading }) => (\r\n <Formik<ChangeAccountDescriptionInput>\r\n initialValues={{\r\n AccountId: accountId.toString(),\r\n Name: previousDescription,\r\n }}\r\n validationSchema={yupChangeAccountDescriptionInput}\r\n onSubmit={values => {\r\n mutateFn({\r\n variables: {\r\n input: {\r\n AccountId: values.AccountId,\r\n Name: values.Name,\r\n clientMutationId: Guid.create().toString(),\r\n },\r\n },\r\n }).then(() => {\r\n onUpdated();\r\n });\r\n }}\r\n >\r\n {({ values }) => {\r\n const isDisabled = () => {\r\n if(called && loading) {\r\n return true;\r\n }\r\n else {\r\n return data?.changeAccountDescription?.Success ?? false\r\n }\r\n }\r\n\r\n return (\r\n <Form>\r\n <FormikDebugger />\r\n <div className=\"row\">\r\n <CInputFormGroup\r\n fieldName={nameof<typeof values>(\"Name\")}\r\n label=\"Account Name:\"\r\n groupClassName=\"col-lg-6 col-sm-12\"\r\n fieldWrapper={fieldNode => {\r\n return (\r\n <div className=\"input-group\">\r\n {fieldNode}\r\n <span className=\"input-group-btn\">\r\n <button\r\n type=\"submit\"\r\n className=\"btn btn-primary\"\r\n disabled={isDisabled()}\r\n >\r\n save\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={onCancel}\r\n className=\"btn btn-link\"\r\n disabled={isDisabled()}\r\n >\r\n cancel\r\n </button>\r\n </span>\r\n </div>\r\n );\r\n }}\r\n />\r\n\r\n {called && loading && <Loading />}\r\n </div>\r\n </Form>\r\n );\r\n }}\r\n </Formik>\r\n )}\r\n </ChangeAccountDescriptionComponent>{\" \"}\r\n </div>\r\n );\r\n};\r\n\r\nexport { ChangeAccountDescription as ChangeAccountDescriptionComponent };\r\n","import React from \"react\";\r\nimport { PlainAccountDescription } from \"./PlainAccountDescription\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport { ChangeAccountDescriptionComponent } from \"./ChangeAccountDescription\";\r\nimport log from \"core/log\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\ninterface Props {\r\n accountId: Guid | string;\r\n description: string;\r\n isEditing?: boolean;\r\n}\r\n\r\ninterface State {\r\n isEditing: boolean;\r\n}\r\n\r\nclass EditableAccountDescription extends React.Component<Props, State> {\r\n readonly state: State = {\r\n isEditing: this.props.isEditing || false,\r\n };\r\n\r\n onStartEdit = () => {\r\n log.info(\"Start Editing account description\");\r\n this.setState({ isEditing: true });\r\n };\r\n onFinishEdit = () => {\r\n log.info(\"Stop account description\");\r\n this.setState({ isEditing: false });\r\n };\r\n\r\n render() {\r\n const { isEditing } = this.state;\r\n const { description, accountId } = this.props;\r\n const { showAccountTitle } = clientConfigFn();\r\n\r\n if (!showAccountTitle) {\r\n return null;\r\n }\r\n\r\n if (!isEditing) {\r\n return (\r\n <PlainAccountDescription\r\n description={description}\r\n onStartEdit={this.onStartEdit}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <ChangeAccountDescriptionComponent\r\n accountId={accountId}\r\n previousDescription={description}\r\n onCancel={this.onFinishEdit}\r\n onUpdated={this.onFinishEdit}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport { EditableAccountDescription };\r\n","import { FormattedNumber } from \"react-intl\";\r\n\r\ntype Props = {\r\n number: number\r\n}\r\n\r\nconst NumberPercentage = (props: Props) => {\r\n return (\r\n <FormattedNumber\r\n value={props.number / 100}\r\n // eslint-disable-next-line\r\n style=\"percent\"\r\n minimumFractionDigits={2}\r\n maximumFractionDigits={2}\r\n />\r\n );\r\n}\r\n\r\nexport default NumberPercentage;","import React from \"react\";\r\nimport { CDate } from \"../common/CapitalDate\";\r\nimport MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport MoneySigned from \"../components/MoneySigned\";\r\nimport { Account } from \"generated/generated-models\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport NumberPercentage from \"app/components/NumberPercentage\";\r\n\r\nconst GenerateTile: React.FC<{ label: string }> = (props) => {\r\n const col = `col-md`;\r\n\r\n return (\r\n <div className={`metric-tile ${col}`}>\r\n <div className=\"metric-inner-tile\">\r\n <div className=\"metric-label\">{props.label}</div>\r\n <div className=\"metric-value\">\r\n {props.children}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n};\r\n\r\nconst AccountSummaryHeader: React.FC<{ account: Account; }> = ({ account }) => {\r\n const config = clientConfigFn();\r\n let offsetProduct;\r\n\r\n if (account.OffsetAccount) {\r\n offsetProduct = true;\r\n }\r\n else {\r\n offsetProduct = false;\r\n }\r\n\r\n const showErrorsMessage = () => {\r\n if (config.arrearsMessage === \"\") {\r\n return false;\r\n }\r\n\r\n if (account.ArrearsBalance === undefined) {\r\n return false;\r\n }\r\n\r\n if (account.ArrearsBalance > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n return (<div className=\"account-metric-head\">\r\n {showErrorsMessage() &&\r\n <div className=\"alert alert-danger arrears-alert\" role=\"alert\">\r\n {config.arrearsMessage}\r\n </div>\r\n }\r\n\r\n {offsetProduct === false && <div className=\"metric-group container\">\r\n <div className=\"row\">\r\n <GenerateTile label=\"Account Number\">\r\n {account.Number}\r\n </GenerateTile>\r\n {clientConfigFn().showAccountCurrentRate &&\r\n <GenerateTile label=\"Current Rate\">\r\n <NumberPercentage number={account.Rate ? account.Rate : 0} />\r\n </GenerateTile>\r\n }\r\n <GenerateTile label=\"Current balance\">\r\n <MoneySigned amount={account.CurrentBalance} direction=\"total\" />\r\n </GenerateTile>\r\n </div>\r\n <div className=\"row\">\r\n <GenerateTile label={clientConfigFn().minimumInstalmentLabel}>\r\n <MoneyFormatted amount={account.MonthlyInstalment} />\r\n </GenerateTile>\r\n\r\n <GenerateTile label=\"Next instalment due\">\r\n <CDate date={account.NextInstalmentDue} />\r\n </GenerateTile>\r\n\r\n {clientConfigFn().showAvailableRedraw ? <GenerateTile label={\"Total \" + clientConfigFn().accountAvailableLabel.toLowerCase()}>\r\n <MoneyFormatted amount={account.Redraw} />\r\n </GenerateTile> : null}\r\n\r\n {clientConfigFn().canViewArrearsAmount &&\r\n <GenerateTile label=\"Arrears Amount\">\r\n <MoneyFormatted amount={account.ArrearsBalance} />\r\n </GenerateTile>\r\n }\r\n </div>\r\n </div>}\r\n\r\n {offsetProduct === true && <div className=\"metric-group container\">\r\n <div className=\"row\">\r\n <GenerateTile label=\"Account Number\">\r\n {account.Number}\r\n </GenerateTile>\r\n\r\n <GenerateTile label=\"Current balance\">\r\n <MoneySigned amount={account.CurrentBalance} direction=\"total\"/>\r\n </GenerateTile>\r\n\r\n {clientConfigFn().showAvailableRedraw ? <GenerateTile label={\"Total \" + clientConfigFn().accountAvailableLabel.toLowerCase()}>\r\n <MoneyFormatted amount={account.Redraw} />\r\n </GenerateTile> : null}\r\n </div>\r\n </div>}\r\n </div>);\r\n}\r\n\r\nexport {\r\n AccountSummaryHeader\r\n}\r\n","import { faArrowAltCircleDown, faArrowAltCircleUp, faCalendar, faComment, faMoneyBillAlt } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\ntype IconType =\r\n | \"debit\"\r\n | \"credit\"\r\n | \"description\"\r\n | \"date\"\r\n | \"balance\"\r\n\r\ntype Props = {\r\n iconName: IconType;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst getIcon = (icon: IconType) => {\r\n const config = clientConfigFn();\r\n\r\n switch (icon) {\r\n case \"balance\":\r\n return faMoneyBillAlt;\r\n case \"date\":\r\n return faCalendar;\r\n case \"credit\":\r\n return config.showTransactionsAsLender ? faArrowAltCircleDown : faArrowAltCircleUp;\r\n case \"debit\":\r\n return config.showTransactionsAsLender ? faArrowAltCircleUp : faArrowAltCircleDown;\r\n case \"description\":\r\n return faComment;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nconst TransactionPageIcon = ({ iconName, style }: Props) => {\r\n const config = clientConfigFn();\r\n const icon = getIcon(iconName);\r\n\r\n if (!config.showIconsTransactionPage || icon == null) {\r\n return null;\r\n }\r\n\r\n const iconStyle = {\r\n marginRight: '.5rem',\r\n ...style\r\n }\r\n\r\n return (\r\n <FontAwesomeIcon icon={icon} size=\"lg\" style={iconStyle} />\r\n )\r\n}\r\n\r\nexport default TransactionPageIcon;\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\n\r\ntype Props = {\r\n totalPages: number;\r\n currentPage: number;\r\n gotoPage: (page: number) => void;\r\n}\r\n\r\nconst PaginationFooter = ({ gotoPage, ...pagination }: Props) => {\r\n const totalPages = pagination.totalPages || 1;\r\n const currentPage = pagination.currentPage || 1;\r\n let pageNodes: React.ReactNode[] = [];\r\n\r\n const pageSelected = (nextPageNumber: number) => {\r\n gotoPage(nextPageNumber);\r\n };\r\n\r\n const nextPage = () => {\r\n gotoPage(pagination.currentPage + 1);\r\n };\r\n\r\n const prevPage = () => {\r\n gotoPage(pagination.currentPage - 1);\r\n };\r\n\r\n for (let i = 1; i <= totalPages; ++i) {\r\n\r\n const className = classNames([\r\n \"page-item\",\r\n {\"disabled\": totalPages <= 1},\r\n {\"active\": i === currentPage && totalPages > 1}\r\n ])\r\n\r\n pageNodes = pageNodes.concat(\r\n <li\r\n className={className}\r\n onClick={e => {\r\n pageSelected(i);\r\n e.preventDefault();\r\n }}\r\n key={i}\r\n >\r\n <button className=\"page-link index\">{i}</button>\r\n </li>\r\n );\r\n }\r\n\r\n return (\r\n <nav aria-label=\"Transaction page navigation\">\r\n <ul className=\"pagination\">\r\n <li className={currentPage <= 1 ? \"disabled page-item\" : \"page-item\"}\r\n onClick={prevPage}>\r\n\r\n <button className=\"page-link\" onClick={nextPage}>Previous</button>\r\n </li>\r\n\r\n {pageNodes}\r\n\r\n <li className={currentPage >= totalPages ? \"disabled page-item\" : \"page-item\"} >\r\n <button className=\"page-link\" onClick={nextPage}>Next</button>\r\n </li>\r\n </ul>\r\n </nav>\r\n );\r\n};\r\n\r\nexport default PaginationFooter\r\n","import { ApolloError } from '@apollo/client';\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport { makeNonEmpty } from 'core/util/array';\r\nimport { addDays } from 'date-fns';\r\nimport { AccountTransaction, useAccountByIdOrNumberQuery } from 'generated/generated-models';\r\nimport { useState } from 'react';\r\n\r\nconst filterTransactions = (transactions: (AccountTransaction | undefined)[] | undefined, transactionHistoryLimitDays: number) => {\r\n const filteredTrans = makeNonEmpty(transactions)\r\n .filter(tran => (tran.IsPending && !tran.WasReversed) || // pending transactions will be reversed once no longer pending\r\n (tran.AppearsOnStatement && !tran.WasBackedOut));\r\n\r\n const cutOffDate = transactionHistoryLimitDays > 0 ? addDays(new Date(), -transactionHistoryLimitDays) : new Date(1990, 1, 1);\r\n\r\n // Dirty hack because our types are wrong\r\n return filteredTrans.filter(tran => new Date(tran.EffectiveDate) >= cutOffDate);\r\n}\r\n\r\ntype Transactions = {\r\n filteredTransactions: AccountTransaction[];\r\n pagedTransactions: AccountTransaction[];\r\n}\r\n\r\nconst pageTransactions = (transactions: (AccountTransaction | undefined)[] | undefined, page: number, transactionPageSize: number, transactionHistoryLimitDays: number): Transactions => {\r\n const filteredTransactions = filterTransactions(transactions, transactionHistoryLimitDays);\r\n\r\n if (transactionPageSize < 1) {\r\n return {\r\n filteredTransactions: makeNonEmpty(filteredTransactions),\r\n pagedTransactions: makeNonEmpty(filteredTransactions)\r\n };\r\n }\r\n\r\n const startIndex = (page - 1) * transactionPageSize;\r\n const endIndex = startIndex + transactionPageSize;\r\n\r\n return {\r\n filteredTransactions: filteredTransactions,\r\n pagedTransactions: filteredTransactions.slice(startIndex, endIndex)\r\n };\r\n}\r\n\r\ntype PageTransactions = {\r\n currentPage: number;\r\n totalPages: number;\r\n nextPage: () => void;\r\n previousPage: () => void;\r\n gotoPage: (page: number) => void;\r\n error?: ApolloError;\r\n loading: boolean;\r\n transactions?: AccountTransaction[];\r\n}\r\n\r\nexport const usePagedTransactions: (accountId: string, disablePaging?: boolean) => PageTransactions = (accountId, disablePaging = false) => {\r\n const { transactionHistoryLimitDays = 0 } = clientConfigFn();\r\n\r\n const { data, error } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: accountId },\r\n fetchPolicy: \"network-only\",\r\n });\r\n const [currentPage, setCurrentPage] = useState(1);\r\n let { transactionPageSize = 0 } = clientConfigFn();\r\n\r\n if (disablePaging) {\r\n transactionPageSize = 0;\r\n }\r\n\r\n const transactions = pageTransactions(data?.accountByIdOrNumber?.Transactions, currentPage, transactionPageSize, transactionHistoryLimitDays);\r\n const totalPages = transactionPageSize > 0 ? Math.ceil((transactions?.filteredTransactions?.length ?? 0) / transactionPageSize) : 1;\r\n\r\n const constrainPage = (pageNumber: number) => {\r\n return Math.min(Math.max(pageNumber, 1), totalPages);\r\n }\r\n\r\n const returnValue = {\r\n currentPage: currentPage,\r\n totalPages: totalPages,\r\n nextPage: () => setCurrentPage(x => constrainPage(x + 1)),\r\n previousPage: () => setCurrentPage(x => constrainPage(x - 1)),\r\n gotoPage: (page: number) => setCurrentPage(constrainPage(page)),\r\n loading: false\r\n }\r\n\r\n if (error) {\r\n return {\r\n ...returnValue,\r\n error: error,\r\n }\r\n }\r\n\r\n if (data == null) {\r\n return {\r\n ...returnValue,\r\n loading: true,\r\n }\r\n }\r\n\r\n return {\r\n ...returnValue,\r\n transactions: transactions.pagedTransactions\r\n };\r\n}\r\n","import MoneySigned from \"./MoneySigned\";\r\nimport TransactionPageIcon from \"app/components/TransactionPageIcon\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\ntype Props = {\r\n amount?: number,\r\n isShowZero?: boolean\r\n direction: \"credit\" | \"debit\"\r\n}\r\n\r\nconst getColour = (direction: \"credit\" | \"debit\") => {\r\n const config = clientConfigFn();\r\n\r\n switch (direction) {\r\n case \"credit\":\r\n return config.showTransactionsAsLender ? \"red\" : \"green\";\r\n case \"debit\":\r\n return config.showTransactionsAsLender ? \"green\" : \"red\";\r\n }\r\n}\r\n\r\nconst TransactionPageIconMoney = ({ amount = 0, direction, isShowZero }: Props) => {\r\n const colour = getColour(direction);\r\n\r\n if (amount === 0 && !isShowZero) {\r\n return null;\r\n }\r\n\r\n return <span className=\"transactionpage-moneyicon\">\r\n <TransactionPageIcon iconName={direction} style={{ color: colour }} />\r\n <MoneySigned amount={amount} direction={direction} isShowZero={isShowZero} />\r\n </span>\r\n}\r\n\r\nexport default TransactionPageIconMoney;\r\n","import { CDate } from \"app/common/CapitalDate\";\r\nimport { AccountTransaction } from \"generated/generated-models\";\r\n\r\nconst DescriptionListItem = ({ title, value }: { title: string; value?: React.ReactNode }) => (\r\n <div className=\"transaction-description-item\">\r\n <dt className=\"transaction-description-item-term\">{title}</dt>\r\n <dd className=\"transaction-description-item-definition\">{value}</dd>\r\n </div>\r\n)\r\n\r\nconst DetailViewerContainer: React.FC = ({ children }) => {\r\n\r\n return (\r\n <tr className=\"transaction-description\">\r\n <td />\r\n <td />\r\n <td colSpan={4} >\r\n <>{children}</>\r\n </td>\r\n </tr>\r\n )\r\n}\r\n\r\nconst DetailView = ({ trans }: { trans: AccountTransaction }) => {\r\n\r\n if (trans.IsPending) {\r\n return (\r\n <DetailViewerContainer>\r\n <dl>\r\n <DescriptionListItem title=\"Message ID\" value=\"fc31e3d01949490894b05ef59d1095dc\" />\r\n <DescriptionListItem title=\"Pending ID\" value=\"1092\" />\r\n <DescriptionListItem title=\"Date Created\" value={<CDate date={trans.CreatedOn}/>} />\r\n <DescriptionListItem title=\"Trace Number\" value=\"82938\" />\r\n <DescriptionListItem title=\"Card Number\" value=\"366000XXXXXX0412\" />\r\n <DescriptionListItem title=\"Description\" value=\"AUSACC\" />\r\n <DescriptionListItem title=\"Merchant ID\" value=\"321\" />\r\n <DescriptionListItem title=\"Merchant\" value=\"TEST MERCHANT\" />\r\n <DescriptionListItem title=\"Location\" value=\"SYDNEY NSW AU\" />\r\n </dl>\r\n </DetailViewerContainer>\r\n )\r\n } else {\r\n return (\r\n <DetailViewerContainer>\r\n <dl>\r\n <DescriptionListItem title=\"Transaction Source\" value=\"Cheque Transaction\" />\r\n <DescriptionListItem title=\"Description\" value=\"\" />\r\n <DescriptionListItem title=\"Additional Text\" value=\"INDUE MESSAGE DECODER CHATSWOOD NSW\" />\r\n <DescriptionListItem title=\"Card Number\" value=\"366000xxxxxx0412\" />\r\n <DescriptionListItem title=\"Terminal ID\" value=\"654\" />\r\n <DescriptionListItem title=\"Location\" value=\"INDUE MESSAGE DECODER NSW\" />\r\n <DescriptionListItem title=\"Merchant Code\" value=\"5541\" />\r\n <DescriptionListItem title=\"Processing Code\" value=\"Debit\" />\r\n <DescriptionListItem title=\"Billing Flag\" value=\"POS\" />\r\n <DescriptionListItem title=\"Cash Component\" value=\"$0.00\" />\r\n <DescriptionListItem title=\"Device Type\" value=\"POS\" />\r\n <DescriptionListItem title=\"Transaction Subtype\" value=\"POS with goods sold\" />\r\n </dl>\r\n </DetailViewerContainer>\r\n )\r\n }\r\n}\r\n\r\nexport default DetailView;\r\n","import { faChevronUp, faChevronDown, faClock } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { CDate } from \"app/common/CapitalDate\";\r\nimport MoneySigned from \"app/components/MoneySigned\";\r\nimport TransactionPageIconMoney from \"app/components/TransactionPageIconMoney\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { IsNullOrWhiteSpace } from \"core/util/stringExtensions\";\r\nimport { AccountTransaction } from \"generated/generated-models\";\r\nimport DetailView from \"./DetailView\";\r\n\r\nconst TransactionDescription = ({ transaction }: { transaction: AccountTransaction }) => {\r\n if (!transaction.IsPending) {\r\n return null;\r\n }\r\n\r\n return <>\r\n <FontAwesomeIcon icon={faClock} /> PENDING\r\n </>\r\n}\r\n\r\nconst ExpandDetailView = ({ currentDetail, setDetailView, transId }: { transId: string, currentDetail?: string, setDetailView: (transId?: string) => void }) => {\r\n const { BETA_showDetailView } = clientConfigFn();\r\n\r\n if(!BETA_showDetailView) {\r\n return null;\r\n }\r\n\r\n const handleClick = () => {\r\n if (transId === currentDetail) {\r\n setDetailView(undefined);\r\n } else {\r\n setDetailView(transId);\r\n }\r\n }\r\n\r\n if (transId === currentDetail) {\r\n return <FontAwesomeIcon icon={faChevronUp} onClick={handleClick} style={{ cursor: \"pointer\" }} />\r\n } else {\r\n return <FontAwesomeIcon icon={faChevronDown} onClick={handleClick} style={{ cursor: \"pointer\" }} />\r\n }\r\n}\r\n\r\ntype Props = {\r\n trans?: AccountTransaction | null;\r\n detailView?: string;\r\n setDetailView: (id?: string) => void;\r\n}\r\n\r\nconst TransactionRow = ({ trans, detailView, setDetailView }: Props) => {\r\n if (!trans) {\r\n return <></>;\r\n }\r\n\r\n\r\n return (\r\n <>\r\n <tr>\r\n <td className=\"date-cell\">\r\n <CDate date={trans.Effective} />\r\n </td>\r\n <td>\r\n <ExpandDetailView setDetailView={setDetailView} transId={trans.Id} currentDetail={detailView} />\r\n </td>\r\n <td className=\"description-cell\">\r\n <div>{trans.TransactionType}</div>\r\n <TransactionDescription transaction={trans} />\r\n {!IsNullOrWhiteSpace(trans.Note) &&\r\n <div className=\"txn-note\"><b>Note:</b> {trans.Note}</div>\r\n }\r\n </td>\r\n <td className=\"debit-cell\">\r\n <TransactionPageIconMoney amount={trans.Increase} direction=\"debit\" isShowZero={false} />\r\n </td>\r\n <td className=\"credit-cell\">\r\n <TransactionPageIconMoney amount={trans.Decrease} direction=\"credit\" isShowZero={false} />\r\n </td>\r\n <td className=\"balance-cell\">\r\n <MoneySigned amount={trans.Balance} direction=\"total\" />\r\n </td>\r\n </tr>\r\n {detailView === trans.Id &&\r\n <DetailView trans={trans} />\r\n }\r\n </>\r\n );\r\n};\r\n\r\nexport default TransactionRow;\r\n","import DesktopTransactionList from \"./DesktopTransactonList\";\r\n\r\nexport default DesktopTransactionList;\r\n","import TransactionPageIcon from \"app/components/TransactionPageIcon\";\r\nimport { useState } from \"react\";\r\nimport PaginationFooter from \"./PaginationFooter\";\r\nimport { usePagedTransactions } from \"../../PaginationUtilities\";\r\nimport TransactionRow from \"./TransactionRow\";\r\n\r\nconst DesktopTransactionList = ({ accountId }: { accountId: string }) => {\r\n const [detailTransaction, setDetailTransaction] = useState<string>();\r\n const { transactions, currentPage, gotoPage, totalPages } = usePagedTransactions(accountId);\r\n\r\n return (\r\n <>\r\n <table className=\"table\">\r\n <thead>\r\n <tr>\r\n <th className=\"date-header\"><TransactionPageIcon iconName=\"date\" />Date</th>\r\n <th></th>\r\n <th className=\"description-header\"><TransactionPageIcon iconName=\"description\" />Description</th>\r\n <th className=\"debit-header\"><TransactionPageIcon iconName=\"debit\" />Debit</th>\r\n <th className=\"credit-header\"><TransactionPageIcon iconName=\"credit\" />Credit</th>\r\n <th className=\"balance-header\"><TransactionPageIcon iconName=\"balance\" />Balance</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {transactions?.map(trans =>\r\n <TransactionRow trans={trans} detailView={detailTransaction} setDetailView={setDetailTransaction} key={trans?.Id} />\r\n )}\r\n </tbody>\r\n <tfoot />\r\n </table>\r\n <PaginationFooter currentPage={currentPage} gotoPage={gotoPage} totalPages={totalPages} />\r\n </>\r\n );\r\n};\r\n\r\nexport default DesktopTransactionList;\r\n","import { faClock } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport MoneySigned from \"app/components/MoneySigned\";\r\nimport classNames from \"classnames\";\r\nimport { AccountTransaction } from \"generated/generated-models\"\r\n\r\nconst MobileTransaction = ({transaction}: {transaction: AccountTransaction}) => {\r\n const pendingClassName = classNames([{ \"money-pending\": transaction.IsPending }]);\r\n\r\n return (\r\n <div style={{ textAlign: \"end\" }}>\r\n {transaction.IsPending &&\r\n <FontAwesomeIcon icon={faClock} size=\"sm\" className=\"money-pending-icon\" />\r\n }\r\n {!!transaction.Decrease &&\r\n <MoneySigned amount={transaction.Decrease} direction=\"credit\" className={pendingClassName} addColour={true} />\r\n }\r\n {!!transaction.Increase &&\r\n <MoneySigned amount={transaction.Increase} direction=\"debit\" className={pendingClassName} />\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport default MobileTransaction;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport classNames from \"classnames\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { groupBy } from \"core/util/array\";\r\nimport { endOfDay } from \"date-fns\";\r\nimport { AccountTransaction } from \"generated/generated-models\";\r\nimport { usePagedTransactions } from \"../PaginationUtilities\";\r\nimport MobileTransaction from \"./MobileTransaction\";\r\nimport { TransactionListProps } from \"./TransactionListView\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowUp } from \"@fortawesome/free-solid-svg-icons\";\r\nimport useInfiniteScroll from \"react-infinite-scroll-hook\";\r\n\r\ntype CardProps = {\r\n date: Date;\r\n transactions: Array<AccountTransaction>;\r\n showDetailView: (account: AccountTransaction) => void;\r\n}\r\n\r\nconst TransactionDateCard = (props: CardProps) => {\r\n const { BETA_showDetailView } = clientConfigFn();\r\n\r\n const handleClick = (transaction: AccountTransaction) => {\r\n if (BETA_showDetailView) {\r\n props.showDetailView(transaction);\r\n }\r\n }\r\n\r\n const groupItemClasses = classNames([\r\n \"list-group-item\",\r\n { \"cursor-pointer\": BETA_showDetailView }\r\n ])\r\n\r\n return (\r\n <div className=\"card\">\r\n <div className=\"card-header\">\r\n {props.date.toDateString()}\r\n </div>\r\n <ul className=\"list-group list-group-flush\">\r\n {props.transactions.map(x => (\r\n <li className={groupItemClasses} onClick={() => handleClick(x)}>\r\n <div className=\"left-item\">\r\n <div>\r\n {x.TransactionType}\r\n </div>\r\n <div className=\"text-muted small\">\r\n {x.Note}\r\n </div>\r\n </div>\r\n <div className=\"right-item\">\r\n <MobileTransaction transaction={x} />\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )\r\n}\r\n\r\nconst MobileTransactionList = ({ accountId, setDetailView }: TransactionListProps) => {\r\n const { transactions } = usePagedTransactions(accountId, true);\r\n\r\n const [isVisible, setIsVisible] = useState(false);\r\n const { loading, items, hasNextPage, error, loadMore } = useLoadItems();\r\n const { transactionPageSize } = clientConfigFn();\r\n\r\n const ARRAY_SIZE = transactionPageSize || 20;\r\n const RESPONSE_TIME_IN_MS = 1200;\r\n \r\n interface Item {\r\n key: number;\r\n value: string;\r\n }\r\n interface Response {\r\n hasNextPage: boolean;\r\n data: Item[];\r\n }\r\n \r\n function loadItems(startCursor = 0): Promise<Response> {\r\n return new Promise((resolve) => {\r\n let newArray: any[] = [];\r\n \r\n setTimeout(() => {\r\n if(groupedTransactionList.length >= items.length) {\r\n for (let i = startCursor; i < startCursor + ARRAY_SIZE; i++) {\r\n const transactionItem = groupedTransactionList[i];\r\n const newItem = {\r\n key: i,\r\n value: transactionItem,\r\n };\r\n newArray = [...newArray, newItem];\r\n }\r\n resolve({ hasNextPage: true, data: newArray });\r\n\r\n } else {\r\n resolve({ hasNextPage: false, data: newArray });\r\n }\r\n }, RESPONSE_TIME_IN_MS);\r\n });\r\n }\r\n function useLoadItems() {\r\n const [loading, setLoading] = React.useState(false);\r\n const [items, setItems] = React.useState<Item[]>([]);\r\n const [hasNextPage, setHasNextPage] = React.useState<boolean>(true);\r\n const [error, setError] = React.useState<any | Error>();\r\n \r\n async function loadMore() {\r\n setLoading(true);\r\n try {\r\n const { data, hasNextPage: newHasNextPage } = await loadItems(\r\n items.length,\r\n );\r\n setItems((current) => [...current, ...data]);\r\n setHasNextPage(newHasNextPage);\r\n } catch (err) {\r\n setError(err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n return { loading, items, hasNextPage, error, loadMore };\r\n }\r\n\r\n const [sentryRef] = useInfiniteScroll({\r\n loading,\r\n hasNextPage,\r\n onLoadMore: loadMore,\r\n // When there is an error, we stop infinite loading.\r\n // It can be reactivated by setting \"error\" state as undefined.\r\n disabled: !!error,\r\n // `rootMargin` is passed to `IntersectionObserver`.\r\n // We can use it to trigger 'onLoadMore' when the sentry comes near to become\r\n // visible, instead of becoming fully visible on the screen.\r\n rootMargin: '0px 0px 400px 0px',\r\n });\r\n\r\n const toggleVisibility = () => {\r\n if (window.scrollY > 300) {\r\n setIsVisible(true);\r\n } else {\r\n setIsVisible(false);\r\n }\r\n };\r\n const scrollToTop = () => {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: \"smooth\"\r\n });\r\n };\r\n \r\n useEffect(() => {\r\n window.addEventListener(\"scroll\", toggleVisibility);\r\n }, []);\r\n\r\n if (transactions == null) {\r\n return <Loading />\r\n }\r\n\r\n const groupedTransactions = groupBy(transactions,\r\n (transaction) => endOfDay(new Date(transaction.EffectiveDate)),\r\n (firstElement, secondElement) => secondElement.valueOf() - firstElement.valueOf());\r\n\r\n const groupedTransactionList = groupedTransactions.map(x => <TransactionDateCard date={x.key} transactions={x.elements} showDetailView={setDetailView} />);\r\n\r\n return (\r\n <div className=\"mobile-transaction-list-container\">\r\n {items.map((item) => (\r\n <div key={item.key}>{item.value}</div>\r\n ))}\r\n {(loading || hasNextPage) && (\r\n <p className=\"dataEnd\" ref={sentryRef}>\r\n <Loading />\r\n </p>\r\n )}\r\n {(!hasNextPage) && (\r\n <p className=\"dataEnd\" ref={sentryRef}>\r\n There are no more items to display.\r\n </p>\r\n )}\r\n\r\n <div className=\"scroll-to-top\">\r\n {isVisible && \r\n <div className=\"btn-scroll\" onClick={scrollToTop}>\r\n <FontAwesomeIcon icon={faArrowUp} />\r\n </div>}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default MobileTransactionList;\r\n","import TransactionListView from \"./TransactionListView\";\r\n\r\nexport default TransactionListView;\r\n","import { useScreenSize } from \"app/lib/useScreenSize\";\r\nimport { AccountTransaction } from \"generated/generated-models\";\r\nimport DesktopTransactionList from \"./DesktopTransactionList\";\r\nimport MobileTransactionList from \"./MobileTransactionList\";\r\n\r\nexport type TransactionListProps = {\r\n accountId: string;\r\n setDetailView: (transaction: AccountTransaction) => void;\r\n}\r\n\r\nconst TransactionListView = ({ accountId, setDetailView }: TransactionListProps) => {\r\n const screenSize = useScreenSize();\r\n\r\n if (screenSize === \"desktop\") {\r\n return <DesktopTransactionList accountId={accountId} />\r\n } else {\r\n return <MobileTransactionList\r\n accountId={accountId}\r\n setDetailView={setDetailView}\r\n />\r\n }\r\n}\r\n\r\nexport default TransactionListView;\r\n","import { useMediaQuery } from \"react-responsive\"\r\n\r\ntype ScreenSize =\r\n | \"mobile\"\r\n | \"desktop\"\r\n\r\nexport const useScreenSize: () => ScreenSize = () => {\r\n const isDesktop = useMediaQuery({ query: '(min-width: 768px)' })\r\n\r\n if (isDesktop) {\r\n return \"desktop\";\r\n } else {\r\n return \"mobile\";\r\n }\r\n}\r\n","import Button from \"app/components/Button\";\r\nimport Title from \"app/components/Title\";\r\nimport { AccountTransaction } from \"generated/generated-models\";\r\nimport MobileTransaction from \"./MobileTransaction\";\r\n\r\ntype Props = {\r\n goBack: () => void;\r\n transaction: AccountTransaction\r\n}\r\n\r\nconst ListItem = ({ title, value }: { title: string; value?: string; }) => (\r\n <li className=\"list-group-item\">\r\n <h6 className=\"term\">\r\n {title}\r\n </h6>\r\n <div className=\"definition\">\r\n {value}\r\n </div>\r\n </li>\r\n)\r\n\r\nconst TransactionContainer: React.FC<Props> = ({ goBack, transaction, children }) => {\r\n\r\n return (\r\n <div className=\"mobile-transaction-detail-container\">\r\n <Title title=\"Transaction\" />\r\n <div className=\"card\">\r\n <div className=\"card-header\">\r\n <h6 className=\"term\">\r\n {transaction.StatementText}\r\n </h6>\r\n <div className=\"definition\">\r\n <MobileTransaction transaction={transaction} />\r\n </div>\r\n </div>\r\n\r\n <>{children}</>\r\n </div>\r\n\r\n <Button onClick={goBack} role=\"secondary\" isBlock={true}>Go Back</Button>\r\n </div>\r\n )\r\n}\r\n\r\nconst TransactionView = ({ transaction }: { transaction: AccountTransaction }) => {\r\n\r\n return (\r\n <ul className=\"list-group list-group-flush\">\r\n <ListItem title=\"Note\" value={transaction.Note} />\r\n <ListItem title=\"Date\" value={(new Date(transaction.CreatedOn)).toDateString()} />\r\n <ListItem title=\"Transaction Source\" value=\"Cheque Transaction\" />\r\n <ListItem title=\"Description\" value=\"\" />\r\n <ListItem title=\"Additional Text\" value=\"INDUE MESSAGE DECODER CHATSWOOD NSW\" />\r\n <ListItem title=\"Card Number\" value=\"366000xxxxxx0412\" />\r\n <ListItem title=\"Terminal ID\" value=\"654\" />\r\n <ListItem title=\"Location\" value=\"INDUE MESSAGE DECODER NSW\" />\r\n <ListItem title=\"Merchant Code\" value=\"5541\" />\r\n <ListItem title=\"Processing Code\" value=\"Debit\" />\r\n <ListItem title=\"Billing Flag\" value=\"POS\" />\r\n <ListItem title=\"Cash Component\" value=\"$0.00\" />\r\n <ListItem title=\"Device Type\" value=\"POS\" />\r\n <ListItem title=\"Transaction Subtype\" value=\"POS with goods sold\" />\r\n </ul>\r\n )\r\n}\r\n\r\nconst PendingTransactionView = ({ transaction }: { transaction: AccountTransaction }) => {\r\n\r\n return (\r\n <ul className=\"list-group list-group-flush\">\r\n <ListItem title=\"Note\" value={transaction.Note} />\r\n <ListItem title=\"Message ID\" value=\"fc31e3d01949490894b05ef59d1095dc\" />\r\n <ListItem title=\"Pending ID\" value=\"1092\" />\r\n <ListItem title=\"Date Created\" value={(new Date(transaction.CreatedOn)).toDateString()} />\r\n <ListItem title=\"Trace Number\" value=\"82938\" />\r\n <ListItem title=\"Card Number\" value=\"366000XXXXXX0412\" />\r\n <ListItem title=\"Description\" value=\"AUSACC\" />\r\n <ListItem title=\"Merchant ID\" value=\"321\" />\r\n <ListItem title=\"Merchant\" value=\"TEST MERCHANT\" />\r\n <ListItem title=\"Location\" value=\"SYDNEY NSW AU\" />\r\n </ul>\r\n )\r\n}\r\n\r\nconst MobileTransactionDetail = ({ goBack, transaction }: Props) => {\r\n if (transaction.IsPending) {\r\n return (\r\n <TransactionContainer goBack={goBack} transaction={transaction}>\r\n <PendingTransactionView transaction={transaction} />\r\n </TransactionContainer>\r\n )\r\n } else {\r\n return (\r\n <TransactionContainer goBack={goBack} transaction={transaction}>\r\n <TransactionView transaction={transaction} />\r\n </TransactionContainer>\r\n )\r\n }\r\n}\r\n\r\nexport default MobileTransactionDetail;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { AccountTransaction, useAccountByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport { EditableAccountDescription } from \"./changeAccountDescription/EditableAccountDescription\";\r\nimport { AccountSummaryHeader } from './AccountSummaryHeader';\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport TransactionListView from \"app/transaction/TransactionListView\";\r\nimport MobileTransactionDetail from \"app/transaction/TransactionListView/MobileTransactionDetail\";\r\n\r\nconst AccountView: React.FC<{ accountId: string }> = ({ accountId }) => {\r\n const {transactionHistoryLimitDays: historyDays} = clientConfigFn();\r\n\r\n const { data, loading, error } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: accountId }\r\n });\r\n\r\n const [detailView, setDetailView] = useState<AccountTransaction>();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [detailView]);\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n\r\n const account = data?.accountByIdOrNumber;\r\n\r\n if (error !== undefined || account === undefined) {\r\n return <CError error=\"Could not load account details\" />\r\n }\r\n\r\n if(detailView != null) {\r\n return (\r\n <section className=\"cap-account-view sub-wrap\">\r\n <MobileTransactionDetail transaction={detailView} goBack={() => setDetailView(undefined)} />\r\n </section>\r\n )\r\n }\r\n\r\n return (\r\n <section className=\"cap-account-view sub-wrap\">\r\n <EditableAccountDescription\r\n accountId={account.Id}\r\n description={account.Description || account.ProductType || \" \"}\r\n />\r\n\r\n <AccountSummaryHeader account={account} />\r\n <h1 className=\"h3 mt-4\">\r\n Transactions \r\n {historyDays ? (\r\n <small className=\"text-muted transactiondays\">Last {historyDays} days</small>\r\n ) : null}\r\n </h1>\r\n <TransactionListView accountId={accountId} setDetailView={setDetailView} />\r\n </section>\r\n );\r\n}\r\n\r\nexport {\r\n AccountView\r\n}\r\n","import ActionCard from \"app/accountTransfer/utilities/ActionCard\";\r\nimport { IndueCard } from \"generated/generated-models\";\r\nimport React from \"react\";\r\n\r\ntype Props = {\r\n indueCard: IndueCard\r\n}\r\n\r\nconst IndueCardPageCards = ({indueCard}: Props) => {\r\n return (\r\n <div className=\"transfer-options container\">\r\n <div className=\"row row-cols-1 row-cols-md-3\">\r\n <ActionCard title=\"Change PIN\" link=\"changepin\" />\r\n {(indueCard.CanHold) &&\r\n (<ActionCard title=\"Hold Card\" link=\"holdcard\" />)}\r\n {(indueCard.CanActivate) &&\r\n (<ActionCard title=\"Activate Card\" link=\"activatecard\" />)}\r\n {(indueCard.CanReportLostStolen) &&\r\n (<ActionCard title=\"Report Lost or Stolen\" link=\"loststolencard\" />)}\r\n {indueCard.CanClose &&\r\n <ActionCard title=\"Close Card\" link=\"closecard\" />}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default IndueCardPageCards;\r\n","import { IndueCard, IndueCardStatus } from \"generated/generated-models\";\r\nimport React from \"react\";\r\nimport { CDate } from \"app/common/CapitalDate\";\r\nimport { useHistory } from \"react-router\";\r\n\r\nconst statusToText = (status: IndueCardStatus) => {\r\n switch (status) {\r\n case IndueCardStatus.Active:\r\n return \"Active\";\r\n case IndueCardStatus.Activeoff:\r\n return \"On Hold\";\r\n case IndueCardStatus.Cardcreated:\r\n return \"Created\";\r\n case IndueCardStatus.Closed:\r\n return \"Closed\";\r\n case IndueCardStatus.Lost:\r\n return \"Lost\";\r\n case IndueCardStatus.Ordered:\r\n return \"Ordered\";\r\n case IndueCardStatus.Other:\r\n return \"Other\";\r\n case IndueCardStatus.Restricted:\r\n return \"Restricted\";\r\n case IndueCardStatus.Stolen:\r\n return \"Stolen\";\r\n case IndueCardStatus.Damaged:\r\n return \"Damaged\";\r\n }\r\n}\r\n\r\n\r\nconst CardTableRow = ({ card, account }: { card: IndueCard, account: string }) => {\r\n const history = useHistory();\r\n\r\n const handleClick = () => {\r\n history.push(`/Account/Index/${account}/Induecards/${card.Id}`);\r\n };\r\n\r\n const lastFourDigits = card.CardNumber?.substr(-4) ?? \"\";\r\n const maskedCard = \"#### #### #### \" + lastFourDigits;\r\n\r\n return (\r\n <tr onClick={handleClick}\r\n key={card.Id}\r\n >\r\n <td>{maskedCard}</td>\r\n <td><CDate date={card.ExpiryDate} /></td>\r\n <td>{statusToText(card.Status)}</td>\r\n </tr>\r\n );\r\n};\r\n\r\nconst CardTableBody = (account: string, cards?: IndueCard[]) => {\r\n if (!cards || cards.length === 0) {\r\n return (\r\n <tr>\r\n <td className=\"text-muted text-center\" colSpan={100}>\r\n There are no cards for this account\r\n </td>\r\n </tr>\r\n );\r\n }\r\n return cards.map(card => <CardTableRow card={card} account={account} key={card.Id} />);\r\n};\r\n\r\ntype IndueCardListTableProps = {\r\n selectable?: boolean\r\n accountNumber: string,\r\n cards?: IndueCard[],\r\n};\r\n\r\nconst IndueCardListTable = ({selectable, accountNumber, cards}: IndueCardListTableProps) => {\r\n let tableClassName = \"table table-no-select\";\r\n\r\n if (selectable === true || (selectable == null && cards != null && cards.length > 0)) {\r\n tableClassName = \"table table-selectable\"\r\n }\r\n\r\n return (\r\n <div className=\"cardtable-container\">\r\n <table className={tableClassName} id=\"cards\">\r\n <thead>\r\n <tr className=\"table-no-select\">\r\n <th>Card Number</th>\r\n <th>Expiry</th>\r\n <th>Status</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {CardTableBody(accountNumber, cards)}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default IndueCardListTable;\r\n","import React from \"react\";\r\nimport IndueCardPageCards from \"./IndueCardPageCards\";\r\nimport IndueCardListTable from \"./IndueCardListTable\";\r\nimport { useIndueCardDetailsQuery } from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Guid } from \"guid-typescript\";\r\n\r\ntype Props = {\r\n accountNumber: string;\r\n cardId: Guid | string;\r\n}\r\n\r\nconst IndueCardPage: React.FC<Props> = ({ accountNumber, cardId }) => {\r\n const { data, loading, error } = useIndueCardDetailsQuery({\r\n variables: { input: { CardId: cardId } },\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n const card = data?.indueCardDetails;\r\n\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n if (error || card == null) {\r\n return <CError error=\"Could not retrieve card details\" />;\r\n }\r\n\r\n const cards = [card]\r\n return (\r\n <div className=\"main-content sub-wrap\">\r\n <h2>Card</h2>\r\n <IndueCardPageCards \r\n indueCard={card}\r\n />\r\n <IndueCardListTable\r\n selectable={false}\r\n accountNumber={accountNumber}\r\n cards={cards}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default IndueCardPage;\r\n","import * as yup from \"yup\";\r\nimport { getSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\nimport { IndueCardResetInput } from \"./IndueCardResetPinPage\";\r\n\r\nconst config = {\r\n\tCardPinFixedLength: 4,\r\n};\r\n\r\nexport const Validate = (requiresMfa: boolean) => {\r\n\r\n const schema: yup.ObjectSchema<IndueCardResetInput> = yup.object({\r\n CardId: yup.string().required(),\r\n \r\n NewPin: yup\r\n .string()\r\n .required(\"New Pin is required\")\r\n .matches(new RegExp(`^[0-9]{${config.CardPinFixedLength}}$`), `Pin to be exactly ${config.CardPinFixedLength} digits`),\r\n \r\n ConfirmPin: yup\r\n .string()\r\n .required(\"Please confirm your New Pin\")\r\n .oneOf([yup.ref('NewPin')], \"Pins do not match\"),\r\n \r\n TwoFactorToken: getSecurityTokenValidator(requiresMfa)\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import React, { Fragment } from \"react\";\r\nconst initialState = {\r\n childrenVisible: false,\r\n};\r\ntype State = Readonly<typeof initialState>;\r\n/**\r\n * Render children after delay ms\r\n */\r\nexport class DelayedRender extends React.Component<\r\n {\r\n delay: number;\r\n },\r\n State\r\n> {\r\n timerId: number = 0;\r\n readonly state: State = initialState;\r\n setChildrenVisible() {\r\n this.setState({ childrenVisible: true });\r\n }\r\n componentDidMount() {\r\n this.timerId = window.setTimeout(\r\n () => this.setChildrenVisible(),\r\n this.props.delay\r\n );\r\n }\r\n render() {\r\n const { childrenVisible } = this.state;\r\n return <Fragment>{childrenVisible && this.props.children}</Fragment>;\r\n }\r\n componentWillUnmount() {\r\n if (this.timerId) {\r\n window.clearTimeout(this.timerId);\r\n }\r\n }\r\n}\r\n","import { MutationResult, MutationFunctionOptions, FetchResult, MutationTuple } from \"@apollo/client\";\r\nimport { GraphQLError } from \"graphql\";\r\nimport { useState } from \"react\";\r\n\r\ntype ExtendedMutationResult<TData> = MutationResult<TData> & { tokenRequired: boolean }\r\n\r\ntype extendedMutation<TData, TVariables> = [(options?: MutationFunctionOptions<TData, TVariables>) => Promise<FetchResult<TData>>, ExtendedMutationResult<TData>];\r\n\r\nfunction isTokenRequiredError(error: GraphQLError) {\r\n if (error.extensions?.code === \"AUTH_TOKEN_REQUIRED\") {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function useSecurityTokenMutation<TData, TVariables>(mutationResult: MutationTuple<TData, TVariables>) {\r\n const [tokenRequired, setTokenRequired] = useState(false);\r\n\r\n const originalResponse = mutationResult[1];\r\n\r\n if (originalResponse.error?.graphQLErrors?.find(error => isTokenRequiredError(error))) {\r\n if (!tokenRequired) {\r\n setTokenRequired(true);\r\n }\r\n }\r\n\r\n if (originalResponse.error?.graphQLErrors != null) {\r\n var filteredErrors = originalResponse.error?.graphQLErrors.filter(error => !isTokenRequiredError(error));\r\n\r\n if (filteredErrors.length === 0) {\r\n originalResponse.error = undefined;\r\n } else {\r\n originalResponse.error.graphQLErrors = filteredErrors;\r\n }\r\n }\r\n\r\n (mutationResult[1] as ExtendedMutationResult<TData>).tokenRequired = tokenRequired;\r\n\r\n return mutationResult as extendedMutation<TData, TVariables>;\r\n}\r\n","import { IndueCard } from \"generated/generated-models\";\r\n\r\nexport const getMaskedCardNumber = (card: IndueCard) => {\r\n const cardNum = card.CardNumber;\r\n const lastFourDigits = cardNum?.substr(-4) ?? \"\";\r\n const maskedCard = \"#### #### #### \" + lastFourDigits;\r\n\r\n return maskedCard;\r\n}\r\n","import { Formik, Form } from \"formik\";\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport Input from \"app/components/Input\";\r\nimport Button from \"app/components/Button\";\r\nimport { useIndueCardDetailsQuery, useIndueCardChangePinMutation } from \"generated/generated-models\";\r\nimport React from \"react\";\r\nimport { Validate } from \"./IndueCardResetPinValidate\";\r\nimport Title from \"app/components/Title\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport { Redirect, useHistory } from \"react-router-dom\";\r\nimport { DelayedRender } from \"app/lib/components/DelayedRender\";\r\nimport { useSecurityTokenMutation } from \"core/apollo/SecurityTokenApollo\";\r\nimport { getMaskedCardNumber } from \"./utilities/cardNumber\";\r\nimport Alert from \"app/components/Alert\";\r\n\r\nexport type IndueCardResetInput = {\r\n CardId: Guid | string;\r\n NewPin?: string;\r\n ConfirmPin?: string;\r\n TwoFactorToken?: string;\r\n}\r\n\r\ntype IndueCardResetPinProps = {\r\n cardId: Guid | string;\r\n}\r\n\r\nconst IndueCardResetPinPage = ({ cardId }: IndueCardResetPinProps) => {\r\n const [changePin, { data: changePinData, error: changePinError, tokenRequired }] = useSecurityTokenMutation(useIndueCardChangePinMutation());\r\n\r\n const { data, loading, error } = useIndueCardDetailsQuery({\r\n variables: { input: { CardId: cardId } },\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n const history = useHistory();\r\n\r\n const handleSubmit = async (values: IndueCardResetInput) => {\r\n const pinString = values?.NewPin?.toString() ?? \"\";\r\n\r\n await changePin(\r\n {\r\n variables: {\r\n input: {\r\n CardId: cardId,\r\n Pin: pinString,\r\n TwoFactorToken: values.TwoFactorToken\r\n }\r\n },\r\n }\r\n );\r\n }\r\n\r\n const SuccesfullyChangedPin = () => {\r\n if (changePinData?.changePin?.Result === true) {\r\n return (\r\n <div className=\"alert alert-success\">\r\n Pin successfully changed!\r\n <DelayedRender delay={1500}>\r\n <\tRedirect to=\"../../induecards/\" />\r\n </DelayedRender>\r\n </div>\r\n )\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const card = data?.indueCardDetails;\r\n const initialValues: IndueCardResetInput = {\r\n CardId: cardId,\r\n NewPin: undefined,\r\n ConfirmPin: undefined\r\n }\r\n\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n\r\n if (error || card == null) {\r\n return <CError error={`Could not retrieve card details. ${error?.message}`} />;\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => handleSubmit(values)}\r\n validationSchema={() => Validate(tokenRequired)}\r\n >\r\n {({ isSubmitting }) =>\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title title=\"Change Pin\"\r\n subtitle={`Card ${getMaskedCardNumber(card)}`}\r\n />\r\n <Form>\r\n <Input\r\n name={nameof<IndueCardResetInput>(\"NewPin\")}\r\n type=\"wholeNumber\"\r\n label=\"New Pin\"\r\n />\r\n\r\n <Input\r\n name={nameof<IndueCardResetInput>(\"ConfirmPin\")}\r\n type=\"wholeNumber\"\r\n label=\"Confirm Pin\"\r\n />\r\n\r\n <RequestMultiFactorTokenFormik\r\n name={\"TwoFactorToken\"}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={tokenRequired}\r\n />\r\n\r\n <Alert\r\n visible={changePinError != null}\r\n message={`Could not change pin. ${changePinError?.message}`}\r\n />\r\n <SuccesfullyChangedPin />\r\n\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n disabled={isSubmitting}\r\n >\r\n Go Back\r\n </Button>\r\n\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n >\r\n Change Pin\r\n </Button>\r\n </Form>\r\n </div>\r\n }\r\n </Formik>\r\n )\r\n}\r\n\r\nexport { IndueCardResetPinPage };\r\n","import * as yup from \"yup\";\r\nimport { getSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\nimport { IndueCardStatusFormProps } from \"./IndueCardConfirmStatusChange\";\r\nimport { IndueCardStatus } from \"generated/generated-models\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => {\r\n const schema: yup.ObjectSchema<IndueCardStatusFormProps> = yup.object({\r\n selectedStatus: yup\r\n .mixed<IndueCardStatus>()\r\n .required()\r\n .label(\"Status\"),\r\n\r\n twoFactorToken: getSecurityTokenValidator(requiresMfa)\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import { CError } from \"app/common/CError\";\r\nimport Alert from \"app/components/Alert\";\r\nimport Button from \"app/components/Button\";\r\nimport ButtonGroup from \"app/components/ButtonGroup\";\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport Title from \"app/components/Title\";\r\nimport { useSecurityTokenMutation } from \"core/apollo/SecurityTokenApollo\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Form, Formik } from \"formik\";\r\nimport { useIndueCardChangeStatusMutation, IndueCardStatus } from \"generated/generated-models\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport * as H from 'history';\r\nimport { Validate } from \"./IndueCardChangeStatusValidate\";\r\n\r\ntype IndueCardStatusProps = {\r\n cardId: string;\r\n accountNumber: string;\r\n statusType: IndueCardStatus;\r\n}\r\n\r\nexport type IndueCardStatusFormProps = {\r\n twoFactorToken?: string;\r\n selectedStatus: IndueCardStatus | null;\r\n}\r\n\r\nconst handleSubmit = async (values: IndueCardStatusFormProps, cardId: string, changeStatus: ReturnType<typeof useIndueCardChangeStatusMutation>[\"0\"], history: H.History) => {\r\n const result = await changeStatus({\r\n variables: {\r\n input:\r\n {\r\n CardId: cardId,\r\n Status: values.selectedStatus!,\r\n TwoFactorToken: values.twoFactorToken\r\n }\r\n }\r\n });\r\n\r\n if (result.data?.changeStatus?.Result) {\r\n history.goBack();\r\n }\r\n}\r\n\r\nconst ActivateCardForm = ({ cardId }: { cardId: string }) => {\r\n const [changeStatus, { error, tokenRequired }] = useSecurityTokenMutation(useIndueCardChangeStatusMutation());\r\n const history = useHistory();\r\n\r\n return (\r\n <Formik\r\n initialValues={{selectedStatus: IndueCardStatus.Active}}\r\n validationSchema={() => Validate(tokenRequired)}\r\n onSubmit={(values) => handleSubmit(values, cardId, changeStatus, history)}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title\r\n title=\"Confirm Status Change\"\r\n subtitle=\"Please confirm card activation\"\r\n />\r\n <Form>\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<IndueCardStatusFormProps>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={tokenRequired}\r\n />\r\n <Alert\r\n message={`Error activating card. ${error?.message}`}\r\n visible={error != null}\r\n />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n >\r\n Confirm\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\nconst CloseCardForm = ({ cardId }: { cardId: string }) => {\r\n const [changeStatus, { error, tokenRequired }] = useSecurityTokenMutation(useIndueCardChangeStatusMutation());\r\n const history = useHistory();\r\n\r\n return (\r\n <Formik\r\n initialValues={{selectedStatus: IndueCardStatus.Closed}}\r\n validationSchema={() => Validate(tokenRequired)}\r\n onSubmit={(values) => handleSubmit(values, cardId, changeStatus, history)}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title\r\n title=\"Confirm Status Change\"\r\n subtitle=\"Please confirm that you wish to close the selected card.\"\r\n />\r\n <Form>\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<IndueCardStatusFormProps>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={tokenRequired}\r\n />\r\n <Alert\r\n message={`Error closing card. ${error?.message}`}\r\n visible={error != null}\r\n />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n >\r\n Confirm\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\n\r\nconst HoldCardForm = ({ cardId }: { cardId: string }) => {\r\n const [changeStatus, { error, tokenRequired }] = useSecurityTokenMutation(useIndueCardChangeStatusMutation());\r\n const history = useHistory();\r\n\r\n return (\r\n <Formik\r\n initialValues={{selectedStatus: IndueCardStatus.Activeoff}}\r\n validationSchema={() => Validate(tokenRequired)}\r\n onSubmit={(values) => handleSubmit(values, cardId, changeStatus, history)}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title\r\n title=\"Confirm Status Change\"\r\n subtitle=\"Please confirm putting card on Hold\"\r\n />\r\n <Form>\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<IndueCardStatusFormProps>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={tokenRequired}\r\n />\r\n <Alert\r\n message={`Error holding card. ${error?.message}`}\r\n visible={error != null}\r\n />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n >\r\n Confirm\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\nconst LostOrStolenCardForm = ({ cardId }: { cardId: string }) => {\r\n const [changeStatus, { error, tokenRequired }] = useSecurityTokenMutation(useIndueCardChangeStatusMutation());\r\n const history = useHistory();\r\n\r\n return (\r\n <Formik\r\n initialValues={{\r\n selectedStatus: null\r\n }}\r\n validationSchema={() => Validate(tokenRequired)}\r\n onSubmit={(values) => handleSubmit(values, cardId, changeStatus, history)}\r\n >\r\n {({ isSubmitting, errors }) => {\r\n console.log(errors);\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title\r\n title=\"Confirm Status Change\"\r\n subtitle=\"Please advise if your card is lost or stolen, this action cannot be undone\"\r\n />\r\n <Form>\r\n <ButtonGroup\r\n label=\"Select Status\"\r\n name={nameof<IndueCardStatusFormProps>(\"selectedStatus\")}\r\n >\r\n <ButtonGroup.Button\r\n value={IndueCardStatus.Lost}\r\n className=\"indue-status-buttongroup\"\r\n >\r\n Lost\r\n </ButtonGroup.Button>\r\n <ButtonGroup.Button\r\n value={IndueCardStatus.Stolen}\r\n className=\"indue-status-buttongroup\"\r\n >\r\n Stolen\r\n </ButtonGroup.Button>\r\n </ButtonGroup>\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<IndueCardStatusFormProps>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={tokenRequired}\r\n />\r\n <Alert\r\n message={`Error setting card as lost/stolen. ${error?.message}`}\r\n visible={error != null}\r\n />\r\n <Button\r\n role=\"secondary\"\r\n onClick={() => history.goBack()}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n isSubmit={true}\r\n role=\"primary\"\r\n loading={isSubmitting}\r\n >\r\n Confirm\r\n </Button>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\nconst IndueCardConfirmStatusChange = ({ cardId, accountNumber, statusType }: IndueCardStatusProps) => {\r\n switch (statusType) {\r\n case IndueCardStatus.Active:\r\n return <ActivateCardForm cardId={cardId} />\r\n case IndueCardStatus.Activeoff:\r\n return <HoldCardForm cardId={cardId} />\r\n case IndueCardStatus.Lost:\r\n case IndueCardStatus.Stolen:\r\n return <LostOrStolenCardForm cardId={cardId} />\r\n case IndueCardStatus.Closed:\r\n return <CloseCardForm cardId={cardId}/>\r\n default:\r\n return <CError error=\"No valid status was found\" />\r\n }\r\n}\r\n\r\nexport default IndueCardConfirmStatusChange;\r\n","import React from \"react\";\r\nimport IndueCardListTable from \"./IndueCardListTable\";\r\nimport { IndueCardsandAssociationsByAccountQuery, useIndueCardsandAssociationsByAccountQuery } from \"generated/generated-models\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Button from \"app/components/Button\";\r\n\r\ntype Props = {\r\n accountId: string;\r\n accountNumber: string;\r\n cardAvailable: boolean\r\n}\r\n\r\nconst requestCardError = (queryResult?: IndueCardsandAssociationsByAccountQuery) => {\r\n const cards = makeNonEmpty(queryResult?.indueCardsByAccount);\r\n const association = queryResult?.partyAssociationByAccount;\r\n const authority = queryResult?.accountByIdOrNumber?.CurrentUserAccountAuthority;\r\n\r\n if (!authority?.Operate) {\r\n return \"You do not have permission to order a card\";\r\n }\r\n\r\n\r\n if (association?.IsSecondaryBorrower && !association.PrimaryBorrowerHasCard && cards?.length === 0) {\r\n return \"You cannot order a card until the Primary Borrower has a non-closed card for the account\";\r\n }\r\n\r\n if (association?.IsNonBorrower && cards?.length === 0) {\r\n return \"Only borrowers can order a card for the account\";\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nconst RequestCard = ({ queryResult, cardAvailable }: { queryResult?: IndueCardsandAssociationsByAccountQuery, cardAvailable: boolean }) => {\r\n const cards = makeNonEmpty(queryResult?.indueCardsByAccount);\r\n\r\n if (!cardAvailable || cards.length !== 0) {\r\n return null;\r\n }\r\n\r\n const errorMessage = requestCardError(queryResult);\r\n\r\n if (errorMessage != null) {\r\n return (\r\n <>\r\n <div className=\"alert alert-warning\">{errorMessage}</div>\r\n <Button disabled={true}>Request Card</Button>\r\n </>\r\n )\r\n }\r\n\r\n return (\r\n <Link to={x => `${x.pathname}/RequestCard`} className=\"btn btn-primary\">Request Card</Link>\r\n );\r\n}\r\n\r\nconst IndueCardListPage: React.FC<Props> = ({ accountId, accountNumber, cardAvailable }) => {\r\n const { data, loading, error } = useIndueCardsandAssociationsByAccountQuery({\r\n variables: { accountId: accountId, accountIdString: accountId },\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n\r\n if (error) {\r\n return <CError error=\"Could not retrieve card details\" />\r\n }\r\n\r\n const induecards = makeNonEmpty(data?.indueCardsByAccount);\r\n\r\n return (\r\n <div className=\"main-content sub-wrap\">\r\n <h2>Cards</h2>\r\n <IndueCardListTable\r\n accountNumber={accountNumber}\r\n cards={makeNonEmpty(induecards)}\r\n />\r\n <RequestCard queryResult={data} cardAvailable={cardAvailable} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default IndueCardListPage;\r\n","import { useState, useEffect, useRef, useCallback } from \"react\";\r\nimport { findDOMNode } from \"react-dom\";\r\nimport { useIndueCardCreateCardMutation } from \"generated/generated-models\";\r\nimport $ from 'jquery';\r\nimport { Guid } from \"guid-typescript\";\r\nimport { useHistory } from \"react-router\";\r\nimport Button from \"app/components/Button\";\r\nimport { Document, Page } from 'react-pdf/dist/esm/entry.webpack';\r\nimport Title from \"app/components/Title\";\r\n\r\ntype IndueCardCreateCardProps = {\r\n accountId: Guid | string;\r\n}\r\n\r\nconst IndueCardConfirmCreateCardPage = ({ accountId }: IndueCardCreateCardProps) => {\r\n const [acceptedTerms, setAcceptedTerms] = useState<boolean>();\r\n const [readTerms, setReadTerms] = useState(false);\r\n const [createCard, { error, loading }] = useIndueCardCreateCardMutation({\r\n variables: { input: { AccountId: accountId } },\r\n });\r\n const [numPages, setNumPages] = useState<number>();\r\n const pdfDocument = useCallback<(x: HTMLDivElement) => void>(element => {\r\n if (element == null) {\r\n return;\r\n }\r\n\r\n element.onscroll = (e: Event) => {\r\n // Get how close the user is to scrolling to the bottom of the page\r\n const difference = element.scrollHeight - element.scrollTop - element.clientHeight;\r\n // Use an epsilon cause floating point numbers are sad\r\n const bottom = Math.abs(difference) < 10;\r\n\r\n if (bottom) {\r\n setReadTerms(true);\r\n }\r\n }\r\n }, []);\r\n\r\n const url = \"/client/misc/cardTermsAndConditions.pdf\";\r\n\r\n const onDocumentLoadSuccess = ({ numPages }: { numPages: number }) => {\r\n setNumPages(numPages);\r\n }\r\n\r\n // Handle Bootstrap tooltips.\r\n // Replace this logic if we ever install reactstrap/react bootstrap\r\n const toolTipRef = useRef(null);\r\n\r\n useEffect(() => {\r\n const toolTip = findDOMNode(toolTipRef.current);\r\n if (toolTip !== null) {\r\n $((toolTip)).tooltip()\r\n }\r\n }, [toolTipRef])\r\n\r\n useEffect(() => {\r\n const toolTip = findDOMNode(toolTipRef.current);\r\n if (toolTip !== null && readTerms === true) {\r\n $(toolTip).tooltip(\"disable\");\r\n }\r\n }, [readTerms, toolTipRef])\r\n\r\n const handleUserAcceptsTerms = async () => {\r\n try {\r\n const result = await createCard()\r\n\r\n if (result.data?.createCard?.Success === true) {\r\n setAcceptedTerms(true);\r\n }\r\n } catch (ex) {\r\n console.error(\"Could not order card\");\r\n }\r\n }\r\n\r\n const history = useHistory();\r\n\r\n if (acceptedTerms === false) {\r\n history.goBack();\r\n\r\n }\r\n\r\n if (acceptedTerms === true) {\r\n history.goBack();\r\n }\r\n\r\n return (\r\n <div className=\"container sub-wrap card-terms-page\">\r\n <Title title=\"Terms and Conditions\" />\r\n\r\n <div className=\"card-terms-container\">\r\n <div className=\"card-terms-document-container\">\r\n <Document\r\n file={url}\r\n onLoadSuccess={onDocumentLoadSuccess}\r\n className=\"card-terms-document\"\r\n inputRef={pdfDocument}\r\n loading=\"Loading Terms and Conditions\"\r\n >\r\n {\r\n Array.from(\r\n new Array(numPages),\r\n (el, index) => (\r\n <Page\r\n key={`page_${index + 1}`}\r\n pageNumber={index + 1}\r\n scale={1.5}\r\n className=\"card-terms-page\"\r\n loading=\"\"\r\n />\r\n ),\r\n )}\r\n </Document>\r\n </div>\r\n </div>\r\n\r\n <div className=\"firsttimelogin-tc-button-container\">\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-secondary\"\r\n tabIndex={0}\r\n onClick={() => setAcceptedTerms(false)}\r\n >\r\n Cancel\r\n </button>\r\n\r\n <span\r\n className=\"d-inline-block float-right\"\r\n title=\"Please read to the end of the Terms and Conditions\"\r\n ref={toolTipRef}\r\n >\r\n <Button\r\n type=\"submit\"\r\n disabled={!readTerms}\r\n loading={loading}\r\n style={{ pointerEvents: readTerms ? \"auto\" : \"none\" }}\r\n onClick={handleUserAcceptsTerms}\r\n >\r\n Accept Terms\r\n </Button>\r\n </span>\r\n </div>\r\n {error != null &&\r\n <div className=\"alert alert-danger\" role=\"alert\" style={{ marginTop: \"0.5rem\" }}>\r\n Could not order a card at this time. Please try again later or contact customer service\r\n </div>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport default IndueCardConfirmCreateCardPage;\r\n","import React from \"react\";\r\nimport {\r\n Route,\r\n withRouter,\r\n match as Match,\r\n Switch,\r\n Redirect,\r\n} from \"react-router-dom\";\r\nimport AccountTransfers from \"../accountTransfer\";\r\nimport { History, Location } from \"history\";\r\nimport StatementsList from \"../statements/StatementsList\";\r\nimport { DisbursementRequestForm } from \"app/disbursement/DisbursementRequestForm\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport { IndueCardStatus, useAccountByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { AccountView } from \"./AccountView\";\r\nimport IndueCardPage from \"app/cards/indue/IndueCardPage\";\r\nimport { IndueCardResetPinPage } from \"app/cards/indue/IndueCardResetPinPage\";\r\nimport IndueCardConfirmStatusChange from \"app/cards/indue/IndueCardConfirmStatusChange\";\r\nimport IndueCardListPage from \"app/cards/indue/IndueCardListPage\";\r\nimport IndueCardConfirmCreateCardPage from \"app/cards/IndueCardConfirmCreateCard\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\ntype Props = {\r\n history: History;\r\n location: Location;\r\n match: Match<{ number: string }>;\r\n}\r\n\r\nconst AccountPage: React.FC<Props> = ({ match, history }) => {\r\n const { data, loading, error } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: match.params.number },\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n if (error) {\r\n return <CError error=\"Could not retrieve account details\" />;\r\n }\r\n\r\n const account = data?.accountByIdOrNumber;\r\n\r\n if (account === undefined) {\r\n return <CError error=\"Could not retrieve account details\" />;\r\n }\r\n\r\n const config = clientConfigFn();\r\n const cardsEnabled = account.CardAvailable || (account.Cards?.length ?? 0) > 0;\r\n\r\n return (\r\n <Switch>\r\n {config.hideTransferPage === false &&\r\n <Route\r\n path=\"/account/index/:number/transfer\"\r\n render={({ match }) =>\r\n <AccountTransfers accountIdOrNumber={match && match.params.number} />\r\n }\r\n />\r\n }\r\n {config.allowOnLineStatements === true &&\r\n <Route\r\n path=\"/account/index/:number/statements\"\r\n render={() =>\r\n <StatementsList statements={makeNonEmpty(account.Statements)} />\r\n }\r\n />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards/:cardid/changepin\"\r\n render={({ match }) => {\r\n const cardId = `${match.params.cardid}`;\r\n return (\r\n <IndueCardResetPinPage\r\n cardId={cardId} />\r\n )\r\n }\r\n }\r\n />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards/:cardid/activatecard\"\r\n render={({ match }) => {\r\n const cardId = `${match.params.cardid}`;\r\n return (\r\n <IndueCardConfirmStatusChange\r\n cardId={cardId}\r\n accountNumber={match.params.number}\r\n statusType={IndueCardStatus.Active} />\r\n )\r\n }\r\n }\r\n />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards/:cardid/holdcard\"\r\n render={({ match }) => {\r\n const cardId = `${match.params.cardid}`;\r\n return (\r\n <IndueCardConfirmStatusChange\r\n cardId={cardId}\r\n accountNumber={match.params.number}\r\n statusType={IndueCardStatus.Activeoff} />\r\n )\r\n }\r\n }\r\n />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards/:cardid/loststolencard\"\r\n render={({ match }) => {\r\n const cardId = `${match.params.cardid}`;\r\n return (\r\n <IndueCardConfirmStatusChange\r\n cardId={cardId}\r\n accountNumber={match.params.number}\r\n statusType={IndueCardStatus.Lost} />\r\n )\r\n }\r\n }\r\n />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards/:cardid/closecard\"\r\n render={({ match }) => {\r\n const cardId = `${match.params.cardid}`;\r\n return (\r\n <IndueCardConfirmStatusChange\r\n cardId={cardId}\r\n accountNumber={match.params.number}\r\n statusType={IndueCardStatus.Closed} />\r\n )\r\n }\r\n }\r\n />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards/requestcard\"\r\n render={() => (\r\n <IndueCardConfirmCreateCardPage accountId={account.Id} />\r\n )} />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards/:cardid\"\r\n render={({ match }) => {\r\n const cardId = `${match.params.cardid}`;\r\n return (\r\n <IndueCardPage\r\n accountNumber={match.params.number}\r\n cardId={cardId} />\r\n )\r\n }\r\n }\r\n />\r\n }\r\n {cardsEnabled &&\r\n <Route\r\n path=\"/account/index/:number/induecards\"\r\n children={() => (\r\n <IndueCardListPage\r\n accountId={account.Id}\r\n accountNumber={match.params.number}\r\n cardAvailable={account.CardAvailable ?? false}\r\n />\r\n )}\r\n />\r\n }\r\n <Route\r\n path=\"/account/index/:number/disbursement\"\r\n render={({ match }) => {\r\n return (\r\n <DisbursementRequestForm\r\n AccountId={account.Id}\r\n InstrumentId={account.InstrumentId}\r\n />\r\n );\r\n }}\r\n />\r\n <Route\r\n path=\"/account/index/:number\"\r\n render={() => (\r\n <AccountView accountId={account.Id} />\r\n )}\r\n />\r\n <Route\r\n path=\"/account/\"\r\n children={<Redirect to={\"/\"} push={true} />}\r\n />\r\n </Switch>\r\n );\r\n}\r\n\r\nexport const AccountPageComponent = withRouter(AccountPage);\r\nexport default AccountPageComponent;\r\n","import React from \"react\";\r\nimport {\r\n LogoutPayload,\r\n BankingUserLogoutComponent,\r\n} from \"generated/generated-models\";\r\nimport gql from \"graphql-tag\";\r\n\r\nexport const Logout = (props: {\r\n onLogout?: (data?: LogoutPayload) => void;\r\n}) => {\r\n const { onLogout } = props;\r\n return (\r\n <BankingUserLogoutComponent\r\n onCompleted={data => {\r\n if (onLogout) {\r\n onLogout(data.logout || undefined);\r\n }\r\n }}\r\n onError={error => {\r\n if (onLogout) {\r\n onLogout();\r\n }\r\n }}\r\n >\r\n {(logoutMuation, { data, error, called }) => {\r\n if (!called) {\r\n logoutMuation().catch(err => {\r\n if (onLogout) {\r\n onLogout();\r\n }\r\n });\r\n }\r\n return(\r\n <div className=\"content-wrapper flex-fill\">\r\n <p>Logged out, please close your browser.</p>\r\n </div>\r\n )\r\n }}\r\n </BankingUserLogoutComponent>\r\n );\r\n};\r\n\r\nexport const bankingUserLogoutMutation = gql`\r\n mutation bankingUserLogout {\r\n logout {\r\n Code\r\n Success\r\n Message\r\n }\r\n }\r\n`;\r\n","import * as yup from \"yup\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { ChangePasswordFormProps } from \"./ChangePasswordPage\";\r\nimport { getSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => {\r\n const schema: yup.ObjectSchema<ChangePasswordFormProps> = yup.object({\r\n confirmNewPassword: yup\r\n .string()\r\n .required()\r\n .oneOf(\r\n [yup.ref(nameof<ChangePasswordFormProps>(\"newPassword\"))],\r\n \"Passwords must match\"\r\n )\r\n .label(\"Confirm Password\"),\r\n\r\n oldPassword: yup\r\n .string()\r\n .required()\r\n .min(6)\r\n .label(\"Old Password\"),\r\n\r\n newPassword: yup\r\n .string()\r\n .required()\r\n .min(6)\r\n .matches(/[A-Z]/, 'At least one upper case letter required')\r\n .matches(/[a-z]/, 'At least one lower case letter required')\r\n .matches(/[0-9]/, 'At least one number required')\r\n .matches(/[!|@|#|$|%|^|&|*|(|)|-|_]/, 'At least one special character required')\r\n .label(\"New Password\"),\r\n\r\n securityToken: getSecurityTokenValidator(requiresMfa)\r\n\r\n }).defined();\r\n return schema;\r\n}\r\n","import Form from \"app/components/Form\";\r\nimport Input from \"app/components/Input\";\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport Title from \"app/components/Title\";\r\nimport { DelayedRender } from \"app/lib/components/DelayedRender\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik } from \"formik\";\r\nimport { ChangePasswordInput, useChangeCurrentUserPasswordMutation, useIsUserAuthenticatedQuery, usePasswordValidatorByApplicationQuery } from \"generated/generated-models\";\r\nimport React from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { Validate } from \"./changePasswordValidator\";\r\nimport Button from \"app/components/Button\";\r\n\r\nconst requiresToken = (statusCode?: string) => statusCode === \"499\" || statusCode === \"498\";\r\n\r\nexport type ChangePasswordFormProps = {\r\n oldPassword: string;\r\n newPassword: string;\r\n confirmNewPassword: string;\r\n securityToken?: string;\r\n}\r\n\r\nconst ChangePasswordPage = () => {\r\n const baseSymbols = \"!@#$%^&*()\";\r\n const extendedSymbols = \"~`-_=+[]{}\\\\|;:'\\\",.<>?/\";\r\n const [changePassword, changePasswordResult] = useChangeCurrentUserPasswordMutation();\r\n const { data: authenticatedData } = useIsUserAuthenticatedQuery();\r\n const { data: passwordValidator } = usePasswordValidatorByApplicationQuery();\r\n\r\n const firstLogin = authenticatedData?.userSession?.IsFirstLogin || false;\r\n const hasTempPassword = authenticatedData?.userSession?.HasTempPassword || false;\r\n\r\n const requiresMfa = () => {\r\n if (requiresToken(changePasswordResult.data?.changeCurrentUserPassword?.Code)) {\r\n return true;\r\n }\r\n\r\n if (authenticatedData?.userSession?.UseMultiFactorAuth) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const getErrorMessage = () => {\r\n if (changePasswordResult.data?.changeCurrentUserPassword?.Success === true) {\r\n return undefined;\r\n }\r\n\r\n if (requiresToken(changePasswordResult.data?.changeCurrentUserPassword?.Code)) {\r\n return \"Security token was invalid\";\r\n }\r\n\r\n const errorMessage = changePasswordResult.data?.changeCurrentUserPassword?.Message;\r\n\r\n if (errorMessage != null && errorMessage !== \"\") {\r\n return errorMessage\r\n }\r\n return undefined;\r\n }\r\n\r\n const SuccesfullyChangedPassword = () => {\r\n if (!changePasswordResult.loading &&\r\n changePasswordResult.data?.changeCurrentUserPassword?.Success === true\r\n ) {\r\n return (\r\n <div className=\"alert alert-success\">\r\n Your password has been changed successfully.\r\n <DelayedRender delay={1500}>\r\n <Redirect to=\"/security/logout\" />\r\n </DelayedRender>\r\n </div>\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"changepassword-page sub-wrap form-wrap\">\r\n <Title title=\"Change Your Password\" />\r\n {(firstLogin || hasTempPassword) && (\r\n <div className=\"alert alert-warning\">\r\n The password you are using is temporary. You will need to supply a new\r\n password before you can continue.\r\n </div>\r\n )}\r\n <div className=\"text-muted\">\r\n Please use the following password rules to ensure you have a valid password:\r\n <ul>\r\n <li>Minimum password length: {passwordValidator?.passwordValidatorByApplication?.MinimumPasswordLength}</li>\r\n {(passwordValidator?.passwordValidatorByApplication?.RequireLowerCaseCharacters) && (\r\n <li>At least {passwordValidator?.passwordValidatorByApplication?.MinimumLowerCaseCharacterCount} lower case characters required</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.RequireUpperCaseCharacters) && (\r\n <li>At least {passwordValidator?.passwordValidatorByApplication?.MinimumUpperCaseCharacterCount} upper case characters required</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.ProhibitRepeatingAlphabetCharacters) && (\r\n <li>Alphabet characters cannot be repeated, e.g. <b>aa</b>lphabet</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.ProhibitSequentialAlphabetCharacters) && (\r\n <li>Alphabet characters cannot be sequential, e.g. a<b>bc</b>jtda</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.RequireNumberCharacters) && (\r\n <li>At least {passwordValidator?.passwordValidatorByApplication?.MinimumNumberCharacterCount} numbers required</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.ProhibitRepeatingNumberCharacters) && (\r\n <li>Numbers cannot be repeated, e.g. 1<b>22</b>345</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.ProhibitSequentialNumberCharacters) && (\r\n <li>Numbers cannot be sequential, e.g. 1<b>234</b>1942</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.RequireBaseSymbols) && (\r\n <li>At least {passwordValidator?.passwordValidatorByApplication?.MinimumBaseSymbolCharacterCount} base symbols required, these include: {baseSymbols}</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.RequireExtendedSymbols) && (\r\n <li>At least {passwordValidator?.passwordValidatorByApplication?.MinimumExtendedSymbolCharacterCount} extended symbols required, these include: {extendedSymbols}</li>\r\n )}\r\n {(passwordValidator?.passwordValidatorByApplication?.ProhibitRepeatingSymbolCharacters) && (\r\n <li>Symbols cannot be repeated, e.g. example<b>!!</b></li>\r\n )}\r\n {// eslint-disable-next-line\r\n (passwordValidator?.passwordValidatorByApplication?.MinimumPasswordHistory ?? 0 > 0) && (\r\n <li>Cannot reuse any of your last {passwordValidator?.passwordValidatorByApplication?.MinimumPasswordHistory} passwords</li>\r\n )}\r\n </ul>\r\n </div>\r\n <Formik\r\n initialValues={{\r\n oldPassword: \"\",\r\n newPassword: \"\",\r\n confirmNewPassword: \"\",\r\n securityToken: \"\",\r\n }}\r\n onSubmit={(values) => {\r\n const vals: ChangePasswordInput = {\r\n CurrentPassword: values.oldPassword,\r\n NewPassword: values.newPassword,\r\n TwoFactorToken: values.securityToken,\r\n };\r\n return changePassword({ variables: { input: vals } });\r\n }}\r\n validationSchema={Validate(requiresMfa())}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <Form>\r\n <Input\r\n name={nameof<ChangePasswordFormProps>(\"oldPassword\")}\r\n type=\"password\"\r\n label=\"Old Password\"\r\n />\r\n <Input\r\n name={nameof<ChangePasswordFormProps>(\"newPassword\")}\r\n type=\"password\"\r\n label=\"New Password\"\r\n />\r\n <Input\r\n name={nameof<ChangePasswordFormProps>(\"confirmNewPassword\")}\r\n type=\"password\"\r\n label=\"Confirm New Password\"\r\n />\r\n\r\n {requiresMfa() &&\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<ChangePasswordFormProps>(\"securityToken\")}\r\n requestMfaOnDisplay={true}\r\n />\r\n }\r\n\r\n {getErrorMessage() != null &&\r\n <div className=\"alert alert-danger\">\r\n {getErrorMessage()}\r\n </div>\r\n }\r\n <SuccesfullyChangedPassword />\r\n\r\n <div className=\"form-group clearfix\">\r\n <Button\r\n isSubmit={true}\r\n loading={isSubmitting}\r\n >\r\n Change Password\r\n </Button>\r\n </div>\r\n </Form>\r\n )\r\n }}\r\n </Formik>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ChangePasswordPage;\r\n","import ChangePassword from \"./ChangePasswordPage\";\r\n\r\nexport default ChangePassword;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nexport const ForgottenPassword = () => (\r\n <div className=\"forgot-password-container\">\r\n\r\n {clientConfigFn().forgotUsernamePageCopy !== \"\"\r\n ? <><h2>{clientConfigFn().forgotUsernamePageTitle}</h2>\r\n <p>{clientConfigFn().forgotUsernamePageCopy}</p></>\r\n : <><h2>Forgotten Credentials</h2>\r\n <p>If you cannot remember your password, you have a two options:</p>\r\n <ul>\r\n <li>Request a new password; or,</li>\r\n <li>Contact our helpdesk.</li>\r\n </ul>\r\n <h3>Request a new password</h3>\r\n <p>\r\n We will generate a new password and send it to you based on the contact\r\n details we have on your account.\r\n </p>\r\n <h3>Contact the helpdesk</h3>\r\n <p>\r\n The helpdesk operator will require that you answer certain security\r\n questions to verify that you can reset the password. Once you are\r\n verified, a new password will be provided to you.\r\n </p>\r\n <h3>Temporary password</h3>\r\n <p>\r\n In either case, the password you receive is temporary. The first time you\r\n log into Online Portal with it, you will be required to create a new\r\n password. If you do not create a new one, you will not be allowed into\r\n your Online Portal account.\r\n </p></>\r\n }\r\n <div className=\"button-container\">\r\n <Link to={\"/security/login\"} className=\"btn btn-primary btn-block\">\r\n Return to Login\r\n </Link>\r\n </div>\r\n </div>\r\n);\r\n","import { ResetPasswordInput } from \"generated/generated-models\";\r\nimport * as yup from \"yup\";\r\nimport { nameof } from \"core/util/nameof\";\r\n\r\nexport const ResetPasswordInputValidator = yup\r\n .object()\r\n .shape<ResetPasswordInput>({\r\n Username: yup\r\n .string()\r\n .required(),\r\n ResetMethod: yup.string().required(),\r\n ContactDetails: yup\r\n .string()\r\n .required('Can not be blank')\r\n .when(nameof<ResetPasswordInput>(\"ResetMethod\"), {\r\n is: \"email\",\r\n then: yup.string().required('Email can not be blank').email('Email is not valid'),\r\n })\r\n .when(nameof<ResetPasswordInput>(\"ResetMethod\"), {\r\n is: \"sms\",\r\n then: yup.string().required('Mobile number can not be blank').min(4, 'Mobile number must be at least 4 digits'),\r\n }),\r\n });\r\n\r\nexport default ResetPasswordInputValidator;\r\n","import { ResetPasswordInput } from \"generated/generated-models\";\r\nimport { Formik, Field } from \"formik\";\r\nimport React from \"react\";\r\nimport { CInputFormGroup } from \"app/common/forms/CInputFormGroup\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { StringIsEqual } from \"core/util/stringExtensions\";\r\nimport ResetPasswordInputValidator from \"./ResetPasswordInputValidator\";\r\n\r\ninterface Props {\r\n onSubmit: (values: ResetPasswordInput) => void;\r\n submitting?: boolean;\r\n}\r\n\r\nconst ResetPasswordForm: React.FC<Props> = ({ onSubmit, submitting }) => {\r\n return (\r\n <Formik<ResetPasswordInput>\r\n initialValues={{ ContactDetails: \"\", Username: \"\", ResetMethod: \"\" }}\r\n onSubmit={onSubmit}\r\n validationSchema={ResetPasswordInputValidator}\r\n >\r\n {({ values, submitForm }) => {\r\n const registerdDetailsMessage = () => {\r\n if (values.ResetMethod === \"sms\") {\r\n return `Please verify your preferred mobile number below.\r\n If this does not match the number on record then no password reset will be sent`\r\n } else {\r\n return `Please verify your preferred email address below.\r\n If this does not match the address on record then no password reset will be sent`\r\n }\r\n }\r\n\r\n return (\r\n <div id=\"reset-password-wrapper\">\r\n <CInputFormGroup\r\n fieldName={nameof<ResetPasswordInput>(\"Username\")}\r\n placeholderText=\"Username\"\r\n />\r\n <div className=\"form-group\">\r\n <div className=\"alert alert-info\">\r\n Please choose a method to receive your temporary password.\r\n </div>\r\n\r\n <div className=\"radio form-check\">\r\n <Field\r\n name={nameof<ResetPasswordInput>(\"ResetMethod\")}\r\n checked={StringIsEqual(\"sms\", values.ResetMethod)}\r\n id={`${nameof<ResetPasswordInput>(\"ResetMethod\")}-sms`}\r\n type=\"radio\"\r\n value=\"sms\"\r\n className=\"form-check-input\"\r\n />\r\n <label className=\"form-check-label\" htmlFor={`${nameof<ResetPasswordInput>(\"ResetMethod\")}-sms`}>\r\n Send via SMS\r\n </label>\r\n </div>\r\n\r\n <div className=\"radio form-check\">\r\n <Field\r\n name={nameof<ResetPasswordInput>(\"ResetMethod\")}\r\n checked={StringIsEqual(\"email\", values.ResetMethod)}\r\n id={nameof<ResetPasswordInput>(\"ResetMethod\")}\r\n type=\"radio\"\r\n value=\"email\"\r\n className=\"form-check-input\"\r\n />\r\n <label className=\"form-check-label\" htmlFor={nameof<ResetPasswordInput>(\"ResetMethod\")}>\r\n Send via E-mail\r\n </label>\r\n </div>\r\n </div>\r\n\r\n {values.ResetMethod && (<div className=\"form-group\">\r\n <div className=\"alert alert-info\">\r\n {registerdDetailsMessage()}\r\n </div>\r\n\r\n <CInputFormGroup\r\n fieldName={nameof<ResetPasswordInput>(\"ContactDetails\")}\r\n label={\r\n !values.ResetMethod\r\n ? \"Contact Details\"\r\n : StringIsEqual(\"sms\", values.ResetMethod)\r\n ? \"Mobile number\"\r\n : \"Primary email\"\r\n }\r\n placeholderText={\r\n !values.ResetMethod\r\n ? \"Contact Details\"\r\n : StringIsEqual(\"sms\", values.ResetMethod)\r\n ? \"Mobile number\"\r\n : \"Primary email\"\r\n }\r\n />\r\n </div>)}\r\n\r\n <div className=\"form-group\">\r\n <button\r\n type=\"submit\"\r\n id=\"submit\"\r\n value=\"Request Password\"\r\n className=\"btn btn-primary btn-block\"\r\n disabled={!!submitting || values.ResetMethod === \"\"}\r\n onClick={submitForm}\r\n >\r\n Request Password\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n );\r\n};\r\n\r\nexport {\r\n ResetPasswordForm\r\n}\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { ResetPasswordForm } from \"./ResetPasswordForm\";\r\nimport { useRequestPasswordResetMutation, ResetPasswordInput } from \"generated/generated-models\";\r\n\r\n\r\nconst ResetPassword = () => {\r\n const [passwordReset, { data, loading, error }] =\r\n useRequestPasswordResetMutation({ onError: () => { }, context: { headers: { \"X-Interfi-RequestType\": \"Anonymous\" } } });\r\n\r\n const handlePasswordReset = (input: ResetPasswordInput) => {\r\n passwordReset({\r\n variables: {\r\n input\r\n }\r\n });\r\n }\r\n\r\n const ResetResults = () => {\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"alert alert-info\">\r\n Attempting to reset password\r\n </div>\r\n );\r\n }\r\n\r\n if (error !== undefined) {\r\n return (\r\n <div className=\"alert alert-danger\">\r\n Password reset request failed.\r\n </div>\r\n );\r\n }\r\n\r\n\r\n if (data?.requestPasswordReset?.Success) {\r\n return (\r\n <div className=\"alert alert-success\">\r\n Check your email or sms for details of your new password\r\n </div>\r\n );\r\n }\r\n\r\n if (data?.requestPasswordReset?.Success === false) {\r\n return (\r\n <div className=\"alert alert-danger\">\r\n Password reset request failed.\r\n </div>\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n\r\n return (\r\n <div id=\"reset-password-form\" className=\"sub-wrap form-wrap\">\r\n <h1 className=\"h3\">Reset your password</h1>\r\n\r\n <ResetResults />\r\n\r\n {(data?.requestPasswordReset?.Success !== true) && (\r\n <ResetPasswordForm\r\n onSubmit={handlePasswordReset}\r\n submitting={loading}\r\n />\r\n )}\r\n\r\n <Link to={\"/security/forgot\"} className=\"btn btn-secondary btn-block\">\r\n Can't remember your username?\r\n </Link>\r\n <Link to={\"/security/login\"} className=\"btn btn-primary btn-block\">\r\n Return to Login\r\n </Link>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ResetPassword;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Loading } from \"../lib/components/Loading\";\r\nimport { CError } from \"../common/CError\";\r\n\r\ntype Props = {\r\n url: string,\r\n errorMessage: string\r\n}\r\n\r\nconst DisplayHtmlContext = ({ url, errorMessage }: Props) => {\r\n const [content, setContent] = useState(\"\");\r\n const [loading, setloading] = useState(false);\r\n const [error, setError] = useState<string | undefined>(undefined);\r\n\r\n useEffect(() => {\r\n const getContent = async () => {\r\n try {\r\n setloading(true);\r\n setError(undefined);\r\n\r\n const result = await fetch(url)\r\n\r\n if (!result.ok) {\r\n setloading(false);\r\n setError(errorMessage);\r\n return;\r\n }\r\n\r\n const text = await result.text();\r\n setContent(text);\r\n setloading(false);\r\n } catch {\r\n setloading(false);\r\n setError(errorMessage);\r\n }\r\n }\r\n getContent();\r\n }, [errorMessage, url]);\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"htmlcontentview loading\">\r\n <Loading />\r\n </div>\r\n )\r\n }\r\n\r\n if (error !== undefined) {\r\n return (\r\n <div className=\"htmlcontentview error\">\r\n <CError error={error} />\r\n </div >\r\n )\r\n }\r\n\r\n return <div\r\n className=\"htmlcontentview content flex-fill\"\r\n dangerouslySetInnerHTML={{ __html: content }}\r\n />\r\n}\r\n\r\nexport default DisplayHtmlContext;\r\n","import React from \"react\";\r\nimport DisplayHtmlContext from \"./DisplayHtmlContent\";\r\n\r\nconst TermsAndConditions = () => {\r\n return <DisplayHtmlContext\r\n url=\"/client/misc/TermsAndConditions.html\"\r\n errorMessage=\"Could not load terms and conditions\"\r\n />\r\n}\r\n\r\nexport default TermsAndConditions;\r\n","import React from 'react';\r\nimport DisplayHtmlContent from './DisplayHtmlContent';\r\n\r\nconst PrivacyPolicy = () =>\r\n <DisplayHtmlContent\r\n errorMessage=\"Could not load Privacy Policy\"\r\n url=\"/client/misc/privacyPolicy.html\"\r\n />\r\n\r\n\r\nexport default PrivacyPolicy;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { findDOMNode } from \"react-dom\";\r\nimport TermsAndConditions from \"../other/TermsAndConditions\";\r\nimport { Redirect } from \"react-router\";\r\nimport { useAcceptTermsMutation } from \"generated/generated-models\";\r\nimport $ from 'jquery';\r\n\r\n\r\nconst AcceptTerms = () => {\r\n const [acceptedTerms, setAcceptedTerms] = useState<boolean | undefined>(undefined);\r\n const [readTerms, setReadTerms] = useState(false);\r\n const [acceptTerms] = useAcceptTermsMutation();\r\n\r\n // Handle Bootstrap tooltips.\r\n // Replace this logic if we ever install reactstrap/react bootstrap\r\n const toolTipRef = useRef(null);\r\n\r\n useEffect(() => {\r\n const toolTip = findDOMNode(toolTipRef.current);\r\n if (toolTip !== null) {\r\n $((toolTip)).tooltip()\r\n }\r\n }, [toolTipRef])\r\n\r\n useEffect(() => {\r\n const toolTip = findDOMNode(toolTipRef.current);\r\n if (toolTip !== null && readTerms === true) {\r\n $(toolTip).tooltip(\"disable\");\r\n }\r\n }, [readTerms, toolTipRef])\r\n\r\n const handleUserAcceptsTerms = async () => {\r\n const result = await acceptTerms()\r\n\r\n if (result.data?.acceptTerms?.Success === true) {\r\n setAcceptedTerms(true);\r\n }\r\n }\r\n\r\n const handleScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => {\r\n // Get how close the user is to scrolling to the bottom of the page\r\n const difference = e.currentTarget.scrollHeight - e.currentTarget.scrollTop - e.currentTarget.clientHeight;\r\n // Use an epsilon cause floating point numbers are sad\r\n const bottom = Math.abs(difference) < 10;\r\n\r\n if (bottom) {\r\n setReadTerms(true);\r\n }\r\n }\r\n\r\n if (acceptedTerms === false) {\r\n return <Redirect to=\"/security/logout\" />\r\n }\r\n\r\n if (acceptedTerms === true) {\r\n return <Redirect to=\"/\" />\r\n }\r\n\r\n return (\r\n <section className=\"content-wrapper flex-fill\">\r\n <div className=\"container sub-wrap firsttimelogin-page\">\r\n <div className=\"firsttimelogin-tc-container\" onScroll={handleScroll}>\r\n <div className=\"firsttimelogin-tc-inner\">\r\n <TermsAndConditions />\r\n </div>\r\n </div>\r\n\r\n <div className=\"firsttimelogin-tc-button-container\">\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-secondary\"\r\n tabIndex={0}\r\n onClick={() => setAcceptedTerms(false)}\r\n >\r\n Cancel\r\n </button>\r\n\r\n <span\r\n className=\"d-inline-block float-right\"\r\n title=\"Please read to the end of the Terms and Conditions\"\r\n ref={toolTipRef}\r\n >\r\n <button\r\n className=\"btn btn-primary\"\r\n style={{ pointerEvents: readTerms ? \"auto\" : \"none\" }}\r\n type=\"button\"\r\n disabled={!readTerms}\r\n onClick={handleUserAcceptsTerms}\r\n >\r\n Accept Terms\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default AcceptTerms;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { Footer } from \"../layout/Footer\";\r\nimport { Header } from \"../layout/Header\";\r\nimport NavBar from \"../layout/Navbar\";\r\n\r\nimport { BrowserRouter, Redirect, Route, Switch, useLocation } from \"react-router-dom\";\r\nimport PrivateRoute from \"../common/PrivateRoute\";\r\nimport Login from \"../authentication/Login\";\r\nimport { FinanceSummaryComponent } from \"../finance-summary/FinanceSummaryComponent\";\r\nimport InstrumentPage from \"../instrument/InstrumentPage\";\r\nimport { AccountPageComponent } from \"../account/AccountPage\";\r\nimport { Logout } from \"../authentication/Logout\";\r\nimport ChangePassword from \"../authentication/ChangePassword\";\r\nimport { ForgottenPassword } from \"../authentication/ForgottenPassword\";\r\nimport ResetPassword from \"../authentication/ResetPassword/ResetPassword\";\r\nimport { useIsUserAuthenticatedQuery } from \"generated/generated-models\";\r\nimport ActiveSessions from \"../authentication/ActiveSessions/ActiveSessions\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport TermsAndConditions from \"../other/TermsAndConditions\";\r\nimport PrivacyPolicy from \"../other/PrivacyPolicy\";\r\nimport AcceptTerms from \"../authentication/AcceptTerms\";\r\n\r\nexport const App = () => {\r\n useEffect(() => {\r\n document.title = clientConfigFn().siteTitle\r\n }, [])\r\n const { pathname } = useLocation();\r\n const { data } = useIsUserAuthenticatedQuery();\r\n\r\n return (\r\n <React.Fragment>\r\n <Header />\r\n <NavBar />\r\n <Switch>\r\n <Redirect from=\"/:url*(/+)\" to={pathname.slice(0, -1)} />\r\n <Route\r\n path=\"/Security/login\"\r\n render={() => (\r\n <section className={\"content-wrapper flex-fill\" + (clientConfigFn().useSimpleLayout ? \" simple-login-page\" : \"\")}>\r\n <Login />\r\n </section>\r\n )}\r\n />\r\n <Route\r\n path=\"/Security/acceptterms\"\r\n component={AcceptTerms}\r\n />\r\n <Route\r\n path=\"/Security/logout\"\r\n render={() => (\r\n <Logout\r\n onLogout={() => {\r\n window.location.href = \"/Security/login\";\r\n }}\r\n />\r\n )}\r\n />\r\n <Route path={\"/Security/forgot\"}>\r\n <section className=\"content-wrapper\">\r\n <div className=\"container\">\r\n <ForgottenPassword />\r\n </div>\r\n </section>\r\n </Route>\r\n <Route path={\"/Security/resetpassword\"}>\r\n <section className=\"content-wrapper\">\r\n <div className=\"container\">\r\n <ResetPassword />\r\n </div>\r\n </section>\r\n </Route>\r\n <Route\r\n path=\"/termsandconditions\"\r\n render={() => (\r\n <section className=\"content-wrapper\">\r\n <div className=\"container\">\r\n <TermsAndConditions />\r\n </div>\r\n </section>\r\n )}\r\n />\r\n <Route\r\n path=\"/privacypolicy\"\r\n render={() => (\r\n <section className=\"content-wrapper\">\r\n <div className=\"container\">\r\n <PrivacyPolicy />\r\n </div>\r\n </section>\r\n )}\r\n />\r\n <PrivateRoute\r\n path=\"/security/changepassword\"\r\n component={ChangePassword}\r\n />\r\n <PrivateRoute\r\n path=\"/instrument/index/:number\"\r\n render={({ history, location, match }) => (\r\n <InstrumentPage\r\n instrumentNumber={match?.params.number}\r\n />\r\n )}\r\n />\r\n <PrivateRoute\r\n path=\"/account/index/:number\"\r\n component={AccountPageComponent}>\r\n </PrivateRoute>\r\n <PrivateRoute\r\n path=\"/security/activesessions\"\r\n render={() => (\r\n <ActiveSessions userSession={data?.userSession} />\r\n )} />\r\n\r\n {/* Fallback to FinanceSummary */}\r\n <PrivateRoute\r\n children={({ history }) => <FinanceSummaryComponent history={history} />}\r\n />\r\n </Switch>\r\n <Footer />\r\n </React.Fragment>\r\n );\r\n}\r\n\r\nconst AppRouter = () => (\r\n <BrowserRouter>\r\n <App />\r\n </BrowserRouter>\r\n)\r\n\r\nexport default AppRouter;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport { ApolloProvider } from \"@apollo/client\";\r\nimport { IntlProvider } from \"react-intl\";\r\n\r\nimport \"react-app-polyfill/ie11\"; // tslint:disable-line:no-submodule-imports\r\nimport \"react-app-polyfill/stable\"; // tslint:disable-line:no-submodule-imports\r\n\r\nimport App from \"./app/app/App\";\r\nimport { client } from \"./core/apollo/client\";\r\nimport \"assets/styles/main.scss\"\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nrequire(\"bootstrap\");\r\n\r\nif (process.env.NODE_ENV !== \"production\") {\r\n localStorage.setItem(\"debug\", \"capital:*\");\r\n}\r\n\r\nconst ApolloApp = () => (\r\n <IntlProvider locale=\"en-AU\">\r\n <ApolloProvider client={client}>\r\n <App />\r\n </ApolloProvider>\r\n </IntlProvider>\r\n);\r\n\r\nReactDOM.render(<ApolloApp />, document.getElementById(\"root\"));\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}