{"version":3,"sources":["serviceWorker.ts","core/util/stringExtensions.ts","generated/generated-models.tsx","clientConfig.ts","app/lib/components/Loading.tsx","app/common/CError.tsx","app/other/DisplayHtmlContent.tsx","app/other/TermsAndConditions.tsx","app/other/PrivacyPolicy.tsx","app/components/SanitisedLogo.tsx","app/layout/Navbar/NavbarMini.tsx","app/layout/Navbar/Navbar.tsx","app/common/CapitalDate.tsx","app/common/CEmail.tsx","app/SupportContactInformation/SupportContactInformation.tsx","app/authentication/ActiveSessions/ActiveSessions.tsx","app/common/PrivateRoute.tsx","app/components/SanitisedBackgroundImage.tsx","app/authentication/Login/LoginWrapper.tsx","app/authentication/Login/LoginHeader.tsx","app/authentication/Login/LoginErrorMessage.tsx","app/authentication/ForgottenUsername.tsx","app/authentication/ForgottenPassword.tsx","app/common/forms/ErrorMessage.tsx","app/common/forms/CInputFormGroup.tsx","core/util/nameof.ts","app/components/Form.tsx","app/authentication/ResetPassword/ResetPasswordForm.tsx","app/authentication/ResetPassword/ResetPasswordInputValidator.ts","app/authentication/ResetPassword/ResetPassword.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","app/authentication/Login/EnterNewPassword.tsx","app/authentication/Login/EnterNewPasswordValidator.ts","app/authentication/Login/index.tsx","app/authentication/Login/Login.tsx","app/common/CApolloError.tsx","app/components/MoneyFormatted.tsx","app/components/MoneySigned.tsx","core/util/sort.ts","core/util/array.ts","app/instrument/AccountsSummary.tsx","app/instrument/InstrumentHeader.tsx","app/instrument/InstrumentPage.tsx","app/components/Title.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/log.ts","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/accountTransfer/PayAnyoneRequest/CreatePayAnyone.tsx","app/accountTransfer/PayAnyoneRequest/CreatePayAnyoneValidate.tsx","app/accountTransfer/utilities/list/DueOnListItems.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/components/Alert.tsx","app/components/Button.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/CreateInterAccountValidate.tsx","app/accountTransfer/InterAccountTransferRequest/CreateInterAccount.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/components/BpayText.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/lib/useScreenSize.tsx","app/accountTransfer/ManageBpayBillerHistory/ManageBpayBillerHistory.tsx","app/accountTransfer/ManageBpayBillerHistory/index.ts","app/accountTransfer/managePayAnyoneAccounts/ManagePayAnyoneAccounts.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/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/components/TransactionPageIconMoney.tsx","app/transaction/TransactionListView/MobileTransaction.tsx","app/transaction/TransactionListView/DesktopTransactionList/index.ts","app/transaction/TransactionListView/DesktopTransactionList/DesktopTransactonList.tsx","app/transaction/PaginationUtilities.ts","app/transaction/TransactionListView/MobileTransactionList.tsx","app/transaction/TransactionListView/DesktopTransactionList/DetailViewDashboard.tsx","app/transaction/TransactionListView/DesktopTransactionList/TransactionRowDashboard.tsx","app/transaction/TransactionListView/DesktopTransactionList/RecentActivityList.tsx","app/transaction/TransactionListView/index.ts","app/transaction/TransactionListView/TransactionListView.tsx","app/transaction/TransactionListView/MobileTransactionDetail.tsx","app/disbursement/yupDisbursementRequestInput.ts","app/disbursement/DisbursementRequestSuccessful.tsx","app/disbursement/FileThumb.tsx","app/disbursement/DisbursementRequestForm.tsx","app/account/AccountView.tsx","app/components/SanitisedImage.tsx","app/cards/indue/IndueCardListTable.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/IndueCardActivateValidate.ts","app/cards/indue/IndueCardConfirmStatusChange.tsx","app/cards/indue/IndueCardDetailsPage.tsx","app/cards/indue/IndueCardPage.tsx","app/cards/indue/IndueCardListPage.tsx","app/cards/IndueCardConfirmCreateCard.tsx","app/cards/IndueCardConfirmCreateCardValidate.ts","app/account/AccountPage.tsx","app/authentication/Logout.tsx","app/finance-summary/FinanceSummaryView.tsx","app/finance-summary/FinanceSummaryComponent.tsx","app/account/AccountList.tsx","app/statements/StatementsListForParty.tsx","app/transaction/TransactionsListForParty.tsx","app/authentication/ChangePassword/changePasswordValidator.ts","app/authentication/ChangePassword/ChangePasswordPage.tsx","app/authentication/ChangePassword/index.ts","app/authentication/Authenticator/AuthenticatorPage.tsx","app/authentication/Authenticator/AuthenitacorAuthCodeValidation.ts","app/partyLimits/LimitsDisplayTable.tsx","app/partyLimits/PartyLimitsPage.tsx","app/authentication/AcceptTerms.tsx","app/finance-summary/FinanceBalancesView.tsx","app/finance-summary/FinanceSummaryBalances.tsx","app/dashboard/Dashboard.tsx","app/partyLimits/maxLimitValidation.ts","app/components/TimePicker.tsx","app/partyLimits/EditPartyLimitsPage.tsx","app/partyLimits/EditPartyLimitsValidate.ts","app/partyLimits/dateValidator.ts","app/transfersAndPayments/context/useTransferPaymentsContext.tsx","app/transfersAndPayments/context/useTransferPayments.ts","app/transfersAndPayments/ConfirmTransfer.tsx","app/transfersAndPayments/TransferReceipt.tsx","app/transfersAndPayments/context/Create.tsx","app/transfersAndPayments/context/Receipt.tsx","app/transfersAndPayments/context/TransfersAndPaymentsContainer.tsx","app/transfersAndPayments/context/index.tsx","app/transfersAndPayments/context/Confirm.tsx","app/authentication/SecureMessaging/SecureMessagingView.tsx","app/layout/bpay-icon-land.png","app/transfersAndPayments/TransfersAndPayments.tsx","app/transfersAndPayments/TransferAndPaymentsValidate.tsx","app/transfersAndPayments/TransferAndPaymentsPage.tsx","app/authentication/ProfileMarketingCommunications.tsx","app/authentication/ProfileMarketingCommunicationsInputValidator.ts","app/authentication/ProfileElectronicCommunications.tsx","app/authentication/ProfileElectronicCommunicationsInputValidator.ts","app/authentication/ProfileSettings.tsx","app/authentication/ProfilePersonalDetailsInputValidator.ts","app/authentication/SecureMessaging/CreateNewMessageValidate.tsx","app/authentication/SecureMessaging/CreateNewMessage.tsx","app/authentication/SecureMessaging/MessageTypeBar.tsx","app/authentication/SecureMessaging/MessageChainView.tsx","app/authentication/SecureMessaging/MessageOverviewCard.tsx","app/authentication/SecureMessaging/MessageSearchBar.tsx","app/app/App.tsx","index.tsx"],"names":["Boolean","window","location","hostname","match","IsNullOrWhiteSpace","value","trim","StringIsEqual","a","b","ignoreCase","localeCompare","toLowerCase","AddressDetailType","FieldDataType","FileType","IndueCardStatus","LoginV3AuthError","MultiFactorResult","NppPayIdType","NppStatusCode","Period","PreferredContactTime","PreferredCorrespondanceType","PrivacyLevel","RecurrenceEndEnum","TaskFrequencyPeriod","ToDoItemState","defaultOptions","gql","AccountByIdOrNumberDocument","useAccountByIdOrNumberQuery","baseOptions","options","Apollo","ChangeAccountDescriptionDocument","ChangeAccountDescriptionComponent","props","mutation","InstrumentAuthorityAccountsDocument","useInstrumentAuthorityAccountsQuery","BpayBillerHistoryDocument","useBpayBillerHistoryQuery","BpayTransferRequestDocument","useBpayTransferRequestMutation","StopPendingFundsTransferDocument","CreateBpayBillerDocument","DeleteBpayPartyBillerDocument","TransferLimitValidationDocument","AccountFundsTransfersDocument","useAccountFundsTransfersQuery","CreatePayAnyoneBankAccountDocument","CurrentUserPartyBankAccountsDocument","useCurrentUserPartyBankAccountsQuery","DeletePartyBankAccountDocument","RequestPayAnyoneTransferDocument","useRequestPayAnyoneTransferMutation","InstrumentByAccountIdDocument","PartyPaymentLimitDocument","CloseOtherSessionsDocument","ChangeCurrentUserPasswordDocument","PasswordValidatorByApplicationDocument","BankingUserLogoutDocument","BankingUserLogoutComponent","RequestPasswordResetDocument","ArchiveSecureMessageDocument","ReadSecureMessageDocument","CreateNewSecureMessageDocument","CreateNewSecureReplyDocument","SecureMessagesByPartyDocument","UnreadMessagesCountByPartyDocument","useUnreadMessagesCountByPartyQuery","AcceptTermsDocument","BankingUserLoginV2Document","useBankingUserLoginV2Mutation","DisableProfileAuthenticatorDocument","EnableProfileAuthenticatorDocument","GenerateAuthSecretDocument","IsUserAuthenticatedDocument","useIsUserAuthenticatedQuery","PartyChangeElectronicCommsStatusDocument","PartyChangeMarketingCommsStatusDocument","PartyChangePersonalDetailsDocument","PartyElectronicCommsStatusDocument","PartyProfileDetailsDocument","usePartyProfileDetailsQuery","IndueCardActivateCardDocument","IndueCardChangePinDocument","IndueCardChangeStatusDocument","useIndueCardChangeStatusMutation","IndueCardCreateCardDocument","IndueCardDetailsDocument","useIndueCardDetailsQuery","IndueCardsandAssociationsByAccountDocument","useIndueCardsandAssociationsByAccountQuery","RequestNewMultiFactorSecurityTokenDocument","DisbursementRequestDocument","DisbursementRequestComponent","FinanceSummaryQueryDocument","useFinanceSummaryQueryQuery","InstrumentByIdOrNumberDocument","IsShariaDocument","IsShariaComponent","query","MaxLimitsDocument","PartyLimitDocument","usePartyLimitQuery","StatementsByPartyIdDocument","ToDoItemTypesDocument","TransferAccountsByPartyDocument","clientConfigFn","windowConfig","__INTERFI__","baseuri","process","clientVersion","siteTitle","footerText","useSimpleLayout","currencyFormat","currencyLocale","logoImageUri","logoSecondaryImageUri","logoImageLightUri","logoImageDarkUri","logoImageVariantUri","heroImageUri","bankCardActiveUri","bankCardInActiveUri","loginScreenLayout","showClientVersion","showTermsAndConditions","showPrivacyPolicy","supportEmailAddress","supportPhoneNumber","loginWelcomeMessage","forgotUsernamePageTitle","forgotUsernamePageCopy","forgotPasswordPageTitle","forgotPasswordPageCopy","allowOnlinePasswordReset","loginResetPasswordText","transferMenuText","hideLastLoginIp","_productLabel","_issuer","loginAuthenticatorMessage","manageAuthenticatorMessage","loginSecurityTokenMessage","manageSecurityTokenMessage","myFinancesTitle","showUserInWelcomeMessage","showInstrumentTitle","maturesMetricLabel","showAccountTitle","minimumInstalmentLabel","showAvailableRedraw","arrearsMessage","accountAvailableLabel","showPrimaryBorrowerName","showAccountCurrentRate","numberOfAccountsToDisplayOnDashboard","canViewArrearsAmount","redirectToSingleInstrument","hideTransferPage","bankingCutOffWarning","fundsTransferDescriptionRequired","futureDatedTransferWarning","transferCardsSubText","allowDisbursements","disbursementFileText","showManageBPAYBillers","useRealtimePaymentDefaultedOn","realtimePaymentTooltipText","allowOnLineStatements","hideCardPage","transactionHistoryLimitDays","transactionPageSize","showIconsTransactionPage","BETA_showDetailView","showTransactionsAsLender","showProfilePersonalInformation","showProfileAddresses","showProfilePreferredMethodOfCorrespondence","displaySecureMessagePage","Loading","className","role","CError","header","error","style","width","severity","DisplayHtmlContext","url","errorMessage","useState","content","setContent","loading","setloading","undefined","setError","useEffect","getContent","fetch","result","ok","text","dangerouslySetInnerHTML","__html","TermsAndConditions","PrivacyPolicy","DisplayHtmlContent","SanitisedLogo","to","DOMPurify","sanitize","logoUri","drawerWidth","openedMixin","theme","transition","transitions","create","easing","sharp","duration","enteringScreen","overflowX","closedMixin","leavingScreen","spacing","breakpoints","up","DrawerHeader","styled","display","alignItems","justifyContent","padding","mixins","toolbar","AppBar","MuiAppBar","open","zIndex","drawer","marginLeft","Drawer","MuiDrawer","flexShrink","whiteSpace","boxSizing","Transition","React","ref","Slide","direction","NavbarMini","accountMatch","useRouteMatch","partialRefetch","notifyOnNetworkStatusChange","errorPolicy","userSessionData","data","userSessionError","userSessionLoading","unreadMessagesCountByParty","loggedIn","clientConfig","fullScreen","useMediaQuery","scroll","setOpenNav","openHelp","setOpenHelp","openTerms","setOpenTerms","handleCloseTerms","openPrivacy","setOpenPrivacy","handleClosePrivacy","openSupport","setOpenSupport","handleCloseSupport","Box","sx","CssBaseline","position","Toolbar","IconButton","color","onClick","edge","id","component","Link","mr","badgeContent","secureMessagesByParty","UnreadMessageCount","variant","anchor","Divider","List","pathname","activeClassName","button","ListItemIcon","ListItemText","primary","title","exact","params","accountId","secondary","ListItemButton","Collapse","in","timeout","unmountOnExit","disablePadding","Dialog","onClose","fullWidth","maxWidth","DialogTitle","m","p","right","top","DialogContent","href","TransitionComponent","Typography","ml","flex","Navbar","openNav","toggleNav","event","type","key","setValue","Paper","bottom","left","elevation","BottomNavigation","showLabels","onChange","newValue","BottomNavigationAction","label","icon","NavLink","CDate","date","format","CTime","isNaN","Date","getTime","CEmail","email","SupportContactInformation","IncludePlease","phoneNumber","emailAddress","LoginRow","attempt","currentSession","activeText","hasExpired","SessionStart","LastActivity","IpAddress","UserAgentHeader","Id","la","now","Expires","IsDeleted","hasMultipleActiveSessions","userSession","currentTime","currentSessionId","CurrentSession","LoginAttempts","some","ActiveSessions","hasMultipleActive","useCloseOtherSessionsMutation","closeOtherSessions","called","handleCloseOtherSessions","variables","input","CloseCurrentSession","scrollTo","behavior","mt","startIcon","map","x","PrivateRoute","isOnPath","path","indexOf","isAuthenticated","shouldRedirectToAcceptTerms","LastTermsAcceptance","pathName","HasTempPassword","shouldRedirectToChangePassword","getPathname","render","state","from","SanitisedBackgroundImage","backgroundImage","src","LoginWrapper","children","config","LoginHeader","heading","subHeading","LoginErrorMessage","isUsingGoogleAuth","loginV2","AuthError","Invalidcredentials","Mfatokeninvalid","Newpasswordinvalid","AuthMessage","Passwordexpired","Mfarequired","Requirepasswordchange","generateErrorMessage","loginError","loginResponse","ForgottenUsername","ForgottenPassword","CErrorMessage","name","CInputFormGroup","fieldName","groupClassName","inputClassName","inputType","inputId","placeholderText","showLabel","fieldWrapper","fieldNode","formNote","disabled","pattern","inputmode","useFormikContext","errors","touched","htmlFor","placeholder","Form","noValidate","ResetPasswordForm","onSubmit","submitting","initialValues","ContactDetails","Username","ResetMethod","validationSchema","yup","required","when","is","then","min","defined","values","checked","LoadingButton","loadingPosition","ResetPassword","useRequestPasswordResetMutation","onError","context","headers","passwordReset","ResetResults","requestPasswordReset","Success","forwardRef","EnterUsernamePassword","requiresMfa","requiresNewPassword","setUsingGoogleAuth","username","setUsername","userLogin","password","showPassword","setPassword","setLoading","prop","scrollType","openUsername","setOpenUsername","setScroll","handleCloseUsername","openPassword","setOpenPassword","handleClosePassword","openResetPassword","setOpenResetPassword","handleCloseResetPassword","AuthSucceeded","borderRadius","autoComplete","e","preventDefault","Password","response","IsUsingGoogleAuth","handleSubmit","flexWrap","FormControl","InputLabel","FilledInput","target","endAdornment","InputAdornment","onMouseDown","handleOpenResetPassword","handleOpenPassword","endIcon","RequestMultiFactorTokenComponent","showRequestNewToken","getToken","requestMfaOnDisplay","visible","useRequestNewMultiFactorSecurityTokenMutation","requestToken","seconds","setSeconds","alreadyRequestedMfa","setAlreadyRequestedMfa","AuthLabel","interval","setInterval","clearInterval","handleOnChange","stopPropagation","RequestTokenButton","toString","padStart","OutlinedInput","EnterMfa","reset","twoFactorToken","setTwoFactorToken","TwoFactorToken","RequestMultiFactorToken","FieldErrorMessage","errorName","useAddErrorClass","getFieldId","getCurrencySymbol","Intl","NumberFormat","currency","formatToParts","Input","useField","field","helper","classNames","helpTextId","helpText","fieldId","setTouched","replace","charallow","formProps","placeHolder","getPattern","inputMode","getInputMode","thousandSeparator","allowLeadingZeros","allowNegative","decimalScale","fixedDecimalScale","onValueChange","floatValue","onBlur","maxLength","bind","printableOnly","mask","initialFormValues","confirmPassword","EnterNewPassword","NewPassword","oneOf","matches","Login","loginPage","setLoginPage","token","loginDetails","setLoginDetails","CApolloError","message","MoneyFormatted","amount","classes","addColour","locale","minimumFractionDigits","signMoney","isLenderPerspective","MoneySigned","isShowZero","sortByProp","array","propName","order","dir","sort","notEmpty","makeNonEmpty","filter","groupBy","transactions","getKey","keyComparisonCheck","reduce","acc","element","length","push","elements","i","splice","AccountTableRow","account","instrument","handleOnSelectedAccount","redrawConsideration","accountIdOrNumber","Number","selectedCard","setSelectedCard","dataAccountDetails","idOrNumber","accountDetails","accountByIdOrNumber","accountIdString","fetchPolicy","dataIndueCards","loadingIndueCards","errorIndueCards","indueCardsByAccount","indueCards","firstCard","showCards","CardAvailable","Cards","cardsEnabled","Accordion","disableGutters","clickHandler","AccordionSummary","expandIcon","Grid","container","item","xs","InstrumentType","faChartLine","faHandHoldingUsd","PrimaryBorrower","Description","ProductType","CurrentBalance","Redraw","AccordionDetails","CurrentUserAccountAuthority","Operate","AccountTableBody","Accounts","RedrawConsideration","AccountsSummary","GreaterThanZero","displayValue","InstrumentHeader","LoanPurpose","TotalPrincipal","MaturityDate","TotalRedraw","TotalTermMonths","RemainingTermMonths","InstrumentPage","useInstrumentByIdOrNumberQuery","instrumentNumber","instrumentByIdOrNumber","Title","subtitle","GetSecurityTokenValidator","notRequired","RequestMultiFactorTokenFormik","meta","helpers","authenticatedData","AddPayAnyone","handleClose","goBack","payAnyoneAdded","_","useCreatePayAnyoneBankAccountMutation","createPayAnyone","addPayAnyonePage","setAddPayAnyonePage","handleCancelClick","AccountName","accountName","AccountNumber","accountNumber","Bsb","bsb","refetchQueries","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","useInstrumentByAccountIdQuery","accounts","instrumentByAccount","BPay","PayAnyone","AccountSelect","TransferWizard","history","useHistory","fundsTransferQuery","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","Party","PartyBankAccounts","payAnyone","payAnyoneAccounts","partyBankAccount","Deleted","toUpperCase","firstKey","secondKey","faPlus","size","BankingCutoff","DatePicker","setFieldValue","setFieldTouched","selected","val","minDate","maxDate","dateFormat","onChangeRaw","_e","ButtonGroupContext","ButtonGroup","composition","Button","useButtonGroup","classnames","setMaxYear","getFullYear","setMaxMonth","getMonth","setMaxDay","getDate","setMaxDate","TransferUntilInput","mergedConfig","defaultConfig","minStartingDate","isDirectDebit","clearanceDate","showUntilInputBlock","frequency","Once","numberOfTimesInputEnabled","recurrenceEnd","Numberofocurrences","untilDateInputEnabled","Bydate","Never","minUntilDate","TransferScheduleInput","Weekly","Fortnightly","Monthly","log","level","source","namespace","createDebug","debug","this","generateMessage","dataIdFromObject","defaultDataIdFromObject","startsWith","__typename","ClientSchema","ResultCode","success","badInput","exception","resolvers","Query","Mutation","updateNetworkStatus","args","cache","isConnected","info","dismissNotification","root","_context","notificationId","warn","fragment","selectionSet","notificationSelections","selections","find","kind","t","definitions","fragSelections","trace","concat","mergeFieldSelections","cnotif","readFragment","Dismissed","writeFragment","Data","ConversionType","InterestConversionNotification","_args","dismissed","Platform","Capacitor","getPlatform","console","BaseApiUri","URL","join","origin","LoginUri","SecurityUri","apolloCache","InMemoryCache","addTypename","client","ApolloClient","link","ApolloLink","graphQLErrors","networkError","locations","statusCode","uriEqual","tolerant","includes","clearStore","catch","createUploadLink","credentials","uri","typeDefs","validateTransferDescription","transferDescription","mystring","String","containsNonPrintable","step","ascii","charCodeAt","validateLimit","limitType","friendlyText","getFriendlyName","moreThan","startingOn","parent","scheduledForToday","isSameDay","currentRedraw","createError","accountLimit","accountLimits","EffectiveDate","Limits","limit","RemainingDailyRedrawLimit","Amount","RemainingDailyPayAnyoneLimit","RemainingDailyBPayLimit","validateSchedule","endingOn","schema","numberOfTimesAmount","integer","FutureDatedWarningText","PaymentCard","details","CreatePayAnyone","faExclamationTriangle","gutterBottom","mb","CreatePayAnyoneForm","wizard","transferReference","DueOnListItems","recurring","formatDate","paymentDate","repeatText","recurrence","endDate","repeats","addTimeZoneOffset","offsetMins","getTimezoneOffset","Math","transferTypes","createTransferTimes","StartingOn","Frequency","RecurrenceEnd","NumberOfTimesAmount","EndingOn","createTransferVariable","withdrawalDescription","depositDescription","times","TransferType","FixedAmountOption","BankAccountId","ToAccountId","WithdrawalDescription","DepositDescription","AccountId","FromAccountId","ConfirmPayAnyone","requestPayment","paymentData","setOpen","mx","DialogContentText","textAlign","requestPayAnyoneTransfer","FundsTransfer","sendPaymentRequest","DueOnListItemsReceipt","fundsTransfer","FurtherNotice","SpecifiedDate","NumberOfTimes","PaymentReceipt","ProcessedAccountFundsTransfers","PendingAccountFundsTransfers","ReceiptNumber","PayAnyoneRequest","CLoanWord","shariaRentText","IsSharia","isSharia","DeleteTransfer","useStopPendingFundsTransferMutation","stopTransferMutation","transferData","transferLoading","transferError","number","useParams","stopPendingFundsTransfer","BillerName","ToAccountDescription","FromAccountDescription","CreatedOn","RegularPayment","FundsTransferId","Alert","isSubmit","isBlock","buttonClasses","Payment","PaymentForm","ConfirmPayment","PaymentAccountCard","SelectPayment","paymentAccounts","CreatePayment","ConfirmRedraw","RedrawReceipt","RedrawCard","SelectRedraw","redrawAccounts","RedrawPage","CreateRedraw","Validate","availableTransfer","financeSummary","Instruments","flatMap","CreateInterAccount","fromAccountId","currentAccount","CreateInterAccountForm","ConfirmInterAccount","fromAccount","toAccount","InterAccountReceipt","SelectInterAccount","InterAccountPage","BpayText","AddBpayBiller","billerAdded","useCreateBpayBillerMutation","createBiller","billerDescription","billerCode","customerReferenceNumber","addBpayBillerPage","setAddBpayBillerPage","BillerCode","CustomerReferenceNumber","BillerDescription","HasPendingTransfer","createBpayBiller","NewBpayBiller","BillerCard","billers","billerNameClass","Billercode","SelectBpay","createNewBiller","setCreateNewBiller","BpayBillerHistory","billerHistory","bpayTransfer","transferTimes","SaveBillerDetails","bpayTransferRequest","BPayRequest","CreateBpay","ConfirmBpay","useScreenSize","CustomNoRowsOverlay","GridOverlay","billerDisplayName","description","BillerHistoryRow","deleteBiller","ManageBpayBillerHistoryView","screenSize","sortedBillers","rows","columns","headerName","minWidth","renderCell","row","align","code","Item","backgroundColor","palette","mode","typography","body2","height","my","DataGrid","getRowId","r","rowsPerPageOptions","initialState","pagination","pageSize","components","NoRowsOverlay","disableColumnSelector","componentsProps","filterPanel","linkOperators","GridLinkOperator","And","columnsSort","filterFormProps","linkOperatorInputProps","columnInputProps","operatorInputProps","deleteIconProps","Stack","pb","px","ManageBPayBillerHistory","billerToDelete","setBillerToDelete","useDeleteBpayPartyBillerMutation","deleteBPayMutation","deleteBpayLoading","bpayHistory","PartyBillerHistoryId","ManageBpayBillerHistory","ManagePayAnyoneAccountsView","deletePartyBankAccount","pba","BankAccountRow","sorting","sortModel","ManagePayAnyoneAccounts","partyBankAccountToBeDeleted","setPartyBankAccountToBeDeleted","useDeletePartyBankAccountMutation","deletePartyBankAccountMutation","deletePbaLoading","deletePbaError","PartyBankAccountId","TransferUntil","transfer","RemainingNumberOfTimes","toLocaleUpperCase","TransferRow","canDeleteTransfer","AvailableActions","NextScheduledDate","TransferTypeDescription","PendingTransferRows","pendingTransfers","colSpan","PendingTransfers","interAccountAllowed","RecentTransfers","recentTransfers","AccountTransferHome","transferModel","InterAccountAllowed","TransferHistory","AccountTransferPage","recentTransfersToShow","basePath","pendingFundsTransfers","processedFundsTransfers","slice","transferDetailsProps","BPayAllowed","RedrawAllowed","PayAnyoneAllowed","AllowOnlineDisbursements","StatementDocumentRow","statement","generateStatementLink","rel","PeriodFrom","PeriodTo","InstrumentId","FileId","StatementsList","statements","PlainAccountDescription","onStartEdit","yupChangeAccountDescriptionInput","Name","ChangeAccountDescription","previousDescription","onCancel","onUpdated","mutateFn","clientMutationId","Guid","isDisabled","changeAccountDescription","EditableAccountDescription","isEditing","setState","onFinishEdit","Component","NumberPercentage","maximumFractionDigits","AccountSummaryHeader","offsetProduct","OffsetAccount","Rate","MonthlyInstalment","NextInstalmentDue","ArrearsBalance","TransactionPageIcon","iconName","faMoneyBillAlt","faCalendar","faArrowAltCircleDown","faArrowAltCircleUp","faComment","getIcon","iconStyle","marginRight","TransactionPageIconMoney","colour","getColour","MobileTransaction","transaction","pendingClassName","IsPending","faClock","Decrease","Increase","DesktopTransactionList","filteredData","setFilteredData","skip","dataAccountById","loadingAccountById","errorAccountById","filteredTrans","Transactions","tran","WasReversed","AppearsOnStatement","WasBackedOut","cutOffDate","addDays","filteredTransactions","hide","filterable","Note","autoHeight","getRowHeight","TransactionType","pageTransactions","filterTransactions","pagedTransactions","startIndex","endIndex","usePagedTransactions","disablePaging","setCurrentPage","totalPages","ceil","constrainPage","pageNumber","returnValue","nextPage","previousPage","gotoPage","TransactionDateCard","groupItemClasses","year","month","day","showDetailView","MobileTransactionList","setDetailView","loadingTransactions","errorTransactions","isVisible","setIsVisible","items","setItems","hasNextPage","setHasNextPage","loadItems","newHasNextPage","current","loadMore","resetItems","useLoadItems","awaitingTransactionReset","setAwaitingTransactionReset","groupedTransactionList","endOfDay","firstElement","secondElement","valueOf","transactionIds","ARRAY_SIZE","startCursor","Promise","resolve","newArray","setTimeout","newItem","useInfiniteScroll","onLoadMore","rootMargin","sentryRef","toggleVisibility","scrollY","addEventListener","faArrowUp","DescriptionListItem","DetailViewerContainer","DetailViewDashboard","trans","TransactionDescription","TransactionRowDashboard","detailView","Effective","Balance","RecentActivityList","detailTransaction","setDetailTransaction","TransactionListView","isRoot","ListItem","TransactionContainer","StatementText","TransactionView","toDateString","PendingTransactionView","MobileTransactionDetail","yupDisbursementRequestInput","File","PayeeName","PaymentDate","PaymentDescription","RequestedAmount","positive","DisbursementRequestSuccessful","disbursement","Documents","doc","fileItem","FileItemView","FileName","validFileExtensions","isImageExt","file","ext","endsWith","FileThumb","thumb","nextProps","reader","FileReader","onloadend","readAsDataURL","fileExtension","split","pop","alt","round","DisbursementRequestForm","fileData","setFileData","fileName","setFileName","setFile","getBase64","onload","encoded","repeat","handleUpload","files","base64","SupplierBankAccountName","update","formik","reload","disbursementRequest","AccountView","historyDays","tabValue","setTabValue","TabContext","borderBottom","borderColor","TabList","Tab","TabPanel","py","SanitisedImage","statusToText","status","Active","Activeoff","Cardcreated","Closed","Lost","Ordered","Other","Restricted","Stolen","Damaged","CardTableRow","card","maskedCard","CardNumber","substring","cardid","cardClassName","cardStyles","paperContainer","Card","Status","ExpiryDate","CardTableBody","cards","IndueCardListTable","childrenVisible","DelayedRender","timerId","setChildrenVisible","delay","clearTimeout","isTokenRequiredError","extensions","useSecurityTokenMutation","mutationResult","tokenRequired","setTokenRequired","originalResponse","filteredErrors","getMaskedCardNumber","IndueCardResetPinPage","cardId","useIndueCardChangePinMutation","changePin","changePinData","changePinError","CardId","pinString","NewPin","Pin","useLocation","SuccesfullyChangedPin","Result","forceRefresh","indueCardDetails","ConfirmPin","RegExp","selectedStatus","changeStatus","handleActivateCardSubmit","callback","indueActivateCard","ActivateCardResult","ChangePinResult","ActivateCardForm","useIndueCardActivateCardMutation","cardActivationError","setCardActivationError","setChangePinError","successActivation","setSuccess","ResultResponse","succcess","cardActivationResult","CloseCardForm","HoldCardForm","LostOrStolenCardForm","IndueCardConfirmStatusChange","statusType","IndueCardDetailsPage","openHoldCard","setOpenHoldCard","openActivateCard","setOpenActivateCard","openChangePin","setOpenChangePin","openCloseCard","setOpenCloseCard","openBlockCard","setOpenBlockCard","handleCloseChangePin","event_","CanHold","CanActivate","CanClose","CanReportLostStolen","IndueCardPage","handleOnSelectedCard","RequestCard","queryResult","cardAvailable","association","partyAssociationByAccount","authority","IsSecondaryBorrower","PrimaryBorrowerHasCard","IsNonBorrower","requestCardError","IndueCardListPage","dataCardDetails","indueCardProps","IndueCardConfirmCreateCardPage","acceptedTerms","setAcceptedTerms","readTerms","setReadTerms","setSubmitting","currentMFAStatus","setCurrentMFAStatus","useIndueCardCreateCardMutation","createCard","numPages","setNumPages","pdfDocument","useCallback","onscroll","difference","scrollHeight","scrollTop","clientHeight","abs","toolTipRef","useRef","toolTip","findDOMNode","$","tooltip","handleUserAcceptsTerms","onLoadSuccess","inputRef","Array","el","index","scale","marginTop","pointerEvents","AccountPageComponent","withRouter","Statements","IndueCardConfirmCreateCard","Logout","onLogout","onCompleted","logout","logoutMuation","err","FinanceLine","WelcomeMessage","showUser","FirstName","OrganisationName","FinanceSummaryView","onLineClick","inst","FinanceSummaryComponent","AccountList","selectedAccount","setSelectedAccount","StatementsListForParty","useStatementsByPartyIdQuery","dataStatements","loadingStatements","errorStatements","dataAccounts","loadingAccounts","errorAccounts","statementByPartyId","statementsByPartyId","dt","accountsByPartyId","selectedAccountNumber","setSelectedAccountNumber","listAccounts","setListAccounts","widthMed","widthSml","filterStatements","filteredStatementData","accountNumberObject","AdHoc","headerAlign","Autocomplete","getOptionLabel","option","_event","inputValue","defaultValue","onInputChange","newSelectedAccountNumber","PaperComponent","fontSize","renderInput","TextField","TransactionsListForParty","selectedOptions","setSelectedOptions","accountById","firstAccount","disableClearable","confirmNewPassword","oldPassword","newPassword","securityToken","requiresToken","ChangePassword","useChangeCurrentUserPasswordMutation","changePassword","changePasswordResult","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","AuthenticatorPage","useGenerateAuthSecretMutation","generateAuthSecret","attemptState","setAttemptState","authSecret","setAuthSecret","useEnableProfileAuthenticatorMutation","enableAuth","enableAuthError","currentStage","setCurrentStage","displayRemoveWarning","setDisplayRemoveWarning","useDisableProfileAuthenticatorMutation","disableAuth","disableAuthError","goHome","setGoHome","mfaEnabled","handleMFASubmit","AuthSecret","handleRemoveSubmit","disableProfileAuthenticator","handleAuthCodeSubmit","AuthenticatorToken","authenticatorToken","enableProfileAuthenticator","productLabel","issuer","serect","includeMargin","encodeURIComponent","DisplayTable","rowHeading","dailyLimit","rowAmount","subAmount","rowDate","PartyLimitsPage","partyLimits","isMFAEnabled","DailyPayAnyoneLimit","DailyRedrawLimit","DailyBPayLimit","LimitEffectiveTo","DefaultPayAnyoneLimit","DefaultRedrawLimit","DefaultBPayLimit","AcceptTerms","useAcceptTermsMutation","acceptTerms","onScroll","currentTarget","FinanceBalancesView","FinanceSummaryBalances","Dashboard","session","SearchName","flexGrow","BPayLimitMax","PayAnyoneLimitMax","RedrawLimitMax","TimePicker","time","EditPartyLimitsPage","usePartyPaymentLimitMutation","editLimit","editLimitError","editLimitData","setChecked","setTime","editLimits","setEditLimits","handleEditLimitsSubmit","effective","EffectiveTo","splitTime","parseInt","setHours","PayAnyoneLimit","RedrawLimit","BpayLimit","setPartyPaymentLimit","handleCheckChange","isTemporary","dateRequired","FormGroup","FormControlLabel","control","Checkbox","timeChange","TransferPaymentsContext","TransferPaymentsContextProvider","formStage","updateFormsStage","updateFromAccount","updateToAccount","transferType","updateTransferType","isPending","updateStage","updateIsPending","useTransferPaymentsContext","useTransferPayments","confirmFromAccount","confirmToAccount","ConfirmTransfer","bpayData","IsBPay","IsBankAccount","IsExternal","DetermineTransferType","transferTypeId","SetTransferTypeId","BSB","UseNPP","useNPP","pending","TransferReceipt","TransferPayments","SecureMessageSortingType","SecureMessageStatus","TransfersAndPayments","childValue","setChildValue","selectedFromAccount","setSelectedFromAccount","selectedToAccount","setSelectedToAccount","selectedToAccountIsBPay","setSelectedToAccountIsBPay","selectedToAccountIsExternal","setSelectedToAccountIsExternal","selectedFromAccountIsNominated","setSelectedFromAccountIsNominated","selectedLinkedFromAccount","setSelectedLinkedFromAccount","canUseNPP","setCanUseNPP","funderAllowsNPP","setFunderAllowsNPP","setClearanceDate","fromRedrawBalance","setFromRedrawBalance","toRedrawBalance","setToRedrawBalance","dataUserSession","useTransferAccountsByPartyQuery","limitData","limitLoading","limitError","newLimitsEnabled","PartyPaymentLimitsEnabled","filterInterAccounts","transferAccountsByParty","AllowRead","mergedFromAccounts","filteredAccount","IsDirectDebit","IsDirectCredit","fromAccounts","accountCategory","AccountCategory","filteredInterLinkedAccounts","filteredExternalAccounts","filteredBPayAccounts","filteredDisableBPayAccounts","filteredNominatedToAccounts","CapitalAccountNumber","filteredPaymentFromNominated","filteredAccounts","AllowOperate","AllowRedraw","AllowPayAnyone","AllowBPay","filterAccounts","toAccounts","renderOption","RedrawBalance","isNominated","FunderAllowsNPP","BPayLandIcon","canNPP","AccountIsValidForNPP","MinimumDirectDebitDate","Tooltip","Switch","newChildValue","TransfersAndPaymentsForm","TransferAndPaymentsPage","ProfileMarketingCommunications","ProfileId","MarketingStatus","marketingCommsStatus","setMarketingCommsStatus","usePartyChangeMarketingCommsStatusMutation","changeMarketingStatus","changeMarketingStatusData","changeMarketingStatusError","marketingCommsMFA","setMarketingCommsMFA","handleMarketingCommsSubmit","changeMarketingCommsStatus","ProfileElectronicCommunications","SMSNotificationStatus","EmailNotificationStatus","StatementNotificationStatus","electronicCommsStatus","setElectronicCommsStatus","usePartyChangeElectronicCommsStatusMutation","changeElectronicCommsStatus","changeElectronicCommsStatusData","changeElectronicCommsStatusError","electronicCommsMFA","setElectronicCommsMFA","handleElectronicCommsSubmit","electronicStatus","ProfileSettings","PreferredCorrespondenceMethod","partyProfileDetails","partyProfileDetailsLoading","partyProfileDetailsError","partyElectronicCommsData","usePartyElectronicCommsStatusQuery","partyDetails","preferredCorrespondence","setPreferredCorrespondence","openMarketing","setOpenMarketing","openElectronic","setOpenElectronic","personalDetailsStatus","setPersonalDetailsStatus","usePartyChangePersonalDetailsMutation","changePersonalDetails","changePersonalDetailsData","changePersonalDetailsError","personalDetailsMFA","setPersonalDetailsMFA","handlePersonalDetailsSubmit","partyPersonalDetails","mailingAddress","Addresses","IsDefaultMailingAddress","IsPrevious","ma","Address","residentialAddress","IsDefaultResidentialAddress","ra","preferredEmail","Contacts","pe","IsPreferredEmail","em","Details","preferredPhone","pp","IsPreferredPhone","ph","preferredSms","ps","IsPreferredSms","partyElectComms","electronicComms","correspondenceList","Object","disableCorrespondenceMailEmailPhoneSms","obj","disableCorrespondenceMailEmailPhone","disableCorrespondenceMailEmailSms","disableCorrespondenceMailPhoneSms","disableCorrespondenceEmailPhoneSms","disableCorrespondenceEmailMail","disableCorrespondenceEmailSms","disableCorrespondencePhoneSms","disableCorrespondencePhoneEmail","disableCorrespondencePhoneMail","disableCorrespondenceMailSms","disableCorrespondenceMail","disableCorrespondencePhone","disableCorrespondenceEmail","disableCorrespondenceSms","filterCorrespondenceList","filterCorrespondence","filteredCorrespondenceList","filteredCorrespondence","handleChangeCorrespondence","correspondenceSel","LastLoginAttempt","LastLoginFrom","EntityType","LastName","InputLabelProps","shrink","readOnly","resAddress","AddressLine1","AddressLine2","AddressLine3","AddressLine4","PropertyName","Building","FloorName","FloorNumber","UnitNumber","LotNumber","StreetNumberFrom","StreetNumberTo","StreetName","StreetType","SuburbTown","Country","Region","PostalCode","mailAddress","correspondence","MenuItem","FormHelperText","AcceptsAdvertising","LastPasswordChange","SelectedToDoItem","SelectedAccount","SecureMessageType","IsAccount","CreateNewMessage","toDoItemTypesArray","setToDoItemTypesArray","loadingFinanceSummary","financeSummaryErrors","accountNumbers","useToDoItemTypesQuery","IsSecureMessage","toDoItemTypes","loadingToDoItemTypes","errorToDoItemTypes","handleCloseNewMessage","toDoItemTypeA","toDoItemTypeB","DisplayOrder","useCreateNewSecureMessageMutation","createNewSecureMessage","ToDoItemTypeId","requestNewSecureMessage","GraphSecureMessage","handleCreatedNewMessage","handleChange","toDoItemType","multiline","minRows","MessageTypeBar","messageBody","setMessageBody","onKeyPress","InputProps","startAdornment","disableElevation","paddingRight","border","MessageChainView","useCreateNewSecureReplyMutation","createNewSecureReply","useArchiveSecureMessageMutation","handleArchiving","secureMessage","currentMessage","setCurrentMessage","firstNameInitial","charAt","lastNameInitial","scrollIntoView","scrollToBottom","ToDoItem","Messages","SecureMessageId","Body","requestNewSecureReply","messageA","messageB","handleArchivingSubmit","archiveSecureMessage","Subject","IsArchived","pt","overflow","Fragment","partyId","Avatar","Text","CreatedBy","hour","minute","MessageOverviewCard","selectedMessageContext","SecureMessageContext","lastDate","IsRead","SelectedMessage","handleSelectMessage","cursor","CardHeader","toLocaleTimeString","CardContent","trimEnd","CardActions","Search","shape","alpha","common","white","SearchIconWrapper","StyledInputBase","InputBase","paddingLeft","MessageSearchBar","inputProps","handleSearchChange","SecureMessagingView","openNewMessage","setOpenNewMessage","messagePool","setMessagePool","filteredMessages","setFilteredMessages","useReadSecureMessageMutation","handleReading","Filter","Keyword","MessageStatus","All","Sorting","secureMessageContext","setSecureMessageContext","rowsPerPage","setRowsPerPage","setPage","heldMessageIds","setHeldMessageIds","useSecureMessagesByPartyQuery","messagesByParty","loadingMessagesByParty","errorMessagesByParty","SecureMessages","filterMessages","sortedMessages","sortMessages","unfilteredMessages","messages","Unread","Archive","unsortedMessages","AZ","ZA","handleNewMessageClick","handleReadingSubmit","keys","secureMessageStatus","secureMessageSortingType","TablePagination","onPageChange","onRowsPerPageChange","margin","App","document","mobileScreenSize","innerWidth","MFAEnforced","AppRouter","require","ApolloApp","ApolloProvider","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.37ca8f5d.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","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","/* eslint-disable */\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-nocheck\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 InputMaybe = T | undefined;\r\nexport type Exact = { [K in keyof T]: T[K] };\r\nexport type MakeOptional = Omit & { [SubKey in K]?: Maybe };\r\nexport type MakeMaybe = Omit & { [SubKey in K]: Maybe };\r\nexport type Omit = Pick>;\r\nconst defaultOptions = {} as const;\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 `DateTime` scalar represents an ISO-8601 compliant date time type. */\r\n DateTime: Date;\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 multiplier path scalar represents a valid GraphQL multiplier path string. */\r\n MultiplierPath: any;\r\n Uuid: any;\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 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 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 /** current schedule balance. */\r\n ScheduledBalance?: 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?: InputMaybe;\r\n};\r\n\r\n\r\nexport type AccountProcessedAccountFundsTransfersArgs = {\r\n filter?: InputMaybe;\r\n};\r\n\r\n\r\nexport type AccountTransactionsArgs = {\r\n after?: InputMaybe;\r\n first?: InputMaybe;\r\n};\r\n\r\n\r\nexport type AccountTransactionsConnectionArgs = {\r\n after?: InputMaybe;\r\n first?: InputMaybe;\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\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\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?: InputMaybe>>;\r\n /** Optional, if true, Remove the account from all other categories */\r\n RemoveFromOtherCategories?: InputMaybe;\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?: InputMaybe;\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?: InputMaybe;\r\n /** Optionally remove all other categorisations from the account */\r\n RemoveOtherCategories?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type AccountCategorisationToRemoveInput = {\r\n /** Id of the category to remove */\r\n AccountCategoryId?: InputMaybe;\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?: InputMaybe;\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?: InputMaybe;\r\n /** Order of the category if it is a new category */\r\n CategoryOrder?: InputMaybe;\r\n /** Name of an existing category or the new category if it doesn't exist */\r\n Name?: InputMaybe;\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 AccountLimit = {\r\n __typename?: 'AccountLimit';\r\n DailyBPayLimit?: Maybe;\r\n DailyPayAnyoneLimit?: Maybe;\r\n DailyRedrawLimit?: Maybe;\r\n DefaultBPayLimit?: Maybe;\r\n DefaultPayAnyoneLimit?: Maybe;\r\n DefaultRedrawLimit?: Maybe;\r\n LimitEffectiveTo?: Maybe;\r\n RemainingDailyBPayLimit?: Maybe;\r\n RemainingDailyPayAnyoneLimit?: Maybe;\r\n RemainingDailyRedrawLimit?: 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 /** transaction that a waive is for. */\r\n WaiveTransactionId?: Maybe;\r\n /** name of the waiver transaction related to the current transaction type. */\r\n WaiverTransactionName?: 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\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?: InputMaybe;\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 /** Id of the account */\r\n Id?: InputMaybe;\r\n /** Number of the account */\r\n Number?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type AcknowledgedUserNotificationInput = {\r\n BrandId?: InputMaybe;\r\n Dismissed?: InputMaybe;\r\n UserNotificationId: 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?: InputMaybe;\r\n};\r\n\r\nexport type ActivateCardInput = {\r\n CardId: Scalars['Uuid'];\r\n TwoFactorToken?: InputMaybe;\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type ActivateCardResponse = {\r\n __typename?: 'ActivateCardResponse';\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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/** The set of address detail types. */\r\nexport enum AddressDetailType {\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 /** The address is a street address. */\r\n Street = 'STREET'\r\n}\r\n\r\n/** Filter the notifications to show */\r\nexport type ApplicationNotificationsFilterInput = {\r\n /** Optionally filter by brand */\r\n BrandId?: InputMaybe;\r\n /** Only show matching */\r\n NotificationTypeCode?: InputMaybe>>;\r\n};\r\n\r\nexport type ArchiveSecureMessageInput = {\r\n /** The Capital Id of the SecureMessage to archive */\r\n SecureMessageId: Scalars['Uuid'];\r\n};\r\n\r\nexport type ArchiveSecureMessageResponse = {\r\n __typename?: 'ArchiveSecureMessageResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\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?: InputMaybe;\r\n};\r\n\r\nexport type AssignAccountCategoriesResponse = {\r\n __typename?: 'AssignAccountCategoriesResponse';\r\n /** Categorisations Applied */\r\n AppliedCategorisation?: 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 clientMutationId?: Maybe;\r\n};\r\n\r\nexport type AuthorityOperateAccountsInput = {\r\n /** Specifies that the operate accounts returned must allow BPAY */\r\n MustAllowBPay?: InputMaybe;\r\n /** Specifies that the operate accounts returned must allow pay anyone */\r\n MustAllowPayAnyone?: InputMaybe;\r\n /** Specifies that the operate accounts returned must allow redraw */\r\n MustAllowRedraw?: InputMaybe;\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?: InputMaybe;\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 HasPendingTransfer?: 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\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\nexport type BankBranchDetailsInput = {\r\n BankIdentifier: Scalars['String'];\r\n BankIdentifierType?: InputMaybe;\r\n};\r\n\r\nexport type BpayBiller = {\r\n __typename?: 'BpayBiller';\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 Billercode: Scalars['Long'];\r\n /** customer last used CRN for this biller */\r\n CustomerReferenceNumber?: Maybe;\r\n HasPendingTransfer?: Maybe;\r\n Id?: Maybe;\r\n};\r\n\r\nexport type BpayBillerDetailsInput = {\r\n BillerCode: Scalars['Long'];\r\n EffectiveDate: Scalars['DateTime'];\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 /** User Description of Biller to save in history */\r\n BillerDescription?: InputMaybe;\r\n /** biller code for a bpay payment */\r\n Billercode: Scalars['Long'];\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?: InputMaybe;\r\n /** frequency of any recurrences. */\r\n Frequency?: InputMaybe;\r\n /** number of repeats. */\r\n NumberOfTimesAmount?: InputMaybe;\r\n RecurrenceEnd?: InputMaybe;\r\n SaveBillerDetails?: InputMaybe;\r\n StartingOn: Scalars['DateTime'];\r\n TwoFactorToken?: InputMaybe;\r\n /** description for the withdrawal transaction. */\r\n WithdrawalDescription?: InputMaybe;\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type BpayTransferRequestResponse = {\r\n __typename?: 'BpayTransferRequestResponse';\r\n Code?: Maybe;\r\n FundsTransfer?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n ValidationErrors?: Maybe>>;\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type BpayValidatorInput = {\r\n /** The BPAY payment amount */\r\n Amount?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type BpayValidatorResponse = {\r\n __typename?: 'BpayValidatorResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n /** BPay validation errors */\r\n ValidationErrors?: Maybe>>;\r\n clientMutationId?: 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/** 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\n/** Request the categorisation of a list of AccountTransactions */\r\nexport type CategoriseAccountTransactionsInput = {\r\n /** List of categorisations to attempt */\r\n categorisations?: InputMaybe>>;\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?: InputMaybe;\r\n};\r\n\r\n/** Request the categorisation of a list of AccountTransactions */\r\nexport type CategoriseAccountTransactionsResponse = {\r\n __typename?: 'CategoriseAccountTransactionsResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n /** Failed categorisations */\r\n failedCategorisations?: Maybe>>;\r\n /** Successful categorisations */\r\n successfulCategorisations?: Maybe>>;\r\n};\r\n\r\nexport type CategoriseProfileAccountsInput = {\r\n /** Accounts to be categorised */\r\n CategoriesToApply?: InputMaybe>>;\r\n /** Remove categories from accounts. Removals are processed first */\r\n CategoriesToRemove?: InputMaybe>>;\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?: InputMaybe;\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 Code?: Maybe;\r\n /** Categories removed from accounts */\r\n FailedCategorisations?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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?: InputMaybe;\r\n /** Optional Id of an existing Categorisation entry to update, null or empty to update all Categorisations for this account */\r\n Id?: InputMaybe;\r\n};\r\n\r\nexport type ChangeAccountDescriptionInput = {\r\n AccountId: Scalars['Uuid'];\r\n Name?: InputMaybe;\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type ChangeAccountDescriptionResponse = {\r\n __typename?: 'ChangeAccountDescriptionResponse';\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ChangeCardPinInput = {\r\n CardId: Scalars['Uuid'];\r\n /** PIN must be 4-6 digits */\r\n NewPin?: InputMaybe;\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type ChangeCardPinResponse = {\r\n __typename?: 'ChangeCardPinResponse';\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ChangeElectronicCommsStatusInput = {\r\n EmailNotificationStatus: Scalars['Boolean'];\r\n SMSNotificationStatus: Scalars['Boolean'];\r\n StatementNotificationStatus: Scalars['Boolean'];\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\n/** Updates the electronic communications flags against party association. */\r\nexport type ChangeElectronicCommsStatusResponse = {\r\n __typename?: 'ChangeElectronicCommsStatusResponse';\r\n Code?: Maybe;\r\n EmailNotificationStatus: Scalars['Boolean'];\r\n Message?: Maybe;\r\n SMSNotificationStatus: Scalars['Boolean'];\r\n StatementNotificationStatus: Scalars['Boolean'];\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ChangeMarketingCommsStatusInput = {\r\n MarketingStatus: Scalars['Boolean'];\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\n/** Updates the marketing communications flag against party. */\r\nexport type ChangeMarketingCommsStatusResponse = {\r\n __typename?: 'ChangeMarketingCommsStatusResponse';\r\n Code?: Maybe;\r\n MarketingStatus: Scalars['Boolean'];\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ChangePasswordInput = {\r\n /** The password the user logged in with */\r\n CurrentPassword?: InputMaybe;\r\n /** The new password. It must meet complexity requirements */\r\n NewPassword?: InputMaybe;\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type ChangePasswordResponse = {\r\n __typename?: 'ChangePasswordResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n UserSession?: Maybe;\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type ChangeUsernameInput = {\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n /** The new username */\r\n newUsername?: InputMaybe;\r\n};\r\n\r\nexport type ChangeUsernameResponse = {\r\n __typename?: 'ChangeUsernameResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type CheckMultiFactorAuthorisationInput = {\r\n /** The two factor token to check */\r\n TwoFactorToken: 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?: InputMaybe;\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 ConnectionWithNodesOfGraphAccountTransaction = {\r\n __typename?: 'ConnectionWithNodesOfGraphAccountTransaction';\r\n edges?: Maybe>>;\r\n nodes?: Maybe>>;\r\n pageInfo?: Maybe;\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\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\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?: InputMaybe;\r\n /** Customer reference number used to identify the customer making the payment */\r\n CustomerReferenceNumber: Scalars['String'];\r\n HasPendingTransfer?: InputMaybe;\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type CreateBpayBillerResponse = {\r\n __typename?: 'CreateBpayBillerResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n NewBpayBiller?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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 /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type CreatePayAnyoneBankAccountResponse = {\r\n __typename?: 'CreatePayAnyoneBankAccountResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n NewPartyBankAccount?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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 DateRangeInput = {\r\n From?: InputMaybe;\r\n To?: InputMaybe;\r\n};\r\n\r\nexport type DeleteBpayPartyBillerInput = {\r\n /** ID of the saved BPAY biller/CRN */\r\n PartyBillerHistoryId?: InputMaybe;\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type DeleteBpayPartyBillerResponse = {\r\n __typename?: 'DeleteBpayPartyBillerResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n PartyBillerHistoryId: Scalars['Uuid'];\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type DeletePartyBankAccountInput = {\r\n /** ID of the user's bank account to be deleted */\r\n PartyBankAccountId: Scalars['Uuid'];\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type DeletePartyBankAccountResponse = {\r\n __typename?: 'DeletePartyBankAccountResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n PartyBankAccountId: Scalars['Uuid'];\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type DeleteProfileCustomAccountCategoryInput = {\r\n /** User defined order for the account */\r\n Deletions: 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?: InputMaybe;\r\n};\r\n\r\nexport type DeleteProfileCustomAccountCategoryResponse = {\r\n __typename?: 'DeleteProfileCustomAccountCategoryResponse';\r\n Code?: Maybe;\r\n Deleted?: Maybe>>;\r\n Failed?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type DisableProfileAuthenticatorInput = {\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?: InputMaybe;\r\n};\r\n\r\nexport type DisableProfileAuthenticatorResponse = {\r\n __typename?: 'DisableProfileAuthenticatorResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\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?: InputMaybe;\r\n BankIdentifierText?: InputMaybe;\r\n File?: InputMaybe;\r\n FileName?: InputMaybe;\r\n InstrumentId: Scalars['Uuid'];\r\n PayeeName?: InputMaybe;\r\n PaymentDate: Scalars['DateTime'];\r\n PaymentDescription?: InputMaybe;\r\n RequestedAmount: Scalars['Decimal'];\r\n SupplierBankAccountName?: InputMaybe;\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type DisbursementRequestResponse = {\r\n __typename?: 'DisbursementRequestResponse';\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\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 DismissNotificationResult = MutationResponse & {\r\n __typename?: 'DismissNotificationResult';\r\n Code: Scalars['String'];\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\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 type DocumentLinkFilterInput = {\r\n Document?: InputMaybe;\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 EdgeOfGraphApplicationNotificationInteraction = {\r\n __typename?: 'EdgeOfGraphApplicationNotificationInteraction';\r\n cursor?: Maybe;\r\n node?: Maybe;\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\nexport type ElectronicCommsStatus = {\r\n __typename?: 'ElectronicCommsStatus';\r\n EmailNotificationStatus: Scalars['Boolean'];\r\n SMSNotificationStatus: Scalars['Boolean'];\r\n StatementNotificationStatus: Scalars['Boolean'];\r\n};\r\n\r\nexport type EnableProfileAuthenticatorInput = {\r\n /** Authenticator Token supplied by Authenticator app */\r\n AuthenticatorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type EnableProfileAuthenticatorResponse = {\r\n __typename?: 'EnableProfileAuthenticatorResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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 type FailedAccountCategorisation = {\r\n __typename?: 'FailedAccountCategorisation';\r\n clientMutationId?: 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 FailedAccountOrdering = {\r\n __typename?: 'FailedAccountOrdering';\r\n Ordering?: Maybe;\r\n Reason?: 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 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 FailedCategory = {\r\n __typename?: 'FailedCategory';\r\n Id?: Maybe;\r\n Name?: Maybe;\r\n Ordering?: 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 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 FailedProfileCategoryDeletion = {\r\n __typename?: 'FailedProfileCategoryDeletion';\r\n Id?: 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 enum FieldDataType {\r\n Date = 'DATE',\r\n Flag = 'FLAG',\r\n Money = 'MONEY',\r\n Number = 'NUMBER',\r\n Text = 'TEXT'\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 /** GUID identifier of the parent instrument. */\r\n InstrumentId?: Maybe;\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/** Add Graph filter object for GraphFile */\r\nexport type FileFilterInput = {\r\n DocumentCategory?: InputMaybe;\r\n DocumentType?: InputMaybe;\r\n PrivacyLevel?: InputMaybe;\r\n UserGenerated?: InputMaybe;\r\n};\r\n\r\nexport enum FileType {\r\n Document = 'DOCUMENT',\r\n Documentfooter = 'DOCUMENTFOOTER',\r\n Documentheader = 'DOCUMENTHEADER',\r\n Image = 'IMAGE',\r\n Logo = 'LOGO',\r\n Marketingimage = 'MARKETINGIMAGE',\r\n Profileimage = 'PROFILEIMAGE',\r\n Resource = 'RESOURCE',\r\n Signature = 'SIGNATURE',\r\n Statement = 'STATEMENT',\r\n Template = 'TEMPLATE'\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 ForceCloseCurrentUserSessionsInput = {\r\n CloseCurrentSession?: InputMaybe;\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type ForceCloseCurrentUserSessionsResponse = {\r\n __typename?: 'ForceCloseCurrentUserSessionsResponse';\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 clientMutationId?: Maybe;\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 name for a bpay payment. */\r\n BillerName?: Maybe;\r\n /** biller code for a bpay payment */\r\n Billercode?: 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\nexport type GenerateAuthSecretInput = {\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type GenerateAuthSecretResponse = {\r\n __typename?: 'GenerateAuthSecretResponse';\r\n AuthSecret?: Maybe;\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\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\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\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 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\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\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 GraphDocumentCategoryFilterInput = {\r\n Id?: InputMaybe;\r\n Name?: InputMaybe;\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\nexport type GroupedDateRangeInput = {\r\n DateRange?: InputMaybe;\r\n Period?: InputMaybe;\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 IndueCardActivateCardInput = {\r\n /** CardId to change status of */\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?: InputMaybe;\r\n};\r\n\r\nexport type IndueCardActivateCardResponse = {\r\n __typename?: 'IndueCardActivateCardResponse';\r\n /** Result from the response of the card activation */\r\n ActivateCardResult: Scalars['Boolean'];\r\n /** The card which was created */\r\n Card?: Maybe;\r\n /** Result from the response of the pin change */\r\n ChangePinResult: Scalars['Boolean'];\r\n /** Result from the response of the card change */\r\n Result: Scalars['Boolean'];\r\n Success: Scalars['Boolean'];\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?: InputMaybe;\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 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?: InputMaybe;\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?: InputMaybe;\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\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 Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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?: InputMaybe;\r\n};\r\n\r\nexport type IndueCardProvisionAppleWalletInput = {\r\n CardId: Scalars['Uuid'];\r\n /** Gets or sets the nonce. */\r\n Nonce?: InputMaybe;\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type IndueCardProvisionAppleWalletResponse = {\r\n __typename?: 'IndueCardProvisionAppleWalletResponse';\r\n ActivationData?: Maybe;\r\n AuthenticationData?: Maybe;\r\n PrimaryAccountNumberPrefix?: Maybe;\r\n};\r\n\r\nexport type IndueCardProvisionGooglePayInput = {\r\n CardId: Scalars['Uuid'];\r\n ClientDeviceID?: InputMaybe;\r\n ClientWalletAccountID?: InputMaybe;\r\n ClientWalletProvider?: InputMaybe;\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type IndueCardProvisionGooglePayResponse = {\r\n __typename?: 'IndueCardProvisionGooglePayResponse';\r\n EncryptedPaymentInstrument?: Maybe;\r\n};\r\n\r\nexport enum IndueCardStatus {\r\n Active = 'ACTIVE',\r\n Activeoff = 'ACTIVEOFF',\r\n Cardcreated = 'CARDCREATED',\r\n Closed = 'CLOSED',\r\n Damaged = 'DAMAGED',\r\n Lost = 'LOST',\r\n Ordered = 'ORDERED',\r\n Other = 'OTHER',\r\n Restricted = 'RESTRICTED',\r\n Stolen = 'STOLEN'\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?: InputMaybe;\r\n};\r\n\r\nexport type Instrument = {\r\n __typename?: 'Instrument';\r\n /** account with the highest arrears. */\r\n AccountWithHighestArrearsDays?: Maybe;\r\n Accounts?: 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?: InputMaybe;\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 /** Id of the account */\r\n Id?: InputMaybe;\r\n /** Number of the account */\r\n Number?: InputMaybe;\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?: InputMaybe;\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 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 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 LocalConfig = {\r\n __typename?: 'LocalConfig';\r\n allowOnlinePasswordReset: Scalars['Boolean'];\r\n currentTheme?: Maybe;\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 LoginInput = {\r\n ApplicationInstance?: InputMaybe;\r\n ClientVersionNumber?: InputMaybe;\r\n /** Set to true if you'd like a trusted device token to be returned after login */\r\n GenerateTrustedDeviceToken?: InputMaybe;\r\n Password?: InputMaybe;\r\n Referrer?: InputMaybe;\r\n RemoteClientIPAddress?: InputMaybe;\r\n TwoFactorToken?: InputMaybe;\r\n UserAgentHeader?: InputMaybe;\r\n Username?: InputMaybe;\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?: InputMaybe;\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 Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n TrustedDeviceToken?: Maybe;\r\n UserSession?: Maybe;\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type LoginV2Input = {\r\n /** The application name/version number */\r\n ClientVersionNumber?: InputMaybe;\r\n /** Set to true if you'd like a trusted device token to be returned after login */\r\n GenerateTrustedDeviceToken?: InputMaybe;\r\n /** If logged in with a temporary password then a new password must be specified */\r\n NewPassword?: InputMaybe;\r\n OnBehalfOfUsername?: InputMaybe;\r\n /** The client's password */\r\n Password: Scalars['String'];\r\n /** You can optionally override the referrer here */\r\n Referrer?: InputMaybe;\r\n /** You may optionally supply the user's IP Address */\r\n RemoteClientIPAddress?: InputMaybe;\r\n /** If logging into an account that requires 2FA then the token must be provided here */\r\n TwoFactorToken?: InputMaybe;\r\n /** You can optionally override the user agent here */\r\n UserAgentHeader?: InputMaybe;\r\n /** The client's username */\r\n Username: Scalars['String'];\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 IsUsingGoogleAuth: Scalars['Boolean'];\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 enum LoginV3AuthError {\r\n /** The username or password is invalid */\r\n Invalidcredentials = 'INVALIDCREDENTIALS',\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 provided new password is invalid. Check the AuthErrorDescription field for more information */\r\n Newpasswordinvalid = 'NEWPASSWORDINVALID',\r\n /** The password has expired */\r\n Passwordexpired = 'PASSWORDEXPIRED',\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 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 LookBackDaysInput = {\r\n Days?: InputMaybe;\r\n};\r\n\r\nexport type MfaType = {\r\n __typename?: 'MfaType';\r\n IsEmailTransport: Scalars['Boolean'];\r\n IsSmsTransport: Scalars['Boolean'];\r\n Name?: Maybe;\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\nexport enum MultiFactorResult {\r\n /** Supplied mfa request is incorrect, expired, or otherwise invalid */\r\n Invalid = 'INVALID',\r\n /** Mfa is not enabled for this profile */\r\n Notenabled = 'NOTENABLED',\r\n /** Mfa succeeded */\r\n Success = 'SUCCESS'\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 /** Archive the specified SecureMessage */\r\n archiveSecureMessage?: 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 changeElectronicCommsStatus?: Maybe;\r\n changeMarketingCommsStatus?: 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 /** Disables authenticator for profile */\r\n disableProfileAuthenticator?: 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 /** Enables authenticator for profile */\r\n enableProfileAuthenticator?: Maybe;\r\n /** Generate a secret for an authenticator */\r\n generateAuthSecret?: Maybe;\r\n /** Activates an indue card and sets new pin */\r\n indueActivateCard?: 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 /** Send Outgoing NPP Payment */\r\n nPPOutgoingPayment?: Maybe;\r\n partyPersonalDetails?: Maybe;\r\n /** Update the account information associated with the specified PayID */\r\n payIDAccountUpdate?: Maybe;\r\n /** Deregister the specified PayID */\r\n payIDDeregistration?: Maybe;\r\n /** Disable the specified PayID */\r\n payIDDisable?: Maybe;\r\n /** Enable the specified PayID */\r\n payIDEnable?: Maybe;\r\n /** Update the name associated with the specified PayID */\r\n payIDNameUpdate?: Maybe;\r\n /** Register the specified PayID */\r\n payIDRegistration?: Maybe;\r\n provisionAppleWallet?: Maybe;\r\n provisionGooglePay?: Maybe;\r\n /** Read the specified SecureMessage */\r\n readSecureMessage?: 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 /** Create a secure message */\r\n requestNewSecureMessage?: Maybe;\r\n /** Create a secure message */\r\n requestNewSecureReply?: 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 setPartyPaymentLimit?: 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 MutationArchiveSecureMessageArgs = {\r\n input: ArchiveSecureMessageInput;\r\n};\r\n\r\n\r\nexport type MutationAssignAccountCategoriesArgs = {\r\n input?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\n\r\nexport type MutationCategoriseProfileAccountsArgs = {\r\n input?: InputMaybe;\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 MutationChangeElectronicCommsStatusArgs = {\r\n input: ChangeElectronicCommsStatusInput;\r\n};\r\n\r\n\r\nexport type MutationChangeMarketingCommsStatusArgs = {\r\n input: ChangeMarketingCommsStatusInput;\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 MutationDisableProfileAuthenticatorArgs = {\r\n input: DisableProfileAuthenticatorInput;\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 MutationEnableProfileAuthenticatorArgs = {\r\n input: EnableProfileAuthenticatorInput;\r\n};\r\n\r\n\r\nexport type MutationGenerateAuthSecretArgs = {\r\n input: GenerateAuthSecretInput;\r\n};\r\n\r\n\r\nexport type MutationIndueActivateCardArgs = {\r\n input: IndueCardActivateCardInput;\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 MutationNPpOutgoingPaymentArgs = {\r\n input: NppOutgoingPaymentInput;\r\n};\r\n\r\n\r\nexport type MutationPartyPersonalDetailsArgs = {\r\n input: PartyPersonalDetailsInput;\r\n};\r\n\r\n\r\nexport type MutationPayIdAccountUpdateArgs = {\r\n input: PayIdAccountUpdateInput;\r\n};\r\n\r\n\r\nexport type MutationPayIdDeregistrationArgs = {\r\n input: PayIdDeregistrationInput;\r\n};\r\n\r\n\r\nexport type MutationPayIdDisableArgs = {\r\n input: PayIdDisableInput;\r\n};\r\n\r\n\r\nexport type MutationPayIdEnableArgs = {\r\n input: PayIdEnableInput;\r\n};\r\n\r\n\r\nexport type MutationPayIdNameUpdateArgs = {\r\n input: PayIdNameUpdateInput;\r\n};\r\n\r\n\r\nexport type MutationPayIdRegistrationArgs = {\r\n input: PayIdRegistrationInput;\r\n};\r\n\r\n\r\nexport type MutationProvisionAppleWalletArgs = {\r\n input: IndueCardProvisionAppleWalletInput;\r\n};\r\n\r\n\r\nexport type MutationProvisionGooglePayArgs = {\r\n input: IndueCardProvisionGooglePayInput;\r\n};\r\n\r\n\r\nexport type MutationReadSecureMessageArgs = {\r\n input: ReadSecureMessageInput;\r\n};\r\n\r\n\r\nexport type MutationRemoveAccountFromCategoryArgs = {\r\n input?: InputMaybe;\r\n};\r\n\r\n\r\nexport type MutationReorderProfileAccountsArgs = {\r\n input?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\n\r\nexport type MutationRequestNewSecureMessageArgs = {\r\n input: RequestNewSecureMessageInput;\r\n};\r\n\r\n\r\nexport type MutationRequestNewSecureReplyArgs = {\r\n input: RequestNewSecureReplyInput;\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 MutationSetPartyPaymentLimitArgs = {\r\n input: PartyPaymentLimitInput;\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?: InputMaybe;\r\n};\r\n\r\nexport type MutationResponse = {\r\n Code: Scalars['String'];\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n};\r\n\r\nexport type NppOutgoingPaymentInput = {\r\n /** The Capital AccountId for the payer, not required if PayIDFromId is supplied */\r\n AccountFromId?: InputMaybe;\r\n /** The payment amount */\r\n Amount: Scalars['Decimal'];\r\n /** The Capital PartyId for the payer, not required if PayIDFromId is supplied */\r\n PartyFromId?: InputMaybe;\r\n /** The NPPPayID Id for the from account, if this is not supplied both the AccountFromId and PartyFromId should be supplied */\r\n PayIDFromId?: InputMaybe;\r\n /** The PayID type, eg. EMAL or TELI */\r\n PayIDToType?: InputMaybe;\r\n /** The PayID value, eg. email address or phone number */\r\n PayIDToValue?: InputMaybe;\r\n /** If not using a PayID for the 'To' account then their BSB number should be supplied */\r\n PayToAccountBSB?: InputMaybe;\r\n /** If not using a PayID for the 'To' account then their Account number should be supplied */\r\n PayToAccountNumber?: InputMaybe;\r\n /** Indicates whether we are using a PayID or Account Number + BSB */\r\n UsePayIDTo: Scalars['Boolean'];\r\n};\r\n\r\nexport type NppOutgoingPaymentMutationResponse = {\r\n __typename?: 'NPPOutgoingPaymentMutationResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport enum NppPayIdType {\r\n Aubn = 'AUBN',\r\n Emal = 'EMAL',\r\n Orgn = 'ORGN',\r\n Teli = 'TELI'\r\n}\r\n\r\nexport enum NppStatusCode {\r\n Acti = 'ACTI',\r\n Disa = 'DISA',\r\n Dreg = 'DREG',\r\n Port = 'PORT'\r\n}\r\n\r\nexport type NewBankAccountInput = {\r\n /** bank identifier for a new bank account. */\r\n NewBankAccountIdentifier?: InputMaybe;\r\n /** bank account name for a new bank account. */\r\n NewBankAccountName?: InputMaybe;\r\n /** bank account number for a new bank account. */\r\n NewBankAccountNumber?: InputMaybe;\r\n /** a bank account suffix for a new bank account. */\r\n NewBankAccountSuffix?: InputMaybe;\r\n};\r\n\r\nexport type Note = {\r\n __typename?: 'Note';\r\n CreatedBy: Scalars['Uuid'];\r\n CreatedOn: Scalars['DateTime'];\r\n Id: Scalars['Uuid'];\r\n Party: Scalars['Uuid'];\r\n Text: Scalars['String'];\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\nexport type Party = {\r\n __typename?: 'Party';\r\n AcceptsAdvertising: Scalars['Boolean'];\r\n Addresses?: Maybe>>;\r\n BpayBillerHistory?: Maybe>>;\r\n Contacts?: Maybe>>;\r\n CustomFields?: Maybe>>;\r\n Documents?: Maybe>>;\r\n EntityType?: 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 SearchName?: Maybe;\r\n};\r\n\r\n\r\nexport type PartyDocumentsArgs = {\r\n where?: InputMaybe;\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\n/** Input for querying the party associations for an account, supply either an Id or Number */\r\nexport type PartyAssociationByAccountInput = {\r\n /** Id of the account */\r\n Id?: InputMaybe;\r\n /** Number of the account */\r\n Number?: InputMaybe;\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?: InputMaybe;\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\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 PartyPaymentLimitInput = {\r\n /** The bpay limit */\r\n BpayLimit: Scalars['Decimal'];\r\n /** The date that the payment limit is valid to */\r\n EffectiveTo?: InputMaybe;\r\n /** The pay anyone limit */\r\n PayAnyoneLimit: Scalars['Decimal'];\r\n /** The redraw limit */\r\n RedrawLimit: Scalars['Decimal'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type PartyPaymentLimitResponse = {\r\n __typename?: 'PartyPaymentLimitResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type PartyPersonalDetailsInput = {\r\n PreferredCorrespondenceMethod?: InputMaybe;\r\n TwoFactorToken?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type PartyPersonalDetailsResponse = {\r\n __typename?: 'PartyPersonalDetailsResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n PreferredCorrespondenceMethod?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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 PayId = {\r\n __typename?: 'PayID';\r\n Account: Account;\r\n AccountOwnerName?: Maybe;\r\n Id: Scalars['Uuid'];\r\n PartyId: Scalars['Uuid'];\r\n PayIDName?: Maybe;\r\n PayIDType: NppPayIdType;\r\n PayIDValue: Scalars['String'];\r\n Status: NppStatusCode;\r\n TermsAccepted: Scalars['Boolean'];\r\n};\r\n\r\nexport type PayIdAccountUpdateInput = {\r\n /** The Capital Account number to be associated with the PayID */\r\n AccountNumber: Scalars['String'];\r\n /** The full legal name of the Account owner */\r\n AccountOwnerName: Scalars['String'];\r\n /** The Capital Id of the PayID to update */\r\n NPPPayId: Scalars['Uuid'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type PayIdAvailabilityInput = {\r\n /** The type of PayID used, eg. EMAL (email) or TELI (phone), etc. */\r\n PayIDType: NppPayIdType;\r\n /** The value of the PayID used, eg. an email address or phone number, etc. */\r\n PayIDValue: 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?: InputMaybe;\r\n};\r\n\r\nexport type PayIdAvailabilityResponse = {\r\n __typename?: 'PayIDAvailabilityResponse';\r\n Code?: Maybe;\r\n /** Indicates if the requested Pay ID is available */\r\n IsAvailable: Scalars['Boolean'];\r\n Message?: Maybe;\r\n /** Indicates when the Pay ID was previously registered if it has been registered before */\r\n RegisteredDate?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type PayIdDeregistrationInput = {\r\n /** The Capital Id of the PayID to deregister */\r\n NPPPayId: Scalars['Uuid'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type PayIdDisableInput = {\r\n /** The Capital Id of the PayID to disable */\r\n NPPPayId: Scalars['Uuid'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type PayIdEnableInput = {\r\n /** The Capital Id of the PayID to enable */\r\n NPPPayId: Scalars['Uuid'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type PayIdMutationResponse = {\r\n __typename?: 'PayIDMutationResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type PayIdNameUpdateInput = {\r\n /** The Capital Id of the PayID for name update */\r\n NPPPayId: Scalars['Uuid'];\r\n /** The Name that the PayID will be updated to */\r\n Name: Scalars['String'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type PayIdRegistrationInput = {\r\n /** The Capital Account Number to be associated with the PayID */\r\n AccountNumber?: InputMaybe;\r\n /** The full legal name of the Account owner */\r\n AccountOwnerName?: InputMaybe;\r\n /** The Name associated with the PayID */\r\n Name: Scalars['String'];\r\n /** The Capital Party Id to be associated with the PayID */\r\n PartyId: Scalars['Uuid'];\r\n /** The type of PayID to be used, eg. EMAL (email) or TELI (phone), etc. */\r\n PayIDType: NppPayIdType;\r\n /** The value of the PayID to be used, eg. an email address or phone number, etc. */\r\n PayIDValue: Scalars['String'];\r\n /** Indicates if the terms have been accepted */\r\n TermsAccepted: Scalars['Boolean'];\r\n /** Two Factor Token is required if MFA has been enabled otherwise can be left empty */\r\n TwoFactorToken?: InputMaybe;\r\n};\r\n\r\nexport type PayIdResolutionInput = {\r\n /** The type of PayID to resolve, eg. EMAL (email) or TELI (phone), etc. */\r\n PayIDType: NppPayIdType;\r\n /** The value of the PayID to resolve, eg. an email address or phone number, etc. */\r\n PayIDValue: 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?: InputMaybe;\r\n};\r\n\r\nexport type PayIdResolutionResponse = {\r\n __typename?: 'PayIDResolutionResponse';\r\n /** The Identification of the account associated with the PayID */\r\n AccountIdentification?: Maybe;\r\n /** The Issuer of the account identification for the PayID */\r\n AccountIssuer?: Maybe;\r\n /** The full legal name of the Account owner associated with the PayID */\r\n AccountOwnerName?: Maybe;\r\n /** The Identification Scheme of the account associated with the PayID */\r\n AccountScheme?: Maybe;\r\n /** The Servicer of the account associated with the PayID */\r\n AccountServicer?: Maybe;\r\n Code?: Maybe;\r\n /** The date that the PayID was last updated */\r\n LastUpdatedDate?: Maybe;\r\n Message?: Maybe;\r\n /** The name associated with the resolved PayID */\r\n Name?: Maybe;\r\n /** The type of the resolved PayID, eg. EMAL (email) or TELI (phone), etc. */\r\n PayIDType: NppPayIdType;\r\n /** The value of the resolved PayID, eg. an email address or phone number, etc. */\r\n PayIDValue?: Maybe;\r\n /** The date that the PayID was first registered */\r\n RegisteredDate?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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 enum PreferredContactTime {\r\n Afterhours = 'AFTERHOURS',\r\n Anytime = 'ANYTIME',\r\n Businesshours = 'BUSINESSHOURS',\r\n Morning = 'MORNING',\r\n Never = 'NEVER'\r\n}\r\n\r\nexport enum PreferredCorrespondanceType {\r\n Email = 'EMAIL',\r\n Mail = 'MAIL',\r\n Phone = 'PHONE',\r\n Sms = 'SMS'\r\n}\r\n\r\nexport enum PrivacyLevel {\r\n Private = 'PRIVATE',\r\n Public = 'PUBLIC',\r\n Restricted = 'RESTRICTED'\r\n}\r\n\r\n/** Profile Specific Category, Either Id or Name must be supplied */\r\nexport type ProfileAccountCategoryInput = {\r\n Id?: InputMaybe;\r\n Name?: InputMaybe;\r\n Ordering?: InputMaybe;\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 ProfileCategoryDeletionInput = {\r\n Id?: InputMaybe;\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/** 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 /** Retrieve Electronic Commumication Status details for PartyId */\r\n electronicComms?: 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 /** Retrieve the redraw/payanyone limits for an account belonging to a user */\r\n partyLimits?: Maybe;\r\n /** Gets the Password Validation rules for an application */\r\n passwordValidatorByApplication?: Maybe;\r\n /** Checks if the specified PayID is available for registration */\r\n payIDAvailability?: Maybe;\r\n /** Resolves information on the specific PayID if available */\r\n payIDResolution?: Maybe;\r\n /** Will retrieve all Pay IDs associated with the logged on user's party */\r\n payIDsByParty?: Maybe>>;\r\n /** Get a secure message item by ID */\r\n secureMessageById?: Maybe;\r\n /** Gets all secure message types */\r\n secureMessageTypes?: Maybe>>;\r\n /** Get secure messages associated with the logged on user's profile */\r\n secureMessagesByParty?: Maybe;\r\n statementsByPartyId?: Maybe>>;\r\n /** Get To Do Item Types filtered by the provided parameters */\r\n toDoItemTypes?: Maybe>>;\r\n /** Get a todo item by ID */\r\n todoItemById?: Maybe;\r\n /** Get all transaction categories. */\r\n transactionCategories?: Maybe>>;\r\n /** Get Transactions on an Account */\r\n transactionsByAccount?: Maybe;\r\n transferAccountsByParty?: 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?: InputMaybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryAccountLimitsArgs = {\r\n accountId?: InputMaybe;\r\n filter?: InputMaybe;\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?: InputMaybe;\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?: InputMaybe;\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 QueryPayIdAvailabilityArgs = {\r\n input: PayIdAvailabilityInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryPayIdResolutionArgs = {\r\n input: PayIdResolutionInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QuerySecureMessageByIdArgs = {\r\n id: Scalars['Uuid'];\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryToDoItemTypesArgs = {\r\n input: ToDoItemTypesInput;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryTodoItemByIdArgs = {\r\n id: Scalars['Uuid'];\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryTransactionsByAccountArgs = {\r\n accountId: Scalars['Uuid'];\r\n after?: InputMaybe;\r\n first?: InputMaybe;\r\n};\r\n\r\n\r\n/** Schema */\r\nexport type QueryUserNotificationInteractionsArgs = {\r\n input?: InputMaybe;\r\n skip?: InputMaybe;\r\n take?: InputMaybe;\r\n};\r\n\r\nexport type ReadSecureMessageInput = {\r\n /** The Capital Id of the SecureMessage to mark as read */\r\n SecureMessageId: Scalars['Uuid'];\r\n};\r\n\r\nexport type ReadSecureMessageResponse = {\r\n __typename?: 'ReadSecureMessageResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\n/** Method to determine when to stop the recurrence */\r\nexport enum RecurrenceEndEnum {\r\n Bydate = 'BYDATE',\r\n Never = 'NEVER',\r\n Numberofocurrences = 'NUMBEROFOCURRENCES',\r\n Once = 'ONCE'\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?: InputMaybe;\r\n};\r\n\r\nexport type RemoveAccountFromCategoryResponse = {\r\n __typename?: 'RemoveAccountFromCategoryResponse';\r\n Code?: Maybe;\r\n Failed?: Maybe>>;\r\n Message?: Maybe;\r\n RemovedCategories?: Maybe>>;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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?: InputMaybe;\r\n};\r\n\r\nexport type ReorderProfileAccountsResponse = {\r\n __typename?: 'ReorderProfileAccountsResponse';\r\n AppliedOrdering?: Maybe>>;\r\n Code?: Maybe;\r\n FailedOrdering?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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 /** description for the deposit transaction. */\r\n DepositDescription?: InputMaybe;\r\n /** The date the recurrence will end on or after. */\r\n EndingOn?: InputMaybe;\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?: InputMaybe;\r\n /** When the recurring transfer ends, ie Once, ByDate, Never, NumberOfOcurrences */\r\n RecurrenceEnd?: InputMaybe;\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?: InputMaybe;\r\n /** Id of the Inter Instrument input to correlate with response */\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type RequestInterInstrumentTransferResponse = {\r\n __typename?: 'RequestInterInstrumentTransferResponse';\r\n Code?: Maybe;\r\n FundsTransfer: FundsTransfer;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\n/** Input to request to begin a new Multi Factor Authorisation */\r\nexport type RequestMultiFactorAuthorisationInput = {\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type RequestMultiFactorAuthorisationResponse = {\r\n __typename?: 'RequestMultiFactorAuthorisationResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\n/** Input for creating a new secure message */\r\nexport type RequestNewSecureMessageInput = {\r\n /** The account attached to the TDI message. */\r\n AccountNumber?: InputMaybe;\r\n /** The initially sent message. */\r\n Message: Scalars['String'];\r\n /** ToDoItemTypeId of the secure message. */\r\n ToDoItemTypeId: Scalars['Uuid'];\r\n /** Id of the secure message input to correlate with response */\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type RequestNewSecureMessageResponse = {\r\n __typename?: 'RequestNewSecureMessageResponse';\r\n Code?: Maybe;\r\n GraphSecureMessage?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\n/** Input for creating a new secure message */\r\nexport type RequestNewSecureReplyInput = {\r\n /** Reply body of the secure message. */\r\n Body: Scalars['String'];\r\n /** The Id of the secure message being replied to */\r\n SecureMessageId: Scalars['String'];\r\n /** Id of the secure message input to correlate with response */\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type RequestNewSecureReplyResponse = {\r\n __typename?: 'RequestNewSecureReplyResponse';\r\n Code?: Maybe;\r\n GraphSecureMessage?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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?: InputMaybe;\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?: InputMaybe;\r\n /** description for the deposit transaction. */\r\n DepositDescription?: InputMaybe;\r\n /** The date the recurrence will end on or after. */\r\n EndingOn?: InputMaybe;\r\n /** whether the transfer is for a fixed amount. */\r\n FixedAmountOption?: InputMaybe;\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?: InputMaybe;\r\n /** whether the transfer is for the minimum installment. */\r\n MinimumAmount?: InputMaybe;\r\n /** whether the transfer is for the minimum installment plus an amount. */\r\n MinimumAmountPlus?: InputMaybe;\r\n NewBankAccount?: InputMaybe;\r\n /** number of repeats. */\r\n NumberOfTimesAmount?: InputMaybe;\r\n /** percentage of installment amount. */\r\n PercentageOfInstalment?: InputMaybe;\r\n RecurrenceEnd?: InputMaybe;\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?: InputMaybe;\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?: InputMaybe;\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?: InputMaybe;\r\n /** Indicate that the transfer will use real time payments (ie. NPP) */\r\n UseNPP?: InputMaybe;\r\n /** whether a new bank account is being used for a pay anyone transfer type. */\r\n UseNewBankAccount?: InputMaybe;\r\n /** whether the transfer will use a percentage of the installments. */\r\n UsePercentageOfInstalment?: InputMaybe;\r\n /** description for the withdrawal transaction. */\r\n WithdrawalDescription?: InputMaybe;\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type RequestPayAnyoneTransferResponse = {\r\n __typename?: 'RequestPayAnyoneTransferResponse';\r\n Code?: Maybe;\r\n FundsTransfer?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: 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?: InputMaybe;\r\n};\r\n\r\nexport type RequestTrustedDeviceResponse = {\r\n __typename?: 'RequestTrustedDeviceResponse';\r\n Token?: Maybe;\r\n};\r\n\r\nexport type ResetPasswordInput = {\r\n ContactDetails?: InputMaybe;\r\n /** Method to receive new password 'email' or 'sms' */\r\n ResetMethod?: InputMaybe;\r\n TwoFactorToken?: InputMaybe;\r\n Username?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type ResetPasswordResponse = {\r\n __typename?: 'ResetPasswordResponse';\r\n Code?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type SecureMessage = {\r\n __typename?: 'SecureMessage';\r\n DateArchived?: Maybe;\r\n DateRead?: Maybe;\r\n DateReplied?: Maybe;\r\n Id: Scalars['Uuid'];\r\n IsArchived: Scalars['Boolean'];\r\n IsRead: Scalars['Boolean'];\r\n IsReplied: Scalars['Boolean'];\r\n ProfileId: Scalars['Uuid'];\r\n ShortDescription?: Maybe;\r\n Subject?: Maybe;\r\n ToDoItem: ToDoItem;\r\n Type?: Maybe;\r\n};\r\n\r\nexport type SecureMessageContext = {\r\n __typename?: 'SecureMessageContext';\r\n SecureMessages?: Maybe>>;\r\n /** The number of currently unread messages */\r\n UnreadMessageCount: Scalars['Decimal'];\r\n};\r\n\r\nexport type SecureMessageType = {\r\n __typename?: 'SecureMessageType';\r\n Description: Scalars['String'];\r\n DisplayOrder: Scalars['Int'];\r\n Id: Scalars['Uuid'];\r\n IsAccount: Scalars['Boolean'];\r\n IsSystem: Scalars['Boolean'];\r\n Name: Scalars['String'];\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?: InputMaybe;\r\n /** User defined order for the account */\r\n Ordering?: InputMaybe;\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 StopPendingFundsTransferInput = {\r\n FundsTransferId: Scalars['Uuid'];\r\n StopOn?: InputMaybe;\r\n /** Id of the PayAnyone request to correlate with response */\r\n clientMutationId?: InputMaybe;\r\n};\r\n\r\nexport type StopPendingFundsTransferResponse = {\r\n __typename?: 'StopPendingFundsTransferResponse';\r\n Code?: Maybe;\r\n FundsTransfer?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport type StringFilterInput = {\r\n /** Where is equal to enum */\r\n _eq?: InputMaybe;\r\n /** Where enum is in list */\r\n _in?: InputMaybe>>;\r\n /** Where not equal to enum */\r\n _neq?: InputMaybe;\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?: InputMaybe;\r\n};\r\n\r\nexport type SuspendCardResponse = {\r\n __typename?: 'SuspendCardResponse';\r\n Code?: Maybe;\r\n Data?: Maybe;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n clientMutationId?: Maybe;\r\n};\r\n\r\nexport enum TaskFrequencyPeriod {\r\n Annually = 'ANNUALLY',\r\n Daily = 'DAILY',\r\n Dayofmonth = 'DAYOFMONTH',\r\n Firstofmonth = 'FIRSTOFMONTH',\r\n Fortnightly = 'FORTNIGHTLY',\r\n Lastofmonth = 'LASTOFMONTH',\r\n Monthly = 'MONTHLY',\r\n Once = 'ONCE',\r\n Quarterly = 'QUARTERLY',\r\n Quarterlyfinancialyear = 'QUARTERLYFINANCIALYEAR',\r\n Schedule = 'SCHEDULE',\r\n Sixmonthly = 'SIXMONTHLY',\r\n Weekday = 'WEEKDAY',\r\n Weekly = 'WEEKLY'\r\n}\r\n\r\nexport type ToDoItem = {\r\n __typename?: 'ToDoItem';\r\n AccountNumber?: Maybe;\r\n Id: Scalars['Uuid'];\r\n Messages: Array;\r\n State: ToDoItemState;\r\n Text?: Maybe;\r\n Type: ToDoItemType;\r\n WithId?: Maybe;\r\n};\r\n\r\nexport enum ToDoItemState {\r\n Cancelled = 'CANCELLED',\r\n Completed = 'COMPLETED',\r\n Completedunsuccessfully = 'COMPLETEDUNSUCCESSFULLY',\r\n Created = 'CREATED',\r\n Suspended = 'SUSPENDED',\r\n Takenup = 'TAKENUP'\r\n}\r\n\r\nexport type ToDoItemType = {\r\n __typename?: 'ToDoItemType';\r\n Description: Scalars['String'];\r\n Id: Scalars['Uuid'];\r\n SecureMessageType?: Maybe;\r\n};\r\n\r\nexport type ToDoItemTypesInput = {\r\n /** Provide to filter on whether to do item type is for secure messages */\r\n IsSecureMessage?: InputMaybe;\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?: InputMaybe;\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 TransferAccount = {\r\n __typename?: 'TransferAccount';\r\n AccountCategory?: Maybe;\r\n AccountId?: Maybe;\r\n AccountIsValidForNPP: Scalars['Boolean'];\r\n AccountName: Scalars['String'];\r\n AccountNumber?: Maybe;\r\n AllowBPay: Scalars['Boolean'];\r\n AllowOperate: Scalars['Boolean'];\r\n AllowPayAnyone: Scalars['Boolean'];\r\n AllowRead: Scalars['Boolean'];\r\n AllowRedraw: Scalars['Boolean'];\r\n BSB?: Maybe;\r\n BillerCode?: Maybe;\r\n CapitalAccountNumber?: Maybe>>;\r\n FunderAllowsNPP: Scalars['Boolean'];\r\n InstrumentId?: Maybe;\r\n IsBPay: Scalars['Boolean'];\r\n IsBankAccount: Scalars['Boolean'];\r\n IsDirectCredit: Scalars['Boolean'];\r\n IsDirectDebit: Scalars['Boolean'];\r\n IsExternal: Scalars['Boolean'];\r\n IsNominatedAccount: Scalars['Boolean'];\r\n MinimumDirectDebitDate: Scalars['DateTime'];\r\n RedrawBalance?: Maybe;\r\n};\r\n\r\nexport type UpdateProfileAccountCategoriesInput = {\r\n /** User defined order for the account */\r\n Updates: 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?: InputMaybe;\r\n};\r\n\r\nexport type UpdateProfileAccountCategoriesResponse = {\r\n __typename?: 'UpdateProfileAccountCategoriesResponse';\r\n Code?: Maybe;\r\n Failed?: Maybe>>;\r\n Message?: Maybe;\r\n Success: Scalars['Boolean'];\r\n Updated?: Maybe>>;\r\n clientMutationId?: Maybe;\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\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 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 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 /** The maximum BPay payment limit allow for the application instance */\r\n BPayLimitMax: Scalars['Decimal'];\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 /** Indicates whether the profile is using authentication, note that this can be Google Auth or any other authenticator. */\r\n IsUsingGoogleAuth: Scalars['Boolean'];\r\n LastLoginAttempt: Scalars['DateTime'];\r\n LastLoginFrom?: Maybe;\r\n LastPasswordChange: Scalars['DateTime'];\r\n LastTermsAcceptance?: Maybe;\r\n LoginAttempts?: Maybe>>;\r\n /** Indicates whether Multifactor authentication is enabled for the application instance */\r\n MFAEnforced: Scalars['Boolean'];\r\n /** The profiles MFAType, representing if SMS or email is selected for MFA. */\r\n MFAType?: Maybe;\r\n Notifications?: Maybe>>;\r\n Party?: Maybe;\r\n /** Indicates whether payment limits are using the new method where linked to a party instead of profile */\r\n PartyPaymentLimitsEnabled: Scalars['Boolean'];\r\n /** The maximum pay anyone payment limit allow for the application instance */\r\n PayAnyoneLimitMax: Scalars['Decimal'];\r\n ProfileCustomCategories?: Maybe>>;\r\n /** The maximum redraw payment limit allow for the application instance */\r\n RedrawLimitMax: Scalars['Decimal'];\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 number of currently unread messages */\r\n UnreadMessageCount: Scalars['Decimal'];\r\n /** The profile requires mfa / 2fa */\r\n UseMultiFactorAuth: Scalars['Boolean'];\r\n};\r\n\r\nexport type ValueFilterOfFileTypeInput = {\r\n /** Where equal to value */\r\n _eq?: InputMaybe;\r\n /** Where value is in list */\r\n _in?: InputMaybe>;\r\n /** Where not equal to value */\r\n _neq?: InputMaybe;\r\n};\r\n\r\nexport type ValueFilterOfGuidInput = {\r\n /** Where equal to value */\r\n _eq?: InputMaybe;\r\n /** Where value is in list */\r\n _in?: InputMaybe>;\r\n /** Where not equal to value */\r\n _neq?: InputMaybe;\r\n};\r\n\r\nexport type ValueFilterOfPrivacyLevelInput = {\r\n /** Where equal to value */\r\n _eq?: InputMaybe;\r\n /** Where value is in list */\r\n _in?: InputMaybe>;\r\n /** Where not equal to value */\r\n _neq?: InputMaybe;\r\n};\r\n\r\nexport type CurrentUserNotificationsQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type CurrentUserNotificationsQuery = { __typename?: 'Query', userNotifications?: Array<{ __typename?: 'InterestConversionNotification', Id: any, ConversionType?: string | undefined, ConversionDate?: Date | undefined, NewInstalmentFrequency?: string | undefined, Dismissed?: boolean | undefined, Account?: { __typename?: 'Account', InstrumentId?: any | undefined, Number?: string | undefined, Id: any } | undefined, NewInstalmentAmount?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined } | undefined> | undefined };\r\n\r\nexport type AccountByIdOrNumberQueryVariables = Exact<{\r\n idOrNumber: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type AccountByIdOrNumberQuery = { __typename?: 'Query', accountByIdOrNumber?: { __typename?: 'Account', Id: any, Number?: string | undefined, Description?: string | undefined, DisplayOrder?: number | undefined, InstrumentId?: any | undefined, LegacyNumber?: string | undefined, ProductType?: string | undefined, CurrentBalance?: number | undefined, Redraw?: number | undefined, ArrearsBalance?: number | undefined, InterestType?: string | undefined, CardAccount?: boolean | undefined, CardAvailable?: boolean | undefined, MonthlyInstalment?: number | undefined, NextInstalmentDue?: Date | undefined, OffsetAccount?: boolean | undefined, Rate?: number | undefined, Transactions?: Array<{ __typename?: 'AccountTransaction', Id: any, SequenceNumber?: string | undefined, TransactionNumber?: string | undefined, Processed: Date, Effective: Date, EffectiveDate: Date, TransactionType?: string | undefined, StatementText?: string | undefined, Increase?: number | undefined, Decrease?: number | undefined, Balance?: number | undefined, Note?: string | undefined, WasReversed?: boolean | undefined, WasDishonoured?: boolean | undefined, WasBackedOut?: boolean | undefined, WasWaived?: boolean | undefined, AppearsOnStatement?: boolean | undefined, CreatedOn: Date, IsPending?: boolean | undefined } | undefined> | undefined, Statements?: Array<{ __typename?: 'StatementDocument', Id: any, Number?: string | undefined, InstrumentId: any, AccountNumber?: string | undefined, AccountId: any, PartyId: any, ProcessedDate: Date, PeriodFrom: Date, PeriodTo: Date, FileId: any, Filename?: string | undefined, Type?: string | undefined, AdHoc?: boolean | undefined } | undefined> | undefined, Cards?: Array<{ __typename?: 'Card', Id: any, Number?: string | undefined, HolderRelationship?: string | undefined, State?: string | undefined, ExpiryDate: Date, Type?: string | undefined, NameOnCard?: string | undefined } | undefined> | undefined, CurrentUserAccountAuthority?: { __typename?: 'AccountAuthority', Id: any, BPay: boolean, Operate: boolean, PayAnyone: boolean, Redraw: boolean, View: boolean } | undefined } | undefined };\r\n\r\nexport type ChangeAccountDescriptionMutationVariables = Exact<{\r\n input: ChangeAccountDescriptionInput;\r\n}>;\r\n\r\n\r\nexport type ChangeAccountDescriptionMutation = { __typename?: 'Mutation', changeAccountDescription?: { __typename?: 'ChangeAccountDescriptionResponse', Code?: string | undefined, Message?: string | undefined, Success: boolean, Data?: { __typename?: 'Account', Id: any, Description?: string | undefined } | undefined } | undefined };\r\n\r\nexport type InstrumentAuthorityAccountsQueryVariables = Exact<{\r\n account: Scalars['String'];\r\n date?: InputMaybe;\r\n}>;\r\n\r\n\r\nexport type InstrumentAuthorityAccountsQuery = { __typename?: 'Query', instrumentByAccount?: { __typename?: 'Instrument', Id: any, Accounts?: Array<{ __typename?: 'Account', Id: any, Number?: string | undefined, Description?: string | undefined, Redraw?: number | undefined, CurrentBalance?: number | undefined, CurrentUserAccountAuthority?: { __typename?: 'AccountAuthority', Id: any, BPay: boolean, Operate: boolean, PayAnyone: boolean, Redraw: boolean, View: boolean } | undefined } | undefined> | undefined } | undefined, accountLimits?: Array<{ __typename?: 'EffectiveAccountLimit', Id?: string | undefined, EffectiveDate: Date, Limits?: { __typename?: 'AccountLimit', DailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DailyBPayLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyBPayLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined } | undefined } | undefined> | undefined };\r\n\r\nexport type BpayBillerDetailsQueryVariables = Exact<{\r\n input: BpayBillerDetailsInput;\r\n}>;\r\n\r\n\r\nexport type BpayBillerDetailsQuery = { __typename?: 'Query', bpayBiller?: { __typename?: 'BpayBiller', Id?: string | undefined, Billercode: any, BillerDescription?: string | undefined } | undefined };\r\n\r\nexport type BpayBillerHistoryQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type BpayBillerHistoryQuery = { __typename?: 'Query', userSession?: { __typename?: 'UserSession', Id: any, Party?: { __typename?: 'Party', Id: any, BpayBillerHistory?: Array<{ __typename?: 'BpayBiller', Id?: string | undefined, Billercode: any, BillerDescription?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, HasPendingTransfer?: boolean | undefined } | undefined> | undefined } | undefined } | undefined };\r\n\r\nexport type BpayTransferRequestMutationVariables = Exact<{\r\n input: BpayTransferRequestInput;\r\n}>;\r\n\r\n\r\nexport type BpayTransferRequestMutation = { __typename?: 'Mutation', bpayTransferRequest?: { __typename?: 'BpayTransferRequestResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, FundsTransfer?: { __typename?: 'FundsTransfer', Id: any, ApplicationInstance?: string | undefined, ReceiptNumber?: string | undefined, AccountId?: any | undefined, TransferType?: any | undefined, TaskId?: any | undefined, TransferTypeDescription?: string | undefined, StartingOn?: Date | undefined, Frequency?: string | undefined, FurtherNotice?: boolean | undefined, EndingOn?: Date | undefined, FromAccountId?: any | undefined, FromAccountDescription?: string | undefined, ToAccountId?: any | undefined, ToAccountDescription?: string | undefined, Billercode?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, Amount?: number | undefined, RegularPayment?: boolean | undefined, NextScheduledDate?: Date | undefined, DepositDescription?: string | undefined, WithdrawalDescription?: string | undefined, NumberOfTimes?: boolean | undefined, SpecifiedDate?: boolean | undefined } | undefined, ValidationErrors?: Array<{ __typename?: 'ErrorMessage', Code?: string | undefined, Message?: string | undefined } | undefined> | undefined } | undefined };\r\n\r\nexport type StopPendingFundsTransferMutationVariables = Exact<{\r\n input: StopPendingFundsTransferInput;\r\n}>;\r\n\r\n\r\nexport type StopPendingFundsTransferMutation = { __typename?: 'Mutation', stopPendingFundsTransfer?: { __typename?: 'StopPendingFundsTransferResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, FundsTransfer?: { __typename: 'FundsTransfer', Id: any, ApplicationInstance?: string | undefined, ReceiptNumber?: string | undefined, AccountId?: any | undefined, TransferType?: any | undefined, TaskId?: any | undefined, TransferTypeDescription?: string | undefined, StartingOn?: Date | undefined, Frequency?: string | undefined, FurtherNotice?: boolean | undefined, EndingOn?: Date | undefined, FromAccountId?: any | undefined, FromAccountDescription?: string | undefined, ToAccountId?: any | undefined, ToAccountDescription?: string | undefined, Billercode?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, Amount?: number | undefined, RegularPayment?: boolean | undefined, NextScheduledDate?: Date | undefined, DepositDescription?: string | undefined, WithdrawalDescription?: string | undefined, NumberOfTimes?: boolean | undefined, SpecifiedDate?: boolean | undefined } | undefined } | undefined };\r\n\r\nexport type CreateBpayBillerMutationVariables = Exact<{\r\n input: CreateBpayBillerInput;\r\n}>;\r\n\r\n\r\nexport type CreateBpayBillerMutation = { __typename?: 'Mutation', createBpayBiller?: { __typename?: 'CreateBpayBillerResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, NewBpayBiller?: { __typename?: 'BpayBiller', Id?: string | undefined, Billercode: any, BillerDescription?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, HasPendingTransfer?: boolean | undefined } | undefined } | undefined };\r\n\r\nexport type DeleteBpayPartyBillerMutationVariables = Exact<{\r\n input: DeleteBpayPartyBillerInput;\r\n}>;\r\n\r\n\r\nexport type DeleteBpayPartyBillerMutation = { __typename?: 'Mutation', deleteBpayPartyBiller?: { __typename?: 'DeleteBpayPartyBillerResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, PartyBillerHistoryId: any } | undefined };\r\n\r\nexport type BankBranchDetailsQueryVariables = Exact<{\r\n args: BankBranchDetailsInput;\r\n}>;\r\n\r\n\r\nexport type BankBranchDetailsQuery = { __typename?: 'Query', bankBranchLookup?: { __typename?: 'BankBranch', BankIdentifier?: string | undefined, BankName?: string | undefined, Description?: string | undefined } | undefined };\r\n\r\nexport type TransferLimitValidationQueryVariables = Exact<{\r\n accountId?: InputMaybe;\r\n date?: InputMaybe;\r\n}>;\r\n\r\n\r\nexport type TransferLimitValidationQuery = { __typename?: 'Query', accountLimits?: Array<{ __typename?: 'EffectiveAccountLimit', EffectiveDate: Date, Id?: string | undefined, Limits?: { __typename?: 'AccountLimit', RemainingDailyRedrawLimit?: { __typename?: 'Money', Amount: number, CurrencyCode?: string | undefined } | undefined, RemainingDailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyBPayLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined } | undefined } | undefined> | undefined, accountByIdOrNumber?: { __typename?: 'Account', Id: any, Redraw?: number | undefined } | undefined };\r\n\r\nexport type AccountFundsTransfersQueryVariables = Exact<{\r\n accountIdOrNumber: Scalars['String'];\r\n transactionFilter?: InputMaybe;\r\n}>;\r\n\r\n\r\nexport type AccountFundsTransfersQuery = { __typename?: 'Query', accountByIdOrNumber?: { __typename?: 'Account', Id: any, Number?: string | undefined, Description?: string | undefined, DisplayOrder?: number | undefined, InstrumentId?: any | undefined, LegacyNumber?: string | undefined, ProductType?: string | undefined, CurrentBalance?: number | undefined, Redraw?: number | undefined, InterestType?: string | undefined, CardAccount?: boolean | undefined, MonthlyInstalment?: number | undefined, NextInstalmentDue?: Date | undefined, PendingAccountFundsTransfers?: Array<{ __typename?: 'FundsTransfer', Id: any, ApplicationInstance?: string | undefined, ReceiptNumber?: string | undefined, AccountId?: any | undefined, TransferType?: any | undefined, TaskId?: any | undefined, TransferTypeDescription?: string | undefined, StartingOn?: Date | undefined, Frequency?: string | undefined, FurtherNotice?: boolean | undefined, EndingOn?: Date | undefined, FromAccountId?: any | undefined, FromAccountDescription?: string | undefined, ToAccountId?: any | undefined, ToAccountDescription?: string | undefined, Billercode?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, Amount?: number | undefined, RegularPayment?: boolean | undefined, NextScheduledDate?: Date | undefined, DepositDescription?: string | undefined, WithdrawalDescription?: string | undefined, NumberOfTimes?: boolean | undefined, NumberOfTimesAmount?: number | undefined, RemainingNumberOfTimes?: number | undefined, SpecifiedDate?: boolean | undefined, CreatedOn?: Date | undefined } | undefined> | undefined, ProcessedAccountFundsTransfers?: Array<{ __typename?: 'FundsTransfer', Id: any, ApplicationInstance?: string | undefined, ReceiptNumber?: string | undefined, AccountId?: any | undefined, TransferType?: any | undefined, TaskId?: any | undefined, TransferTypeDescription?: string | undefined, StartingOn?: Date | undefined, Frequency?: string | undefined, FurtherNotice?: boolean | undefined, EndingOn?: Date | undefined, FromAccountId?: any | undefined, FromAccountDescription?: string | undefined, ToAccountId?: any | undefined, ToAccountDescription?: string | undefined, Billercode?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, Amount?: number | undefined, RegularPayment?: boolean | undefined, NextScheduledDate?: Date | undefined, DepositDescription?: string | undefined, WithdrawalDescription?: string | undefined, NumberOfTimes?: boolean | undefined, NumberOfTimesAmount?: number | undefined, RemainingNumberOfTimes?: number | undefined, SpecifiedDate?: boolean | undefined, CreatedOn?: Date | undefined } | undefined> | undefined, BankAccounts?: Array<{ __typename?: 'BankAccount', AccountName?: string | undefined, Id: any, BankIdentifierText?: string | undefined, BankIdentifierId?: any | undefined, AccountNumber?: string | undefined, Suffix?: string | undefined, Nominated?: boolean | undefined, HasDirectDebitAuthority?: boolean | undefined, HasDirectCreditAuthority?: boolean | undefined, IsPayAnyone?: boolean | undefined, BankName?: string | undefined } | undefined> | undefined, AccountLimits?: Array<{ __typename?: 'EffectiveAccountLimit', Id?: string | undefined, EffectiveDate: Date, Limits?: { __typename?: 'AccountLimit', DailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined } | undefined } | undefined> | undefined, CurrentUserAccountAuthority?: { __typename?: 'AccountAuthority', Id: any, BPay: boolean, Operate: boolean, PayAnyone: boolean, Redraw: boolean, View: boolean } | undefined } | undefined };\r\n\r\nexport type CreatePayAnyoneBankAccountMutationVariables = Exact<{\r\n input: CreatePayAnyoneBankAccountInput;\r\n}>;\r\n\r\n\r\nexport type CreatePayAnyoneBankAccountMutation = { __typename?: 'Mutation', createPayAnyoneBankAccount?: { __typename?: 'CreatePayAnyoneBankAccountResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, NewPartyBankAccount?: { __typename?: 'PartyBankAccount', Id: any, Description?: string | undefined, DirectCredit: boolean, DirectDebit: boolean, IsUsedByTransfer: boolean, PartyId: any, PayAnyone: boolean, Viewable?: boolean | undefined, BankAccount?: { __typename?: 'BankAccount', Id: any, AccountName?: string | undefined, AccountNumber?: string | undefined, BankIdentifierText?: string | undefined, BankName?: string | undefined, HasDirectCreditAuthority?: boolean | undefined, HasDirectDebitAuthority?: boolean | undefined, IsPayAnyone?: boolean | undefined } | undefined } | undefined } | undefined };\r\n\r\nexport type CurrentUserPartyBankAccountsQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type CurrentUserPartyBankAccountsQuery = { __typename?: 'Query', userSession?: { __typename?: 'UserSession', Id: any, Party?: { __typename?: 'Party', Id: any, PartyBankAccounts?: Array<{ __typename?: 'PartyBankAccount', Id: any, PartyId: any, Viewable?: boolean | undefined, PayAnyone: boolean, DirectCredit: boolean, DirectDebit: boolean, Bpay: boolean, Description?: string | undefined, Deleted: boolean, IsUsedByTransfer: boolean, IsPayWayCustomer: boolean, BankAccount?: { __typename?: 'BankAccount', AccountName?: string | undefined, BankIdentifierId?: any | undefined, BankIdentifierText?: string | undefined, AccountNumber?: string | undefined, Suffix?: string | undefined, Nominated?: boolean | undefined, HasDirectDebitAuthority?: boolean | undefined, HasDirectCreditAuthority?: boolean | undefined, IsPayAnyone?: boolean | undefined, BankName?: string | undefined, Id: any, HasPendingTransfer?: boolean | undefined } | undefined } | undefined> | undefined } | undefined } | undefined };\r\n\r\nexport type DeletePartyBankAccountMutationVariables = Exact<{\r\n input: DeletePartyBankAccountInput;\r\n}>;\r\n\r\n\r\nexport type DeletePartyBankAccountMutation = { __typename?: 'Mutation', deletePartyBankAccount?: { __typename?: 'DeletePartyBankAccountResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, PartyBankAccountId: any } | undefined };\r\n\r\nexport type RequestPayAnyoneTransferMutationVariables = Exact<{\r\n input: RequestPayAnyoneTransferInput;\r\n}>;\r\n\r\n\r\nexport type RequestPayAnyoneTransferMutation = { __typename?: 'Mutation', requestPayAnyoneTransfer?: { __typename?: 'RequestPayAnyoneTransferResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, FundsTransfer?: { __typename?: 'FundsTransfer', Id: any, ApplicationInstance?: string | undefined, ReceiptNumber?: string | undefined, AccountId?: any | undefined, TransferType?: any | undefined, TaskId?: any | undefined, TransferTypeDescription?: string | undefined, StartingOn?: Date | undefined, Frequency?: string | undefined, FurtherNotice?: boolean | undefined, EndingOn?: Date | undefined, FromAccountId?: any | undefined, FromAccountDescription?: string | undefined, ToAccountId?: any | undefined, ToAccountDescription?: string | undefined, Billercode?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, Amount?: number | undefined, RegularPayment?: boolean | undefined, NextScheduledDate?: Date | undefined, DepositDescription?: string | undefined, WithdrawalDescription?: string | undefined, NumberOfTimes?: boolean | undefined, SpecifiedDate?: boolean | undefined } | undefined } | undefined };\r\n\r\nexport type InstrumentByAccountIdQueryVariables = Exact<{\r\n account: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type InstrumentByAccountIdQuery = { __typename?: 'Query', instrumentByAccount?: { __typename?: 'Instrument', Id: any, Accounts?: Array<{ __typename?: 'Account', Id: any, Number?: string | undefined, Description?: string | undefined, Redraw?: number | undefined, CurrentBalance?: number | undefined, ProductType?: string | undefined, CurrentUserAccountAuthority?: { __typename?: 'AccountAuthority', Id: any, BPay: boolean, Operate: boolean, PayAnyone: boolean, Redraw: boolean, View: boolean } | undefined } | undefined> | undefined } | undefined };\r\n\r\nexport type AccountLimitQueryVariables = Exact<{\r\n accountId: Scalars['String'];\r\n date?: InputMaybe;\r\n}>;\r\n\r\n\r\nexport type AccountLimitQuery = { __typename?: 'Query', accountLimits?: Array<{ __typename?: 'EffectiveAccountLimit', Id?: string | undefined, EffectiveDate: Date, Limits?: { __typename?: 'AccountLimit', DailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined } | undefined } | undefined> | undefined };\r\n\r\nexport type PartyPaymentLimitMutationVariables = Exact<{\r\n input: PartyPaymentLimitInput;\r\n}>;\r\n\r\n\r\nexport type PartyPaymentLimitMutation = { __typename?: 'Mutation', setPartyPaymentLimit?: { __typename?: 'PartyPaymentLimitResponse', clientMutationId?: string | undefined, Code?: string | undefined, Message?: string | undefined, Success: boolean } | undefined };\r\n\r\nexport type RequestPayAnyoneTransferMutationMutationVariables = Exact<{\r\n input: RequestPayAnyoneTransferInput;\r\n}>;\r\n\r\n\r\nexport type RequestPayAnyoneTransferMutationMutation = { __typename?: 'Mutation', requestPayAnyoneTransfer?: { __typename?: 'RequestPayAnyoneTransferResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, FundsTransfer?: { __typename?: 'FundsTransfer', Id: any, ApplicationInstance?: string | undefined, ReceiptNumber?: string | undefined, AccountId?: any | undefined, TransferType?: any | undefined, TaskId?: any | undefined, TransferTypeDescription?: string | undefined, StartingOn?: Date | undefined, Frequency?: string | undefined, FurtherNotice?: boolean | undefined, EndingOn?: Date | undefined, FromAccountId?: any | undefined, FromAccountDescription?: string | undefined, ToAccountId?: any | undefined, ToAccountDescription?: string | undefined, Billercode?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, Amount?: number | undefined, RegularPayment?: boolean | undefined, NextScheduledDate?: Date | undefined, DepositDescription?: string | undefined, WithdrawalDescription?: string | undefined, NumberOfTimes?: boolean | undefined, SpecifiedDate?: boolean | undefined } | undefined } | undefined };\r\n\r\nexport type UpdatePendingAccountFundsTransfersFragmentFragment = { __typename: 'Account', Id: any, PendingAccountFundsTransfers?: Array<{ __typename?: 'FundsTransfer', Id: any, ApplicationInstance?: string | undefined, ReceiptNumber?: string | undefined, AccountId?: any | undefined, TransferType?: any | undefined, TaskId?: any | undefined, TransferTypeDescription?: string | undefined, StartingOn?: Date | undefined, Frequency?: string | undefined, FurtherNotice?: boolean | undefined, EndingOn?: Date | undefined, FromAccountId?: any | undefined, FromAccountDescription?: string | undefined, ToAccountId?: any | undefined, ToAccountDescription?: string | undefined, Billercode?: string | undefined, BillerName?: string | undefined, CustomerReferenceNumber?: string | undefined, Amount?: number | undefined, RegularPayment?: boolean | undefined, NextScheduledDate?: Date | undefined, DepositDescription?: string | undefined, WithdrawalDescription?: string | undefined, NumberOfTimes?: boolean | undefined, SpecifiedDate?: boolean | undefined } | undefined> | undefined };\r\n\r\nexport type CloseOtherSessionsMutationVariables = Exact<{\r\n input: ForceCloseCurrentUserSessionsInput;\r\n}>;\r\n\r\n\r\nexport type CloseOtherSessionsMutation = { __typename?: 'Mutation', closeCurrentUserSessions?: { __typename?: 'ForceCloseCurrentUserSessionsResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, clientMutationId?: string | undefined, Data?: { __typename?: 'UserSession', Id: any, Features?: Array | undefined, CurrentServerTime: Date, LastLoginAttempt: Date, LastLoginFrom?: string | undefined, LastPasswordChange: Date, IsFirstLogin?: boolean | undefined, CurrentSession?: { __typename?: 'LoginAttempt', Id: any, IsDeleted?: boolean | undefined, LastActivity: Date, SessionStart: Date, EventDate: Date, IpAddress?: string | undefined, Successful?: boolean | undefined, ClientVersion?: string | undefined, UserAgentHeader?: string | undefined, Expires: Date } | undefined, LoginAttempts?: Array<{ __typename?: 'LoginAttempt', Id: any, EventDate: Date, IpAddress?: string | undefined, Successful?: boolean | undefined, ClientVersion?: string | undefined, UserAgentHeader?: string | undefined, IsDeleted?: boolean | undefined, LastActivity: Date, SessionStart: Date, Expires: Date } | undefined> | undefined } | undefined } | undefined };\r\n\r\nexport type ChangeCurrentUserPasswordMutationVariables = Exact<{\r\n input: ChangePasswordInput;\r\n}>;\r\n\r\n\r\nexport type ChangeCurrentUserPasswordMutation = { __typename?: 'Mutation', changeCurrentUserPassword?: { __typename?: 'ChangePasswordResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined, UserSession?: { __typename?: 'UserSession', Id: any, Features?: Array | undefined, CurrentServerTime: Date, LastLoginAttempt: Date, LastLoginFrom?: string | undefined, LastPasswordChange: Date, IsFirstLogin?: boolean | undefined, HasTempPassword: boolean, UseMultiFactorAuth: boolean, Party?: { __typename?: 'Party', Id: any, PartyNumber?: string | undefined, FullName?: string | undefined, OrganisationName?: string | undefined, FirstName?: string | undefined, LastName?: string | undefined } | undefined } | undefined } | undefined };\r\n\r\nexport type PasswordValidatorByApplicationQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type PasswordValidatorByApplicationQuery = { __typename?: 'Query', passwordValidatorByApplication?: { __typename?: 'PasswordValidator', MinimumPasswordLength: number, RequireLowerCaseCharacters: boolean, MinimumLowerCaseCharacterCount: number, RequireUpperCaseCharacters: boolean, MinimumUpperCaseCharacterCount: number, RequireNumberCharacters: boolean, MinimumNumberCharacterCount: number, RequireBaseSymbols: boolean, MinimumBaseSymbolCharacterCount: number, RequireExtendedSymbols: boolean, MinimumExtendedSymbolCharacterCount: number, ProhibitSequentialAlphabetCharacters: boolean, ProhibitSequentialNumberCharacters: boolean, ProhibitRepeatingAlphabetCharacters: boolean, ProhibitRepeatingNumberCharacters: boolean, ProhibitRepeatingSymbolCharacters: boolean, MinimumPasswordHistory: number } | undefined };\r\n\r\nexport type BankingUserLogoutMutationVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type BankingUserLogoutMutation = { __typename?: 'Mutation', logout?: { __typename?: 'LogoutPayload', Code?: string | undefined, Success: boolean, Message?: string | undefined } | undefined };\r\n\r\nexport type RequestPasswordResetMutationVariables = Exact<{\r\n input: ResetPasswordInput;\r\n}>;\r\n\r\n\r\nexport type RequestPasswordResetMutation = { __typename?: 'Mutation', requestPasswordReset?: { __typename?: 'ResetPasswordResponse', Code?: string | undefined, Success: boolean, Message?: string | undefined } | undefined };\r\n\r\nexport type ArchiveSecureMessageMutationVariables = Exact<{\r\n input: ArchiveSecureMessageInput;\r\n}>;\r\n\r\n\r\nexport type ArchiveSecureMessageMutation = { __typename?: 'Mutation', archiveSecureMessage?: { __typename?: 'ArchiveSecureMessageResponse', clientMutationId?: string | undefined, Code?: string | undefined, Message?: string | undefined, Success: boolean } | undefined };\r\n\r\nexport type ReadSecureMessageMutationVariables = Exact<{\r\n input: ReadSecureMessageInput;\r\n}>;\r\n\r\n\r\nexport type ReadSecureMessageMutation = { __typename?: 'Mutation', readSecureMessage?: { __typename?: 'ReadSecureMessageResponse', clientMutationId?: string | undefined, Code?: string | undefined, Message?: string | undefined, Success: boolean } | undefined };\r\n\r\nexport type CreateNewSecureMessageMutationVariables = Exact<{\r\n input: RequestNewSecureMessageInput;\r\n}>;\r\n\r\n\r\nexport type CreateNewSecureMessageMutation = { __typename?: 'Mutation', requestNewSecureMessage?: { __typename?: 'RequestNewSecureMessageResponse', Code?: string | undefined, clientMutationId?: string | undefined, Message?: string | undefined, Success: boolean, GraphSecureMessage?: { __typename?: 'SecureMessage', DateArchived?: Date | undefined, DateRead?: Date | undefined, DateReplied?: Date | undefined, Id: any, IsArchived: boolean, IsRead: boolean, IsReplied: boolean, ProfileId: any, ShortDescription?: string | undefined, Subject?: string | undefined, Type?: string | undefined, ToDoItem: { __typename?: 'ToDoItem', AccountNumber?: string | undefined, Id: any, State: ToDoItemState, Text?: string | undefined, WithId?: any | undefined, Messages: Array<{ __typename?: 'Note', CreatedBy: any, CreatedOn: Date, Id: any, Text: string, Party: any }>, Type: { __typename?: 'ToDoItemType', Id: any, Description: string, SecureMessageType?: { __typename?: 'SecureMessageType', Id: any, IsAccount: boolean, IsSystem: boolean, Description: string, DisplayOrder: number, Name: string } | undefined } } } | undefined } | undefined };\r\n\r\nexport type CreateNewSecureReplyMutationVariables = Exact<{\r\n input: RequestNewSecureReplyInput;\r\n}>;\r\n\r\n\r\nexport type CreateNewSecureReplyMutation = { __typename?: 'Mutation', requestNewSecureReply?: { __typename?: 'RequestNewSecureReplyResponse', Code?: string | undefined, clientMutationId?: string | undefined, Message?: string | undefined, Success: boolean, GraphSecureMessage?: { __typename?: 'SecureMessage', DateArchived?: Date | undefined, DateRead?: Date | undefined, DateReplied?: Date | undefined, Id: any, IsArchived: boolean, IsRead: boolean, IsReplied: boolean, ProfileId: any, ShortDescription?: string | undefined, Subject?: string | undefined, ToDoItem: { __typename?: 'ToDoItem', AccountNumber?: string | undefined, Id: any, State: ToDoItemState, Text?: string | undefined, WithId?: any | undefined, Messages: Array<{ __typename?: 'Note', CreatedBy: any, CreatedOn: Date, Id: any, Text: string, Party: any }>, Type: { __typename?: 'ToDoItemType', Id: any, Description: string, SecureMessageType?: { __typename?: 'SecureMessageType', Id: any, IsAccount: boolean, IsSystem: boolean, Description: string, DisplayOrder: number, Name: string } | undefined } } } | undefined } | undefined };\r\n\r\nexport type SecureMessagesByPartyQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type SecureMessagesByPartyQuery = { __typename?: 'Query', secureMessagesByParty?: { __typename?: 'SecureMessageContext', UnreadMessageCount: number, SecureMessages?: Array<{ __typename?: 'SecureMessage', Id: any, ProfileId: any, IsArchived: boolean, DateArchived?: Date | undefined, IsRead: boolean, DateRead?: Date | undefined, IsReplied: boolean, DateReplied?: Date | undefined, Subject?: string | undefined, Type?: string | undefined, ShortDescription?: string | undefined, ToDoItem: { __typename?: 'ToDoItem', Id: any, WithId?: any | undefined, State: ToDoItemState, Text?: string | undefined, AccountNumber?: string | undefined, Messages: Array<{ __typename?: 'Note', Id: any, CreatedOn: Date, CreatedBy: any, Text: string, Party: any }>, Type: { __typename?: 'ToDoItemType', Id: any, Description: string, SecureMessageType?: { __typename?: 'SecureMessageType', Id: any, IsAccount: boolean, IsSystem: boolean, Description: string, DisplayOrder: number, Name: string } | undefined } } } | undefined> | undefined } | undefined };\r\n\r\nexport type UnreadMessagesCountByPartyQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type UnreadMessagesCountByPartyQuery = { __typename?: 'Query', secureMessagesByParty?: { __typename?: 'SecureMessageContext', UnreadMessageCount: number } | undefined };\r\n\r\nexport type AcceptTermsMutationVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type AcceptTermsMutation = { __typename?: 'Mutation', acceptTerms?: { __typename?: 'AcceptTermsPayload', Code?: string | undefined, Success: boolean, Message?: string | undefined, UserSession: { __typename?: 'UserSession', Id: any, LastTermsAcceptance?: Date | undefined } } | undefined };\r\n\r\nexport type BankingUserLoginMutationVariables = Exact<{\r\n input: LoginInput;\r\n}>;\r\n\r\n\r\nexport type BankingUserLoginMutation = { __typename?: 'Mutation', login?: { __typename?: 'LoginResponse', Code?: string | undefined, Message?: string | undefined, Success: boolean, UserSession?: { __typename?: 'UserSession', Id: any, Features?: Array | undefined, CurrentServerTime: Date, LastLoginAttempt: Date, LastLoginFrom?: string | undefined, LastPasswordChange: Date, IsFirstLogin?: boolean | undefined, IsSharia?: boolean | undefined, FinanceSummary?: { __typename?: 'FinanceSummary', Id: any } | undefined, Party?: { __typename?: 'Party', Id: any, PartyNumber?: string | undefined, FirstName?: string | undefined, LastName?: string | undefined, FullName?: string | undefined } | undefined } | undefined } | undefined };\r\n\r\nexport type BankingUserLoginV2MutationVariables = Exact<{\r\n input: LoginV2Input;\r\n}>;\r\n\r\n\r\nexport type BankingUserLoginV2Mutation = { __typename?: 'Mutation', loginV2?: { __typename?: 'LoginV2Response', AccessToken?: string | undefined, TrustedDeviceToken?: string | undefined, CanUseTrustedDevice?: boolean | undefined, AuthMessage?: string | undefined, AuthError?: LoginV3AuthError | undefined, AuthSucceeded: boolean, IsUsingGoogleAuth: boolean, UserSession?: { __typename?: 'UserSession', Id: any, Features?: Array | undefined, CurrentServerTime: Date, LastLoginAttempt: Date, LastLoginFrom?: string | undefined, LastPasswordChange: Date, IsFirstLogin?: boolean | undefined, IsSharia?: boolean | undefined, FinanceSummary?: { __typename?: 'FinanceSummary', Id: any } | undefined, Party?: { __typename?: 'Party', Id: any, PartyNumber?: string | undefined, FirstName?: string | undefined, LastName?: string | undefined, FullName?: string | undefined } | undefined } | undefined } | undefined };\r\n\r\nexport type DisableProfileAuthenticatorMutationVariables = Exact<{\r\n input: DisableProfileAuthenticatorInput;\r\n}>;\r\n\r\n\r\nexport type DisableProfileAuthenticatorMutation = { __typename?: 'Mutation', disableProfileAuthenticator?: { __typename?: 'DisableProfileAuthenticatorResponse', clientMutationId?: string | undefined, Code?: string | undefined, Message?: string | undefined, Success: boolean } | undefined };\r\n\r\nexport type EnableProfileAuthenticatorMutationVariables = Exact<{\r\n input: EnableProfileAuthenticatorInput;\r\n}>;\r\n\r\n\r\nexport type EnableProfileAuthenticatorMutation = { __typename?: 'Mutation', enableProfileAuthenticator?: { __typename?: 'EnableProfileAuthenticatorResponse', clientMutationId?: string | undefined, Code?: string | undefined, Message?: string | undefined, Success: boolean } | undefined };\r\n\r\nexport type GenerateAuthSecretMutationVariables = Exact<{\r\n input: GenerateAuthSecretInput;\r\n}>;\r\n\r\n\r\nexport type GenerateAuthSecretMutation = { __typename?: 'Mutation', generateAuthSecret?: { __typename?: 'GenerateAuthSecretResponse', clientMutationId?: string | undefined, Code?: string | undefined, Message?: string | undefined, Success: boolean, AuthSecret?: string | undefined } | undefined };\r\n\r\nexport type IsUserAuthenticatedQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type IsUserAuthenticatedQuery = { __typename?: 'Query', userSession?: { __typename?: 'UserSession', Id: any, Features?: Array | undefined, CurrentServerTime: Date, LastLoginAttempt: Date, LastLoginFrom?: string | undefined, LastPasswordChange: Date, LastTermsAcceptance?: Date | undefined, IsFirstLogin?: boolean | undefined, HasTempPassword: boolean, UseMultiFactorAuth: boolean, IsUsingGoogleAuth: boolean, MFAEnforced: boolean, PartyPaymentLimitsEnabled: boolean, UnreadMessageCount: number, Party?: { __typename?: 'Party', Id: any, PartyNumber?: string | undefined, FullName?: string | undefined, OrganisationName?: string | undefined, FirstName?: string | undefined, LastName?: string | undefined, SearchName?: string | undefined, PreferredCorrespondanceType?: PreferredCorrespondanceType | undefined } | undefined, CurrentSession?: { __typename?: 'LoginAttempt', Id: any, IsDeleted?: boolean | undefined, LastActivity: Date, SessionStart: Date, Expires: Date, EventDate: Date, IpAddress?: string | undefined, Successful?: boolean | undefined, ClientVersion?: string | undefined, UserAgentHeader?: string | undefined } | undefined, LoginAttempts?: Array<{ __typename?: 'LoginAttempt', Id: any, IsDeleted?: boolean | undefined, LastActivity: Date, SessionStart: Date, Expires: Date, EventDate: Date, IpAddress?: string | undefined, Successful?: boolean | undefined, ClientVersion?: string | undefined, UserAgentHeader?: string | undefined } | undefined> | undefined } | undefined };\r\n\r\nexport type PartyChangeElectronicCommsStatusMutationVariables = Exact<{\r\n input: ChangeElectronicCommsStatusInput;\r\n}>;\r\n\r\n\r\nexport type PartyChangeElectronicCommsStatusMutation = { __typename?: 'Mutation', changeElectronicCommsStatus?: { __typename?: 'ChangeElectronicCommsStatusResponse', clientMutationId?: string | undefined, Code?: string | undefined, Success: boolean, Message?: string | undefined, SMSNotificationStatus: boolean, EmailNotificationStatus: boolean, StatementNotificationStatus: boolean } | undefined };\r\n\r\nexport type PartyChangeMarketingCommsStatusMutationVariables = Exact<{\r\n input: ChangeMarketingCommsStatusInput;\r\n}>;\r\n\r\n\r\nexport type PartyChangeMarketingCommsStatusMutation = { __typename?: 'Mutation', changeMarketingCommsStatus?: { __typename?: 'ChangeMarketingCommsStatusResponse', clientMutationId?: string | undefined, Code?: string | undefined, Success: boolean, Message?: string | undefined, MarketingStatus: boolean } | undefined };\r\n\r\nexport type PartyChangePersonalDetailsMutationVariables = Exact<{\r\n input: PartyPersonalDetailsInput;\r\n}>;\r\n\r\n\r\nexport type PartyChangePersonalDetailsMutation = { __typename?: 'Mutation', partyPersonalDetails?: { __typename?: 'PartyPersonalDetailsResponse', clientMutationId?: string | undefined, Code?: string | undefined, Success: boolean, Message?: string | undefined, PreferredCorrespondenceMethod?: string | undefined } | undefined };\r\n\r\nexport type PartyElectronicCommsStatusQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type PartyElectronicCommsStatusQuery = { __typename?: 'Query', electronicComms?: { __typename?: 'ElectronicCommsStatus', SMSNotificationStatus: boolean, EmailNotificationStatus: boolean, StatementNotificationStatus: boolean } | undefined };\r\n\r\nexport type PartyProfileDetailsQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type PartyProfileDetailsQuery = { __typename?: 'Query', userSession?: { __typename?: 'UserSession', Id: any, IsDeleted?: boolean | undefined, LastLoginAttempt: Date, LastLoginFrom?: string | undefined, LastPasswordChange: Date, PartyPaymentLimitsEnabled: boolean, UseMultiFactorAuth: boolean, Party?: { __typename?: 'Party', AcceptsAdvertising: boolean, EntityType?: string | undefined, FirstName?: string | undefined, Id: any, LastName?: string | undefined, OrganisationName?: string | undefined, PartyNumber?: string | undefined, PreferredCorrespondanceType?: PreferredCorrespondanceType | undefined, Addresses?: Array<{ __typename?: 'GraphAssociatedAddress', Id: any, IsDefaultMailingAddress: boolean, IsDefaultResidentialAddress: boolean, IsDeleted: boolean, IsPrevious: boolean, Address?: { __typename?: 'Address', AddressDetailType: AddressDetailType, AddressLine1?: string | undefined, AddressLine2?: string | undefined, AddressLine3?: string | undefined, AddressLine4?: string | undefined, Building?: string | undefined, FloorName?: string | undefined, FloorNumber?: string | undefined, HasBeenVerified: boolean, Id: any, IsValid: boolean, LotNumber?: string | undefined, PostalBoxDetails?: string | undefined, PostalCode?: string | undefined, PropertyName?: string | undefined, StreetName?: string | undefined, StreetNumberFrom?: string | undefined, StreetNumberTo?: string | undefined, StreetType?: string | undefined, SuburbTown?: string | undefined, UnitNumber?: string | undefined, Country?: { __typename?: 'Country', Name?: string | undefined } | undefined, Region?: { __typename?: 'GeographicRegion', Abbreviation?: string | undefined, Name?: string | undefined } | undefined } | undefined } | undefined> | undefined, Contacts?: Array<{ __typename?: 'GraphContact', Details?: string | undefined, Id: any, IsDeleted: boolean, IsPreferredEmail: boolean, IsPreferredPhone: boolean, IsPreferredSms: boolean, Type?: { __typename?: 'GraphContactType', Description?: string | undefined, Id: any, IsPhone: boolean, ReceiveMessages: boolean } | undefined } | undefined> | undefined } | undefined } | undefined };\r\n\r\nexport type IndueCardActivateCardMutationVariables = Exact<{\r\n input: IndueCardActivateCardInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardActivateCardMutation = { __typename?: 'Mutation', indueActivateCard?: { __typename?: 'IndueCardActivateCardResponse', Result: boolean, Success: boolean, ActivateCardResult: boolean, ChangePinResult: boolean, Card?: { __typename?: 'IndueCard', Id: any, Status: IndueCardStatus } | undefined } | undefined };\r\n\r\nexport type IndueCardChangePinMutationVariables = Exact<{\r\n input: IndueCardChangePinInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardChangePinMutation = { __typename?: 'Mutation', changePin?: { __typename?: 'IndueCardChangeResponse', Result: boolean, Card: { __typename?: 'IndueCard', CardNumber?: string | undefined, ExpiryDate?: Date | undefined, Id: any, Status: IndueCardStatus } } | undefined };\r\n\r\nexport type IndueCardChangeStatusMutationVariables = Exact<{\r\n input: IndueCardChangeStatusInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardChangeStatusMutation = { __typename?: 'Mutation', changeStatus?: { __typename?: 'IndueCardChangeResponse', Result: boolean, Card: { __typename?: 'IndueCard', CardNumber?: string | undefined, ExpiryDate?: Date | undefined, Id: any, Status: IndueCardStatus } } | undefined };\r\n\r\nexport type IndueCardCreateCardMutationVariables = Exact<{\r\n input: IndueCardCreateCardInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardCreateCardMutation = { __typename?: 'Mutation', createCard?: { __typename?: 'IndueCardCreateCardResponse', Success: boolean, Code?: string | undefined, Message?: string | undefined, Card?: { __typename?: 'IndueCard', Id: any, Status: IndueCardStatus } | undefined } | undefined };\r\n\r\nexport type IndueCardDetailsQueryVariables = Exact<{\r\n input: IndueCardDetailsInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardDetailsQuery = { __typename?: 'Query', indueCardDetails?: { __typename?: 'IndueCard', CardNumber?: string | undefined, ExpiryDate?: Date | undefined, Id: any, Status: IndueCardStatus, CanActivate: boolean, CanHold: boolean, CanUnHold: boolean, CanReportLostStolen: boolean, CanClose: boolean } | undefined };\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 = { __typename?: 'Query', indueCardsByAccount?: Array<{ __typename?: 'IndueCard', CardNumber?: string | undefined, ExpiryDate?: Date | undefined, Id: any, Status: IndueCardStatus, CanActivate: boolean, CanHold: boolean, CanUnHold: boolean, CanReportLostStolen: boolean, CanClose: boolean } | undefined> | undefined, partyAssociationByAccount?: { __typename?: 'PartyAccountAssociation', IsPrimaryBorrower: boolean, IsSecondaryBorrower: boolean, IsNonBorrower: boolean, PrimaryBorrowerHasCard: boolean } | undefined, accountByIdOrNumber?: { __typename?: 'Account', Id: any, CurrentUserAccountAuthority?: { __typename?: 'AccountAuthority', Id: any, BPay: boolean, Operate: boolean, PayAnyone: boolean, Redraw: boolean, View: boolean } | undefined } | undefined };\r\n\r\nexport type IndueCardsByAccountQueryVariables = Exact<{\r\n input: IndueCardsByAccountInput;\r\n}>;\r\n\r\n\r\nexport type IndueCardsByAccountQuery = { __typename?: 'Query', indueCardsByAccount?: Array<{ __typename?: 'IndueCard', CardNumber?: string | undefined, ExpiryDate?: Date | undefined, Id: any, Status: IndueCardStatus, CanActivate: boolean, CanHold: boolean, CanUnHold: boolean, CanReportLostStolen: boolean, CanClose: boolean } | undefined> | undefined };\r\n\r\nexport type PartyAssociationByAccountQueryVariables = Exact<{\r\n input: PartyAssociationByAccountInput;\r\n}>;\r\n\r\n\r\nexport type PartyAssociationByAccountQuery = { __typename?: 'Query', partyAssociationByAccount?: { __typename?: 'PartyAccountAssociation', IsPrimaryBorrower: boolean, IsSecondaryBorrower: boolean, IsNonBorrower: boolean, PrimaryBorrowerHasCard: boolean } | undefined };\r\n\r\nexport type RequestNewMultiFactorSecurityTokenMutationVariables = Exact<{\r\n input: RequestMultiFactorAuthorisationInput;\r\n}>;\r\n\r\n\r\nexport type RequestNewMultiFactorSecurityTokenMutation = { __typename?: 'Mutation', requestMultiFactorAuthorisation?: { __typename?: 'RequestMultiFactorAuthorisationResponse', clientMutationId?: string | undefined, Code?: string | undefined, Message?: string | undefined, Success: boolean } | undefined };\r\n\r\nexport type DisbursementRequestMutationVariables = Exact<{\r\n input: DisbursementRequestInput;\r\n}>;\r\n\r\n\r\nexport type DisbursementRequestMutation = { __typename?: 'Mutation', disbursementRequest?: { __typename?: 'DisbursementRequestResponse', clientMutationId?: string | undefined, Code?: string | undefined, Success: boolean, Message?: string | undefined, Data?: { __typename?: 'DisbursementStage', Id: any, PayeeName?: string | undefined, BankIdentifierText?: string | undefined, AccountNumber?: string | undefined, PaymentDescription?: string | undefined, RequestedAmount: number, PaymentDate: Date, Documents?: Array<{ __typename?: 'File', Id: any, FileName?: string | undefined, Name?: string | undefined, CreatedOn: Date, DocumentType: FileType, IsDeleted: boolean, PrivacyLevel: PrivacyLevel } | undefined> | undefined } | undefined } | undefined };\r\n\r\nexport type FinanceSummaryQueryInlineQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type FinanceSummaryQueryInlineQuery = { __typename?: 'Query', financeSummary?: { __typename?: 'FinanceSummary', Id: any, TotalPrincipal?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, TotalRedraw?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, Instruments?: Array<{ __typename?: 'Instrument', Id: any, Number?: string | undefined, LoanPurpose?: string | undefined, Description?: string | undefined, TotalPrincipal?: number | undefined, TotalRedraw?: number | undefined, Status?: string | undefined, IsUnderHardshipAgreement?: boolean | undefined, InstrumentType?: string | undefined, Term?: number | undefined, TotalTermMonths?: any | undefined, RemainingTermMonths: any, MaturityDate?: Date | undefined, PrimaryBorrower?: string | undefined, Accounts?: Array<{ __typename?: 'Account', Id: any, Number?: string | undefined, Description?: string | undefined, DisplayOrder?: number | undefined, InstrumentId?: any | undefined, LegacyNumber?: string | undefined, ProductType?: string | undefined, CurrentBalance?: number | undefined, Redraw?: number | undefined, InterestType?: string | undefined, CardAccount?: boolean | undefined } | undefined> | undefined } | undefined> | undefined } | undefined };\r\n\r\nexport type FinanceSummaryQueryQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type FinanceSummaryQueryQuery = { __typename?: 'Query', financeSummary?: { __typename?: 'FinanceSummary', TotalPrincipal?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, TotalRedraw?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, Instruments?: Array<{ __typename?: 'Instrument', Id: any, Number?: string | undefined, Description?: string | undefined, TotalPrincipal?: number | undefined, TotalRedraw?: number | undefined, Status?: string | undefined, IsUnderHardshipAgreement?: boolean | undefined, InstrumentType?: string | undefined, PrimaryBorrower?: string | undefined, Accounts?: Array<{ __typename?: 'Account', Id: any, Number?: string | undefined, Description?: string | undefined, DisplayOrder?: number | undefined, InstrumentId?: any | undefined, LegacyNumber?: string | undefined, ProductType?: string | undefined, CurrentBalance?: number | undefined, Redraw?: number | undefined, InterestType?: string | undefined, CardAccount?: boolean | undefined } | undefined> | undefined } | undefined> | undefined } | undefined };\r\n\r\nexport type InstrumentByIdOrNumberQueryVariables = Exact<{\r\n idOrNumber: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type InstrumentByIdOrNumberQuery = { __typename?: 'Query', instrumentByIdOrNumber?: { __typename?: 'Instrument', Id: any, Number?: string | undefined, LoanPurpose?: string | undefined, Description?: string | undefined, TotalPrincipal?: number | undefined, TotalRedraw?: number | undefined, Status?: string | undefined, IsUnderHardshipAgreement?: boolean | undefined, InstrumentType?: string | undefined, Term?: number | undefined, TotalTermMonths?: any | undefined, RemainingTermMonths: any, MaturityDate?: Date | undefined, RedrawConsideration?: string | undefined, PrimaryBorrower?: string | undefined, Accounts?: Array<{ __typename?: 'Account', Id: any, Number?: string | undefined, Description?: string | undefined, DisplayOrder?: number | undefined, InstrumentId?: any | undefined, LegacyNumber?: string | undefined, ProductType?: string | undefined, CurrentBalance?: number | undefined, Redraw?: number | undefined, InterestType?: string | undefined, CardAccount?: boolean | undefined, RedrawFlag?: boolean | undefined, OffsetAccount?: boolean | undefined, CardAvailable?: boolean | undefined } | undefined> | undefined } | undefined };\r\n\r\nexport type IsShariaQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type IsShariaQuery = { __typename?: 'Query', userSession?: { __typename?: 'UserSession', Id: any, IsSharia?: boolean | undefined } | undefined };\r\n\r\nexport type MaxLimitsQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type MaxLimitsQuery = { __typename?: 'Query', userSession?: { __typename?: 'UserSession', Id: any, RedrawLimitMax: number, PayAnyoneLimitMax: number, BPayLimitMax: number } | undefined };\r\n\r\nexport type PartyLimitQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type PartyLimitQuery = { __typename?: 'Query', partyLimits?: { __typename?: 'AccountLimit', LimitEffectiveTo?: Date | undefined, DailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DefaultRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyRedrawLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DefaultPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyPayAnyoneLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DailyBPayLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, DefaultBPayLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined, RemainingDailyBPayLimit?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined } | undefined };\r\n\r\nexport type SecureMessageTypesQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type SecureMessageTypesQuery = { __typename?: 'Query', secureMessageTypes?: Array<{ __typename?: 'SecureMessageType', Id: any, IsAccount: boolean, IsSystem: boolean, Name: string, Description: string, DisplayOrder: number } | undefined> | undefined };\r\n\r\nexport type StatementsByPartyIdQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type StatementsByPartyIdQuery = { __typename?: 'Query', statementsByPartyId?: Array<{ __typename?: 'StatementDocument', Id: any, AccountId: any, AccountNumber?: string | undefined, AdHoc?: boolean | undefined, CreatedOn?: Date | undefined, InstrumentId: any, Number?: string | undefined, PeriodFrom: Date, PeriodTo: Date, Filename?: string | undefined, FileId: any } | undefined> | undefined };\r\n\r\nexport type ToDoItemTypesQueryVariables = Exact<{\r\n input: ToDoItemTypesInput;\r\n}>;\r\n\r\n\r\nexport type ToDoItemTypesQuery = { __typename?: 'Query', toDoItemTypes?: Array<{ __typename?: 'ToDoItemType', Id: any, Description: string, SecureMessageType?: { __typename?: 'SecureMessageType', Id: any, IsAccount: boolean, IsSystem: boolean, Description: string, DisplayOrder: number, Name: string } | undefined } | undefined> | undefined };\r\n\r\nexport type TransferAccountsByPartyQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type TransferAccountsByPartyQuery = { __typename?: 'Query', transferAccountsByParty?: Array<{ __typename?: 'TransferAccount', AccountId?: any | undefined, AccountCategory?: string | undefined, AccountName: string, AccountNumber?: string | undefined, BSB?: string | undefined, BillerCode?: any | undefined, RedrawBalance?: number | undefined, IsBankAccount: boolean, IsExternal: boolean, IsBPay: boolean, InstrumentId?: any | undefined, AllowRead: boolean, AllowOperate: boolean, AllowBPay: boolean, AllowRedraw: boolean, AllowPayAnyone: boolean, CapitalAccountNumber?: Array | undefined, IsDirectDebit: boolean, IsDirectCredit: boolean, FunderAllowsNPP: boolean, AccountIsValidForNPP: boolean, MinimumDirectDebitDate: Date } | undefined> | undefined };\r\n\r\nexport type DismissNotificationMutationVariables = Exact<{\r\n notificationId: Scalars['ID'];\r\n}>;\r\n\r\n\r\nexport type DismissNotificationMutation = { __typename?: 'Mutation', dismissNotification?: { __typename?: 'DismissNotificationResult', Code: string, Success: boolean, Message?: string | undefined, Data?: { __typename?: 'InterestConversionNotification', Id: any, ConversionType?: string | undefined, ConversionDate?: Date | undefined, NewInstalmentFrequency?: string | undefined, Dismissed?: boolean | undefined, Account?: { __typename?: 'Account', InstrumentId?: any | undefined, Number?: string | undefined, Id: any } | undefined, NewInstalmentAmount?: { __typename?: 'Money', CurrencyCode?: string | undefined, Amount: number } | undefined } | undefined } | undefined };\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(CurrentUserNotificationsDocument, options);\r\n }\r\nexport function useCurrentUserNotificationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(CurrentUserNotificationsDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(AccountByIdOrNumberDocument, options);\r\n }\r\nexport function useAccountByIdOrNumberLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(AccountByIdOrNumberDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(ChangeAccountDescriptionDocument, options);\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 DailyBPayLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyBPayLimit {\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(InstrumentAuthorityAccountsDocument, options);\r\n }\r\nexport function useInstrumentAuthorityAccountsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(InstrumentAuthorityAccountsDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(BpayBillerDetailsDocument, options);\r\n }\r\nexport function useBpayBillerDetailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(BpayBillerDetailsDocument, options);\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 Id\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 HasPendingTransfer\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(BpayBillerHistoryDocument, options);\r\n }\r\nexport function useBpayBillerHistoryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(BpayBillerHistoryDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(BpayTransferRequestDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(StopPendingFundsTransferDocument, options);\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 HasPendingTransfer\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(CreateBpayBillerDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(DeleteBpayPartyBillerDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(BankBranchDetailsDocument, options);\r\n }\r\nexport function useBankBranchDetailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(BankBranchDetailsDocument, options);\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 RemainingDailyBPayLimit {\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(TransferLimitValidationDocument, options);\r\n }\r\nexport function useTransferLimitValidationLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(TransferLimitValidationDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(AccountFundsTransfersDocument, options);\r\n }\r\nexport function useAccountFundsTransfersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(AccountFundsTransfersDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(CreatePayAnyoneBankAccountDocument, options);\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 HasPendingTransfer\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(CurrentUserPartyBankAccountsDocument, options);\r\n }\r\nexport function useCurrentUserPartyBankAccountsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(CurrentUserPartyBankAccountsDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(DeletePartyBankAccountDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(RequestPayAnyoneTransferDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(InstrumentByAccountIdDocument, options);\r\n }\r\nexport function useInstrumentByAccountIdLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(InstrumentByAccountIdDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(AccountLimitDocument, options);\r\n }\r\nexport function useAccountLimitLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(AccountLimitDocument, options);\r\n }\r\nexport type AccountLimitQueryHookResult = ReturnType;\r\nexport type AccountLimitLazyQueryHookResult = ReturnType;\r\nexport type AccountLimitQueryResult = Apollo.QueryResult;\r\nexport const PartyPaymentLimitDocument = gql`\r\n mutation partyPaymentLimit($input: PartyPaymentLimitInput!) {\r\n setPartyPaymentLimit(input: $input) {\r\n clientMutationId\r\n Code\r\n Message\r\n Success\r\n }\r\n}\r\n `;\r\nexport type PartyPaymentLimitMutationFn = Apollo.MutationFunction;\r\nexport type PartyPaymentLimitComponentProps = Omit, 'mutation'>;\r\n\r\n export const PartyPaymentLimitComponent = (props: PartyPaymentLimitComponentProps) => (\r\n mutation={PartyPaymentLimitDocument} {...props} />\r\n );\r\n \r\nexport type PartyPaymentLimitProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withPartyPaymentLimit(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyPaymentLimitMutation,\r\n PartyPaymentLimitMutationVariables,\r\n PartyPaymentLimitProps>) {\r\n return ApolloReactHoc.withMutation>(PartyPaymentLimitDocument, {\r\n alias: 'partyPaymentLimit',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyPaymentLimitMutation__\r\n *\r\n * To run a mutation, you first call `usePartyPaymentLimitMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `usePartyPaymentLimitMutation` 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 [partyPaymentLimitMutation, { data, loading, error }] = usePartyPaymentLimitMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function usePartyPaymentLimitMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(PartyPaymentLimitDocument, options);\r\n }\r\nexport type PartyPaymentLimitMutationHookResult = ReturnType;\r\nexport type PartyPaymentLimitMutationResult = Apollo.MutationResult;\r\nexport type PartyPaymentLimitMutationOptions = Apollo.BaseMutationOptions;\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(RequestPayAnyoneTransferMutationDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(CloseOtherSessionsDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(ChangeCurrentUserPasswordDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(PasswordValidatorByApplicationDocument, options);\r\n }\r\nexport function usePasswordValidatorByApplicationLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(PasswordValidatorByApplicationDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(BankingUserLogoutDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(RequestPasswordResetDocument, options);\r\n }\r\nexport type RequestPasswordResetMutationHookResult = ReturnType;\r\nexport type RequestPasswordResetMutationResult = Apollo.MutationResult;\r\nexport type RequestPasswordResetMutationOptions = Apollo.BaseMutationOptions;\r\nexport const ArchiveSecureMessageDocument = gql`\r\n mutation archiveSecureMessage($input: ArchiveSecureMessageInput!) {\r\n archiveSecureMessage(input: $input) {\r\n clientMutationId\r\n Code\r\n Message\r\n Success\r\n }\r\n}\r\n `;\r\nexport type ArchiveSecureMessageMutationFn = Apollo.MutationFunction;\r\nexport type ArchiveSecureMessageComponentProps = Omit, 'mutation'>;\r\n\r\n export const ArchiveSecureMessageComponent = (props: ArchiveSecureMessageComponentProps) => (\r\n mutation={ArchiveSecureMessageDocument} {...props} />\r\n );\r\n \r\nexport type ArchiveSecureMessageProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withArchiveSecureMessage(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n ArchiveSecureMessageMutation,\r\n ArchiveSecureMessageMutationVariables,\r\n ArchiveSecureMessageProps>) {\r\n return ApolloReactHoc.withMutation>(ArchiveSecureMessageDocument, {\r\n alias: 'archiveSecureMessage',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useArchiveSecureMessageMutation__\r\n *\r\n * To run a mutation, you first call `useArchiveSecureMessageMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useArchiveSecureMessageMutation` 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 [archiveSecureMessageMutation, { data, loading, error }] = useArchiveSecureMessageMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useArchiveSecureMessageMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(ArchiveSecureMessageDocument, options);\r\n }\r\nexport type ArchiveSecureMessageMutationHookResult = ReturnType;\r\nexport type ArchiveSecureMessageMutationResult = Apollo.MutationResult;\r\nexport type ArchiveSecureMessageMutationOptions = Apollo.BaseMutationOptions;\r\nexport const ReadSecureMessageDocument = gql`\r\n mutation readSecureMessage($input: ReadSecureMessageInput!) {\r\n readSecureMessage(input: $input) {\r\n clientMutationId\r\n Code\r\n Message\r\n Success\r\n }\r\n}\r\n `;\r\nexport type ReadSecureMessageMutationFn = Apollo.MutationFunction;\r\nexport type ReadSecureMessageComponentProps = Omit, 'mutation'>;\r\n\r\n export const ReadSecureMessageComponent = (props: ReadSecureMessageComponentProps) => (\r\n mutation={ReadSecureMessageDocument} {...props} />\r\n );\r\n \r\nexport type ReadSecureMessageProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withReadSecureMessage(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n ReadSecureMessageMutation,\r\n ReadSecureMessageMutationVariables,\r\n ReadSecureMessageProps>) {\r\n return ApolloReactHoc.withMutation>(ReadSecureMessageDocument, {\r\n alias: 'readSecureMessage',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useReadSecureMessageMutation__\r\n *\r\n * To run a mutation, you first call `useReadSecureMessageMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useReadSecureMessageMutation` 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 [readSecureMessageMutation, { data, loading, error }] = useReadSecureMessageMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useReadSecureMessageMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(ReadSecureMessageDocument, options);\r\n }\r\nexport type ReadSecureMessageMutationHookResult = ReturnType;\r\nexport type ReadSecureMessageMutationResult = Apollo.MutationResult;\r\nexport type ReadSecureMessageMutationOptions = Apollo.BaseMutationOptions;\r\nexport const CreateNewSecureMessageDocument = gql`\r\n mutation createNewSecureMessage($input: RequestNewSecureMessageInput!) {\r\n requestNewSecureMessage(input: $input) {\r\n Code\r\n clientMutationId\r\n Message\r\n Success\r\n GraphSecureMessage {\r\n DateArchived\r\n DateRead\r\n DateReplied\r\n Id\r\n IsArchived\r\n IsRead\r\n IsReplied\r\n ProfileId\r\n ShortDescription\r\n Subject\r\n ToDoItem {\r\n AccountNumber\r\n Id\r\n Messages {\r\n CreatedBy\r\n CreatedOn\r\n Id\r\n Text\r\n Party\r\n }\r\n State\r\n Text\r\n WithId\r\n Type {\r\n Id\r\n Description\r\n SecureMessageType {\r\n Id\r\n IsAccount\r\n IsSystem\r\n Description\r\n DisplayOrder\r\n Name\r\n }\r\n }\r\n }\r\n Type\r\n }\r\n }\r\n}\r\n `;\r\nexport type CreateNewSecureMessageMutationFn = Apollo.MutationFunction;\r\nexport type CreateNewSecureMessageComponentProps = Omit, 'mutation'>;\r\n\r\n export const CreateNewSecureMessageComponent = (props: CreateNewSecureMessageComponentProps) => (\r\n mutation={CreateNewSecureMessageDocument} {...props} />\r\n );\r\n \r\nexport type CreateNewSecureMessageProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withCreateNewSecureMessage(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n CreateNewSecureMessageMutation,\r\n CreateNewSecureMessageMutationVariables,\r\n CreateNewSecureMessageProps>) {\r\n return ApolloReactHoc.withMutation>(CreateNewSecureMessageDocument, {\r\n alias: 'createNewSecureMessage',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useCreateNewSecureMessageMutation__\r\n *\r\n * To run a mutation, you first call `useCreateNewSecureMessageMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCreateNewSecureMessageMutation` 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 [createNewSecureMessageMutation, { data, loading, error }] = useCreateNewSecureMessageMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useCreateNewSecureMessageMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(CreateNewSecureMessageDocument, options);\r\n }\r\nexport type CreateNewSecureMessageMutationHookResult = ReturnType;\r\nexport type CreateNewSecureMessageMutationResult = Apollo.MutationResult;\r\nexport type CreateNewSecureMessageMutationOptions = Apollo.BaseMutationOptions;\r\nexport const CreateNewSecureReplyDocument = gql`\r\n mutation createNewSecureReply($input: RequestNewSecureReplyInput!) {\r\n requestNewSecureReply(input: $input) {\r\n Code\r\n clientMutationId\r\n Message\r\n Success\r\n GraphSecureMessage {\r\n DateArchived\r\n DateRead\r\n DateReplied\r\n Id\r\n IsArchived\r\n IsRead\r\n IsReplied\r\n ProfileId\r\n ShortDescription\r\n Subject\r\n ToDoItem {\r\n AccountNumber\r\n Id\r\n Messages {\r\n CreatedBy\r\n CreatedOn\r\n Id\r\n Text\r\n Party\r\n }\r\n State\r\n Text\r\n WithId\r\n Type {\r\n Id\r\n Description\r\n SecureMessageType {\r\n Id\r\n IsAccount\r\n IsSystem\r\n Description\r\n DisplayOrder\r\n Name\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n `;\r\nexport type CreateNewSecureReplyMutationFn = Apollo.MutationFunction;\r\nexport type CreateNewSecureReplyComponentProps = Omit, 'mutation'>;\r\n\r\n export const CreateNewSecureReplyComponent = (props: CreateNewSecureReplyComponentProps) => (\r\n mutation={CreateNewSecureReplyDocument} {...props} />\r\n );\r\n \r\nexport type CreateNewSecureReplyProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withCreateNewSecureReply(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n CreateNewSecureReplyMutation,\r\n CreateNewSecureReplyMutationVariables,\r\n CreateNewSecureReplyProps>) {\r\n return ApolloReactHoc.withMutation>(CreateNewSecureReplyDocument, {\r\n alias: 'createNewSecureReply',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useCreateNewSecureReplyMutation__\r\n *\r\n * To run a mutation, you first call `useCreateNewSecureReplyMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCreateNewSecureReplyMutation` 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 [createNewSecureReplyMutation, { data, loading, error }] = useCreateNewSecureReplyMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useCreateNewSecureReplyMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(CreateNewSecureReplyDocument, options);\r\n }\r\nexport type CreateNewSecureReplyMutationHookResult = ReturnType;\r\nexport type CreateNewSecureReplyMutationResult = Apollo.MutationResult;\r\nexport type CreateNewSecureReplyMutationOptions = Apollo.BaseMutationOptions;\r\nexport const SecureMessagesByPartyDocument = gql`\r\n query secureMessagesByParty {\r\n secureMessagesByParty {\r\n SecureMessages {\r\n Id\r\n ProfileId\r\n ToDoItem {\r\n Id\r\n WithId\r\n State\r\n Text\r\n Messages {\r\n Id\r\n CreatedOn\r\n CreatedBy\r\n Text\r\n Party\r\n }\r\n AccountNumber\r\n Type {\r\n Id\r\n Description\r\n SecureMessageType {\r\n Id\r\n IsAccount\r\n IsSystem\r\n Description\r\n DisplayOrder\r\n Name\r\n }\r\n }\r\n }\r\n IsArchived\r\n DateArchived\r\n IsRead\r\n DateRead\r\n IsReplied\r\n DateReplied\r\n Subject\r\n Type\r\n ShortDescription\r\n }\r\n UnreadMessageCount\r\n }\r\n}\r\n `;\r\nexport type SecureMessagesByPartyComponentProps = Omit, 'query'>;\r\n\r\n export const SecureMessagesByPartyComponent = (props: SecureMessagesByPartyComponentProps) => (\r\n query={SecureMessagesByPartyDocument} {...props} />\r\n );\r\n \r\nexport type SecureMessagesByPartyProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withSecureMessagesByParty(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n SecureMessagesByPartyQuery,\r\n SecureMessagesByPartyQueryVariables,\r\n SecureMessagesByPartyProps>) {\r\n return ApolloReactHoc.withQuery>(SecureMessagesByPartyDocument, {\r\n alias: 'secureMessagesByParty',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useSecureMessagesByPartyQuery__\r\n *\r\n * To run a query within a React component, call `useSecureMessagesByPartyQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useSecureMessagesByPartyQuery` 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 } = useSecureMessagesByPartyQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useSecureMessagesByPartyQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(SecureMessagesByPartyDocument, options);\r\n }\r\nexport function useSecureMessagesByPartyLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(SecureMessagesByPartyDocument, options);\r\n }\r\nexport type SecureMessagesByPartyQueryHookResult = ReturnType;\r\nexport type SecureMessagesByPartyLazyQueryHookResult = ReturnType;\r\nexport type SecureMessagesByPartyQueryResult = Apollo.QueryResult;\r\nexport const UnreadMessagesCountByPartyDocument = gql`\r\n query unreadMessagesCountByParty {\r\n secureMessagesByParty {\r\n UnreadMessageCount\r\n }\r\n}\r\n `;\r\nexport type UnreadMessagesCountByPartyComponentProps = Omit, 'query'>;\r\n\r\n export const UnreadMessagesCountByPartyComponent = (props: UnreadMessagesCountByPartyComponentProps) => (\r\n query={UnreadMessagesCountByPartyDocument} {...props} />\r\n );\r\n \r\nexport type UnreadMessagesCountByPartyProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withUnreadMessagesCountByParty(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n UnreadMessagesCountByPartyQuery,\r\n UnreadMessagesCountByPartyQueryVariables,\r\n UnreadMessagesCountByPartyProps>) {\r\n return ApolloReactHoc.withQuery>(UnreadMessagesCountByPartyDocument, {\r\n alias: 'unreadMessagesCountByParty',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useUnreadMessagesCountByPartyQuery__\r\n *\r\n * To run a query within a React component, call `useUnreadMessagesCountByPartyQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useUnreadMessagesCountByPartyQuery` 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 } = useUnreadMessagesCountByPartyQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useUnreadMessagesCountByPartyQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(UnreadMessagesCountByPartyDocument, options);\r\n }\r\nexport function useUnreadMessagesCountByPartyLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(UnreadMessagesCountByPartyDocument, options);\r\n }\r\nexport type UnreadMessagesCountByPartyQueryHookResult = ReturnType;\r\nexport type UnreadMessagesCountByPartyLazyQueryHookResult = ReturnType;\r\nexport type UnreadMessagesCountByPartyQueryResult = Apollo.QueryResult;\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(AcceptTermsDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(BankingUserLoginDocument, options);\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 IsUsingGoogleAuth\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(BankingUserLoginV2Document, options);\r\n }\r\nexport type BankingUserLoginV2MutationHookResult = ReturnType;\r\nexport type BankingUserLoginV2MutationResult = Apollo.MutationResult;\r\nexport type BankingUserLoginV2MutationOptions = Apollo.BaseMutationOptions;\r\nexport const DisableProfileAuthenticatorDocument = gql`\r\n mutation disableProfileAuthenticator($input: DisableProfileAuthenticatorInput!) {\r\n disableProfileAuthenticator(input: $input) {\r\n clientMutationId\r\n Code\r\n Message\r\n Success\r\n }\r\n}\r\n `;\r\nexport type DisableProfileAuthenticatorMutationFn = Apollo.MutationFunction;\r\nexport type DisableProfileAuthenticatorComponentProps = Omit, 'mutation'>;\r\n\r\n export const DisableProfileAuthenticatorComponent = (props: DisableProfileAuthenticatorComponentProps) => (\r\n mutation={DisableProfileAuthenticatorDocument} {...props} />\r\n );\r\n \r\nexport type DisableProfileAuthenticatorProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withDisableProfileAuthenticator(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n DisableProfileAuthenticatorMutation,\r\n DisableProfileAuthenticatorMutationVariables,\r\n DisableProfileAuthenticatorProps>) {\r\n return ApolloReactHoc.withMutation>(DisableProfileAuthenticatorDocument, {\r\n alias: 'disableProfileAuthenticator',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useDisableProfileAuthenticatorMutation__\r\n *\r\n * To run a mutation, you first call `useDisableProfileAuthenticatorMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDisableProfileAuthenticatorMutation` 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 [disableProfileAuthenticatorMutation, { data, loading, error }] = useDisableProfileAuthenticatorMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useDisableProfileAuthenticatorMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(DisableProfileAuthenticatorDocument, options);\r\n }\r\nexport type DisableProfileAuthenticatorMutationHookResult = ReturnType;\r\nexport type DisableProfileAuthenticatorMutationResult = Apollo.MutationResult;\r\nexport type DisableProfileAuthenticatorMutationOptions = Apollo.BaseMutationOptions;\r\nexport const EnableProfileAuthenticatorDocument = gql`\r\n mutation enableProfileAuthenticator($input: EnableProfileAuthenticatorInput!) {\r\n enableProfileAuthenticator(input: $input) {\r\n clientMutationId\r\n Code\r\n Message\r\n Success\r\n }\r\n}\r\n `;\r\nexport type EnableProfileAuthenticatorMutationFn = Apollo.MutationFunction;\r\nexport type EnableProfileAuthenticatorComponentProps = Omit, 'mutation'>;\r\n\r\n export const EnableProfileAuthenticatorComponent = (props: EnableProfileAuthenticatorComponentProps) => (\r\n mutation={EnableProfileAuthenticatorDocument} {...props} />\r\n );\r\n \r\nexport type EnableProfileAuthenticatorProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withEnableProfileAuthenticator(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n EnableProfileAuthenticatorMutation,\r\n EnableProfileAuthenticatorMutationVariables,\r\n EnableProfileAuthenticatorProps>) {\r\n return ApolloReactHoc.withMutation>(EnableProfileAuthenticatorDocument, {\r\n alias: 'enableProfileAuthenticator',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useEnableProfileAuthenticatorMutation__\r\n *\r\n * To run a mutation, you first call `useEnableProfileAuthenticatorMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useEnableProfileAuthenticatorMutation` 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 [enableProfileAuthenticatorMutation, { data, loading, error }] = useEnableProfileAuthenticatorMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useEnableProfileAuthenticatorMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(EnableProfileAuthenticatorDocument, options);\r\n }\r\nexport type EnableProfileAuthenticatorMutationHookResult = ReturnType;\r\nexport type EnableProfileAuthenticatorMutationResult = Apollo.MutationResult;\r\nexport type EnableProfileAuthenticatorMutationOptions = Apollo.BaseMutationOptions;\r\nexport const GenerateAuthSecretDocument = gql`\r\n mutation generateAuthSecret($input: GenerateAuthSecretInput!) {\r\n generateAuthSecret(input: $input) {\r\n clientMutationId\r\n Code\r\n Message\r\n Success\r\n AuthSecret\r\n }\r\n}\r\n `;\r\nexport type GenerateAuthSecretMutationFn = Apollo.MutationFunction;\r\nexport type GenerateAuthSecretComponentProps = Omit, 'mutation'>;\r\n\r\n export const GenerateAuthSecretComponent = (props: GenerateAuthSecretComponentProps) => (\r\n mutation={GenerateAuthSecretDocument} {...props} />\r\n );\r\n \r\nexport type GenerateAuthSecretProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withGenerateAuthSecret(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n GenerateAuthSecretMutation,\r\n GenerateAuthSecretMutationVariables,\r\n GenerateAuthSecretProps>) {\r\n return ApolloReactHoc.withMutation>(GenerateAuthSecretDocument, {\r\n alias: 'generateAuthSecret',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useGenerateAuthSecretMutation__\r\n *\r\n * To run a mutation, you first call `useGenerateAuthSecretMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useGenerateAuthSecretMutation` 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 [generateAuthSecretMutation, { data, loading, error }] = useGenerateAuthSecretMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useGenerateAuthSecretMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(GenerateAuthSecretDocument, options);\r\n }\r\nexport type GenerateAuthSecretMutationHookResult = ReturnType;\r\nexport type GenerateAuthSecretMutationResult = Apollo.MutationResult;\r\nexport type GenerateAuthSecretMutationOptions = 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 IsUsingGoogleAuth\r\n MFAEnforced\r\n PartyPaymentLimitsEnabled\r\n UnreadMessageCount\r\n Party {\r\n Id\r\n PartyNumber\r\n FullName\r\n OrganisationName\r\n FirstName\r\n LastName\r\n SearchName\r\n PreferredCorrespondanceType\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(IsUserAuthenticatedDocument, options);\r\n }\r\nexport function useIsUserAuthenticatedLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(IsUserAuthenticatedDocument, options);\r\n }\r\nexport type IsUserAuthenticatedQueryHookResult = ReturnType;\r\nexport type IsUserAuthenticatedLazyQueryHookResult = ReturnType;\r\nexport type IsUserAuthenticatedQueryResult = Apollo.QueryResult;\r\nexport const PartyChangeElectronicCommsStatusDocument = gql`\r\n mutation partyChangeElectronicCommsStatus($input: ChangeElectronicCommsStatusInput!) {\r\n changeElectronicCommsStatus(input: $input) {\r\n clientMutationId\r\n Code\r\n Success\r\n Message\r\n SMSNotificationStatus\r\n EmailNotificationStatus\r\n StatementNotificationStatus\r\n }\r\n}\r\n `;\r\nexport type PartyChangeElectronicCommsStatusMutationFn = Apollo.MutationFunction;\r\nexport type PartyChangeElectronicCommsStatusComponentProps = Omit, 'mutation'>;\r\n\r\n export const PartyChangeElectronicCommsStatusComponent = (props: PartyChangeElectronicCommsStatusComponentProps) => (\r\n mutation={PartyChangeElectronicCommsStatusDocument} {...props} />\r\n );\r\n \r\nexport type PartyChangeElectronicCommsStatusProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withPartyChangeElectronicCommsStatus(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyChangeElectronicCommsStatusMutation,\r\n PartyChangeElectronicCommsStatusMutationVariables,\r\n PartyChangeElectronicCommsStatusProps>) {\r\n return ApolloReactHoc.withMutation>(PartyChangeElectronicCommsStatusDocument, {\r\n alias: 'partyChangeElectronicCommsStatus',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyChangeElectronicCommsStatusMutation__\r\n *\r\n * To run a mutation, you first call `usePartyChangeElectronicCommsStatusMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `usePartyChangeElectronicCommsStatusMutation` 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 [partyChangeElectronicCommsStatusMutation, { data, loading, error }] = usePartyChangeElectronicCommsStatusMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function usePartyChangeElectronicCommsStatusMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(PartyChangeElectronicCommsStatusDocument, options);\r\n }\r\nexport type PartyChangeElectronicCommsStatusMutationHookResult = ReturnType;\r\nexport type PartyChangeElectronicCommsStatusMutationResult = Apollo.MutationResult;\r\nexport type PartyChangeElectronicCommsStatusMutationOptions = Apollo.BaseMutationOptions;\r\nexport const PartyChangeMarketingCommsStatusDocument = gql`\r\n mutation partyChangeMarketingCommsStatus($input: ChangeMarketingCommsStatusInput!) {\r\n changeMarketingCommsStatus(input: $input) {\r\n clientMutationId\r\n Code\r\n Success\r\n Message\r\n MarketingStatus\r\n }\r\n}\r\n `;\r\nexport type PartyChangeMarketingCommsStatusMutationFn = Apollo.MutationFunction;\r\nexport type PartyChangeMarketingCommsStatusComponentProps = Omit, 'mutation'>;\r\n\r\n export const PartyChangeMarketingCommsStatusComponent = (props: PartyChangeMarketingCommsStatusComponentProps) => (\r\n mutation={PartyChangeMarketingCommsStatusDocument} {...props} />\r\n );\r\n \r\nexport type PartyChangeMarketingCommsStatusProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withPartyChangeMarketingCommsStatus(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyChangeMarketingCommsStatusMutation,\r\n PartyChangeMarketingCommsStatusMutationVariables,\r\n PartyChangeMarketingCommsStatusProps>) {\r\n return ApolloReactHoc.withMutation>(PartyChangeMarketingCommsStatusDocument, {\r\n alias: 'partyChangeMarketingCommsStatus',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyChangeMarketingCommsStatusMutation__\r\n *\r\n * To run a mutation, you first call `usePartyChangeMarketingCommsStatusMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `usePartyChangeMarketingCommsStatusMutation` 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 [partyChangeMarketingCommsStatusMutation, { data, loading, error }] = usePartyChangeMarketingCommsStatusMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function usePartyChangeMarketingCommsStatusMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(PartyChangeMarketingCommsStatusDocument, options);\r\n }\r\nexport type PartyChangeMarketingCommsStatusMutationHookResult = ReturnType;\r\nexport type PartyChangeMarketingCommsStatusMutationResult = Apollo.MutationResult;\r\nexport type PartyChangeMarketingCommsStatusMutationOptions = Apollo.BaseMutationOptions;\r\nexport const PartyChangePersonalDetailsDocument = gql`\r\n mutation partyChangePersonalDetails($input: PartyPersonalDetailsInput!) {\r\n partyPersonalDetails(input: $input) {\r\n clientMutationId\r\n Code\r\n Success\r\n Message\r\n PreferredCorrespondenceMethod\r\n }\r\n}\r\n `;\r\nexport type PartyChangePersonalDetailsMutationFn = Apollo.MutationFunction;\r\nexport type PartyChangePersonalDetailsComponentProps = Omit, 'mutation'>;\r\n\r\n export const PartyChangePersonalDetailsComponent = (props: PartyChangePersonalDetailsComponentProps) => (\r\n mutation={PartyChangePersonalDetailsDocument} {...props} />\r\n );\r\n \r\nexport type PartyChangePersonalDetailsProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withPartyChangePersonalDetails(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyChangePersonalDetailsMutation,\r\n PartyChangePersonalDetailsMutationVariables,\r\n PartyChangePersonalDetailsProps>) {\r\n return ApolloReactHoc.withMutation>(PartyChangePersonalDetailsDocument, {\r\n alias: 'partyChangePersonalDetails',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyChangePersonalDetailsMutation__\r\n *\r\n * To run a mutation, you first call `usePartyChangePersonalDetailsMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `usePartyChangePersonalDetailsMutation` 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 [partyChangePersonalDetailsMutation, { data, loading, error }] = usePartyChangePersonalDetailsMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function usePartyChangePersonalDetailsMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(PartyChangePersonalDetailsDocument, options);\r\n }\r\nexport type PartyChangePersonalDetailsMutationHookResult = ReturnType;\r\nexport type PartyChangePersonalDetailsMutationResult = Apollo.MutationResult;\r\nexport type PartyChangePersonalDetailsMutationOptions = Apollo.BaseMutationOptions;\r\nexport const PartyElectronicCommsStatusDocument = gql`\r\n query partyElectronicCommsStatus {\r\n electronicComms {\r\n SMSNotificationStatus\r\n EmailNotificationStatus\r\n StatementNotificationStatus\r\n }\r\n}\r\n `;\r\nexport type PartyElectronicCommsStatusComponentProps = Omit, 'query'>;\r\n\r\n export const PartyElectronicCommsStatusComponent = (props: PartyElectronicCommsStatusComponentProps) => (\r\n query={PartyElectronicCommsStatusDocument} {...props} />\r\n );\r\n \r\nexport type PartyElectronicCommsStatusProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withPartyElectronicCommsStatus(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyElectronicCommsStatusQuery,\r\n PartyElectronicCommsStatusQueryVariables,\r\n PartyElectronicCommsStatusProps>) {\r\n return ApolloReactHoc.withQuery>(PartyElectronicCommsStatusDocument, {\r\n alias: 'partyElectronicCommsStatus',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyElectronicCommsStatusQuery__\r\n *\r\n * To run a query within a React component, call `usePartyElectronicCommsStatusQuery` and pass it any options that fit your needs.\r\n * When your component renders, `usePartyElectronicCommsStatusQuery` 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 } = usePartyElectronicCommsStatusQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function usePartyElectronicCommsStatusQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(PartyElectronicCommsStatusDocument, options);\r\n }\r\nexport function usePartyElectronicCommsStatusLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(PartyElectronicCommsStatusDocument, options);\r\n }\r\nexport type PartyElectronicCommsStatusQueryHookResult = ReturnType;\r\nexport type PartyElectronicCommsStatusLazyQueryHookResult = ReturnType;\r\nexport type PartyElectronicCommsStatusQueryResult = Apollo.QueryResult;\r\nexport const PartyProfileDetailsDocument = gql`\r\n query partyProfileDetails {\r\n userSession {\r\n Id\r\n IsDeleted\r\n LastLoginAttempt\r\n LastLoginFrom\r\n LastPasswordChange\r\n PartyPaymentLimitsEnabled\r\n Party {\r\n AcceptsAdvertising\r\n Addresses {\r\n Address {\r\n AddressDetailType\r\n AddressLine1\r\n AddressLine2\r\n AddressLine3\r\n AddressLine4\r\n Building\r\n Country {\r\n Name\r\n }\r\n FloorName\r\n FloorNumber\r\n HasBeenVerified\r\n Id\r\n IsValid\r\n LotNumber\r\n PostalBoxDetails\r\n PostalCode\r\n PropertyName\r\n Region {\r\n Abbreviation\r\n Name\r\n }\r\n StreetName\r\n StreetNumberFrom\r\n StreetNumberTo\r\n StreetType\r\n SuburbTown\r\n UnitNumber\r\n }\r\n Id\r\n IsDefaultMailingAddress\r\n IsDefaultResidentialAddress\r\n IsDeleted\r\n IsPrevious\r\n }\r\n Contacts {\r\n Details\r\n Id\r\n IsDeleted\r\n IsPreferredEmail\r\n IsPreferredPhone\r\n IsPreferredSms\r\n Type {\r\n Description\r\n Id\r\n IsPhone\r\n ReceiveMessages\r\n }\r\n }\r\n EntityType\r\n FirstName\r\n Id\r\n LastName\r\n OrganisationName\r\n PartyNumber\r\n PreferredCorrespondanceType\r\n }\r\n UseMultiFactorAuth\r\n }\r\n}\r\n `;\r\nexport type PartyProfileDetailsComponentProps = Omit, 'query'>;\r\n\r\n export const PartyProfileDetailsComponent = (props: PartyProfileDetailsComponentProps) => (\r\n query={PartyProfileDetailsDocument} {...props} />\r\n );\r\n \r\nexport type PartyProfileDetailsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withPartyProfileDetails(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyProfileDetailsQuery,\r\n PartyProfileDetailsQueryVariables,\r\n PartyProfileDetailsProps>) {\r\n return ApolloReactHoc.withQuery>(PartyProfileDetailsDocument, {\r\n alias: 'partyProfileDetails',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyProfileDetailsQuery__\r\n *\r\n * To run a query within a React component, call `usePartyProfileDetailsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `usePartyProfileDetailsQuery` 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 } = usePartyProfileDetailsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function usePartyProfileDetailsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(PartyProfileDetailsDocument, options);\r\n }\r\nexport function usePartyProfileDetailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(PartyProfileDetailsDocument, options);\r\n }\r\nexport type PartyProfileDetailsQueryHookResult = ReturnType;\r\nexport type PartyProfileDetailsLazyQueryHookResult = ReturnType;\r\nexport type PartyProfileDetailsQueryResult = Apollo.QueryResult;\r\nexport const IndueCardActivateCardDocument = gql`\r\n mutation IndueCardActivateCard($input: IndueCardActivateCardInput!) {\r\n indueActivateCard(input: $input) {\r\n Result\r\n Success\r\n ActivateCardResult\r\n ChangePinResult\r\n Card {\r\n Id\r\n Status\r\n }\r\n }\r\n}\r\n `;\r\nexport type IndueCardActivateCardMutationFn = Apollo.MutationFunction;\r\nexport type IndueCardActivateCardComponentProps = Omit, 'mutation'>;\r\n\r\n export const IndueCardActivateCardComponent = (props: IndueCardActivateCardComponentProps) => (\r\n mutation={IndueCardActivateCardDocument} {...props} />\r\n );\r\n \r\nexport type IndueCardActivateCardProps = {\r\n [key in TDataName]: Apollo.MutationFunction\r\n } & TChildProps;\r\nexport function withIndueCardActivateCard(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n IndueCardActivateCardMutation,\r\n IndueCardActivateCardMutationVariables,\r\n IndueCardActivateCardProps>) {\r\n return ApolloReactHoc.withMutation>(IndueCardActivateCardDocument, {\r\n alias: 'indueCardActivateCard',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useIndueCardActivateCardMutation__\r\n *\r\n * To run a mutation, you first call `useIndueCardActivateCardMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useIndueCardActivateCardMutation` 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 [indueCardActivateCardMutation, { data, loading, error }] = useIndueCardActivateCardMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useIndueCardActivateCardMutation(baseOptions?: Apollo.MutationHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(IndueCardActivateCardDocument, options);\r\n }\r\nexport type IndueCardActivateCardMutationHookResult = ReturnType;\r\nexport type IndueCardActivateCardMutationResult = Apollo.MutationResult;\r\nexport type IndueCardActivateCardMutationOptions = Apollo.BaseMutationOptions;\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(IndueCardChangePinDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(IndueCardChangeStatusDocument, options);\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 Code\r\n Message\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(IndueCardCreateCardDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(IndueCardDetailsDocument, options);\r\n }\r\nexport function useIndueCardDetailsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(IndueCardDetailsDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(IndueCardsandAssociationsByAccountDocument, options);\r\n }\r\nexport function useIndueCardsandAssociationsByAccountLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(IndueCardsandAssociationsByAccountDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(IndueCardsByAccountDocument, options);\r\n }\r\nexport function useIndueCardsByAccountLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(IndueCardsByAccountDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(PartyAssociationByAccountDocument, options);\r\n }\r\nexport function usePartyAssociationByAccountLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(PartyAssociationByAccountDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(RequestNewMultiFactorSecurityTokenDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(DisbursementRequestDocument, options);\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 MaturityDate\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(FinanceSummaryQueryInlineDocument, options);\r\n }\r\nexport function useFinanceSummaryQueryInlineLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(FinanceSummaryQueryInlineDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(FinanceSummaryQueryDocument, options);\r\n }\r\nexport function useFinanceSummaryQueryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(FinanceSummaryQueryDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(InstrumentByIdOrNumberDocument, options);\r\n }\r\nexport function useInstrumentByIdOrNumberLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(InstrumentByIdOrNumberDocument, options);\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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(IsShariaDocument, options);\r\n }\r\nexport function useIsShariaLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(IsShariaDocument, options);\r\n }\r\nexport type IsShariaQueryHookResult = ReturnType;\r\nexport type IsShariaLazyQueryHookResult = ReturnType;\r\nexport type IsShariaQueryResult = Apollo.QueryResult;\r\nexport const MaxLimitsDocument = gql`\r\n query maxLimits {\r\n userSession {\r\n Id\r\n RedrawLimitMax\r\n PayAnyoneLimitMax\r\n BPayLimitMax\r\n }\r\n}\r\n `;\r\nexport type MaxLimitsComponentProps = Omit, 'query'>;\r\n\r\n export const MaxLimitsComponent = (props: MaxLimitsComponentProps) => (\r\n query={MaxLimitsDocument} {...props} />\r\n );\r\n \r\nexport type MaxLimitsProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withMaxLimits(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n MaxLimitsQuery,\r\n MaxLimitsQueryVariables,\r\n MaxLimitsProps>) {\r\n return ApolloReactHoc.withQuery>(MaxLimitsDocument, {\r\n alias: 'maxLimits',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useMaxLimitsQuery__\r\n *\r\n * To run a query within a React component, call `useMaxLimitsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useMaxLimitsQuery` 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 } = useMaxLimitsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useMaxLimitsQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(MaxLimitsDocument, options);\r\n }\r\nexport function useMaxLimitsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(MaxLimitsDocument, options);\r\n }\r\nexport type MaxLimitsQueryHookResult = ReturnType;\r\nexport type MaxLimitsLazyQueryHookResult = ReturnType;\r\nexport type MaxLimitsQueryResult = Apollo.QueryResult;\r\nexport const PartyLimitDocument = gql`\r\n query partyLimit {\r\n partyLimits {\r\n DailyRedrawLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n DefaultRedrawLimit {\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 DefaultPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyPayAnyoneLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n DailyBPayLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n DefaultBPayLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n RemainingDailyBPayLimit {\r\n CurrencyCode\r\n Amount\r\n }\r\n LimitEffectiveTo\r\n }\r\n}\r\n `;\r\nexport type PartyLimitComponentProps = Omit, 'query'>;\r\n\r\n export const PartyLimitComponent = (props: PartyLimitComponentProps) => (\r\n query={PartyLimitDocument} {...props} />\r\n );\r\n \r\nexport type PartyLimitProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withPartyLimit(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n PartyLimitQuery,\r\n PartyLimitQueryVariables,\r\n PartyLimitProps>) {\r\n return ApolloReactHoc.withQuery>(PartyLimitDocument, {\r\n alias: 'partyLimit',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __usePartyLimitQuery__\r\n *\r\n * To run a query within a React component, call `usePartyLimitQuery` and pass it any options that fit your needs.\r\n * When your component renders, `usePartyLimitQuery` 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 } = usePartyLimitQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function usePartyLimitQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(PartyLimitDocument, options);\r\n }\r\nexport function usePartyLimitLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(PartyLimitDocument, options);\r\n }\r\nexport type PartyLimitQueryHookResult = ReturnType;\r\nexport type PartyLimitLazyQueryHookResult = ReturnType;\r\nexport type PartyLimitQueryResult = Apollo.QueryResult;\r\nexport const SecureMessageTypesDocument = gql`\r\n query secureMessageTypes {\r\n secureMessageTypes {\r\n Id\r\n IsAccount\r\n IsSystem\r\n Name\r\n Description\r\n DisplayOrder\r\n }\r\n}\r\n `;\r\nexport type SecureMessageTypesComponentProps = Omit, 'query'>;\r\n\r\n export const SecureMessageTypesComponent = (props: SecureMessageTypesComponentProps) => (\r\n query={SecureMessageTypesDocument} {...props} />\r\n );\r\n \r\nexport type SecureMessageTypesProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withSecureMessageTypes(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n SecureMessageTypesQuery,\r\n SecureMessageTypesQueryVariables,\r\n SecureMessageTypesProps>) {\r\n return ApolloReactHoc.withQuery>(SecureMessageTypesDocument, {\r\n alias: 'secureMessageTypes',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useSecureMessageTypesQuery__\r\n *\r\n * To run a query within a React component, call `useSecureMessageTypesQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useSecureMessageTypesQuery` 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 } = useSecureMessageTypesQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useSecureMessageTypesQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(SecureMessageTypesDocument, options);\r\n }\r\nexport function useSecureMessageTypesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(SecureMessageTypesDocument, options);\r\n }\r\nexport type SecureMessageTypesQueryHookResult = ReturnType;\r\nexport type SecureMessageTypesLazyQueryHookResult = ReturnType;\r\nexport type SecureMessageTypesQueryResult = Apollo.QueryResult;\r\nexport const StatementsByPartyIdDocument = gql`\r\n query statementsByPartyId {\r\n statementsByPartyId {\r\n Id\r\n AccountId\r\n AccountNumber\r\n AdHoc\r\n CreatedOn\r\n InstrumentId\r\n Number\r\n PeriodFrom\r\n PeriodTo\r\n Filename\r\n FileId\r\n }\r\n}\r\n `;\r\nexport type StatementsByPartyIdComponentProps = Omit, 'query'>;\r\n\r\n export const StatementsByPartyIdComponent = (props: StatementsByPartyIdComponentProps) => (\r\n query={StatementsByPartyIdDocument} {...props} />\r\n );\r\n \r\nexport type StatementsByPartyIdProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withStatementsByPartyId(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n StatementsByPartyIdQuery,\r\n StatementsByPartyIdQueryVariables,\r\n StatementsByPartyIdProps>) {\r\n return ApolloReactHoc.withQuery>(StatementsByPartyIdDocument, {\r\n alias: 'statementsByPartyId',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useStatementsByPartyIdQuery__\r\n *\r\n * To run a query within a React component, call `useStatementsByPartyIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useStatementsByPartyIdQuery` 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 } = useStatementsByPartyIdQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useStatementsByPartyIdQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(StatementsByPartyIdDocument, options);\r\n }\r\nexport function useStatementsByPartyIdLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(StatementsByPartyIdDocument, options);\r\n }\r\nexport type StatementsByPartyIdQueryHookResult = ReturnType;\r\nexport type StatementsByPartyIdLazyQueryHookResult = ReturnType;\r\nexport type StatementsByPartyIdQueryResult = Apollo.QueryResult;\r\nexport const ToDoItemTypesDocument = gql`\r\n query toDoItemTypes($input: ToDoItemTypesInput!) {\r\n toDoItemTypes(input: $input) {\r\n Id\r\n Description\r\n SecureMessageType {\r\n Id\r\n IsAccount\r\n IsSystem\r\n Description\r\n DisplayOrder\r\n Name\r\n }\r\n }\r\n}\r\n `;\r\nexport type ToDoItemTypesComponentProps = Omit, 'query'> & ({ variables: ToDoItemTypesQueryVariables; skip?: boolean; } | { skip: boolean; });\r\n\r\n export const ToDoItemTypesComponent = (props: ToDoItemTypesComponentProps) => (\r\n query={ToDoItemTypesDocument} {...props} />\r\n );\r\n \r\nexport type ToDoItemTypesProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withToDoItemTypes(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n ToDoItemTypesQuery,\r\n ToDoItemTypesQueryVariables,\r\n ToDoItemTypesProps>) {\r\n return ApolloReactHoc.withQuery>(ToDoItemTypesDocument, {\r\n alias: 'toDoItemTypes',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useToDoItemTypesQuery__\r\n *\r\n * To run a query within a React component, call `useToDoItemTypesQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useToDoItemTypesQuery` 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 } = useToDoItemTypesQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\r\nexport function useToDoItemTypesQuery(baseOptions: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(ToDoItemTypesDocument, options);\r\n }\r\nexport function useToDoItemTypesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(ToDoItemTypesDocument, options);\r\n }\r\nexport type ToDoItemTypesQueryHookResult = ReturnType;\r\nexport type ToDoItemTypesLazyQueryHookResult = ReturnType;\r\nexport type ToDoItemTypesQueryResult = Apollo.QueryResult;\r\nexport const TransferAccountsByPartyDocument = gql`\r\n query transferAccountsByParty {\r\n transferAccountsByParty {\r\n AccountId\r\n AccountCategory\r\n AccountName\r\n AccountNumber\r\n BSB\r\n BillerCode\r\n RedrawBalance\r\n IsBankAccount\r\n IsExternal\r\n IsBPay\r\n InstrumentId\r\n AllowRead\r\n AllowOperate\r\n AllowBPay\r\n AllowRedraw\r\n AllowPayAnyone\r\n CapitalAccountNumber\r\n IsDirectDebit\r\n IsDirectCredit\r\n FunderAllowsNPP\r\n AccountIsValidForNPP\r\n MinimumDirectDebitDate\r\n }\r\n}\r\n `;\r\nexport type TransferAccountsByPartyComponentProps = Omit, 'query'>;\r\n\r\n export const TransferAccountsByPartyComponent = (props: TransferAccountsByPartyComponentProps) => (\r\n query={TransferAccountsByPartyDocument} {...props} />\r\n );\r\n \r\nexport type TransferAccountsByPartyProps = {\r\n [key in TDataName]: ApolloReactHoc.DataValue\r\n } & TChildProps;\r\nexport function withTransferAccountsByParty(operationOptions?: ApolloReactHoc.OperationOption<\r\n TProps,\r\n TransferAccountsByPartyQuery,\r\n TransferAccountsByPartyQueryVariables,\r\n TransferAccountsByPartyProps>) {\r\n return ApolloReactHoc.withQuery>(TransferAccountsByPartyDocument, {\r\n alias: 'transferAccountsByParty',\r\n ...operationOptions\r\n });\r\n};\r\n\r\n/**\r\n * __useTransferAccountsByPartyQuery__\r\n *\r\n * To run a query within a React component, call `useTransferAccountsByPartyQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useTransferAccountsByPartyQuery` 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 } = useTransferAccountsByPartyQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useTransferAccountsByPartyQuery(baseOptions?: Apollo.QueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useQuery(TransferAccountsByPartyDocument, options);\r\n }\r\nexport function useTransferAccountsByPartyLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\r\n const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useLazyQuery(TransferAccountsByPartyDocument, options);\r\n }\r\nexport type TransferAccountsByPartyQueryHookResult = ReturnType;\r\nexport type TransferAccountsByPartyLazyQueryHookResult = ReturnType;\r\nexport type TransferAccountsByPartyQueryResult = 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 const options = {...defaultOptions, ...baseOptions}\r\n return Apollo.useMutation(DismissNotificationDocument, options);\r\n }\r\nexport type DismissNotificationMutationHookResult = ReturnType;\r\nexport type DismissNotificationMutationResult = Apollo.MutationResult;\r\nexport type DismissNotificationMutationOptions = Apollo.BaseMutationOptions;","/** 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\tlogoImageUri: string;\r\n\r\n\t/** Brand Logo suitable for dark backgrounds (Transparent background), use absolute offset **/\r\n\tlogoImageLightUri: string;\r\n\r\n\t/** Brand Logo suitable for light backgrounds (Transparent background), use absolute offset **/\r\n\tlogoImageDarkUri: string;\r\n\r\n\t/** Logo Variant, eg '/images/logo-withoutTagline.png' */\r\n\tlogoImageVariantUri: 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\tbankCardActiveUri: string;\r\n\tbankCardInActiveUri: string;\r\n\r\n\t/** Login Screen layout, 2 options using the hero image and a default fallback using the 'brandColourPrimary' variable */\r\n\tloginScreenLayout: 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 'Forgot your Username?' popup */\r\n\tforgotUsernamePageTitle: string;\r\n\r\n\t/** Custom body copy for the 'Forgot your Username?' popup */\r\n\tforgotUsernamePageCopy: string;\r\n\r\n\t/** Custom page header for the 'Forgot your Password?' popup */\r\n\tforgotPasswordPageTitle: string;\r\n\r\n\t/** Custom body copy for the 'Forgot your Password?' popup */\r\n\tforgotPasswordPageCopy: 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/** How many accounts to display on dashboard */\r\n\tnumberOfAccountsToDisplayOnDashboard?: 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 Fortis */\r\n\tcurrencyFormat: string;\r\n\r\n\t/** Specifies the locale for the currency symbol to be used with Fortis 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 accounts 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 over limit amount in the account summary header */\r\n\tcanViewArrearsAmount: boolean;\r\n\r\n\ttransferCardsSubText: string;\r\n\r\n\t//** The productLabel to be used in the authenticator QR uri */\r\n\t_productLabel: string;\r\n\r\n\t//** The issuer to be used in the authenticator QR uri */\r\n\t_issuer: string; \r\n\r\n\t//** Login screen - Custom text that will be displayed on the login screen when using Google Auth for 2FA.*/\r\n\tloginAuthenticatorMessage: string; \r\n\r\n\t//** Manage 2FA - Custom text that will be displayed on the Manage Two-Factor Authentication (2FA) page when Authenticator app has been setup.*/\r\n\tmanageAuthenticatorMessage: string; \r\n\r\n\t//* Login screen - Custom text that will be displayed on the login screen when using Security Token (via SMS/Email) for 2FA.*/\r\n\tloginSecurityTokenMessage: string; \r\n\r\n\t//* Setup 2FA - Custom text that will be displayed on the Setup Two-Factor Authentication (2FA) page when using Security Token (via SMS/Email) for 2FA.*/\r\n\tmanageSecurityTokenMessage: string;\r\n\r\n\t//** Account Disbursements - Show disbursement form for users to request a payment to be made on their behalf from a selected account */\r\n\tallowDisbursements: boolean\r\n\r\n\t//** Disbursements - Custom text shown above file uploads for disbursements */\r\n\tdisbursementFileText: string;\r\n\r\n\t//** Profile Settings - If true, display email and phone number in Personal Information section. */\r\n\tshowProfilePersonalInformation: boolean;\r\n\r\n\t//** Profile Settings - If true, display both residential and mailing addresses. */\r\n\tshowProfileAddresses: boolean;\r\n\r\n\t//** Profile Settings - If true, display the Preferred method of correspondence set against the party. */\r\n\tshowProfilePreferredMethodOfCorrespondence: boolean;\r\n\r\n\t//** Secure Messaging - If disabled, secure message page will be hidden. */\r\n\tdisplaySecureMessagePage: boolean;\r\n\r\n\t//** Transfers & Payments - If true, provide users with the ability to manage BPAY billers, (i.e. add and delete billers) */\r\n\tshowManageBPAYBillers: boolean;\r\n\r\n\t//** Transfers & Payments - If true, the 'Realtime Payment?' option will be defaulted to 'ON' for applicable transfers */\r\n\tuseRealtimePaymentDefaultedOn: boolean;\r\n\r\n\t//** Transfers & Payments - The tooltip text that will be displayed when user hovers over the Realtime Payment switch */\r\n\trealtimePaymentTooltipText: string;\r\n}\r\nconst clientConfigFn = (): ClientConfig & BaseConfig => {\r\n\tconst windowConfig = window && (window as any).__INTERFI__ as Partial;\r\n\treturn {\r\n\t\tbaseuri: process.env.REACT_APP_FORTIS_BASEURI || \"///\",\r\n\t\tclientVersion: process.env.REACT_APP_CAPITAL_CLIENT_VERSION || \"\",\r\n\r\n\t\t// SITE BRANDING & LAYOUT\r\n\t\tsiteTitle: \"\",\r\n\t\tfooterText: \"\",\r\n\t\tuseSimpleLayout: false,\r\n\t\tcurrencyFormat: \"AUD\",\r\n\t\tcurrencyLocale: \"EN-AU\",\r\n\t\tlogoImageUri: \"\", //OBSOLETE\r\n\t\tlogoSecondaryImageUri: \"\", //OBSOLETE\r\n\t\tlogoImageLightUri: \"\",\r\n logoImageDarkUri: \"\",\r\n logoImageVariantUri: \"\",\r\n\t\theroImageUri: \"\",\r\n\t\tbankCardActiveUri: \"\",\r\n\t\tbankCardInActiveUri: \"\",\r\n\t\tloginScreenLayout: \"\",\r\n\r\n\t\t// HELP & SUPPORT\r\n\t\tshowClientVersion: true,\r\n\t\tshowTermsAndConditions: false,\r\n\t\tshowPrivacyPolicy: false,\r\n\t\tsupportEmailAddress: \"\",\r\n\t\tsupportPhoneNumber: \"\",\r\n\t\t\r\n\t\t// LOGIN SCREEN\r\n\t\tloginWelcomeMessage: \"Welcome to Fortis. Our online solution to support your business goals.\",\r\n\t\tforgotUsernamePageTitle: \"\",\r\n\t\tforgotUsernamePageCopy: \"\",\r\n\t\tforgotPasswordPageTitle: \"\",\r\n forgotPasswordPageCopy: \"\",\r\n\r\n\t\t// LOGIN SCREEN - RESET PASSWORD\r\n\t\tallowOnlinePasswordReset: false,\r\n\t\tloginResetPasswordText: \"Reset Password\",\r\n\r\n \t\t// NAVIGATION\r\n\t\ttransferMenuText: \"Transfer\", //OBSOLETE\r\n\r\n\t\t// USER PROFILE\r\n\t\thideLastLoginIp: false,\r\n\r\n\t\t// AUTHENTICATOR / 2FA\r\n\t\t_productLabel: \"\",\r\n _issuer: \"\",\r\n\t\tloginAuthenticatorMessage: \"Confirm your login by entering the authorisation code provided by your preferred one-time password application.\",\r\n\t\tmanageAuthenticatorMessage: \"To manage your authentication settings, please enter the authorisation code provided by your preferred one-time password application.\",\r\n\t\tloginSecurityTokenMessage: \"Confirm your login by entering the security token that you will receive shortly.\",\r\n\t\tmanageSecurityTokenMessage: \"To begin setting up an authenticator app, enter the security token that you will receive shortly.\",\r\n\r\n\t\t// MY FINANCES / ACCOUNTS\r\n\t\tmyFinancesTitle: \"My Finances\",\r\n\t\tshowUserInWelcomeMessage: false,\r\n\t\tshowInstrumentTitle: true,\r\n\t\tmaturesMetricLabel: \"Matures\",\r\n\t\tshowAccountTitle: true,\r\n\t\tminimumInstalmentLabel: \"Min monthly instalment\",\r\n\t\tshowAvailableRedraw: true,\r\n\t\tarrearsMessage: \"\",\r\n\t\taccountAvailableLabel: \"Available\",\r\n\t\tshowPrimaryBorrowerName: false,\r\n\t\tshowAccountCurrentRate: false,\r\n\t\tnumberOfAccountsToDisplayOnDashboard: 5,\r\n\t\tcanViewArrearsAmount: false,\r\n\t\tredirectToSingleInstrument: false,\r\n\t\r\n\t\t// TRANSFERS\r\n\t\thideTransferPage: false,\r\n\t\tbankingCutOffWarning: \"\",\r\n\t\tfundsTransferDescriptionRequired: false,\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\ttransferCardsSubText: \"\",\r\n\t\tallowDisbursements: false,\r\n\t\tdisbursementFileText: \"\",\r\n\t\tshowManageBPAYBillers: true,\r\n\t\tuseRealtimePaymentDefaultedOn: false,\r\n\t\trealtimePaymentTooltipText: \"Choosing Realtime payment will allow for a single payment to be processed immediately\",\r\n\t\t\r\n\t\t// STATEMENTS\r\n\t\tallowOnLineStatements: false,\r\n\t\t\r\n\t\t// CARDS\r\n\t\thideCardPage: true,\r\n\t\t\r\n\t\t// TRANSACTIONS\r\n\t\ttransactionHistoryLimitDays: 90,\r\n\t\ttransactionPageSize: 20,\r\n\t\tshowIconsTransactionPage: false,\r\n BETA_showDetailView: false,\r\n\t\tshowTransactionsAsLender: true,\r\n\r\n\t\t// PROFILE SETTINGS\r\n\t\tshowProfilePersonalInformation: true,\r\n\t\tshowProfileAddresses: true,\r\n\t\tshowProfilePreferredMethodOfCorrespondence: true,\r\n\r\n\t\t// SECURE MESSAGING\r\n\t\tdisplaySecureMessagePage: true,\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\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\nimport Alert from '@mui/material/Alert';\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 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(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
\r\n \r\n
\r\n )\r\n }\r\n\r\n if (error !== undefined) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n return \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 \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 \r\n\r\n\r\nexport default PrivacyPolicy;\r\n","import DOMPurify from \"dompurify\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\ntype SanitisedLogoProps = {\r\n logoUri: String,\r\n siteTitle: String\r\n}\r\n\r\nconst SanitisedLogo = (props: SanitisedLogoProps) => {\r\n return (\r\n \r\n `)\r\n }} \r\n />\r\n );\r\n}\r\n\r\nexport default SanitisedLogo;","import * as React from \"react\";\r\nimport { IsNullOrWhiteSpace } from 'core/util/stringExtensions';\r\nimport { Link, NavLink, useRouteMatch } from \"react-router-dom\";\r\nimport { useIsUserAuthenticatedQuery, useUnreadMessagesCountByPartyQuery} from \"generated/generated-models\";\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport TermsAndConditions from \"../../other/TermsAndConditions\";\r\nimport PrivacyPolicy from \"../../other/PrivacyPolicy\";\r\nimport { styled, Theme, CSSObject } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\nimport MuiDrawer from '@mui/material/Drawer';\r\nimport MuiAppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport List from '@mui/material/List';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport Divider from '@mui/material/Divider';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog, { DialogProps } from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport ExpandLess from '@mui/icons-material/ExpandLess';\r\nimport ExpandMore from '@mui/icons-material/ExpandMore';\r\nimport Collapse from '@mui/material/Collapse';\r\nimport AccountCircle from '@mui/icons-material/AccountCircle';\r\nimport HomeIcon from '@mui/icons-material/Home';\r\nimport AccountIcon from '@mui/icons-material/AccountBalance';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport SignoutIcon from '@mui/icons-material/Logout';\r\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline';\r\nimport SupportOutlinedIcon from '@mui/icons-material/SupportOutlined';\r\nimport GavelOutlinedIcon from '@mui/icons-material/GavelOutlined';\r\nimport PolicyOutlinedIcon from '@mui/icons-material/PolicyOutlined';\r\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport MailIcon from '@mui/icons-material/Mail';\r\nimport CompareArrowsIcon from '@mui/icons-material/CompareArrows';\r\nimport BadgeIcon from '@mui/icons-material/Badge';\r\nimport FeedIcon from '@mui/icons-material/Feed';\r\nimport Slide from '@mui/material/Slide';\r\nimport { TransitionProps } from '@mui/material/transitions';\r\nimport SanitisedLogo from \"app/components/SanitisedLogo\";\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\nimport { Badge } from \"@mui/material\";\r\n\r\nconst drawerWidth = 260;\r\nconst openedMixin = (theme: Theme): CSSObject => ({\r\n width: drawerWidth,\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n overflowX: 'hidden',\r\n});\r\n\r\nconst closedMixin = (theme: Theme): CSSObject => ({\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: 'hidden',\r\n width: `calc(${theme.spacing(6)} + 1px)`,\r\n [theme.breakpoints.up('sm')]: {\r\n width: `calc(${theme.spacing(8)} + 1px)`,\r\n },\r\n});\r\n\r\nconst DrawerHeader = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: theme.spacing(0, 1),\r\n ...theme.mixins.toolbar,\r\n}));\r\ninterface AppBarProps extends MuiAppBarProps {\r\n open?: boolean;\r\n}\r\n\r\nconst AppBar = styled(MuiAppBar, {\r\n})(({ theme, open }) => ({\r\n zIndex: theme.zIndex.drawer,\r\n transition: theme.transitions.create(['width', 'margin'], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n ...(open && {\r\n marginLeft: drawerWidth,\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create(['width', 'margin'], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n }),\r\n}));\r\n\r\nconst Drawer = styled(MuiDrawer)(\r\n ({ theme, open }) => ({\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n whiteSpace: 'nowrap',\r\n boxSizing: 'border-box',\r\n ...(open && {\r\n ...openedMixin(theme),\r\n '& .MuiDrawer-paper': openedMixin(theme),\r\n }),\r\n ...(!open && {\r\n ...closedMixin(theme),\r\n '& .MuiDrawer-paper': closedMixin(theme),\r\n }),\r\n }),\r\n);\r\n\r\nconst Transition = React.forwardRef(function Transition(\r\n props: TransitionProps & {\r\n children: React.ReactElement;\r\n },\r\n ref: React.Ref,\r\n ) {\r\n return ;\r\n });\r\n\r\nconst NavbarMini = () => {\r\n const accountMatch = useRouteMatch<{ accountId: string }>(\"/Account/Index/:accountId/\");\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 { data: unreadMessagesCountByParty} = useUnreadMessagesCountByPartyQuery({\r\n partialRefetch: true,\r\n notifyOnNetworkStatusChange: true,\r\n errorPolicy: \"all\"\r\n });\r\n\r\n const { hideTransferPage, allowOnLineStatements } = clientConfigFn();\r\n const loggedIn = userSessionData && !userSessionError && !userSessionLoading;\r\n const clientConfig = clientConfigFn();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [scroll] = React.useState('paper');\r\n\r\n const [open, setOpenNav] = React.useState(false);\r\n const handleDrawerOpenNav = () => {\r\n setOpenNav(true);\r\n };\r\n const handleDrawerCloseNav = () => {\r\n setOpenNav(false);\r\n };\r\n\r\n const [openHelp, setOpenHelp] = React.useState(false);\r\n const handleClickHelp = () => {\r\n setOpenHelp(!openHelp);\r\n };\r\n const [openTerms, setOpenTerms] = React.useState(false);\r\n const handleClickOpenTerms = () => {\r\n setOpenTerms(true);\r\n };\r\n const handleCloseTerms = () => {\r\n setOpenTerms(false);\r\n };\r\n const [openPrivacy, setOpenPrivacy] = React.useState(false);\r\n const handleClickOpenPrivacy = () => {\r\n setOpenPrivacy(true);\r\n };\r\n const handleClosePrivacy = () => {\r\n setOpenPrivacy(false);\r\n };\r\n const [openSupport, setOpenSupport] = React.useState(false);\r\n const handleClickOpenSupport = () => {\r\n setOpenSupport(true);\r\n };\r\n const handleCloseSupport = () => {\r\n setOpenSupport(false);\r\n };\r\n\r\n const settings = ['Message Title 1', 'New Message', 'System Alert', 'Capital Upgrade'];\r\n const [anchorElUser, setAnchorElUser] = React.useState(null);\r\n const handleOpenUserMenu = (event: React.MouseEvent) => {\r\n setAnchorElUser(event.currentTarget);\r\n };\r\n const handleCloseUserMenu = () => {\r\n setAnchorElUser(null);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {loggedIn &&\r\n \r\n \r\n \r\n }\r\n {!IsNullOrWhiteSpace(clientConfig.logoImageVariantUri) &&\r\n
\r\n \r\n
\r\n }\r\n {loggedIn && clientConfigFn().displaySecureMessagePage &&\r\n \r\n \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\n \r\n \r\n \r\n \r\n \r\n \r\n {!loggedIn && (window.location.pathname !== \"/security/login\") &&\r\n \r\n \r\n \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 {loggedIn &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n } \r\n {accountMatch &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n <>\r\n {accountMatch && !hideTransferPage &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {allowDisbursements &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {accountMatch?.params.accountId &&\r\n \r\n }\r\n \r\n */}\r\n
\r\n }\r\n {loggedIn && !hideTransferPage &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {loggedIn && allowOnLineStatements &&\r\n \r\n \r\n \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\n \r\n
\r\n \r\n \r\n \r\n {openHelp ? : }\r\n \r\n \r\n \r\n {clientConfig.supportEmailAddress &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

Need support?

\r\n

If you need assistance, you can contact our support team anytime by\r\n {clientConfig.supportEmailAddress && !clientConfig.supportPhoneNumber && <> emailing {clientConfig.supportEmailAddress}.}\r\n {clientConfig.supportPhoneNumber && !clientConfig.supportEmailAddress && <> calling
{clientConfig.supportPhoneNumber}.}\r\n {clientConfig.supportEmailAddress && clientConfig.supportPhoneNumber && <> emailing {clientConfig.supportEmailAddress} or calling
{clientConfig.supportPhoneNumber}.}

\r\n\r\n
\r\n
\r\n \r\n \r\n }\r\n {clientConfig.showTermsAndConditions &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Terms and Conditions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n {clientConfig.showPrivacyPolicy &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Privacy Policy\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n {clientConfig.clientVersion === \"\" || clientConfig.showClientVersion === false ?\r\n <> : \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport {\r\n NavbarMini\r\n}\r\n","import * as React from \"react\";\r\nimport { IsNullOrWhiteSpace } from 'core/util/stringExtensions';\r\nimport { Link, NavLink, useRouteMatch } from \"react-router-dom\";\r\nimport { useIsUserAuthenticatedQuery, useUnreadMessagesCountByPartyQuery } from \"generated/generated-models\";\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport TermsAndConditions from \"../../other/TermsAndConditions\";\r\nimport PrivacyPolicy from \"../../other/PrivacyPolicy\";\r\nimport { AppBar, Badge } from \"@mui/material\";\r\nimport Drawer from \"@mui/material/Drawer\";\r\nimport { styled } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport List from '@mui/material/List';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport Divider from '@mui/material/Divider';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport ExpandLess from '@mui/icons-material/ExpandLess';\r\nimport ExpandMore from '@mui/icons-material/ExpandMore';\r\nimport Collapse from '@mui/material/Collapse';\r\nimport AccountCircle from '@mui/icons-material/AccountCircle';\r\nimport HomeIcon from '@mui/icons-material/Home';\r\nimport AccountIcon from '@mui/icons-material/AccountBalance';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport SignoutIcon from '@mui/icons-material/Logout';\r\nimport BadgeIcon from '@mui/icons-material/Badge';\r\nimport SupportOutlinedIcon from '@mui/icons-material/SupportOutlined';\r\nimport GavelOutlinedIcon from '@mui/icons-material/GavelOutlined';\r\nimport PolicyOutlinedIcon from '@mui/icons-material/PolicyOutlined';\r\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport MailIcon from '@mui/icons-material/Mail';\r\nimport CompareArrowsIcon from '@mui/icons-material/CompareArrows';\r\nimport FeedIcon from '@mui/icons-material/Feed';\r\nimport Slide from '@mui/material/Slide';\r\nimport { TransitionProps } from '@mui/material/transitions';\r\nimport SanitisedLogo from \"app/components/SanitisedLogo\";\r\nimport BottomNavigation from '@mui/material/BottomNavigation';\r\nimport BottomNavigationAction from '@mui/material/BottomNavigationAction';\r\nimport Paper from '@mui/material/Paper';\r\n\r\nconst drawerWidth = 260;\r\nconst Transition = React.forwardRef(function Transition(\r\n props: TransitionProps & {\r\n children: React.ReactElement;\r\n },\r\n ref: React.Ref,\r\n ) {\r\n return ;\r\n });\r\n\r\nconst Navbar = () => {\r\n const accountMatch = useRouteMatch<{ accountId: string }>(\"/Account/Index/:accountId/\");\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 { data: unreadMessagesCountByParty} = useUnreadMessagesCountByPartyQuery({\r\n partialRefetch: true,\r\n notifyOnNetworkStatusChange: true,\r\n errorPolicy: \"all\"\r\n });\r\n\r\n const { hideTransferPage, allowOnLineStatements } = clientConfigFn();\r\n const loggedIn = userSessionData && !userSessionError && !userSessionLoading;\r\n\r\n const clientConfig = clientConfigFn();\r\n\r\n const [openNav, setOpenNav] = React.useState(false);\r\n const toggleNav = (event: any) => {\r\n if (event.type === \"keydown\" && (event.key === \"Tab\" || event.key === \"Shift\")) { return; }\r\n setOpenNav(!openNav);\r\n };\r\n const handleDrawerCloseNav = () => {\r\n setOpenNav(false);\r\n };\r\n const [openHelp, setOpenHelp] = React.useState(false);\r\n const handleClickHelp = () => {\r\n setOpenHelp(!openHelp);\r\n };\r\n const [openTerms, setOpenTerms] = React.useState(false);\r\n const handleClickOpenTerms = () => {\r\n setOpenTerms(true);\r\n };\r\n const handleCloseTerms = () => {\r\n setOpenTerms(false);\r\n };\r\n const [openPrivacy, setOpenPrivacy] = React.useState(false);\r\n const handleClickOpenPrivacy = () => {\r\n setOpenPrivacy(true);\r\n };\r\n const handleClosePrivacy = () => {\r\n setOpenPrivacy(false);\r\n };\r\n\r\n const DrawerHeader = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: 'flex-end',\r\n }));\r\n const [value, setValue] = React.useState(0);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {loggedIn &&\r\n \r\n \r\n \r\n }\r\n {!IsNullOrWhiteSpace(clientConfig.logoImageVariantUri) &&\r\n
\r\n \r\n
\r\n }\r\n {loggedIn && clientConfigFn().displaySecureMessagePage &&\r\n \r\n \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\n \r\n \r\n \r\n \r\n \r\n \r\n {!loggedIn && (window.location.pathname !== \"/security/login\") &&\r\n \r\n \r\n \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 {loggedIn &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n } \r\n {accountMatch &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n <>\r\n {accountMatch && !hideTransferPage &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {allowDisbursements &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {accountMatch?.params.accountId &&\r\n \r\n }\r\n \r\n */}\r\n
\r\n }\r\n {loggedIn && !hideTransferPage &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {loggedIn && allowOnLineStatements &&\r\n \r\n \r\n \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\n \r\n
\r\n \r\n \r\n \r\n {openHelp ? : }\r\n \r\n \r\n \r\n {clientConfig.showTermsAndConditions &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Terms and Conditions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n {clientConfig.showPrivacyPolicy &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Privacy Policy\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n {clientConfig.clientVersion === \"\" || clientConfig.showClientVersion === false ?\r\n <> : \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setValue(newValue);\r\n }}\r\n >\r\n {loggedIn &&\r\n } component={NavLink} to=\"/\" />\r\n }\r\n {loggedIn &&\r\n } component={NavLink} to={`/account/accountlist`} />\r\n } \r\n {loggedIn &&\r\n } component={NavLink} to={`/transfersAndPayments`}/>\r\n } \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport {\r\n Navbar\r\n}\r\n","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 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\nimport Alert from '@mui/material/Alert';\r\nimport SignoutIcon from '@mui/icons-material/Logout';\r\nimport Button from '@mui/material/Button';\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
at \r\n \r\n \r\n
at \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
\r\n

Login History

\r\n
\r\n \r\n \r\n
\r\n
\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 Out\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 \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

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 Location' (this can be found\r\n in user profile by clicking the 'User' icon in the top-right hand corner of the application) then \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 'Log Out' link in the left hand menu bar.\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 Out\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\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 );\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 DOMPurify from \"dompurify\";\r\n\r\ntype SanitisedBackgroundImageProps = {\r\n src: string,\r\n className?: string,\r\n}\r\n\r\nconst SanitisedBackgroundImage = (props: SanitisedBackgroundImageProps) => {\r\n return (\r\n
\r\n )\r\n}\r\n\r\n//
\r\nexport default SanitisedBackgroundImage;","import SanitisedBackgroundImage from \"app/components/SanitisedBackgroundImage\";\r\nimport SanitisedLogo from \"app/components/SanitisedLogo\";\r\nimport { 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 (config.loginScreenLayout === \"backgroundHero\" && config.heroImageUri !== \"\") {\r\n return (\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 if (config.loginScreenLayout === \"splitHero\" && config.heroImageUri !== \"\") {\r\n return (\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\n )\r\n } else {\r\n return (\r\n
\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 { ApolloError } from \"@apollo/client\";\r\nimport { BankingUserLoginV2Mutation, LoginV3AuthError } from \"generated/generated-models\";\r\nimport Alert from '@mui/material/Alert';\r\n\r\nconst generateErrorMessage = (error?: ApolloError, data?: BankingUserLoginV2Mutation | null, isUsingGoogleAuth?:boolean | 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 isUsingGoogleAuth ? \"Invalid Auth Code\" : \"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, isUsingGoogleAuth }: { loginError?: ApolloError, loginResponse?: BankingUserLoginV2Mutation | null, isUsingGoogleAuth?:boolean | null }) => {\r\n const errorMessage = generateErrorMessage(loginError, loginResponse, isUsingGoogleAuth);\r\n\r\n if (errorMessage == null) {\r\n return null;\r\n }\r\n\r\n return (\r\n {errorMessage}\r\n )\r\n}\r\n\r\n\r\nexport default LoginErrorMessage;","import { clientConfigFn } from \"clientConfig\";\r\n\r\nexport const ForgottenUsername = () => (\r\n
\r\n {clientConfigFn().forgotUsernamePageTitle !== \"\"\r\n ?

{clientConfigFn().forgotUsernamePageTitle}

\r\n :

Forgot your Username?

\r\n }\r\n\r\n {clientConfigFn().forgotUsernamePageCopy !== \"\"\r\n ? <>

{clientConfigFn().forgotUsernamePageCopy}

\r\n : <>{clientConfigFn().supportEmailAddress || clientConfigFn().supportPhoneNumber\r\n ?

Don't worry, if you have forgotten your Username you can contact our help desk by\r\n {clientConfigFn().supportEmailAddress && !clientConfigFn().supportPhoneNumber && <> emailing {clientConfigFn().supportEmailAddress}.}\r\n {clientConfigFn().supportPhoneNumber && !clientConfigFn().supportEmailAddress && <> calling {clientConfigFn().supportPhoneNumber}.}\r\n {clientConfigFn().supportEmailAddress && clientConfigFn().supportPhoneNumber && <> emailing {clientConfigFn().supportEmailAddress} or calling {clientConfigFn().supportPhoneNumber}.}\r\n

\r\n :

Don't worry, if you have forgotten your Username you can contact our help desk via email or telephone.

\r\n }\r\n

\r\n The help desk operator will require that you answer certain security\r\n questions to verify that you are the owner of the account. Once you are\r\n verified, your username will be provided to you.\r\n

\r\n \r\n }\r\n
\r\n);\r\n\r\nexport default ForgottenUsername;","import { clientConfigFn } from \"clientConfig\";\r\n\r\nexport const ForgottenPassword = () => (\r\n
\r\n {clientConfigFn().forgotPasswordPageTitle !== \"\"\r\n ?

{clientConfigFn().forgotPasswordPageTitle}

\r\n :

Forgot your Password?

\r\n }\r\n\r\n {clientConfigFn().forgotPasswordPageCopy !== \"\"\r\n ? <>

{clientConfigFn().forgotPasswordPageCopy}

\r\n : <>{clientConfigFn().supportEmailAddress || clientConfigFn().supportPhoneNumber\r\n ?

Don't worry, if you have forgotten your Password you can contact our help desk by\r\n {clientConfigFn().supportEmailAddress && !clientConfigFn().supportPhoneNumber && <> emailing {clientConfigFn().supportEmailAddress}.}\r\n {clientConfigFn().supportPhoneNumber && !clientConfigFn().supportEmailAddress && <> calling {clientConfigFn().supportPhoneNumber}.}\r\n {clientConfigFn().supportEmailAddress && clientConfigFn().supportPhoneNumber && <> emailing {clientConfigFn().supportEmailAddress} or calling {clientConfigFn().supportPhoneNumber}.}\r\n

\r\n :

Don't worry, if you have forgotten your Password you can contact our help desk via email or telephone.

\r\n }\r\n

\r\n The help desk operator will require that you answer certain security\r\n questions to verify that you are the owner of the account. Once you are\r\n verified, your username will be provided to you.\r\n

\r\n \r\n }\r\n
\r\n);\r\n\r\nexport default ForgottenPassword;","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 \r\n \r\n \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 = ({\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();\r\n\r\n if (errors[fieldName] && touched[fieldName]) {\r\n inputClassName = `${inputClassName} is-invalid`\r\n }\r\n\r\n return (\r\n
\r\n {showLabel && }\r\n {fieldWrapper(\r\n <>\r\n \r\n \r\n {formNote}\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default CInputFormGroup;\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 { 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 {Validate} from \"./ResetPasswordInputValidator\";\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Form from \"app/components/Form\";\r\nimport Alert from '@mui/material/Alert';\r\n\r\ninterface Props {\r\n onSubmit: (values: ResetPasswordInput) => void;\r\n submitting?: boolean;\r\n}\r\n\r\nconst ResetPasswordForm: React.FC = ({ onSubmit, submitting}) => {\r\n return (\r\n \r\n initialValues={{ ContactDetails: \"\", Username: \"\", ResetMethod: \"\" }}\r\n onSubmit={onSubmit}\r\n validationSchema={Validate()}\r\n >\r\n {({ values }) => {\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
\r\n
\r\n (\"Username\")}\r\n placeholderText=\"Username\"\r\n />\r\n
\r\n Please choose a method to receive your temporary password.\r\n
\r\n (\"ResetMethod\")}\r\n checked={StringIsEqual(\"sms\", values.ResetMethod)}\r\n id={`${nameof(\"ResetMethod\")}-sms`}\r\n type=\"radio\"\r\n value=\"sms\"\r\n className=\"form-check-input\"\r\n />\r\n \r\n
\r\n\r\n
\r\n (\"ResetMethod\")}\r\n checked={StringIsEqual(\"email\", values.ResetMethod)}\r\n id={nameof(\"ResetMethod\")}\r\n type=\"radio\"\r\n value=\"email\"\r\n className=\"form-check-input\"\r\n />\r\n \r\n
\r\n
\r\n\r\n {values.ResetMethod && (
\r\n {registerdDetailsMessage()}\r\n\r\n (\"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
)}\r\n \r\n Request Password\r\n \r\n
\r\n
\r\n )\r\n }}\r\n \r\n );\r\n};\r\n\r\nexport {\r\n ResetPasswordForm\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\n\r\nexport const Validate = () =>{\r\n const schema: yup.ObjectSchema = yup.object({\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(\"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(\"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 }).defined();\r\n return schema\r\n}\r\n","import React from \"react\";\r\nimport { ResetPasswordForm } from \"./ResetPasswordForm\";\r\nimport { useRequestPasswordResetMutation, ResetPasswordInput } from \"generated/generated-models\";\r\nimport Alert from '@mui/material/Alert';\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 if (loading) {\r\n return (\r\n \r\n Attempting to reset password\r\n \r\n );\r\n }\r\n\r\n if (error !== undefined) {\r\n return (\r\n \r\n Password reset request failed.\r\n \r\n );\r\n }\r\n if (data?.requestPasswordReset?.Success) {\r\n return (\r\n \r\n Check your email or sms for details of your new password\r\n \r\n );\r\n }\r\n if (data?.requestPasswordReset?.Success === false) {\r\n return (\r\n \r\n Password reset request failed.\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n
\r\n

Reset your Password

\r\n\r\n \r\n\r\n {(data?.requestPasswordReset?.Success !== true) && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default ResetPassword;\r\n","import React, { useState } from \"react\";\r\nimport { 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 LoginErrorMessage from \"./LoginErrorMessage\";\r\nimport ForgottenUsername from \"../ForgottenUsername\";\r\nimport ForgottenPassword from \"../ForgottenPassword\";\r\nimport ResetPassword from \"../ResetPassword/ResetPassword\";\r\nimport TermsAndConditions from \"../../other/TermsAndConditions\";\r\nimport PrivacyPolicy from \"../../other/PrivacyPolicy\";\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport FilledInput from '@mui/material/FilledInput';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Visibility from '@mui/icons-material/Visibility';\r\nimport Button from '@mui/material/Button';\r\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\r\nimport LoginIcon from '@mui/icons-material/Login';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog, { DialogProps } from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport AppBar from '@mui/material/AppBar';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport Slide from '@mui/material/Slide';\r\nimport { TransitionProps } from '@mui/material/transitions';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 setUsingGoogleAuth: (isUsingGoogleAuth: boolean) => void;\r\n isUsingGoogleAuth: boolean;\r\n}\r\n\r\nconst Transition = React.forwardRef(function Transition(\r\n props: TransitionProps & {\r\n children: React.ReactElement;\r\n },\r\n ref: React.Ref,\r\n ) {\r\n return ;\r\n });\r\n\r\nconst EnterUsernamePassword = ({ requiresMfa, requiresNewPassword, setUsingGoogleAuth }: Props) => {\r\n const clientConfig = clientConfigFn();\r\n const [username, setUsername] = useState(\"\");\r\n const [userLogin, { loading, data, error }] = useBankingUserLoginV2Mutation();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n\r\n const [password, setPassword] = React.useState({\r\n password: '',\r\n showPassword: false,\r\n });\r\n const handleChange = (prop: string) => (event: any) => {\r\n setPassword({ ...password, [prop]: event.target.value });\r\n };\r\n const handleClickShowPassword = () => {\r\n setPassword({\r\n ...password,\r\n showPassword: !password.showPassword,\r\n });\r\n };\r\n const handleMouseDownPassword = (event: any) => {\r\n event.preventDefault();\r\n };\r\n const [, setLoading] = React.useState(false);\r\n function handleClick() {\r\n setLoading(true);\r\n }\r\n\r\n const [openUsername, setOpenUsername] = React.useState(false);\r\n const [scroll, setScroll] = React.useState('paper');\r\n const handleOpenUsername = (scrollType: DialogProps['scroll']) => () => {\r\n setOpenUsername(true);\r\n setScroll(scrollType);\r\n };\r\n const handleCloseUsername = () => {\r\n setOpenUsername(false);\r\n };\r\n const [openPassword, setOpenPassword] = React.useState(false);\r\n const handleOpenPassword = (scrollType: DialogProps['scroll']) => () => {\r\n setOpenPassword(true);\r\n setScroll(scrollType);\r\n };\r\n const handleClosePassword = () => {\r\n setOpenPassword(false);\r\n };\r\n const [openResetPassword, setOpenResetPassword] = React.useState(false);\r\n const handleOpenResetPassword = (scrollType: DialogProps['scroll']) => () => {\r\n setOpenResetPassword(true);\r\n setScroll(scrollType);\r\n };\r\n const handleCloseResetPassword = () => {\r\n setOpenResetPassword(false);\r\n };\r\n\r\n const [openTerms, setOpenTerms] = React.useState(false);\r\n const handleClickOpenTerms = () => {\r\n setOpenTerms(true);\r\n };\r\n const handleCloseTerms = () => {\r\n setOpenTerms(false);\r\n };\r\n const [openPrivacy, setOpenPrivacy] = React.useState(false);\r\n const handleClickOpenPrivacy = () => {\r\n setOpenPrivacy(true);\r\n };\r\n const handleClosePrivacy = () => {\r\n setOpenPrivacy(false);\r\n };\r\n const [openSupport, setOpenSupport] = React.useState(false);\r\n const handleClickOpenSupport = () => {\r\n setOpenSupport(true);\r\n };\r\n const handleCloseSupport = () => {\r\n setOpenSupport(false);\r\n };\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (username === \"\" || password.password === \"\") {\r\n return;\r\n }\r\n\r\n userLogin({\r\n variables: {\r\n input: {\r\n Password: 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 setUsingGoogleAuth(response.data.loginV2.IsUsingGoogleAuth);\r\n requiresMfa(username, password.password);\r\n }\r\n\r\n if(response.data.loginV2.AuthError === LoginV3AuthError.Requirepasswordchange){\r\n requiresNewPassword(username, password.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 \r\n \r\n
handleSubmit(e)}>\r\n \r\n \r\n Username\r\n setUsername(e.target.value)}\r\n endAdornment={\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n Password\r\n \r\n \r\n {password.showPassword ? : }\r\n \r\n {clientConfig.allowOnlinePasswordReset\r\n ? \r\n : \r\n }\r\n \r\n }\r\n />\r\n \r\n \r\n }\r\n loading={loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Login\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n {\r\n clientConfig.showTermsAndConditions &&\r\n
\r\n \r\n |\r\n \r\n \r\n \r\n \r\n Terms and Conditions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n {\r\n clientConfig.showPrivacyPolicy &&\r\n
\r\n \r\n { clientConfig.supportEmailAddress &&| }\r\n \r\n \r\n \r\n \r\n Privacy Policy\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n {\r\n clientConfig.supportEmailAddress &&\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

Need support?

\r\n

If you need assistance, you can contact our support team anytime by\r\n {clientConfig.supportEmailAddress && !clientConfig.supportPhoneNumber && <> emailing {clientConfig.supportEmailAddress}.}\r\n {clientConfig.supportPhoneNumber && !clientConfig.supportEmailAddress && <> calling
{clientConfig.supportPhoneNumber}.}\r\n {clientConfig.supportEmailAddress && clientConfig.supportPhoneNumber && <> emailing {clientConfig.supportEmailAddress} or calling
{clientConfig.supportPhoneNumber}.}

\r\n\r\n
\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default 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 useIsUserAuthenticatedQuery,\r\n useRequestNewMultiFactorSecurityTokenMutation\r\n} from \"generated/generated-models\";\r\nimport FilledInput from '@mui/material/FilledInput';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport OutlinedInput from '@mui/material/OutlinedInput';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Button from '@mui/material/Button';\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 isUsingGoogleAuth: 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 isUsingGoogleAuth = false\r\n}: Props) => {\r\n const initialSeconds = 60;\r\n const [requestToken] = useRequestNewMultiFactorSecurityTokenMutation();\r\n const [seconds, setSeconds] = useState(0);\r\n const [alreadyRequestedMfa, setAlreadyRequestedMfa] = useState(false);\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 const loggedIn = userSessionData && !userSessionError && !userSessionLoading;\r\n const AuthLabel = isUsingGoogleAuth ? \"Authorisation Code\" : \"Security Token\";\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 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 if (isUsingGoogleAuth)\r\n {\r\n return null;\r\n }\r\n\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
\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 {loggedIn ?\r\n
\r\n \r\n {AuthLabel}\r\n \r\n \r\n
\r\n {errorMessage}\r\n
\r\n {showRequestNewToken && }\r\n
\r\n :\r\n
\r\n \r\n {AuthLabel}\r\n \r\n \r\n
\r\n {errorMessage}\r\n
\r\n {showRequestNewToken && }\r\n
\r\n }\r\n \r\n )\r\n};\r\n\r\nexport default RequestMultiFactorTokenComponent;\r\n","import { 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\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport Button from '@mui/material/Button';\r\nimport LoginIcon from '@mui/icons-material/Login';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport { clientConfigFn } from \"clientConfig\";\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 isUsingGoogleAuth: boolean\r\n}\r\n\r\nconst EnterMfa = ({ username, password, requiresNewPassword, reset, isUsingGoogleAuth }: 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 \r\n \r\n
handleSubmit(e)} className=\"prelogin-form\">\r\n \r\n \r\n \r\n
\r\n \r\n Cancel\r\n \r\n }\r\n loading={loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Login\r\n \r\n
\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 NumericFormat, { 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 | \"wholeNumberAuth\"\r\n | \"wholeNumberPayment\"\r\n | \"currency\"\r\n | \"password\"\r\n | \"bsb\"\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\" || props.type === \"bsb\" },\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 case \"wholeNumberAuth\":\r\n return \"[0-9]*\";\r\n case \"wholeNumberPayment\":\r\n return \"[0-9]*\";\r\n case \"bsb\":\r\n return `/^\\s*\\d\\d\\d-?\\d\\d\\d\\s*$/`\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 case \"wholeNumberAuth\":\r\n return \"numeric\";\r\n case \"wholeNumberPayment\":\r\n return \"numeric\";\r\n case \"bsb\":\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 pattern: getPattern(),\r\n inputMode: getInputMode(),\r\n type: getType()\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 === \"wholeNumberAuth\" &&\r\n \r\n }\r\n\r\n {props.type === \"wholeNumberPayment\" &&\r\n helper.setValue(x.floatValue)}\r\n onBlur={() => helper.setTouched(true)}\r\n value={field.value}\r\n maxLength={5}\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 {props.type === \"bsb\" && }\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\nimport { useBankingUserLoginV2Mutation } from \"generated/generated-models\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport LoginHeader from \"./LoginHeader\";\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\nimport Paper from '@mui/material/Paper';\r\nimport Button from '@mui/material/Button';\r\nimport LoginIcon from '@mui/icons-material/Login';\r\nimport { LoadingButton } from '@mui/lab';\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\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 \r\n Cancel\r\n \r\n }\r\n loading={loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Login\r\n \r\n
\r\n \r\n )\r\n }}\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default 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 [isUsingGoogleAuth, setUsingGoogleAuth] = useState(false);\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\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 { 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","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","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\nimport { Link } from 'react-router-dom';\r\nimport MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport MoneySigned from \"../components/MoneySigned\";\r\nimport { Account, Instrument, InstrumentByIdOrNumberQuery, useAccountByIdOrNumberQuery, useAccountFundsTransfersQuery, useIndueCardsandAssociationsByAccountQuery } 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 { CError } from \"app/common/CError\";\r\nimport { CApolloError } from \"app/common/CApolloError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport Grid from '@mui/material/Grid';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport InfoIcon from '@mui/icons-material/Info';\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport FeedIcon from '@mui/icons-material/Feed';\r\nimport CreditCardIcon from '@mui/icons-material/CreditCard';\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faHandHoldingUsd, faChartLine } from \"@fortawesome/free-solid-svg-icons\";\r\nimport Button from '@mui/material/Button';\r\n\r\ntype AccountTableRowProps = {\r\n redrawConsideration?: string\r\n account: Account\r\n instrument: Instrument;\r\n handleOnSelectedAccount: (account: Account) => void;\r\n}\r\nconst { hideTransferPage, allowOnLineStatements } = clientConfigFn();\r\nconst AccountTableRow = ({ account, instrument, handleOnSelectedAccount, redrawConsideration }: AccountTableRowProps) => {\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: account.Number! }\r\n });\r\n const [selectedCard, setSelectedCard] = React.useState();\r\n const { data: dataAccountDetails } = useAccountByIdOrNumberQuery({ variables: { idOrNumber: account.Number! } });\r\n const accountDetails = dataAccountDetails?.accountByIdOrNumber;\r\n \r\n const { data: dataIndueCards, loading: loadingIndueCards, error: errorIndueCards } = useIndueCardsandAssociationsByAccountQuery({\r\n variables: { accountId: account.Id, accountIdString: account.Id },\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n React.useEffect(()=> {\r\n if(!loadingIndueCards && dataIndueCards?.indueCardsByAccount?.length !== 0) {\r\n const indueCards = makeNonEmpty(dataIndueCards?.indueCardsByAccount);\r\n if(indueCards.length > 0) {\r\n const firstCard = indueCards[0].Id;\r\n setSelectedCard(firstCard);\r\n }\r\n }\r\n },[loadingIndueCards, dataIndueCards])\r\n\r\n if (loadingIndueCards || errorIndueCards) {\r\n return <>;\r\n }\r\n \r\n if (loading) {\r\n return ;\r\n }\r\n if (error || account == null) {\r\n return ;\r\n } \r\n if (account == null) {\r\n return null;\r\n }\r\n const showCards = (accountDetails?.CardAvailable ?? false) || (accountDetails?.Cards?.length ?? 0) > 0\r\n const cardsEnabled = !clientConfigFn().hideCardPage && showCards;\r\n\r\n const clickHandler = (account: Account) => {\r\n handleOnSelectedAccount(account);\r\n };\r\n return (\r\n <> clickHandler(account)} \r\n >\r\n }\r\n >\r\n \r\n \r\n {instrument.InstrumentType === \"Investment\"\r\n ? \r\n : \r\n }\r\n \r\n \r\n {clientConfigFn().showPrimaryBorrowerName\r\n ? {instrument.PrimaryBorrower}\r\n : {account.Description || account.ProductType}}\r\n
\r\n {account.Number}\r\n
\r\n \r\n

Curr Bal \r\n

\r\n\r\n {clientConfigFn().showAvailableRedraw &&\r\n

Avail Bal \r\n {redrawConsideration === \"Account\" &&\r\n \r\n }\r\n \r\n

\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n {!hideTransferPage && data?.accountByIdOrNumber?.CurrentUserAccountAuthority?.Operate &&\r\n }\r\n id=\"payButton\">\r\n Pay\r\n \r\n }\r\n {allowOnLineStatements &&\r\n \r\n }\r\n {cardsEnabled &&\r\n <>\r\n {selectedCard !== undefined\r\n ? \r\n : \r\n }\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst AccountTableBody = ( props : { instrument: InstrumentByIdOrNumberQuery[\"instrumentByIdOrNumber\"], handleOnSelectedAccount: (account: Account) => void }) => {\r\n if (props.instrument?.Accounts == null) {\r\n return (\r\n

No Active Accounts

\r\n );\r\n }\r\n return (\r\n <> {\r\n sortByProp(makeNonEmpty(props.instrument.Accounts), \"DisplayOrder\")\r\n .map(account => )\r\n } \r\n )\r\n};\r\n\r\nconst AccountsSummary = ( props : { handleOnSelectedAccount: (account: Account) => void, instrument: InstrumentByIdOrNumberQuery[\"instrumentByIdOrNumber\"] }) => {\r\n if (props.instrument == null) {\r\n return ;\r\n }\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\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 MoneyFormatted from \"../components/MoneyFormatted\";\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 \r\n {displayValue}\r\n \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 ;\r\n }\r\n return (\r\n
\r\n {clientConfig.showInstrumentTitle &&\r\n

\r\n {instrument.LoanPurpose}\r\n

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

\r\n Current balance: \r\n \r\n \r\n \r\n

\r\n

\r\n Loan Number: \r\n {instrument.Number}\r\n

\r\n

\r\n {clientConfig.maturesMetricLabel}: \r\n \r\n \r\n \r\n

\r\n {clientConfigFn().showAvailableRedraw &&\r\n

\r\n Available balance: \r\n \r\n \r\n \r\n

\r\n }\r\n

\r\n Term (months): \r\n \r\n {instrument.TotalTermMonths}\r\n \r\n

\r\n

\r\n Term remaining (months): \r\n \r\n

\r\n
\r\n
\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 ;\r\n }\r\n\r\n if (error) {\r\n return \r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n {/* Empty function call to 'AccountsSummary will be addressed later - DO WE NEED THIS PAGE */}\r\n {}} instrument={instrument} />\r\n
\r\n );\r\n}\r\n\r\nexport default InstrumentPage;\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 * as yup from \"yup\";\r\n\r\nexport const GetSecurityTokenValidator = (requiresMfa: boolean) => {\r\n\r\n if (requiresMfa) {\r\n return yup\r\n .string()\r\n .label(\"Security Token / Auth Code\")\r\n .required()\r\n .length(6);\r\n }\r\n else {\r\n return yup\r\n .string()\r\n .label(\"Security Token / Auth Code\")\r\n .notRequired();\r\n }\r\n}\r\n","import { useField } from \"formik\";\r\nimport React from \"react\";\r\nimport RequestMultiFactorToken from \"./RequestMultiFactorToken\";\r\nimport { useIsUserAuthenticatedQuery } from \"generated/generated-models\"\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 const { data: authenticatedData } = useIsUserAuthenticatedQuery();\r\n\r\n const isUsingGoogleAuth = authenticatedData?.userSession?.IsUsingGoogleAuth || false;\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 \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 TransferAccountsByPartyDocument\r\n} from \"generated/generated-models\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik } from \"formik\";\r\nimport { Validate } from \"./AddPayAnyoneValidate\";\r\n\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport Alert from '@mui/material/Alert';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\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 handleClose: () => void;\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 handleClose,\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(\"WithoutMFA\");\r\n\r\n const handleRequiresMFA = () => {\r\n setAddPayAnyonePage(\"WithMFA\")\r\n };\r\n\r\n const handleCancelClick = () => {\r\n goBack();\r\n handleClose();\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 }, { query: TransferAccountsByPartyDocument}]\r\n }\r\n );\r\n if (result.data?.createPayAnyoneBankAccount?.NewPartyBankAccount?.BankAccount != null) {\r\n payAnyoneAdded(result.data?.createPayAnyoneBankAccount?.NewPartyBankAccount?.BankAccount);\r\n handleClose();\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 handleSubmit(values)}\r\n validationSchema={() => Validate(addPayAnyonePage === \"WithMFA\")}\r\n >\r\n {({ isSubmitting, values }) => {\r\n return (\r\n
\r\n

Add Pay Anyone Account

\r\n
\r\n (\"accountName\")}\r\n type=\"text\"\r\n label=\"Account Name\"\r\n />\r\n\r\n (\"bsb\")}\r\n type=\"text\"\r\n label=\"BSB\"\r\n />\r\n\r\n (\"accountNumber\")}\r\n type=\"text\"\r\n label=\"Account Number\"\r\n />\r\n\r\n {addPayAnyonePage === \"WithMFA\" &&\r\n (\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n />\r\n }\r\n\r\n {data?.createPayAnyoneBankAccount?.Message != null &&\r\n \r\n {data?.createPayAnyoneBankAccount.Message}\r\n \r\n }\r\n {error != null &&\r\n \r\n Error submitting create new pay anyone bank account request. Please try again\r\n \r\n }\r\n\r\n
\r\n \r\n Cancel\r\n \r\n \r\n Create Account\r\n \r\n
\r\n \r\n
\r\n )\r\n }}\r\n \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 = 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(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 = (props) => {\r\n const [formState, updateFormsState] = useState({});\r\n\r\n const initialPage = props.useSelectionPage ? \"Select\" : \"Create\";\r\n const [page, updatePage] = useState(initialPage)\r\n const [fundsTransferId, updateFundsTransferId] = useState(undefined);\r\n const [bpayBiller, updateBpayBiller] = useState(undefined);\r\n const [bankAccount, updateBankAccount] = useState(undefined);\r\n const [interAccount, updateInterAccount] = useState(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 \r\n {props.children}\r\n \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 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
\r\n
{title}
\r\n
\r\n
{IsNullOrWhiteSpace(account?.Description) ? account?.ProductType : account?.Description}
\r\n
{account?.Number}
\r\n
\r\n
\r\n
Available
\r\n \r\n \r\n \r\n
\r\n
\r\n
Balance
\r\n
\r\n \r\n
\r\n
\r\n
\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
    \r\n {Children.map(props.children, child =>\r\n
  • \r\n {child}\r\n
  • \r\n )}\r\n
\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 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 \r\n }\r\n\r\n if (error || accounts == null) {\r\n return
\r\n }\r\n\r\n return (\r\n
\r\n \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 <div className=\"sub-wrap\">\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 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\nimport Button from '@mui/material/Button';\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 handleClose={() => undefined}\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 <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => history.goBack()} >\r\n Cancel\r\n </Button>\r\n </div>\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\nimport Alert from '@mui/material/Alert';\r\n\r\nconst BankingCutoff = () => {\r\n return (\r\n <Alert severity=\"warning\">\r\n {clientConfigFn().bankingCutOffWarning}\r\n </Alert>\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, setFieldTouched } = useFormikContext();\r\n const [field] = useField(props.name);\r\n const fieldId = getFieldId(props.name);\r\n\r\n let inputClassName = classNames(\"form-control\");\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 onChangeRaw={_e => {\r\n setFieldTouched(field.name, true, true);\r\n }}\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\nimport Grid from '@mui/material/Grid';\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\nconst setMaxYear = new Date().getFullYear();\r\nconst setMaxMonth = new Date().getMonth();\r\nconst setMaxDay = new Date().getDate();\r\nconst setMaxDate = new Date(setMaxYear + 500, setMaxMonth, setMaxDay);\r\n\r\ntype Config = {\r\n minStartingDate: Date;\r\n minUntilDate: Date;\r\n maxDate?: Date;\r\n isDirectDebit?: boolean;\r\n clearanceDate?: 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 mergedConfig = {\r\n ...defaultConfig,\r\n ...config,\r\n };\r\n const { minStartingDate, isDirectDebit, clearanceDate } = mergedConfig;\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 <>\r\n <Grid item xs={6}>\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 </Grid>\r\n {untilDateInputEnabled &&\r\n <Grid item xs={6}>\r\n <Datepicker\r\n name={nameof<typeof values>(\"endingOn\")}\r\n label=\"End Date\"\r\n minDate={isDirectDebit ? clearanceDate : minStartingDate}\r\n maxDate={setMaxDate}\r\n />\r\n </Grid>\r\n }\r\n {numberOfTimesInputEnabled &&\r\n <Grid item xs={6}>\r\n <Input\r\n label=\"No. of Payments\"\r\n name={nameof<typeof values>(\"numberOfTimesAmount\")}\r\n type=\"wholeNumberPayment\"\r\n />\r\n </Grid>\r\n }\r\n </>\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 isDirectDebit: false,\r\n clearanceDate: new Date(),\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, isDirectDebit, clearanceDate } = mergedConfig;\r\n return (\r\n <>\r\n <Grid item xs={6}>\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 </Grid>\r\n \r\n <Grid item xs={6}>\r\n <Datepicker\r\n label=\"Starting On\"\r\n name={nameof<typeof values>(\"startingOn\")}\r\n minDate={isDirectDebit ? clearanceDate : minStartingDate}\r\n maxDate={maxDate} \r\n />\r\n </Grid>\r\n <TransferUntilInput config={mergedConfig} values={values} />\r\n\r\n </>\r\n );\r\n};\r\n\r\nexport default TransferScheduleInput;\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 { 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: any,\r\n _context: any\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 { ApolloClient, InMemoryCache, ApolloLink, HttpOptions } from \"@apollo/client\";\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\nimport path from \"path\";\r\nimport { Capacitor } from \"@capacitor/core\";\r\n\r\nconst Platform = Capacitor.getPlatform();\r\n\r\nconsole.log(clientConfigFn().baseuri);\r\n\r\n// graphQl uri - if not web use base URI else use serve location (reverse proxy required for latter)\r\nconst BaseApiUri = Platform !== \"web\"\r\n ? new URL(path.join(clientConfigFn().baseuri, \"/graphql\")).toString()\r\n : new URL(path.join(window.location.origin, \"/graphql\")).toString();\r\n\r\nexport const LoginUri = new URL(path.join(window.location.origin, \"/security/login\")).href.toString();\r\nexport const SecurityUri = new URL(path.join(window.location.origin, \"/security\")).toString();\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.href, 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 if (config.fundsTransferDescriptionRequired) {\r\n transferDescription = transferDescription.required()\r\n }\r\n\r\n return transferDescription;\r\n}\r\n\r\nconst getFriendlyName = (limitType: string) => {\r\n switch(limitType)\r\n {\r\n case \"bpay\":\r\n return \"BPay limit\"\r\n case \"payAnyone\":\r\n return \"Pay Anyone limit\"\r\n case \"redraw\":\r\n return \"Redraw limit\"\r\n default:\r\n return \"None\"\r\n }\r\n}\r\n\r\nexport const validateLimit = (accountId: string, limitType: string) => {\r\n const friendlyText = getFriendlyName(limitType);\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 than 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 if(limitType === \"none\")\r\n {\r\n return true;\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 than 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 if (limitType === \"payAnyone\") {\r\n limit = accountLimit?.RemainingDailyPayAnyoneLimit?.Amount ?? 0;\r\n } else {\r\n limit = accountLimit?.RemainingDailyBPayLimit?.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 than 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 .max(99999)\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\nimport Alert from '@mui/material/Alert';\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 <Alert severity=\"warning\">\r\n {clientConfigFn().futureDatedTransferWarning}\r\n </Alert>\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","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 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 '@mui/material/Alert';\r\nimport Box from '@mui/material/Box';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\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 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 <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 <Form>\r\n <Box sx={{ width: '100%' }}>\r\n <Box className=\"payment-details\">\r\n <Typography variant=\"h6\" gutterBottom component=\"h6\" sx={{ mt: 5, mb: 2 }}>\r\n Payment Details\r\n </Typography>\r\n <Grid container spacing={2}>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<PayAnyoneFormProps>(\"amount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n </Grid>\r\n <Grid item xs={6}><label>Daily Limits will appear here where relevant</label></Grid>\r\n <Grid item xs={6}>\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 </Grid>\r\n <Grid item xs={6}>\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 </Grid>\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 <Grid item xs={12}>\r\n <FutureDatedWarningText date={values.startingOn} />\r\n <BankingCutOff />\r\n\r\n {payAnyoneBankAccount == null &&\r\n <Alert severity=\"error\">Please select a pay anyone account</Alert>\r\n }\r\n </Grid>\r\n </Grid>\r\n <div className=\"form-group button-row\">\r\n <Button\r\n sx={{ width: 150, p: 1.5, mt: 1 }}\r\n disabled={isSubmitting}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n variant=\"contained\"\r\n className=\"btn-cancel\"\r\n id=\"cancel\">\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n disabled={payAnyoneBankAccount == null}\r\n sx={{ p: 1.5, mt: 1 }}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Pay Anyone\r\n </LoadingButton>\r\n </div>\r\n </Box>\r\n </Box>\r\n </Form>\r\n </div>\r\n )\r\n}\r\n\r\nconst CreatePayAnyoneForm = () => {\r\n const wizard = useTransferWizard<PayAnyoneFormProps>();\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 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 { TaskFrequencyPeriod, RecurrenceEndEnum } from \"generated/generated-models\";\r\nimport { format } from \"date-fns\";\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Typography from '@mui/material/Typography';\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Payment Date: </span>{formatDate(props.paymentDate)}</Typography>} />\r\n </ListItem>\r\n }\r\n {recurring &&\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reoccuring: </span>{repeatText()}</Typography>} />\r\n </ListItem>\r\n }\r\n {recurring &&\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\"></span>{untilText()}</Typography>} />\r\n </ListItem>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default DueOnListItems;\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 React from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { PayAnyoneFormProps } from \"./CreatePayAnyone\";\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 { createTransferVariable, transferTypes } from \"../utilities/fundsTransfers\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\r\n }\r\n if (loading) {\r\n return <Loading />\r\n }\r\n if (data?.accountByIdOrNumber == null || error) {\r\n return <section className=\"sub-wrap\"><CError error=\"Could not load account details. Please try again.\" /></section>\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 accountName = data.accountByIdOrNumber.ProductType;\r\n const accountNumber = data.accountByIdOrNumber.Number;\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"confirm-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <CurrencyExchangeIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, mb: 2 }}>\r\n Confirm Pay Anyone\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Please ensure all details are correct before proceeding. Once confirmed your\r\n transfer is final.\r\n </Typography >\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={formState.amount} />\r\n <span className=\"caption\">Amount to be paid</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{accountName} - {accountNumber || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{payAnyoneBankAccount?.AccountName} <br/> {payAnyoneBankAccount?.BankIdentifierText} | {payAnyoneBankAccount?.AccountNumber} ({payAnyoneBankAccount?.BankName})</Typography>} />\r\n </ListItem>\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {formState.transferReference}</Typography>} />\r\n </ListItem>\r\n </List>\r\n\r\n { (paymentData.error !== null || paymentData.data?.requestPayAnyoneTransfer?.Success === false) &&\r\n <Alert severity=\"error\">\r\n Error submitting transfer request. {paymentData.data?.requestPayAnyoneTransfer?.Message}\r\n </Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => modifyTransfer()}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n loading={paymentData.loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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 React from \"react\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { PayAnyoneFormProps } from \"./CreatePayAnyone\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport ReceiptLongIcon from '@mui/icons-material/ReceiptLong';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\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. Please try again.\" />\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. Please try again.\" />\r\n }\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"success-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <ReceiptLongIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={fundsTransfer?.Amount || 0} />\r\n <span className=\"caption\">Paid successfully to {payAnyoneBankAccount?.AccountName}</span>\r\n <span className=\"sub-caption\">Receipt No: {fundsTransfer.ReceiptNumber}</span>\r\n </Typography >\r\n\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{data.accountByIdOrNumber.ProductType} - {data.accountByIdOrNumber.Number || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{payAnyoneBankAccount?.AccountName} <br /> {payAnyoneBankAccount?.BankIdentifierText} | {payAnyoneBankAccount?.AccountNumber} ({payAnyoneBankAccount?.BankName})</Typography>} />\r\n </ListItem>\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {fundsTransfer.DepositDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {fundsTransfer.WithdrawalDescription}</Typography>} />\r\n </ListItem>\r\n </List>\r\n <div className=\"button-row\">\r\n <Button\r\n fullWidth\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n variant=\"contained\"\r\n >\r\n Done\r\n </Button>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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 useParams\r\n} from \"react-router-dom\";\r\nimport {\r\n AccountFundsTransfersDocument,\r\n FundsTransfer,\r\n useStopPendingFundsTransferMutation,\r\n useAccountFundsTransfersQuery\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 { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { format } from \"date-fns\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 { data: transferData, loading: transferLoading, error: transferError } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: fundsTransfer.AccountId }\r\n });\r\n const history = useHistory();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const { number }: { number: string } = useParams();\r\n const [, setOpen] = React.useState(false);\r\n \r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (data?.stopPendingFundsTransfer?.Success === true) {\r\n return <Redirect to={`/account/index/${number}`} push={false} />;\r\n }\r\n if (error || data?.stopPendingFundsTransfer?.Success === false) {\r\n return <section className=\"sub-wrap\"><CError error=\"Failed to stop transfer\" /></section>\r\n }\r\n if (transferLoading === true) {\r\n return <Loading />\r\n }\r\n if (transferError != null) {\r\n return <section className=\"sub-wrap\"><CError error=\"Could not load account details. Please try again.\" /></section>\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\nconsole.log(number)\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"cancel-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <CurrencyExchangeIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={fundsTransfer?.Amount || 0} />\r\n <span className=\"caption\">Cancel transfer to {fundsTransfer?.BillerName || fundsTransfer.ToAccountDescription}</span>\r\n <span className=\"sub-caption\">Receipt No: {fundsTransfer.ReceiptNumber}</span>\r\n </Typography >\r\n\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{transferData?.accountByIdOrNumber?.ProductType} - ({fundsTransfer.FromAccountDescription }) </Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{fundsTransfer?.BillerName || fundsTransfer.ToAccountDescription}</Typography>} />\r\n </ListItem>\r\n {fundsTransfer.StartingOn != null &&\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Payment Date: </span> {format(new Date(fundsTransfer.StartingOn), 'd MMM yyyy')}</Typography>} />\r\n </ListItem>\r\n }\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {fundsTransfer.DepositDescription}</Typography>} />\r\n </ListItem>\r\n {fundsTransfer.CreatedOn &&\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Created On: </span> {format(new Date(fundsTransfer.CreatedOn), 'd MMM yyyy')}</Typography>} />\r\n </ListItem>\r\n }\r\n </List>\r\n\r\n { fundsTransfer.RegularPayment &&\r\n <Alert severity=\"warning\">\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 </Alert>\r\n }\r\n\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => history.push(`/account/index/${number}`)}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => stopTransfer()}\r\n loading={loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default DeleteTransfer;\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 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<Props> = ({\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 <button\r\n type={type}\r\n className={buttonClasses}\r\n disabled={loading || disabled}\r\n onClick={onClick}\r\n id={id}\r\n style={style}\r\n >\r\n {loading && <>\r\n <span className=\"spinner-border spinner-border-sm mr-1\" role=\"status\" aria-hidden=\"true\"></span>\r\n Loading...\r\n </>}\r\n {!loading && <>{ children }</>}\r\n </button>\r\n )\r\n}\r\n\r\nexport default Button;\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 id=\"goBackButton\"\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 id=\"submit\"\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 React from \"react\";\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 { PaymentFormProps } from \"./CreatePayment\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\nconst ConfirmPayment = () => {\r\n const { accountId, formState, paymentAccount, modifyTransfer, confirmTransfer } = useTransferWizard<PaymentFormProps>();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId }\r\n });\r\n const [requestPayment, paymentData] = useRequestPayAnyoneTransferMutation();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (loading) {\r\n return <Loading />\r\n }\r\n if (data?.accountByIdOrNumber == null || error) {\r\n return <CError error=\"Could not load account detail. Please try again.s\" />\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 accountName = data.accountByIdOrNumber.ProductType;\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 <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"confirm-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <CurrencyExchangeIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, mb: 2 }}>\r\n Confirm Payment\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Please ensure all details are correct before proceeding. Once confirmed your\r\n transfer is final.\r\n </Typography >\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={formState.amount} />\r\n <span className=\"caption\">Amount to be paid</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{bankAccount?.AccountName} <br/> {bankAccount?.BankIdentifierText} | {bankAccount?.AccountNumber} ({bankAccount?.BankName})</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{accountName} - {accountNumber || \"\"}</Typography>} />\r\n </ListItem>\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {formState.transferReference}</Typography>} />\r\n </ListItem>\r\n </List>\r\n\r\n { (paymentData.error !== null || paymentData.data?.requestPayAnyoneTransfer?.Success === false) &&\r\n <Alert severity=\"error\">\r\n Error submitting transfer request. {paymentData.data?.requestPayAnyoneTransfer?.Message}\r\n </Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => modifyTransfer()}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n loading={paymentData.loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\nexport default ConfirmPayment\r\n","import React from \"react\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport ReceiptLongIcon from '@mui/icons-material/ReceiptLong';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\nconst PaymentReceipt = () => {\r\n const { accountId, paymentAccount, returnToHome, transferId } = useTransferWizard();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: accountId },\r\n fetchPolicy: \"network-only\"\r\n });\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\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. Please try again.\" />\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. Please try again.\" />\r\n }\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"success-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <ReceiptLongIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={fundsTransfer?.Amount || 0} />\r\n <span className=\"caption\">Paid successfully to {data.accountByIdOrNumber.ProductType}</span>\r\n <span className=\"sub-caption\">Receipt No: {fundsTransfer.ReceiptNumber}</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{paymentAccount?.AccountName} <br /> {paymentAccount?.BankIdentifierText} | {paymentAccount?.AccountNumber} ({paymentAccount?.BankName})</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{data.accountByIdOrNumber.ProductType} - {data.accountByIdOrNumber.Number || \"\"}</Typography>} />\r\n </ListItem>\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {fundsTransfer.DepositDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {fundsTransfer.WithdrawalDescription}</Typography>} />\r\n </ListItem>\r\n </List>\r\n <div className=\"button-row\">\r\n <Button\r\n fullWidth\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n variant=\"contained\"\r\n >\r\n Done\r\n </Button>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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\nimport Alert from '@mui/material/Alert';\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 <Alert severity=\"warning\">No available Bank Accounts associated with this account</Alert>\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 id=\"goBackButton\"\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 id=\"goBackButton\"\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 id=\"submit\"\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 React from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { RedrawFormProps } from \"./CreateRedraw\";\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 MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\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 <section className=\"sub-wrap\"><CError error=\"Could not load account details. Please try again.\" /></section>\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 accountName = data.accountByIdOrNumber.ProductType;\r\n const accountNumber = data.accountByIdOrNumber.Number;\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"confirm-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <CurrencyExchangeIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, mb: 2 }}>\r\n Confirm Redraw\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Please ensure all details are correct before proceeding. Once confirmed your\r\n transfer is final.\r\n </Typography >\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={formState.amount} />\r\n <span className=\"caption\">Amount to be paid</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{accountName} - {accountNumber || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{redrawAccount?.AccountName} <br /> {redrawAccount?.BankIdentifierText} | {redrawAccount?.AccountNumber} ({redrawAccount?.BankName})</Typography>} />\r\n </ListItem>\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {formState.transferReference}</Typography>} />\r\n </ListItem>\r\n </List>\r\n\r\n { (paymentData.error !== null || paymentData.data?.requestPayAnyoneTransfer?.Success === false) &&\r\n <Alert severity=\"error\">\r\n Error submitting transfer request. {paymentData.data?.requestPayAnyoneTransfer?.Message}\r\n </Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => modifyTransfer()}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n loading={paymentData.loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\nexport default ConfirmRedraw;\r\n","import React from \"react\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { RedrawFormProps } from \"./CreateRedraw\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport ReceiptLongIcon from '@mui/icons-material/ReceiptLong';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\nconst RedrawReceipt = () => {\r\n const { transferId, redrawAccount, 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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n if (error != null || data?.accountByIdOrNumber?.ProcessedAccountFundsTransfers == null) {\r\n return <CError error=\"Could not load payment details. Please try again.\" />\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. Please try again.\" />\r\n }\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"success-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <ReceiptLongIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={fundsTransfer?.Amount || 0} />\r\n <span className=\"caption\">Paid successfully to {redrawAccount?.AccountName}</span>\r\n <span className=\"sub-caption\">Receipt No: {fundsTransfer.ReceiptNumber}</span>\r\n </Typography >\r\n\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{data.accountByIdOrNumber.ProductType} - {data.accountByIdOrNumber.Number || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{redrawAccount?.AccountName} <br /> {redrawAccount?.BankIdentifierText} | {redrawAccount?.AccountNumber} ({redrawAccount?.BankName})</Typography>} />\r\n </ListItem>\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {fundsTransfer.DepositDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {fundsTransfer.WithdrawalDescription}</Typography>} />\r\n </ListItem>\r\n </List>\r\n <div className=\"button-row\">\r\n <Button\r\n fullWidth\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n variant=\"contained\"\r\n >\r\n Done\r\n </Button>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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\nimport Alert from '@mui/material/Alert';\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 <Alert severity=\"warning\">No available Bank Accounts associated with this account</Alert>\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 id=\"goBackButton\"\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 * 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 than 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 than 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 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 id=\"goBack\"\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 id=\"createTransfer\"\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 React from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { InterAccountFormProps } from \"./CreateInterAccount\";\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 MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\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 <section className=\"sub-wrap\"><CError error=\"Could not load account details. Please try again.\" /></section>\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 <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"confirm-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <CurrencyExchangeIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, mb: 2 }}>\r\n Confirm Transfer\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Please ensure all details are correct before proceeding. Once confirmed your\r\n transfer is final.\r\n </Typography >\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={formState.amount} />\r\n <span className=\"caption\">Amount to be paid</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{fromAccount.ProductType} - {fromAccount.Number || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{toAccount.ProductType} - {toAccount?.Number}</Typography>} />\r\n </ListItem>\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {formState.transferReference}</Typography>} />\r\n </ListItem>\r\n </List>\r\n\r\n { (paymentData.error !== null || paymentData.data?.requestPayAnyoneTransfer?.Success === false) &&\r\n <Alert severity=\"error\">\r\n Error submitting transfer request. {paymentData.data?.requestPayAnyoneTransfer?.Message}\r\n </Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => modifyTransfer()}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n loading={paymentData.loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\nexport default ConfirmInterAccount;\r\n","import { CError } from \"app/common/CError\";\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 { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { InterAccountFormProps } from \"./CreateInterAccount\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport ReceiptLongIcon from '@mui/icons-material/ReceiptLong';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\nconst InterAccountReceipt = () => {\r\n const { data, loading, error } = useFinanceSummaryQueryQuery();\r\n const { formState, accountId: fromAccountId, interAccountToAccount, returnToHome } = useTransferWizard<InterAccountFormProps>();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (loading === true) {\r\n return <Loading />\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. Please try again.\" />\r\n }\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"success-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <ReceiptLongIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={formState.amount} />\r\n <span className=\"caption\">Paid successfully to {toAccount.ProductType}</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{fromAccount.ProductType} - {fromAccount.Number || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{toAccount.ProductType} - {toAccount?.Number}</Typography>} />\r\n </ListItem>\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {formState.transferReference}</Typography>} />\r\n </ListItem>\r\n </List>\r\n\r\n <div className=\"button-row\">\r\n <Button\r\n fullWidth\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => returnToHome(fromAccount.Number!)}\r\n variant=\"contained\"\r\n >\r\n Done\r\n </Button>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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 '@mui/material/Button';\r\nimport { useHistory } from \"react-router\";\r\nimport Alert from '@mui/material/Alert';\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 <Alert severity=\"warning\">No Accounts available for selection</Alert>\r\n }\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 <div className=\"form-group button-row\">\r\n <Button\r\n onClick={() => history.goBack()}\r\n sx={{ width: 150, p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n className=\"btn-cancel\"\r\n id=\"cancelButton\">\r\n Cancel\r\n </Button>\r\n </div>\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 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 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 TransferAccountsByPartyDocument\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 Alert from '@mui/material/Alert';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport BpayText from \"app/components/BpayText\";\r\n\r\nexport type AddBpayFormProps = {\r\n billerCode?: number;\r\n customerReferenceNumber: string;\r\n billerDescription?: string;\r\n twoFactorToken?: string;\r\n hasPendingTransfer? : boolean\r\n}\r\n\r\ntype AddBpayBillerProps = {\r\n handleClose: () => void;\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 handleClose,\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 handleCancelClick = () => {\r\n goBack();\r\n handleClose();\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 HasPendingTransfer: false\r\n }\r\n },\r\n refetchQueries: [{ query: BpayBillerHistoryDocument }, { query: TransferAccountsByPartyDocument}]\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 handleClose();\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>\r\n <h2>Add <BpayText /> 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 Nickname\"\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 <Alert severity=\"error\">\r\n {data?.createBpayBiller.Message}\r\n </Alert>\r\n }\r\n\r\n {error != null &&\r\n <Alert severity=\"error\">\r\n Error submitting new biller request. Please try again\r\n </Alert>\r\n }\r\n\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={handleCancelClick}\r\n disabled={isSubmitting} >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Create Biller\r\n </LoadingButton>\r\n </div>\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(\"Customer Reference Number\")\r\n .required()\r\n .max(20)\r\n .matches(/^[0-9]+$/, \"Customer Reference Number should only contain numbers\"),\r\n\r\n billerDescription: yup\r\n .string()\r\n .label(\"Biller Nickname\")\r\n .required()\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 .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 handleClose={() => undefined}\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] || (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, \"bpay\"),\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 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 { createTransferTimes } from \"../utilities/fundsTransfers\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\r\n }\r\n if (loading) {\r\n return <Loading />\r\n }\r\n if (data?.accountByIdOrNumber == null || error) {\r\n return <section className=\"sub-wrap\"><CError error=\"Could not load account details. Please try again.\" /></section>\r\n }\r\n if (paymentData.error != null) {\r\n return <section className=\"sub-wrap\"><CError error=\"Error submitting payment request. Please try again.\" /></section>\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 accountName = data.accountByIdOrNumber.ProductType;\r\n const accountNumber = data.accountByIdOrNumber.Number;\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"confirm-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <CurrencyExchangeIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, mb: 2 }}>\r\n Confirm BPay\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Please ensure all details are correct before proceeding. Once confirmed your\r\n transfer is final.\r\n </Typography >\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={formState.amount} />\r\n <span className=\"caption\">Amount to be paid</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{accountName} - {accountNumber || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To Biller: </span>{bpayBiller?.BillerDescription || bpayBiller?.BillerName}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Biller Code: </span>{bpayBiller?.Billercode || bpayBiller?.BillerName}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Customer Ref: </span>{bpayBiller?.CustomerReferenceNumber || bpayBiller?.BillerName}</Typography>} />\r\n </ListItem>\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n </List>\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => modifyTransfer()}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n loading={paymentData.loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\nexport default ConfirmPayment;\r\n","import React from \"react\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport DueOnListItemsReceipt from \"../utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferWizard } from \"../utilities/TransferWizard\";\r\nimport { BpayFormProps } from \"./CreateBpay\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport ReceiptLongIcon from '@mui/icons-material/ReceiptLong';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n if (error != null || data?.accountByIdOrNumber?.ProcessedAccountFundsTransfers == null) {\r\n return <CError error=\"Could not load payment details. Please try again.\" />\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. Please try again.\" />\r\n }\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"success-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <ReceiptLongIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={fundsTransfer?.Amount || 0} />\r\n <span className=\"caption\">Paid successfully to {bpayBiller?.BillerDescription || bpayBiller?.BillerName}</span>\r\n <span className=\"sub-caption\">Receipt No: {fundsTransfer.ReceiptNumber}</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{data.accountByIdOrNumber.ProductType} - {data.accountByIdOrNumber.Number || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">To Biller: </span>{bpayBiller?.BillerDescription || bpayBiller?.BillerName}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Biller Code: </span>{bpayBiller?.Billercode}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Customer Ref: </span>{bpayBiller?.CustomerReferenceNumber}</Typography>} />\r\n </ListItem>\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer} />\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {fundsTransfer.DepositDescription}</Typography>} />\r\n </ListItem>\r\n </List>\r\n <div className=\"button-row\">\r\n <Button\r\n fullWidth\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => returnToHome(data.accountByIdOrNumber?.Number!)}\r\n variant=\"contained\"\r\n >\r\n Done\r\n </Button>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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 { 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 React, { useState } from \"react\";\r\nimport { BpayBillerHistoryDocument, useBpayBillerHistoryQuery, useDeleteBpayPartyBillerMutation} from \"generated/generated-models\";\r\nimport { StringIsEqual } from \"core/util/stringExtensions\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { useScreenSize } from \"app/lib/useScreenSize\";\r\nimport Box from '@mui/material/Box';\r\nimport AddBpayBiller from \"./AddBpayBiller\";\r\nimport { DataGrid, GridLinkOperator, GridRowsProp, GridColDef, GridOverlay } from '@mui/x-data-grid';\r\nimport type { Theme } from '@mui/material/styles';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport ClearIcon from '@mui/icons-material/Clear';\r\nimport GroupAddIcon from '@mui/icons-material/GroupAdd';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport BpayText from \"app/components/BpayText\"\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport Paper from '@mui/material/Paper';\r\nimport Stack from '@mui/material/Stack';\r\nimport { styled } from '@mui/material/styles';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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 HasPendingTransfer: boolean\r\n}\r\ninterface Props {\r\n billerHistory: BpayBiller[];\r\n deleteBiller: (biller: BpayBiller) => void;\r\n}\r\n\r\nfunction CustomNoRowsOverlay() {\r\n return (\r\n <GridOverlay>\r\n <Box sx={{ m: 3, textAlign:\"center\" }}>You have no saved <BpayText /> billers.</Box>\r\n </GridOverlay>\r\n );\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 <IconButton aria-label=\"delete\" id=\"deleteButton\"><DeleteIcon onClick={() => props.deleteBiller(props.biller)}/></IconButton>\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 const [open, setOpen] = React.useState(false);\r\n const screenSize = useScreenSize();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const sortedBillers = billerHistory.sort((a, b) => a.description.toUpperCase() > b.description.toUpperCase() ? 1 : -1).map((item: any) => item);\r\n const rows: GridRowsProp = sortedBillers;\r\n const columns: GridColDef[] = [\r\n { field: 'name', headerName: 'Biller Name', minWidth: 300, flex: 3, renderCell: (params) => (billerDisplayName(params.row)) },\r\n { field: 'code', headerName: 'Biller Code', minWidth: 150, flex: 2 },\r\n { field: 'customerReferenceNumber', headerName: 'Customer Ref', minWidth: 150, flex: 2 },\r\n { field: ' ', headerName: '', minWidth: 20, flex: 1, align:\"center\", renderCell: (params) => (<BillerHistoryRow key={params.row.code} biller={params.row} deleteBiller={deleteBiller} />)},\r\n ];\r\n const Item = styled(Paper)(({ theme }) => ({\r\n backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',\r\n ...theme.typography.body2,\r\n padding: theme.spacing(1),\r\n textAlign: 'center',\r\n color: theme.palette.text.secondary,\r\n }));\r\n const handleAddBillerClick = () => {\r\n setOpen(true);\r\n }\r\n const handleClose = () => {\r\n setOpen(false);\r\n }\r\n return (\r\n <div className=\"biller-container\" style={{ height: 650, width: '100%' }}>\r\n <Box className=\"tab-header\" sx={{ mb: 2 }}>\r\n <Typography variant=\"h6\" component=\"h6\" sx={{ mx: 1, my: 0 }}>\r\n <BpayText /> Billers\r\n </Typography>\r\n <Button startIcon={<GroupAddIcon />} onClick={handleAddBillerClick} id=\"addBillerButton\">Add Biller</Button>\r\n </Box>\r\n {screenSize === \"desktop\" \r\n ? <DataGrid\r\n className='payees-grid'\r\n columns={columns}\r\n rows={rows}\r\n getRowId={(r) => r.id}\r\n rowsPerPageOptions={[10, 25, 50]}\r\n initialState={{\r\n pagination: {\r\n pageSize: 10,\r\n },\r\n }\r\n }\r\n components={{\r\n NoRowsOverlay: CustomNoRowsOverlay\r\n }}\r\n disableColumnSelector\r\n componentsProps={{\r\n filterPanel: {\r\n linkOperators: [GridLinkOperator.And],\r\n columnsSort: 'asc',\r\n filterFormProps: {\r\n linkOperatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n },\r\n columnInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n operatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n deleteIconProps: {\r\n sx: {\r\n '& .MuiSvgIcon-root': { color: '#d32f2f' },\r\n },\r\n },\r\n },\r\n sx: {\r\n '& .MuiDataGrid-filterForm': { p: 2 },\r\n '& .MuiDataGrid-filterForm:nth-child(even)': {\r\n backgroundColor: (theme: Theme) =>\r\n theme.palette.mode === 'dark' ? '#444' : '#f5f5f5',\r\n },\r\n '& .MuiDataGrid-filterFormLinkOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormColumnInput': { mr: 2, width: 150 },\r\n '& .MuiDataGrid-filterFormOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormValueInput': { width: 200 },\r\n },\r\n },\r\n }}\r\n />\r\n : <Stack spacing={2}>\r\n {sortedBillers.map(biller => {\r\n return (\r\n <Item sx={{ pb: 1.5 }}>\r\n <List className=\"payees-list-mobile\">\r\n <ListItem disablePadding className=\"delete-item\">\r\n <ListItemText primary={<Typography><IconButton aria-label=\"delete\" id=\"deletePayeeButton\"><ClearIcon onClick={() => deleteBiller(biller)}/></IconButton></Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding sx={{ px: 3 }}>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">{biller.description}</span></Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding sx={{ px: 3 }}>\r\n <ListItemText primary={<Typography>{biller.name}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding sx={{ px: 3 }}>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Biller Code: </span> {biller.code}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding sx={{ px: 3 }}>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Customer Ref: </span> {biller.customerReferenceNumber}</Typography>} />\r\n </ListItem>\r\n </List>\r\n </Item>\r\n )\r\n })}\r\n </Stack>\r\n }\r\n <Dialog\r\n fullScreen={fullScreen}\r\n className=\"add-payee\"\r\n open={open}\r\n onClose={handleClose}\r\n fullWidth\r\n >\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <AddBpayBiller handleClose={handleClose}/>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n </div>\r\n );\r\n};\r\n\r\nconst ManageBPayBillerHistory = () => {\r\n const [billerToDelete, setBillerToDelete] = useState<BpayBiller | undefined>(undefined);\r\n const [deleteBPayMutation, { loading: deleteBpayLoading }] = useDeleteBpayPartyBillerMutation();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\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 const { data, loading, error } = useBpayBillerHistoryQuery();\r\n\r\n if (loading) {\r\n return <Loading />\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 HasPendingTransfer: x?.HasPendingTransfer || false\r\n }\r\n });\r\n return <ManageBpayBillerHistoryView billerHistory={bpayHistory} deleteBiller={setBillerToDelete} />\r\n }\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n className=\"delete-payment-account\"\r\n open={true}\r\n >\r\n <DialogTitle>\r\n <DeleteIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, mb: 2 }}>\r\n Delete Biller?\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Are you sure you would like to delete this <BpayText /> biller?\r\n </Typography >\r\n <List sx={{ mb: 2 }}>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">{billerDisplayName(billerToDelete)}</span></Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Biller Code: </span> {billerToDelete.code}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Customer Ref: </span> {billerToDelete.customerReferenceNumber}</Typography>} />\r\n </ListItem>\r\n </List>\r\n\r\n {billerToDelete.HasPendingTransfer === true &&\r\n <Alert severity=\"warning\">\r\n There are Upcoming Transfers against these details. They will continue to be processed as usual unless cancelled manually.\r\n </Alert>\r\n }\r\n\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => setBillerToDelete(undefined)}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => deleteBPay()}\r\n loading={deleteBpayLoading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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 { PartyBankAccount, CurrentUserPartyBankAccountsDocument, useCurrentUserPartyBankAccountsQuery, useDeletePartyBankAccountMutation} from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport { useScreenSize } from \"app/lib/useScreenSize\";\r\nimport AddPayAnyone from \"./AddPayAnyone\";\r\nimport Box from '@mui/material/Box';\r\nimport { DataGrid, GridLinkOperator, GridRowsProp, GridColDef, GridOverlay } from '@mui/x-data-grid';\r\nimport type { Theme } from '@mui/material/styles';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport ClearIcon from '@mui/icons-material/Clear';\r\nimport GroupAddIcon from '@mui/icons-material/GroupAdd';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport Paper from '@mui/material/Paper';\r\nimport Stack from '@mui/material/Stack';\r\nimport { styled } from '@mui/material/styles';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\ninterface RowProps {\r\n pba: PartyBankAccount;\r\n deletePartyBankAccount: (pba: PartyBankAccount) => void;\r\n}\r\nfunction CustomNoRowsOverlay() {\r\n return (\r\n <GridOverlay>\r\n <Box sx={{ m: 3, textAlign:\"center\" }}>You have no saved pay anyone bank accounts.</Box>\r\n </GridOverlay>\r\n );\r\n }\r\n\r\nconst BankAccountRow = ({ pba, deletePartyBankAccount }: RowProps) => {\r\n return (\r\n <IconButton aria-label=\"delete\" id=\"deletePartyBankAccount\"><DeleteIcon onClick={() => deletePartyBankAccount(pba)}/></IconButton>\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 const [open, setOpen] = React.useState(false);\r\n const screenSize = useScreenSize();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n bankAccounts.sort((a, b) => a.BankAccount?.AccountName!.toUpperCase()! > b.BankAccount?.AccountName!.toUpperCase()! ? 1 :-1)\r\n const rows: GridRowsProp = bankAccounts.map((item: any) => item);\r\n const columns: GridColDef[] = [\r\n { field: 'AccountName', headerName: 'Name', minWidth: 300, flex: 3, renderCell: (params) => (params.row.BankAccount.AccountName)},\r\n { field: 'BankIdentifierText', headerName: 'BSB', minWidth: 150, flex: 2, renderCell: (params) => (params.row.BankAccount.BankIdentifierText)},\r\n { field: 'AccountNumber', headerName: 'Account No.', minWidth: 150, flex: 2, renderCell: (params) => (params.row.BankAccount.AccountNumber)},\r\n { field: ' ', headerName: '', minWidth: 20, flex: 1, align:\"center\", renderCell: (params) => (BankAccountRow({pba: params.row, deletePartyBankAccount: deletePartyBankAccount || (() => {return;}),}))},\r\n ];\r\n const Item = styled(Paper)(({ theme }) => ({\r\n backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',\r\n ...theme.typography.body2,\r\n padding: theme.spacing(1),\r\n textAlign: 'center',\r\n color: theme.palette.text.secondary,\r\n }));\r\n const handleAddPayAnyoneClick = () => {\r\n setOpen(true);\r\n }\r\n const handleClose = () => {\r\n setOpen(false);\r\n }\r\n\r\n return (\r\n <div className=\"biller-container\" style={{ height: 650, width: '100%' }}>\r\n <Box className=\"tab-header\" sx={{ mb: 2 }}>\r\n <Typography variant=\"h6\" component=\"h6\" sx={{ mx: 1, my: 0 }}>\r\n Pay Anyone Accounts\r\n </Typography>\r\n <Button startIcon={<GroupAddIcon />} onClick={handleAddPayAnyoneClick} id=\"addPayAnyoneButton\">Add Pay Anyone</Button>\r\n </Box>\r\n {screenSize === \"desktop\" \r\n ? <DataGrid\r\n className='payees-grid'\r\n columns={columns}\r\n rows={rows}\r\n getRowId={(r) => r.Id}\r\n rowsPerPageOptions={[10, 25, 50]}\r\n initialState={{\r\n sorting: {\r\n sortModel: [{ field: 'AccountName', sort: 'asc' }],\r\n },\r\n pagination: {\r\n pageSize: 10,\r\n },\r\n }\r\n }\r\n components={{\r\n NoRowsOverlay: CustomNoRowsOverlay\r\n }}\r\n disableColumnSelector\r\n componentsProps={{\r\n filterPanel: {\r\n linkOperators: [GridLinkOperator.And],\r\n columnsSort: 'asc',\r\n filterFormProps: {\r\n linkOperatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n },\r\n columnInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n operatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n deleteIconProps: {\r\n sx: {\r\n '& .MuiSvgIcon-root': { color: '#d32f2f' },\r\n },\r\n },\r\n },\r\n sx: {\r\n '& .MuiDataGrid-filterForm': { p: 2 },\r\n '& .MuiDataGrid-filterForm:nth-child(even)': {\r\n backgroundColor: (theme: Theme) =>\r\n theme.palette.mode === 'dark' ? '#444' : '#f5f5f5',\r\n },\r\n '& .MuiDataGrid-filterFormLinkOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormColumnInput': { mr: 2, width: 150 },\r\n '& .MuiDataGrid-filterFormOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormValueInput': { width: 200 },\r\n },\r\n },\r\n }}\r\n />\r\n : <Stack spacing={2}>\r\n {bankAccounts.map(account => {\r\n return (\r\n <Item sx={{pb: 1.5 }}>\r\n <List className=\"payees-list-mobile\">\r\n <ListItem disablePadding className=\"delete-item\">\r\n <ListItemText primary={<Typography><IconButton aria-label=\"delete\" id=\"deletePartyBankAccountButton\"><ClearIcon onClick={() => deletePartyBankAccount(account)}/></IconButton></Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding sx={{ px: 3 }}>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">{account.BankAccount?.AccountName}</span></Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding sx={{ px: 3 }}>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">BSB: </span> {account.BankAccount?.BankIdentifierText}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding sx={{ px: 3 }}>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Account No: </span> {account.BankAccount?.AccountNumber}</Typography>} />\r\n </ListItem>\r\n </List>\r\n </Item>\r\n )\r\n })}\r\n </Stack>\r\n }\r\n\r\n <Dialog\r\n fullScreen={fullScreen}\r\n className=\"add-payee\"\r\n open={open}\r\n onClose={handleClose}\r\n fullWidth\r\n >\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <AddPayAnyone handleClose={handleClose}/>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\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 const fullScreen = useMediaQuery(\"(max-width: 768px)\");\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 if (error) {\r\n return <CError error=\"Could not load bank accounts.\" />\r\n }\r\n\r\n if (partyBankAccountToBeDeleted) {\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n className=\"delete-payment-account\"\r\n open={true}\r\n >\r\n <DialogTitle>\r\n <DeleteIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, my: 2 }}>\r\n Delete Account?\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Are you sure you would like to delete this Pay Anyone account?\r\n </Typography >\r\n <List sx={{ mb: 2 }}>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">{partyBankAccountToBeDeleted.BankAccount?.AccountName}</span></Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">BSB: </span> {partyBankAccountToBeDeleted.BankAccount?.BankIdentifierText}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Account No: </span> {partyBankAccountToBeDeleted.BankAccount?.AccountNumber}</Typography>} />\r\n </ListItem>\r\n </List>\r\n\r\n {partyBankAccountToBeDeleted.BankAccount?.HasPendingTransfer === true &&\r\n <Alert severity=\"warning\">\r\n There are Upcoming Transfers against these details. They will continue to be processed as usual unless cancelled manually.\r\n </Alert>\r\n }\r\n\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => setPartyBankAccountToBeDeleted(undefined)}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={deletePartyBankAccount}\r\n loading={deletePbaLoading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n );\r\n }\r\n\r\n return (\r\n <Fragment>\r\n {deletePbaError && (\r\n <CError error=\"Could not remove bank accounts.\" />\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 </Fragment>\r\n );\r\n}\r\n\r\nexport { ManagePayAnyoneAccounts };","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\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\nimport IconButton from '@mui/material/IconButton';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\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 <IconButton component={Link} aria-label=\"delete\" to={(x: { pathname: any; }) => `${x.pathname}/Delete/${transfer.Id}`} id=\"deleteTransfer\"><DeleteIcon/></IconButton>\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 <TransferUntil transfer={transfer} />\r\n <div>{transfer.TransferTypeDescription}</div>\r\n <div>From: {transfer.FromAccountDescription}</div>\r\n <div>To: <span className=\"col-tfer-to\">{toAccount()}</span></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 <td><AvailableActions /></td>\r\n </tr>\r\n <tr className=\"transfers-mobile\">\r\n <td className=\"summary-cell transfer-date\">\r\n <p><CDate date={transfer.NextScheduledDate} /></p>\r\n </td>\r\n <td className=\"summary-cell\">\r\n <p className=\"transaction-type\">\r\n {transfer.TransferTypeDescription} - <Frequency /><AvailableActions />\r\n </p>\r\n {transfer.RegularPayment && (\r\n <p><strong className=\"text-warning\">Regular Payment</strong></p>\r\n )}\r\n\r\n <p><TransferUntil transfer={transfer} /></p>\r\n <p><MoneyFormatted amount={transfer.Amount} /></p>\r\n <p><span className=\"subtitle\">From:</span> {transfer.FromAccountDescription}</p>\r\n <p><span className=\"subtitle\">To:</span> {toAccount()}</p>\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 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 className=\"intro\">\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 className=\"intro\">\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 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 return (\r\n <div className=\"scheduled-transfers\">\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 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 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 <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 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\n\r\ninterface Props {\r\n statements: StatementDocument[];\r\n}\r\n\r\n\r\nconst StatementsList = ({ statements }: Props) => (\r\n <section className=\"sub-wrap\">\r\n <h2>Statements</h2>\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 <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 from \"react\";\r\nimport IconButton from '@mui/material/IconButton';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\n\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 <>\r\n <span title=\"Edit Account Name\" onClick={onStartEdit}>\r\n {description}\r\n </span>\r\n <IconButton className=\"edit-desc-title\" aria-label=\"edit\" title='Edit Account Name' onClick={onStartEdit} id=\"edit\">\r\n <EditIcon />\r\n </IconButton>\r\n </>\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 { 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\nimport Button from '@mui/material/Button';\r\nimport Grid from '@mui/material/Grid';\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 <Grid container spacing={2} >\r\n <Grid item xs={6}>\r\n <CInputFormGroup\r\n fieldName={nameof<typeof values>(\"Name\")}\r\n label=\"Account Name:\"\r\n inputClassName=\"form-control account-name-edit\"\r\n fieldWrapper={fieldNode => {\r\n return (\r\n <div className=\"form-group button-row\">\r\n {fieldNode}\r\n <Button\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mr: 1 }}\r\n variant=\"contained\">\r\n Save\r\n </Button>\r\n <Button\r\n className=\"btn-cancel\"\r\n sx={{ p: 1.5 }}\r\n variant=\"contained\"\r\n onClick={onCancel}\r\n disabled={isDisabled()} \r\n id=\"cancel\">\r\n Cancel\r\n </Button>\r\n </div>\r\n );\r\n }}\r\n />\r\n </Grid>\r\n </Grid>\r\n {called && loading && <Loading />}\r\n \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\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 editing 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 { Account } from \"generated/generated-models\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport NumberPercentage from \"app/components/NumberPercentage\";\r\n\r\nconst AccountSummaryHeader: React.FC<{ account: Account; }> = ({ account }) => {\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 return (<div className=\"account-metric-head\">\r\n {offsetProduct === false && \r\n <div className=\"account-metrics metric-group\">\r\n {clientConfigFn().showAccountCurrentRate &&\r\n <p><span className=\"title\">Current Rate: </span><NumberPercentage number={account.Rate ? account.Rate : 0} /></p>\r\n }\r\n <p><span className=\"title\">{clientConfigFn().minimumInstalmentLabel}: </span> <MoneyFormatted amount={account.MonthlyInstalment} /></p>\r\n <p><span className=\"title\">Next instalment due: </span> <CDate date={account.NextInstalmentDue} /></p>\r\n {clientConfigFn().canViewArrearsAmount && \r\n <p><span className=\"title\">Arrears Amount: </span><MoneyFormatted amount={account.ArrearsBalance} /></p>\r\n }\r\n </div>\r\n }\r\n\r\n {offsetProduct === true && \r\n <p>There are no additional details to display for this account.</p>\r\n }\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 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 { 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 DesktopTransactionList from \"./DesktopTransactonList\";\r\n\r\nexport default DesktopTransactionList;\r\n","import * as React from 'react';\r\nimport { Account, AccountTransaction, useAccountByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport Box from '@mui/material/Box';\r\nimport { CDate } from \"../../../common/CapitalDate\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useScreenSize } from \"app/lib/useScreenSize\";\r\nimport { DataGrid, GridLinkOperator, GridRowsProp, GridColDef, GridOverlay } from '@mui/x-data-grid';\r\nimport type { Theme } from '@mui/material/styles';\r\nimport { IsNullOrWhiteSpace } from 'core/util/stringExtensions';\r\nimport TransactionPageIconMoney from 'app/components/TransactionPageIconMoney';\r\nimport MoneySigned from 'app/components/MoneySigned';\r\nimport { makeNonEmpty } from 'core/util/array';\r\nimport Paper from '@mui/material/Paper';\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport { addDays } from 'date-fns';\r\nimport Typography from '@mui/material/Typography';\r\nimport Stack from '@mui/material/Stack';\r\nimport { styled } from '@mui/material/styles';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport MobileTransaction from '../MobileTransaction';\r\n\r\nconst DesktopTransactionList = ({ account }: { account?: Account }) => { \r\n const [filteredData, setFilteredData] = React.useState<AccountTransaction[]>([]);\r\n const { transactionPageSize, transactionHistoryLimitDays = 0 } = clientConfigFn();\r\n const screenSize = useScreenSize();\r\n\r\n const { data: dataAccountById, loading: loadingAccountById, error: errorAccountById } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: account?.Number! },\r\n fetchPolicy: \"network-only\",\r\n skip: account === undefined\r\n });\r\n\r\n React.useEffect(()=> {\r\n if(!loadingAccountById && dataAccountById) {\r\n const filteredTrans = makeNonEmpty(dataAccountById?.accountByIdOrNumber?.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 const cutOffDate = transactionHistoryLimitDays > 0 ? addDays(new Date(), -transactionHistoryLimitDays) : new Date(1990, 1, 1);\r\n\r\n // Hack because our types are wrong\r\n const filteredTransactions = filteredTrans.filter(tran => new Date(tran.EffectiveDate) >= cutOffDate);\r\n setFilteredData(filteredTransactions);\r\n }\r\n },[loadingAccountById, dataAccountById])\r\n\r\n function CustomNoRowsOverlay() {\r\n return (\r\n <GridOverlay>\r\n <Box sx={{ m: 3, textAlign:\"center\" }}>There are no transactions for this account.</Box>\r\n </GridOverlay>\r\n );\r\n }\r\n\r\n if (loadingAccountById) {\r\n return <Loading />;\r\n }\r\n if (errorAccountById) {\r\n return <section className=\"sub-wrap\"><CError error={\"Could not retrieve account transactions.\"} /></section>\r\n }\r\n\r\n const rows: GridRowsProp = filteredData;\r\n const columns: GridColDef[] = [\r\n { field: 'Id', headerName: 'Id', width: 0, hide: true, filterable: false },\r\n { field: 'CreatedOn', headerName: 'Date', minWidth: 100, flex: 2, renderCell: (params) => (<CDate date={params.value} />) }, \r\n { field: 'TransactionType', headerName: 'Description', minWidth: 280, renderCell: (params) => (!IsNullOrWhiteSpace(params.row.Note) ? <span>{params.value}<br/><b>Note:</b> {params.row.Note}</span> : <span>{params.value}</span>)},\r\n { field: 'Increase', headerName: 'Debit', minWidth: 100, flex: 2, renderCell: (params) => (<TransactionPageIconMoney amount={params.value} direction=\"debit\" isShowZero={false} />)},\r\n { field: 'Decrease', headerName: 'Credit', minWidth: 100, flex: 2, renderCell: (params) => (<TransactionPageIconMoney amount={params.value} direction=\"credit\" isShowZero={false} />)},\r\n { field: 'Balance', headerName: 'Balance', minWidth: 100, flex: 2, renderCell: (params) => (<MoneySigned amount={params.value} direction=\"total\" />)},\r\n ];\r\n const Item = styled(Paper)(({ theme }) => ({\r\n backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',\r\n ...theme.typography.body2,\r\n padding: theme.spacing(1),\r\n textAlign: 'center',\r\n color: theme.palette.text.secondary,\r\n }));\r\n\r\n return (\r\n <>\r\n {screenSize === \"desktop\" \r\n ? <DataGrid\r\n autoHeight\r\n className='custom-grid'\r\n columns={columns}\r\n rows={rows}\r\n getRowId={(r) => r.Id}\r\n getRowHeight={() => 'auto'}\r\n rowsPerPageOptions={[20, 50, 100]}\r\n initialState={{\r\n pagination: {\r\n pageSize: transactionPageSize,\r\n },\r\n }}\r\n components={{\r\n NoRowsOverlay: CustomNoRowsOverlay\r\n }}\r\n disableColumnSelector\r\n componentsProps={{\r\n filterPanel: {\r\n linkOperators: [GridLinkOperator.And],\r\n columnsSort: 'asc',\r\n filterFormProps: {\r\n linkOperatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n },\r\n columnInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n operatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n deleteIconProps: {\r\n sx: {\r\n '& .MuiSvgIcon-root': { color: '#d32f2f' },\r\n },\r\n },\r\n },\r\n sx: {\r\n '& .MuiDataGrid-filterForm': { p: 2 },\r\n '& .MuiDataGrid-filterForm:nth-child(even)': {\r\n backgroundColor: (theme: Theme) =>\r\n theme.palette.mode === 'dark' ? '#444' : '#f5f5f5',\r\n },\r\n '& .MuiDataGrid-filterFormLinkOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormColumnInput': { mr: 2, width: 150 },\r\n '& .MuiDataGrid-filterFormOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormValueInput': { width: 200 },\r\n },\r\n },\r\n }}\r\n />\r\n : <Stack spacing={2}>\r\n {filteredData.map(transaction => {\r\n return (\r\n <Item sx={{ pb: 1.5 }}>\r\n <List className=\"transaction-list-mobile\" sx={{ px: 2 }}>\r\n <ListItem disablePadding className=\"delete-item\">\r\n <ListItemText primary={<Typography><CDate date={transaction.CreatedOn} /></Typography>}/>\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">{transaction.TransactionType}</span></Typography>} secondary={<Typography><span className=\"subtitle\"><MobileTransaction transaction={transaction} /></span></Typography>} />\r\n </ListItem>\r\n {transaction.Note &&\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">{transaction.Note}</span></Typography>} />\r\n </ListItem>\r\n }\r\n </List>\r\n </Item>\r\n )\r\n })}\r\n </Stack>\r\n }\r\n </>\r\n );\r\n};\r\n\r\nexport default DesktopTransactionList;","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 { Account, 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: (account?: Account, disablePaging?: boolean) => PageTransactions = (account, disablePaging = false) => {\r\n const { transactionHistoryLimitDays = 0 } = clientConfigFn();\r\n\r\n const { data, error } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: account?.Id },\r\n fetchPolicy: \"network-only\",\r\n skip: account === undefined\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 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\nimport { CError } from \"app/common/CError\";\r\nimport { FormattedDate } from \"react-intl\";\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\nconsole.log(props.date)\r\n return (\r\n <div className=\"card\">\r\n <div className=\"card-header\">\r\n <FormattedDate value={props.date} year=\"numeric\" month=\"long\" day=\"numeric\"/>\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 <p>\r\n {x.TransactionType}\r\n </p>\r\n <p className=\"text-muted small\">\r\n {x.Note}\r\n </p>\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 = ({ account, setDetailView }: TransactionListProps) => {\r\n let { transactions, loading: loadingTransactions, error: errorTransactions } = usePagedTransactions(account, true);\r\n const [isVisible, setIsVisible] = useState(false);\r\n const { loading, items, hasNextPage, error, loadMore, resetItems } = useLoadItems();\r\n const { transactionPageSize } = clientConfigFn();\r\n const [ awaitingTransactionReset, setAwaitingTransactionReset ] = useState<string | undefined>();\r\n \r\n const groupedTransactions = transactions===undefined?[]:groupBy(transactions,\r\n (transaction) => endOfDay(new Date(transaction.EffectiveDate)),\r\n (firstElement, secondElement) => secondElement.valueOf() - firstElement.valueOf());\r\n const groupedTransactionList = groupedTransactions.map(x => <TransactionDateCard date={x.key} transactions={x.elements} showDetailView={setDetailView} />)\r\n \r\n useEffect(() => {\r\n setAwaitingTransactionReset(transactions?.reduce((state, transaction) => {\r\n return state+transaction.Id\r\n }, \"\"));\r\n }, [account]);\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n const transactionIds = transactions?.reduce((state, transaction) => {return state+transaction.Id}, \"\")\r\n if (transactionIds !== awaitingTransactionReset) {\r\n setAwaitingTransactionReset(transactionIds)\r\n resetItems()\r\n }\r\n }\r\n }, [transactions]);\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\r\n function resetItems() {\r\n if (true) {\r\n setHasNextPage(true);\r\n setItems([]);\r\n setLoading(false);\r\n\r\n }\r\n }\r\n\r\n return { loading, items, hasNextPage, error, loadMore, resetItems };\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 (loadingTransactions || transactions == null) {\r\n return <Loading />;\r\n }\r\n if (errorTransactions) {\r\n return <CError error={\"Could not retrieve account transactions.\"} />\r\n }\r\n\r\n return (\r\n <div className=\"mobile-transaction-list-container\">\r\n {items.map((item) => (\r\n <>{item.value}</>\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 { 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 <p className=\"transaction-description-item\">\r\n <span className=\"transaction-description-item-term\">{title}</span>\r\n <span className=\"transaction-description-item-definition\">{value}</span>\r\n </p>\r\n)\r\n\r\nconst DetailViewerContainer: React.FC = ({ children }) => {\r\n\r\n return (\r\n <div className=\"transaction-description\">\r\n <>{children}</>\r\n </div>\r\n )\r\n}\r\n\r\nconst DetailViewDashboard = ({ trans }: { trans: AccountTransaction }) => {\r\n if (trans.IsPending) {\r\n return (\r\n <DetailViewerContainer>\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 </DetailViewerContainer>\r\n )\r\n } else {\r\n return (\r\n <DetailViewerContainer>\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 </DetailViewerContainer>\r\n )\r\n }\r\n}\r\n\r\nexport default DetailViewDashboard;\r\n","import { 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 { IsNullOrWhiteSpace } from \"core/util/stringExtensions\";\r\nimport { AccountTransaction } from \"generated/generated-models\";\r\nimport DetailViewDashboard from \"./DetailViewDashboard\";\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport PaidIcon from '@mui/icons-material/Paid';\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\n\r\nconst TransactionDescription = ({ transaction }: { transaction: AccountTransaction }) => {\r\n if (!transaction.IsPending) {\r\n return null;\r\n }\r\n return <>\r\n <FontAwesomeIcon icon={faClock} /> PENDING\r\n </>\r\n}\r\n\r\n// WILL BE USED LATER WHEN FUNCTIONALITY HAS BEEN FURTHER DEVELOPED \r\n// const ExpandDetailView = ({ currentDetail, setDetailView, transId }: { transId: string, currentDetail?: string, setDetailView: (transId?: string) => void }) => {\r\n// const { BETA_showDetailView } = clientConfigFn();\r\n// if(!BETA_showDetailView) {\r\n// return null;\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// 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 TransactionRowDashboard = ({ trans, detailView, setDetailView }: Props) => {\r\n if (!trans) {\r\n return <></>;\r\n }\r\n\r\n return (\r\n <>\r\n <Accordion disabled disableGutters className=\"dash-accordion accordion-parent\">\r\n <AccordionSummary className=\"accordion-summary-parent\"\r\n expandIcon={<ExpandMoreIcon />}\r\n >\r\n <Grid container spacing={2}>\r\n <Grid item xs={1} className=\"trans-icon\">\r\n {trans.TransactionType === \"Direct Debit Repayment\"\r\n ? <CurrencyExchangeIcon className=\"dd-icon\"/>\r\n : trans.TransactionType === \"Direct Credit Payment\"\r\n ? <CurrencyExchangeIcon className=\"dd-icon\"/>\r\n : <PaidIcon className=\"fee-icon\"/>\r\n }\r\n </Grid>\r\n <Grid item xs={7} className=\"trans-details\">\r\n <div className=\"ra-trans-date\"><CDate date={trans.Effective}/></div>\r\n <div className=\"ra-trans-type\">{trans.TransactionType}</div>\r\n <TransactionDescription transaction={trans} />\r\n {!IsNullOrWhiteSpace(trans.Note) &&\r\n <div className=\"ra-trans-note\">{trans.Note}</div>\r\n }\r\n </Grid>\r\n <Grid item xs={4} className=\"trans-balances\">\r\n <p className=\"ra-trans-debit\"><TransactionPageIconMoney amount={trans.Increase} direction=\"debit\" isShowZero={false} /></p>\r\n <p className=\"ra-trans-credit\"><TransactionPageIconMoney amount={trans.Decrease} direction=\"credit\" isShowZero={false} /></p>\r\n <p className=\"ra-trans-balance\"><MoneySigned amount={trans.Balance} direction=\"total\" /></p>\r\n </Grid>\r\n </Grid>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <DetailViewDashboard trans={trans} />\r\n </AccordionDetails>\r\n </Accordion>\r\n {detailView === trans.Id &&\r\n <DetailViewDashboard trans={trans} />\r\n }\r\n </>\r\n );\r\n};\r\n\r\nexport default TransactionRowDashboard;\r\n","import { useState } from \"react\";\r\nimport { usePagedTransactions } from \"../../PaginationUtilities\";\r\nimport TransactionRowDashboard from \"./TransactionRowDashboard\";\r\nimport { Account } from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CApolloError } from \"app/common/CApolloError\";\r\n\r\nconst RecentActivityList = ({ account}: { account?: Account }) => {\r\n const [detailTransaction, setDetailTransaction] = useState<string>();\r\n const { transactions, loading, error } = usePagedTransactions(account);\r\n\r\n if (transactions !== undefined) {\r\n if (loading) {\r\n return <Loading />\r\n }\r\n } else {\r\n <div className=\"no-data-container\"><p>There are no transactions to display.</p></div>\r\n }\r\n if (error ) {\r\n return <CApolloError />\r\n }\r\n\r\n return (\r\n <>\r\n <section className=\"transactions-list\">\r\n <div className=\"list-header\">\r\n <h2>Recent Activity</h2>\r\n <span className=\"list-subhead\">For Account: { account?.Number }</span>\r\n </div>\r\n {transactions !== undefined && transactions.length > 0 ?\r\n <div className=\"accord-container\">\r\n {transactions?.map(trans =>\r\n <TransactionRowDashboard trans={trans} detailView={detailTransaction} setDetailView={setDetailTransaction} key={trans?.Id} />\r\n )}\r\n </div>\r\n : <div className=\"no-data-container\"><p>There are no transactions to display.</p></div>\r\n }\r\n </section>\r\n </>\r\n );\r\n};\r\n\r\nexport default RecentActivityList;\r\n","import TransactionListView from \"./TransactionListView\";\r\n\r\nexport default TransactionListView;\r\n","import { useScreenSize } from \"app/lib/useScreenSize\";\r\nimport { Account, AccountTransaction } from \"generated/generated-models\";\r\nimport DesktopTransactionList from \"./DesktopTransactionList\";\r\nimport MobileTransactionList from \"./MobileTransactionList\";\r\nimport RecentActivityList from \"./DesktopTransactionList/RecentActivityList\";\r\n\r\nexport type TransactionListProps = {\r\n account?: Account;\r\n setDetailView: (transaction: AccountTransaction) => void;\r\n}\r\n\r\nconst TransactionListView = ({ account, setDetailView }: TransactionListProps) => {\r\n const screenSize = useScreenSize();\r\n const isRoot = window.location.pathname === '/';\r\n\r\n if (screenSize === \"desktop\" && isRoot) {\r\n return <RecentActivityList account={account} />\r\n } \r\n else if (screenSize === \"desktop\") {\r\n return <DesktopTransactionList account={account} /> \r\n } \r\n else { \r\n return <MobileTransactionList account={account} setDetailView={setDetailView} />\r\n }\r\n}\r\n\r\nexport default TransactionListView;\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} id=\"goBackButton\">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 { 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 .label(\"Supplier Account Number\")\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 .label(\"Supplier BSB\")\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(),\r\n PayeeName: yup\r\n .string()\r\n .label(\"Supplier Name\")\r\n .required(),\r\n PaymentDate: yup.date().required(),\r\n PaymentDescription: yup\r\n .string()\r\n .label(\"Payment Description\")\r\n .required(),\r\n RequestedAmount: yup\r\n .number()\r\n .label(\"Amount\")\r\n .required()\r\n .positive()\r\n .moreThan(0),\r\n })\r\n .required();\r\n","import { DisbursementStage, File } from \"generated/generated-models\";\r\nimport MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport Typography from '@mui/material/Typography';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport { format } from \"date-fns\";\r\n\r\nexport interface Props {\r\n disbursement: DisbursementStage;\r\n}\r\nconst DisbursementRequestSuccessful = ({ disbursement }: Props) => {\r\n const formatDate = (date: Date) => format(new Date(date), 'd MMM yyyy')\r\n\r\n return (\r\n <>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={disbursement.RequestedAmount} />\r\n <span className=\"caption\">Payment Requested</span>\r\n </Typography >\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Your payment request has been sent for processing with the following details.\r\n </Typography >\r\n <h3>Supplier Details</h3>\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Supplier Name: </span>{disbursement.PayeeName}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">BSB: </span>{disbursement.BankIdentifierText}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Account Number: </span>{disbursement.AccountNumber}</Typography>} />\r\n </ListItem>\r\n </List>\r\n <h3>Payment Details</h3>\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Payment Description: </span>{disbursement.PaymentDescription}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Amount: </span><MoneyFormatted amount={disbursement.RequestedAmount} /></Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Payment Date: </span>{formatDate(disbursement.PaymentDate)}</Typography>} />\r\n </ListItem>\r\n \r\n {disbursement.Documents![0] !== null &&\r\n <ListItem disablePadding>\r\n <ListItemText className=\"supporting-docs\"\r\n primary={<Typography><span className=\"subtitle\">Supporting Documentation: </span></Typography>} \r\n secondary={<Typography>{makeNonEmpty(disbursement.Documents).map(doc => (\r\n <FileItemView fileItem={doc} key={doc.Id} />\r\n ))}</Typography>}/>\r\n </ListItem>\r\n }\r\n </List>\r\n </>\r\n );\r\n};\r\n\r\nconst FileItemView = ({ fileItem }: { fileItem: File }) => {\r\n return (\r\n <>{fileItem.FileName}</>\r\n );\r\n};\r\n\r\nexport { DisbursementRequestSuccessful };\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 const fileName = file.name;\r\n const fileExtension = fileName!.split('.').pop();\r\n return (\r\n <Fragment>\r\n <section className=\"file-upload-details\">\r\n {isImageExt(file)\r\n ? <img\r\n src={thumb}\r\n alt={file.name}\r\n className=\"img-thumb\"\r\n height={60}\r\n width={60}\r\n />\r\n : <div className=\"file-filetype\">{fileExtension}</div>\r\n }\r\n \r\n <div className=\"file-details\">\r\n <p>{file.name} <span>{Math.round(file.size || 0 / 1000)} KB</span></p>\r\n </div>\r\n </section>\r\n </Fragment>\r\n );\r\n }\r\n}\r\n","import { Formik } from \"formik\";\r\nimport Form from \"app/components/Form\";\r\nimport { DisbursementRequestInput, DisbursementRequestComponent } from \"generated/generated-models\";\r\nimport log from \"core/log\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport Datepicker from \"app/components/DatePicker\";\r\nimport { yupDisbursementRequestInput } from \"./yupDisbursementRequestInput\";\r\nimport { CApolloError } from \"../common/CApolloError\";\r\nimport { DisbursementRequestSuccessful } from \"./DisbursementRequestSuccessful\";\r\nimport { addTimeZoneOffset } from 'core/util/dateExtensions';\r\nimport Input from \"app/components/Input\";\r\nimport { Box, Button, Grid } from \"@mui/material\";\r\nimport { LoadingButton } from \"@mui/lab\";\r\nimport { FileThumb } from \"./FileThumb\";\r\nimport { ChangeEvent, useState } from \"react\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport ReceiptLongIcon from '@mui/icons-material/ReceiptLong';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\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\nconst DisbursementRequestForm = (props: Props) => {\r\n const [fileData, setFileData] = useState(\"\");\r\n const [fileName, setFileName] = useState(\"\");\r\n const [file, setFile] = useState<File>();\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const getBase64 = async (file: File) => {\r\n return new Promise<string>(resolve => {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n \r\n reader.onload = () => {\r\n let encoded = reader.result?.toString().replace(/^data:(.*,)?/, '');\r\n if(encoded && (encoded.length % 4) > 0) {\r\n encoded += '='.repeat(4 - (encoded.length % 4));\r\n }\r\n resolve(encoded!);\r\n };\r\n });\r\n };\r\n\r\n const handleUpload = async (e: ChangeEvent<HTMLInputElement>) => {\r\n if(e.target && e.target.files && e.target.files[0])\r\n {\r\n const file = e.target.files[0];\r\n setFile(file);\r\n setFileName(file.name);\r\n const base64 = await getBase64(file);\r\n setFileData(base64);\r\n }\r\n\r\n }\r\n\r\n return (\r\n <section className=\"disbursement-request\">\r\n <DisbursementRequestComponent>\r\n {(mutateFn, { called, data, error, loading }) => (\r\n <Formik<DisbursementRequestFormValues>\r\n initialValues={{\r\n File: \"\",\r\n FileName: \"\",\r\n InstrumentId: `${props.InstrumentId}`,\r\n AccountId: 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) {\r\n mutateFn({\r\n variables: {\r\n input: {\r\n ...(values as DisbursementRequestInput),\r\n File: fileData,\r\n FileName: fileName\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 if (called && !loading && error) {\r\n return <CApolloError error={error} />;\r\n }\r\n if (called && !loading && !error) {\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"success-requested-disbursement\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <ReceiptLongIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\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 className=\"button-row\">\r\n <Button\r\n fullWidth\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => window.location.reload()}\r\n variant=\"contained\"\r\n >\r\n Done\r\n </Button>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n );\r\n }\r\n\r\n return (\r\n <Box className=\"disbursement-details\">\r\n <h3>Request New Disbursement</h3>\r\n <Form>\r\n <Grid container spacing={2} sx={{mt:2}}>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<DisbursementRequestFormValues>(\"PayeeName\")}\r\n type=\"text\"\r\n label=\"Supplier Name\"\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<DisbursementRequestFormValues>(\"BankIdentifierText\")}\r\n type=\"bsb\"\r\n label=\"Supplier BSB\"\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<DisbursementRequestFormValues>(\"AccountNumber\")}\r\n type=\"text\"\r\n label=\"Supplier Account Number\"\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<DisbursementRequestFormValues>(\"PaymentDescription\")}\r\n type=\"text\"\r\n label=\"Payment Description\"\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<DisbursementRequestFormValues>(\"RequestedAmount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Datepicker\r\n name={nameof<DisbursementRequestFormValues>(\"PaymentDate\")}\r\n label=\"Payment Date\"\r\n minDate={new Date()}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <div className=\"form-group\">\r\n <label htmlFor=\"File\">Supporting Documentation</label>\r\n {clientConfigFn().disbursementFileText &&\r\n <p className=\"help-block\">\r\n {clientConfigFn().disbursementFileText}\r\n </p>\r\n }\r\n <div className=\"upload-container\">\r\n <div className=\"upload-wrap\">\r\n <input\r\n id=\"File\"\r\n name=\"File\"\r\n type=\"file\"\r\n onChange={event => {\r\n handleUpload(event);\r\n }}\r\n className=\"form-control file-upload-input\"\r\n />\r\n <div className=\"drag-text\">\r\n <h3>Drag & drop</h3>\r\n <p>or browse your files</p>\r\n </div>\r\n </div>\r\n </div>\r\n <p className=\"helper-text\">\r\n For example, an invoice, estimate of fees or a receipt.\r\n </p>\r\n </div>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <FileThumb file={file} />\r\n </Grid>\r\n <Grid item xs={12}>\r\n <div className=\"form-group button-row\">\r\n <Button\r\n sx={{ width: 150, p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n className=\"btn-cancel\"\r\n onClick={() => window.location.reload()}\r\n id=\"cancel\">\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n disabled={\r\n (called && loading) ||\r\n (data &&\r\n data.disbursementRequest &&\r\n data.disbursementRequest.Success) || undefined\r\n }>\r\n Request Disbursement\r\n </LoadingButton>\r\n </div>\r\n </Grid>\r\n </Grid>\r\n </Form>\r\n </Box>\r\n );\r\n }}\r\n />\r\n )}\r\n </DisbursementRequestComponent>\r\n </section>\r\n );\r\n}\r\n\r\nexport default DisbursementRequestForm;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { AccountTransaction, useAccountByIdOrNumberQuery, useIndueCardsandAssociationsByAccountQuery } 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\nimport Box from '@mui/material/Box';\r\nimport Tab from '@mui/material/Tab';\r\nimport TabContext from '@mui/lab/TabContext';\r\nimport TabList from '@mui/lab/TabList';\r\nimport TabPanel from '@mui/lab/TabPanel';\r\nimport DisbursementRequestForm from \"app/disbursement/DisbursementRequestForm\";\r\nimport AccountTransfers from \"../accountTransfer\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport MoneySigned from \"app/components/MoneySigned\";\r\nimport Alert from '@mui/material/Alert';\r\nimport Grid from \"@mui/material/Grid\";\r\nimport Button from \"@mui/material/Button\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport { useRouteMatch, Link } from \"react-router-dom\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport FeedIcon from '@mui/icons-material/Feed';\r\nimport CreditCardIcon from '@mui/icons-material/CreditCard';\r\n\r\nconst AccountView: React.FC<{ accountId: string }> = ({ accountId }) => {\r\n const {transactionHistoryLimitDays: historyDays} = clientConfigFn();\r\n const { data, loading, error } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: accountId }\r\n });\r\n const [detailView, setDetailView] = useState<AccountTransaction>();\r\n const [tabValue, setTabValue] = React.useState('transactions');\r\n const [selectedCard, setSelectedCard] = React.useState();\r\n const { data: dataIndueCards, loading: loadingIndueCards, error: errorIndueCards } = useIndueCardsandAssociationsByAccountQuery({\r\n variables: { accountId: accountId, accountIdString: accountId },\r\n fetchPolicy: \"network-only\",\r\n });\r\n const accountMatch = useRouteMatch<{ accountId: string }>(\"/account/index/:accountId/\"); \r\n const handleTabChange = (event: React.SyntheticEvent, newValue: string) => {\r\n setTabValue(newValue);\r\n };\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n\r\n if(!loadingIndueCards && dataIndueCards?.indueCardsByAccount?.length !== 0) {\r\n const indueCards = makeNonEmpty(dataIndueCards?.indueCardsByAccount);\r\n if(indueCards.length > 0) {\r\n const firstCard = indueCards[0].Id;\r\n setSelectedCard(firstCard);\r\n }\r\n }\r\n\r\n }, [detailView, loadingIndueCards, dataIndueCards]);\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n if (loadingIndueCards || errorIndueCards) {\r\n return <></>;\r\n }\r\n\r\n const account = data?.accountByIdOrNumber;\r\n const cardsEnabled = account?.CardAvailable || (account?.Cards?.length ?? 0) > 0;\r\n\r\n if (error !== undefined || account === undefined) {\r\n return <section className=\"sub-wrap\"><CError error=\"Could not load account details\" /></section>\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 const showErrorsMessage = () => {\r\n if (clientConfigFn().arrearsMessage === \"\") {\r\n return false;\r\n }\r\n if (account.ArrearsBalance === undefined) {\r\n return false;\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 (\r\n <section className=\"account-view sub-wrap\">\r\n <div className=\"account-header\">\r\n <Grid container spacing={2}>\r\n <Grid item xs={5}>\r\n <p className=\"desc-title\">\r\n <EditableAccountDescription\r\n accountId={account.Id}\r\n description={account.Description || account.ProductType || \" \"}\r\n />\r\n </p>\r\n <p className=\"acc-num\">Acc: {account.Number}</p>\r\n <p className=\"avail-title\">Available balance</p><MoneyFormatted amount={account.Redraw || 0.0} className=\"avail-bal\" />\r\n <p className=\"curr-bal\">Current balance: <MoneySigned amount={account.CurrentBalance} direction=\"total\" /></p>\r\n \r\n {showErrorsMessage() &&\r\n <Alert severity=\"error\">{clientConfigFn().arrearsMessage}</Alert>\r\n }\r\n </Grid>\r\n <Grid item xs={7} className=\"quick-actions-container\">\r\n <div className=\"quick-actions desktopActions\">\r\n {accountMatch && !clientConfigFn().hideTransferPage &&\r\n <Button href={`/transfersAndPayments`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} id=\"makeTransfersAndPaymentsDesktopButton\">\r\n Make a Transfer\r\n </Button>\r\n }\r\n {accountMatch && clientConfigFn().allowOnLineStatements &&\r\n <Button href={`/account/index/${account.Number}/statements`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} id=\"viewStatementsDesktopButton\">\r\n View Statements\r\n </Button>\r\n }\r\n {accountMatch && cardsEnabled && !clientConfigFn().hideCardPage &&\r\n <>{selectedCard !== undefined\r\n ? <Button href={`/account/index/${account.Number}/induecards/${selectedCard}`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} id=\"viewSelectedCardDesktopButton\">\r\n View Cards\r\n </Button>\r\n : <Button href={`/account/index/${account.Number}/induecards`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} id=\"viewCardDesktopButton\">\r\n View Cards\r\n </Button>\r\n }</>\r\n }\r\n </div>\r\n <div className=\"quick-actions mobileActions\">\r\n {accountMatch && !clientConfigFn().hideTransferPage &&\r\n <Button\r\n component={Link}\r\n variant=\"text\"\r\n to={`/transfersAndPayments`}\r\n startIcon={<CurrencyExchangeIcon />}\r\n id=\"payMobileButton\">\r\n Pay\r\n </Button>\r\n }\r\n {accountMatch && clientConfigFn().allowOnLineStatements &&\r\n <Button className=\"btn-view-statement\"\r\n component={Link}\r\n variant=\"text\"\r\n to={`/account/index/${account.Number}/statements`}\r\n startIcon={<FeedIcon />}\r\n id=\"viewStatementsMobileButton\">\r\n Statements\r\n </Button>\r\n }\r\n {accountMatch && cardsEnabled && !clientConfigFn().hideCardPage &&\r\n <>{selectedCard !== undefined\r\n ? <Button className=\"btn-view-cards\"\r\n component={Link}\r\n variant=\"text\"\r\n to={`/account/index/${account.Number}/induecards/${selectedCard}`}\r\n startIcon={<CreditCardIcon />}\r\n id=\"viewSelectedCardMobileButton\">\r\n Cards\r\n </Button>\r\n : <Button className=\"btn-view-cards\"\r\n component={Link}\r\n variant=\"text\"\r\n to={`/account/index/${account.Number}/induecards`}\r\n startIcon={<CreditCardIcon />}\r\n id=\"viewCardMobileButton\">\r\n Cards\r\n </Button>\r\n }</>\r\n }\r\n </div>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n <TabContext value={tabValue}>\r\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }} className=\"accountTabs\">\r\n <TabList onChange={handleTabChange} >\r\n <Tab label=\"Details\" value=\"details\" />\r\n <Tab label=\"Transactions\" value=\"transactions\" />\r\n {clientConfigFn().hideTransferPage === false && <Tab label=\"Scheduled Transfers\" value=\"scheduledTransfers\" />}\r\n {clientConfigFn().allowDisbursements && <Tab label=\"Request Payment\" value=\"requestPayment\" />}\r\n </TabList>\r\n </Box>\r\n <TabPanel className=\"details-container\" value=\"details\" sx={{ px: 2, py: 3 }}>\r\n <AccountSummaryHeader account={account} />\r\n </TabPanel>\r\n <TabPanel className=\"transaction-container\" value=\"transactions\" sx={{ px: 1, py: 3 }}>\r\n {historyDays\r\n ? ( <small className=\"text-muted transactiondays\">Displaying transactions for the last {historyDays} days.</small>\r\n ) : null }\r\n <TransactionListView account={account} setDetailView={setDetailView} />\r\n </TabPanel>\r\n {clientConfigFn().hideTransferPage === false &&\r\n <TabPanel className=\"scheduled-transfers-container\" value=\"scheduledTransfers\" sx={{ px: 1, py: 3 }}>\r\n <AccountTransfers accountIdOrNumber={account.Number!} />\r\n </TabPanel>\r\n }\r\n {clientConfigFn().allowDisbursements &&\r\n <TabPanel className=\"disbursements-container\" value=\"requestPayment\" sx={{ px: 1, py: 3 }}>\r\n <DisbursementRequestForm\r\n AccountId={account.Id}\r\n InstrumentId={account.InstrumentId}\r\n />\r\n </TabPanel>\r\n }\r\n </TabContext>\r\n </section>\r\n );\r\n}\r\n\r\nexport {\r\n AccountView\r\n}\r\n","import DOMPurify from \"dompurify\";\r\n\r\ntype SanitisedImageProps = {\r\n src: string,\r\n alt?: string,\r\n className?: string,\r\n width?: string,\r\n height?: string,\r\n}\r\n\r\nconst SanitisedImage = (props: SanitisedImageProps) => {\r\n return (\r\n <img src={DOMPurify.sanitize(props.src)} \r\n alt={props.alt}\r\n className={props.className}\r\n width={props.width}\r\n height={props.height}\r\n />\r\n )\r\n}\r\n\r\nexport default SanitisedImage;","import { IndueCard, IndueCardStatus, useAccountByIdOrNumberQuery } from \"generated/generated-models\";\r\nimport React from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { useHistory } from \"react-router\";\r\nimport { Card } from \"@mui/material\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport MoneySigned from \"app/components/MoneySigned\";\r\nimport { FormattedDate } from \"react-intl\";\r\nimport SanitisedImage from \"app/components/SanitisedImage\";\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 return true\r\n}\r\n\r\nconst CardTableRow = ({ card, account }: { card: IndueCard, account: string }) => {\r\n const history = useHistory();\r\n const clientConfig = clientConfigFn();\r\n\r\n const { data } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: account }\r\n });\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?.substring(card.CardNumber?.length - 4) ?? \"\";\r\n const maskedCard = \"•••• •••• •••• \" + lastFourDigits;\r\n const { cardid }: { cardid: string } = useParams();\r\n\r\n let cardClassName = \"cardElement\";\r\n let cardStyles = {\r\n paperContainer: {\r\n backgroundImage: `url(${clientConfig.bankCardInActiveUri ? clientConfig.bankCardInActiveUri : \"\"})`\r\n }\r\n };\r\n\r\n if (card.Id === cardid) {\r\n cardClassName = \"cardElementSelected\";\r\n cardStyles = {\r\n paperContainer: {\r\n backgroundImage: `url(${clientConfig.bankCardActiveUri ? clientConfig.bankCardActiveUri : \"\"})`\r\n }\r\n };\r\n }\r\n\r\n return (\r\n <Card className={`cardItem ${cardClassName}`} onClick={handleClick} key={card.Id} style={cardStyles.paperContainer}>\r\n <div className=\"cardHeader\">\r\n <SanitisedImage src={clientConfig.logoImageVariantUri} height={'22px'} />\r\n <p className={`cardStatus status-${card.Status}`}>{statusToText(card.Status)}</p>\r\n </div>\r\n <p className=\"cardBalance\">\r\n <span className=\"bal-title\">Balance</span>\r\n <MoneySigned amount={data?.accountByIdOrNumber?.CurrentBalance} direction=\"total\" />\r\n </p>\r\n <div className=\"cardDetails\">\r\n <p>{maskedCard}</p>\r\n <p><FormattedDate value={card.ExpiryDate!} year=\"2-digit\" month=\"2-digit\" /></p>\r\n </div>\r\n </Card>\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 <p>There are no cards for this account</p>\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 handleOnSelectedCard?: string,\r\n};\r\n\r\nconst IndueCardListTable = ({accountNumber, cards}: IndueCardListTableProps) => {\r\n return (\r\n <div className=\"cardListContainer\">\r\n {CardTableBody(accountNumber, cards)}\r\n </div>\r\n )\r\n}\r\n\r\nexport default IndueCardListTable;\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 lastFourDigits = card.CardNumber?.substring(card.CardNumber?.length - 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 { 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 { BrowserRouter, Redirect, useLocation } 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 '@mui/material/Alert';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\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 handleClose: () => void;\r\n goBack?: () => void;\r\n cardId: Guid | string;\r\n}\r\n\r\nconst IndueCardResetPinPage = ({ handleClose, goBack = () => { }, 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 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 { pathname } = useLocation();\r\n\r\n const SuccesfullyChangedPin = () => {\r\n if (changePinData?.changePin?.Result === true) {\r\n return (\r\n <Alert severity=\"success\">\r\n PIN successfully changed!\r\n <DelayedRender delay={1500}>\r\n <BrowserRouter forceRefresh={true}>\r\n <Redirect to={`${pathname}`}/>\r\n </BrowserRouter>\r\n </DelayedRender>\r\n </Alert>\r\n )\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const handleCancelClick = () => {\r\n goBack();\r\n handleClose();\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 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 <>\r\n <Title title=\"Change PIN\" />\r\n <p>Choose a new 4 digit PIN. You should use this PIN the next time you are using card {getMaskedCardNumber(card)}.</p>\r\n <Form>\r\n <Input\r\n name={nameof<IndueCardResetInput>(\"NewPin\")}\r\n type=\"wholeNumberAuth\"\r\n label=\"New PIN\"\r\n />\r\n\r\n <Input\r\n name={nameof<IndueCardResetInput>(\"ConfirmPin\")}\r\n type=\"wholeNumberAuth\"\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 {changePinError &&\r\n <Alert severity=\"error\">Could not change PIN. {changePinError?.message}</Alert>\r\n }\r\n\r\n <SuccesfullyChangedPin />\r\n\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={handleCancelClick}\r\n disabled={isSubmitting}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Change PIN\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </>\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 * as yup from \"yup\";\r\nimport { GetSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\nimport { IndueCardActivationInput } from \"./IndueCardConfirmStatusChange\";\r\n\r\nconst config = {\r\n\tCardPinFixedLength: 4,\r\n};\r\n\r\nexport const ValidateActivation = (requiresMfa: boolean) => {\r\n const schema: yup.ObjectSchema<IndueCardActivationInput> = yup.object({\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')], \"PIN's 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 { CError } from \"app/common/CError\";\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, useIndueCardActivateCardMutation } from \"generated/generated-models\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport * as H from 'history';\r\nimport { Validate } from \"./IndueCardChangeStatusValidate\";\r\nimport { ValidateActivation } from \"./IndueCardActivateValidate\";\r\nimport React, { useState } from \"react\";\r\nimport Alert from '@mui/material/Alert';\r\nimport Input from \"app/components/Input\";\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\n\r\ntype IndueCardStatusProps = {\r\n cardId: string;\r\n accountNumber: string;\r\n statusType: IndueCardStatus;\r\n}\r\n\r\nexport type IndueCardActivationInput = {\r\n NewPin: string;\r\n ConfirmPin: string;\r\n twoFactorToken?: string;\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 window.location.reload();\r\n }\r\n}\r\n\r\nconst handleActivateCardSubmit = async (values: IndueCardActivationInput, cardId: string, changeStatus: ReturnType<typeof useIndueCardActivateCardMutation>[\"0\"], history: H.History, callback: (succcess: boolean, cardActivationResult: boolean, ChangePinResult: boolean) => void) => {\r\n const result = await changeStatus({\r\n variables: {\r\n input:\r\n {\r\n CardId: cardId,\r\n TwoFactorToken: values.twoFactorToken,\r\n Pin: values.ConfirmPin.toString()\r\n }\r\n }\r\n });\r\n callback(result.data?.indueActivateCard?.Success ?? false, result.data?.indueActivateCard?.ActivateCardResult ?? false, result.data?.indueActivateCard?.ChangePinResult ?? false);\r\n}\r\n\r\nconst ActivateCardForm = ({ cardId }: { cardId: string }) => {\r\n const [changeStatus, {error, tokenRequired }] = useSecurityTokenMutation(useIndueCardActivateCardMutation());\r\n const history = useHistory();\r\n const [cardActivationError, setCardActivationError] = useState(false);\r\n const [changePinError, setChangePinError] = useState(false);\r\n const [successActivation, setSuccess] = useState(false);\r\n const ResultResponse = (succcess: boolean, cardActivationResult: boolean, ChangePinResult: boolean) => {\r\n setCardActivationError(!cardActivationResult);\r\n setChangePinError(!ChangePinResult);\r\n\r\n if (succcess === true) {\r\n setSuccess(true);\r\n\r\n setTimeout(\r\n () => {\r\n setSuccess(true);\r\n window.location.reload();\r\n },\r\n 1500);\r\n }\r\n };\r\n\r\n return (\r\n <Formik\r\n initialValues={{ NewPin: \"\", ConfirmPin: \"\" }}\r\n validationSchema={() => ValidateActivation(tokenRequired)}\r\n onSubmit={(values) => handleActivateCardSubmit(values, cardId, changeStatus, history, ResultResponse)}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <>\r\n <Title title=\"Card Activation\" />\r\n <p>Choose a new 4 digit PIN to confirm card activation. You should use this PIN the next time you are using this card.</p>\r\n <Form>\r\n <Input\r\n name={nameof<IndueCardActivationInput>(\"NewPin\")}\r\n type=\"wholeNumberAuth\"\r\n label=\"New PIN\"\r\n />\r\n <Input\r\n name={nameof<IndueCardActivationInput>(\"ConfirmPin\")}\r\n type=\"wholeNumberAuth\"\r\n label=\"Confirm PIN\"\r\n />\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<IndueCardActivationInput>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={tokenRequired}\r\n />\r\n\r\n {successActivation === true &&\r\n <Alert severity=\"success\">Card has been activated and PIN has been changed.</Alert>\r\n }\r\n {error != null &&\r\n <Alert severity=\"error\">Failed to activate the card and change PIN. {error?.message}</Alert>\r\n }\r\n {cardActivationError &&\r\n <Alert severity=\"error\">Failed to activate the card. No new PIN has been set for the card. Please try again and if the problem persists contact support for assistance.</Alert>\r\n }\r\n {changePinError && !cardActivationError &&\r\n <Alert severity=\"error\">Failed to change the PIN, however the card has been activated. Your PIN still needs to be changed. Please change your PIN via the change PIN page or contact support for assistance.</Alert>\r\n }\r\n\r\n <div className=\"button-row\">\r\n <Button\r\n id=\"cancel\"\r\n className=\"btn-cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => window.location.reload()}\r\n disabled={isSubmitting}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </>\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 <>\r\n <Title title=\"Close Card?\" />\r\n <p>Please confirm that you wish to close the selected card.</p>\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 {error != null &&\r\n <Alert severity=\"error\">Error closing card. {error?.message}</Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" \r\n id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => window.location.reload()}\r\n disabled={isSubmitting}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </>\r\n )\r\n }}\r\n </Formik>\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 <>\r\n <Title title=\"Hold Card?\"/>\r\n <p>You are about to place a hold on this card. Please confirm you are happy to proceed.</p>\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 {error != null &&\r\n <Alert severity=\"error\">Error holding card. {error?.message}</Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\"\r\n id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => window.location.reload()}\r\n disabled={isSubmitting}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </>\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 return (\r\n <>\r\n <Title title=\"Card lost or stolen?\" />\r\n <p>Please advise if your card is lost or stolen, this action cannot be undone.</p>\r\n <Form>\r\n <ButtonGroup\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 {error != null &&\r\n <Alert severity=\"error\">Error setting card as lost/stolen. {error?.message}</Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\"\r\n id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => window.location.reload()}\r\n disabled={isSubmitting}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </>\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 { useIndueCardDetailsQuery, IndueCardStatus, IndueCard } from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Box from '@mui/material/Box';\r\nimport Tab from '@mui/material/Tab';\r\nimport TabContext from '@mui/lab/TabContext';\r\nimport TabList from '@mui/lab/TabList';\r\nimport TabPanel from '@mui/lab/TabPanel';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport { Dialog, ListItemButton, Typography } from \"@mui/material\";\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport CreditCardIcon from '@mui/icons-material/CreditCard';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\r\nimport PasswordIcon from '@mui/icons-material/Password';\r\nimport LockIcon from '@mui/icons-material/Lock';\r\nimport SupportIcon from '@mui/icons-material/Support';\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { IndueCardResetPinPage } from \"./IndueCardResetPinPage\";\r\nimport IndueCardConfirmStatusChange from \"./IndueCardConfirmStatusChange\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\ntype Props = {\r\n cardId?: string;\r\n indueCardProps?: IndueCard;\r\n}\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 return true\r\n}\r\n\r\nconst IndueCardDetailsPage: React.FC<Props> = ({ cardId }) => {\r\n const { data, loading, error } = useIndueCardDetailsQuery({\r\n variables: { input: { CardId: cardId } },\r\n fetchPolicy: \"network-only\",\r\n });\r\n const card = data?.indueCardDetails;\r\n const { number }: { number: string } = useParams();\r\n const [value, setValue] = React.useState(\"CardDetails\");\r\n const [openHoldCard, setOpenHoldCard] = React.useState(false);\r\n const [openActivateCard, setOpenActivateCard] = React.useState(false);\r\n const [openChangePin, setOpenChangePin] = React.useState(false);\r\n const [openCloseCard, setOpenCloseCard] = React.useState(false);\r\n const [openBlockCard, setOpenBlockCard] = React.useState(false);\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n\r\n const handleTabChange = (event_: React.SyntheticEvent, newValue: string) => {\r\n setValue(newValue);\r\n }; \r\n const handleClickHoldCard = () => {\r\n setOpenHoldCard(true);\r\n };\r\n const handleCloseHoldCard = () => {\r\n setOpenHoldCard(false);\r\n };\r\n const handleClickActivateCard = () => {\r\n setOpenActivateCard(true);\r\n };\r\n const handleCloseActivateCard = () => {\r\n setOpenActivateCard(false);\r\n };\r\n const handleClickChangePin = () => {\r\n setOpenChangePin(true);\r\n };\r\n const handleCloseChangePin = () => {\r\n setOpenChangePin(false);\r\n };\r\n const handleClickCloseCard = () => {\r\n setOpenCloseCard(true);\r\n };\r\n const handleCloseCard = () => {\r\n setOpenCloseCard(false);\r\n };\r\n const handleClickBlockCard = () => {\r\n setOpenBlockCard(true);\r\n };\r\n const handleCloseBlockCard = () => {\r\n setOpenBlockCard(false);\r\n };\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 lastFourDigits = card.CardNumber?.substring(card.CardNumber?.length - 4) ?? \"\";\r\n const maskedCard = \"•• \" + lastFourDigits;\r\n\r\n return (\r\n <div className=\"cardDetailsContainer\">\r\n <TabContext value={value}>\r\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\r\n <TabList onChange={handleTabChange}>\r\n <Tab label=\"Card Details\" value=\"CardDetails\" />\r\n </TabList>\r\n </Box>\r\n <TabPanel value=\"CardDetails\" sx={{ px: 0, py: 3 }}>\r\n <h4>Settings & Info</h4>\r\n <List className=\"cardOptions containerListOptions\" sx={{ width: '100%'}}>\r\n {(card.CanHold) &&\r\n <ListItem disablePadding onClick={handleClickHoldCard} id=\"holdCardButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <CreditCardIcon />\r\n </ListItemIcon>\r\n <ListItemText \r\n primary=\"Hold card\" \r\n secondary={<Typography className={`cardSetting status-${card.Status}`}>Card is {statusToText(card.Status)} ({maskedCard})</Typography>}\r\n />\r\n <KeyboardArrowRightIcon />\r\n </ListItemButton>\r\n </ListItem>\r\n }\r\n {(card?.CanActivate) &&\r\n <ListItem disablePadding onClick={handleClickActivateCard} id=\"activateCardButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <CreditCardIcon />\r\n </ListItemIcon>\r\n <ListItemText \r\n primary=\"Activate card\" \r\n secondary={<Typography className={`cardSetting status-${card.Status}`}>Card is {statusToText(card.Status)} ({maskedCard})</Typography>}\r\n />\r\n <KeyboardArrowRightIcon />\r\n </ListItemButton>\r\n </ListItem>\r\n }\r\n <ListItem disablePadding onClick={handleClickChangePin} id=\"changePinButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <PasswordIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Change PIN\" secondary=\"Set a new PIN\" />\r\n <KeyboardArrowRightIcon />\r\n </ListItemButton>\r\n </ListItem>\r\n {card?.CanClose\r\n ? <ListItem disablePadding onClick={handleClickCloseCard} id=\"closeCardButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <DeleteIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Close card\" secondary=\"Request to close this card\" />\r\n <KeyboardArrowRightIcon />\r\n </ListItemButton>\r\n </ListItem>\r\n : <ListItem sx={{ px: 2, py: 0.4 }} className=\"cardClosed\">\r\n <ListItemIcon>\r\n <DeleteIcon />\r\n </ListItemIcon>\r\n <ListItemText primary=\"Card Closed\" secondary=\"This card has been permanently closed.\" />\r\n </ListItem>\r\n }\r\n </List>\r\n\r\n <h4>Card Issues</h4>\r\n <List className=\"cardOptions containerListOptions\" sx={{ width: '100%'}}>\r\n {(card?.CanReportLostStolen) &&\r\n <ListItem disablePadding onClick={handleClickBlockCard} id=\"blockCardButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <LockIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography>Block card</Typography>} secondary=\"Report card as lost or stolen\" />\r\n <KeyboardArrowRightIcon />\r\n </ListItemButton>\r\n </ListItem>\r\n }\r\n <ListItem sx={{ px: 2.2, py: 0.2}}>\r\n <ListItemIcon>\r\n <SupportIcon />\r\n </ListItemIcon>\r\n <ListItemText\r\n primary=\"Contact Support\" \r\n secondary={<>\r\n {clientConfigFn().supportEmailAddress && !clientConfigFn().supportPhoneNumber && <span><a href={'mailto:' + clientConfigFn().supportEmailAddress}> {clientConfigFn().supportEmailAddress}</a></span>}\r\n {clientConfigFn().supportPhoneNumber && !clientConfigFn().supportEmailAddress && <span>{clientConfigFn().supportPhoneNumber}</span>}\r\n {clientConfigFn().supportEmailAddress && clientConfigFn().supportPhoneNumber && <p className=\"contactSupport\"><span className=\"emailSupport\"><a href={'mailto:' + clientConfigFn().supportEmailAddress}> {clientConfigFn().supportEmailAddress}</a></span><span>{clientConfigFn().supportPhoneNumber}</span></p>}\r\n </>} \r\n />\r\n </ListItem>\r\n </List>\r\n </TabPanel>\r\n </TabContext>\r\n\r\n <Dialog open={openHoldCard} onClose={handleCloseHoldCard} fullScreen={fullScreen} fullWidth>\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <IndueCardConfirmStatusChange\r\n cardId={card.Id}\r\n accountNumber={number}\r\n statusType={IndueCardStatus.Activeoff} />\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n <Dialog open={openActivateCard} onClose={handleCloseActivateCard} fullScreen={fullScreen} fullWidth>\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <IndueCardConfirmStatusChange\r\n cardId={card.Id}\r\n accountNumber={number}\r\n statusType={IndueCardStatus.Active} />\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n <Dialog open={openChangePin} onClose={handleCloseChangePin} fullScreen={fullScreen} fullWidth>\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <IndueCardResetPinPage cardId={card.Id} handleClose={handleCloseChangePin}/>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n <Dialog open={openCloseCard} onClose={handleCloseCard} fullScreen={fullScreen} fullWidth>\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <IndueCardConfirmStatusChange\r\n cardId={card.Id}\r\n accountNumber={number}\r\n statusType={IndueCardStatus.Closed} />\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n <Dialog open={openBlockCard} onClose={handleCloseBlockCard} fullScreen={fullScreen} fullWidth>\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <IndueCardConfirmStatusChange\r\n cardId={card.Id}\r\n accountNumber={number}\r\n statusType={IndueCardStatus.Lost} />\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n </div>\r\n );\r\n}\r\n\r\nexport default IndueCardDetailsPage;\r\n","import React from \"react\";\r\nimport { match as Match } from \"react-router-dom\";\r\nimport IndueCardListTable from \"./IndueCardListTable\";\r\nimport { useIndueCardDetailsQuery, useIndueCardsandAssociationsByAccountQuery } from \"generated/generated-models\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { makeNonEmpty } from \"core/util/array\";\r\nimport IndueCardDetailsPage from \"./IndueCardDetailsPage\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Grid from \"@mui/material/Grid\";\r\n\r\ntype Props = {\r\n accountId: string;\r\n accountNumber: string;\r\n cardId: string;\r\n match?: Match<{ number: string, cardid?: string}>;\r\n}\r\n\r\nconst IndueCardPage: React.FC<Props> = ({ accountId, accountNumber, cardId }) => {\r\n const { data, loading, error } = useIndueCardDetailsQuery({\r\n variables: { input: { CardId: cardId } },\r\n fetchPolicy: \"network-only\",\r\n });\r\n const card = data?.indueCardDetails;\r\n const { data: dataIndueCards, loading: loadingIndueCards, error: errorIndueCards } = useIndueCardsandAssociationsByAccountQuery({\r\n variables: { accountId: accountId, accountIdString: accountId},\r\n fetchPolicy: \"network-only\",\r\n }); \r\n const indueCards = makeNonEmpty(dataIndueCards?.indueCardsByAccount);\r\n\r\n if (loading || loadingIndueCards) {\r\n return <Loading />;\r\n }\r\n if (error || errorIndueCards || card == null) {\r\n return <CError error=\"Could not retrieve card details\" />;\r\n }\r\nconsole.log(cardId)\r\n return (\r\n <div className=\"main-content sub-wrap cardPage\">\r\n <div className=\"cards-header\">\r\n <Grid container spacing={2}>\r\n <Grid item xs={6}>\r\n <div className=\"list-header\">\r\n <h2>Cards</h2>\r\n <span className=\"list-subhead\">For Account: {accountNumber}</span>\r\n </div>\r\n </Grid>\r\n <Grid item xs={6}>\r\n <div className=\"quick-actions\">\r\n <Button href={`/account/index/${accountNumber}`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} id=\"viewAccountDetailsButton\">\r\n View Account Details\r\n </Button>\r\n </div>\r\n </Grid>\r\n </Grid>\r\n </div>\r\n <div className=\"cardsContainer\">\r\n <IndueCardListTable \r\n accountNumber={accountNumber}\r\n cards={makeNonEmpty(indueCards)}\r\n handleOnSelectedCard={cardId}\r\n />\r\n <IndueCardDetailsPage cardId={cardId}/>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default IndueCardPage;\r\n","import React, { useState } from \"react\";\r\nimport IndueCardListTable from \"./IndueCardListTable\";\r\nimport { IndueCardsandAssociationsByAccountQuery, useIndueCardDetailsQuery, 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 '@mui/material/Button';\r\nimport Alert from '@mui/material/Alert';\r\nimport IndueCardDetailsPage from \"./IndueCardDetailsPage\";\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 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 if (association?.IsNonBorrower && cards?.length === 0) {\r\n return \"Only borrowers can order a card for the account\";\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 if (errorMessage != null) {\r\n return (\r\n <>\r\n <Alert severity=\"warning\">{errorMessage}</Alert>\r\n <Button variant=\"contained\" disabled={true} id=\"requestCardButton\">Request Card</Button>\r\n </>\r\n )\r\n }\r\n\r\n return (\r\n <Button\r\n component={Link}\r\n to={(x: { pathname: any; }) => `${x.pathname}/RequestCard`}\r\n variant=\"contained\"\r\n id=\"requestCardButton\">\r\n Request Card\r\n </Button>\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 const [selectedCard, setSelectedCard] = useState();\r\n const indueCards = makeNonEmpty(data?.indueCardsByAccount);\r\n\r\n const { data: dataCardDetails } = useIndueCardDetailsQuery({\r\n variables: { input: { CardId: selectedCard } },\r\n fetchPolicy: \"network-only\",\r\n });\r\n const card = dataCardDetails?.indueCardDetails;\r\n\r\n React.useEffect(()=> {\r\n if(!loading && data) {\r\n const indueCards = makeNonEmpty(data?.indueCardsByAccount);\r\n if(indueCards.length > 0) {\r\n const firstCard = indueCards[0].Id;\r\n setSelectedCard(firstCard);\r\n }\r\n }\r\n },[loading, data])\r\n\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n if (error) {\r\n return <CError error=\"Could not retrieve card details\" />\r\n }\r\n\r\n return (\r\n <div className=\"main-content sub-wrap cardPage\">\r\n <div className=\"title-row-with-button\">\r\n <div className=\"list-header\">\r\n <h2>Cards</h2>\r\n <span className=\"list-subhead\">For Account: {accountNumber}</span>\r\n </div>\r\n <RequestCard queryResult={data} cardAvailable={cardAvailable} />\r\n </div>\r\n <div className=\"cardsContainer\">\r\n <IndueCardListTable\r\n accountNumber={accountNumber}\r\n cards={makeNonEmpty(indueCards)}\r\n handleOnSelectedCard={selectedCard}\r\n />\r\n {selectedCard !== undefined &&\r\n <IndueCardDetailsPage cardId={selectedCard} indueCardProps={card}/>\r\n }\r\n </div>\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 '@mui/material/Button';\r\nimport { Document, Page } from 'react-pdf/dist/esm/entry.webpack';\r\nimport Title from \"app/components/Title\";\r\nimport { Formik } from \"formik\";\r\nimport Form from \"app/components/Form\";\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Validate } from \"./IndueCardConfirmCreateCardValidate\";\r\nimport Alert from '@mui/material/Alert';\r\n\r\nexport type IndueCardCreateCardProps = {\r\n accountId?: Guid | string;\r\n twoFactorToken?: string;\r\n}\r\ntype MFAStatus =\r\n | \"WithoutMFA\"\r\n | \"WithMFA\"\r\n\r\nconst IndueCardConfirmCreateCardPage = ({ accountId }: IndueCardCreateCardProps) => {\r\n const [acceptedTerms, setAcceptedTerms] = useState<boolean>();\r\n const [readTerms, setReadTerms] = useState(false);\r\n const [submitting, setSubmitting] = useState(false);\r\n const [currentMFAStatus, setCurrentMFAStatus] = useState<MFAStatus>(\"WithoutMFA\");\r\n const [createCard, { data, error }] = useIndueCardCreateCardMutation();\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 const initialValues: IndueCardCreateCardProps = {\r\n accountId: accountId,\r\n }\r\n\r\n const handleRequiresMFA = () => {\r\n setCurrentMFAStatus(\"WithMFA\")\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\r\n const handleUserAcceptsTerms = async (values: IndueCardCreateCardProps) => {\r\n try {\r\n setSubmitting(true);\r\n\r\n const result = await createCard(\r\n {\r\n variables: {\r\n input: {\r\n AccountId: accountId,\r\n TwoFactorToken: values.twoFactorToken,\r\n }\r\n },\r\n }\r\n );\r\n\r\n if (result.data?.createCard?.Code === \"499\") {\r\n handleRequiresMFA();\r\n }\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 finally {\r\n setSubmitting(false);\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 <Formik\r\n initialValues={initialValues}\r\n onSubmit={values => handleUserAcceptsTerms(values)}\r\n validationSchema={() => Validate(currentMFAStatus === \"WithMFA\")}\r\n >\r\n {({ isSubmitting}) => {\r\n return (\r\n <div className=\"firsttimelogin-tc-button-container\">\r\n <Form>\r\n\r\n <div className=\"sub-wrap form-wrap\">\r\n {data?.createCard?.Message != null &&\r\n <Alert severity=\"error\">\r\n {data?.createCard.Message}\r\n </Alert>\r\n }\r\n\r\n {currentMFAStatus === \"WithMFA\" &&\r\n <div>\r\n <RequestMultiFactorTokenFormik\r\n name={nameof<IndueCardCreateCardProps>(\"twoFactorToken\")}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n />\r\n </div>\r\n }\r\n {error != null &&\r\n <Alert severity=\"error\" style={{ marginTop: \"0.5rem\" }}>\r\n Could not order a card at this time. Please try again later or contact customer service.\r\n </Alert>\r\n }\r\n </div>\r\n\r\n <Button\r\n variant=\"contained\"\r\n role=\"secondary\"\r\n disabled={isSubmitting}\r\n id=\"cancel\"\r\n className=\"btn-cancel\"\r\n onClick={() => setAcceptedTerms(false)}\r\n >\r\n Cancel\r\n </Button>\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 variant=\"contained\"\r\n style={{ pointerEvents: readTerms ? \"auto\" : \"none\" }}\r\n type=\"submit\"\r\n id=\"submit\"\r\n disabled={!readTerms || submitting}\r\n >\r\n Accept Terms\r\n </Button>\r\n </span>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n </div>\r\n )\r\n}\r\n\r\nexport default IndueCardConfirmCreateCardPage;\r\n","import * as yup from \"yup\";\r\nimport { IndueCardCreateCardProps } from \"./IndueCardConfirmCreateCard\";\r\nimport { GetSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => {\r\n const schema: yup.ObjectSchema<IndueCardCreateCardProps> = yup.object({\r\n twoFactorToken: GetSecurityTokenValidator(requiresMfa),\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\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 { 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 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\nimport DisbursementRequestForm from \"app/disbursement/DisbursementRequestForm\";\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/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 && !config.hideCardPage &&\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 accountId={account.Id}\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 {config.allowDisbursements &&\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 }\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 <div className=\"container sub-wrap\">\r\n <p className=\"logout-message\">Logged out! Please close your browser.</p>\r\n </div>\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 MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport MoneySigned from \"../components/MoneySigned\";\r\nimport {\r\n Account,\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\nimport AccountsSummary from \"../instrument/AccountsSummary\";\r\nimport InstrumentHeader from \"../instrument/InstrumentHeader\";\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport Button from '@mui/material/Button';\r\n\r\nconst { numberOfAccountsToDisplayOnDashboard } = clientConfigFn();\r\n\r\nconst FinanceLine: (\r\n instrument: Instrument,\r\n handleOnSelectedAccount: (account: Account) => void,\r\n onClick?: (instrument: Instrument) => void,\r\n) => JSX.Element = (instrument, handleOnSelectedAccount) => {\r\n\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 };\r\n\r\n return (\r\n <>\r\n <Accordion disableGutters className=\"dash-accordion accordion-parent\"\r\n data-href={\"/Instrument/Index/\" + instrument.Number}\r\n key={instrument.Number || instrument.Id || \"\"}\r\n onClick={lineClicked}\r\n >\r\n <AccordionSummary className=\"accordion-summary-parent\"\r\n expandIcon={<AddIcon />}\r\n >\r\n <span className=\"instrument-details\">\r\n {clientConfigFn().showPrimaryBorrowerName\r\n ? <b>{instrument.PrimaryBorrower} </b>\r\n : <b>{instrument.Description || instrument.LoanPurpose} </b>\r\n }\r\n - {instrument.Number}\r\n </span>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <InstrumentHeader instrument={instrument} />\r\n </AccordionDetails>\r\n </Accordion>\r\n <AccountsSummary instrument={instrument} handleOnSelectedAccount={handleOnSelectedAccount} />\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 <h2>{title} {data?.userSession?.Party?.FirstName}</h2>\r\n }\r\n else{\r\n return <h2>{title} {data?.userSession?.Party?.OrganisationName}</h2>\r\n }\r\n }\r\n return <h2>{title}</h2>\r\n}\r\n\r\ninterface FinanceSummaryViewProps {\r\n handleOnSelectedAccount: (account: Account) => void;\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 = ({ handleOnSelectedAccount, financeSummary, onLineClick, myFinancesTitle, showUserInWelcomeMessage }) => {\r\n \r\n const isRoot = window.location.pathname === '/';\r\n \r\n return (\r\n <div>\r\n <section className=\"accounts-list\">\r\n <div className=\"list-header\">\r\n <WelcomeMessage showUser={showUserInWelcomeMessage} title={myFinancesTitle} />\r\n </div>\r\n {financeSummary!.Instruments!.length > 0 ?\r\n <section>\r\n {isRoot ?\r\n <div className=\"account-container\">\r\n {financeSummary &&\r\n financeSummary.Instruments &&\r\n financeSummary.Instruments.filter(x => x != null).slice(0, numberOfAccountsToDisplayOnDashboard).map(inst => {\r\n if (inst) {\r\n return FinanceLine(inst, handleOnSelectedAccount, onLineClick);\r\n }\r\n return <></>;\r\n })\r\n }\r\n </div>\r\n :<div className=\"accord-container\">\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, handleOnSelectedAccount, onLineClick);\r\n }\r\n return <></>;\r\n })\r\n }\r\n </div>\r\n }\r\n <div className=\"button-row button-row-showall\">\r\n <Button href={`/account/accountlist`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} className=\"btn-showall\" id=\"showAllAccountsButton\">\r\n Show All\r\n </Button>\r\n </div>\r\n </section>\r\n : <div className=\"no-data-container\"><p>There are no financial accounts linked to your profile.</p></div>\r\n }\r\n\r\n <section className=\"total-balance\">\r\n <div>\r\n <p className=\"main-balance\">Total Current Balance</p>\r\n <p className=\"main-balance\"><MoneySigned amount={financeSummary?.TotalPrincipal?.Amount} direction=\"total\" /></p>\r\n </div>\r\n\r\n {clientConfigFn().showAvailableRedraw ?\r\n <div>\r\n <p className=\"avail-balance\">Total Available Balance</p>\r\n <p><MoneyFormatted amount={financeSummary?.TotalRedraw?.Amount} /></p>\r\n </div>\r\n : null}\r\n </section>\r\n </section>\r\n </div>\r\n );\r\n};\r\n\r\nexport {\r\n FinanceSummaryView\r\n}\r\n\r\n\r\n","import 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 FinanceSummaryQueryInlineQuery,\r\n Account,\r\n} from \"generated/generated-models\";\r\nimport { Loading } from \"../lib/components/Loading\";\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport { FinanceSummaryView } from './FinanceSummaryView';\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 MaturityDate\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\ninterface FinanceSummaryComponentProps {\r\n account: Account | undefined\r\n handleOnSelectedAccount(account: Account): void\r\n}\r\n\r\nconst FinanceSummaryComponent = (props: FinanceSummaryComponentProps) => (\r\n <Query<FinanceSummaryQueryInlineQuery> query={query}>\r\n {({\r\n data,\r\n loading,\r\n error,\r\n }: QueryResult<FinanceSummaryQueryInlineQuery>) => {\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n if (error) {\r\n return <div>`Error!: ${error.message}`</div>;\r\n }\r\n if (!data) {\r\n return FinanceSummaryView({handleOnSelectedAccount: props.handleOnSelectedAccount});\r\n }\r\n const financeSummary = data.financeSummary || undefined;\r\n const {myFinancesTitle, showUserInWelcomeMessage} = clientConfigFn() \r\n\r\n if(financeSummary!.Instruments!.length > 0 && !props.account) {\r\n props.handleOnSelectedAccount(financeSummary?.Instruments![0]!.Accounts![0]!)\r\n }\r\n\r\n return FinanceSummaryView({\r\n financeSummary,\r\n myFinancesTitle,\r\n showUserInWelcomeMessage,\r\n handleOnSelectedAccount: props.handleOnSelectedAccount\r\n });\r\n }}\r\n </Query>\r\n);\r\n\r\nexport {\r\n FinanceSummaryComponent\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { FinanceSummaryComponent } from \"../finance-summary/FinanceSummaryComponent\";\r\nimport { Account } from \"generated/generated-models\";\r\n\r\n\r\nconst AccountList = () => {\r\n\r\n const [ selectedAccount, setSelectedAccount ] = useState<Account | undefined>();\r\n const handleOnSelectedAccount = (account: Account) => {\r\n setSelectedAccount(account);\r\n }\r\n\r\n return (\r\n <div className=\"accountslist-page\">\r\n <section className=\"container sub-wrap\">\r\n <FinanceSummaryComponent account={selectedAccount} handleOnSelectedAccount={handleOnSelectedAccount}/>\r\n </section>\r\n </div>\r\n \r\n )\r\n }\r\n\r\nexport default AccountList;","import * as React from 'react';\r\nimport { useStatementsByPartyIdQuery, useFinanceSummaryQueryQuery} from \"generated/generated-models\";\r\nimport { CDate } from \"../common/CapitalDate\";\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport { DataGrid, GridLinkOperator, GridColDef, GridOverlay } from '@mui/x-data-grid';\r\nimport type { Theme } from '@mui/material/styles';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport MuiLink from \"@mui/material/Link\";\r\nimport FormControl from '@mui/material/FormControl';\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\nimport TextField from '@mui/material/TextField';\r\nimport { useMediaQuery } from '@mui/material';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nconst StatementsListForParty = () => {\r\n const { data: dataStatements, loading: loadingStatements, error: errorStatements } = useStatementsByPartyIdQuery();\r\n const { data: dataAccounts, loading: loadingAccounts, error: errorAccounts } = useFinanceSummaryQueryQuery();\r\n const statementByPartyId = dataStatements?.statementsByPartyId?.filter(dt=>dt?.AccountNumber);\r\n const accountsByPartyId = dataAccounts?.financeSummary?.Instruments?.flatMap(instrument => instrument?.Accounts);\r\n const [selectedAccountNumber, setSelectedAccountNumber] = React.useState('');\r\n const [filteredData, setFilteredData] = React.useState<Array<string>>([]);\r\n const [listAccounts, setListAccounts] = React.useState<Array<string>>([]);\r\n const widthMed = useMediaQuery(\"(max-width: 575px)\");\r\n const widthSml = useMediaQuery(\"(max-width: 450px)\");\r\n const { number }: { number: string } = useParams();\r\n\r\n React.useEffect(()=> {\r\n if(!loadingStatements && dataStatements) {\r\n\r\n if(number) {\r\n const filterStatements = statementByPartyId!.sort((a, b) => (a!.CreatedOn! > b!.CreatedOn!) ? -1 : 1 ).filter(dt => dt?.AccountNumber === number).map((item: any) => item);\r\n setFilteredData(filterStatements);\r\n }\r\n else {\r\n const filteredStatementData = statementByPartyId!.sort((a, b) => (a!.CreatedOn! > b!.CreatedOn!) ? -1 : 1 ).map((item: any) => item);\r\n setFilteredData(filteredStatementData)\r\n }\r\n }\r\n if(!loadingAccounts && dataAccounts) {\r\n const accountNumber = accountsByPartyId?.map(account => account?.Number);\r\n const accountNumberObject = accountNumber!.map((item: any) => item);\r\n setListAccounts(accountNumberObject)\r\n }\r\n },[loadingStatements, dataStatements, loadingAccounts, dataAccounts])\r\n \r\n if (loadingStatements || loadingAccounts) {\r\n return <Loading />;\r\n }\r\n if (errorStatements || errorAccounts) {\r\n return <section className=\"sub-wrap\"><CError error={\"Could not retrieve account statements.\"} /></section>\r\n }\r\n\r\n const handleAccountChange = (_event: any, value: any) => {\r\n if(value !== null || undefined || \"\") {\r\n const filterStatements = statementByPartyId!.sort((a, b) => (a!.CreatedOn! > b!.CreatedOn!) ? -1 : 1 ).filter(dt => dt?.AccountNumber === value).map((item: any) => item);\r\n setFilteredData(filterStatements);\r\n }\r\n else {\r\n setFilteredData(statementByPartyId!.sort((a, b) => (a!.CreatedOn! > b!.CreatedOn!) ? -1 : 1 ).map((item: any) => item))\r\n }\r\n }\r\n\r\n function CustomNoRowsOverlay() {\r\n return (\r\n <GridOverlay>\r\n <Box sx={{ m: 3, textAlign:\"center\" }}>There are currently no statements for this account.</Box>\r\n </GridOverlay>\r\n );\r\n }\r\n\r\n const rows = filteredData;\r\n const columns: GridColDef[] = [\r\n { field: 'InstrumentId', headerName: 'Instrument', width: 0, hide: true, filterable: false },\r\n { field: 'AdHoc', headerName: '', width: 0, hide: true, filterable: false, },\r\n { field: 'Number', headerName: 'Statement', minWidth: 120, flex: 2, renderCell: (params) => (params.row.AdHoc === true ? <><MuiLink href={`/api/statements/${params.row.InstrumentId}/documents/${params.row.FileId}`} target=\"_blank\" rel=\"noopener noreferrer\">{params.value}</MuiLink><span className='adhoc'>Adhoc</span></> : <MuiLink href={`/api/statements/${params.row.InstrumentId}/documents/${params.row.FileId}`} target=\"_blank\" rel=\"noopener noreferrer\">{params.value}</MuiLink>) },\r\n { field: 'AccountNumber', headerName: 'Account', minWidth: 110, flex: 2, },\r\n { field: 'PeriodFrom', headerName: 'From', minWidth: 120, flex: 2, hide: widthMed, renderCell: (params) => (<CDate date={params.value} />) },\r\n { field: 'PeriodTo', headerName: 'To', minWidth: 120, flex: 2, renderCell: (params) => (<CDate date={params.value} />) },\r\n { field: 'FileId', headerName: '', align: 'center', headerAlign: 'center', minWidth: 40, flex: 1, hide: widthSml, filterable: false, renderCell: (params) => (<MuiLink href={`/api/statements/${params.row.InstrumentId}/documents/${params.value}`} target=\"_blank\" rel=\"noopener noreferrer\"><DownloadIcon /></MuiLink>) },\r\n ];\r\n\r\n return (\r\n <section className=\"sub-wrap statements-list\">\r\n <div className=\"list-header\">\r\n <h2>Statements</h2>\r\n </div>\r\n <Box>\r\n <div className=\"statement-container\" style={{ height: 700, width: '100%' }}>\r\n <Box sx={{ flex: '1 1 100%' }} className=\"filterContainer\">\r\n <FormControl sx={{ width: 220, mr: 3 }} size=\"small\" className='filterControl'>\r\n <Autocomplete\r\n id=\"filtered-account-outlined\"\r\n size=\"small\"\r\n options={listAccounts}\r\n getOptionLabel={(option) => option ? option : \"\"}\r\n onChange={handleAccountChange}\r\n inputValue={selectedAccountNumber}\r\n defaultValue={number ? number : \"\"}\r\n onInputChange={(_event, newSelectedAccountNumber) => {\r\n setSelectedAccountNumber(newSelectedAccountNumber);\r\n }}\r\n PaperComponent={({ children }) => (\r\n <Paper style={{ fontSize:'0.9rem' }}>{children}</Paper>\r\n )}\r\n renderInput={(params) => (\r\n <TextField {...params} label=\"Account\" />\r\n )}\r\n />\r\n </FormControl>\r\n </Box>\r\n <DataGrid\r\n className='custom-grid'\r\n columns={columns}\r\n rows={rows}\r\n getRowId={(r) => r.Id}\r\n rowsPerPageOptions={[10, 25, 50]}\r\n initialState={{\r\n pagination: {\r\n pageSize: 10,\r\n },\r\n }}\r\n components={{\r\n NoRowsOverlay: CustomNoRowsOverlay\r\n }}\r\n disableColumnSelector\r\n componentsProps={{\r\n filterPanel: {\r\n linkOperators: [GridLinkOperator.And],\r\n columnsSort: 'asc',\r\n filterFormProps: {\r\n linkOperatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n },\r\n columnInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n operatorInputProps: {\r\n variant: 'outlined',\r\n size: 'small',\r\n sx: { mt: 'auto' },\r\n },\r\n deleteIconProps: {\r\n sx: {\r\n '& .MuiSvgIcon-root': { color: '#d32f2f' },\r\n },\r\n },\r\n },\r\n sx: {\r\n '& .MuiDataGrid-filterForm': { p: 2 },\r\n '& .MuiDataGrid-filterForm:nth-child(even)': {\r\n backgroundColor: (theme: Theme) =>\r\n theme.palette.mode === 'dark' ? '#444' : '#f5f5f5',\r\n },\r\n '& .MuiDataGrid-filterFormLinkOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormColumnInput': { mr: 2, width: 150 },\r\n '& .MuiDataGrid-filterFormOperatorInput': { mr: 2 },\r\n '& .MuiDataGrid-filterFormValueInput': { width: 200 },\r\n },\r\n },\r\n }}\r\n />\r\n </div>\r\n </Box>\r\n </section>\r\n );\r\n}\r\n\r\nexport default StatementsListForParty;","import * as React from 'react';\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport { AccountTransaction, useAccountByIdOrNumberQuery, useFinanceSummaryQueryQuery } from \"generated/generated-models\";\r\nimport TransactionListView from \"app/transaction/TransactionListView\";\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\nimport TextField from '@mui/material/TextField';\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\n\r\nconst TransactionsListForParty = () => {\r\n const { data: dataAccounts, loading: loadingAccounts, error: errorAccounts } = useFinanceSummaryQueryQuery();\r\n const accountsByPartyId = dataAccounts?.financeSummary?.Instruments?.flatMap(instrument => instrument?.Accounts);\r\n const [listAccounts, setListAccounts] = React.useState<Array<string>>([]);\r\n const [, setDetailView] = React.useState<AccountTransaction>(); \r\n const [selectedOptions, setSelectedOptions] = React.useState();\r\n\r\n const { data: dataAccountById } = useAccountByIdOrNumberQuery({\r\n variables: { idOrNumber: selectedOptions! }\r\n })\r\n const accountById = dataAccountById?.accountByIdOrNumber;\r\n\r\n React.useEffect(()=> {\r\n if(!loadingAccounts && dataAccounts) {\r\n const accountNumber = accountsByPartyId?.map(account => account?.Number);\r\n const accountNumberObject = accountNumber!.map((item: any) => item);\r\n const firstAccount = (accountNumberObject[0]);\r\n\r\n setSelectedOptions(firstAccount);\r\n setListAccounts(accountNumberObject)\r\n }\r\n },[loadingAccounts, dataAccounts])\r\n \r\n if (loadingAccounts) {\r\n return <Loading />;\r\n }\r\n if (errorAccounts) {\r\n return <section className=\"sub-wrap\"><CError error={\"Could not retrieve account statements.\"} /></section>\r\n }\r\n\r\n const handleAccountChange = (_event: any, value: any) => {\r\n setSelectedOptions(value)\r\n }\r\n \r\n return (\r\n <section className=\"sub-wrap transactions-list\">\r\n <div className=\"list-header\">\r\n <h2>Transactions</h2>\r\n <span className=\"list-subhead\">For Account: {selectedOptions}</span>\r\n </div>\r\n \r\n <Box className=\"filterContainer\">\r\n <div style={{ width: '100%' }}>\r\n <FormControl sx={{ width: 220, mr: 3 }} size=\"small\" className='filterControl'>\r\n <Autocomplete\r\n id=\"filtered-account-outlined\"\r\n size=\"small\"\r\n options={listAccounts}\r\n disableClearable\r\n onChange={handleAccountChange}\r\n getOptionLabel={(option) => option}\r\n defaultValue={selectedOptions}\r\n\r\n PaperComponent={({ children }) => (\r\n <Paper style={{ fontSize:'0.9rem' }}>{children}</Paper>\r\n )}\r\n renderInput={(params) => (\r\n <TextField {...params} label=\"Account\" />\r\n )}\r\n />\r\n </FormControl>\r\n </div>\r\n </Box>\r\n <TransactionListView account={accountById} setDetailView={setDetailView} />\r\n\r\n </section>\r\n )\r\n}\r\n\r\nexport default TransactionsListForParty;","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, useHistory } from \"react-router\";\r\nimport { Validate } from \"./changePasswordValidator\";\r\nimport Alert from '@mui/material/Alert';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\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 const history = useHistory();\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 <Alert severity=\"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 </Alert>\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 <Alert severity=\"error\">\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 </Alert>\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 <Alert severity=\"error\">\r\n {getErrorMessage()}\r\n </Alert>\r\n }\r\n <SuccesfullyChangedPassword />\r\n\r\n <div className=\"form-group button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => history.push(`/Security/ProfileSettings/Security`)}\r\n disabled={isSubmitting} >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Change Password\r\n </LoadingButton>\r\n\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 Form from \"app/components/Form\";\r\nimport Input from \"app/components/Input\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { Formik } from \"formik\";\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport RequestMultiFactorToken from \"../../components/RequestMultiFactorToken\";\r\nimport React, { useState } from \"react\";\r\nimport {\r\n useGenerateAuthSecretMutation, useEnableProfileAuthenticatorMutation, useIsUserAuthenticatedQuery,\r\n useDisableProfileAuthenticatorMutation\r\n} from \"generated/generated-models\";\r\nimport { ValidateCode } from \"./AuthenitacorAuthCodeValidation\";\r\nimport QRCode from \"qrcode.react\";\r\nimport { useHistory } from \"react-router\";\r\nimport Title from \"app/components/Title\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport Alert from '@mui/material/Alert';\r\n\r\ntype Stage =\r\n | \"EnterMFA\"\r\n | \"AddAuth\"\r\n | \"RemoveAuth\"\r\n\r\ntype AttemptState =\r\n | \"None\"\r\n | \"Failed\"\r\n | \"Succeeded\"\r\n\r\nexport type SetAuthCodeProps = {\r\n authenticatorToken?: string;\r\n}\r\n\r\n\r\nconst AuthenticatorPage = () => {\r\n const history = useHistory();\r\n const [twoFactorToken, setTwoFactorToken] = useState(\"\");\r\n const [generateAuthSecret] = useGenerateAuthSecretMutation();\r\n const [attemptState, setAttemptState] = useState<AttemptState>(\"None\");\r\n const [authSecret, setAuthSecret] = useState(\"\");\r\n const [enableAuth, { error: enableAuthError }] = useEnableProfileAuthenticatorMutation();\r\n const [currentStage, setCurrentStage] = useState<Stage>(\"EnterMFA\");\r\n const { data: authenticatedData } = useIsUserAuthenticatedQuery();\r\n const [displayRemoveWarning, setDisplayRemoveWarning] = useState(false);\r\n const [disableAuth, { error: disableAuthError }] = useDisableProfileAuthenticatorMutation();\r\n const [goHome, setGoHome] = useState(false);\r\n\r\n const authCodeProps: SetAuthCodeProps = {\r\n authenticatorToken: \"\"\r\n }\r\n\r\n const QRUri = (productLabel: string, issuer: string, serect: string) => {\r\n var uri: string = \"otpauth://totp/\" + encodeURIComponent(productLabel) + \"?secret=\" + serect + \"&issuer=\" + encodeURIComponent(issuer);\r\n return uri;\r\n };\r\n\r\n const isUsingGoogleAuth = authenticatedData?.userSession?.IsUsingGoogleAuth || false;\r\n const mfaEnabled = authenticatedData?.userSession?.UseMultiFactorAuth || false;\r\n\r\n const enableRemoveWarning = () => {\r\n setDisplayRemoveWarning(true);\r\n }\r\n\r\n const disableRemoveWarning = () => {\r\n setDisplayRemoveWarning(false);\r\n }\r\n\r\n const handleMFASubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n\r\n var result = await generateAuthSecret({\r\n variables: {\r\n input: {\r\n TwoFactorToken: twoFactorToken\r\n }\r\n },\r\n\r\n });\r\n\r\n if (result.data?.generateAuthSecret?.Success === undefined || result.data?.generateAuthSecret?.Success === false) {\r\n setAttemptState(\"Failed\");\r\n }\r\n else {\r\n setAttemptState(\"Succeeded\");\r\n setTimeout(\r\n () => {\r\n setAttemptState(\"None\");\r\n\r\n if (isUsingGoogleAuth === true) {\r\n setCurrentStage(\"RemoveAuth\");\r\n }\r\n else {\r\n setCurrentStage(\"AddAuth\");\r\n }\r\n },\r\n 1500);\r\n\r\n setAuthSecret(result.data?.generateAuthSecret?.AuthSecret ? result.data?.generateAuthSecret?.AuthSecret : \"\");\r\n }\r\n }\r\n\r\n const handleRemoveSubmit = async () => {\r\n setDisplayRemoveWarning(false);\r\n\r\n var result = await disableAuth({\r\n variables: {\r\n input: {\r\n }\r\n },\r\n });\r\n\r\n if (result.data?.disableProfileAuthenticator?.Success === undefined || result.data?.disableProfileAuthenticator?.Success === false) {\r\n setAttemptState(\"Failed\");\r\n }\r\n else {\r\n setAttemptState(\"Succeeded\");\r\n setTimeout(\r\n () => {\r\n setAttemptState(\"None\");\r\n setGoHome(true);\r\n },\r\n 1500);\r\n }\r\n }\r\n\r\n const handleAuthCodeSubmit = async (values: SetAuthCodeProps) => {\r\n var result = await enableAuth({\r\n variables: {\r\n input: {\r\n AuthenticatorToken: values.authenticatorToken?.toString()\r\n }\r\n },\r\n });\r\n\r\n if (result.data?.enableProfileAuthenticator?.Success === undefined || result.data?.enableProfileAuthenticator?.Success === false) {\r\n setAttemptState(\"Failed\");\r\n }\r\n else {\r\n setAttemptState(\"Succeeded\");\r\n setTimeout(\r\n () => {\r\n setAttemptState(\"None\");\r\n setCurrentStage(\"RemoveAuth\");\r\n },\r\n 1500);\r\n }\r\n }\r\n\r\n if (goHome === true) {\r\n return <Redirect to=\"/Security/ProfileSettings/Security\" />\r\n }\r\n\r\n return (\r\n <div className=\"sub-wrap form-wrap\">\r\n {currentStage === \"EnterMFA\" &&\r\n <section>\r\n <Title\r\n title={isUsingGoogleAuth ? \"Manage Two-Factor Authentication\" : \"Setup Two-Factor Authentication\"}\r\n />\r\n <div>\r\n <p className=\"text-muted intro-text\">{isUsingGoogleAuth ? clientConfigFn().manageAuthenticatorMessage : clientConfigFn().manageSecurityTokenMessage }</p>\r\n </div>\r\n {!mfaEnabled &&\r\n <Alert severity=\"error\">Multifactor authentication not enabled for your profile, please contact support to proceed.</Alert>\r\n }\r\n <form autoComplete=\"off\" onSubmit={(e) => handleMFASubmit(e)}>\r\n {mfaEnabled &&\r\n <RequestMultiFactorToken\r\n getToken={setTwoFactorToken}\r\n showRequestNewToken={true}\r\n isUsingGoogleAuth={isUsingGoogleAuth}\r\n />}\r\n \r\n {attemptState === \"Failed\" &&\r\n <Alert severity=\"error\">\r\n Invalid token, please try again.\r\n </Alert>\r\n }\r\n\r\n {attemptState === \"Succeeded\" &&\r\n <Alert severity=\"success\">\r\n Token successful\r\n </Alert>\r\n }\r\n\r\n <div className=\"form-group button-row\">\r\n <Button \r\n variant=\"contained\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n className=\"btn-cancel\"\r\n onClick={() => history.push('/Security/ProfileSettings/Security')}\r\n id=\"cancel\"\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n type=\"submit\"\r\n disabled={!mfaEnabled}\r\n id=\"submit\"\r\n > {isUsingGoogleAuth === false ? 'Setup' : 'Manage'} Authenticator\r\n </Button>\r\n </div>\r\n </form>\r\n </section>\r\n\r\n }\r\n\r\n {currentStage === \"AddAuth\" &&\r\n <Formik\r\n initialValues={authCodeProps}\r\n onSubmit={(values) => handleAuthCodeSubmit(values)}\r\n validationSchema={() => ValidateCode()}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <div>\r\n <Title title=\"Setup Two-Factor Authentication\" />\r\n <p className=\"text-muted\">Using your preferred authentication app scan the following QR code or manually enter the secret below to setup your authenticator.</p>\r\n <p className=\"text-muted\">Once your authenticator is installed please enter the current code below confirming your installation.</p>\r\n <p className=\"text-muted\">If you cancel before confirming your installation the authenticator will not be applied to your account and the below QR code and secret will no longer be valid.</p>\r\n\r\n <Form>\r\n <QRCode includeMargin value={QRUri(clientConfigFn()._productLabel, clientConfigFn()._issuer, authSecret)} />\r\n <p className=\"text-muted btm-nomargin\">Secret: {authSecret}</p>\r\n\r\n <Input\r\n name={nameof<SetAuthCodeProps>(\"authenticatorToken\")}\r\n type=\"wholeNumberAuth\"\r\n placeHolder=\"Please enter your code\"\r\n />\r\n\r\n {enableAuthError != null &&\r\n <Alert severity=\"error\">\r\n Error verifying\r\n </Alert>\r\n }\r\n {attemptState === \"Failed\" &&\r\n <Alert severity=\"error\">\r\n Invalid code, please try again.\r\n </Alert>\r\n }\r\n {attemptState === \"Succeeded\" &&\r\n <Alert severity=\"success\">\r\n Authentication successfully added\r\n </Alert>\r\n }\r\n <div className=\"form-group button-row\">\r\n <Button \r\n variant=\"contained\" \r\n className=\"btn-cancel\"\r\n onClick={() => history.goBack()}\r\n id=\"cancel\"\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" \r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n id=\"submit\"\r\n >\r\n Verify\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </div>\r\n )\r\n }}\r\n </Formik>\r\n }\r\n\r\n {currentStage === \"RemoveAuth\" &&\r\n <section className=\"container authentication\">\r\n <div className=\"section-intro\">\r\n <h2>Manage Two-Factor Authentication</h2>\r\n <p>Two-Factor Authentication (2FA) adds an extra layer of security to your account by requiring more than just a password to login.</p>\r\n <p>If you choose to remove 2FA, you will lose a layer of security and will only receive login tokens via SMS/Email.</p>\r\n </div>\r\n <table className=\"table table-selectable\">\r\n <tbody>\r\n <tr className=\"table-no-select\">\r\n <td className=\"row-title\">2FA Authenticator</td>\r\n <td align='right'>\r\n <Button variant=\"text\" onClick={enableRemoveWarning} id=\"removeButton\">Remove</Button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n {displayRemoveWarning === false &&\r\n <div className=\"form-group button-row\">\r\n <Button \r\n variant=\"contained\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n className=\"btn-cancel\"\r\n onClick={() => history.push('/Security/ProfileSettings/Security')}\r\n >\r\n Cancel\r\n </Button>\r\n </div>\r\n }\r\n {displayRemoveWarning === true &&\r\n <div>\r\n <Alert severity=\"warning\">\r\n You are about to remove Two-Factor Authentication. Once removed you will only receive login tokens via SMS/Email.\r\n </Alert>\r\n <div className=\"form-group button-row\">\r\n <Button \r\n variant=\"contained\" id=\"cancel\"\r\n className=\"btn-cancel\"\r\n onClick={disableRemoveWarning}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n variant=\"contained\" id=\"submit\"\r\n type=\"submit\" onClick={handleRemoveSubmit}\r\n >\r\n Confirm\r\n </Button>\r\n </div>\r\n </div>\r\n }\r\n\r\n {disableAuthError != null &&\r\n <Alert severity=\"error\">\r\n Error removing authentication\r\n </Alert>\r\n }\r\n {attemptState === \"Succeeded\" &&\r\n <Alert severity=\"success\">\r\n Authentication successfully removed\r\n </Alert>\r\n }\r\n {attemptState === \"Failed\" &&\r\n <Alert severity=\"error\">\r\n Failed to Remove authenticator\r\n </Alert>\r\n }\r\n </section>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport default AuthenticatorPage;\r\n","import * as yup from \"yup\";\r\nimport { SetAuthCodeProps } from \"./AuthenticatorPage\";\r\n\r\nexport const ValidateCode = () => {\r\n const schema: yup.ObjectSchema<SetAuthCodeProps> = yup.object({\r\n\r\n authenticatorToken: yup\r\n .string()\r\n .label(\"Authenticator Code\")\r\n .required()\r\n .min(6)\r\n .max(6)\r\n .matches(/^[0-9]+$/, \"Authenticator code should only contain numbers\"),\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import { CTime } from \"app/common/CapitalDate\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport { FormattedDate } from \"react-intl\";\r\n\r\ntype Props = {\r\n rowHeading: string;\r\n dailyLimit?: string;\r\n rowAmount?: number;\r\n rowDate?: Date;\r\n subHeading?: string;\r\n subAmount?: number;\r\n}\r\n\r\nconst DisplayTable = (props: Props) => {\r\n\r\n return (\r\n <>\r\n <div className=\"display-limits\">\r\n <h4>{props.rowHeading}</h4>\r\n <div className=\"limits\">\r\n <p className=\"limit\">\r\n <span className=\"title\">{props.dailyLimit}</span>\r\n {props.rowAmount !== undefined &&\r\n <MoneyFormatted amount={props.rowAmount} />\r\n }\r\n </p>\r\n {props.subHeading &&\r\n <p className=\"limit\">\r\n <span>{props.subHeading} </span>\r\n {props.rowAmount !== undefined &&\r\n <MoneyFormatted amount={props.subAmount} />\r\n } \r\n </p>\r\n }\r\n </div>\r\n </div>\r\n {props.rowDate &&\r\n <>\r\n <FormattedDate value={props.rowDate} year=\"numeric\" month=\"short\" day=\"numeric\"/> <CTime date={props.rowDate} />\r\n </>\r\n }\r\n\r\n </>\r\n )\r\n\r\n}\r\n\r\nexport default DisplayTable","import { CTime } from \"app/common/CapitalDate\";\r\nimport { CError } from \"app/common/CError\";\r\nimport Button from '@mui/material/Button';\r\nimport DisplayTable from \"./LimitsDisplayTable\";\r\nimport Title from \"app/components/Title\";\r\nimport { AccountLimit} from \"generated/generated-models\";\r\nimport { FormattedDate } from \"react-intl\";\r\nimport { useHistory } from \"react-router\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { ApolloError } from \"@apollo/client\";\r\nimport Alert from '@mui/material/Alert';\r\nimport Paper from '@mui/material/Paper';\r\nimport { styled } from '@mui/material/styles';\r\nimport Grid from '@mui/material/Grid';\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nconst Item = styled(Paper)(({ theme }) => ({\r\n backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',\r\n ...theme.typography.body2,\r\n padding: theme.spacing(3),\r\n textAlign: 'center',\r\n color: theme.palette.text.secondary,\r\n}));\r\n\r\ninterface Props {\r\n partyLimits?: AccountLimit;\r\n loading?: boolean;\r\n error?: ApolloError\r\n isMFAEnabled: boolean\r\n}\r\n \r\nconst PartyLimitsPage = ({ partyLimits, loading, error, isMFAEnabled }: Props) => {\r\n const history = useHistory();\r\n\r\n if(loading)\r\n {\r\n return <Loading />\r\n }\r\n if (error != null || partyLimits == null) {\r\n return <CError error=\"Could not load party limits\" />\r\n }\r\n\r\n return (\r\n <div className=\"sub-wrap form-wrap limits-container\">\r\n <Title title=\"Current Daily Transfer Limits\" />\r\n <Grid container spacing={2} className=\"list-limits\" direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\">\r\n <Grid item xs={4}>\r\n <Item>\r\n <DisplayTable\r\n rowHeading=\"Pay Anyone\"\r\n dailyLimit=\"Daily Limit\"\r\n rowAmount={partyLimits?.DailyPayAnyoneLimit?.Amount || 0}\r\n subHeading=\"Remaining \"\r\n subAmount={partyLimits?.RemainingDailyPayAnyoneLimit?.Amount || 0}/>\r\n </Item>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <Item>\r\n <DisplayTable\r\n rowHeading=\"Redraw\"\r\n dailyLimit=\"Daily Limit\"\r\n rowAmount={partyLimits?.DailyRedrawLimit?.Amount || 0}\r\n subHeading=\"Remaining \"\r\n subAmount={partyLimits?.RemainingDailyRedrawLimit?.Amount || 0}/>\r\n </Item>\r\n </Grid>\r\n {clientConfigFn().showManageBPAYBillers &&\r\n <Grid item xs={4}>\r\n <Item>\r\n <DisplayTable\r\n rowHeading=\"BPAY\"\r\n dailyLimit=\"Daily Limit\"\r\n rowAmount={partyLimits?.DailyBPayLimit?.Amount || 0}\r\n subHeading=\"Remaining \"\r\n subAmount={partyLimits?.RemainingDailyBPayLimit?.Amount || 0}/>\r\n </Item>\r\n </Grid>\r\n }\r\n </Grid>\r\n\r\n {partyLimits?.LimitEffectiveTo &&\r\n <>\r\n <Alert severity=\"error\" className=\"effective-alert\">\r\n The above limits will revert automatically to the following limits below on the <b>\r\n <FormattedDate value={partyLimits?.LimitEffectiveTo} year=\"numeric\" month=\"short\" day=\"numeric\"/> at <CTime date={partyLimits?.LimitEffectiveTo} /></b>\r\n </Alert>\r\n\r\n <Grid container spacing={2} className=\"list-limits\">\r\n <Grid item xs={4}>\r\n <Item>\r\n <DisplayTable\r\n rowHeading=\"Pay Anyone\"\r\n dailyLimit=\"Daily Limit \"\r\n rowAmount={partyLimits?.DefaultPayAnyoneLimit?.Amount || 0}/>\r\n </Item>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <Item>\r\n <DisplayTable\r\n rowHeading=\"Redraw\"\r\n dailyLimit=\"Daily Limit \"\r\n rowAmount={partyLimits?.DefaultRedrawLimit?.Amount || 0}/>\r\n </Item>\r\n </Grid>\r\n <Grid item xs={4}>\r\n <Item>\r\n <DisplayTable\r\n rowHeading=\"BPAY\"\r\n dailyLimit=\"Daily Limit \"\r\n rowAmount={partyLimits?.DefaultBPayLimit?.Amount || 0}/>\r\n </Item>\r\n </Grid>\r\n </Grid>\r\n </>\r\n }\r\n\r\n <div className=\"form-group button-row\">\r\n <Button \r\n variant=\"contained\" id=\"cancel\"\r\n className=\"btn-cancel\"\r\n onClick={() => history.push(`/Security/ProfileSettings/Account`)}\r\n >\r\n Cancel\r\n </Button>\r\n {isMFAEnabled &&\r\n <Button\r\n variant=\"contained\" id=\"submit\"\r\n type=\"submit\"\r\n onClick={() => history.push(`/Security/Limits/Edit`)}\r\n >\r\n Edit Limits\r\n </Button>\r\n }\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default PartyLimitsPage;","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\nimport Button from '@mui/material/Button';\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 variant=\"outlined\" \r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => setAcceptedTerms(false)}\r\n id=\"cancel\">Cancel</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 variant=\"contained\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n style={{ pointerEvents: readTerms ? \"auto\" : \"none\" }}\r\n type=\"submit\"\r\n disabled={!readTerms}\r\n onClick={handleUserAcceptsTerms}\r\n id=\"acceptTermsAndConditionsButton\"\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 MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport MoneySigned from \"../components/MoneySigned\";\r\nimport { FinanceSummary, Instrument } from \"generated/generated-models\";\r\nimport React from \"react\";\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 FinanceBalancesView: (\r\n props: FinanceSummaryViewProps\r\n) => JSX.Element = ({ financeSummary }) => {\r\n\r\n return (\r\n <div>\r\n <span className=\"bal-title\">Total Current Balance</span>\r\n <h2><MoneySigned amount={financeSummary?.TotalPrincipal?.Amount} direction=\"total\" /></h2>\r\n <span className=\"bal-title\">Total Available Balance</span>\r\n <h3><MoneyFormatted amount={financeSummary?.TotalRedraw?.Amount} /></h3>\r\n </div>\r\n );\r\n};\r\n\r\nexport {\r\n FinanceBalancesView\r\n}\r\n","import 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 { FinanceSummaryQueryInlineQuery } from \"generated/generated-models\";\r\nimport { Loading } from \"../lib/components/Loading\";\r\nimport { FinanceBalancesView } from './FinanceBalancesView';\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 MaturityDate\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 FinanceSummaryBalances = () => (\r\n <Query<FinanceSummaryQueryInlineQuery> query={query}>\r\n {({\r\n data,\r\n loading,\r\n error,\r\n }: QueryResult<FinanceSummaryQueryInlineQuery>) => {\r\n if (loading) {\r\n return <Loading />;\r\n }\r\n if (error) {\r\n return <div>`Error!: ${error.message}`</div>;\r\n }\r\n if (!data) {\r\n return FinanceBalancesView({});\r\n }\r\n const financeSummary = data.financeSummary || undefined;\r\n\r\n return FinanceBalancesView({\r\n financeSummary\r\n });\r\n }}\r\n </Query>\r\n);\r\n\r\nexport {\r\n FinanceSummaryBalances\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { IsNullOrWhiteSpace } from 'core/util/stringExtensions';\r\nimport { FinanceSummaryComponent } from \"../finance-summary/FinanceSummaryComponent\";\r\nimport { FinanceSummaryBalances } from \"../finance-summary/FinanceSummaryBalances\";\r\nimport { Account, AccountTransaction, IsUserAuthenticatedQuery } from \"generated/generated-models\";\r\nimport TransactionListView from \"../transaction/TransactionListView\";\r\nimport Box from '@mui/material/Box';\r\nimport Grid from '@mui/material/Grid';\r\nimport Button from '@mui/material/Button';\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nconst Dashboard: React.FC<{ session: IsUserAuthenticatedQuery[\"userSession\"] }> = \r\n ({ session }) => {\r\n let name = (session && session.Party && session.Party.SearchName);\r\n if (IsNullOrWhiteSpace(name)) {\r\n name = '';\r\n }\r\n\r\n const [, setDetailView] = useState<AccountTransaction>();\r\n const [selectedAccount, setSelectedAccount] = useState<Account | undefined>();\r\n const handleOnSelectedAccount = (account: Account) => {\r\n setSelectedAccount(account);\r\n }\r\n \r\n return (\r\n <div className=\"dashboard-page\">\r\n <section className=\"dashboard-banner\">\r\n <section className=\"container sub-wrap\">\r\n <Box sx={{ flexGrow: 1 }}>\r\n <Grid container spacing={12}>\r\n <Grid item xs={5}>\r\n <div className=\"user-details\">\r\n <h2>Welcome back,</h2>\r\n <h3>{name}</h3>\r\n </div>\r\n </Grid>\r\n <Grid item xs={4} className=\"user-balances-container\">\r\n <div className=\"user-balances\">\r\n <FinanceSummaryBalances />\r\n </div>\r\n </Grid>\r\n <Grid item xs={3} className=\"quick-actions-container\">\r\n <div className=\"quick-actions\">\r\n {!clientConfigFn().hideTransferPage &&\r\n <Button href={`/transfersAndPayments`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} id=\"makeTransferButton\">\r\n Make a Transfer\r\n </Button>\r\n }\r\n {clientConfigFn().allowOnLineStatements &&\r\n <Button href={`/statements/StatementsListForParty`} variant=\"contained\" sx={{ p: 1.5, mt: 1 }} id=\"listStatementsButton\">\r\n View Statements\r\n </Button>\r\n } \r\n </div>\r\n </Grid>\r\n </Grid>\r\n </Box>\r\n </section>\r\n </section>\r\n\r\n <section className=\"container sub-wrap\">\r\n <Box sx={{ flexGrow: 1 }}>\r\n <Grid container spacing={8}>\r\n <Grid item xs={6} className=\"list-accounts\">\r\n <FinanceSummaryComponent account={selectedAccount} handleOnSelectedAccount={handleOnSelectedAccount}/>\r\n </Grid>\r\n <Grid item xs={6} className=\"list-transactions\">\r\n <TransactionListView account={selectedAccount} setDetailView={setDetailView} />\r\n </Grid>\r\n </Grid>\r\n </Box>\r\n </section>\r\n </div>\r\n )\r\n }\r\n\r\nexport { \r\n Dashboard \r\n}","import { client } from \"core/apollo/client\";\r\nimport { getCurrencySymbol } from \"core/util/currencySymbol\";\r\nimport { MaxLimitsQuery, MaxLimitsDocument } from \"generated/generated-models\";\r\nimport * as yup from \"yup\";\r\n\r\n\r\ntype LimitType =\r\n | \"redraw\"\r\n | \"payAnyone\"\r\n | \"bpay\"\r\n\r\n \r\nconst getFriendlyName = (limitType: LimitType) => {\r\n switch(limitType)\r\n {\r\n case \"bpay\":\r\n return \"BPay limit\"\r\n case \"payAnyone\":\r\n return \"Pay Anyone limit\"\r\n default:\r\n return \"Redraw limit\"\r\n }\r\n}\r\n\r\nexport const validateLimit = (limitType: LimitType) => {\r\n var friendlyText = getFriendlyName(limitType);\r\n\r\n return yup\r\n .number()\r\n .required()\r\n .moreThan(0)\r\n .label(friendlyText)\r\n .test(limitType, `Amount is greater then the maximum ${friendlyText}`, async function (amount) {\r\n\r\n if (amount == null) {\r\n return false;\r\n }\r\n\r\n const result = await client.query<MaxLimitsQuery>({\r\n query: MaxLimitsDocument,\r\n });\r\n \r\n const accountLimit = result.data?.userSession\r\n\r\n let limit = 0;\r\n\r\n if (limitType === \"bpay\") {\r\n limit = accountLimit?.BPayLimitMax ?? 0\r\n } else if(limitType === \"payAnyone\") {\r\n limit = accountLimit?.PayAnyoneLimitMax ?? 0\r\n } else {\r\n limit = accountLimit?.RedrawLimitMax ?? 0\r\n }\r\n\r\n if (amount == null) {\r\n return false;\r\n }\r\n\r\n if (limit >= amount || limit === 0) {\r\n return true;\r\n } else {\r\n return this.createError({ message: `Amount is greater than the available ${friendlyText} of ${getCurrencySymbol()}${limit}` });\r\n }\r\n })\r\n}","import React, { ChangeEvent } from \"react\";\r\n\r\ntype Props = {\r\n time: string;\r\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\n\r\nconst TimePicker = (props: Props) => {\r\n return (\r\n <div className=\"form-group\">\r\n <label>Effective To Time:</label>\r\n <div className=\"input-group\">\r\n <input\r\n type=\"time\"\r\n step=\"1\"\r\n value={props.time}\r\n onChange={props.onChange}\r\n className={\"form-control\"}\r\n />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default TimePicker;","import { CError } from \"app/common/CError\";\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Title from \"app/components/Title\";\r\nimport { AccountLimit, usePartyPaymentLimitMutation } from \"generated/generated-models\";\r\nimport Datepicker from \"app/components/DatePicker\";\r\nimport { useHistory } from \"react-router\";\r\nimport { Form, Formik } from \"formik\";\r\nimport Input from \"app/components/Input\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport { ChangeEvent, useState } from \"react\";\r\nimport { Validate } from \"./EditPartyLimitsValidate\";\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport TimePicker from \"app/components/TimePicker\";\r\nimport { ApolloError } from \"@apollo/client\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport Alert from '@mui/material/Alert';\r\nimport FormGroup from '@mui/material/FormGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport Box from '@mui/material/Box';\r\nimport Grid from '@mui/material/Grid';\r\nimport { clientConfigFn } from \"clientConfig\";\r\n\r\nexport type EditPartyLimitsInput = {\r\n PayAnyoneLimit: number;\r\n RedrawLimit: number;\r\n BpayLimit: number;\r\n EffectiveTo?: Date;\r\n TwoFactorToken?: string;\r\n}\r\n\r\ninterface Props {\r\n partyLimits?: AccountLimit;\r\n loading?: boolean;\r\n error?: ApolloError\r\n}\r\n\r\ntype EditLimitsMFAProps =\r\n | \"WithoutMFA\"\r\n | \"WithMFA\"\r\n\r\nconst EditPartyLimitsPage = ({ partyLimits, loading, error }: Props) => {\r\n const [editLimit, { error: editLimitError, data: editLimitData}] = usePartyPaymentLimitMutation();\r\n const history = useHistory();\r\n const date = new Date();\r\n const [checked, setChecked] = useState(false);\r\n const [time, setTime] = useState(\"00:00\");\r\n const [editLimits, setEditLimits] = useState<EditLimitsMFAProps>(\"WithoutMFA\");\r\n\r\n const handleRequiresMFA = () => {\r\n setEditLimits(\"WithMFA\")\r\n };\r\n\r\n if(loading) {\r\n return <Loading />\r\n }\r\n if (error != null || partyLimits == null) {\r\n return <CError error=\"Could not load party limits\" />\r\n }\r\n\r\n const handleEditLimitsSubmit = async (values: EditPartyLimitsInput) => {\r\n var effective = undefined;\r\n if(checked)\r\n {\r\n effective = values.EffectiveTo;\r\n var splitTime = time.split(\":\")\r\n const times = splitTime.map(i => parseInt(i, 10));\r\n effective?.setHours(times[0], times[1]);\r\n }\r\n const result = await editLimit({\r\n variables: {\r\n input: {\r\n PayAnyoneLimit: values.PayAnyoneLimit,\r\n RedrawLimit: values.RedrawLimit,\r\n BpayLimit: values.BpayLimit,\r\n EffectiveTo: effective,\r\n TwoFactorToken: values.TwoFactorToken\r\n }\r\n },\r\n });\r\n\r\n if (result.data?.setPartyPaymentLimit?.Code === \"499\") {\r\n handleRequiresMFA();\r\n }\r\n\r\n if (result.data?.setPartyPaymentLimit?.Success) {\r\n window.location.href = '/Security/Limits'\r\n }\r\n }\r\n\r\n const handleCheckChange = () => {\r\n setChecked(!checked);\r\n }\r\n\r\n const timeChange = (e: ChangeEvent<HTMLInputElement>) => {\r\n setTime(e.currentTarget.value);\r\n }\r\n\r\n const initialValues: EditPartyLimitsInput = {\r\n PayAnyoneLimit: partyLimits?.DefaultPayAnyoneLimit?.Amount || 0,\r\n RedrawLimit: partyLimits?.DefaultRedrawLimit?.Amount || 0,\r\n BpayLimit: partyLimits?.DefaultBPayLimit?.Amount || 0,\r\n EffectiveTo: undefined\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => handleEditLimitsSubmit(values)}\r\n validationSchema={() => Validate(editLimits === \"WithMFA\", checked)}\r\n >\r\n {({ isSubmitting }) =>\r\n <div className=\"sub-wrap form-wrap\">\r\n <Title title=\"Edit Daily Transfer Limits\" />\r\n <Form>\r\n <Input\r\n name={nameof<EditPartyLimitsInput>(\"PayAnyoneLimit\")}\r\n type=\"currency\"\r\n label=\"Pay Anyone Limit:\"\r\n placeHolder={initialValues.PayAnyoneLimit.toString()}\r\n />\r\n\r\n <Input\r\n name={nameof<EditPartyLimitsInput>(\"RedrawLimit\")}\r\n type=\"currency\"\r\n label=\"Redraw Limit:\"\r\n placeHolder={initialValues.RedrawLimit.toString()}\r\n />\r\n {clientConfigFn().showManageBPAYBillers &&\r\n <Input\r\n name={nameof<EditPartyLimitsInput>(\"BpayLimit\")}\r\n type=\"currency\"\r\n label=\"BPay Limit:\"\r\n placeHolder={initialValues.BpayLimit.toString()}\r\n />\r\n }\r\n <FormGroup>\r\n <FormControlLabel sx={{mb:3}} control={<Checkbox onChange={handleCheckChange} />} label=\"Create Temporary Limits\" />\r\n </FormGroup>\r\n \r\n {checked &&\r\n <Box className=\"temp-details\" sx={{ mb:12 }}>\r\n <Grid container spacing={2}>\r\n <Grid item xs={6}>\r\n <Datepicker\r\n name={nameof<EditPartyLimitsInput>(\"EffectiveTo\")}\r\n label=\"Effective Until:\"\r\n minDate={date}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TimePicker\r\n time={time}\r\n onChange={(e: ChangeEvent<HTMLInputElement>) => timeChange(e)} />\r\n </Grid>\r\n </Grid>\r\n </Box>\r\n }\r\n <RequestMultiFactorTokenFormik\r\n name={\"TwoFactorToken\"}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={editLimits === \"WithMFA\"}\r\n />\r\n {(editLimitError || editLimitData?.setPartyPaymentLimit?.Success === false) &&\r\n <Alert severity=\"error\">\r\n {editLimitData?.setPartyPaymentLimit?.Message}\r\n </Alert>\r\n }\r\n\r\n <div className=\"form-group button-row\">\r\n <Button \r\n id=\"cancel\"\r\n variant=\"contained\" \r\n className=\"btn-cancel\"\r\n onClick={() => history.goBack()}\r\n >\r\n Cancel\r\n </Button>\r\n \r\n <LoadingButton\r\n variant=\"contained\"\r\n type=\"submit\"\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n >\r\n Save\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </div>\r\n }\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default EditPartyLimitsPage;","import * as yup from \"yup\";\r\nimport { GetSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\nimport { EditPartyLimitsInput } from \"./EditPartyLimitsPage\";\r\nimport { DateRequiredValidator } from \"./dateValidator\";\r\nimport { validateLimit } from \"./maxLimitValidation\";\r\n\r\nexport const Validate = (requiresMfa: boolean, isTemporary: boolean) => {\r\n const schema: yup.ObjectSchema<EditPartyLimitsInput> = yup.object({\r\n PayAnyoneLimit: validateLimit(\"payAnyone\"),\r\n \r\n RedrawLimit: validateLimit(\"redraw\"),\r\n \r\n BpayLimit: validateLimit(\"bpay\"),\r\n\r\n EffectiveTo: DateRequiredValidator(isTemporary),\r\n \r\n TwoFactorToken: GetSecurityTokenValidator(requiresMfa)\r\n })\r\n .defined();\r\n\r\n return schema;\r\n}","import * as yup from \"yup\";\r\n\r\nexport const DateRequiredValidator = (dateRequired: boolean) => {\r\n\r\n if (dateRequired) {\r\n return yup\r\n .date()\r\n .required(\"Effective To date is required for temporary limits\")\r\n }\r\n else {\r\n return yup\r\n .date()\r\n .notRequired();\r\n }\r\n}\r\n","import { TransferAccount } from \"generated/generated-models\";\r\nimport React, { ReactNode, useState } from \"react\";\r\n\r\nexport type TransferAndPaymentStage =\r\n | \"Create\"\r\n | \"Confirm\"\r\n | \"Receipt\"\r\n\r\nexport type TransfersPaymentContextProps = {\r\n formStage: TransferAndPaymentStage;\r\n formState: any;\r\n transferType?: string;\r\n fundsTransferId?: string;\r\n fromAccount?: TransferAccount;\r\n toAccount?: TransferAccount;\r\n isPending?: boolean;\r\n updateform: (state: any) => void;\r\n updateStage: (stage: TransferAndPaymentStage) => void;\r\n updateFundsTransfer: (id: string) => void;\r\n updateFromAccount: (fromAccount: TransferAccount) => void;\r\n updateToAccount: (toAccount: TransferAccount) => void;\r\n updateTransferType: (transferType: string) => void;\r\n updateIsPending: (isPending: boolean) => void;\r\n }\r\n \r\nexport const TransferPaymentsContext = React.createContext<TransfersPaymentContextProps | undefined>(undefined);\r\n\r\ntype TransferPaymentsContextProviderProps = {\r\n transferType?: string\r\n children?: ReactNode\r\n}\r\n\r\nexport const TransferPaymentsContextProvider: React.FC<TransferPaymentsContextProviderProps> = (props) => {\r\n const [formState, updateFormsState] = useState({});\r\n const initialStage = \"Create\";\r\n const [formStage, updateFormsStage] = useState<TransferAndPaymentStage>(initialStage)\r\n const [fundsTransferId, updateFundsTransferId] = useState<string | undefined>(undefined);\r\n const [fromAccount, updateFromAccount] = useState<TransferAccount | undefined>(undefined);\r\n const [toAccount, updateToAccount] = useState<TransferAccount | undefined>(undefined);\r\n const [transferType, updateTransferType] = useState(props.transferType);\r\n const [isPending, updateIsPending] = useState<boolean | undefined>(undefined);\r\n\r\n const context: TransfersPaymentContextProps = {\r\n formStage: formStage,\r\n formState: formState,\r\n transferType: transferType,\r\n fundsTransferId: fundsTransferId,\r\n fromAccount: fromAccount,\r\n toAccount: toAccount,\r\n isPending: isPending,\r\n updateform: formState => updateFormsState(() => formState),\r\n updateStage: formStage => updateFormsStage(() => formStage),\r\n updateFundsTransfer: updateFundsTransferId,\r\n updateFromAccount: fromAccount => updateFromAccount(() => fromAccount),\r\n updateToAccount: toAccount => updateToAccount(() => toAccount),\r\n updateTransferType: transferType => updateTransferType(() => transferType),\r\n updateIsPending: updateIsPending\r\n }\r\n\r\n return (\r\n <TransferPaymentsContext.Provider value={context}>\r\n {props.children}\r\n </TransferPaymentsContext.Provider>\r\n )\r\n}\r\n\r\nexport const useTransferPaymentsContext = () => {\r\n const context = React.useContext(TransferPaymentsContext)\r\n if (context == null) {\r\n throw new Error(\"This component must be used within a <TransferPayments> component.\")\r\n }\r\n return context\r\n}","import { TransferAccount } from \"generated/generated-models\";\r\nimport { useHistory } from \"react-router\";\r\nimport { useTransferPaymentsContext } from \"./useTransferPaymentsContext\";\r\n\r\n\r\nexport function useTransferPayments<T>() {\r\n const context = useTransferPaymentsContext();\r\n const history = useHistory();\r\n\r\n return {\r\n formState: context.formState as Partial<T>,\r\n formStage: context.formStage,\r\n transferId: context.fundsTransferId,\r\n fromAccount: context.fromAccount,\r\n toAccount: context.toAccount,\r\n transferType: context.transferType,\r\n isPending: context.isPending,\r\n createTransfer: (formstate: any) => {\r\n context.updateform(formstate);\r\n context.updateStage(\"Confirm\");\r\n },\r\n confirmTransfer: (transferId: string) => {\r\n context.updateFundsTransfer(transferId);\r\n context.updateStage(\"Receipt\");\r\n },\r\n confirmFromAccount: (fromAccount: TransferAccount) => {\r\n context.updateFromAccount(fromAccount);\r\n },\r\n confirmToAccount: (toAccount: TransferAccount) => {\r\n context.updateToAccount(toAccount);\r\n },\r\n updateTransferType: (transferType: string) => {\r\n context.updateTransferType(transferType);\r\n },\r\n updateIsPending: (isPending: boolean) => {\r\n context.updateIsPending(isPending);\r\n },\r\n modifyTransfer: () => {\r\n context.updateStage(\"Create\");\r\n },\r\n returnToHome: () => {\r\n history.push(`/`);\r\n }\r\n };\r\n};\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport DueOnListItems from \"app/accountTransfer/utilities/list/DueOnListItems\";\r\nimport {\r\n TransferAccount,\r\n useBpayTransferRequestMutation,\r\n useRequestPayAnyoneTransferMutation,\r\n PartyLimitDocument\r\n} from \"generated/generated-models\";\r\nimport { createTransferTimes, transferTypes } from \"app/accountTransfer/utilities/fundsTransfers\";\r\nimport { useTransferPayments } from \"./context/useTransferPayments\";\r\nimport { TransfersAndPaymentsProps } from \"./TransfersAndPayments\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport CurrencyExchangeIcon from '@mui/icons-material/CurrencyExchange';\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Alert from '@mui/material/Alert';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\n\r\nconst DetermineTransferType = ( fromAccount: TransferAccount, toAccount: TransferAccount) => {\r\n if(toAccount?.IsBPay)\r\n {\r\n return \"BPay\"\r\n }\r\n else if(!fromAccount?.IsBankAccount && !toAccount?.IsBankAccount)\r\n {\r\n return \"InterAccount\"\r\n }\r\n else if(!fromAccount?.IsBankAccount && toAccount?.IsBankAccount && toAccount.IsExternal)\r\n {\r\n return \"PayAnyone\"\r\n }\r\n else if(!fromAccount?.IsBankAccount && toAccount?.IsBankAccount && !toAccount.IsExternal)\r\n {\r\n return \"Redraw\"\r\n }\r\n else if(fromAccount?.IsBankAccount && !toAccount?.IsBankAccount)\r\n {\r\n return \"Payment\"\r\n }\r\n else\r\n {\r\n return \"Unknown\"\r\n }\r\n}\r\n\r\nconst SetTransferTypeId = (transferType: string) => {\r\n switch(transferType)\r\n {\r\n case \"BPay\":\r\n return transferTypes.BpayTransferTypeId\r\n case \"PayAnyone\":\r\n return transferTypes.PayAnyoneTransferTypeId\r\n case \"Redraw\":\r\n return transferTypes.RedrawTransferTypeId\r\n case \"Payment\":\r\n return transferTypes.RepaymentTransferTypeId\r\n default:\r\n return transferTypes.InterAccountTransferTypeId\r\n }\r\n}\r\n\r\nconst ConfirmTransfer = () => { \r\n const [bpayTransfer, bpayData] = useBpayTransferRequestMutation();\r\n const [requestPayment, paymentData] = useRequestPayAnyoneTransferMutation();\r\n const { fromAccount, toAccount, formState, modifyTransfer, confirmTransfer, updateTransferType, updateIsPending } = useTransferPayments<TransfersAndPaymentsProps>();\r\n const transferType = DetermineTransferType(fromAccount!, toAccount!);\r\n const transferTypeId = SetTransferTypeId(transferType);\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (formState == null || formState.amount == null) {\r\n return <Redirect to=\".\" />\r\n }\r\n\r\n const sendPaymentRequest = () => {\r\n const transferTimes = createTransferTimes(formState);\r\n\r\n if(transferType === \"BPay\")\r\n {\r\n bpayTransfer({\r\n variables: {\r\n input: {\r\n AccountId: fromAccount?.AccountId,\r\n Amount: formState.amount!,\r\n Billercode: toAccount?.BillerCode,\r\n CustomerReferenceNumber: toAccount?.AccountNumber!,\r\n SaveBillerDetails: false,\r\n BillerDescription: toAccount?.AccountName,\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 refetchQueries: [\r\n { \r\n query: PartyLimitDocument,\r\n }\r\n ]\r\n }).then(x => {\r\n const fundsTransferId = x.data?.bpayTransferRequest?.FundsTransfer?.Id;\r\n updateTransferType(transferType);\r\n confirmTransfer(fundsTransferId);\r\n })\r\n }\r\n else{ \r\n requestPayment({\r\n variables: {\r\n input: {\r\n AccountId: transferType === \"Payment\" ? toAccount?.AccountId : fromAccount?.AccountId,\r\n Amount: formState.amount!,\r\n BankAccountId: transferType === \"Payment\" ? fromAccount?.AccountId : toAccount?.AccountId,\r\n DepositDescription: formState.transferDescription,\r\n WithdrawalDescription: formState.transferReference,\r\n StartingOn: transferTimes.StartingOn,\r\n EndingOn: transferTimes.EndingOn,\r\n Frequency: transferTimes.Frequency,\r\n TransferType: transferTypeId,\r\n FromAccountId: transferType === \"InterAccount\" ? fromAccount?.AccountId : null,\r\n ToAccountId: transferType === \"InterAccount\" ? toAccount?.AccountId : null,\r\n RecurrenceEnd: transferTimes.RecurrenceEnd,\r\n NumberOfTimesAmount: transferTimes.NumberOfTimesAmount,\r\n FixedAmountOption: true,\r\n UseNPP: formState.useNPP\r\n }\r\n },\r\n refetchQueries: [\r\n { \r\n query: PartyLimitDocument,\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 const pending = formState.useNPP && x.data?.requestPayAnyoneTransfer?.Message !== null;\r\n updateTransferType(transferType);\r\n updateIsPending(pending ?? false);\r\n confirmTransfer(fundsTransferId);\r\n }\r\n })\r\n }\r\n }\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"confirm-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <CurrencyExchangeIcon />\r\n <Typography variant=\"h5\" gutterBottom component=\"h5\" sx={{ mx: 2, mb: 2 }}>\r\n Confirm Transfer\r\n </Typography>\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }}>\r\n Please ensure all details are correct before proceeding. Once confirmed your\r\n transfer is final.\r\n </Typography >\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={formState.amount} />\r\n <span className=\"caption\">Amount to be paid</span>\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{fromAccount?.AccountName} - {fromAccount?.AccountNumber || \"\"}</Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n {toAccount?.BillerCode || toAccount?.BSB \r\n ? <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{toAccount?.AccountName} <br /> {toAccount?.BillerCode ?? toAccount?.BSB} | {toAccount?.AccountNumber ?? \"\"}</Typography>} />\r\n : <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{toAccount?.AccountName} - {toAccount?.AccountNumber ?? \"\"}</Typography>} />\r\n }\r\n </ListItem>\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n {formState.transferReference &&\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {formState.transferReference}</Typography>} />\r\n </ListItem>\r\n }\r\n </List>\r\n\r\n { ((paymentData.data?.requestPayAnyoneTransfer?.Message && !paymentData.data?.requestPayAnyoneTransfer?.Success) || paymentData.error != null || bpayData.error != null) &&\r\n <Alert severity=\"error\">\r\n Error submitting transfer request. {paymentData.data?.requestPayAnyoneTransfer?.Message ?? bpayData.data?.bpayTransferRequest?.Message}\r\n </Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => modifyTransfer()}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => sendPaymentRequest()}\r\n disabled={paymentData.loading}\r\n loading={paymentData.loading}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog> \r\n )\r\n}\r\n\r\nexport default ConfirmTransfer;\r\n","import React from \"react\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport { useAccountFundsTransfersQuery } from \"generated/generated-models\";\r\nimport DueOnListItemsReceipt from \"app/accountTransfer/utilities/list/DueOnListItemsReceipt\";\r\nimport { useTransferPayments } from \"./context/useTransferPayments\";\r\nimport { TransfersAndPaymentsProps } from \"./TransfersAndPayments\";\r\nimport MoneyFormatted from \"app/components/MoneyFormatted\";\r\nimport ReceiptLongIcon from '@mui/icons-material/ReceiptLong';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\nimport DueOnListItems from \"app/accountTransfer/utilities/list/DueOnListItems\";\r\nimport { Alert } from \"@mui/material\";\r\n\r\nconst TransferReceipt = () => {\r\n const { transferId, transferType, fromAccount, toAccount, isPending, formState, returnToHome } = useTransferPayments<TransfersAndPaymentsProps>();\r\n const { data, loading, error } = useAccountFundsTransfersQuery({\r\n variables: { accountIdOrNumber: transferType === \"Payment\" ? toAccount?.AccountId : fromAccount?.AccountId },\r\n fetchPolicy: \"network-only\"\r\n });\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [, setOpen] = React.useState(false);\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n if (loading === true) {\r\n return <Loading />\r\n }\r\n\r\n if ((!formState.useNPP && transferType !== \"InterAccount\") && (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?.concat(data.accountByIdOrNumber.PendingAccountFundsTransfers)\r\n .find(x => x?.Id === transferId);\r\n\r\n if ((!formState.useNPP && transferType !== \"InterAccount\") && fundsTransfer == null) {\r\n return <CError error=\"Could not load payment details\" />\r\n }\r\n\r\n return (\r\n <Dialog\r\n fullScreen={fullScreen}\r\n open={true}\r\n className=\"success-transfer-payment\"\r\n onClose={handleClose}\r\n >\r\n <DialogTitle>\r\n <ReceiptLongIcon />\r\n </DialogTitle>\r\n <DialogContent sx={{ m: 4, mt: 0 }}>\r\n <DialogContentText>\r\n <Typography variant=\"body1\" gutterBottom component=\"p\" sx={{ textAlign:\"center\" }} className=\"transfer-amount\">\r\n <MoneyFormatted amount={fundsTransfer?.Amount ?? formState.amount} />\r\n <span className=\"caption\">Paid successfully to {toAccount?.AccountName}</span>\r\n {(!formState.useNPP && transferType !== \"InterAccount\") &&\r\n <span className=\"sub-caption\">Receipt No: {fundsTransfer?.ReceiptNumber}</span>\r\n }\r\n </Typography >\r\n <List sx={{ mb: 2 }} className=\"transfer-details\">\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">From: </span>{fromAccount?.AccountName} - {fromAccount?.AccountNumber} </Typography>} />\r\n </ListItem>\r\n <ListItem disablePadding>\r\n {toAccount?.BillerCode || toAccount?.BSB \r\n ? <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{toAccount?.AccountName} <br /> {toAccount?.BillerCode ?? toAccount?.BSB} | {toAccount?.AccountNumber ?? \"\"}</Typography>} />\r\n : <ListItemText primary={<Typography><span className=\"subtitle\">To: </span>{toAccount?.AccountName} - {toAccount?.AccountNumber ?? \"\"}</Typography>} />\r\n }\r\n </ListItem>\r\n {(!formState.useNPP && transferType !== \"InterAccount\") &&\r\n <DueOnListItemsReceipt fundsTransfer={fundsTransfer!} />\r\n }\r\n {(!formState.useNPP && transferType !== \"InterAccount\") &&\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 <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Description: </span> {fundsTransfer?.DepositDescription ?? formState.transferDescription}</Typography>} />\r\n </ListItem>\r\n {fundsTransfer?.WithdrawalDescription &&\r\n <ListItem disablePadding>\r\n <ListItemText primary={<Typography><span className=\"subtitle\">Reference: </span> {fundsTransfer.WithdrawalDescription}</Typography>} />\r\n </ListItem>\r\n }\r\n </List>\r\n\r\n {(formState.useNPP && isPending) &&\r\n <Alert severity=\"warning\">\r\n Payment request has been received but not yet processed. You will see the payment as pending until fully processed.\r\n </Alert>\r\n }\r\n <div className=\"button-row\">\r\n <Button\r\n fullWidth\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n onClick={() => returnToHome()}\r\n variant=\"contained\"\r\n >\r\n Done\r\n </Button>\r\n </div>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\nexport default TransferReceipt;\r\n","import React from \"react\";\r\nimport { useTransferPaymentsContext } from \"./useTransferPaymentsContext\";\r\n\r\nconst Create: React.FC = (props) => {\r\n const context = useTransferPaymentsContext();\r\n\r\n if (context.formStage === \"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 { useTransferPaymentsContext } from \"./useTransferPaymentsContext\";\r\n\r\nconst Receipt: React.FC = (props) => {\r\n const context = useTransferPaymentsContext();\r\n\r\n if (context.formStage === \"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 React from \"react\";\r\nimport { TransferPaymentsContextProvider } from \"./useTransferPaymentsContext\";\r\n\r\nexport type Props = {\r\n transferType?: string;\r\n}\r\n\r\nconst TransferPayments: React.FC<Props> = (props) => {\r\n return (\r\n <div className=\"sub-wrap\">\r\n <TransferPaymentsContextProvider\r\n transferType={props.transferType}\r\n >\r\n {props.children}\r\n </TransferPaymentsContextProvider>\r\n </div>\r\n )\r\n}\r\n\r\nexport default TransferPayments;\r\n","import React from \"react\";\r\nimport Confirm from \"./Confirm\";\r\nimport Create from \"./Create\";\r\nimport Receipt from \"./Receipt\";\r\nimport TransferAndPaymentsContainer, { Props as TransferAndPaymentsProps } from \"./TransfersAndPaymentsContainer\";\r\n\r\n\r\ntype TransferPaymentsComposition = {\r\n Create: React.FC;\r\n Confirm: React.FC;\r\n Receipt: React.FC;\r\n} & React.FC<TransferAndPaymentsProps>;\r\n\r\nconst TransferPayments: TransferPaymentsComposition = props =>\r\n <TransferAndPaymentsContainer {...props} />;\r\n TransferPayments.Confirm = Confirm;\r\n TransferPayments.Create = Create;\r\n TransferPayments.Receipt = Receipt;\r\n\r\nexport default TransferPayments;\r\n","import React from \"react\";\r\nimport { useTransferPaymentsContext } from \"./useTransferPaymentsContext\";\r\n\r\nconst Confirm: React.FC = (props) => {\r\n const context = useTransferPaymentsContext();\r\n\r\n if (context.formStage === \"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 AddIcon from '@mui/icons-material/Add';\r\nimport TabContext from '@mui/lab/TabContext';\r\nimport TabList from '@mui/lab/TabList';\r\nimport { TablePagination, Badge, Alert } from '@mui/material';\r\nimport Box from '@mui/material/Box';\r\nimport Button from '@mui/material/Button';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport Divider from '@mui/material/Divider';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Grid from '@mui/material/Grid';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport List from '@mui/material/List';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\r\nimport Tab from '@mui/material/Tab';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\nimport { CError } from 'app/common/CError';\r\nimport { Loading } from 'app/lib/components/Loading';\r\nimport { makeNonEmpty } from 'core/util/array';\r\nimport { SecureMessage, useSecureMessagesByPartyQuery, useReadSecureMessageMutation, SecureMessagesByPartyDocument, usePartyProfileDetailsQuery, UnreadMessagesCountByPartyDocument } from 'generated/generated-models';\r\nimport React, { ChangeEvent, createContext, useCallback, useEffect, useState } from 'react';\r\nimport CreateNewMessage from './CreateNewMessage';\r\nimport MessageChainView from './MessageChainView';\r\nimport MessageOverviewCard from './MessageOverviewCard';\r\nimport MessageSearchBar from './MessageSearchBar';\r\nimport MailIcon from '@mui/icons-material/MailOutlined';\r\n\r\nconst DEFAULT_ROWS_PER_PAGE = 10\r\n\r\nenum SecureMessageSortingType {\r\n Date = \"Date\",\r\n AZ = \"AZ\",\r\n ZA = \"ZA\"\r\n}\r\n\r\nenum SecureMessageStatus {\r\n All = \"All\",\r\n Unread = \"Unread\",\r\n Archive = \"Archive\"\r\n}\r\n\r\ninterface SecureMessageContextType {\r\n SelectedMessage: SecureMessage | null,\r\n Filter: {\r\n Keyword: string,\r\n MessageStatus: SecureMessageStatus\r\n }\r\n Sorting: SecureMessageSortingType,\r\n}\r\n\r\nconst SecureMessageContext = createContext<SecureMessageContextType | null>(null);\r\n\r\nconst SecureMessagingView = () => {\r\n const [openNewMessage, setOpenNewMessage] = useState(false);\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const [messagePool, setMessagePool] = useState<SecureMessage[]>([]);\r\n const [filteredMessages, setFilteredMessages] = useState<SecureMessage[]>(messagePool);\r\n const { data: partyProfileDetails } = usePartyProfileDetailsQuery();\r\n const partyId = partyProfileDetails?.userSession?.Party?.Id;\r\n const [handleReading] = useReadSecureMessageMutation();\r\n const [secureMessageContext, setSecureMessageContext] = useState<SecureMessageContextType>({\r\n SelectedMessage: null,\r\n Filter: {\r\n Keyword: \"\",\r\n MessageStatus: SecureMessageStatus.All\r\n },\r\n Sorting: SecureMessageSortingType.Date,\r\n });\r\n const [rowsPerPage, setRowsPerPage] = useState(DEFAULT_ROWS_PER_PAGE);\r\n const [page, setPage] = useState(0);\r\n const [heldMessageIds, setHeldMessageIds] = useState<string[]>([]);\r\n\r\n const { data: messagesByParty, loading: loadingMessagesByParty, error: errorMessagesByParty } = useSecureMessagesByPartyQuery({\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n useEffect(() => {\r\n if (!loadingMessagesByParty && messagesByParty) {\r\n setMessagePool(makeNonEmpty(messagesByParty.secureMessagesByParty?.SecureMessages));\r\n }\r\n }, [messagesByParty, loadingMessagesByParty])\r\n\r\n useEffect(() => {\r\n if (messagePool) {\r\n setFilteredMessages(filterMessages(messagePool));\r\n }\r\n }, [secureMessageContext.Filter])\r\n\r\n useEffect(() => {\r\n if (messagePool) {\r\n const sortedMessages = sortMessages(messagePool)\r\n setMessagePool(sortedMessages);\r\n setFilteredMessages(filterMessages(sortedMessages));\r\n }\r\n }, [messagePool, secureMessageContext.Sorting])\r\n\r\n function handleChangePage(_event: React.MouseEvent<HTMLButtonElement | MouseEvent> | null, pageNumber: number) {\r\n setPage(pageNumber);\r\n }\r\n\r\n function handleChangeRowsPerPage(_event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) {\r\n setRowsPerPage(Number(_event.target.value));\r\n }\r\n\r\n const filterMessages = (unfilteredMessages: SecureMessage[]) => {\r\n return unfilteredMessages.reduce((messages: SecureMessage[], message: SecureMessage) => {\r\n if ((secureMessageContext?.Filter.MessageStatus === SecureMessageStatus.All && message.IsArchived) ||\r\n (secureMessageContext?.Filter.MessageStatus === SecureMessageStatus.Unread && (message.IsRead && !heldMessageIds.includes(message.Id))) ||\r\n (secureMessageContext?.Filter.MessageStatus === SecureMessageStatus.Archive && !message.IsArchived) ||\r\n (secureMessageContext?.Filter.Keyword && secureMessageContext?.Filter.Keyword.length >= 3 && !message.ToDoItem.Messages?.some(element => element?.Text.toLowerCase().includes(secureMessageContext?.Filter.Keyword.toLowerCase())))) {\r\n return messages\r\n }\r\n messages.push(message);\r\n return messages;\r\n }, []);\r\n }\r\n\r\n const sortMessages = (unsortedMessages: SecureMessage[]) => {\r\n switch (secureMessageContext.Sorting) {\r\n case SecureMessageSortingType.Date:\r\n return unsortedMessages.sort((messageA, messageB) => (messageA.ToDoItem.Messages[messageA.ToDoItem.Messages.length - 1]?.CreatedOn < messageB.ToDoItem.Messages[messageB.ToDoItem.Messages.length - 1]?.CreatedOn) ? 1 : -1);\r\n\r\n case SecureMessageSortingType.AZ:\r\n return unsortedMessages.sort((messageA, messageB) => (messageA.ToDoItem.Text! > messageB.ToDoItem.Text!) ? 1 : -1);\r\n\r\n case SecureMessageSortingType.ZA:\r\n return unsortedMessages.sort((messageA, messageB) => (messageA.ToDoItem.Text! < messageB.ToDoItem.Text!) ? 1 : -1);\r\n\r\n default:\r\n return unsortedMessages;\r\n }\r\n }\r\n\r\n function handleTabChange(_event: React.SyntheticEvent, newValue: SecureMessageStatus) {\r\n setHeldMessageIds([]);\r\n setSecureMessageContext({ ...secureMessageContext, Filter: { ...secureMessageContext.Filter, MessageStatus: newValue } });\r\n }\r\n\r\n function handleSortByChange(event: SelectChangeEvent) {\r\n setSecureMessageContext({ ...secureMessageContext, Sorting: (SecureMessageSortingType as any)[event.target.value] });\r\n }\r\n\r\n const handleNewMessageClick = useCallback(() => {\r\n setOpenNewMessage(true);\r\n }, []);\r\n\r\n const handleCloseNewMessage = useCallback(() => {\r\n setOpenNewMessage(false);\r\n }, []);\r\n\r\n function handleCreatedNewMessage(secureMessage: SecureMessage) {\r\n setHeldMessageIds([]);\r\n setSecureMessageContext({ ...secureMessageContext, Filter: { ...secureMessageContext.Filter, MessageStatus: SecureMessageStatus.All }, SelectedMessage: secureMessage.Id === secureMessageContext.SelectedMessage?.Id ? null : secureMessage })\r\n setMessagePool([...messagePool, secureMessage]);\r\n }\r\n\r\n function handleSearchChange(_event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>) {\r\n setSecureMessageContext({ ...secureMessageContext, Filter: { ...secureMessageContext.Filter, Keyword: _event.currentTarget.value.trim() } });\r\n }\r\n\r\n function handleSelectMessage(secureMessage: SecureMessage) {\r\n setSecureMessageContext({ ...secureMessageContext, SelectedMessage: secureMessage.Id === secureMessageContext.SelectedMessage?.Id ? null : secureMessage })\r\n if (secureMessage.IsRead !== true) {\r\n setHeldMessageIds([...heldMessageIds, secureMessage.Id])\r\n handleReadingSubmit(secureMessage);\r\n }\r\n }\r\n\r\n const handleReadingSubmit = async (secureMessage: SecureMessage) => {\r\n await handleReading({\r\n variables: {\r\n input: {\r\n SecureMessageId: secureMessage?.Id\r\n },\r\n },\r\n refetchQueries: [\r\n { query: SecureMessagesByPartyDocument }, { query: UnreadMessagesCountByPartyDocument }\r\n ]\r\n });\r\n }\r\n\r\n if (loadingMessagesByParty) {\r\n return <Loading />;\r\n }\r\n if (errorMessagesByParty) {\r\n return <CError error=\"Could not retrieve messages\" />\r\n }\r\n\r\n return (\r\n <>\r\n <section className=\"sub-wrap secure-messaging-container\">\r\n <div className=\"list-header\">\r\n <h2>Messages</h2>\r\n </div>\r\n <Box sx={{ width: '100%' }}>\r\n <Grid container spacing={2} sx={{ mt: 0, mb: 0 }}>\r\n <Grid item xs={3.5} className=\"messagesList\" sx={{mr:4}}>\r\n <TabContext value={secureMessageContext.Filter.MessageStatus}>\r\n <Box sx={{ mb: 3 }}>\r\n <TabList onChange={handleTabChange}>\r\n {Object.keys(SecureMessageStatus).map((secureMessageStatus) => {\r\n return (\r\n <Tab key={secureMessageStatus} label={secureMessageStatus === 'Unread' \r\n ? <Badge badgeContent={messagesByParty?.secureMessagesByParty?.UnreadMessageCount ?? 0} color=\"error\">{secureMessageStatus}</Badge>\r\n : secureMessageStatus} value={(SecureMessageStatus as any)[secureMessageStatus]} /> \r\n );\r\n })}\r\n </TabList>\r\n </Box>\r\n <Button className='newMessageBtn' id=\"new-secure-message-button\" variant=\"outlined\" fullWidth startIcon={<AddIcon />} onClick={handleNewMessageClick}>New Message</Button>\r\n {filteredMessages == null || filteredMessages.length === 0 &&\r\n <Alert severity='info' sx={{ mt: 2 }}>We didn't find anything to show here.</Alert>\r\n }\r\n {filteredMessages != null && filteredMessages.length !== 0 &&\r\n <SecureMessageContext.Provider value={secureMessageContext}>\r\n <List sx={{ px: 0.8, py: 0.5, mt:1, height: 670, overflow: \"auto\" }}>\r\n {(\r\n rowsPerPage > 0\r\n ? filteredMessages.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n : filteredMessages\r\n ).map(message => {\r\n return (\r\n <React.Fragment key={message.Id}>\r\n <MessageOverviewCard message={message} handleSelectMessage={handleSelectMessage} />\r\n <Divider />\r\n </React.Fragment>\r\n );\r\n })}\r\n </List>\r\n </SecureMessageContext.Provider>\r\n }\r\n </TabContext>\r\n </Grid>\r\n <Grid item xs={7.5} className=\"messageViewContainer\">\r\n {messagesByParty?.secureMessagesByParty?.SecureMessages != undefined && messagesByParty?.secureMessagesByParty?.SecureMessages?.length > 0 &&\r\n <Box sx={{ml: 4}} className=\"messageFilters\">\r\n <MessageSearchBar handleSearchChange={handleSearchChange} />\r\n <FormControl sx={{ minWidth: 120 }} size=\"small\">\r\n <InputLabel>Sort By</InputLabel>\r\n <Select\r\n value={(SecureMessageSortingType as any)[secureMessageContext.Sorting]}\r\n label=\"Sort by\"\r\n onChange={handleSortByChange}\r\n >\r\n {Object.keys(SecureMessageSortingType).map((secureMessageSortingType) => { \r\n return (\r\n <MenuItem key={secureMessageSortingType} value={secureMessageSortingType}>{(SecureMessageSortingType as any)[secureMessageSortingType]}</MenuItem>\r\n );\r\n })}\r\n </Select>\r\n </FormControl>\r\n\r\n </Box>\r\n }\r\n {filteredMessages != null && filteredMessages.length !== 0 && secureMessageContext.SelectedMessage == null &&\r\n <Box sx={{ my: 12, textAlign: 'center' }} className=\"messageNote\">\r\n <MailIcon sx={{ mb: 0.7 }} />\r\n <p style={{ fontSize: 14 }} >Select an item to read</p>\r\n </Box>\r\n }\r\n {secureMessageContext.SelectedMessage != null &&\r\n <MessageChainView secureMessage={secureMessageContext.SelectedMessage} partyId={partyId} />\r\n }\r\n {messagesByParty?.secureMessagesByParty?.SecureMessages != undefined && messagesByParty?.secureMessagesByParty?.SecureMessages?.length > 0 &&\r\n <Box sx={{ml: 4}} className=\"messageFilters\">\r\n <TablePagination\r\n component=\"div\"\r\n count={filteredMessages.length}\r\n page={page}\r\n onPageChange={handleChangePage}\r\n rowsPerPage={rowsPerPage}\r\n onRowsPerPageChange={handleChangeRowsPerPage}\r\n sx={{\r\n overflowX:'scroll',\r\n '&::-webkit-scrollbar':{\r\n width:0,\r\n },\r\n margin: \"0px\",\r\n padding: \"0px\",\r\n\r\n }}\r\n />\r\n </Box>\r\n }\r\n </Grid>\r\n </Grid>\r\n </Box>\r\n </section>\r\n\r\n <Dialog\r\n fullScreen={fullScreen}\r\n className=\"createNewMessage\"\r\n open={openNewMessage}\r\n onClose={handleCloseNewMessage}\r\n fullWidth\r\n >\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <CreateNewMessage handleCloseNewMessage={handleCloseNewMessage} handleCreatedNewMessage={handleCreatedNewMessage} />\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n </>\r\n )\r\n};\r\n\r\nexport { SecureMessagingView, SecureMessageContext, SecureMessageStatus };\r\n\r\n","export default __webpack_public_path__ + \"static/media/bpay-icon-land.299b0c2c.png\";","import * as React from 'react';\r\nimport BpayText from \"app/components/BpayText\"\r\nimport BankingCutOff from \"app/components/BankingCutoff\";\r\nimport ManageBpayBillerHistory from \"../accountTransfer/ManageBpayBillerHistory/ManageBpayBillerHistory\";\r\nimport { ManagePayAnyoneAccounts } from \"../accountTransfer/managePayAnyoneAccounts/ManagePayAnyoneAccounts\";\r\nimport { RecurrenceEndEnum, TaskFrequencyPeriod, TransferAccount, useTransferAccountsByPartyQuery, usePartyLimitQuery, useIsUserAuthenticatedQuery } from \"generated/generated-models\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport MoneyFormatted from \"../components/MoneyFormatted\";\r\nimport Box from '@mui/material/Box';\r\nimport Tab from '@mui/material/Tab';\r\nimport TabContext from '@mui/lab/TabContext';\r\nimport TabList from '@mui/lab/TabList';\r\nimport TabPanel from '@mui/lab/TabPanel';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport TextField from '@mui/material/TextField';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\nimport DomainIcon from '@mui/icons-material/Domain';\r\nimport AttachMoneyIcon from '@mui/icons-material/AttachMoney';\r\nimport BPayLandIcon from \"app/layout/bpay-icon-land.png\";\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport TransferScheduleInput, { TransferScheduleInputValues } from 'app/accountTransfer/utilities/TransferScheduleInput';\r\nimport { useTransferPayments } from './context/useTransferPayments';\r\nimport { Formik, useFormikContext } from 'formik';\r\nimport Form from \"app/components/Form\";\r\nimport { Validate } from './TransferAndPaymentsValidate';\r\nimport { nameof } from 'core/util/nameof';\r\nimport FutureDatedWarningText from 'app/components/FutureDatedWarningText';\r\nimport Input from 'app/components/Input';\r\nimport SanitisedImage from 'app/components/SanitisedImage';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport { Link } from \"react-router-dom\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport { FormControlLabel, Switch, Tooltip } from '@mui/material';\r\n\r\nexport type TransfersAndPaymentsProps = {\r\n transferDescription?: string;\r\n transferReference?: string;\r\n amount?: number;\r\n useNPP?: boolean;\r\n} & TransferScheduleInputValues\r\n\r\nconst GetTransferType = ( fromAccount: TransferAccount|undefined, toAccount: TransferAccount|undefined) => {\r\n if(toAccount?.IsBPay) {\r\n return \"bpay\"\r\n }\r\n else if(!fromAccount?.IsBankAccount && toAccount?.IsBankAccount && toAccount.IsExternal) {\r\n return \"payAnyone\"\r\n }\r\n else if(!fromAccount?.IsBankAccount && toAccount?.IsBankAccount && !toAccount.IsExternal) {\r\n return \"redraw\"\r\n }\r\n else {\r\n return \"none\"\r\n }\r\n}\r\n\r\nconst TransfersAndPayments = () => {\r\n const [value, setValue] = React.useState('TransfersAndPayments');\r\n const [childValue, setChildValue] = React.useState('PayAnyone');\r\n const [selectedFromAccount, setSelectedFromAccount] = React.useState<string | null>();\r\n const [selectedToAccount, setSelectedToAccount] = React.useState<string | null>();\r\n const [selectedToAccountIsBPay, setSelectedToAccountIsBPay] = React.useState<string | null>();\r\n const [selectedToAccountIsExternal, setSelectedToAccountIsExternal] = React.useState<string | null>();\r\n const [selectedFromAccountIsNominated, setSelectedFromAccountIsNominated] = React.useState<boolean | null>();\r\n const [selectedLinkedFromAccount, setSelectedLinkedFromAccount] = React.useState<string | undefined>();\r\n const [canUseNPP, setCanUseNPP] = React.useState<string | undefined>();\r\n const [funderAllowsNPP, setFunderAllowsNPP] = React.useState<string | undefined>();\r\n const [clearanceDate, setClearanceDate] = React.useState<Date | undefined>();\r\n const [fromRedrawBalance, setFromRedrawBalance] = React.useState();\r\n const [toRedrawBalance, setToRedrawBalance] = React.useState();\r\n const { data: dataUserSession } = useIsUserAuthenticatedQuery();\r\n const { data, loading, error } = useTransferAccountsByPartyQuery();\r\n const { fromAccount, confirmFromAccount, confirmToAccount, returnToHome } = useTransferPayments();\r\n const { values, isSubmitting, setFieldValue } = useFormikContext<TransfersAndPaymentsProps>();\r\n const { data: limitData, loading: limitLoading, error: limitError } = usePartyLimitQuery();\r\n const newLimitsEnabled = dataUserSession?.userSession && dataUserSession?.userSession?.PartyPaymentLimitsEnabled;\r\n\r\n if (loading || limitLoading) {\r\n return <Loading />\r\n }\r\n if (error) {\r\n return <section className=\"sub-wrap\"><CError error=\"Could not load account details\" /></section>\r\n } \r\n if (limitError != null || limitData == null) {\r\n return <CError error=\"Could not load party limits\" />\r\n }\r\n \r\n const filterInterAccounts = data?.transferAccountsByParty?.filter(fromAccount => \r\n fromAccount?.AllowRead && fromAccount?.IsBPay === false && fromAccount?.IsBankAccount === false && fromAccount?.IsExternal === false\r\n );\r\n const filteredNominatedAccounts = data?.transferAccountsByParty?.filter(filteredAccount => \r\n filteredAccount?.IsBankAccount && filteredAccount?.IsDirectDebit &&\r\n filteredAccount?.IsDirectCredit && filteredAccount?.IsExternal === false\r\n );\r\n\r\n const listFromAccounts = [filterInterAccounts, filteredNominatedAccounts];\r\n const mergedFromAccounts = listFromAccounts.flatMap((fromAccount) => {\r\n return fromAccount\r\n });\r\n const fromAccounts = mergedFromAccounts!.sort((a, b) => a?.AccountName!.toUpperCase()! > b?.AccountName!.toUpperCase()! ? 1 : -1).map((fromAccount: any) => {\r\n const accountCategory = fromAccount!.AccountCategory!.toUpperCase();\r\n return {\r\n AccountCategory: /[0-9]/.test(accountCategory) ? '0-9' : accountCategory,\r\n ...fromAccount,\r\n };\r\n });\r\n\r\n const filteredInterLinkedAccounts = data?.transferAccountsByParty?.filter(filteredAccount => \r\n filteredAccount?.InstrumentId === selectedLinkedFromAccount && \r\n filteredAccount?.AccountNumber !== selectedFromAccount\r\n );\r\n const filteredExternalAccounts = data?.transferAccountsByParty?.filter(filteredAccount => \r\n filteredAccount?.IsExternal\r\n );\r\n const filteredBPayAccounts = data?.transferAccountsByParty?.filter(filteredAccount => \r\n filteredAccount?.IsExternal && filteredAccount?.IsBPay\r\n );\r\n const filteredDisableBPayAccounts = data?.transferAccountsByParty?.filter(filteredAccount => \r\n filteredAccount?.IsBankAccount && filteredAccount?.IsExternal && filteredAccount?.IsBPay === false\r\n );\r\n const filteredNominatedToAccounts = data?.transferAccountsByParty?.filter(filteredAccount => \r\n filteredAccount?.IsBankAccount && filteredAccount?.IsDirectDebit &&\r\n filteredAccount?.IsDirectCredit && filteredAccount?.IsExternal === false &&\r\n (filteredAccount?.CapitalAccountNumber! || []).includes(fromAccount?.AccountNumber!)\r\n );\r\n\r\n const filteredPaymentFromNominated = data?.transferAccountsByParty?.filter(filteredAccount => \r\n (fromAccount?.CapitalAccountNumber! || []).includes(filteredAccount?.AccountNumber!));\r\n\r\n const filterAccounts = (fromAccount: TransferAccount|undefined) => {\r\n // ALLOW INTER ACCOUNT TRANSFERS\r\n if(fromAccount?.AllowRead && fromAccount?.AllowOperate && fromAccount?.AllowRedraw === false && fromAccount?.AllowPayAnyone === false && fromAccount?.AllowBPay === false) {\r\n return [filteredInterLinkedAccounts]\r\n }\r\n // ALLOW INTER ACCOUNT & REDRAW TRANSFERS\r\n else if(fromAccount?.AllowRead && fromAccount?.AllowOperate && fromAccount?.AllowPayAnyone === false && fromAccount?.AllowBPay === false) {\r\n return [filteredInterLinkedAccounts, filteredNominatedToAccounts]\r\n }\r\n // ALLOW INTER ACCOUNT, REDRAW & PAY-ANYONE TRANSFERS (REDRAW IS REQUIRED FOR PAY-ANYONE)\r\n else if(fromAccount?.AllowRead && fromAccount?.AllowOperate && fromAccount?.AllowRedraw && fromAccount?.AllowBPay === false) {\r\n return [filteredInterLinkedAccounts, filteredNominatedToAccounts, filteredDisableBPayAccounts]\r\n }\r\n // ALLOW INTER ACCOUNT & BPAY TRANSFERS\r\n else if(fromAccount?.AllowRead && fromAccount?.AllowOperate && fromAccount?.AllowBPay && fromAccount?.AllowRedraw === false && fromAccount?.AllowPayAnyone === false) {\r\n return [filteredInterLinkedAccounts, filteredBPayAccounts]\r\n }\r\n // ALLOW PAYMENTS FROM NOMINATED ACCOUNT TO INTER ACCOUNT\r\n else if(fromAccount?.AllowRead === false && fromAccount?.AllowOperate === false && fromAccount?.IsBankAccount && fromAccount?.IsDirectDebit && fromAccount?.IsExternal === false) {\r\n return [filteredPaymentFromNominated]\r\n }\r\n // ALLOW ALL TRANSACTIONS\r\n else {\r\n return [filteredInterLinkedAccounts, filteredExternalAccounts, filteredNominatedToAccounts]\r\n }\r\n }\r\n \r\n const filteredAccounts = filterAccounts(fromAccount);\r\n const filteredToAccounts = filteredAccounts.flatMap((toAccount) => {\r\n return toAccount\r\n });\r\n\r\n const listToAccounts = filteredToAccounts.slice().sort((a, b) => a?.AccountName! > b?.AccountName! ? 1 : -1)\r\n const toAccounts = listToAccounts!.sort((a, b) => a?.AccountName!.toUpperCase()! > b?.AccountName!.toUpperCase()! ? 1 : -1).map((toAccount: any) => {\r\n const accountCategory = toAccount!.AccountCategory!.toUpperCase();\r\n return {\r\n AccountCategory: /[0-9]/.test(accountCategory) ? '0-9' : accountCategory,\r\n ...toAccount,\r\n };\r\n });\r\n\r\n const handleTabChange = (_event: React.SyntheticEvent, newValue: string) => {\r\n setValue(newValue);\r\n setSelectedFromAccount(null);\r\n setSelectedToAccount(undefined);\r\n setSelectedLinkedFromAccount(undefined);\r\n setFromRedrawBalance(undefined);\r\n setToRedrawBalance(undefined);\r\n };\r\n const handleChildTabChange = (_event: React.SyntheticEvent, newChildValue: string) => {\r\n setChildValue(newChildValue);\r\n };\r\n const handleFromAccountChange = (_event: any, value: any) => {\r\n if(value !== null ?? undefined) {\r\n const isNominated = value.IsBankAccount && value.IsDirectDebit && value.IsExternal === false;\r\n setSelectedLinkedFromAccount(value.InstrumentId);\r\n setSelectedFromAccount(value.AccountNumber);\r\n setFromRedrawBalance(value.RedrawBalance);\r\n confirmFromAccount(value);\r\n setSelectedToAccount(undefined);\r\n setToRedrawBalance(undefined);\r\n setFunderAllowsNPP(value.FunderAllowsNPP);\r\n setSelectedFromAccountIsNominated(isNominated);\r\n }\r\n else {\r\n setSelectedFromAccount(undefined);\r\n setSelectedToAccount(undefined);\r\n setSelectedLinkedFromAccount(undefined);\r\n setFromRedrawBalance(undefined);\r\n setToRedrawBalance(undefined);\r\n setFunderAllowsNPP(undefined);\r\n confirmFromAccount(value);\r\n }\r\n };\r\n const handleToAccountChange = (_event: any, value: any) => {\r\n if(value !== null) {\r\n const canNPP = funderAllowsNPP ? value.AccountIsValidForNPP : false;\r\n confirmToAccount(value);\r\n setSelectedToAccount(value);\r\n setSelectedToAccountIsBPay(value.IsBPay);\r\n setSelectedToAccountIsExternal(value.IsExternal);\r\n setCanUseNPP(canNPP);\r\n setFieldValue('useNPP', canNPP ? clientConfigFn().useRealtimePaymentDefaultedOn : false);\r\n setClearanceDate(new Date(value.MinimumDirectDebitDate));\r\n setFieldValue('startingOn', selectedFromAccountIsNominated ? new Date(value.MinimumDirectDebitDate) : new Date());\r\n if(value.RedrawBalance !== null) {\r\n setToRedrawBalance(value.RedrawBalance);\r\n }\r\n }\r\n else {\r\n setToRedrawBalance(undefined);\r\n setSelectedToAccount(undefined);\r\n confirmToAccount(value);\r\n }\r\n };\r\n\r\n return (\r\n <section className=\"transfers-and-payments\">\r\n <div className=\"list-header\">\r\n <h2>Transfers & Payments</h2>\r\n </div> \r\n <Box sx={{ width: '100%' }}>\r\n <TabContext value={value}>\r\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\r\n <TabList onChange={handleTabChange}>\r\n <Tab label=\"Transfers & Payments\" value=\"TransfersAndPayments\" />\r\n <Tab label=\"Payees\" value=\"Payees\" />\r\n </TabList>\r\n </Box>\r\n <TabPanel value=\"TransfersAndPayments\" sx={{ px: 0, py: 3 }}>\r\n <Box sx={{ mb: 6 }}>\r\n <FormControl fullWidth sx={{ my: 1, minWidth: 120 }} className=\"dd-transfer-accounts\">\r\n <span className=\"redraw-balance\">{fromRedrawBalance !== undefined ? <>Available: <b><MoneyFormatted amount={fromRedrawBalance} /></b></> : ''}</span>\r\n <Autocomplete\r\n fullWidth\r\n options = {fromAccounts!.sort((a, b) => -b.AccountCategory.localeCompare(a.AccountCategory))}\r\n groupBy={(option) => option.AccountCategory}\r\n getOptionLabel={(option) => option.AccountName}\r\n renderOption={(props, option) => (\r\n <Box component=\"li\" {...props}>\r\n <span className=\"account-icon\">\r\n { \r\n <AttachMoneyIcon />\r\n }\r\n </span>\r\n <span className=\"account-title\">\r\n <span className=\"title\">{option.AccountName}</span><br />\r\n <span className=\"details\">{option.BSB ? option.BSB + \" | \" : \"\" } {option.AccountNumber}</span>\r\n </span>\r\n <span className=\"account-bsb\">{option.BSB}</span>\r\n <span className=\"account-num\">{option.AccountNumber}</span>\r\n <span className=\"account-balance\">\r\n {\r\n <>Available: <b><MoneyFormatted amount={option.RedrawBalance} /></b></>\r\n } \r\n </span>\r\n </Box>\r\n )}\r\n renderInput={(params) => <TextField {...params} label=\"From\" />}\r\n onChange={handleFromAccountChange}\r\n />\r\n </FormControl>\r\n <FormControl fullWidth sx={{ my: 1, minWidth: 120 }} className=\"dd-transfer-accounts\">\r\n {selectedFromAccount !== null && selectedFromAccount !== undefined\r\n ? <><span className=\"redraw-balance\">{toRedrawBalance !== undefined ? <>Available: <b><MoneyFormatted amount={toRedrawBalance} /></b></> : ''}</span>\r\n <Autocomplete\r\n fullWidth\r\n options = {toAccounts!.sort((a, b) => -b.AccountCategory.localeCompare(a.AccountCategory))}\r\n groupBy={(option) => option.AccountCategory}\r\n getOptionLabel={(option) => option.AccountName}\r\n renderOption={(props, option) => (\r\n <Box component=\"li\" {...props}>\r\n <span className=\"account-icon\">\r\n { \r\n option.IsBPay ? <SanitisedImage width={\"73px\"} src={BPayLandIcon} alt=\"BPay\" /> :\r\n (option.IsBankAccount ? <DomainIcon /> : <AttachMoneyIcon />)\r\n }\r\n </span>\r\n <span className=\"account-title\">\r\n <span className=\"title\">{option.AccountName} {option.IsBPay ? <span className=\"bpay-flag\">BPAY</span> : \"\" }</span><br />\r\n <span className=\"details\">\r\n {\r\n option.IsBPay ? option.BillerCode + \" | \" :\r\n (option.IsBankAccount ? option.BSB + \" | \" : \"\")\r\n } {option.AccountNumber}</span>\r\n </span>\r\n <span className=\"account-bsb\">{option.BSB}</span>\r\n <span className=\"account-num\">{option.AccountNumber}</span>\r\n \r\n <span className=\"account-balance\">\r\n {\r\n option.IsBPay || option.IsBankAccount || option.IsExternal ? \"\"\r\n : <>Available: <b><MoneyFormatted amount={option.RedrawBalance} /></b></>\r\n } \r\n </span> \r\n </Box>\r\n )}\r\n renderInput={(params) => <TextField {...params} label=\"To\" />}\r\n onChange={handleToAccountChange}\r\n />\r\n </>\r\n : <Autocomplete\r\n disabled\r\n fullWidth\r\n options = {toAccounts!.sort((a, b) => -b.AccountCategory.localeCompare(a.AccountCategory))}\r\n renderInput={(params) => <TextField {...params} label=\"To\" />}\r\n />\r\n }\r\n </FormControl>\r\n </Box>\r\n \r\n {selectedToAccount &&\r\n <Box className=\"payment-details\">\r\n <Form>\r\n <Typography variant=\"h6\" gutterBottom component=\"h6\" sx={{ mt: 5, mb: 2 }}>\r\n Payment Details\r\n </Typography>\r\n <Grid container spacing={2}>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<TransfersAndPaymentsProps>(\"amount\")}\r\n type=\"currency\"\r\n label=\"Amount\"\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n {newLimitsEnabled &&\r\n <Grid container spacing={2} className=\"daily-limits-info\">\r\n <Grid item xs={6}>\r\n <h4>Daily Limit</h4>\r\n {selectedToAccountIsBPay &&\r\n <p className=\"daily-limit-amount\"><MoneyFormatted amount={limitData?.partyLimits?.DailyBPayLimit?.Amount || 0}/></p>\r\n }\r\n {selectedToAccountIsExternal && !selectedToAccountIsBPay &&\r\n <p className=\"daily-limit-amount\"><MoneyFormatted amount={limitData?.partyLimits?.DailyPayAnyoneLimit?.Amount || 0}/></p>\r\n }\r\n {!selectedToAccountIsExternal && !selectedToAccountIsBPay &&\r\n <p className=\"daily-limit-amount\"><MoneyFormatted amount={limitData?.partyLimits?.DailyRedrawLimit?.Amount || 0}/></p>\r\n }\r\n </Grid>\r\n <Grid item xs={6}>\r\n <h4 className=\"remaining-limit-title\">Remaining Daily Limit</h4>\r\n <p className=\"daily-limit-amount\">\r\n {selectedToAccountIsBPay && \r\n <MoneyFormatted amount={limitData?.partyLimits?.RemainingDailyBPayLimit?.Amount || 0}/>\r\n }\r\n {selectedToAccountIsExternal && !selectedToAccountIsBPay && \r\n <MoneyFormatted amount={limitData?.partyLimits?.RemainingDailyPayAnyoneLimit?.Amount || 0}/>\r\n }\r\n {!selectedToAccountIsExternal && !selectedToAccountIsBPay &&\r\n <MoneyFormatted amount={limitData?.partyLimits?.RemainingDailyRedrawLimit?.Amount || 0}/>\r\n }\r\n <IconButton className=\"edit-limits\" aria-label=\"edit\" title='Edit Daily Limits' component={Link} size=\"small\" to={() => (`/Security/Limits`)} id=\"editLimitsButton\">\r\n <EditIcon />\r\n </IconButton>\r\n </p>\r\n </Grid>\r\n </Grid>\r\n }\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Input\r\n name={nameof<TransfersAndPaymentsProps>(\"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 </Grid>\r\n <Grid item xs={6}>\r\n {!selectedToAccountIsBPay &&\r\n <Input\r\n name={nameof<TransfersAndPaymentsProps>(\"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 </Grid>\r\n {canUseNPP &&\r\n <Grid item xs={12}>\r\n <Tooltip title={clientConfigFn().realtimePaymentTooltipText}>\r\n <FormControlLabel \r\n control={<Switch color=\"primary\" />} \r\n label=\"Realtime Payment?\"\r\n checked={canUseNPP ? values.useNPP : false}\r\n onChange={e => {setFieldValue('useNPP', (e.target as HTMLInputElement).checked)}} />\r\n </Tooltip>\r\n </Grid>\r\n }\r\n {!values.useNPP &&\r\n <TransferScheduleInput\r\n values={values}\r\n config={{\r\n minStartingDate: new Date(),\r\n minUntilDate: new Date(values.startingOn),\r\n isDirectDebit: selectedFromAccountIsNominated ?? false,\r\n clearanceDate: clearanceDate\r\n }}\r\n />\r\n }\r\n {!values.useNPP &&\r\n <Grid item xs={12}>\r\n <FutureDatedWarningText date={values.startingOn} />\r\n <BankingCutOff />\r\n </Grid>\r\n }\r\n </Grid>\r\n <div className=\"form-group button-row\">\r\n <Button\r\n sx={{ width: 150, p: 1.5, mt: 1 }} id=\"cancel\"\r\n variant=\"contained\"\r\n className=\"btn-cancel\"\r\n onClick={() => returnToHome()}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n disabled={isSubmitting}\r\n >\r\n Create Transfer\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n </Box>\r\n }\r\n </TabPanel>\r\n <TabPanel value=\"Payees\" sx={{ px: 0, py: 3 }}>\r\n <TabContext value={childValue}>\r\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\r\n <TabList onChange={handleChildTabChange} className=\"nested-tab\">\r\n <Tab label=\"Pay Anyone\" value=\"PayAnyone\" />\r\n {clientConfigFn().showManageBPAYBillers &&\r\n <Tab label={<BpayText />} value=\"BPAY\" />\r\n }\r\n </TabList>\r\n </Box>\r\n <TabPanel value=\"PayAnyone\" sx={{ px: 0, py: 3 }}>\r\n <ManagePayAnyoneAccounts />\r\n </TabPanel>\r\n {clientConfigFn().showManageBPAYBillers &&\r\n <TabPanel value=\"BPAY\" sx={{ px: 0, py: 3 }}>\r\n <ManageBpayBillerHistory />\r\n </TabPanel>\r\n }\r\n </TabContext>\r\n </TabPanel>\r\n </TabContext>\r\n </Box>\r\n </section> \r\n );\r\n}\r\n\r\nconst TransfersAndPaymentsForm = () => {\r\n const transfer = useTransferPayments<TransfersAndPaymentsProps>();\r\n\r\n const initialValues: TransfersAndPaymentsProps = {\r\n amount: undefined,\r\n transferDescription: \"\",\r\n transferReference: \"\",\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 useNPP: false,\r\n\r\n ...transfer.formState\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => transfer.createTransfer(values)}\r\n validationSchema={Validate(transfer.fromAccount?.AccountId, GetTransferType(transfer.fromAccount, transfer.toAccount))}\r\n >\r\n <TransfersAndPayments />\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default TransfersAndPaymentsForm;","import { validateLimit, validateSchedule, validateTransferDescription } from \"app/accountTransfer/utilities/validation\";\r\nimport * as yup from \"yup\";\r\nimport { TransfersAndPaymentsProps } from \"./TransfersAndPayments\";\r\n\r\nexport const Validate = (accountId: string, transferType: string) => {\r\n if(transferType !== 'bpay') {\r\n const schema: yup.ObjectSchema<TransfersAndPaymentsProps> = 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, transferType),\r\n ...validateSchedule()\r\n })\r\n .defined();\r\n\r\n return schema;\r\n }\r\n else { \r\n const schema: yup.ObjectSchema<TransfersAndPaymentsProps> = 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, transferType),\r\n ...validateSchedule()\r\n })\r\n .defined();\r\n\r\n return schema;\r\n }\r\n}\r\n","import ConfirmTransfer from \"./ConfirmTransfer\";\r\nimport TransferReceipt from \"./TransferReceipt\";\r\nimport TransferPayments from \"./context\";\r\nimport TransfersAndPayments from \"./TransfersAndPayments\";\r\n\r\n\r\n\r\nconst TransferAndPaymentsPage = () => {\r\n return (\r\n <TransferPayments transferType=\"\" >\r\n <TransferPayments.Create>\r\n <TransfersAndPayments />\r\n </TransferPayments.Create>\r\n <TransferPayments.Confirm>\r\n <ConfirmTransfer />\r\n </TransferPayments.Confirm>\r\n <TransferPayments.Receipt>\r\n <TransferReceipt />\r\n </TransferPayments.Receipt>\r\n </TransferPayments>\r\n )\r\n}\r\n\r\nexport default TransferAndPaymentsPage;","import { useState } from \"react\";\r\nimport Title from \"app/components/Title\";\r\nimport { Form, Formik } from \"formik\";\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport { usePartyChangeMarketingCommsStatusMutation } from \"generated/generated-models\";\r\nimport { useSecurityTokenMutation } from \"core/apollo/SecurityTokenApollo\";\r\nimport Alert from '@mui/material/Alert';\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport { Validate } from \"./ProfileMarketingCommunicationsInputValidator\";\r\n\r\nexport type MarketingCommsStatusInput = {\r\n ProfileId?: string;\r\n MarketingStatus?: boolean;\r\n TwoFactorToken?: string;\r\n}\r\n\r\ntype MarketingCommsStatusMFAProps =\r\n | \"WithoutMFA\"\r\n | \"WithMFA\"\r\n\r\nconst ProfileMarketingCommunications = ({ ProfileId, MarketingStatus }: MarketingCommsStatusInput) => {\r\n const [marketingCommsStatus, setMarketingCommsStatus] = useState<boolean | undefined>(undefined);\r\n const [changeMarketingStatus, { data: changeMarketingStatusData, error: changeMarketingStatusError }] = useSecurityTokenMutation(usePartyChangeMarketingCommsStatusMutation());\r\n const [marketingCommsMFA, setMarketingCommsMFA] = useState<MarketingCommsStatusMFAProps>(\"WithoutMFA\");\r\n\r\n const handleRequiresMFA = () => {\r\n setMarketingCommsMFA(\"WithMFA\")\r\n };\r\n\r\n const handleMarketingCommsSubmit = async (values: MarketingCommsStatusInput) => {\r\n const result = await changeMarketingStatus({\r\n variables: {\r\n input:\r\n {\r\n MarketingStatus: !values.MarketingStatus!,\r\n TwoFactorToken: values.TwoFactorToken\r\n }\r\n }\r\n });\r\n\r\n if (result.data?.changeMarketingCommsStatus?.Code === \"499\") {\r\n handleRequiresMFA();\r\n }\r\n if (result.data?.changeMarketingCommsStatus?.Success) {\r\n setMarketingCommsStatus(true);\r\n\r\n setTimeout(\r\n () => {\r\n setMarketingCommsStatus(true);\r\n window.location.reload();\r\n },\r\n 3000\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <Formik\r\n initialValues={{ ProfileId: ProfileId, MarketingStatus: MarketingStatus }}\r\n onSubmit={(values) => handleMarketingCommsSubmit(values)}\r\n validationSchema={Validate(marketingCommsMFA === \"WithMFA\")}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <>\r\n <Title title=\"Marketing Communications\"/>\r\n <p className=\"intro-text\">You are about to {!MarketingStatus ? \"opt in to receive\" : \"opt out from receiving\"} marketing communications. Please confirm you are happy to proceed.</p>\r\n \r\n <Form>\r\n {!marketingCommsStatus &&\r\n <RequestMultiFactorTokenFormik\r\n name={\"TwoFactorToken\"}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={marketingCommsMFA === \"WithMFA\"}\r\n />\r\n }\r\n {(changeMarketingStatusError || changeMarketingStatusData?.changeMarketingCommsStatus?.Success === false) &&\r\n <Alert severity=\"error\">\r\n {changeMarketingStatusData?.changeMarketingCommsStatus?.Message}\r\n </Alert>\r\n }\r\n {marketingCommsStatus\r\n ? <Alert severity=\"success\">You have successfully updated your marketing communication settings.</Alert>\r\n : <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => window.location.reload()}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n }\r\n </Form>\r\n </>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default ProfileMarketingCommunications;\r\n","import * as yup from \"yup\";\r\nimport { MarketingCommsStatusInput } from \"./ProfileMarketingCommunications\";\r\nimport { GetSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => { \r\n const schema: yup.ObjectSchema<MarketingCommsStatusInput> = yup.object({\r\n TwoFactorToken: GetSecurityTokenValidator(requiresMfa)\r\n }).defined();\r\n return schema;\r\n}\r\n","import { useState } from \"react\";\r\nimport Title from \"app/components/Title\";\r\nimport { Form, Formik } from \"formik\";\r\nimport Button from '@mui/material/Button';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport { usePartyChangeElectronicCommsStatusMutation } from \"generated/generated-models\";\r\nimport { useSecurityTokenMutation } from \"core/apollo/SecurityTokenApollo\";\r\nimport Alert from '@mui/material/Alert';\r\nimport RequestMultiFactorTokenFormik from \"app/components/RequestMultiFactorTokenFormik\";\r\nimport { Validate } from \"./ProfileElectronicCommunicationsInputValidator\";\r\n\r\nexport type ElectronicCommsStatusInput = {\r\n ProfileId?: string;\r\n SMSNotificationStatus?: boolean;\r\n EmailNotificationStatus?: boolean;\r\n StatementNotificationStatus?: boolean;\r\n TwoFactorToken?: string;\r\n}\r\n\r\ntype ElectronicCommsStatusMFAProps =\r\n | \"WithoutMFA\"\r\n | \"WithMFA\"\r\n\r\nconst ProfileElectronicCommunications = ({ ProfileId, SMSNotificationStatus, EmailNotificationStatus, StatementNotificationStatus }: ElectronicCommsStatusInput) => {\r\n const [electronicCommsStatus, setElectronicCommsStatus] = useState<boolean | undefined>(undefined);\r\n const [changeElectronicCommsStatus, { data: changeElectronicCommsStatusData, error: changeElectronicCommsStatusError }] = useSecurityTokenMutation(usePartyChangeElectronicCommsStatusMutation());\r\n const [electronicCommsMFA, setElectronicCommsMFA] = useState<ElectronicCommsStatusMFAProps>(\"WithoutMFA\");\r\n\r\n const handleRequiresMFA = () => {\r\n setElectronicCommsMFA(\"WithMFA\")\r\n };\r\n\r\n const handleElectronicCommsSubmit = async (values: ElectronicCommsStatusInput) => {\r\n const result = await changeElectronicCommsStatus({\r\n variables: {\r\n input:\r\n {\r\n SMSNotificationStatus: !values.SMSNotificationStatus!,\r\n EmailNotificationStatus: !values.SMSNotificationStatus!,\r\n StatementNotificationStatus: !values.SMSNotificationStatus!,\r\n TwoFactorToken: values.TwoFactorToken\r\n }\r\n }\r\n });\r\n\r\n if (result.data?.changeElectronicCommsStatus?.Code === \"499\") {\r\n handleRequiresMFA();\r\n }\r\n if (result.data?.changeElectronicCommsStatus?.Success) {\r\n setElectronicCommsStatus(true);\r\n\r\n setTimeout(\r\n () => {\r\n setElectronicCommsStatus(true);\r\n window.location.reload();\r\n },\r\n 3000\r\n );\r\n }\r\n }\r\n \r\n const initialValues: ElectronicCommsStatusInput = {\r\n ProfileId: ProfileId,\r\n SMSNotificationStatus: SMSNotificationStatus,\r\n EmailNotificationStatus: SMSNotificationStatus,\r\n StatementNotificationStatus: SMSNotificationStatus,\r\n }\r\n\r\n let electronicStatus = false\r\n if (SMSNotificationStatus) {\r\n electronicStatus = true\r\n }\r\n return (\r\n <Formik\r\n initialValues={initialValues}\r\n onSubmit={(values) => handleElectronicCommsSubmit(values)}\r\n validationSchema={Validate(electronicCommsMFA === \"WithMFA\")}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <>\r\n <Title title=\"Electronic Communications\"/>\r\n {electronicStatus === false &&\r\n <p className=\"intro-text\">You are about to opt in to receive electronic communications on this profile. Please confirm you are happy to proceed.</p>\r\n }\r\n {electronicStatus === true &&\r\n <p className=\"intro-text\">You are about to opt out from receiving electronic communications on this profile. Please confirm you are happy to proceed.</p>\r\n }\r\n <Form>\r\n {!electronicCommsStatus &&\r\n <RequestMultiFactorTokenFormik\r\n name={\"TwoFactorToken\"}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={electronicCommsMFA === \"WithMFA\"}\r\n />\r\n }\r\n {(changeElectronicCommsStatusError || changeElectronicCommsStatusData?.changeElectronicCommsStatus?.Success === false) &&\r\n <Alert severity=\"error\">\r\n {changeElectronicCommsStatusData?.changeElectronicCommsStatus?.Message}\r\n </Alert>\r\n }\r\n {electronicCommsStatus\r\n ? <Alert severity=\"success\">You have successfully updated your electronic communication settings.</Alert>\r\n : <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => window.location.reload()}\r\n disabled={isSubmitting}>\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Confirm\r\n </LoadingButton>\r\n </div>\r\n }\r\n </Form>\r\n </>\r\n )\r\n }}\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default ProfileElectronicCommunications;\r\n","import * as yup from \"yup\";\r\nimport { ElectronicCommsStatusInput } from \"./ProfileElectronicCommunications\";\r\nimport { GetSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => { \r\n const schema: yup.ObjectSchema<ElectronicCommsStatusInput> = yup.object({\r\n TwoFactorToken: GetSecurityTokenValidator(requiresMfa)\r\n }).defined();\r\n return schema;\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useHistory } from \"react-router\";\r\nimport { Form, Formik } from \"formik\";\r\nimport { CError } from \"app/common/CError\";\r\nimport { Loading } from \"app/lib/components/Loading\";\r\nimport Box from '@mui/material/Box';\r\nimport Tab from '@mui/material/Tab';\r\nimport TabContext from '@mui/lab/TabContext';\r\nimport TabList from '@mui/lab/TabList';\r\nimport TabPanel from '@mui/lab/TabPanel';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\r\nimport LockIcon from '@mui/icons-material/Lock';\r\nimport Typography from '@mui/material/Typography';\r\nimport LocationOnOutlinedIcon from '@mui/icons-material/LocationOnOutlined';\r\nimport AdminPanelSettingsOutlinedIcon from '@mui/icons-material/AdminPanelSettingsOutlined';\r\nimport MonetizationOnOutlinedIcon from '@mui/icons-material/MonetizationOnOutlined';\r\nimport SecurityIcon from '@mui/icons-material/Security';\r\nimport MailOutlineIcon from '@mui/icons-material/MailOutline';\r\nimport CampaignIcon from '@mui/icons-material/Campaign';\r\nimport { usePartyProfileDetailsQuery, PreferredCorrespondanceType, usePartyElectronicCommsStatusQuery, usePartyChangePersonalDetailsMutation } from 'generated/generated-models';\r\nimport { CDate } from 'app/common/CapitalDate';\r\nimport { clientConfigFn } from 'clientConfig';\r\nimport { FormattedDate } from 'react-intl';\r\nimport Switch from '@mui/material/Switch';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport OutlinedInput from '@mui/material/OutlinedInput';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Grid from '@mui/material/Grid';\r\nimport { NavLink } from 'react-router-dom';\r\nimport Button from '@mui/material/Button';\r\nimport LoadingButton from '@mui/lab/LoadingButton';\r\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport ProfileMarketingCommunications from './ProfileMarketingCommunications';\r\nimport useMediaQuery from '@mui/material/useMediaQuery';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport InfoIcon from '@mui/icons-material/Info';\r\nimport ProfileElectronicCommunications from './ProfileElectronicCommunications';\r\nimport { useSecurityTokenMutation } from 'core/apollo/SecurityTokenApollo';\r\nimport { Validate } from './ProfilePersonalDetailsInputValidator';\r\nimport RequestMultiFactorTokenFormik from 'app/components/RequestMultiFactorTokenFormik';\r\nimport Alert from '@mui/material/Alert';\r\nimport TextField from '@mui/material/TextField';\r\nimport FormHelperText from '@mui/material/FormHelperText';\r\n\r\nexport type PersonalDetailsInput = {\r\n ProfileId?: string;\r\n PreferredCorrespondenceMethod?: string;\r\n TwoFactorToken?: string;\r\n}\r\n\r\ntype PersonalDetailsMFAProps =\r\n | \"WithoutMFA\"\r\n | \"WithMFA\"\r\n\r\nconst ProfileSettings = ({ ProfileId, PreferredCorrespondenceMethod }: PersonalDetailsInput) => {\r\n const { data: partyProfileDetails, loading: partyProfileDetailsLoading, error: partyProfileDetailsError } = usePartyProfileDetailsQuery();\r\n const { data: partyElectronicCommsData } = usePartyElectronicCommsStatusQuery();\r\n const partyDetails = partyProfileDetails?.userSession;\r\n const [value, setValue] = React.useState('Profile');\r\n const [preferredCorrespondence, setPreferredCorrespondence] = React.useState(PreferredCorrespondenceMethod);\r\n const [openMarketing, setOpenMarketing] = React.useState(false);\r\n const [openElectronic, setOpenElectronic] = React.useState(false);\r\n const [personalDetailsStatus, setPersonalDetailsStatus] = useState<boolean | undefined>(undefined);\r\n const [changePersonalDetails, { data: changePersonalDetailsData, error: changePersonalDetailsError }] = useSecurityTokenMutation(usePartyChangePersonalDetailsMutation());\r\n const [personalDetailsMFA, setPersonalDetailsMFA] = useState<PersonalDetailsMFAProps>(\"WithoutMFA\");\r\n const fullScreen = useMediaQuery(\"(max-width: 768px)\");\r\n const history = useHistory();\r\n\r\n const handleRequiresMFA = () => {\r\n setPersonalDetailsMFA(\"WithMFA\")\r\n };\r\n\r\n const handlePersonalDetailsSubmit = async (values: PersonalDetailsInput) => {\r\n const result = await changePersonalDetails({\r\n variables: {\r\n input:\r\n {\r\n PreferredCorrespondenceMethod: preferredCorrespondence,\r\n TwoFactorToken: values.TwoFactorToken\r\n }\r\n }\r\n });\r\n\r\n if (result.data?.partyPersonalDetails?.Code === \"499\") {\r\n handleRequiresMFA();\r\n }\r\n if (result.data?.partyPersonalDetails?.Success) {\r\n setPersonalDetailsStatus(true)\r\n\r\n setTimeout(\r\n () => {\r\n window.location.reload();\r\n },\r\n 3000\r\n );\r\n }\r\n }\r\n\r\n const mailingAddress = partyDetails?.Party?.Addresses?.filter(a => a?.IsDefaultMailingAddress && !a?.IsDeleted && !a?.IsPrevious).flatMap(ma => ma?.Address); \r\n const residentialAddress = partyDetails?.Party?.Addresses?.filter(a => a?.IsDefaultResidentialAddress && !a?.IsDeleted && !a?.IsPrevious).flatMap(ra => ra?.Address);\r\n const preferredEmail = partyDetails?.Party?.Contacts?.filter(pe => pe?.IsPreferredEmail && !pe?.IsDeleted).flatMap(em => em?.Details);\r\n const preferredPhone = partyDetails?.Party?.Contacts?.filter(pp => pp?.IsPreferredPhone && !pp?.IsDeleted).flatMap(ph => ph?.Details);\r\n const preferredSms = partyDetails?.Party?.Contacts?.filter(ps => ps?.IsPreferredSms && !ps?.IsDeleted).flatMap(ps => ps?.Details);\r\n const isMFAEnabled = partyProfileDetails?.userSession?.UseMultiFactorAuth;\r\n const newLimitsEnabled = partyProfileDetails?.userSession?.PartyPaymentLimitsEnabled;\r\n\r\n let electronicStatus = false;\r\n const partyElectComms = partyElectronicCommsData?.electronicComms;\r\n\r\n if (partyElectComms?.SMSNotificationStatus && partyElectComms?.EmailNotificationStatus && partyElectComms?.StatementNotificationStatus) {\r\n electronicStatus = true\r\n }\r\n\r\n const correspondenceList = Object.values(PreferredCorrespondanceType).map(value => ({ \r\n name: value\r\n }));\r\n const disableCorrespondenceMailEmailPhoneSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'MAIL' && obj.name !== 'EMAIL' && obj.name !== 'PHONE' && obj.name !== 'SMS'\r\n })\r\n const disableCorrespondenceMailEmailPhone = correspondenceList.filter(obj => {\r\n return obj.name !== 'MAIL'&& obj.name !== 'EMAIL' && obj.name !== 'PHONE'\r\n })\r\n const disableCorrespondenceMailEmailSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'MAIL'&& obj.name !== 'EMAIL' && obj.name !== 'SMS'\r\n })\r\n const disableCorrespondenceMailPhoneSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'MAIL'&& obj.name !== 'PHONE' && obj.name !== 'SMS'\r\n })\r\n const disableCorrespondenceEmailPhoneSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'EMAIL' && obj.name !== 'PHONE' && obj.name !== 'SMS'\r\n })\r\n const disableCorrespondenceEmailMail = correspondenceList.filter(obj => {\r\n return obj.name !== 'EMAIL' && obj.name !== 'MAIL'\r\n })\r\n const disableCorrespondenceEmailSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'EMAIL' && obj.name !== 'SMS'\r\n })\r\n const disableCorrespondencePhoneSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'PHONE' && obj.name !== 'SMS'\r\n })\r\n const disableCorrespondencePhoneEmail = correspondenceList.filter(obj => {\r\n return obj.name !== 'PHONE' && obj.name !== 'EMAIL'\r\n })\r\n const disableCorrespondencePhoneMail = correspondenceList.filter(obj => {\r\n return obj.name !== 'PHONE' && obj.name !== 'MAIL'\r\n })\r\n const disableCorrespondenceMailSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'MAIL' && obj.name !== 'SMS'\r\n })\r\n const disableCorrespondenceMail = correspondenceList.filter(obj => {\r\n return obj.name !== 'MAIL'\r\n })\r\n const disableCorrespondencePhone = correspondenceList.filter(obj => {\r\n return obj.name !== 'PHONE'\r\n })\r\n const disableCorrespondenceEmail = correspondenceList.filter(obj => {\r\n return obj.name !== 'EMAIL'\r\n })\r\n const disableCorrespondenceSms = correspondenceList.filter(obj => {\r\n return obj.name !== 'SMS'\r\n })\r\n\r\n const filterCorrespondence = (mailingAddress: any, preferredPhone: any, preferredEmail: any, preferredSms: any) => {\r\n if (mailingAddress?.length === 0 && preferredEmail?.length === 0 && preferredPhone?.length === 0 && preferredSms?.length === 0) {\r\n return disableCorrespondenceMailEmailPhoneSms\r\n }\r\n else if (preferredEmail?.length === 0 && preferredPhone?.length === 0 && preferredSms?.length === 0) {\r\n return disableCorrespondenceEmailPhoneSms\r\n }\r\n else if (mailingAddress?.length === 0 && preferredEmail?.length === 0 && preferredPhone?.length === 0) {\r\n return disableCorrespondenceMailEmailPhone\r\n }\r\n else if (mailingAddress?.length === 0 && preferredPhone?.length === 0 && preferredSms?.length === 0) {\r\n return disableCorrespondenceMailPhoneSms\r\n }\r\n else if (mailingAddress?.length === 0 && preferredEmail?.length === 0 && preferredSms?.length === 0) {\r\n return disableCorrespondenceMailEmailSms\r\n }\r\n else if (preferredEmail?.length === 0 && preferredSms?.length === 0) {\r\n return disableCorrespondenceEmailSms\r\n }\r\n else if (preferredEmail?.length === 0 && mailingAddress?.length === 0) {\r\n return disableCorrespondenceEmailMail\r\n }\r\n else if (mailingAddress?.length === 0 && preferredSms?.length === 0) {\r\n return disableCorrespondenceMailSms\r\n }\r\n else if (preferredPhone?.length === 0 && preferredSms?.length === 0) {\r\n return disableCorrespondencePhoneSms\r\n }\r\n else if (preferredPhone?.length === 0 && preferredEmail?.length === 0) {\r\n return disableCorrespondencePhoneEmail\r\n }\r\n else if (preferredPhone?.length === 0 && mailingAddress?.length === 0) {\r\n return disableCorrespondencePhoneMail\r\n }\r\n else if (mailingAddress?.length === 0) {\r\n return disableCorrespondenceMail\r\n }\r\n else if (preferredPhone?.length === 0) {\r\n return disableCorrespondencePhone\r\n }\r\n else if (preferredSms?.length === 0) {\r\n return disableCorrespondenceSms\r\n }\r\n else if (preferredEmail?.length === 0) {\r\n return disableCorrespondenceEmail\r\n }\r\n else {\r\n return correspondenceList\r\n }\r\n }\r\n const filterCorrespondenceList = filterCorrespondence(mailingAddress, preferredPhone, preferredEmail, preferredSms);\r\n const filteredCorrespondenceList = filterCorrespondenceList.flatMap((filteredCorrespondence: any) => {\r\n return filteredCorrespondence\r\n });\r\n\r\n const handleChangeCorrespondence = (event: SelectChangeEvent) => {\r\n const correspondenceSel = event.target.value;\r\n setPreferredCorrespondence(correspondenceSel);\r\n }\r\n const handleTabChange = (_event: React.SyntheticEvent, newValue: string) => {\r\n setValue(newValue);\r\n history.push({pathname: `/Security/ProfileSettings/${newValue}`});\r\n };\r\n const handleClickMarketing = () => {\r\n setOpenMarketing(true);\r\n };\r\n const handleCloseMarketing = () => {\r\n setOpenMarketing(false);\r\n };\r\n const handleClickElectronic = () => {\r\n setOpenElectronic(true);\r\n };\r\n const handleCloseElectronic = () => {\r\n setOpenElectronic(false);\r\n };\r\n\r\n useEffect(() => {\r\n switch (window.location.pathname) {\r\n case \"/Security/ProfileSettings/Profile\":\r\n setValue('Profile')\r\n break;\r\n case \"/Security/ProfileSettings/Account\":\r\n setValue('Account')\r\n break;\r\n case \"/Security/ProfileSettings/Security\":\r\n setValue('Security')\r\n break;\r\n \r\n default:\r\n setValue('Profile')\r\n break;\r\n }\r\n }, []);\r\n\r\n\r\n if (partyProfileDetailsLoading) {\r\n return <Loading />;\r\n }\r\n if (partyProfileDetailsError) {\r\n return <CError error={\"Could not load funds transfer details\"} />;\r\n } \r\n\r\n const initialValues: PersonalDetailsInput = {\r\n ProfileId: ProfileId,\r\n PreferredCorrespondenceMethod: PreferredCorrespondenceMethod,\r\n }\r\n\r\n return (\r\n <section className=\"sub-wrap profile-settings-container\">\r\n <div className=\"list-header\">\r\n <h2>Profile Settings</h2>\r\n </div> \r\n <Box sx={{ width: '100%' }}>\r\n <TabContext value={value}>\r\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\r\n <TabList onChange={handleTabChange}>\r\n <Tab label=\"Profile\" value=\"Profile\" />\r\n <Tab label=\"Account\" value=\"Account\" />\r\n <Tab label=\"Security\" value=\"Security\" />\r\n </TabList>\r\n </Box>\r\n <TabPanel value=\"Profile\" sx={{ px: 0, py: 3 }} className=\"tabContent\">\r\n <List className=\"profile-login-details\" sx={{ width: '100%'}}>\r\n <ListItem sx={{ px: 1, py: 0.2}}>\r\n <ListItemIcon>\r\n <AdminPanelSettingsOutlinedIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography><span className='primaryText'>Last Login: </span><FormattedDate value={partyDetails?.LastLoginAttempt!} day=\"2-digit\" month=\"long\" year=\"numeric\"/></Typography>}/>\r\n </ListItem>\r\n {!clientConfigFn().hideLastLoginIp && (\r\n <ListItem sx={{ px: 1, py: 0.2}}>\r\n <ListItemIcon>\r\n <LocationOnOutlinedIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography><span className='primaryText'>Last Login Location: </span> {partyDetails?.LastLoginFrom} </Typography>} />\r\n </ListItem>\r\n )}\r\n </List>\r\n\r\n <h4>Personal Information</h4>\r\n <section className='profile-personal-info'>\r\n <Grid item xs={12} sx={{ my:3 }}>\r\n {partyDetails?.Party?.EntityType === 'Individual' &&\r\n <Typography><span className='primaryText'>Name: </span> {partyDetails?.Party?.FirstName} {partyDetails?.Party?.LastName}</Typography>\r\n }\r\n {partyDetails?.Party?.EntityType === 'Organisation' &&\r\n <Typography><span className='primaryText'>Organisation Name: </span> {partyDetails?.Party?.OrganisationName}</Typography>\r\n }\r\n </Grid>\r\n </section>\r\n\r\n {isMFAEnabled\r\n ? <>\r\n <Formik initialValues={initialValues}\r\n onSubmit={(values) => handlePersonalDetailsSubmit(values)}\r\n validationSchema={Validate(personalDetailsMFA === \"WithMFA\")}\r\n >\r\n {({ isSubmitting }) => {\r\n return (\r\n <>\r\n <Form>\r\n <section className='profile-personal-info'>\r\n {clientConfigFn().showProfilePersonalInformation &&\r\n <Grid container spacing={2} sx={{mt:0, mb:4}}>\r\n <Grid item xs={6}>\r\n {preferredEmail!.length > 0\r\n ? <> \r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-email\"\r\n label=\"Email\"\r\n type=\"text\"\r\n defaultValue={preferredEmail}\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n /> \r\n </>\r\n : <Alert severity=\"warning\" sx={{mt:0, mb:0}}>There is no preferred email address set on your profile.</Alert>\r\n }\r\n </Grid>\r\n <Grid item xs={6}>\r\n {preferredPhone!.length > 0\r\n ? <>\r\n <FormControl fullWidth variant=\"outlined\">\r\n <InputLabel htmlFor=\"phone\">Phone <Tooltip title=\"For security reasons you are unable to update your phone number. If this is required, please contact support.\"><InfoIcon /></Tooltip></InputLabel>\r\n <OutlinedInput\r\n id=\"phone\"\r\n type=\"text\"\r\n name=\"phone\"\r\n label=\"Phone     \"\r\n defaultValue={preferredPhone}\r\n readOnly={true}\r\n disabled\r\n />\r\n </FormControl>\r\n </>\r\n : <Alert severity=\"warning\" sx={{mt:0, mb:0}}>There is no preferred phone number set on your profile.</Alert>\r\n }\r\n </Grid>\r\n </Grid>\r\n }\r\n {clientConfigFn().showProfileAddresses &&\r\n <>\r\n <h4>Residential Address</h4>\r\n {residentialAddress!.length > 0\r\n ? <Grid container spacing={2} sx={{mt:0, mb:4}}>\r\n {residentialAddress?.map(resAddress => {\r\n return (\r\n <>\r\n {resAddress?.AddressDetailType === 'PRINTFORMAT' &&\r\n <>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineOne\"\r\n label=\"Address Line 1\"\r\n type=\"text\"\r\n defaultValue={resAddress?.AddressLine1 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineTwo\"\r\n label=\"Address Line 2\"\r\n type=\"text\"\r\n defaultValue={resAddress?.AddressLine2 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineThree\"\r\n label=\"Address Line 3\"\r\n type=\"text\"\r\n defaultValue={resAddress?.AddressLine3 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineFour\"\r\n label=\"Address Line 4\"\r\n type=\"text\"\r\n defaultValue={resAddress?.AddressLine4 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n </>\r\n }\r\n {resAddress?.AddressDetailType === 'STREET' &&\r\n <>\r\n {resAddress?.PropertyName &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-propertyName\"\r\n label=\"Property Name\"\r\n type=\"text\"\r\n defaultValue={resAddress?.PropertyName }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.Building &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-building\"\r\n label=\"Building\"\r\n type=\"text\"\r\n defaultValue={resAddress?.Building }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.FloorName &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-floorName\"\r\n label=\"Floor Name\"\r\n type=\"text\"\r\n defaultValue={resAddress?.FloorName }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.FloorNumber &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-floorNumber\"\r\n label=\"Floor Number\"\r\n type=\"text\"\r\n defaultValue={resAddress?.FloorNumber }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.UnitNumber &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-unitNumber\"\r\n label=\"Unit Number\"\r\n type=\"text\"\r\n defaultValue={resAddress?.UnitNumber }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.LotNumber &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-lotNumber\"\r\n label=\"Lot Number\"\r\n type=\"text\"\r\n defaultValue={resAddress?.LotNumber }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.StreetNumberFrom &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetNumberFrom\"\r\n label=\"Street Number From\"\r\n type=\"text\"\r\n defaultValue={resAddress?.StreetNumberFrom }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.StreetNumberTo &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetNumberTo\"\r\n label=\"Street Number To\"\r\n type=\"text\"\r\n defaultValue={resAddress?.StreetNumberTo }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.StreetName &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetName\"\r\n label=\"Street Name\"\r\n type=\"text\"\r\n defaultValue={resAddress?.StreetName }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {resAddress?.StreetType &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetType\"\r\n label=\"Street Type\"\r\n type=\"text\"\r\n defaultValue={resAddress?.StreetType }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n </>\r\n }\r\n \r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-suburb\"\r\n label=\"Suburb / Town\"\r\n type=\"text\"\r\n defaultValue={resAddress?.SuburbTown }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-country\"\r\n label=\"Country\"\r\n type=\"text\"\r\n defaultValue={resAddress?.Country?.Name }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid> \r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-state\"\r\n label=\"State\"\r\n type=\"text\"\r\n defaultValue={resAddress?.Region?.Name }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-postcode\"\r\n label=\"Postcode\"\r\n type=\"text\"\r\n defaultValue={resAddress?.PostalCode }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n </>\r\n )\r\n })}\r\n </Grid>\r\n : <Alert severity=\"warning\" sx={{mt:0.2, mb:4}}>There is no default residential address set on your profile.</Alert>\r\n }\r\n\r\n <h4>Mailing Address</h4>\r\n {mailingAddress!.length > 0\r\n ? <Grid container spacing={2} sx={{mt:0, mb:4}}>\r\n {mailingAddress?.map(mailAddress => {\r\n return (\r\n <>\r\n {mailAddress?.AddressDetailType === 'PRINTFORMAT' &&\r\n <>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineOne\"\r\n label=\"Address Line 1\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.AddressLine1 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineTwo\"\r\n label=\"Address Line 2\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.AddressLine2 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineThree\"\r\n label=\"Address Line 3\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.AddressLine3 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-addressLineFour\"\r\n label=\"Address Line 4\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.AddressLine4 }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n </>\r\n }\r\n {mailAddress?.AddressDetailType === 'STREET' &&\r\n <>\r\n {mailAddress?.PropertyName &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-propertyName\"\r\n label=\"Property Name\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.PropertyName }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.Building &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-building\"\r\n label=\"Building\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.Building }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.FloorName &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-floorName\"\r\n label=\"Floor Name\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.FloorName }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.FloorNumber &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-floorNumber\"\r\n label=\"Floor Number\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.FloorNumber }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.UnitNumber &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-unitNumber\"\r\n label=\"Unit Number\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.UnitNumber }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.LotNumber &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-lotNumber\"\r\n label=\"Lot Number\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.LotNumber }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.StreetNumberFrom &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetNumberFrom\"\r\n label=\"Street Number From\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.StreetNumberFrom }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.StreetNumberTo &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetNumberTo\"\r\n label=\"Street Number To\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.StreetNumberTo }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.StreetName &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetName\"\r\n label=\"Street Name\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.StreetName }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n {mailAddress?.StreetType &&\r\n <Grid item xs={12}>\r\n <TextField\r\n fullWidth\r\n id=\"outlined-streetType\"\r\n label=\"Street Type\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.StreetType }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n }\r\n </>\r\n }\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-suburb\"\r\n label=\"Suburb / Town\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.SuburbTown }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-country\"\r\n label=\"Country\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.Country?.Name }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid> \r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-state\"\r\n label=\"State\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.Region?.Name }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <TextField\r\n fullWidth\r\n sx={{mt:0, mb:0.5}}\r\n id=\"outlined-postcode\"\r\n label=\"Postcode\"\r\n type=\"text\"\r\n defaultValue={mailAddress?.PostalCode }\r\n disabled\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n </Grid>\r\n </>\r\n )\r\n })}\r\n </Grid>\r\n : <Alert severity=\"warning\" sx={{mt:0.2, mb:4}}>There is no default mailing address set on your profile.</Alert>\r\n }\r\n </>\r\n }\r\n\r\n {clientConfigFn().showProfilePreferredMethodOfCorrespondence &&\r\n <>\r\n <h4>Preferred method of correspondence</h4>\r\n <Grid container spacing={2} sx={{mt:1, mb:2}} className=\"correspondence-select\">\r\n <Grid item xs={12}>\r\n {filteredCorrespondenceList.length > 0\r\n ? <FormControl fullWidth variant=\"outlined\">\r\n <InputLabel htmlFor=\"preferredCorrespondence\">Correspondence Method</InputLabel>\r\n <Select\r\n className='correspondenceSelect'\r\n label={'Correspondence Method'}\r\n value={preferredCorrespondence}\r\n onChange={handleChangeCorrespondence}\r\n >\r\n {filteredCorrespondenceList.map((correspondence, key) => (\r\n <MenuItem className={`select-${correspondence.name}`} key={key} value={correspondence.name}>\r\n {correspondence.name}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <FormHelperText>This is your preferred method of direct correspondence.</FormHelperText>\r\n </FormControl>\r\n : <Alert severity=\"warning\" sx={{mt:0.2, mb:4}}>You cannot update your preferred method of correspondence as there are no default contact details set on your profile</Alert>\r\n }\r\n </Grid>\r\n </Grid>\r\n <RequestMultiFactorTokenFormik\r\n name={\"TwoFactorToken\"}\r\n showRequestNewToken={true}\r\n requestMfaOnDisplay={true}\r\n visible={personalDetailsMFA === \"WithMFA\"}\r\n />\r\n {(changePersonalDetailsError || changePersonalDetailsData?.partyPersonalDetails?.Success === false) &&\r\n <Alert severity=\"error\">\r\n {changePersonalDetailsData?.partyPersonalDetails?.Message}\r\n </Alert>\r\n }\r\n {personalDetailsStatus\r\n ? <Alert severity=\"success\">You have successfully updated your personal profile settings.</Alert>\r\n : <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={() => window.location.reload()}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n type=\"submit\" id=\"submit\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n loading={isSubmitting}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n >\r\n Save\r\n </LoadingButton>\r\n </div>\r\n }\r\n </>\r\n }\r\n </section>\r\n </Form>\r\n </>\r\n )\r\n }}\r\n </Formik>\r\n </>\r\n : <Alert severity=\"warning\">Two-Factor Authentication (2FA) must be enabled on your profile to view further details, please contact support to proceed.</Alert>\r\n }\r\n </TabPanel>\r\n <TabPanel value=\"Account\" sx={{ px: 0, py: 3 }} className=\"tabContent\">\r\n {newLimitsEnabled &&\r\n <>\r\n <h4>Payment Limits</h4>\r\n <List className=\"containerListOptions\" sx={{ width: '100%'}}>\r\n <ListItem disablePadding component={NavLink} to={`/Security/Limits`} id=\"manageTransferLimitsButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <MonetizationOnOutlinedIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography className='primaryText'>Payment Limits</Typography>} secondary=\"Manage daily transfer limits\" />\r\n <KeyboardArrowRightIcon />\r\n </ListItemButton>\r\n </ListItem>\r\n </List>\r\n </>\r\n }\r\n {isMFAEnabled &&\r\n <>\r\n <h4>Marketing Communications</h4>\r\n <List className=\"containerListOptions\" sx={{ width: '100%'}}>\r\n <ListItem disablePadding onClick={handleClickMarketing} id=\"toggleMarketingCommunicationsButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <CampaignIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography className='primaryText'>Receive marketing communications</Typography>} secondary={`Enable to opt in and receive marketing communications.`} />\r\n <Switch disabled checked={partyDetails?.Party?.AcceptsAdvertising } />\r\n </ListItemButton>\r\n </ListItem>\r\n </List>\r\n </>\r\n } \r\n {isMFAEnabled && \r\n <>\r\n <h4>Electronic Communications</h4>\r\n <p className='info'>For security reasons there are some communications that cannot be sent electronically, these will continue to be sent via post or SMS.</p>\r\n <List className=\"containerListOptions\" sx={{ width: '100%'}}>\r\n <ListItem disablePadding onClick={handleClickElectronic} id=\"toggleCommunicationsViaElectronics\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <MailOutlineIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography className='primaryText'>Receive electronic communications</Typography>} secondary={`Enable to receive all communications electronically.`} />\r\n <Switch disabled checked={electronicStatus} />\r\n </ListItemButton>\r\n </ListItem>\r\n </List>\r\n </>\r\n }\r\n </TabPanel>\r\n <TabPanel value=\"Security\" sx={{ px: 0, py: 3 }} className=\"tabContent\">\r\n <h4>Security</h4>\r\n <List className=\"containerListOptions\" sx={{ width: '100%'}}>\r\n <ListItem disablePadding component={NavLink} to={`/Security/ChangePassword`} id=\"changePasswordButton\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <LockIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography className='primaryText'>Change Password</Typography>} secondary={<Typography className='secondaryText'>Last Changed <CDate date={partyDetails?.LastPasswordChange} /></Typography>}/>\r\n <KeyboardArrowRightIcon />\r\n </ListItemButton>\r\n </ListItem>\r\n {isMFAEnabled && \r\n <ListItem disablePadding component={NavLink} to={`/Security/Authenticator`} id=\"toggleTwoFactorAuthentication\">\r\n <ListItemButton>\r\n <ListItemIcon>\r\n <SecurityIcon />\r\n </ListItemIcon>\r\n <ListItemText primary={<Typography className='primaryText'>Two-Factor Authentication (2FA) via Mobile App</Typography>} secondary={`Enable to add an extra layer of security to your account.`} />\r\n <Switch disabled checked={partyDetails?.UseMultiFactorAuth} />\r\n </ListItemButton>\r\n </ListItem>\r\n }\r\n </List>\r\n </TabPanel>\r\n </TabContext>\r\n </Box>\r\n\r\n <Dialog \r\n open={openMarketing} \r\n onClose={handleCloseMarketing}\r\n fullScreen={fullScreen}\r\n fullWidth\r\n >\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <ProfileMarketingCommunications ProfileId={partyDetails?.Party?.Id} MarketingStatus={partyDetails?.Party?.AcceptsAdvertising}/>\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n\r\n <Dialog \r\n open={openElectronic} \r\n onClose={handleCloseElectronic}\r\n fullScreen={fullScreen}\r\n fullWidth\r\n >\r\n <DialogContent sx={{ m: 4 }}>\r\n <DialogContentText>\r\n <ProfileElectronicCommunications ProfileId={partyDetails?.Party?.Id} SMSNotificationStatus={partyElectComms?.SMSNotificationStatus} />\r\n {/* <ProfileElectronicCommunications ProfileId={partyDetails?.Party?.Id} SMSNotificationStatus={partyElectComms?.SMSNotificationStatus} EmailNotificationStatus={partyElectComms?.EmailNotificationStatus} StatementNotificationStatus={partyElectComms?.StatementNotificationStatus} /> */}\r\n </DialogContentText>\r\n </DialogContent>\r\n </Dialog>\r\n </section>\r\n )\r\n};\r\n\r\nexport default ProfileSettings;","import * as yup from \"yup\";\r\nimport { PersonalDetailsInput } from \"./ProfileSettings\";\r\nimport { GetSecurityTokenValidator } from \"app/validation/securityTokenValidator\";\r\n\r\nexport const Validate = (requiresMfa: boolean) => { \r\n const schema: yup.ObjectSchema<PersonalDetailsInput> = yup.object({\r\n TwoFactorToken: GetSecurityTokenValidator(requiresMfa)\r\n }).defined();\r\n return schema;\r\n}\r\n","import * as yup from \"yup\";\r\nimport { CreateNewMessageInput } from \"./CreateNewMessage\";\r\nimport { ToDoItemType } from 'generated/generated-models';\r\n\r\nexport const Validate = () => {\r\n\r\n const schema: yup.ObjectSchema<CreateNewMessageInput> = yup.object({\r\n \r\n SelectedToDoItem: yup\r\n .object<ToDoItemType>()\r\n .required(\"Please select a subject\"),\r\n\r\n SelectedAccount: yup\r\n .string()\r\n .when(\"SelectedToDoItem\", (SelectedToDoItem: ToDoItemType) => {\r\n if (SelectedToDoItem != undefined && SelectedToDoItem.SecureMessageType?.IsAccount) {\r\n return yup.string().required(\"Please select an account\");\r\n }\r\n return yup.string();\r\n }),\r\n\r\n Message: yup\r\n .string()\r\n .required(\"Please enter a message\")\r\n \r\n })\r\n .defined();\r\n\r\n return schema;\r\n}\r\n","import SendIcon from '@mui/icons-material/Send';\r\nimport { LoadingButton } from '@mui/lab';\r\nimport { SelectChangeEvent } from \"@mui/material\";\r\nimport Button from '@mui/material/Button';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Grid from '@mui/material/Grid';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport OutlinedInput from '@mui/material/OutlinedInput';\r\nimport Select from '@mui/material/Select';\r\nimport { SecureMessage, ToDoItemType, useCreateNewSecureMessageMutation, useFinanceSummaryQueryQuery, useToDoItemTypesQuery } from 'generated/generated-models';\r\nimport React, { ChangeEvent, useEffect, useState } from 'react';\r\nimport AddAttachment from \"./AddAttachment\";\r\nimport { CError } from 'app/common/CError';\r\nimport { Loading } from 'app/lib/components/Loading';\r\nimport { makeNonEmpty } from 'core/util/array';\r\nimport { Form, Formik, ErrorMessage } from \"formik\";\r\nimport { Validate } from \"./CreateNewMessageValidate\";\r\nimport { nameof } from \"core/util/nameof\";\r\nimport FieldErrorMessage from 'app/components/FieldErrorMessage';\r\n\r\ninterface CreateNewMessageProps {\r\n handleCloseNewMessage: () => void\r\n handleCreatedNewMessage: (secureMessage: SecureMessage) => void\r\n}\r\n\r\nexport type CreateNewMessageInput = {\r\n SelectedToDoItem: ToDoItemType | undefined;\r\n SelectedAccount: string | undefined;\r\n Message: string;\r\n}\r\n\r\nconst CreateNewMessage = (props: CreateNewMessageProps) => {\r\n const [toDoItemTypesArray, setToDoItemTypesArray] = useState<ToDoItemType[]>([]);\r\n const { data: financeSummary, loading: loadingFinanceSummary, error: financeSummaryErrors } = useFinanceSummaryQueryQuery();\r\n const accountNumbers = financeSummary?.financeSummary?.Instruments?.flatMap(instrument => instrument?.Accounts).flatMap(account => account?.Number);\r\n\r\n const { data: toDoItemTypes, loading: loadingToDoItemTypes, error: errorToDoItemTypes } = useToDoItemTypesQuery({\r\n variables: { input: { IsSecureMessage: true } },\r\n fetchPolicy: \"network-only\",\r\n });\r\n\r\n useEffect(() => {\r\n if (!loadingToDoItemTypes && toDoItemTypes) {\r\n setToDoItemTypesArray(makeNonEmpty(toDoItemTypes.toDoItemTypes).sort((toDoItemTypeA, toDoItemTypeB) => ((!toDoItemTypeA.SecureMessageType || !toDoItemTypeB.SecureMessageType || toDoItemTypeA.SecureMessageType.DisplayOrder > toDoItemTypeB.SecureMessageType.DisplayOrder) ? 1 : -1)));\r\n }\r\n }, [toDoItemTypes, loadingToDoItemTypes])\r\n\r\n function handleCancelClick() {\r\n props.handleCloseNewMessage();\r\n }\r\n\r\n const [createNewSecureMessage] = useCreateNewSecureMessageMutation();\r\n\r\n async function handleSubmit(values: CreateNewMessageInput) {\r\n const result = await createNewSecureMessage({\r\n variables: {\r\n input: {\r\n AccountNumber: values.SelectedToDoItem?.SecureMessageType?.IsAccount ? values.SelectedAccount : undefined,\r\n Message: values.Message,\r\n ToDoItemTypeId: values.SelectedToDoItem?.Id,\r\n }\r\n }\r\n })\r\n\r\n if (result.data?.requestNewSecureMessage?.GraphSecureMessage != null) {\r\n props.handleCreatedNewMessage(result.data?.requestNewSecureMessage?.GraphSecureMessage);\r\n props.handleCloseNewMessage();\r\n }\r\n };\r\n\r\n if (loadingToDoItemTypes) {\r\n return <Loading />;\r\n }\r\n if (errorToDoItemTypes) {\r\n return <CError error=\"Could not retrieve subjects\" />\r\n }\r\n\r\n const initialValues: CreateNewMessageInput = {\r\n SelectedToDoItem: undefined,\r\n SelectedAccount: \"\",\r\n 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}\r\n >\r\n {({ isSubmitting, values, handleChange, errors, touched }) => {\r\n return (\r\n <Form>\r\n <h2>New Message</h2>\r\n <Grid container spacing={2} sx={{ mt: 0, mb: 4 }} className=\"createNewMessage\">\r\n <Grid item xs={12}>\r\n <FormControl fullWidth variant=\"outlined\" error={!!(errors.SelectedToDoItem && touched.SelectedToDoItem)}>\r\n <InputLabel>Subject</InputLabel>\r\n <Select\r\n fullWidth\r\n label=\"Subject\"\r\n onChange={handleChange}\r\n name={nameof<CreateNewMessageInput>(\"SelectedToDoItem\")}\r\n >\r\n {toDoItemTypesArray.map((toDoItemType) => {\r\n return (\r\n // @ts-ignore -- allows toDoItemType to be passed through as a value\r\n <MenuItem key={toDoItemType.Id} value={toDoItemType}>{toDoItemType.Description}</MenuItem>\r\n );\r\n })}\r\n </Select>\r\n <FieldErrorMessage errorName={nameof<CreateNewMessageInput>(\"SelectedToDoItem\")} />\r\n </FormControl>\r\n </Grid>\r\n {values.SelectedToDoItem?.SecureMessageType?.IsAccount && (<Grid item xs={12}>\r\n {loadingFinanceSummary && <Loading />}\r\n {financeSummaryErrors && <CError error=\"Could not retrieve accounts\" />}\r\n {!loadingFinanceSummary && !financeSummaryErrors && (\r\n <FormControl fullWidth variant=\"outlined\" error={!!(errors.SelectedAccount && touched.SelectedAccount)}>\r\n <InputLabel>Account</InputLabel>\r\n <Select\r\n fullWidth\r\n label=\"Account\"\r\n onChange={handleChange}\r\n name={nameof<CreateNewMessageInput>(\"SelectedAccount\")}\r\n value={values.SelectedAccount}\r\n >\r\n {accountNumbers?.map((accountNumber) => {\r\n return (\r\n <MenuItem key={accountNumber} value={accountNumber}>{accountNumber}</MenuItem>\r\n );\r\n })}\r\n </Select>\r\n <FieldErrorMessage errorName={nameof<CreateNewMessageInput>(\"SelectedAccount\")} />\r\n </FormControl>\r\n )}\r\n </Grid>)}\r\n <Grid item xs={12}>\r\n <FormControl fullWidth variant=\"outlined\" error={!!(errors.Message && touched.Message)}>\r\n <InputLabel htmlFor=\"message\" error={true}>Message</InputLabel>\r\n <OutlinedInput\r\n id=\"message\"\r\n type=\"text\"\r\n label=\"Message\"\r\n multiline\r\n minRows={5}\r\n onChange={handleChange}\r\n name={nameof<CreateNewMessageInput>(\"Message\")}\r\n />\r\n <FieldErrorMessage errorName={nameof<CreateNewMessageInput>(\"Message\")} />\r\n </FormControl>\r\n </Grid>\r\n {/* Hidden as per CAP-7727*/}\r\n {false &&\r\n <AddAttachment />\r\n }\r\n </Grid>\r\n <Grid item xs={6}>\r\n {/* <FileThumb file={file} /> */}\r\n </Grid>\r\n <div className=\"button-row\">\r\n <Button\r\n className=\"btn-cancel\" id=\"cancel\"\r\n sx={{ p: 1.5, mt: 1 }}\r\n variant=\"contained\"\r\n onClick={handleCancelClick}\r\n >\r\n Cancel\r\n </Button>\r\n <LoadingButton\r\n className='btn-sendMessage'\r\n type=\"submit\" id=\"submit\"\r\n loading={isSubmitting}\r\n sx={{ p: 1.5, mt: 1 }}\r\n loadingPosition=\"end\"\r\n variant=\"contained\"\r\n startIcon={<SendIcon />}\r\n >\r\n Send Message\r\n </LoadingButton>\r\n </div>\r\n </Form>\r\n )\r\n }\r\n }\r\n </Formik>\r\n )\r\n}\r\n\r\nexport default CreateNewMessage;\r\n","\r\nimport SendIcon from '@mui/icons-material/Send';\r\nimport { Button, InputAdornment, TextField } from '@mui/material';\r\nimport React from 'react';\r\nimport AddMessageAttachmentDialog from './AddMessageAttachmentDialog';\r\ninterface MessageTypeBarProps {\r\n handleSubmit: (messageBody: string) => void,\r\n}\r\n\r\nconst MessageTypeBar = (props: MessageTypeBarProps) => {\r\n const [messageBody, setMessageBody] = React.useState(\"\")\r\n\r\n function handleInputChange(event: React.FormEvent<HTMLInputElement| HTMLTextAreaElement>) {\r\n setMessageBody(event.currentTarget.value);\r\n }\r\n\r\n function handleSubmit() {\r\n props.handleSubmit(messageBody);\r\n setMessageBody(\"\");\r\n }\r\n\r\n function handleKeyPress(event: React.KeyboardEvent<HTMLDivElement>) {\r\n if (event.key === \"Enter\") {\r\n handleSubmit();\r\n }\r\n }\r\n\r\n return (\r\n <TextField\r\n className='typeMessageField'\r\n onChange={handleInputChange}\r\n value={messageBody}\r\n placeholder='Type something here'\r\n onKeyPress={handleKeyPress}\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n {/* Hidden as per CAP-7727*/}\r\n {false &&\r\n <AddMessageAttachmentDialog />\r\n }\r\n </InputAdornment>\r\n ),\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Button variant='contained' disableElevation size='small' onClick={handleSubmit} sx={{px:1, py:2}}>\r\n <SendIcon sx={{paddingRight:\"5px\"}} />\r\n Send\r\n </Button>\r\n </InputAdornment>\r\n ),\r\n }}\r\n sx={{\r\n \"& legend\": {display: \"none\"},\r\n \"& fieldset\": {top: 0, border: \"none\"},\r\n \"& hover fieldset\": {borderColor:\"grey\"},\r\n \"& focus fieldset\": {borderColor:\"grey\"},\r\n \"boxShadow\": 2\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport default MessageTypeBar;","import { Button, Box, Stack, Paper, Avatar, Typography, Divider, Alert } from '@mui/material';\r\nimport { SecureMessage, useArchiveSecureMessageMutation, useCreateNewSecureReplyMutation, SecureMessagesByPartyDocument, useIsUserAuthenticatedQuery } from 'generated/generated-models';\r\nimport ArchiveIcon from '@mui/icons-material/Archive';\r\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\r\nimport MessageTypeBar from './MessageTypeBar';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { FormattedDate } from 'react-intl';\r\nimport MailIcon from '@mui/icons-material/MailOutlined';\r\n\r\ninterface MessageChainViewProps {\r\n secureMessage: SecureMessage | null\r\n partyId: string\r\n}\r\n\r\nconst MessageChainView = (props: MessageChainViewProps) => { \r\n const [createNewSecureReply] = useCreateNewSecureReplyMutation();\r\n const [handleArchiving] = useArchiveSecureMessageMutation();\r\n const [currentMessage, setCurrentMessage] = useState(props.secureMessage);\r\n const { data: authenticatedData } = useIsUserAuthenticatedQuery();\r\n const firstNameInitial = authenticatedData?.userSession?.Party?.FirstName!.charAt(0);\r\n const lastNameInitial = authenticatedData?.userSession?.Party?.LastName!.charAt(0);\r\n\r\n const bottom = useRef<null | HTMLDivElement>(null)\r\n const scrollToBottom = () => {\r\n bottom?.current?.scrollIntoView({ behavior: \"smooth\" })\r\n }\r\n\r\n useEffect(()=> {\r\n scrollToBottom();\r\n setCurrentMessage(props.secureMessage);\r\n },[props.secureMessage])\r\n\r\n if (currentMessage == null || currentMessage.ToDoItem.Messages == null) {\r\n return (\r\n <Box sx={{ my: 12, textAlign: 'center' }} className=\"messageNote\">\r\n <MailIcon sx={{ mb: 0.7 }} />\r\n <p style={{ fontSize: 14 }} >Select an item to read</p>\r\n </Box>\r\n );\r\n }\r\n async function handleSubmit(messageBody: string) {\r\n if (messageBody == undefined || messageBody === \"\") {\r\n return;\r\n }\r\n const result = await createNewSecureReply({\r\n variables: {\r\n input: {\r\n SecureMessageId: currentMessage?.Id,\r\n Body: messageBody\r\n }\r\n },\r\n refetchQueries: [\r\n { query: SecureMessagesByPartyDocument },\r\n ]\r\n })\r\n if (result.data?.requestNewSecureReply?.GraphSecureMessage != null) {\r\n const message = result.data.requestNewSecureReply.GraphSecureMessage;\r\n message.ToDoItem.Messages = message.ToDoItem.Messages.sort((messageA, messageB) => messageA.CreatedOn > messageB.CreatedOn ? 1 : -1);\r\n setCurrentMessage(message);\r\n }\r\n };\r\n\r\n const handleArchivingSubmit = async () => {\r\n var result = await handleArchiving({\r\n variables: {\r\n input: {\r\n SecureMessageId: currentMessage?.Id\r\n },\r\n },\r\n refetchQueries: [\r\n { query: SecureMessagesByPartyDocument },\r\n ]\r\n });\r\n\r\n if(result.data?.archiveSecureMessage?.Success !== undefined || result.data?.archiveSecureMessage?.Success === true)\r\n {\r\n setCurrentMessage(null);\r\n }\r\n }\r\n\r\n return (\r\n <Stack spacing={3} className=\"messageView\">\r\n <Box sx={{ml: 4}} className=\"messageHeader\">\r\n <h3>{currentMessage.Subject}</h3>\r\n <Stack direction=\"row\" spacing={2} className=\"messageLinks\">\r\n {/* Hidden as per CAP-7727*/}\r\n {false &&\r\n <Button variant=\"text\" startIcon={<AttachFileIcon />}>\r\n View all Attachments\r\n </Button>\r\n } \r\n <Button id=\"archive-secure-message-button\" variant=\"text\" startIcon={<ArchiveIcon />} onClick={handleArchivingSubmit}>\r\n {currentMessage.IsArchived ? \"Unarchive Message\" : \"Archive Message\"}\r\n </Button>\r\n </Stack>\r\n </Box>\r\n <Box sx={{ p:2, pt:1, ml: 4, mt: 0, height: 580, overflow: 'auto'}} id=\"ChainContainer\" className=\"messageChainContainer\">\r\n {currentMessage.ToDoItem.Messages.map((message, index) => {\r\n return (\r\n <React.Fragment key={message.Id}>\r\n <Stack direction={message.Party === props.partyId ? \"row-reverse\" : \"row\"} spacing={1}>\r\n <Avatar sx={{ mt:1.7, width: 32, height: 32, fontSize: '0.8rem' }}>{firstNameInitial}{lastNameInitial}</Avatar>\r\n <Stack>\r\n <Paper className={message.Party === props.partyId ? \"currentUserMessage\" : \"systemReplyMessage\"} elevation={3} sx={{p: 2}} > \r\n <Typography> {message.Text} </Typography>\r\n <div ref={bottom}></div>\r\n </Paper>\r\n {(currentMessage != null && (index === currentMessage.ToDoItem.Messages.length-1 || \r\n (message.CreatedBy !== currentMessage.ToDoItem.Messages[index+1].CreatedBy) || \r\n ((new Date(currentMessage.ToDoItem.Messages[index+1].CreatedOn).getTime() - new Date(message.CreatedOn).getTime())/60000 > 5))) && (\r\n <Typography variant=\"caption\" className='messageDate' sx={{marginTop: \"5px\", marginLeft:\"5px\"}}>\r\n <FormattedDate value={message.CreatedOn} day=\"2-digit\" month=\"short\" year=\"numeric\" hour=\"2-digit\" minute=\"2-digit\"/>\r\n </Typography>\r\n )}\r\n </Stack>\r\n </Stack>\r\n </React.Fragment>\r\n );\r\n })}\r\n </Box>\r\n {(currentMessage.Subject !== \"Capital Upgrade\" && !currentMessage.IsArchived) && <MessageTypeBar handleSubmit={handleSubmit}/>}\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default MessageChainView;\r\n","import { Card, CardActions, CardContent, CardHeader, Chip, Typography } from '@mui/material';\r\nimport ForumIcon from '@mui/icons-material/Forum';\r\nimport LocalOfferIcon from '@mui/icons-material/LocalOffer';\r\nimport { SecureMessage } from 'generated/generated-models';\r\nimport { useCallback, useContext } from 'react';\r\nimport { SecureMessageContext } from './SecureMessagingView';\r\nimport { FormattedDate } from 'react-intl';\r\n\r\nconst SHORT_DESCRIPTION_LENGTH = 80;\r\n\r\ninterface MessageOverviewCardProps {\r\n message: SecureMessage,\r\n handleSelectMessage: (secureMessage: SecureMessage) => void\r\n}\r\n\r\nconst MessageOverviewCard = (props: MessageOverviewCardProps) => {\r\n const selectedMessageContext = useContext(SecureMessageContext);\r\n\r\n function handleSelectMessage() {\r\n props.handleSelectMessage(props.message);\r\n }\r\n \r\n if (!props.message.ToDoItem.Messages || props.message.ToDoItem.Messages.length === 0) {\r\n return (<></>)\r\n }\r\n const lastDate = props.message.ToDoItem.Messages[props.message.ToDoItem.Messages.length - 1].CreatedOn;\r\n\r\n return (\r\n <Card \r\n className={`messageItem ${!props.message.IsRead ? \"unreadMessage\" : \"\"} ${selectedMessageContext?.SelectedMessage?.Id === props.message.Id ? \"selectedMessage\" : \"\"}`} \r\n elevation={0} \r\n onClick={handleSelectMessage}\r\n sx={{\r\n \"&:hover\": {\r\n cursor: \"pointer\"\r\n }\r\n }}>\r\n <CardHeader\r\n title={\r\n <>\r\n <Typography variant=\"h4\" className='messageTitle'>\r\n {props.message.Subject}\r\n </Typography>\r\n {/* <Chip label={props.message.Type} size=\"small\" className='messageTag'/> - When system messages are introduced, this chip should appear for system messages only. */} \r\n <Typography variant=\"caption\" className='messageDate'>\r\n {(new Date(lastDate)).toDateString() === new Date().toDateString() \r\n ? (new Date(lastDate)).toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'})\r\n : <FormattedDate value={lastDate} day=\"2-digit\" month=\"2-digit\" year=\"2-digit\"/>\r\n }\r\n </Typography>\r\n </>\r\n }\r\n />\r\n <CardContent>\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n {props.message.ToDoItem.Messages[props.message.ToDoItem.Messages.length - 1].Text.substring(0, SHORT_DESCRIPTION_LENGTH).trimEnd()}{props.message.ToDoItem.Messages[props.message.ToDoItem.Messages.length - 1].Text.length > SHORT_DESCRIPTION_LENGTH && \"...\"}\r\n </Typography>\r\n </CardContent>\r\n <CardActions>\r\n {props.message.ToDoItem.AccountNumber && (<span><LocalOfferIcon /> {props.message.ToDoItem.AccountNumber} </span>)}\r\n {/*<span><AttachFileIcon /> 1</span> to be added with attachments*/}\r\n <span><ForumIcon /> {props.message.ToDoItem.Messages?.length}</span>\r\n </CardActions>\r\n </Card>\r\n );\r\n}\r\n\r\nexport default MessageOverviewCard;","\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport { InputBase } from '@mui/material';\r\n\r\nconst Search = styled('div')(({ theme }) => ({\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: alpha(theme.palette.common.white, 0.15),\r\n '&:hover': {\r\n backgroundColor: alpha(theme.palette.common.white, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(1),\r\n width: 'auto',\r\n },\r\n}));\r\n \r\nconst SearchIconWrapper = styled('div')(({ theme }) => ({\r\n padding: theme.spacing(0, 2),\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n}));\r\n \r\nconst StyledInputBase = styled(InputBase)(({ theme }) => ({\r\n color: 'inherit',\r\n '& .MuiInputBase-input': {\r\n padding: theme.spacing(1, 1, 1, 0),\r\n // vertical padding + font size from searchIcon\r\n paddingLeft: `calc(1em + ${theme.spacing(4)})`,\r\n transition: theme.transitions.create('width'),\r\n border: '1px solid #e1e1e1',\r\n borderRadius: '6px',\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: '12ch',\r\n '&:focus': {\r\n width: '20ch',\r\n },\r\n },\r\n },\r\n}));\r\n\r\ninterface MessageSearchBarProps {\r\n handleSearchChange: (event: React.FormEvent<HTMLInputElement| HTMLTextAreaElement>) => void\r\n}\r\n\r\nconst MessageSearchBar = (props: MessageSearchBarProps) => {\r\n return (\r\n <Search sx={{mr: 4}}>\r\n <SearchIconWrapper>\r\n <SearchIcon />\r\n </SearchIconWrapper>\r\n <StyledInputBase\r\n placeholder=\"Search…\"\r\n inputProps={{ 'aria-label': 'search' }}\r\n onChange={props.handleSearchChange}\r\n />\r\n </Search>\r\n );\r\n}\r\n\r\nexport default MessageSearchBar;","import React, { useEffect } from \"react\";\r\nimport { NavbarMini } from \"../layout/Navbar/NavbarMini\";\r\nimport { Navbar } from \"../layout/Navbar/Navbar\";\r\nimport Box from '@mui/material/Box';\r\nimport CssBaseline from '@mui/material/CssBaseline';\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 InstrumentPage from \"../instrument/InstrumentPage\";\r\nimport { AccountPageComponent } from \"../account/AccountPage\";\r\nimport { Logout } from \"../authentication/Logout\";\r\nimport AccountList from \"../account/AccountList\";\r\nimport StatementsListForParty from \"../statements/StatementsListForParty\";\r\nimport TransactionsListForParty from \"../transaction/TransactionsListForParty\";\r\nimport ChangePassword from \"../authentication/ChangePassword\";\r\nimport AuthenticatorPage from \"../authentication/Authenticator/AuthenticatorPage\";\r\nimport PartyLimitsPage from \"app/partyLimits/PartyLimitsPage\";\r\nimport ResetPassword from \"../authentication/ResetPassword/ResetPassword\";\r\nimport { useIsUserAuthenticatedQuery, usePartyLimitQuery } from \"generated/generated-models\";\r\nimport ActiveSessions from \"../authentication/ActiveSessions/ActiveSessions\";\r\nimport { clientConfigFn } from \"clientConfig\";\r\nimport AcceptTerms from \"../authentication/AcceptTerms\";\r\nimport { Dashboard } from \"../dashboard/Dashboard\"; \r\nimport EditPartyLimitsPage from \"app/partyLimits/EditPartyLimitsPage\";\r\nimport TransferAndPaymentsPage from \"app/transfersAndPayments/TransferAndPaymentsPage\";\r\nimport ProfileSettings from \"app/authentication/ProfileSettings\";\r\nimport { SecureMessagingView } from \"app/authentication/SecureMessaging/SecureMessagingView\";\r\n\r\nexport const App = () => {\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 const loggedIn = userSessionData && !userSessionError && !userSessionLoading;\r\n \r\n useEffect(() => {\r\n document.title = clientConfigFn().siteTitle\r\n }, [])\r\n const { pathname } = useLocation();\r\n const { data } = useIsUserAuthenticatedQuery();\r\n const { data: limitData, loading: limitLoading, error: limitError } = usePartyLimitQuery();\r\n const screenSize = window.innerWidth ;\r\n const mobileScreenSize = screenSize <= 959;\r\n\r\n return (\r\n <React.Fragment>\r\n <Box sx={{ display: 'flex' }}>\r\n <CssBaseline />\r\n {loggedIn && !mobileScreenSize &&\r\n <NavbarMini />\r\n }\r\n {loggedIn && mobileScreenSize &&\r\n <Navbar />\r\n }\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={\"login-content-wrapper flex-fill\"}>\r\n <Login />\r\n </section>\r\n )}\r\n />\r\n <Route\r\n path=\"/Security/acceptterms\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <AcceptTerms />\r\n </Box>\r\n )} \r\n />\r\n <Route\r\n path=\"/Security/logout\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <Logout\r\n onLogout={() => {\r\n window.location.href = \"/Security/login\";\r\n }}\r\n />\r\n </Box>\r\n )}\r\n />\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 {!clientConfigFn().hideTransferPage &&\r\n <PrivateRoute\r\n path=\"/transfersAndPayments\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 12 }}>\r\n <TransferAndPaymentsPage />\r\n </Box>\r\n )} \r\n />\r\n }\r\n <PrivateRoute\r\n path=\"/statements/StatementsListForParty\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 12 }}>\r\n <BrowserRouter forceRefresh={true}>\r\n <StatementsListForParty />\r\n </BrowserRouter>\r\n </Box>\r\n )} \r\n />\r\n <PrivateRoute\r\n path=\"/account/index/:number/statements\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 12 }}>\r\n <StatementsListForParty />\r\n </Box>\r\n )} \r\n />\r\n <PrivateRoute\r\n path=\"/transaction/TransactionsListForParty\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 12 }}>\r\n <TransactionsListForParty />\r\n </Box>\r\n )} \r\n />\r\n <PrivateRoute\r\n path=\"/account/accountlist\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 12 }}>\r\n <AccountList />\r\n </Box>\r\n )} \r\n />\r\n <PrivateRoute\r\n path=\"/security/changepassword\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <ChangePassword />\r\n </Box>\r\n )} \r\n />\r\n <PrivateRoute\r\n path=\"/security/profilesettings\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <ProfileSettings PreferredCorrespondenceMethod={data?.userSession?.Party?.PreferredCorrespondanceType!} />\r\n </Box>\r\n )} \r\n />\r\n {clientConfigFn().displaySecureMessagePage &&\r\n <PrivateRoute\r\n path=\"/security/securemessaging\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, pt: 10 }}>\r\n <SecureMessagingView />\r\n </Box>\r\n )} \r\n />\r\n }\r\n {data?.userSession?.MFAEnforced &&\r\n <PrivateRoute\r\n path=\"/security/Authenticator\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <AuthenticatorPage />\r\n </Box>\r\n )}\r\n />\r\n }\r\n {data?.userSession?.PartyPaymentLimitsEnabled &&\r\n <PrivateRoute\r\n path=\"/security/Limits/Edit\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <EditPartyLimitsPage partyLimits={limitData?.partyLimits} loading={limitLoading} error={limitError} />\r\n </Box>\r\n )}\r\n />\r\n }\r\n {data?.userSession?.PartyPaymentLimitsEnabled &&\r\n <PrivateRoute\r\n path=\"/security/Limits\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <PartyLimitsPage partyLimits={limitData?.partyLimits} loading={limitLoading} error={limitError} isMFAEnabled={data?.userSession?.UseMultiFactorAuth ?? false} />\r\n </Box>\r\n )}\r\n />\r\n }\r\n <PrivateRoute \r\n path=\"/instrument/index/:number\"\r\n render={({ match }) => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <InstrumentPage instrumentNumber={match?.params.number ?? \"\"} />\r\n </Box>\r\n )}\r\n />\r\n <PrivateRoute\r\n path=\"/account/index/:number\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <AccountPageComponent />\r\n </Box>\r\n )} \r\n /> \r\n <PrivateRoute\r\n path=\"/security/activesessions\"\r\n render={() => (\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 10 }}>\r\n <ActiveSessions userSession={data?.userSession} />\r\n </Box>\r\n )}\r\n /> \r\n\r\n {/* Fallback to FinanceSummary */}\r\n <PrivateRoute\r\n children={\r\n <Box component=\"main\" sx={{ flexGrow: 1, py: 8 }}>\r\n <Dashboard session={userSessionData?.userSession}/>\r\n </Box>\r\n }\r\n />\r\n </Switch>\r\n </Box>\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":""}