{"version":3,"sources":["store/auth/reducer.ts","store/reports/types.ts","helpers/appSelector.ts","helpers/isEmpty.ts","interfaces/BulkPayment.ts","utils/clock.ts","helpers/constants.ts","store/settings/types.ts","store/reports/actions.ts","store/vas-transactions/types.ts","store/transactions/types.ts","store/auth/types.ts","store/settings/actions.ts","reportWebVitals.ts","helpers/path.ts","images/logo_symbol.png","images/logo_transparent_background.png","store/utils/types.ts","helpers/menu.ts","store/utils/reducer.ts","components/menu/SideNav.tsx","store/utils/actions.ts","utils/secure.ts","components/menu/TopNav.tsx","components/menu/Footer.tsx","routes/PrivateRoute.tsx","store/home/types.ts","store/home/reducer.ts","store/home/actions.ts","pages/_dashboard.tsx","store/transactions/reducer.ts","store/reports/reducer.ts","pages/_trans.tsx","store/bulk-payment/types.ts","store/bulk-payment/reducer.ts","store/bulk-payment/actions.ts","components/bulkPayment/DataTable.tsx","components/bulkPayment/FileUplaod.tsx","components/bulkPayment/ProcessFile.tsx","pages/_bulkPayment.tsx","pages/_bulkPaymentPage.tsx","store/payment-pages/types.ts","store/payment-pages/reducer.ts","store/payment-pages/actions.ts","pages/_paymentPages.tsx","helpers/page_functions.ts","components/[pageId]/PageDetails.tsx","components/[pageId]/EmptyTransactions.tsx","components/[pageId]/Transactions.tsx","components/[pageId]/PageTransactions.tsx","pages/_[pageId].tsx","components/login/LoginForm.tsx","components/menu/Language.tsx","pages/_login.tsx","components/[pay]/PayForm.tsx","images/visa.png","images/master-card.png","pages/_[pay].tsx","components/[genericPay]/PaymentForm.tsx","images/logos/visa-master-card.jpg","images/logos/mobile-wallets.jpg","pages/_[genericPay].tsx","pages/_examplePay.tsx","store/merchant-overview/types.ts","store/merchant-overview/reducer.ts","store/merchant-overview/actions.ts","pages/_merchantsOverview.tsx","store/merchant-channels/types.ts","store/merchant-channels/reducer.ts","store/merchant-channels/actions.ts","pages/_merchantsChannels.tsx","store/vas-processed/types.ts","store/vas-processed/reducer.ts","store/vas-processed/actions.ts","pages/_vasProcessed.tsx","components/settings/ForeignExchange/EditFX.tsx","components/settings/ForeignExchange/AddFX.tsx","components/settings/ForeignExchange/ManageFX.tsx","pages/_settings.tsx","pages/_feeReports.tsx","store/b2cTransactionTable/types.ts","store/b2cTransactionTable/reducer.ts","store/b2cTransactionTable/actions.ts","store/b2ctransactions/types.ts","store/b2ctransactions/reducer.ts","store/b2ctransactions/actions.ts","pages/_b2ctransactions.tsx","pages/_pendingTransactions.tsx","components/not-found/Background.tsx","components/not-found/404.tsx","pages/_404.tsx","components/forgotten-password/ForgottenPasswordForm.tsx","pages/_forgottenPassword.tsx","components/forgotten-password/ResetPasswordForm.tsx","pages/_reset-password.tsx","store/vas-transactions/reducer.ts","pages/_accounts.tsx","pages/_vasTransactions.tsx","store/allocate-funds/types.ts","store/allocate-funds/reducer.ts","store/allocate-funds/actions.ts","components/allocateFunds/index.tsx","components/allocateFunds/Filters.tsx","components/allocateFunds/dashboard.tsx","components/allocateFunds/TransactionDetail.tsx","pages/_allocateFunds.tsx","components/[fileId]/EmptyTransactions.tsx","components/[fileId]/Transactions.tsx","components/[fileId]/Approve.tsx","components/[fileId]/PageTransactions.tsx","pages/_[fileId].tsx","store/socodee/types.ts","store/socodee/reducer.ts","store/socodee/actions.ts","pages/_socodee.tsx","store/snel/types.ts","store/snel/reducer.ts","store/snel/actions.ts","pages/_snel.tsx","routes/Routes.tsx","App.tsx","i18n.ts","utils/api.ts","utils/authorization.ts","store/auth/sagas.ts","store/transactions/sagas.ts","store/b2cTransactionTable/sagas.ts","store/home/sagas.ts","store/payment-pages/sagas.ts","store/bulk-payment/sagas.ts","store/settings/sagas.ts","store/merchant-overview/sagas.ts","store/vas-processed/sagas.ts","store/reports/sagas.ts","store/merchant-channels/sagas.ts","store/b2ctransactions/sagas.ts","store/vas-transactions/sagas.ts","store/socodee/sagas.ts","store/snel/sagas.ts","store/allocate-funds/sagas.ts","store/index.ts","configureStore.ts","index.tsx","store/transactions/actions.ts","store/settings/reducer.ts","store/vas-transactions/actions.ts","store/auth/actions.ts"],"names":["initialState","isAuthenticated","isSubmitting","error","singleError","success","user","undefined","isForgottenPassword","forgottenPasswordSuccess","forgottenPasswordError","forgottenError","isResettingPassword","resetError","resetPasswordSuccess","resetPasswordError","reducer","state","arguments","length","action","type","AuthActionTypes","REQUEST_LOGIN_SUBMIT","LOGIN_SUCCESS","payload","LOGIN_ERROR","LOG_SINGLE_ERROR","RESET_ERROR_STATE","SET_USER","CLEAR_AUTH_STATES","FORGOTTEN_PASSWORD_REQUEST","FORGOTTEN_PASSWORD_SUCCESS","FORGOTTEN_PASSWORD_FAILURE","RESET_PASSWORD_REQUEST","RESET_PASSWORD_SUCCESS","RESET_PASSWORD_FAILURE","DESTROY_STATES","ReportsActionTypes","appSelector","createSelectorHook","isEmpty","value","Object","keys","trim","PaymentStatus","ProcessStatus","Clock","time","setTime","React","useState","moment","Date","tz","timeZones","kinshasa","format","useEffect","transactionStatus","APPROVED","DECLINED","CANCELED","accra","roles","SuperMerchant","proxyPayDataTypes","subscribers","transactions","volumes","revenues","opex","ebitda","SITE_KEY","SettingsTypes","getPCESRequest","GET_PCES_REQUEST","getPCESSuccess","response","GET_PCES_SUCCESS","getPCESFailure","GET_PCES_FAILURE","getPendingTransactionsRequest","GET_PENDING_TRANSACTIONS_REQUEST","getPendingTransactionsSuccess","GET_PENDING_TRANSACTIONS_SUCCESS","getPendingTransactionsFailure","GET_PENDING_TRANSACTIONS_FAILURE","getProxyPaySubscribersSuccess","GET_PROXYPAY_SUBSCRIBERS_SUCCESS","getProxyPaySubscribersFailure","GET_PROXYPAY_SUBSCRIBERS_FAILURE","getProxyPayTransactionsSuccess","GET_PROXYPAY_TRANSACTIONS_SUCCESS","getProxyPayTransactionsFailure","GET_PROXYPAY_TRANSACTIONS_FAILURE","getProxyPayVolumesSuccess","GET_PROXYPAY_VOLUMES_SUCCESS","getProxyPayVolumesFailure","GET_PROXYPAY_VOLUMES_FAILURE","getProxyPayRevenuesSuccess","GET_PROXYPAY_REVENUES_SUCCESS","getProxyPayRevenuesFailure","GET_PROXYPAY_REVENUES_FAILURE","getProxyPayOpexSuccess","GET_PROXYPAY_OPEX_SUCCESS","getProxyPayOpexFailure","GET_PROXYPAY_OPEX_FAILURE","getProxyPayEbitdaSuccess","GET_PROXYPAY_EBITDA_SUCCESS","getProxyPayEbitdaFailure","GET_PROXYPAY_EBITDA_FAILURE","getPayoutSuccess","GET_PAYOUT_SUCCESS","getPayoutFailure","GET_PAYOUT_FAILURE","postPayoutSuccess","POST_RECORD_SUCCESS","postPayoutFailure","POST_RECORD_FAILURE","getMerchantsRequest","GET_MERCHANTS_REQUEST","getMerchantsSuccess","GET_MERCHANTS_SUCCESS","getMerchantsFailure","GET_MERCHANTS_FAILURE","getPayoutFeeSuccess","data","POST_PAYOUT_FEE_SUCCESS","getPayoutFeeFailure","POST_PAYOUT_FEE_FAILURE","exportSuccess","EXPORT_SUCCESS","exportFailure","EXPORT_FAILURE","downloadReceiptSuccess","DOWNLOAD_RECEIPT_SUCCESS","downloadReceiptFailure","DOWNLOAD_RECEIPT_FAILURE","clearData","CLEAR_DATA","exportPCESRequest","EXPORT_PCES_REQUEST","exportPCESSuccess","EXPORT_PCES_SUCCESS","exportPCESFailure","EXPORT_PCES_FAILURE","exportPendingTxRequest","EXPORT_PENDING_TX_REQUEST","exportPendingTxSuccess","EXPORT_PENDING_TX_SUCCESS","exportPendingTxFailure","EXPORT_PENDING_TX_FAILURE","getVASServiceRequest","GET_VAS_SERVICES_REQUEST","getVASServiceSuccess","GET_VAS_SERVICES_SUCCESS","getVASServiceFailure","GET_VAS_SERVICES_FAILURE","TransactionTypes","getCurrentUser","userId","GET_CURRENT_USER","getCurrentUserSuccess","GET_CURRENT_USER_SUCCESS","getCurrentUserFailure","GET_CURRENT_USER_FAILURE","updateUserRequest","EDIT_ACCOUNT_REQUEST","updateUserSuccess","EDIT_ACCOUNT_SUCCESS","updateUserFailure","EDIT_ACCOUNT_FAILURE","clearSomeBooleans","CLEAR_SOME_BOOLEANS","changePasswordRequest","CHANGE_PASSWORD_REQUEST","getAllMerchantsRequest","getAllMerchantsSuccess","getAllMerchantsFailure","updateMerchantStatusRequest","UPDATE_MERCHANT_STATUS_REQUEST","updateMerchantStatusSuccess","UPDATE_MERCHANT_STATUS_SUCCESS","updateMerchantStatusFailure","UPDATE_MERCHANT_STATUS_FAILURE","changePasswordSuccess","CHANGE_PASSWORD_SUCCESS","changePasswordFailure","CHANGE_PASSWORD_FAILURE","createMerchantRequest","REGISTER_MERCHANT_REQUEST","createMerchantSuccess","REGISTER_MERCHANT_SUCCESS","createMerchantFailure","REGISTER_MERCHANT_FAILURE","logError","getFxRateRequest","FX_RATE_REQUEST","getFxRateSuccess","FX_RATE_SUCCESS","getFxRateFailure","FX_RATE_FAILURE","updateFxRateRequest","UPDATE_FX_RATE_REQUEST","addFxRateRequest","ADD_FX_RATE_REQUEST","createFxRateSuccess","ADD_FX_RATE_SUCCESS","createFxRateFailure","ADD_FX_RATE_FAILURE","reportWebVitals","onPerfEntry","Function","then","_ref","getCLS","getFID","getFCP","getLCP","getTTFB","path","UtilsActionTypes","menu","menuHeadings","activeMenu","menuHeader","SET_ACTIVE_MENU","SET_MENU_HEADER","Sider","Layout","SideNav","collapsed","onCollapsed","dispatch","useDispatch","t","useTranslation","utils","setActiveMenu","auth","role","find","r","switchMenu","header","changeMenu","changeMenuHeader","_jsxs","className","collapsible","onCollapse","collapsedWidth","breakpoint","width","children","_jsx","Image","src","logo2","logo","alt","preview","Menu","theme","mode","defaultSelectedKeys","ItemGroup","title","toUpperCase","Item","icon","FeatherIcons","size","onClick","NavLink","to","href","Button","secure","s","encodingType","isCompression","TopNav","toggle","Header","i18n","active","setActive","localStorage","getItem","onChangeLanguage","useCallback","lang","changeLanguage","menuLanguages","settingsMenu","removeAll","logout","Row","Col","span","Dropdown","overlay","DownOutlined","UserOutlined","Footer","FooterLayout","getFullYear","Link","PrivateRoute","component","Component","rest","setCollapsed","Fragment","Route","render","props","Divider","Redirect","HomeTypes","isPaymentFailure","isPaymentSuccess","orderResponse","loading","trxReports","submitted","mobileResponse","mobilePaymentSuccess","mobilePaymentProcessing","mobilePaymentSubmit","trxStatus","loadingAccounts","accounts","merchantAccounts","REQUEST_PAYMENT","REQUEST_PAYMENT_SUCCESS","REQUEST_PAYMENT_FAILURE","CLEAR_PAYMENT_DATA","GET_OVERVIEW_REQUEST","GET_OVERVIEW_SUCCESS","GET_OVERVIEW_FAILURE","PAYMENT_REQUEST","PAYMENT_SUCCESS","PAYMENT_FAILURE","isSubmit","MOBILE_PAYMENT_REQUEST","MOBILE_PAYMENT_SUCCESS","MOBILE_PAYMENT_FAILURE","MOBILE_STATUS_REQUEST","MOBILE_STATUS_SUCCESS","MOBILE_STATUS_FAILURE","ACCOUNTS_BALANCE_REQUEST","ACCOUNTS_BALANCE_SUCCESS","ACCOUNTS_BALANCE_FAILURE","MERCHANT_VAS_ACCOUNTS_BALANCE_SUCCESS","MERCHANT_VAS_ACCOUNTS_BALANCE_REQUEST","paymentRequest","paymentFailure","clearPaymentData","getOverviewRequest","getOverviewFailure","getAccountsBalanceFailure","DashboardStats","lazy","EmptyBox","Content","withRouter","Dashboard","client","settings","home","vasDashboard","collectionDashboard","vasTransaction","setLoading","currency","setCurrency","fixedPeriod","setFixedPeriod","setTrxReports","params","onReloadTransaction","onSelectCurrency","onSelectPeriod","container","Spin","style","marginTop","translate","Suspense","fallback","currencies","currenciesLoading","currencyError","isExporting","exportStream","isExportSuccess","isExportError","exportError","downloadReceiptStream","downloadRecieptError","downloadRecieptSuccess","isRequestingDownload","downloadError","transactionsReasons","transactionLogs","transactionLogsLoading","transactionLogsError","GET_TRANSACTIONS_REQUEST","GET_TRANSACTIONS_SUCCESS","GET_TRANSACTIONS_FAILURE","GET_CURRENCIES","GET_CURRENCIES_SUCCESS","GET_CURRENCIES_FAILURE","EXPORT_TRANSACTIONS_REQUEST","EXPORT_TRANSACTIONS_SUCCESS","EXPORT_TRANSACTIONS_FAILURE","DOWNLOAD_RECEIPT_REQUEST","GET_TRANSACTION_REASONS_SUCCESS","GET_TRANSACTION_LOGS_REQUEST","GET_TRANSACTION_LOGS_SUCCESS","GET_TRANSACTION_LOGS_FAILURE","failure","loadingSub","loadingTrx","loadingVol","loadingRev","loadingOpex","loadingEbitda","payouts","pces","pendingtransactions","proxypaySubscribers","proxypayTransactions","proxypayVolumes","proxypayRevenues","proxypayOpex","proxypayEbitda","merchants","fee","feeError","feeLoading","errorEbitda","errorOpex","errorRev","errorSub","errorTrx","errorVol","dataType","isLoaded","vasservices","GET_PROXYPAY_SUBSCRIBERS_REQUEST","GET_PROXYPAY_TRANSACTIONS_REQUEST","GET_PROXYPAY_VOLUMES_REQUEST","GET_PROXYPAY_REVENUES_REQUEST","GET_PROXYPAY_OPEX_REQUEST","GET_PROXYPAY_EBITDA_REQUEST","GET_PAYOUT_REQUEST","POST_RECORD_REQUEST","CLEAR_BOOLEANS","POST_PAYOUT_FEE_REQUEST","CLEAR_FEE","EXPORT_REQUEST","TransactionFilters","TransactionSummaryCards","TransactionTable","TransactionDetail","CurrencyFilter","Transactions","transaction","reports","trans","setTrans","trxReport","setTrxReport","channelSearch","setChannelSearch","searchValue","setSearchValue","statusSearch","setStatusSearch","fromDate","setFromDate","toDate","setToDate","exportType","setExportType","trx","setTrx","switchView","setSwitchView","setMerchants","merchant","setMerchant","setIsExporting","isDownlaoding","setIsDownloading","pageSize","setPageSize","skip","setSkip","isSearching","setIsSearching","currentPage","setCurrentPage","getSearchParams","periodFrom","periodTo","name","status","channel","display","flexWrap","justifyContent","onSearch","values","_m","query","merchantId","m","pFrom","pTo","searchParams","getTransactionsRequest","onReset","form","resetFields","resetParams","onCloseScreen","isDownloading","onDownloadReceiptClick","transactionId","downloadReceiptRequest","position","_Fragment","exportTranxRequest","onExportClick","reloadTransaction","transactionHistory","onClickRow","transactionID","onLoadMore","page","newSkip","total","description","BulkPaymentTypes","pages","failed","step","fileId","processing","filePreviewSuccess","providerName","providers","bulkpay","uploaded","files","loadingFiles","uploadingFile","uploadSuccess","GET_PROVIDERS_SUCCESS","UPLOAD_FILE","FILE_PREVIEW_REQUEST","UPLOAD_FILE_SUCCESS","UPLOAD_FILE_FAILURE","UPLOAD_FILE_FAILED","FILE_PREVIEW","INCREASE_BULK_PAYMENT_STEP","DECREASE_BULK_PAYMENT_STEP","COMPLETE_PAYMENT_REQUEST","COMPLETE_PAYMENT_SUCCESS","COMPLETE_PAYMENT_FAILURE","CLEAR_STATES","GET_BULKPAYMENT_FILES_REQUEST","GET_BULKPAYMENT_FILES_SUCESS","GET_BULKPAYMENT_FILES_FAILURE","uploadFailure","uploadedFilePreview","clearStates","bulkPaymentRequest","bulkPaymentFailure","getFilesFailure","DataTable","columns","fontSize","color","dataIndex","key","align","pageName","bulkPayment","push","amount","msisdn","gutter","Table","dataSource","bordered","pagination","hideOnSinglePage","showTotal","range","replace","Form","JSON","stringify","message","htmlType","approvalStatus","LoadingOutlined","FileUpload","excel","setExcel","excelFile","setExcelFile","uploadButton","PlusOutlined","onValidateFile","formData","FormData","append","Upload","listType","showUploadList","beforeUpload","file","isExcel","slice","lastIndexOf","disabled","ProcessFile","marginLeft","BulkPayment","FileUplaod","Files","PaymentPages","fileData","setFileData","history","useHistory","processStatus","setProcessStatus","setItem","PaymentPagesTypes","singlePage","pageTransactions","ADD_PAYMENT_PAGE_REQUEST","ADD_PAYMENT_PAGE_SUCCESS","ADD_PAYMENT_PAGE_FAILURE","UPDATE_PAYMENT_PAGE_REQUEST","UPDATE_PAYMENT_PAGE_SUCCESS","filter","paymentPageId","unshift","UPDATE_PAYMENT_PAGE_FAILURE","DELETE_PAYMENT_PAGE_REQUEST","DELETE_PAYMENT_PAGE_SUCCESS","DELETE_PAYMENT_PAGE_FAILURE","GET_PAYMENT_PAGES_REQUEST","GET_PAYMENT_PAGES_SUCCESS","GET_PAYMENT_PAGES_FAILURE","PAYMENT_PAGE_REQUEST","PAYMENT_PAGE_SUCCESS","PAYMENT_PAGE_FAILURE","GET_PAGE_TRANX_REQUEST","GET_PAGE_TRANX_SUCCESS","GET_PAGE_TRANX_FAILURE","CLEAR_PAYMENT_PAGES","REQUEST_FEE_REQUEST","REQUEST_FEE_SUCCESS","REQUEST_FEE_FAILURE","GET_PROVIDERS_FAILURE","addPaymentPageFailure","updatePaymentPageFailure","deletePaymentPageFailure","getPaymentPagesRequest","getPaymentPagesFailure","paymentPageRequest","paymentPageFailure","getPageTranxFailure","postFeeFailure","clearFee","PaymentTypeModal","FormModal","FilterMenu","Pages","showPaymentTypeModal","setShowPaymentTypeModal","showFormModal","setShowFormModal","imageUrl","setImageUrl","Amount","Description","EmailAddress","Logo","PageName","PhoneNumber","RedirectUrl","Currency","CustomerName","ProcessId","TransactionReference","pageData","setPageData","isCopied","setIsCopied","processId","setProcessId","onTogglePaymentTypeModal","onToggleFormModal","bucket","GetPagesFilteredResult","from","filtered","_d","createdAt","createdWhen","toLowerCase","includes","copyLink","window","location","protocol","host","board","document","createElement","body","appendChild","select","execCommand","removeChild","pageId","onPreviewClick","open","choosePaymentPage","isJPGOrPNG","isLessThan2MB","onChange","info","getBase64","img","callback","reader","FileReader","addEventListener","result","readAsDataURL","originFileObj","onSubmit","addPaymentPageRequest","PageDetails","useParams","pageDetails","setPageDetails","paymentPage","p","parseInt","paymentLink","initials","match","shift","pop","Avatar","shape","backgroundColor","verticalAlign","Input","addonBefore","cursor","readOnly","addonAfter","target","rel","List","parseFloat","toFixed","redirectURL","EmptyTransactions","Empty","imageStyle","height","textAlign","marginBottom","fontWeight","Tag","amountPaid","reference","date","PageTransactions","TabPane","Tabs","defaultActiveKey","tab","Page","setTransactions","getPageTranxRequest","Card","padding","LoginForm","resetSuccess","lg","md","sm","xs","Alert","layout","initialValues","onFinish","rules","required","placeholder","Password","Language","Login","setIsSubmit","setError","setSingleError","load","setLoad","expired","setExpired","reCaptchaRef","useRef","isMounted","setIsMounted","clearAuthState","setTimeout","handleRecaptcha","background","current","executeAsync","loginRequest","catch","err","ReCAPTCHA","ref","sitekey","PayForm","label","PayCircleOutlined","Pay","URLSearchParams","useLocation","search","pageTitle","get","pageLogo","pageDescription","customerFullName","customerPhoneNumber","customerEmailAddress","transactionReference","errorData","setErrorData","setSinglePage","orderURL","order","v","visa","mastercard","PaymentForm","onCalculateFee","isDefault","momoProviders","urlAmount","urlReference","urlCusEmail","urlCusName","urlCusPhone","momoProvider","momoAccountNumber","paymentInfo","Option","Select","customerName","emailAddress","phoneNumber","onBlur","e","hidden","map","provider","PhoneInput","country","preferredCountries","GenericPay","isMomoSubmit","setIsMomoSubmit","isShowOptions","setIsShowOptions","isPayWithCard","setIsPayWithCard","isPayWithMomo","setIsPayWithMomo","setMomoProviders","setFee","counter","setCounter","isMobilePaymentSuccess","setIsMobilePaymentSuccess","GET_PROVIDERS_REQUEST","notification","setInterval","PaymentInfo","Channel","Provider","WalletID","postFeeRequest","methodsMoMo","methodsCard","paymentOptions","image","ArrowLeftOutlined","mobileWallets","margin","maxWidth","creditDebitCards","Modal","maskClosable","centered","visible","footer","closable","ExamplePay","method","MerchantsOverviewTypes","overviews","GET_MERCHANTS_OVERVIEW","GET_MERCHANTS_OVERVIEW_SUCCESS","GET_MERCHANTS_OVERVIEW_FAILURE","CLEAR_OVERVIEW","EXPORT_OVERVIEW_REQUEST","EXPORT_OVERVIEW_SUCCESS","EXPORT_OVERVIEW_FAILURE","getMerchantsOverview","getMerchantsOverviewFailure","exportOverviewFailure","Filters","Cards","Details","MerchantsOverview","overviewsStore","overviewReport","setOverviewReport","overviewdata","setOverviewdata","reloadOverviews","totalMerchants","MerchantsChannelsTypes","channels","GET_MERCHANTS_CHANNELS","GET_MERCHANTS_CHANNELS_SUCCESS","GET_MERCHANTS_CHANNELS_FAILURE","CLEAR_CHANNELS","EXPORT_CHANNELS_REQUEST","EXPORT_CHANNELS_SUCCESS","EXPORT_CHANNELS_FAILURE","getMerchantsChannels","getMerchantsChannelsFailure","exportChannelsFailure","MerchantsChannels","channelStore","channelReport","setChannelReport","setChannels","reportType","product","reloadChannels","totalRecords","VASProcessedTypes","vas","GET_VAS_REQUEST","GET_VAS_SUCCESS","GET_VAS_FAILURE","CLEAR_VAS","EXPORT_VAS_REQUEST","EXPORT_VAS_SUCCESS","EXPORT_VAS_FAILURE","getVasRequest","getVasFailure","exportVASFailure","VASProcessedPage","vasStore","vasReport","setVasReport","setVasServices","processType","setProcessType","vasData","setVasData","processTypeId","vasprocessedData","EditFxRate","fxRate","onClose","setFormData","justify","async","id","SourceCurrency","DestinationCurrency","Selling","Buying","Median","CreatedBy","CreatedWhen","CreatedWhenUTC","AddFxRate","errors","onClickBackButton","FormItem","createFxSuccess","createFxFailure","getCurrencies","ArrowLeftCircle","scrollToFirstError","optionFilterProp","filterOption","input","option","indexOf","allowClear","showSearch","code","currencyCodeId","hasFeedback","ManageFX","fxCurrencies","screen","setScreen","setFxRate","tzdiff","getTimezoneOffset","useForm","d","add","row","danger","sourceCurrency","destinationCurrency","selling","buying","median","createdBy","createdWhenUTC","editFx","UserProfile","CreateMerchant","AllMerchants","Settings","allMerchants","updateForm","passwordForm","isChangingPassword","editSuccess","editFailure","merchantError","SettingOutlined","onUpdateProfile","onChangePassword","showModal","UserAddOutlined","IsBusiness","Name","phone","Confirm","short","TeamOutlined","FeeReports","setPces","pcesReport","setPcesReport","setPeriodFrom","setPeriodTo","reloadReport","getTransactionsFailure","getCurrenciesFailure","exportTranxFailure","B2CTransactionTypes","b2cpay","B2C_PAYMENT_REQUEST","B2C_PAYMENT_SUCCESS","B2C_PAYMENT_FAILURE","b2cPaymentFailure","b2cPayment","b2cTransactionTable","destination","walletID","b2cPaymentRequest","PendingFilters","PendingTransactionsView","isSuperMerchant","superMerchantRole","pendingTransactions","Background","xmlns","viewBox","x","y","rx","ry","transform","cx","cy","points","NotFound","NotFoundPage","ForgottenPasswordForm","ForgottenPassword","isSccess","setIsSuccess","isError","setIsError","getUrl","baseUrl","pathname","split","CallbackURL","forgottenPasswordRequest","ResetPasswordForm","dependencies","getFieldValue","validator","_","Promise","reject","resolve","ResetPassword","resetPasswordRequest","vasDashboardLoading","vasDashboardError","collectionDashboardLoading","collectionDashboardError","GET_VAS_DASHBOARD_REQUEST","GET_VAS_DASHBOARD_SUCCESS","GET_VAS_DASHBOARD_FAILURE","GET_COLLECTION_DASHBOARD_REQUEST","GET_COLLECTION_DASHBOARD_SUCCESS","GET_COLLECTION_DASHBOARD_FAILURE","Accounts","_accounts$filter$","_accounts$filter$2","marginRight","availableBalance","VasTransactions","_user$userId","toString","AllocateFundActionTypes","isFetching","isVerifying","ALLOCATE_FUNDS_REQUEST","ALLOCATE_FUNDS_SUCCESS","ALLOCATE_FUNDS_FAILURE","FUNDS_TRANSACTIONS_REQUEST","FUNDS_TRANSACTIONS_SUCCESS","FUNDS_TRANSACTIONS_FAILURE","VERIFY_FUNDS_ALLOCATION_REQUEST","VERIFY_FUNDS_ALLOCATION_SUCCESS","VERIFY_FUNDS_ALLOCATION_FAILURE","allocateFundFailure","fundTransactionsRequest","fundTransactionsFailure","verifyFundAllocationRequest","verifyFundAllocationFailure","exportTransactionFailure","FundAllocation","onToggleModal","onCancel","class","pattern","Panel","Collapse","setOpenModal","allocateFundState","extra","DatePicker","AllocateFundsDashboard","console","log","responsive","approvalStatusId","border","borderRadius","trxDate","debitAccount","creditAccount","_m2","_m$userId","getMerchantVASAccountBalance","onRow","showSizeChanger","reason","classname","XCircle","borderColor","TextArea","AllocateFunds","setShowModal","allocateFundsRequest","FAILED","PENDINGAPPROVAL","paymentDate","statusId","Approve","_processData$find","isSubmiting","process","processData","parse","f","approvePayments","PaymentFile","bulkPay","payments","setPayments","SocodeeTransactions","socodee","export","SnelTransactions","snel","Routes","_user$roles","Switch","exact","bulkPaymentPage","B2CTransactions","VASProcessed","App","store","persistor","signOutTime","warningTime","warnTimeOut","logoutTimeOut","getState","warn","logoutSession","removeItem","clear","setTimeOuts","clearTimeOuts","clearTimeout","events","resetTimeOut","i","removeEventListener","PersistGate","ConnectedRouter","locale","use","XHR","LanguageDetector","initReactI18next","init","resources","en","fr","lng","debug","ns","defaultNS","keySeparator","interpolation","escapeValue","formatSeparator","react","wait","bindI18n","bindI18nStore","nsMode","API_ENDPOINT","callApiGet","axios","callApiPost","post","authorization","token","defaults","headers","common","login","res","call","set","put","loginSuccess","loginError","forgotten","_ref2","forgottenPasswordFailure","reset","_ref3","resetPasswordFailure","watchLogin","takeEvery","watchForgottenPassword","watchResetPassword","authSaga","all","fork","getTransactions","getTransactionsSuccess","getCurrenciesSuccess","getExportTransactions","exportTranxSuccess","link","fileContents","download","fileDownloadName","click","getDownloadReceiptStream","getTransactionReasons","_ref4","getTransactionReasonsSuccess","getTransactionReasonsFailure","handleGetTransactionLogs","_ref5","getTransactionLogsSuccess","getTransactionLogsFailure","watchGetTransactions","watchGetCurrencies","watchExportTransactions","watchFetchGetDownloadReceiptStream","watchGetTransactionReason","GET_TRANSACTION_REASONS","watchGetTransactionLogs","transactionSaga","b2ctransactionTableSaga","getOverview","processOrderRequest","processPayment","mobilePayment","mobileStatus","getAccountsBalance","_ref6","_ref7","getMerchantVASAccountBalanceSuccess","watchProcessOrderRequest","watchGetOverviewRequest","watchProcessPayment","watchMobilePayment","watchMobileStatus","watchGetAccountsBalance","watchGetMerchantVASAccountBalance","homeSaga","addPaymentPage","updatePaymentPage","deletePaymentPage","getPaymentPages","pageTranx","processFeeRequest","getProviders","watchAddPaymentPage","watchUpdatePaymentPage","watchDeletePaymentPage","watchGetPaymentPages","watchGetPaymentPage","watchGetPageTranx","watchPostFeeRequest","watchGetProviders","paymentPagesSaga","newres","item","uploadFile","getPaymentFiles","watchUploadFile","watchUploadedFilePreview","watchFetchProviders","GET_PROVIDERS","watchBulkPaymentRequest","watchGetPaymentFiles","bulkPaymentSaga","getUser","updateUser","changePassword","createMerchant","getAllMerchants","updateMerchantStatus","getFxCurrencies","updateFxRate","addFxRate","watchGetUser","watchUpdateUser","watchChangePassword","watchCreateMerchant","watchGetAllMerchants","watchUpdateMerchantStatus","watchGetFxRate","watchUpdateFxRate","watchAddFxRate","settingsSaga","getExportOverview","watchGetOverview","watchExportOverview","overviewSaga","getVas","getExportVas","watchGetVas","watchExportVas","vasSaga","getPCESReport","getPendingTransactionsReport","getProxyPaySubReport","getProxyPayTrxReport","getProxyPayVolReport","getProxyPayRevReport","getProxyPayOpexReport","getProxyPayEbitdaReport","_ref8","getPayoutReport","_ref9","postNewRecord","_ref10","getMerchants","postPayoutFee","_ref11","getExport","_ref12","getExportPCESReport","_ref13","_ref14","getExportPendingTxReport","_ref15","getVASServices","watchGetPCESReport","watchGetPendingTransactionsReport","watchGetProxyPaySubReport","watchGetProxyPayTrxReport","watchGetProxyPayVolReport","watchGetProxyPayRevReport","watchGetProxyPayOpexReport","watchGetProxyPayEbitdaReport","watchGetPayoutReport","watchPostNewRecord","watchGetMerchants","watchPostPayoutFee","watchExport","watchPCESExport","watchPendingTxExport","watchGetVASServices","reportsSaga","getChannels","getExportChannels","watchGetChannels","watchExportChannels","channelSaga","b2cPaymentPage","watchb2cPaymentPage","b2cPaymentPageSaga","handleGetVASDashboard","getVASDashboardSuccess","getVASDashboardFailure","handleGetCollectionDashboard","getCollectionDashboardSuccess","getCollectionDashboardFailure","watchGetVASDashboard","takeLatest","watchGetCollectionDashboard","socodeetransactionTableSaga","sneltransactionTableSaga","allocateFunds","fundTransactions","verifyFundAllocation","exportFundAllocations","watchAllocateFunds","watchFundTransactions","watchVerifyFundAllocation","watchExportFundAllocations","allocateFundsSaga","persistConfig","storage","whitelist","rootSaga","vasTransactionsSaga","configureStore","composeEnhancers","composeWithDevTools","sagaMiddleware","createSagaMiddleware","createStore","persistReducer","combineReducers","authReducer","homeReducer","transactionReducer","b2cTransactionTableReducer","paymentPagesReducer","utilsReducer","settingsReducer","overviewReducer","vasReducer","reportsReducer","channelsReducer","B2CPaymentReducer","router","connectRouter","bulkPaymentReducer","vasTransactionTableReducer","socodeeTransactionTableReducer","snelTransactionTableReducer","allocateFundsReducer","persistingReducer","applyMiddleware","routerMiddleware","run","persistStore","createBrowserHistory","INITIAL_REDUX_STATE","decode","jwt_decode","setUTCSeconds","exp","setUser","ReactDOM","I18nextProvider","getElementById","getTransactionReason","GET_TRANSACTION_REASONS_FAILURE","getTransactionLogsRequest","updateMerchantError","resp","isActive","IsActive","getVASDashboardRequest","getCollectionDashboardRequest"],"mappings":"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","file":"static/js/main.ba600a4b.chunk.js","sourcesContent":["import { Reducer } from 'redux'\r\nimport { AuthState, AuthActionTypes } from './types'\r\n\r\nexport const initialState: AuthState = {\r\n isAuthenticated: false,\r\n isSubmitting: false,\r\n error: {},\r\n singleError: '',\r\n success: false,\r\n user: undefined,\r\n isForgottenPassword: false,\r\n forgottenPasswordSuccess: false,\r\n forgottenPasswordError: false,\r\n forgottenError: undefined,\r\n isResettingPassword: false,\r\n resetError: undefined,\r\n resetPasswordSuccess: false,\r\n resetPasswordError: false\r\n}\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case AuthActionTypes.REQUEST_LOGIN_SUBMIT:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: {},\r\n singleError: ''\r\n }\r\n case AuthActionTypes.LOGIN_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n user: action.payload,\r\n isAuthenticated: true,\r\n success: true\r\n }\r\n case AuthActionTypes.LOGIN_ERROR:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n success: false\r\n }\r\n case AuthActionTypes.LOG_SINGLE_ERROR: {\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n singleError: action.payload,\r\n success: false\r\n }\r\n }\r\n case AuthActionTypes.RESET_ERROR_STATE:\r\n return {\r\n ...state,\r\n error: {},\r\n isSubmitting: false\r\n }\r\n case AuthActionTypes.SET_USER:\r\n return {\r\n ...state,\r\n user: action.payload,\r\n isAuthenticated: true\r\n }\r\n\r\n case AuthActionTypes.CLEAR_AUTH_STATES:\r\n return {\r\n ...state,\r\n success: initialState.success,\r\n error: initialState.error,\r\n isSubmitting: initialState.isSubmitting,\r\n singleError: initialState.singleError,\r\n forgottenPasswordError: false,\r\n forgottenPasswordSuccess: false,\r\n forgottenError: undefined,\r\n resetError: undefined,\r\n resetPasswordSuccess: false,\r\n resetPasswordError: false\r\n }\r\n\r\n case AuthActionTypes.FORGOTTEN_PASSWORD_REQUEST:\r\n return {\r\n ...state,\r\n isForgottenPassword: true,\r\n forgottenPasswordSuccess: initialState.forgottenPasswordSuccess,\r\n forgottenPasswordError: initialState.forgottenPasswordError,\r\n forgottenError: initialState.forgottenError\r\n }\r\n case AuthActionTypes.FORGOTTEN_PASSWORD_SUCCESS:\r\n return {\r\n ...state,\r\n isForgottenPassword: initialState.isForgottenPassword,\r\n forgottenPasswordSuccess: true,\r\n forgottenPasswordError: initialState.forgottenPasswordError,\r\n forgottenError: initialState.forgottenError\r\n }\r\n case AuthActionTypes.FORGOTTEN_PASSWORD_FAILURE:\r\n return {\r\n ...state,\r\n isForgottenPassword: initialState.isForgottenPassword,\r\n forgottenPasswordSuccess: initialState.forgottenPasswordSuccess,\r\n forgottenPasswordError: true,\r\n forgottenError: action.payload\r\n }\r\n\r\n case AuthActionTypes.RESET_PASSWORD_REQUEST:\r\n return {\r\n ...state,\r\n isResettingPassword: true,\r\n resetPasswordSuccess: initialState.resetPasswordSuccess,\r\n resetPasswordError: initialState.resetPasswordError,\r\n resetError: initialState.resetError\r\n }\r\n case AuthActionTypes.RESET_PASSWORD_SUCCESS:\r\n return {\r\n ...state,\r\n isResettingPassword: initialState.isResettingPassword,\r\n resetPasswordSuccess: true,\r\n resetPasswordError: initialState.resetPasswordError,\r\n resetError: initialState.resetError\r\n }\r\n case AuthActionTypes.RESET_PASSWORD_FAILURE:\r\n return {\r\n ...state,\r\n isResettingPassword: initialState.isResettingPassword,\r\n resetPasswordSuccess: initialState.resetPasswordSuccess,\r\n resetPasswordError: true,\r\n resetError: action.payload\r\n }\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport { reducer as authReducer }\r\n","import {\r\n PCESReport,\r\n ProxyPayReportSub,\r\n ProxyPayReportTrx,\r\n ProxyPayReportVol,\r\n ProxyPayReportRev,\r\n ProxyPayReportOpex,\r\n ProxyPayReportEbitda,\r\n PayoutReport,\r\n MerchantData,\r\n Fee,\r\n DataStream,\r\n PendingTransactions,\r\n VASService\r\n} from '../../interfaces'\r\n\r\nexport enum ReportsActionTypes {\r\n GET_PCES_REQUEST = '@@reports/GET_PCES_REQUEST',\r\n GET_PCES_SUCCESS = '@@reports/GET_PCES_SUCCESS',\r\n GET_PCES_FAILURE = '@@reports/GET_PCES_FAILURE',\r\n\r\n GET_PENDING_TRANSACTIONS_REQUEST = '@@reports/GET_PENDING_TRANSACTIONS_REQUEST',\r\n GET_PENDING_TRANSACTIONS_SUCCESS = '@@reports/GET_PENDING_TRANSACTIONS_SUCCESS',\r\n GET_PENDING_TRANSACTIONS_FAILURE = '@@reports/GET_PENDING_TRANSACTIONS_FAILURE',\r\n\r\n GET_PROXYPAY_SUBSCRIBERS_REQUEST = '@@reports/GET_PROXYPAY_SUBSCRIBERS_REQUEST',\r\n GET_PROXYPAY_TRANSACTIONS_REQUEST = '@@reports/GET_PROXYPAY_TRANSACTIONS_REQUEST',\r\n GET_PROXYPAY_VOLUMES_REQUEST = '@@reports/GET_PROXYPAY_VOLUMES_REQUEST',\r\n GET_PROXYPAY_REVENUES_REQUEST = '@@reports/GET_PROXYPAY_REVENUES_REQUEST',\r\n GET_PROXYPAY_OPEX_REQUEST = '@@reports/GET_PROXYPAY_OPEX_REQUEST',\r\n GET_PROXYPAY_EBITDA_REQUEST = '@@reports/GET_PROXYPAY_EBITDA_REQUEST',\r\n\r\n GET_PROXYPAY_SUBSCRIBERS_SUCCESS = '@@reports/GET_PROXYPAY_SUBSCRIBERS_SUCCESS',\r\n GET_PROXYPAY_TRANSACTIONS_SUCCESS = '@@reports/GET_PROXYPAY_TRANSACTIONS_SUCCESS',\r\n GET_PROXYPAY_VOLUMES_SUCCESS = '@@reports/GET_PROXYPAY_VOLUMES_SUCCESS',\r\n GET_PROXYPAY_REVENUES_SUCCESS = '@@reports/GET_PROXYPAY_REVENUES_SUCCESS',\r\n GET_PROXYPAY_OPEX_SUCCESS = '@@reports/GET_PROXYPAY_OPEX_SUCCESS',\r\n GET_PROXYPAY_EBITDA_SUCCESS = '@@reports/GET_PROXYPAY_EBITDA_SUCCESS',\r\n\r\n GET_PROXYPAY_SUBSCRIBERS_FAILURE = '@@reports/GET_PROXYPAY_SUBSCRIBERS_FAILURE',\r\n GET_PROXYPAY_TRANSACTIONS_FAILURE = '@@reports/GET_PROXYPAY_TRANSACTIONS_FAILURE',\r\n GET_PROXYPAY_VOLUMES_FAILURE = '@@reports/GET_PROXYPAY_VOLUMES_FAILURE',\r\n GET_PROXYPAY_REVENUES_FAILURE = '@@reports/GET_PROXYPAY_REVENUES_FAILURE',\r\n GET_PROXYPAY_OPEX_FAILURE = '@@reports/GET_PROXYPAY_OPEX_FAILURE',\r\n GET_PROXYPAY_EBITDA_FAILURE = '@@reports/GET_PROXYPAY_EBITDA_FAILURE',\r\n\r\n GET_PAYOUT_REQUEST = '@@reports/GET_PAYOUT_REQUEST',\r\n GET_PAYOUT_SUCCESS = '@@reports/GET_PAYOUT_SUCCESS',\r\n GET_PAYOUT_FAILURE = '@@reports/GET_PAYOUT_FAILURE',\r\n POST_RECORD_REQUEST = '@@reports/POST_RECORD_REQUEST',\r\n POST_RECORD_SUCCESS = '@@reports/POST_RECORD_SUCCESS',\r\n POST_RECORD_FAILURE = '@@reports/POST_RECORD_FAILURE',\r\n CLEAR_BOOLEANS = '@@reports/CLEAR_BOOLEANS',\r\n CLEAR_DATA = '@@reports/CLEAR_DATA',\r\n GET_MERCHANTS_REQUEST = '@@reports/GET_MERCHANTS_REQUEST',\r\n GET_MERCHANTS_SUCCESS = '@@reports/GET_MERCHANTS_SUCCESS',\r\n GET_MERCHANTS_FAILURE = '@@reports/GET_MERCHANTS_FAILURE',\r\n POST_PAYOUT_FEE_REQUEST = '@@reports/POST_PAYOUT_FEE_REQUEST',\r\n POST_PAYOUT_FEE_SUCCESS = '@@reports/POST_PAYOUT_FEE_SUCCESS',\r\n POST_PAYOUT_FEE_FAILURE = '@@reports/POST_PAYOUT_FEE_FAILURE',\r\n EXPORT_REQUEST = '@@reports/EXPORT_REQUEST',\r\n EXPORT_SUCCESS = '@@reports/EXPORT_SUCCESS',\r\n EXPORT_FAILURE = '@@reports/EXPORT_FAILURE',\r\n EXPORT_PCES_REQUEST = '@@reports/EXPORT_PCES_REQUEST',\r\n EXPORT_PCES_SUCCESS = '@@reports/EXPORT_PCES_SUCCESS',\r\n EXPORT_PCES_FAILURE = '@@reports/EXPORT_PCES_FAILURE',\r\n CLEAR_FEE = '@@reports/CLEAR_FEE',\r\n DOWNLOAD_RECEIPT_REQUEST = '@@reports/DOWNLOAD_RECEIPT_REQUEST',\r\n DOWNLOAD_RECEIPT_SUCCESS = '@@reports/DOWNLOAD_RECEIPT_SUCCESS',\r\n DOWNLOAD_RECEIPT_FAILURE = '@@reports/DOWNLOAD_RECEIPT_FAILURE',\r\n\r\n EXPORT_PENDING_TX_REQUEST = '@@reports/EXPORT_PENDING_TX_REQUEST',\r\n EXPORT_PENDING_TX_SUCCESS = '@@reports/EXPORT_PENDING_TX_SUCCESS',\r\n EXPORT_PENDING_TX_FAILURE = '@@reports/EXPORT_PENDING_TX_FAILURE',\r\n\r\n GET_VAS_SERVICES_REQUEST = '@@reports/GET_VAS_SERVICES_REQUEST',\r\n GET_VAS_SERVICES_SUCCESS = '@@reports/GET_VAS_SERVICES_SUCCESS',\r\n GET_VAS_SERVICES_FAILURE = '@@reports/GET_VAS_SERVICES_FAILURE'\r\n}\r\n\r\nexport type ReportsState = {\r\n readonly loading: boolean\r\n readonly loadingSub: boolean\r\n readonly loadingTrx: boolean\r\n readonly loadingVol: boolean\r\n readonly loadingRev: boolean\r\n readonly loadingOpex: boolean\r\n readonly loadingEbitda: boolean\r\n readonly isSubmitting: boolean\r\n readonly success: boolean\r\n readonly failure: boolean\r\n readonly error: any\r\n readonly pces: PCESReport | null\r\n readonly pendingtransactions: PendingTransactions | null\r\n readonly proxypaySubscribers: ProxyPayReportSub | null\r\n readonly proxypayTransactions: ProxyPayReportTrx | null\r\n readonly proxypayVolumes: ProxyPayReportVol | null\r\n readonly proxypayRevenues: ProxyPayReportRev | null\r\n readonly proxypayOpex: ProxyPayReportOpex | null\r\n readonly proxypayEbitda: ProxyPayReportEbitda | null\r\n readonly payouts: PayoutReport | null\r\n readonly merchants: MerchantData[]\r\n readonly fee: Fee | undefined\r\n readonly feeError: any\r\n readonly feeLoading: boolean\r\n readonly isExporting: boolean\r\n readonly isExportSuccess: boolean\r\n readonly isExportError: boolean\r\n readonly exportStream: DataStream | undefined\r\n readonly exportError: any\r\n readonly isRequestingDownload: boolean\r\n readonly downloadRecieptSuccess: boolean\r\n readonly downloadRecieptError: boolean\r\n readonly downloadReceiptStream: DataStream | undefined\r\n readonly downloadError: any\r\n readonly errorSub: any\r\n readonly errorTrx: any\r\n readonly errorVol: any\r\n readonly errorRev: any\r\n readonly errorOpex: any\r\n readonly errorEbitda: any\r\n readonly isLoaded: boolean\r\n readonly dataType: string\r\n readonly vasservices: VASService[]\r\n}\r\n","import { createSelectorHook } from 'react-redux';\r\nimport { ApplicationState } from '../store';\r\n\r\nexport const appSelector = createSelectorHook();\r\n","export const isEmpty = (value: any) =>\r\n value === undefined ||\r\n value === null ||\r\n (typeof value === 'object' && Object.keys(value).length === 0) ||\r\n (typeof value === 'string' && value.trim().length === 0);\r\n","export interface FileUploadResponse {\r\n pageTitle: string;\r\n pageLogo: string;\r\n pageDescription: string;\r\n customerFullName: string;\r\n customerPhoneNumber: string;\r\n customerEmailAddress: string;\r\n transactionReference: string;\r\n currency: string;\r\n amount: string;\r\n redirectURL: string;\r\n processId: string;\r\n paymentPageId: number;\r\n momoProvider: string;\r\n momoAccountNumber: string;\r\n paymentInfo: any;\r\n}\r\n\r\nexport interface FilePreview {\r\n id: number;\r\n fileId: number;\r\n amount: number;\r\n currency: string;\r\n msisdn: string;\r\n statusId: number;\r\n paymentDate: string;\r\n}\r\n\r\nexport interface Providers {\r\n name: string;\r\n}\r\n\r\nexport interface Transaction {\r\n amount: string;\r\n currency: string;\r\n msisdn: number;\r\n providerName: string;\r\n}\r\n\r\nexport interface BulkPay {\r\n fileId: string;\r\n order: {\r\n transactionReference: string;\r\n currency: string;\r\n amount: string;\r\n customerPhoneNumber: string;\r\n };\r\n destination: {\r\n provider: string;\r\n walletID: string;\r\n };\r\n}\r\n\r\nexport interface BulkPaymentChecker {\r\n bulkpaymentFile?: FilePreview[];\r\n bulkPayload?: BulkPaymentFile[];\r\n approvalStatus: number;\r\n}\r\n\r\nexport interface PaymentFile {\r\n fileId: number;\r\n fileName: string;\r\n uploadDate: string;\r\n userName: string;\r\n statusId: number;\r\n}\r\n\r\nexport enum PaymentStatus {\r\n \"PENDINGAPPROVAL\" = 2,\r\n \"APPROVED\" = 1,\r\n \"FAILED\" = 3,\r\n}\r\n\r\nexport enum ProcessStatus {\r\n \"PROCESSED\" = 1,\r\n \"NOTPROCESSED\" = 2,\r\n}\r\n\r\nexport interface BulkPaymentFile {\r\n id: number;\r\n fileId: number;\r\n amount: number;\r\n msisdn: string;\r\n currency: string;\r\n transactionReference: string;\r\n provider: string;\r\n statusId: number;\r\n}\r\n\r\nexport interface BulkPayload {\r\n fileId: number;\r\n approvalStatus: number;\r\n}\r\n","import React from 'react';\r\nimport moment from 'moment-timezone';\r\nimport { timeZones } from '../helpers/constants';\r\n\r\nexport const Clock = () => {\r\n const [time, setTime] = React.useState(\r\n moment(new Date(), 'MM/DD/YYYY HH:mm:ss')\r\n .tz(timeZones.kinshasa)\r\n .format(`MMMM D, YYYY (h:mm a)`)\r\n );\r\n\r\n React.useEffect(() => {\r\n const time = moment(new Date(), 'MM/DD/YYYY HH:mm:ss')\r\n .tz(timeZones.kinshasa)\r\n .format(`MMMM D, YYYY (h:mm a)`);\r\n setTime(time);\r\n }, []);\r\n\r\n return { time };\r\n};\r\n","export const transactionStatus = {\r\n APPROVED: 'APPROVED',\r\n DECLINED: 'DECLINED',\r\n CANCELED: 'CANCELED'\r\n}\r\n\r\nexport const timeZones = {\r\n kinshasa: 'Africa/Kinshasa',\r\n accra: 'Africa/Accra'\r\n}\r\n\r\nexport const roles = {\r\n SuperMerchant: 'SuperMerchant'\r\n}\r\n\r\nexport const proxyPayDataTypes = {\r\n subscribers: 'subscribers',\r\n transactions: 'transactions',\r\n volumes: 'volumes',\r\n revenues: 'revenues',\r\n opex: 'opex',\r\n ebitda: 'ebitda'\r\n}\r\n\r\nexport const SITE_KEY = '6LfK1CUaAAAAAPogOw89QtsBfRoJl40XmigN4xnf'\r\n","import { Client, MerchantData, User } from '../../interfaces';\r\nimport { FxCurrency } from '../../interfaces/FxCurrency';\r\n\r\nexport enum SettingsTypes {\r\n GET_CURRENT_USER = '@@settings/GET_CURRENT_USER',\r\n GET_CURRENT_USER_SUCCESS = '@@settings/GET_CURRENT_USER_SUCCESS',\r\n GET_CURRENT_USER_FAILURE = '@@settings/GET_CURRENT_USER_FAILURE',\r\n EDIT_ACCOUNT_REQUEST = '@@settings/EDIT_ACCOUNT_REQUEST',\r\n EDIT_ACCOUNT_SUCCESS = '@@settings/EDIT_ACCOUNT_SUCCESS',\r\n EDIT_ACCOUNT_FAILURE = '@@settings/EDIT_ACCOUNT_FAILURE',\r\n CHANGE_PASSWORD_REQUEST = '@@settings/CHANGE_PASSWORD_REQUEST',\r\n CHANGE_PASSWORD_SUCCESS = '@@settings/CHANGE_PASSWORD_SUCCESS',\r\n CHANGE_PASSWORD_FAILURE = '@@settings/CHANGE_PASSWORD_FAILURE',\r\n CLEAR_SOME_BOOLEANS = '@@settings/CLEAR_SOME_BOOLEANS',\r\n REGISTER_MERCHANT_REQUEST = '@@settings/REGISTER_MERCHANT_REQUEST',\r\n REGISTER_MERCHANT_SUCCESS = '@@settings/REGISTER_MERCHANT_SUCCESS',\r\n REGISTER_MERCHANT_FAILURE = '@@settings/REGISTER_MERCHANT_FAILURE',\r\n UPDATE_MERCHANT_STATUS_REQUEST = '@@settings/UPDATE_MERCHANT_STATUS_REQUEST',\r\n UPDATE_MERCHANT_STATUS_SUCCESS = '@@settings/UPDATE_MERCHANT_STATUS_SUCCESS',\r\n UPDATE_MERCHANT_STATUS_FAILURE = '@@settings/UPDATE_MERCHANT_STATUS_FAILURE',\r\n GET_MERCHANTS_REQUEST = '@@settings/GET_MERCHANTS_REQUEST',\r\n GET_MERCHANTS_SUCCESS = '@@settings/GET_MERCHANTS_SUCCESS',\r\n GET_MERCHANTS_FAILURE = '@@settings/GET_MERCHANTS_FAILURE',\r\n LOG_SINGLE_ERROR = '@@settings/LOG_SINGLE_ERROR',\r\n FX_RATE_REQUEST= '@@settings/FX_CURRENCIES_REQUEST',\r\n FX_RATE_SUCCESS= '@@settings/FX_CURRENCIES_SUCCESS',\r\n FX_RATE_FAILURE= '@@settings/FX_CURRENCIES_FAILURE',\r\n UPDATE_FX_RATE_REQUEST= '@@settings/UPDATE_FX_CURRENCIES_REQUEST',\r\n ADD_FX_RATE_REQUEST= '@@settings/ADD_FX_CURRENCIES_REQUEST',\r\n ADD_FX_RATE_SUCCESS= '@@settings/ADD_FX_RATE_SUCCESS',\r\n ADD_FX_RATE_FAILURE= '@@settings/ADD_FX_RATE_FAILURE'\r\n}\r\n\r\nexport type SettingsState = {\r\n readonly loading: boolean;\r\n readonly isSubmitting: boolean;\r\n readonly error: any;\r\n readonly client: Client | null;\r\n readonly editSuccess: boolean;\r\n readonly editFailure: boolean;\r\n readonly isChangingPassword: boolean;\r\n readonly changePasswordSuccess: boolean;\r\n readonly changePasswordFailure: boolean;\r\n readonly createMerchantSuccess: boolean;\r\n readonly createMerchantFailure: boolean;\r\n readonly updateMerchantStatusSuccess: boolean;\r\n readonly updateMerchantStatusFailure: boolean;\r\n readonly updateMerchantError: string;\r\n readonly merchants: User[];\r\n readonly allMerchants: MerchantData[];\r\n readonly singleError: string;\r\n readonly merchantError: any;\r\n readonly fxCurrencies: FxCurrency[];\r\n readonly createFxSuccess: boolean;\r\n readonly createFxFailure: boolean;\r\n};\r\n","import { action } from 'typesafe-actions'\r\nimport { ReportsActionTypes } from './types'\r\nimport {\r\n PCESReport,\r\n PendingTransactions,\r\n ProxyPayReportSub,\r\n ProxyPayReportTrx,\r\n ProxyPayReportVol,\r\n ProxyPayReportRev,\r\n ProxyPayReportOpex,\r\n ProxyPayReportEbitda,\r\n PayoutReport,\r\n PayoutNewRecord,\r\n MerchantData,\r\n Fee,\r\n DataStream\r\n} from '../../interfaces'\r\n\r\nexport const getPCESRequest = (payload: any) => action(ReportsActionTypes.GET_PCES_REQUEST, payload)\r\n\r\nexport const getPCESSuccess = (response: PCESReport) =>\r\n action(ReportsActionTypes.GET_PCES_SUCCESS, response)\r\n\r\nexport const getPCESFailure = (error: any) => action(ReportsActionTypes.GET_PCES_FAILURE, error)\r\n\r\nexport const getPendingTransactionsRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PENDING_TRANSACTIONS_REQUEST, payload)\r\n\r\nexport const getPendingTransactionsSuccess = (response: PendingTransactions) =>\r\n action(ReportsActionTypes.GET_PENDING_TRANSACTIONS_SUCCESS, response)\r\n\r\nexport const getPendingTransactionsFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_PENDING_TRANSACTIONS_FAILURE, error)\r\n\r\nexport const getProxyPaySubscribersRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_SUBSCRIBERS_REQUEST, payload)\r\n\r\nexport const getProxyPaySubscribersSuccess = (response: ProxyPayReportSub) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_SUBSCRIBERS_SUCCESS, response)\r\n\r\nexport const getProxyPaySubscribersFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_SUBSCRIBERS_FAILURE, error)\r\n\r\nexport const getProxyPayTransactionsRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_TRANSACTIONS_REQUEST, payload)\r\n\r\nexport const getProxyPayTransactionsSuccess = (response: ProxyPayReportTrx) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_TRANSACTIONS_SUCCESS, response)\r\n\r\nexport const getProxyPayTransactionsFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_TRANSACTIONS_FAILURE, error)\r\n\r\nexport const getProxyPayVolumesRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_VOLUMES_REQUEST, payload)\r\n\r\nexport const getProxyPayVolumesSuccess = (response: ProxyPayReportVol) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_VOLUMES_SUCCESS, response)\r\n\r\nexport const getProxyPayVolumesFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_VOLUMES_FAILURE, error)\r\n\r\nexport const getProxyPayRevenuesRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_REVENUES_REQUEST, payload)\r\n\r\nexport const getProxyPayRevenuesSuccess = (response: ProxyPayReportRev) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_REVENUES_SUCCESS, response)\r\n\r\nexport const getProxyPayRevenuesFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_REVENUES_FAILURE, error)\r\n\r\nexport const getProxyPayOpexRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_OPEX_REQUEST, payload)\r\n\r\nexport const getProxyPayOpexSuccess = (response: ProxyPayReportOpex) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_OPEX_SUCCESS, response)\r\n\r\nexport const getProxyPayOpexFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_OPEX_FAILURE, error)\r\n\r\nexport const getProxyPayEbitdaRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_EBITDA_REQUEST, payload)\r\n\r\nexport const getProxyPayEbitdaSuccess = (response: ProxyPayReportEbitda) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_EBITDA_SUCCESS, response)\r\n\r\nexport const getProxyPayEbitdaFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_PROXYPAY_EBITDA_FAILURE, error)\r\n\r\nexport const getPayoutRequest = (payload: any) =>\r\n action(ReportsActionTypes.GET_PAYOUT_REQUEST, payload)\r\n\r\nexport const getPayoutSuccess = (response: PayoutReport | null) =>\r\n action(ReportsActionTypes.GET_PAYOUT_SUCCESS, response)\r\n\r\nexport const getPayoutFailure = (error: any) => action(ReportsActionTypes.GET_PAYOUT_FAILURE, error)\r\n\r\nexport const postPayoutRequest = (payload: PayoutNewRecord) =>\r\n action(ReportsActionTypes.POST_RECORD_REQUEST, payload)\r\n\r\nexport const postPayoutSuccess = () => action(ReportsActionTypes.POST_RECORD_SUCCESS)\r\n\r\nexport const postPayoutFailure = (error: any) =>\r\n action(ReportsActionTypes.POST_RECORD_FAILURE, error)\r\n\r\nexport const clearBooleans = () => action(ReportsActionTypes.CLEAR_BOOLEANS)\r\n\r\nexport const getMerchantsRequest = () => action(ReportsActionTypes.GET_MERCHANTS_REQUEST)\r\n\r\nexport const getMerchantsSuccess = (response: MerchantData[]) =>\r\n action(ReportsActionTypes.GET_MERCHANTS_SUCCESS, response)\r\n\r\nexport const getMerchantsFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_MERCHANTS_FAILURE, error)\r\n\r\nexport const getPayoutFeeRequest = (payload: any) =>\r\n action(ReportsActionTypes.POST_PAYOUT_FEE_REQUEST, payload)\r\n\r\nexport const getPayoutFeeSuccess = (data: Fee) =>\r\n action(ReportsActionTypes.POST_PAYOUT_FEE_SUCCESS, data)\r\n\r\nexport const getPayoutFeeFailure = (error: any) =>\r\n action(ReportsActionTypes.POST_PAYOUT_FEE_FAILURE, error)\r\n\r\nexport const clearFee = () => action(ReportsActionTypes.CLEAR_FEE)\r\n\r\nexport const exportRequest = (payload: any) => action(ReportsActionTypes.EXPORT_REQUEST, payload)\r\n\r\nexport const exportSuccess = (data: DataStream) => action(ReportsActionTypes.EXPORT_SUCCESS, data)\r\n\r\nexport const exportFailure = (error: any) => action(ReportsActionTypes.EXPORT_FAILURE, error)\r\n\r\nexport const downloadReceiptRequest = (payout: any) =>\r\n action(ReportsActionTypes.DOWNLOAD_RECEIPT_REQUEST, payout)\r\n\r\nexport const downloadReceiptSuccess = (data: DataStream) =>\r\n action(ReportsActionTypes.DOWNLOAD_RECEIPT_SUCCESS, data)\r\n\r\nexport const downloadReceiptFailure = (error: any) =>\r\n action(ReportsActionTypes.DOWNLOAD_RECEIPT_FAILURE, error)\r\n\r\nexport const clearData = () => action(ReportsActionTypes.CLEAR_DATA)\r\n\r\nexport const exportPCESRequest = (payload: any) =>\r\n action(ReportsActionTypes.EXPORT_PCES_REQUEST, payload)\r\n\r\nexport const exportPCESSuccess = (data: DataStream) =>\r\n action(ReportsActionTypes.EXPORT_PCES_SUCCESS, data)\r\n\r\nexport const exportPCESFailure = (error: any) =>\r\n action(ReportsActionTypes.EXPORT_PCES_FAILURE, error)\r\n\r\nexport const exportPendingTxRequest = (payload: any) =>\r\n action(ReportsActionTypes.EXPORT_PENDING_TX_REQUEST, payload)\r\n\r\nexport const exportPendingTxSuccess = (data: DataStream) =>\r\n action(ReportsActionTypes.EXPORT_PENDING_TX_SUCCESS, data)\r\n\r\nexport const exportPendingTxFailure = (error: any) =>\r\n action(ReportsActionTypes.EXPORT_PENDING_TX_FAILURE, error)\r\n\r\nexport const getVASServiceRequest = () => action(ReportsActionTypes.GET_VAS_SERVICES_REQUEST)\r\n\r\nexport const getVASServiceSuccess = (response: MerchantData[]) =>\r\n action(ReportsActionTypes.GET_VAS_SERVICES_SUCCESS, response)\r\n\r\nexport const getVASServiceFailure = (error: any) =>\r\n action(ReportsActionTypes.GET_VAS_SERVICES_FAILURE, error)\r\n","import { Transaction, Currency, DataStream, VASTransactionDashboardResponse, CollectionDashboardResponse } from \"../../interfaces\";\r\n\r\nexport enum TransactionTypes {\r\n GET_TRANSACTIONS_REQUEST = \"@@vastransactions/GET_TRANSACTIONS_REQUEST\",\r\n GET_TRANSACTIONS_SUCCESS = \"@@vastransactions/GET_TRANSACTIONS_SUCCESS\",\r\n GET_TRANSACTIONS_FAILURE = \"@@vastransactions/GET_TRANSACTIONS_FAILURE\",\r\n GET_CURRENCIES = \"@@transaction/GET_CURRENCIES\",\r\n GET_CURRENCIES_SUCCESS = \"@@transaction/GET_CURRENCIES_SUCCESS\",\r\n GET_CURRENCIES_FAILURE = \"@@transaction/GET_CURRENCIES_FAILURE\",\r\n EXPORT_TRANSACTIONS_REQUEST = \"@@transaction/EXPORT_TRANSACTIONS_REQUEST\",\r\n EXPORT_TRANSACTIONS_SUCCESS = \"@@transaction/EXPORT_TRANSACTIONS_SUCCESS\",\r\n EXPORT_TRANSACTIONS_FAILURE = \"@@transaction/EXPORT_TRANSACTIONS_FAILURE\",\r\n DOWNLOAD_RECEIPT_REQUEST = \"@@transaction/DOWNLOAD_RECEIPT_REQUEST\",\r\n DOWNLOAD_RECEIPT_SUCCESS = \"@@transaction/DOWNLOAD_RECEIPT_SUCCESS\",\r\n DOWNLOAD_RECEIPT_FAILURE = \"@@transaction/DOWNLOAD_RECEIPT_FAILURE\",\r\n CLEAR_VAS = \"@@vas/CLEAR_VAS\",\r\n GET_VAS_DASHBOARD_REQUEST = \"@@vastransactions/GET_VAS_DASHBOARD_REQUEST\",\r\n GET_VAS_DASHBOARD_SUCCESS = \"@@vastransactions/GET_VAS_DASHBOARD_SUCCESS\",\r\n GET_VAS_DASHBOARD_FAILURE = \"@@vastransactions/GET_VAS_DASHBOARD_FAILURE\",\r\n GET_COLLECTION_DASHBOARD_REQUEST = \"@@vastransactions/GET_COLLECTION_DASHBOARD_REQUEST\",\r\n GET_COLLECTION_DASHBOARD_SUCCESS = \"@@vastransactions/GET_COLLECTION_DASHBOARD_SUCCESS\",\r\n GET_COLLECTION_DASHBOARD_FAILURE = \"@@vastransactions/GET_COLLECTION_DASHBOARD_FAILURE\",\r\n}\r\n\r\nexport type VASTransactionState = {\r\n readonly transactions: Transaction | null;\r\n readonly loading: boolean;\r\n readonly error: any;\r\n readonly currencies: Currency[];\r\n readonly currenciesLoading: boolean;\r\n readonly currencyError: any;\r\n readonly isExporting: boolean;\r\n readonly isExportSuccess: boolean;\r\n readonly isExportError: boolean;\r\n readonly exportStream: DataStream | undefined;\r\n readonly exportError: any;\r\n readonly isRequestingDownload: boolean;\r\n readonly downloadRecieptSuccess: boolean;\r\n readonly downloadRecieptError: boolean;\r\n readonly downloadReceiptStream: DataStream | undefined;\r\n readonly downloadError: any;\r\n readonly vasDashboard: VASTransactionDashboardResponse | null;\r\n readonly vasDashboardLoading: boolean;\r\n readonly vasDashboardError: any;\r\n readonly collectionDashboard: CollectionDashboardResponse | null;\r\n readonly collectionDashboardLoading: boolean;\r\n readonly collectionDashboardError: any;\r\n};\r\n","import { Transaction, Currency, DataStream, TransactionReason } from '../../interfaces';\r\n\r\nexport interface TransactionLogDto {\r\n request: string;\r\n response: string;\r\n transactionId: string;\r\n createdWhen: string;\r\n stepNumber: number;\r\n totalSteps: number;\r\n}\r\n\r\nexport enum TransactionTypes {\r\n GET_TRANSACTIONS_REQUEST = '@@transaction/GET_TRANSACTIONS_REQUEST',\r\n GET_TRANSACTIONS_SUCCESS = '@@transaction/GET_TRANSACTIONS_SUCCESS',\r\n GET_TRANSACTIONS_FAILURE = '@@transaction/GET_TRANSACTIONS_FAILURE',\r\n GET_CURRENCIES = '@@transaction/GET_CURRENCIES',\r\n GET_CURRENCIES_SUCCESS = '@@transaction/GET_CURRENCIES_SUCCESS',\r\n GET_CURRENCIES_FAILURE = '@@transaction/GET_CURRENCIES_FAILURE',\r\n EXPORT_TRANSACTIONS_REQUEST = '@@transaction/EXPORT_TRANSACTIONS_REQUEST',\r\n EXPORT_TRANSACTIONS_SUCCESS = '@@transaction/EXPORT_TRANSACTIONS_SUCCESS',\r\n EXPORT_TRANSACTIONS_FAILURE = '@@transaction/EXPORT_TRANSACTIONS_FAILURE',\r\n DOWNLOAD_RECEIPT_REQUEST = '@@transaction/DOWNLOAD_RECEIPT_REQUEST',\r\n DOWNLOAD_RECEIPT_SUCCESS = '@@transaction/DOWNLOAD_RECEIPT_SUCCESS',\r\n DOWNLOAD_RECEIPT_FAILURE = '@@transaction/DOWNLOAD_RECEIPT_FAILURE',\r\n GET_TRANSACTION_REASONS = '@@transaction/GET_TRANSACTION_REASONS',\r\n GET_TRANSACTION_REASONS_SUCCESS = '@@transaction/GET_TRANSACTION_REASONS_SUCCESS',\r\n GET_TRANSACTION_REASONS_FAILURE = '@@transaction/GET_TRANSACTION_REASONS_FAILURE',\r\n GET_TRANSACTION_LOGS_REQUEST = '@@transaction/GET_TRANSACTION_LOGS_REQUEST',\r\n GET_TRANSACTION_LOGS_SUCCESS = '@@transaction/GET_TRANSACTION_LOGS_SUCCESS',\r\n GET_TRANSACTION_LOGS_FAILURE = '@@transaction/GET_TRANSACTION_LOGS_FAILURE'\r\n}\r\n\r\nexport type TransactionState = {\r\n readonly transactions: Transaction | null;\r\n readonly loading: boolean;\r\n readonly error: any;\r\n readonly currencies: Currency[];\r\n readonly currenciesLoading: boolean;\r\n readonly currencyError: any;\r\n readonly isExporting: boolean;\r\n readonly isExportSuccess: boolean;\r\n readonly isExportError: boolean;\r\n readonly exportStream: DataStream | undefined;\r\n readonly exportError: any;\r\n readonly isRequestingDownload: boolean;\r\n readonly downloadRecieptSuccess: boolean;\r\n readonly downloadRecieptError: boolean;\r\n readonly downloadReceiptStream: DataStream | undefined;\r\n readonly downloadError: any;\r\n readonly transactionsReasons: TransactionReason[] | [];\r\n readonly transactionLogs: TransactionLogDto[] | null;\r\n readonly transactionLogsLoading: boolean;\r\n readonly transactionLogsError: any;\r\n};\r\n","import { User, Error } from '../../interfaces'\r\n\r\nexport enum AuthActionTypes {\r\n IS_SUBMITTING = '@@auth/IS_SUBMITTING',\r\n LOGIN_SUCCESS = '@@auth/LOGIN_SUCCESS',\r\n LOGIN_ERROR = '@@auth/LOGIN_ERROR',\r\n REQUEST_LOGIN_SUBMIT = '@@auth/REQUEST_LOGIN_SUBMIT',\r\n RESET_ERROR_STATE = '@@auth/RESET_ERROR_STATE',\r\n LOG_SINGLE_ERROR = '@@auth/LOG_SINGLE_ERROR',\r\n SET_USER = '@@auth/SET_USER',\r\n DESTROY_STATES = '@@auth/DESTROY_STATES',\r\n CLEAR_AUTH_STATES = '@@auth/CLEAR_AUTH_STATES',\r\n FORGOTTEN_PASSWORD_REQUEST = '@@auth/FORGOTTEN_PASSWORD_REQUEST',\r\n FORGOTTEN_PASSWORD_SUCCESS = '@@auth/FORGOTTEN_PASSWORD_SUCCESS',\r\n FORGOTTEN_PASSWORD_FAILURE = '@@auth/FORGOTTEN_PASSWORD_FAILURE',\r\n RESET_PASSWORD_REQUEST = '@@auth/RESET_PASSWORD_REQUEST',\r\n RESET_PASSWORD_SUCCESS = '@@auth/RESET_PASSWORD_SUCCESS',\r\n RESET_PASSWORD_FAILURE = '@@auth/RESET_PASSWORD_FAILURE'\r\n}\r\n\r\nexport type AuthState = {\r\n readonly isAuthenticated: boolean\r\n readonly isSubmitting: boolean\r\n readonly error: Error | {}\r\n readonly success: boolean\r\n readonly user: User | undefined\r\n readonly singleError: string\r\n\r\n readonly isForgottenPassword: boolean\r\n readonly forgottenPasswordSuccess: boolean\r\n readonly forgottenPasswordError: boolean\r\n readonly forgottenError: any\r\n\r\n readonly isResettingPassword: boolean\r\n readonly resetPasswordSuccess: boolean\r\n readonly resetPasswordError: boolean\r\n readonly resetError: any\r\n}\r\n","import { action } from 'typesafe-actions';\r\nimport { SettingsTypes } from './types';\r\nimport { Client, Register, User, Error, MerchantData, MerchantActivation } from '../../interfaces';\r\nimport { FxCurrency, FxRateRq} from '../../interfaces/FxCurrency';\r\n\r\nexport const getCurrentUser = (userId: number) =>\r\n action(SettingsTypes.GET_CURRENT_USER, userId);\r\n\r\nexport const getCurrentUserSuccess = (data: Client) =>\r\n action(SettingsTypes.GET_CURRENT_USER_SUCCESS, data);\r\n\r\nexport const getCurrentUserFailure = (error: any) =>\r\n action(SettingsTypes.GET_CURRENT_USER_FAILURE, error);\r\n\r\nexport const updateUserRequest = (payload: Client) =>\r\n action(SettingsTypes.EDIT_ACCOUNT_REQUEST, payload);\r\n\r\nexport const updateUserSuccess = (data: Client) =>\r\n action(SettingsTypes.EDIT_ACCOUNT_SUCCESS, data);\r\n\r\nexport const updateUserFailure = (error: any) =>\r\n action(SettingsTypes.EDIT_ACCOUNT_FAILURE, error);\r\n\r\nexport const clearSomeBooleans = () =>\r\n action(SettingsTypes.CLEAR_SOME_BOOLEANS);\r\n\r\nexport const changePasswordRequest = (payload: any) =>\r\n action(SettingsTypes.CHANGE_PASSWORD_REQUEST, payload);\r\n\r\nexport const getAllMerchantsRequest = () =>\r\n action(SettingsTypes.GET_MERCHANTS_REQUEST);\r\n\r\nexport const getAllMerchantsSuccess = (response: MerchantData[]) =>\r\n action(SettingsTypes.GET_MERCHANTS_SUCCESS, response);\r\n\r\nexport const getAllMerchantsFailure = (error: any) =>\r\n action(SettingsTypes.GET_MERCHANTS_FAILURE, error);\r\n\r\nexport const updateMerchantStatusRequest = (payload: MerchantActivation) =>\r\n action(SettingsTypes.UPDATE_MERCHANT_STATUS_REQUEST, payload);\r\n\r\nexport const updateMerchantStatusSuccess = (response: any) =>\r\n action(SettingsTypes.UPDATE_MERCHANT_STATUS_SUCCESS, response);\r\n\r\nexport const updateMerchantStatusFailure = (error: string) =>\r\n action(SettingsTypes.UPDATE_MERCHANT_STATUS_FAILURE, error);\r\n\r\nexport const changePasswordSuccess = () =>\r\n action(SettingsTypes.CHANGE_PASSWORD_SUCCESS);\r\n\r\nexport const changePasswordFailure = (error: any) =>\r\n action(SettingsTypes.CHANGE_PASSWORD_FAILURE, error);\r\n\r\nexport const createMerchantRequest = (payload: Register) =>\r\n action(SettingsTypes.REGISTER_MERCHANT_REQUEST, payload);\r\n\r\nexport const createMerchantSuccess = (user: User) =>\r\n action(SettingsTypes.REGISTER_MERCHANT_SUCCESS, user);\r\n\r\nexport const createMerchantFailure = (error: Error) =>\r\n action(SettingsTypes.REGISTER_MERCHANT_FAILURE, error);\r\n\r\nexport const logError = (error: string) =>\r\n action(SettingsTypes.LOG_SINGLE_ERROR, error);\r\n\r\nexport const getFxRateRequest = () =>\r\n action(SettingsTypes.FX_RATE_REQUEST);\r\n\r\nexport const getFxRateSuccess = (response: FxCurrency[]) =>\r\n action(SettingsTypes.FX_RATE_SUCCESS, response);\r\n\r\nexport const getFxRateFailure = (error: any) =>\r\n action(SettingsTypes.FX_RATE_FAILURE, error);\r\n\r\nexport const updateFxRateRequest = (payload: FxRateRq) =>\r\n action(SettingsTypes.UPDATE_FX_RATE_REQUEST, payload);\r\n\r\nexport const addFxRateRequest= (payload: FxRateRq) =>\r\n action(SettingsTypes.ADD_FX_RATE_REQUEST, payload);\r\n\r\nexport const createFxRateSuccess= (payload: FxRateRq) =>\r\n action(SettingsTypes.ADD_FX_RATE_SUCCESS, payload);\r\n\r\nexport const createFxRateFailure= (payload: FxRateRq) =>\r\n action(SettingsTypes.ADD_FX_RATE_FAILURE, payload);\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry); \r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n}\r\n\r\nexport default reportWebVitals;\r\n","export const path = {\r\n home: \"/\",\r\n dashboard: \"/dashboard\",\r\n tranasctions: \"/transactions\",\r\n bulkPayment: \"/bulkPayment\",\r\n paymentPages: \"/payment-pages\",\r\n file: \"/file\",\r\n page: \"/page\",\r\n login: \"/auth/login\",\r\n pay: \"/pay\",\r\n example: \"/example-pay\",\r\n payment: \"/payment\",\r\n myPayouts: \"/my-payouts\",\r\n merchantsOverview: \"/merchants-overview\",\r\n vasProcessed: \"/vas-processed\",\r\n merchantPayouts: \"/merchants-payouts\",\r\n settings: \"/settings\",\r\n feeReports: \"/fee-reports\",\r\n proxyPaySubscribers: \"/proxypay-subscribers\",\r\n proxyPayTransactions: \"/proxypay-transactions\",\r\n proxyPayVolumes: \"/proxypay-volumes\",\r\n proxyPayOverview: \"/proxypay-overview\",\r\n payouts: \"/payouts\",\r\n pendingTransactions: \"/pending-transactions\",\r\n merchantsChannels: \"/merchants-channels\",\r\n forgottenPasssword: \"/auth/forgotten-password\",\r\n resetPassword: \"/auth/reset-password\",\r\n b2ctransactions: \"/b2ctransactions\",\r\n vasTransactions: \"/vas-transactions\",\r\n pendingPayments: \"/bulkpayment-pages\",\r\n socodee: \"/socodee\",\r\n snel: \"/snel\",\r\n allocateFunds: \"/allocate-funds\",\r\n accounts: \"/accounts\",\r\n};\r\n","export default __webpack_public_path__ + \"static/media/logo_symbol.2093e56b.png\";","export default __webpack_public_path__ + \"static/media/logo_transparent_background.5c3138ee.png\";","export enum UtilsActionTypes {\r\n SET_ACTIVE_MENU = '@@utils/SET_ACTIVE_MENU',\r\n SET_MENU_HEADER = '@@utils/SET_MENU_HEADER',\r\n}\r\n\r\nexport type UtilsState = {\r\n readonly activeMenu: string;\r\n readonly menuHeader: string;\r\n};\r\n","export const menu = {\r\n DASHBOARD: \"dashboard\",\r\n DASHBOARD_YEARLY: \"Dashboard Yearly\",\r\n DASHBOARD_DAILY: \"Dashboard Daily\",\r\n DASHBOARD_WEEKLY: \"Dashboard Weekly\",\r\n DASHBOARD_MONTHLY: \"Dashboard Monthly\",\r\n TRANSACTIONS: \"transactionsOverview\",\r\n BULK_PAYMENT: \"bulkPayment\",\r\n BULK_PAYMENTS: \"bulkPayments\",\r\n PAYMENT_PAGES: \"paymentPage\",\r\n MERCHANT_PAYOUTS: \"merchantPayouts\",\r\n VAS_PROCESSED: \"VASProcessed\",\r\n FEE_REPORTS: \"FEEReports\",\r\n PENDING_TRANSACTIONS: \"Pending Transactions\",\r\n SETTINGS: \"settings\",\r\n MY_PAYOUTS: \"My Payouts\",\r\n MERCHANT_OVERVIEW: \"merchantOverview\",\r\n PROXYPAY_REPORTS: \"ProxyPay Reports\",\r\n PROXYPAY_SUBSCRIBERS: \" Subscribers\",\r\n PROXYPAY_TRANSACTIONS: \"Transactions\",\r\n PROXYPAY_VOLUMES: \"Volumes\",\r\n PROXYPAY_OVERVIEW: \"Overview\",\r\n PAYOUTS: \"payouts\",\r\n MERCHANT_CHANNELS: \"Merchants Channels\",\r\n B2CTRANSACTIONS: \"B2C Transactions\",\r\n VASTRANSACTIONS: \"VAS Transactions\",\r\n PENDINGPAYMENTS: \"pendingBulkPayment\",\r\n BILLERS: \"billers\",\r\n SOCODEE: \"socodee\",\r\n SNEL: \"snel\",\r\n Allocate_Funds: \"Allocate_Funds\",\r\n Accounts: \"account\",\r\n};\r\n\r\nexport const menuHeadings = {\r\n DASHBOARD: \"dashboard\",\r\n PAYMENTS: \"payments\",\r\n COMMERCE: \"commerce\",\r\n REPORTS: \"reports\",\r\n CONFIGURATION: \"configurations\",\r\n PAYOUTS: \"payouts\",\r\n PENDINGTRANSACTIONS: \"Pending Transactions\",\r\n B2CTRANSACTIONS: \"B2C Transactions\",\r\n PENDINGPAYMENTS: \"Pending Payments\",\r\n Allocate_Funds: \"Allocate_Funds\",\r\n Accounts: \"account\"\r\n};\r\n","import { Reducer } from 'redux';\r\nimport { UtilsState, UtilsActionTypes } from './types';\r\nimport { menu, menuHeadings } from '../../helpers/menu';\r\nimport { AuthActionTypes } from '../auth';\r\n\r\nexport const initialState: UtilsState = {\r\n activeMenu: menu.DASHBOARD,\r\n menuHeader: menuHeadings.DASHBOARD,\r\n};\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case UtilsActionTypes.SET_ACTIVE_MENU:\r\n return {\r\n ...state,\r\n activeMenu: action.payload,\r\n };\r\n case UtilsActionTypes.SET_MENU_HEADER:\r\n return {\r\n ...state,\r\n menuHeader: action.payload,\r\n };\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as utilsReducer };\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { Layout, Menu, Image, Button } from \"antd\";\r\nimport * as FeatherIcons from \"react-feather\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport logo from \"../../images/logo_symbol.png\";\r\nimport logo2 from \"../../images/logo_transparent_background.png\";\r\nimport { changeMenu, changeMenuHeader } from \"../../store/utils\";\r\nimport { menu, menuHeadings } from \"../../helpers/menu\";\r\nimport { appSelector } from \"../../helpers/appSelector\";\r\nimport { AppDispatch } from \"../../helpers/appDispatch\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { roles } from \"../../helpers/constants\";\r\nimport SubMenu from \"antd/lib/menu/SubMenu\";\r\n\r\ninterface SideNavProps {\r\n collapsed: boolean;\r\n onCollapsed(): void;\r\n}\r\n\r\nconst { Sider } = Layout;\r\n\r\nexport const SideNav: React.FC = ({ collapsed, onCollapsed }) => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const utils = appSelector((state) => state.utils);\r\n const [activeMenu, setActiveMenu] = useState(utils.activeMenu);\r\n const { user } = appSelector((state) => state.auth);\r\n let role;\r\n\r\n if (user) {\r\n role = user.roles.find((r) => r === roles.SuperMerchant);\r\n } else {\r\n role = roles.SuperMerchant;\r\n }\r\n\r\n useEffect(() => {\r\n const { activeMenu } = utils;\r\n setActiveMenu(activeMenu);\r\n }, [utils]);\r\n\r\n const switchMenu = (menu: string, header: string) => {\r\n dispatch(changeMenu(menu));\r\n dispatch(changeMenuHeader(header));\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n }\r\n onClick={() => switchMenu(menu.DASHBOARD, menuHeadings.DASHBOARD)}\r\n >\r\n {t(`general.dashboard`)}\r\n \r\n \r\n \r\n \r\n }\r\n onClick={() => switchMenu(menu.TRANSACTIONS, menuHeadings.PAYMENTS)}\r\n >\r\n \r\n {t(\"general.transactions\")}\r\n \r\n \r\n \r\n }\r\n onClick={() =>\r\n switchMenu(menu.VASTRANSACTIONS, menuHeadings.REPORTS)\r\n }\r\n >\r\n \r\n {t(\"general.vas\")}\r\n \r\n \r\n {/* \r\n }\r\n onClick={() =>\r\n switchMenu(menu.B2CTRANSACTIONS, menuHeadings.REPORTS)\r\n }\r\n >\r\n \r\n {t(\"general.B2C Transactions\")}\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n { \r\n }\r\n onClick={() =>\r\n switchMenu(menu.BULK_PAYMENT, menuHeadings.PAYMENTS)\r\n }\r\n >\r\n \r\n {t(\"general.newBulkPayment\")}\r\n \r\n }\r\n\r\n \r\n }\r\n onClick={() =>\r\n switchMenu(menu.PENDINGPAYMENTS, menuHeadings.PAYMENTS)\r\n }\r\n >\r\n \r\n {t(\"general.pendingBulkPayment\")}\r\n \r\n \r\n \r\n */}\r\n\r\n \r\n }\r\n onClick={() =>\r\n switchMenu(\r\n menu.PENDING_TRANSACTIONS,\r\n menuHeadings.PENDINGTRANSACTIONS\r\n )\r\n }\r\n >\r\n \r\n {t(\"general.PendingTransactions\")}\r\n \r\n \r\n\r\n {role !== undefined && role === roles.SuperMerchant ? (\r\n \r\n }\r\n onClick={() =>\r\n switchMenu(\r\n menu.Allocate_Funds,\r\n menuHeadings.Allocate_Funds\r\n )\r\n }\r\n >\r\n \r\n {t(\"general.Allocate_Funds\")}\r\n \r\n \r\n ): null}\r\n \r\n {/* \r\n }\r\n >\r\n \r\n \r\n }\r\n onClick={() => switchMenu(menu.SOCODEE, menuHeadings.PAYMENTS)}\r\n >\r\n {t(\"general.socodee\")}\r\n \r\n\r\n \r\n }\r\n onClick={() => switchMenu(menu.SNEL, menuHeadings.PAYMENTS)}\r\n >\r\n {t(\"general.snel\")}\r\n \r\n \r\n \r\n */}\r\n \r\n \r\n }\r\n onClick={() =>\r\n switchMenu(menu.PAYMENT_PAGES, menuHeadings.COMMERCE)\r\n }\r\n >\r\n \r\n {t(\"general.paymentPages\")}\r\n \r\n \r\n \r\n {/* \r\n \r\n }\r\n onClick={() => switchMenu(menu.PAYOUTS, menuHeadings.PAYOUTS)}\r\n >\r\n {t('general.payouts')}\r\n \r\n */}\r\n {role !== undefined && role === roles.SuperMerchant ? (\r\n \r\n \r\n }\r\n onClick={() =>\r\n switchMenu(menu.MERCHANT_OVERVIEW, menuHeadings.REPORTS)\r\n }\r\n >\r\n \r\n {t(\"general.merchantOverview\")}\r\n \r\n \r\n\r\n \r\n }\r\n onClick={() =>\r\n switchMenu(menu.MERCHANT_CHANNELS, menuHeadings.REPORTS)\r\n }\r\n >\r\n \r\n {t(\"general.Merchants Channels\")}\r\n \r\n \r\n\r\n \r\n }\r\n onClick={() =>\r\n switchMenu(menu.VAS_PROCESSED, menuHeadings.REPORTS)\r\n }\r\n >\r\n \r\n {t(\"general.VASProcessed\")}\r\n \r\n \r\n\r\n \r\n }\r\n onClick={() => switchMenu(menu.FEE_REPORTS, menuHeadings.REPORTS)}\r\n >\r\n {t(\"general.FEEReports\")}\r\n \r\n \r\n ) : null}\r\n \r\n \r\n }\r\n onClick={() =>\r\n switchMenu(menu.SETTINGS, menuHeadings.CONFIGURATION)\r\n }\r\n >\r\n {t(\"general.settings\")}\r\n \r\n \r\n \r\n {!collapsed && (\r\n
\r\n

{t(\"general.menuInfo\")}

\r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n","import { action } from 'typesafe-actions';\r\nimport { UtilsActionTypes } from './types';\r\n\r\nexport const changeMenu = (menu: string) =>\r\n action(UtilsActionTypes.SET_ACTIVE_MENU, menu);\r\n\r\nexport const changeMenuHeader = (header: string) =>\r\n action(UtilsActionTypes.SET_MENU_HEADER, header);\r\n","import s from 'secure-ls';\r\n\r\nexport const secure = new s({ encodingType: 'aes', isCompression: false });\r\n","import React, { useState, useCallback } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Layout, Menu, Dropdown, Button, Row, Col } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { UserOutlined, DownOutlined /*, BellOutlined*/ } from '@ant-design/icons'\r\nimport * as FeatherIcons from 'react-feather'\r\nimport { logout } from '../../store/auth/actions'\r\nimport { secure } from '../../utils/secure'\r\nimport { AppDispatch } from '../../helpers/appDispatch'\r\nimport { appSelector } from '../../helpers/appSelector'\r\n\r\ninterface TopNavProps {\r\n collapsed: boolean\r\n toggle(): void\r\n}\r\n\r\nexport const TopNav: React.FC = ({ collapsed, toggle }) => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { Header } = Layout\r\n const { t, i18n } = useTranslation()\r\n const [active, setActive] = useState(localStorage.getItem('i18nextLng'))\r\n const { activeMenu, menuHeader } = appSelector((state) => state.utils)\r\n\r\n const logoutUser = () => {\r\n secure.removeAll()\r\n dispatch(logout())\r\n }\r\n\r\n const onChangeLanguage = useCallback(\r\n (lang: string) => {\r\n i18n.changeLanguage(lang)\r\n setActive(lang)\r\n },\r\n [i18n]\r\n )\r\n\r\n const menuLanguages = (\r\n \r\n onChangeLanguage('en')}>\r\n EN\r\n \r\n onChangeLanguage('fr')}>\r\n FR\r\n \r\n \r\n )\r\n\r\n const settingsMenu = (\r\n \r\n logoutUser()}>\r\n {t('general.logout')}\r\n \r\n \r\n )\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n

{t(`general.${menuHeader}`)}

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

{t(`general.${activeMenu}`)}

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {/* \r\n \r\n */}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Layout } from 'antd';\r\n\r\ninterface FooterLayoutProps {}\r\n\r\nconst { Footer } = Layout;\r\n\r\nexport const FooterLayout: React.FC = () => {\r\n return (\r\n
\r\n

PCES

\r\n

\r\n Copyright © 2020 - {new Date().getFullYear()} |{' '}\r\n Privacy Policy\r\n

\r\n
\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { Layout, Divider } from 'antd';\r\nimport { appSelector } from '../helpers/appSelector';\r\nimport { path } from '../helpers/path';\r\n// import { SideBar } from '../components/menu/SideBar';\r\nimport { SideNav } from '../components/menu/SideNav';\r\n// import { TopBar } from '../components/menu/TopBar';\r\nimport { TopNav } from '../components/menu/TopNav';\r\nimport { FooterLayout as Footer } from '../components/menu/Footer';\r\n\r\nconst PrivateRoute: React.FC = ({ component: Component, ...rest }) => {\r\n const auth = appSelector((state) => state.auth);\r\n const { isAuthenticated } = auth;\r\n const [collapsed, setCollapsed] = useState(false);\r\n\r\n const toggle = () => {\r\n setCollapsed(!collapsed);\r\n };\r\n\r\n return (\r\n \r\n \r\n isAuthenticated ? (\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\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 { PrivateRoute };\r\n","import { Account, OrderResponse, TransactionReport } from '../../interfaces'\r\n\r\nexport enum HomeTypes {\r\n IS_SUBMITTING = '@@home/IS_SUBMITTING',\r\n REQUEST_PAYMENT = '@@home/REQUEST_PAYMENT',\r\n REQUEST_PAYMENT_FAILURE = '@@home/REQUEST_PAYMENT_ERROR',\r\n REQUEST_PAYMENT_SUCCESS = '@@home/REQUEST_PAYMENT_SUCCESS',\r\n CLEAR_PAYMENT_DATA = '@@home/CLEAR_PAYMENT_DATA',\r\n GET_OVERVIEW_REQUEST = '@@home/GET_OVERVIEW_REQUEST',\r\n GET_OVERVIEW_SUCCESS = '@@home/GET_OVERVIEW_SUCCESS',\r\n GET_OVERVIEW_FAILURE = '@@home/GET_OVERVIEW_FAILURE',\r\n PAYMENT_REQUEST = '@@home/PAYMENT_REQUEST',\r\n PAYMENT_SUCCESS = '@@home/PAYMENT_SUCCESS',\r\n PAYMENT_FAILURE = '@@home/PAYMENT_FAILURE',\r\n MOBILE_PAYMENT_REQUEST = '@@home/MOBILE_PAYMENT_REQUEST',\r\n MOBILE_PAYMENT_SUCCESS = '@@home/MOBILE_PAYMENT_SUCCESS',\r\n MOBILE_PAYMENT_FAILURE = '@@home/MOBILE_PAYMENT_FAILURE',\r\n MOBILE_STATUS_REQUEST = '@@home/MOBILE_STATUS_REQUEST',\r\n MOBILE_STATUS_SUCCESS = '@@home/MOBILE_STATUS_SUCCESS',\r\n MOBILE_STATUS_FAILURE = '@@home/MOBILE_STATUS_FAILURE',\r\n ACCOUNTS_BALANCE_REQUEST = '@@home/ACCOUNTS_BALANCE_REQUEST',\r\n ACCOUNTS_BALANCE_SUCCESS = '@@home/ACCOUNTS_BALANCE_SUCCESS',\r\n ACCOUNTS_BALANCE_FAILURE = '@@home/ACCOUNTS_BALANCE_FAILURE',\r\n MERCHANT_VAS_ACCOUNTS_BALANCE_REQUEST = '@@home/MERCHANT_VAS_ACCOUNTS_BALANCE_REQUEST',\r\n MERCHANT_VAS_ACCOUNTS_BALANCE_SUCCESS = '@@home/MERCHANT_VAS_ACCOUNTS_BALANCE_SUCCESS'\r\n}\r\n\r\nexport type HomeState = {\r\n readonly isSubmitting: boolean\r\n readonly error: any\r\n readonly isPaymentSuccess: boolean\r\n readonly isPaymentFailure: boolean\r\n readonly orderResponse: OrderResponse | undefined\r\n readonly loading: boolean\r\n readonly trxReports: TransactionReport | null\r\n readonly submitted: boolean\r\n readonly mobileResponse: any\r\n readonly mobilePaymentSuccess: boolean\r\n readonly mobilePaymentProcessing: boolean\r\n readonly mobilePaymentSubmit: boolean\r\n readonly trxStatus: any\r\n readonly loadingAccounts: boolean\r\n readonly accounts: Account[]\r\n readonly merchantAccounts: Account[]\r\n}\r\n","import { Reducer } from 'redux'\r\nimport { HomeState, HomeTypes } from './types'\r\nimport { AuthActionTypes } from '../auth'\r\n\r\nexport const initialState: HomeState = {\r\n error: undefined,\r\n isPaymentFailure: false,\r\n isPaymentSuccess: false,\r\n isSubmitting: false,\r\n orderResponse: undefined,\r\n loading: false,\r\n trxReports: null,\r\n submitted: false,\r\n mobileResponse: null,\r\n mobilePaymentSuccess: false,\r\n mobilePaymentProcessing: false,\r\n mobilePaymentSubmit: false,\r\n trxStatus: null,\r\n loadingAccounts: false,\r\n accounts: [],\r\n merchantAccounts: []\r\n}\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState\r\n\r\n case HomeTypes.REQUEST_PAYMENT:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: {},\r\n isPaymentSuccess: false,\r\n isPaymentFailure: false,\r\n orderResponse: undefined\r\n }\r\n case HomeTypes.REQUEST_PAYMENT_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: {},\r\n isPaymentSuccess: true,\r\n isPaymentFailure: false,\r\n orderResponse: action.payload\r\n }\r\n case HomeTypes.REQUEST_PAYMENT_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n isPaymentSuccess: false,\r\n isPaymentFailure: true,\r\n orderResponse: undefined,\r\n submitted: false\r\n }\r\n case HomeTypes.CLEAR_PAYMENT_DATA:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: undefined,\r\n isPaymentSuccess: false,\r\n isPaymentFailure: false,\r\n orderResponse: undefined,\r\n trxReports: null,\r\n trxStatus: null,\r\n mobilePaymentSuccess: false,\r\n mobileResponse: null\r\n }\r\n case HomeTypes.GET_OVERVIEW_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined\r\n }\r\n case HomeTypes.GET_OVERVIEW_SUCCESS:\r\n return {\r\n ...state,\r\n trxReports: action.payload,\r\n loading: false\r\n }\r\n case HomeTypes.GET_OVERVIEW_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload\r\n }\r\n\r\n case HomeTypes.PAYMENT_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: initialState.error\r\n }\r\n\r\n case HomeTypes.PAYMENT_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: initialState.isSubmitting,\r\n submitted: true\r\n }\r\n\r\n case HomeTypes.PAYMENT_FAILURE:\r\n return {\r\n ...state,\r\n isSubmit: initialState.isSubmitting,\r\n error: action.payload,\r\n submitted: initialState.submitted\r\n }\r\n\r\n case HomeTypes.MOBILE_PAYMENT_REQUEST:\r\n return {\r\n ...state,\r\n mobilePaymentSubmit: true,\r\n error: undefined\r\n }\r\n\r\n case HomeTypes.MOBILE_PAYMENT_SUCCESS:\r\n return {\r\n ...state,\r\n mobilePaymentSubmit: false,\r\n mobileResponse: action.payload,\r\n mobilePaymentSuccess: true\r\n }\r\n\r\n case HomeTypes.MOBILE_PAYMENT_FAILURE:\r\n return {\r\n ...state,\r\n mobilePaymentSubmit: false,\r\n error: action.payload,\r\n mobilePaymentSuccess: false\r\n }\r\n\r\n case HomeTypes.MOBILE_STATUS_REQUEST:\r\n return {\r\n ...state,\r\n mobilePaymentProcessing: true,\r\n error: undefined\r\n }\r\n\r\n case HomeTypes.MOBILE_STATUS_SUCCESS:\r\n return {\r\n ...state,\r\n mobilePaymentProcessing: false,\r\n trxStatus: action.payload\r\n }\r\n\r\n case HomeTypes.MOBILE_STATUS_FAILURE:\r\n return {\r\n ...state,\r\n mobilePaymentProcessing: false,\r\n error: action.payload\r\n }\r\n\r\n case HomeTypes.ACCOUNTS_BALANCE_REQUEST:\r\n return {\r\n ...state,\r\n loadingAccounts: true,\r\n error: undefined\r\n }\r\n \r\n case HomeTypes.ACCOUNTS_BALANCE_SUCCESS:\r\n return {\r\n ...state,\r\n accounts: action.payload,\r\n loadingAccounts: false,\r\n error: undefined\r\n }\r\n \r\n case HomeTypes.ACCOUNTS_BALANCE_FAILURE:\r\n return {\r\n ...state,\r\n loadingAccounts: false,\r\n error: action.payload\r\n }\r\n case HomeTypes.MERCHANT_VAS_ACCOUNTS_BALANCE_SUCCESS:\r\n return {\r\n ...state,\r\n merchantAccounts: action.payload,\r\n loadingAccounts: false,\r\n error: undefined\r\n }\r\n case HomeTypes.MERCHANT_VAS_ACCOUNTS_BALANCE_REQUEST:\r\n return {\r\n ...state,\r\n loadingAccounts: true,\r\n error: undefined\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport { reducer as homeReducer }\r\n","import { action } from 'typesafe-actions'\r\nimport { HomeTypes } from './types'\r\nimport { Merchant, OrderResponse, TransactionReport } from '../../interfaces'\r\n\r\nexport const paymentRequest = (payload: Merchant) =>\r\n action(HomeTypes.REQUEST_PAYMENT, payload)\r\n\r\nexport const paymentSuccess = (response: OrderResponse) =>\r\n action(HomeTypes.REQUEST_PAYMENT_SUCCESS, response)\r\n\r\nexport const paymentFailure = (error: any) =>\r\n action(HomeTypes.REQUEST_PAYMENT_FAILURE, error)\r\n\r\nexport const clearPaymentData = () => action(HomeTypes.CLEAR_PAYMENT_DATA)\r\n\r\nexport const getOverviewRequest = (payload: any) =>\r\n action(HomeTypes.GET_OVERVIEW_REQUEST, payload)\r\n\r\nexport const getOverviewSuccess = (data: TransactionReport) =>\r\n action(HomeTypes.GET_OVERVIEW_SUCCESS, data)\r\n\r\nexport const getOverviewFailure = (error: any) =>\r\n action(HomeTypes.GET_OVERVIEW_FAILURE, error)\r\n\r\nexport const paymentRequestAlt = (payload: any) =>\r\n action(HomeTypes.PAYMENT_REQUEST, payload)\r\n\r\nexport const paymentSuccessAlt = () => action(HomeTypes.PAYMENT_SUCCESS)\r\n\r\nexport const paymentFailureAlt = (error: string) =>\r\n action(HomeTypes.PAYMENT_FAILURE, error)\r\n\r\nexport const mobilePaymentRequest = (payload: any) =>\r\n action(HomeTypes.MOBILE_PAYMENT_REQUEST, payload)\r\n\r\nexport const mobilePaymentSuccess = (data: any) =>\r\n action(HomeTypes.MOBILE_PAYMENT_SUCCESS, data)\r\n\r\nexport const mobilePaymentFailure = (error: string) =>\r\n action(HomeTypes.MOBILE_PAYMENT_FAILURE, error)\r\n\r\nexport const checkMobileStatusRequest = (payload: any) =>\r\n action(HomeTypes.MOBILE_STATUS_REQUEST, payload)\r\n\r\nexport const checkMobileStatusSuccess = (data: any) =>\r\n action(HomeTypes.MOBILE_STATUS_SUCCESS, data)\r\n\r\nexport const checkMobileStatusFailure = (error: string) =>\r\n action(HomeTypes.MOBILE_STATUS_FAILURE, error)\r\n\r\nexport const getAccountsBalanceRequest = (payload: string) =>\r\n action(HomeTypes.ACCOUNTS_BALANCE_REQUEST, payload)\r\n\r\nexport const getAccountsBalanceSuccess = (data: any) =>\r\n action(HomeTypes.ACCOUNTS_BALANCE_SUCCESS, data)\r\n\r\nexport const getAccountsBalanceFailure = (data: any) =>\r\n action(HomeTypes.ACCOUNTS_BALANCE_FAILURE, data)\r\n\r\nexport const getMerchantVASAccountBalance = (payload: string) =>\r\n action(HomeTypes.MERCHANT_VAS_ACCOUNTS_BALANCE_REQUEST, payload)\r\n\r\nexport const getMerchantVASAccountBalanceSuccess = (payload: string) =>\r\n action(HomeTypes.MERCHANT_VAS_ACCOUNTS_BALANCE_SUCCESS, payload)","import React, { lazy, Suspense, useEffect, useState, useCallback } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useDispatch } from 'react-redux'\r\nimport { Layout, Spin, Row } from 'antd'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { TransactionReport } from '../interfaces'\r\nimport { getOverviewRequest, clearPaymentData } from '../store/home'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { getCurrentUser } from '../store/settings'\r\n\r\nconst Overview = lazy(() => import('../components/dashboard/Overview'))\r\nconst DashboardStats = lazy(() => import('../components/dashboard/DashboardStats'))\r\nconst EmptyBox = lazy(() => import('../components/dashboard/EmptyBox'))\r\n\r\nconst { Content } = Layout\r\n\r\nconst Dashboard = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const { user } = appSelector((state) => state.auth)\r\n const { client } = appSelector((state) => state.settings)\r\n const home = appSelector((state) => state.home)\r\n const { vasDashboard, collectionDashboard } = appSelector((state) => state.vasTransaction)\r\n const [loading, setLoading] = useState(false)\r\n const [currency, setCurrency] = useState('USD')\r\n const [fixedPeriod, setFixedPeriod] = useState('TODAY')\r\n const [trxReports, setTrxReports] = useState(null)\r\n const [params] = useState({\r\n currency: currency,\r\n fixedPeriod: fixedPeriod\r\n })\r\n\r\n useEffect(() => {\r\n if (user && isEmpty(client)) {\r\n dispatch(getCurrentUser(user.userId))\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { loading, trxReports } = home\r\n setLoading(loading)\r\n setTrxReports(trxReports)\r\n }, [home])\r\n\r\n const onReloadTransaction = useCallback(() => {\r\n dispatch(clearPaymentData())\r\n dispatch(getOverviewRequest(params))\r\n }, [dispatch, params])\r\n\r\n const onSelectCurrency = useCallback(\r\n (value: string) => {\r\n setCurrency(value)\r\n },\r\n []\r\n )\r\n\r\n const onSelectPeriod = useCallback(\r\n (value: string) => {\r\n setFixedPeriod(value)\r\n },\r\n []\r\n )\r\n\r\n const onRefreshPage = useCallback(() => {\r\n dispatch(getOverviewRequest(params))\r\n }, [dispatch, params])\r\n\r\n let container: React.ReactNode\r\n if (loading) {\r\n container = (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n if (!loading && !trxReports) {\r\n container = (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n {/* {container}\r\n {!loading && trxReports && (\r\n \r\n )} */}\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default withRouter(Dashboard)\r\n","import { Reducer } from 'redux';\r\nimport { TransactionState, TransactionTypes } from './types';\r\nimport { AuthActionTypes } from '../auth';\r\n\r\nexport const initialState: TransactionState = {\r\n currencies: [],\r\n currenciesLoading: false,\r\n currencyError: undefined,\r\n error: undefined,\r\n loading: false,\r\n transactions: null,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportSuccess: false,\r\n isExportError: false,\r\n exportError: undefined,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: false,\r\n isRequestingDownload: false,\r\n downloadError: undefined,\r\n transactionsReasons: [],\r\n transactionLogs: null,\r\n transactionLogsLoading: false,\r\n transactionLogsError: null,\r\n};\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case TransactionTypes.GET_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n transactions: action.payload,\r\n loading: false,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n case TransactionTypes.GET_CURRENCIES:\r\n return {\r\n ...state,\r\n currenciesLoading: true,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_SUCCESS:\r\n return {\r\n ...state,\r\n currencies: action.payload,\r\n currenciesLoading: false,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_FAILURE:\r\n return {\r\n ...state,\r\n currenciesLoading: false,\r\n currencyError: action.payload,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload,\r\n };\r\n case TransactionTypes.DOWNLOAD_RECEIPT_REQUEST:\r\n return {\r\n ...state,\r\n isRequestingDownload: true,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: action.payload,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: true,\r\n downloadError: undefined,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_FAILURE:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: true,\r\n downloadRecieptSuccess: false,\r\n downloadError: action.payload,\r\n };\r\n case TransactionTypes.GET_TRANSACTION_REASONS_SUCCESS:\r\n return {\r\n ...state,\r\n transactionsReasons: action.payload,\r\n };\r\n case TransactionTypes.GET_TRANSACTION_LOGS_REQUEST:\r\n return {\r\n ...state,\r\n transactionLogsLoading: true,\r\n transactionLogsError: null,\r\n };\r\n case TransactionTypes.GET_TRANSACTION_LOGS_SUCCESS:\r\n return {\r\n ...state,\r\n transactionLogs: action.payload,\r\n transactionLogsLoading: false,\r\n };\r\n case TransactionTypes.GET_TRANSACTION_LOGS_FAILURE:\r\n return {\r\n ...state,\r\n transactionLogsError: action.payload,\r\n transactionLogsLoading: false,\r\n };\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as transactionReducer };\r\n","import { Reducer } from 'redux'\r\nimport { ReportsState, ReportsActionTypes } from './types'\r\nimport { AuthActionTypes } from '../auth'\r\nimport { proxyPayDataTypes } from '../../helpers/constants'\r\n\r\nexport const initialState: ReportsState = {\r\n loading: false,\r\n error: undefined,\r\n failure: false,\r\n loadingSub: false,\r\n loadingTrx: false,\r\n loadingVol: false,\r\n loadingRev: false,\r\n loadingOpex: false,\r\n loadingEbitda: false,\r\n payouts: null,\r\n pces: null,\r\n pendingtransactions: null,\r\n proxypaySubscribers: null,\r\n proxypayTransactions: null,\r\n proxypayVolumes: null,\r\n proxypayRevenues: null,\r\n proxypayOpex: null,\r\n proxypayEbitda: null,\r\n success: false,\r\n isSubmitting: false,\r\n merchants: [],\r\n fee: undefined,\r\n feeError: undefined,\r\n feeLoading: false,\r\n exportError: undefined,\r\n exportStream: undefined,\r\n isExportError: false,\r\n isExportSuccess: false,\r\n isExporting: false,\r\n downloadError: undefined,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: false,\r\n isRequestingDownload: false,\r\n errorEbitda: undefined,\r\n errorOpex: undefined,\r\n errorRev: undefined,\r\n errorSub: undefined,\r\n errorTrx: undefined,\r\n errorVol: undefined,\r\n dataType: proxyPayDataTypes.subscribers,\r\n isLoaded: false,\r\n vasservices: []\r\n}\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState\r\n case ReportsActionTypes.GET_PCES_REQUEST:\r\n case ReportsActionTypes.GET_PENDING_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n case ReportsActionTypes.GET_PCES_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n pces: action.payload\r\n }\r\n case ReportsActionTypes.GET_PCES_FAILURE:\r\n case ReportsActionTypes.GET_PENDING_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload\r\n }\r\n case ReportsActionTypes.GET_PENDING_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n pendingtransactions: action.payload\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_SUBSCRIBERS_REQUEST:\r\n return {\r\n ...state,\r\n loadingSub: true,\r\n isLoaded: false\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_SUBSCRIBERS_SUCCESS:\r\n return {\r\n ...state,\r\n loadingSub: false,\r\n proxypaySubscribers: action.payload,\r\n isLoaded: true,\r\n dataType: proxyPayDataTypes.subscribers\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_SUBSCRIBERS_FAILURE:\r\n return {\r\n ...state,\r\n loadingSub: false,\r\n error: action.payload\r\n }\r\n\r\n case ReportsActionTypes.GET_PROXYPAY_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n loadingTrx: true,\r\n isLoaded: false\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n loadingTrx: false,\r\n proxypayTransactions: action.payload,\r\n isLoaded: true,\r\n dataType: proxyPayDataTypes.transactions\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n loadingTrx: false,\r\n error: action.payload\r\n }\r\n\r\n case ReportsActionTypes.GET_PROXYPAY_VOLUMES_REQUEST:\r\n return {\r\n ...state,\r\n loadingVol: true,\r\n isLoaded: false\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_VOLUMES_SUCCESS:\r\n return {\r\n ...state,\r\n loadingVol: false,\r\n proxypayVolumes: action.payload,\r\n isLoaded: true,\r\n dataType: proxyPayDataTypes.volumes\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_VOLUMES_FAILURE:\r\n return {\r\n ...state,\r\n loadingVol: false,\r\n error: action.payload\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_REVENUES_REQUEST:\r\n return {\r\n ...state,\r\n loadingRev: true,\r\n isLoaded: false\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_REVENUES_SUCCESS:\r\n return {\r\n ...state,\r\n loadingRev: false,\r\n proxypayRevenues: action.payload,\r\n isLoaded: true,\r\n dataType: proxyPayDataTypes.revenues\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_REVENUES_FAILURE:\r\n return {\r\n ...state,\r\n loadingRev: false,\r\n error: action.payload\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_OPEX_REQUEST:\r\n return {\r\n ...state,\r\n loadingOpex: true,\r\n isLoaded: false\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_OPEX_SUCCESS:\r\n return {\r\n ...state,\r\n loadingOpex: false,\r\n proxypayOpex: action.payload,\r\n isLoaded: true,\r\n dataType: proxyPayDataTypes.opex\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_OPEX_FAILURE:\r\n return {\r\n ...state,\r\n loadingOpex: false,\r\n error: action.payload\r\n }\r\n\r\n case ReportsActionTypes.GET_PROXYPAY_EBITDA_REQUEST:\r\n return {\r\n ...state,\r\n loadingEbitda: true,\r\n isLoaded: false\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_EBITDA_SUCCESS:\r\n return {\r\n ...state,\r\n loadingEbitda: false,\r\n proxypayEbitda: action.payload,\r\n isLoaded: true,\r\n dataType: proxyPayDataTypes.ebitda\r\n }\r\n case ReportsActionTypes.GET_PROXYPAY_EBITDA_FAILURE:\r\n return {\r\n ...state,\r\n loadingEbitda: false,\r\n error: action.payload\r\n }\r\n\r\n case ReportsActionTypes.GET_PAYOUT_REQUEST:\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n case ReportsActionTypes.GET_PAYOUT_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n payouts: action.payload\r\n }\r\n case ReportsActionTypes.GET_PAYOUT_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload\r\n }\r\n case ReportsActionTypes.POST_RECORD_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: undefined,\r\n success: false,\r\n failure: false\r\n }\r\n case ReportsActionTypes.POST_RECORD_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: undefined,\r\n success: true,\r\n failure: false\r\n }\r\n case ReportsActionTypes.POST_RECORD_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n success: false,\r\n failure: true\r\n }\r\n case ReportsActionTypes.CLEAR_BOOLEANS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n success: false,\r\n failure: false,\r\n error: undefined,\r\n feeError: undefined,\r\n isExportError: false,\r\n isExportSuccess: false,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: false,\r\n isLoaded: false,\r\n dataType: proxyPayDataTypes.subscribers\r\n }\r\n case ReportsActionTypes.GET_MERCHANTS_REQUEST:\r\n return {\r\n ...state\r\n }\r\n case ReportsActionTypes.GET_MERCHANTS_SUCCESS:\r\n return {\r\n ...state,\r\n merchants: action.payload\r\n }\r\n case ReportsActionTypes.GET_MERCHANTS_FAILURE:\r\n return {\r\n ...state,\r\n error: action.payload\r\n }\r\n case ReportsActionTypes.POST_PAYOUT_FEE_REQUEST:\r\n return {\r\n ...state,\r\n feeError: undefined,\r\n feeLoading: true\r\n }\r\n\r\n case ReportsActionTypes.POST_PAYOUT_FEE_SUCCESS:\r\n return {\r\n ...state,\r\n fee: action.payload,\r\n feeLoading: false\r\n }\r\n\r\n case ReportsActionTypes.POST_PAYOUT_FEE_FAILURE:\r\n return {\r\n ...state,\r\n feeError: action.payload,\r\n feeLoading: false\r\n }\r\n\r\n case ReportsActionTypes.CLEAR_FEE:\r\n return {\r\n ...state,\r\n fee: undefined\r\n }\r\n\r\n case ReportsActionTypes.EXPORT_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true\r\n }\r\n case ReportsActionTypes.EXPORT_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined\r\n }\r\n case ReportsActionTypes.EXPORT_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload\r\n }\r\n\r\n case ReportsActionTypes.EXPORT_PCES_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true\r\n }\r\n case ReportsActionTypes.EXPORT_PCES_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined\r\n }\r\n case ReportsActionTypes.EXPORT_PCES_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload\r\n }\r\n\r\n case ReportsActionTypes.DOWNLOAD_RECEIPT_REQUEST:\r\n return {\r\n ...state,\r\n isRequestingDownload: true\r\n }\r\n\r\n case ReportsActionTypes.DOWNLOAD_RECEIPT_SUCCESS:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: action.payload,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: true,\r\n downloadError: undefined\r\n }\r\n\r\n case ReportsActionTypes.DOWNLOAD_RECEIPT_FAILURE:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: true,\r\n downloadRecieptSuccess: false,\r\n downloadError: action.payload\r\n }\r\n\r\n case ReportsActionTypes.CLEAR_DATA:\r\n return {\r\n ...state,\r\n proxypayEbitda: null,\r\n proxypayOpex: null,\r\n proxypayRevenues: null,\r\n proxypaySubscribers: null,\r\n proxypayTransactions: null,\r\n proxypayVolumes: null,\r\n errorEbitda: undefined,\r\n errorOpex: undefined,\r\n error: undefined,\r\n errorRev: undefined,\r\n errorSub: undefined,\r\n errorTrx: undefined,\r\n errorVol: undefined\r\n }\r\n\r\n case ReportsActionTypes.EXPORT_PENDING_TX_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true\r\n }\r\n case ReportsActionTypes.EXPORT_PENDING_TX_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined\r\n }\r\n case ReportsActionTypes.EXPORT_PENDING_TX_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload\r\n }\r\n\r\n case ReportsActionTypes.GET_VAS_SERVICES_REQUEST:\r\n return {\r\n ...state\r\n }\r\n case ReportsActionTypes.GET_VAS_SERVICES_SUCCESS:\r\n return {\r\n ...state,\r\n vasservices: action.payload\r\n }\r\n case ReportsActionTypes.GET_VAS_SERVICES_FAILURE:\r\n return {\r\n ...state,\r\n error: action.payload\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport { reducer as reportsReducer }\r\n","import React, { lazy, Suspense, useState, useEffect, Fragment } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Button } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport {\r\n getTransactionsRequest,\r\n exportTranxRequest,\r\n downloadReceiptRequest\r\n} from '../store/transactions'\r\nimport { getMerchantsRequest } from '../store/reports'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { TransactionHistory, MerchantData, Transaction } from '../interfaces'\r\nimport { useTranslation } from 'react-i18next'\r\nimport moment from 'moment'\r\n\r\nconst { Content } = Layout\r\n\r\nconst TransactionFilters = lazy(\r\n () => import('../components/transactions/TransactionFilters')\r\n)\r\nconst TransactionSummaryCards = lazy(\r\n () => import('../components/transactions/TransactionSummaryCards')\r\n)\r\nconst TransactionTable = lazy(\r\n () => import('../components/transactions/TransactionTable')\r\n)\r\nconst TransactionDetail = lazy(\r\n () => import('../components/transactions/TransactionDetail')\r\n)\r\nconst CurrencyFilter = lazy(\r\n () => import('../components/transactions/CurrencyFilter')\r\n)\r\nconst EmptyBox = lazy(() => import('../components/transactions/EmptyBox'))\r\n\r\nconst Transactions = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const transaction = appSelector((state) => state.transaction)\r\n const reports = appSelector((state) => state.reports)\r\n const [trans, setTrans] = useState([])\r\n const [trxReport, setTrxReport] = useState(null)\r\n const { t } = useTranslation()\r\n const [channelSearch, setChannelSearch] = useState('')\r\n const [searchValue, setSearchValue] = useState('')\r\n const [statusSearch, setStatusSearch] = useState('')\r\n const [fromDate, setFromDate] = useState('')\r\n const [toDate, setToDate] = useState('')\r\n const [exportType, setExportType] = useState('')\r\n const [trx, setTrx] = useState(null)\r\n const [switchView, setSwitchView] = useState(false)\r\n const [loading, setLoading] = useState(false)\r\n const [currency, setCurrency] = useState('USD')\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const [merchant, setMerchant] = useState(null)\r\n const [isExporting, setIsExporting] = useState(false)\r\n const [isDownlaoding, setIsDownloading] = useState(false)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [isSearching, setIsSearching] = useState(false)\r\n const [currentPage, setCurrentPage] = useState(1)\r\n\r\n const getSearchParams = () => ({\r\n currency,\r\n pageSize,\r\n skip,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant?.name || '',\r\n status: statusSearch,\r\n channel: channelSearch,\r\n searchValue: searchValue,\r\n exportType: exportType,\r\n fixedPeriod: 'overall'\r\n })\r\n\r\n useEffect(() => {\r\n // fetch transaction history\r\n // dispatch(getTransactionsRequest(params))\r\n const { merchants } = reports\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { loading, transactions, isExporting, isRequestingDownload } =\r\n transaction\r\n const { merchants } = reports\r\n setLoading(loading)\r\n setMerchants(merchants)\r\n setTrans(\r\n transactions && !isEmpty(transactions.data) ? transactions.data : []\r\n )\r\n setTrxReport(transactions)\r\n setIsExporting(isExporting)\r\n setIsDownloading(isRequestingDownload)\r\n }, [transaction, reports])\r\n\r\n const onClickRow = (transactionID: number) => {\r\n if (transaction.transactions && !isEmpty(transaction.transactions.data)) {\r\n const trx = transaction.transactions.data.find(\r\n (t) => t.transactionId === transactionID\r\n )\r\n if (trx !== undefined) {\r\n setTrx(trx)\r\n setSwitchView(true)\r\n }\r\n }\r\n }\r\n\r\n const onCloseScreen = () => {\r\n setSwitchView(false)\r\n setTrx(null)\r\n }\r\n\r\n const reloadTransaction = () => {\r\n const searchParams = getSearchParams()\r\n dispatch(getTransactionsRequest(searchParams))\r\n }\r\n\r\n \r\n const onDownloadReceiptClick = (transactionId: number): void => {\r\n dispatch(downloadReceiptRequest(transactionId))\r\n }\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const searchParams = {\r\n currency: value,\r\n pageSize,\r\n skip: 0,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n status: '',\r\n channel: '',\r\n searchValue: '',\r\n merchant: '',\r\n exportType: '',\r\n fixedPeriod: 'overall'\r\n }\r\n \r\n dispatch(getTransactionsRequest(searchParams))\r\n }\r\n\r\n const onLoadMore = (page: number, size: number) => {\r\n const newSkip = page - 1\r\n setPageSize(size)\r\n setSkip(newSkip)\r\n setCurrentPage(page)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.skip = newSkip\r\n searchParams.pageSize = size\r\n \r\n dispatch(getTransactionsRequest(searchParams))\r\n }\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type)\r\n const searchParams = getSearchParams()\r\n searchParams.exportType = type\r\n dispatch(exportTranxRequest(searchParams))\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n setSwitchView(false)\r\n setTrx(null)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const { status, channel, periodFrom, periodTo, query, merchant: merchantId } = values\r\n let m: MerchantData | undefined = undefined\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n\r\n setChannelSearch(channel !== undefined ? channel : '')\r\n setStatusSearch(status !== undefined ? status : '')\r\n setSearchValue(query !== undefined ? query : '')\r\n \r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setFromDate(pFrom)\r\n setToDate(pTo)\r\n }\r\n \r\n if (merchantId !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchantId)\r\n setMerchant(m !== undefined ? m : null)\r\n } else {\r\n setMerchant(null)\r\n }\r\n\r\n const searchParams = {\r\n currency,\r\n pageSize,\r\n skip: 0,\r\n periodFrom: pFrom,\r\n periodTo: pTo,\r\n merchant: m?.name || '',\r\n status: status || '',\r\n channel: channel || '',\r\n searchValue: query || '',\r\n exportType: '',\r\n fixedPeriod: 'overall'\r\n }\r\n\r\n dispatch(getTransactionsRequest(searchParams))\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n setSwitchView(false)\r\n setTrx(null)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n setMerchant(null)\r\n setFromDate('')\r\n setToDate('')\r\n setStatusSearch('')\r\n setChannelSearch('')\r\n setSearchValue('')\r\n setIsSearching(false)\r\n \r\n const resetParams = {\r\n currency,\r\n pageSize: 10,\r\n skip: 0,\r\n periodFrom: '',\r\n periodTo: '',\r\n merchant: '',\r\n status: '',\r\n channel: '',\r\n searchValue: '',\r\n exportType: '',\r\n fixedPeriod: 'overall'\r\n }\r\n\r\n dispatch(getTransactionsRequest(resetParams))\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n {!switchView ? (\r\n \r\n \r\n\r\n \r\n
\r\n \r\n

\r\n {t('general.transactionsChart')}\r\n

\r\n
\r\n {!isEmpty(trans) ? (\r\n <>\r\n onExportClick('EXCEL')}\r\n loading={isExporting && exportType === 'EXCEL'}\r\n >\r\n {t('general.export-excel')}\r\n \r\n {/* onExportClick('PDF')}\r\n loading={isExporting && exportType === 'PDF'}\r\n >\r\n {t('general.export-pdf')}\r\n */}\r\n \r\n ) : null}\r\n reloadTransaction()}\r\n >\r\n {t('general.refresh')}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n ) : (\r\n \r\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 withRouter(Transactions)\r\n","import {\r\n FilePreview,\r\n PaymentFile,\r\n Providers,\r\n} from \"../../interfaces/BulkPayment\";\r\n\r\nexport enum BulkPaymentTypes {\r\n UPLOAD_FILE = \"@@bulk-payment/UPLOAD_FILE\",\r\n FILE_PREVIEW = \"@@bulk-payment/FILE_PREVIEW\",\r\n FILE_PREVIEW_REQUEST = \"@@bulk-payment/FILE_PREVIEW_REQUEST\",\r\n UPLOAD_FILE_SUCCESS = \"@@bulk-payment/FILE_UPLOAD_SUCCESS\",\r\n UPLOAD_FILE_FAILED = \"@@bulk-payment/FILE_UPLOAD_FAILED\",\r\n GET_PROVIDERS = \"@@bulk-payment/GET_PROVIDERS\",\r\n GET_PROVIDERS_SUCCESS = \"@@bulk-payment/GET_PROVIDERS_SUCCESS\",\r\n UPLOAD_FILE_FAILURE = \"@@bulk-payment/FILE_UPLOAD_FAILURE\",\r\n INCREASE_BULK_PAYMENT_STEP = \"@@bulk-payment/INCREASE_BULK_PAYMENT_STEP\",\r\n INCREASE_BULK_PAYMENT_STEP_CUSTOM = \"@@payment/INCREASE_BULK_PAYMENT_STEP_CUSTOM\",\r\n DECREASE_BULK_PAYMENT_STEP = \"@@payment/DECREASE_BULK_PAYMENT_STEP\",\r\n BULK_PAYMENT_STEP_CUSTOM = \"@@bulk-payment/DECREASE_BULK_PAYMENT_STEP_CUSTOM\",\r\n COMPLETE_PAYMENT_REQUEST = \"@@bulk-payment/COMPLETE_PAYMENT_REQUEST\",\r\n COMPLETE_PAYMENT_SUCCESS = \"@@bulk-payment/COMPLETE_PAYMENT_SUCCESS\",\r\n COMPLETE_PAYMENT_FAILURE = \"@@bulk-payment/COMPLETE_PAYMENT_FAILURE\",\r\n CLEAR_STATES = \"@@bulk-payment/CLEAR_STATES\",\r\n GET_BULKPAYMENT_FILES_REQUEST = \"@@bulk-payment/GET_BULKPAYMENT_FILES_REQUEST\",\r\n GET_BULKPAYMENT_FILES_SUCESS = \"@@bulk-payment/GET_BULKPAYMENT_FILES_SUCESS\",\r\n GET_BULKPAYMENT_FILES_FAILURE = \"@@bulk-payment/GET_BULKPAYMENT_FILES_FAILURE\",\r\n}\r\n\r\nexport type BulkPaymentState = {\r\n readonly pages: FilePreview[];\r\n readonly processing: boolean;\r\n readonly loading: boolean;\r\n readonly isSubmitting: boolean;\r\n readonly error: any;\r\n readonly success: boolean;\r\n readonly uploaded: boolean;\r\n readonly files: PaymentFile[];\r\n readonly failed: boolean;\r\n readonly failure: boolean;\r\n readonly step: number;\r\n readonly fileId: number;\r\n readonly filePreviewSuccess: boolean;\r\n readonly providerName: string;\r\n readonly providers: Providers[];\r\n readonly bulkpay: null;\r\n readonly loadingFiles: boolean;\r\n readonly uploadingFile: boolean;\r\n readonly uploadSuccess: boolean;\r\n};\r\n","import { Reducer } from \"redux\";\r\nimport { BulkPaymentState, BulkPaymentTypes } from \"./types\";\r\nimport { AuthActionTypes } from \"../auth\";\r\n\r\nexport const initialState: BulkPaymentState = {\r\n error: undefined,\r\n failure: true,\r\n loading: false,\r\n pages: [],\r\n success: false,\r\n failed: false,\r\n isSubmitting: false,\r\n step: 1,\r\n fileId: 0,\r\n processing: false,\r\n filePreviewSuccess: false,\r\n providerName: \"\",\r\n providers: [],\r\n bulkpay: null,\r\n uploaded: false,\r\n files: [],\r\n loadingFiles: false,\r\n uploadingFile: false,\r\n uploadSuccess: false,\r\n};\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n case BulkPaymentTypes.GET_PROVIDERS_SUCCESS:\r\n return {\r\n ...state,\r\n providers: action.payload,\r\n };\r\n case BulkPaymentTypes.UPLOAD_FILE:\r\n return {\r\n ...state,\r\n loading: true,\r\n uploadingFile: true,\r\n };\r\n case BulkPaymentTypes.FILE_PREVIEW_REQUEST:\r\n return {\r\n ...state,\r\n error: {},\r\n\r\n processing: false,\r\n };\r\n case BulkPaymentTypes.UPLOAD_FILE_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: {},\r\n uploaded: true,\r\n processing: false,\r\n loading: false,\r\n fileId: action.payload,\r\n uploadingFile: false,\r\n uploadSuccess: true,\r\n };\r\n case BulkPaymentTypes.UPLOAD_FILE_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n uploaded: false,\r\n failure: true,\r\n loading: false,\r\n uploadingFile: false,\r\n uploadSuccess: false,\r\n };\r\n case BulkPaymentTypes.UPLOAD_FILE_FAILED:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n uploaded: false,\r\n failed: true,\r\n loading: false,\r\n uploadingFile: false,\r\n uploadSuccess: false,\r\n };\r\n case BulkPaymentTypes.FILE_PREVIEW:\r\n return {\r\n ...state,\r\n pages: action.payload,\r\n error: {},\r\n\r\n processing: false,\r\n filePreviewSuccess: true,\r\n };\r\n case BulkPaymentTypes.INCREASE_BULK_PAYMENT_STEP:\r\n return {\r\n ...state,\r\n step: state.step + 1,\r\n processing: true,\r\n success: false,\r\n };\r\n case BulkPaymentTypes.DECREASE_BULK_PAYMENT_STEP:\r\n return {\r\n ...state,\r\n step: state.step - 1,\r\n };\r\n case BulkPaymentTypes.COMPLETE_PAYMENT_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: {},\r\n success: false,\r\n failure: false,\r\n };\r\n case BulkPaymentTypes.COMPLETE_PAYMENT_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n bulkpay: action.payload,\r\n success: true,\r\n failure: false,\r\n // uploadSuccess: false,\r\n error: {},\r\n };\r\n case BulkPaymentTypes.COMPLETE_PAYMENT_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n success: false,\r\n failure: true,\r\n };\r\n case BulkPaymentTypes.CLEAR_STATES:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n success: false,\r\n error: undefined,\r\n failure: false,\r\n failed: false,\r\n loading: false,\r\n processing: false,\r\n uploadSuccess: false,\r\n providers: [],\r\n pages: [],\r\n loadingFiles: false,\r\n files: [],\r\n uploaded: false,\r\n };\r\n\r\n case BulkPaymentTypes.GET_BULKPAYMENT_FILES_REQUEST:\r\n return {\r\n ...state,\r\n loadingFiles: true,\r\n };\r\n case BulkPaymentTypes.GET_BULKPAYMENT_FILES_SUCESS:\r\n return {\r\n ...state,\r\n loadingFiles: false,\r\n files: action.payload,\r\n };\r\n case BulkPaymentTypes.GET_BULKPAYMENT_FILES_FAILURE:\r\n return {\r\n ...state,\r\n loadingFiles: false,\r\n error: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as bulkPaymentReducer };\r\n","import { action } from \"typesafe-actions\";\r\nimport { BulkPaymentTypes } from \"./types\";\r\nimport {\r\n BulkPay,\r\n BulkPayload,\r\n BulkPaymentChecker,\r\n FilePreview,\r\n PaymentFile,\r\n} from \"../../interfaces/BulkPayment\";\r\n\r\nexport const uploadFile = (payload: FormData) =>\r\n action(BulkPaymentTypes.UPLOAD_FILE, payload);\r\n\r\nexport const uploadFailure = (error: any) =>\r\n action(BulkPaymentTypes.UPLOAD_FILE_FAILURE, error);\r\n\r\nexport const uploadSuccess = (response: any) =>\r\n action(BulkPaymentTypes.UPLOAD_FILE_SUCCESS, response);\r\n\r\nexport const uploadFailed = (error: any) =>\r\n action(BulkPaymentTypes.UPLOAD_FILE_FAILED, error);\r\n\r\nexport const getProviders = () => action(BulkPaymentTypes.GET_PROVIDERS);\r\n\r\nexport const getProviderSuccess = (response: any) =>\r\n action(BulkPaymentTypes.GET_PROVIDERS_SUCCESS, response);\r\n\r\nexport const uploadedFilePreview = (fileId: number) =>\r\n action(BulkPaymentTypes.FILE_PREVIEW_REQUEST, fileId);\r\n\r\nexport const fileListSuccess = (response: FilePreview[]) =>\r\n action(BulkPaymentTypes.FILE_PREVIEW, response);\r\n\r\nexport const bulkPaymentIncreaseStep = (step: number) =>\r\n action(BulkPaymentTypes.INCREASE_BULK_PAYMENT_STEP, step);\r\n\r\nexport const bulkPaymentDecreaseStep = (step: number) =>\r\n action(BulkPaymentTypes.DECREASE_BULK_PAYMENT_STEP, step);\r\n\r\nexport const clearStates = () => action(BulkPaymentTypes.CLEAR_STATES);\r\n\r\nexport const bulkPaymentRequest = (payload: BulkPayload) =>\r\n action(BulkPaymentTypes.COMPLETE_PAYMENT_REQUEST, payload);\r\n\r\nexport const bulkPaymentSuccess = (response: BulkPay) =>\r\n action(BulkPaymentTypes.COMPLETE_PAYMENT_SUCCESS, response);\r\n\r\nexport const bulkPaymentFailure = (error: any) =>\r\n action(BulkPaymentTypes.COMPLETE_PAYMENT_FAILURE, error);\r\n\r\nexport const getFilesRequest = () =>\r\n action(BulkPaymentTypes.GET_BULKPAYMENT_FILES_REQUEST);\r\n\r\nexport const getFilesSuccess = (response: PaymentFile[]) =>\r\n action(BulkPaymentTypes.GET_BULKPAYMENT_FILES_SUCESS, response);\r\n\r\nexport const getFilesFailure = (error: any) =>\r\n action(BulkPaymentTypes.GET_BULKPAYMENT_FILES_FAILURE, error);\r\n","import React, { useEffect } from \"react\";\r\nimport { Table, Row, Col, Form, Button, message } from \"antd\";\r\nimport { AppDispatch } from \"../../helpers/appDispatch\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n bulkPaymentRequest,\r\n clearStates,\r\n uploadedFilePreview,\r\n} from \"../../store/bulk-payment\";\r\nimport { appSelector } from \"../../helpers/appSelector\";\r\nimport {\r\n BulkPayload,\r\n BulkPaymentChecker,\r\n FilePreview,\r\n} from \"../../interfaces/BulkPayment\";\r\nimport { LoadingOutlined } from \"@ant-design/icons\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface Props {\r\n // preview: FilePreview[];\r\n loading: boolean;\r\n translate: any;\r\n}\r\ninterface TableData {\r\n fileId: number;\r\n amount: number;\r\n msisdn: string;\r\n currency: string;\r\n}\r\n\r\nconst DataTable: React.FC = ({\r\n //onClickRow,\r\n loading,\r\n translate,\r\n}) => {\r\n const columns: any[] = [\r\n {\r\n title: ,\r\n dataIndex: \"status\",\r\n key: \"status\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n render: () => {\r\n return (\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: `${translate(\"general.msisdn\")}`,\r\n dataIndex: \"msisdn\",\r\n key: \"msisdn\",\r\n align: \"center\",\r\n render: (pageName: string, page: TableData) => (\r\n onClickRow(page.msisdn)}\r\n >\r\n {pageName}\r\n \r\n ),\r\n },\r\n {\r\n title: `${translate(\"general.currency\")}`,\r\n dataIndex: \"currency\",\r\n key: \"currency\",\r\n align: \"center\",\r\n },\r\n {\r\n title: `${translate(\"general.amount\")}`,\r\n dataIndex: \"amount\",\r\n key: \"amount\",\r\n align: \"center\",\r\n },\r\n ];\r\n const dispatch: AppDispatch = useDispatch();\r\n const { fileId, pages, filePreviewSuccess, success, error, uploadSuccess } =\r\n appSelector((state) => state.bulkPayment);\r\n\r\n let data: TableData[] = [];\r\n for (let page of pages) {\r\n data.push({\r\n fileId: page ? page.fileId : 0,\r\n amount: page ? page.amount : 0,\r\n msisdn: page ? page.msisdn : \"\",\r\n currency: page ? page.currency : \"\",\r\n });\r\n }\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n dispatch(uploadedFilePreview(fileId));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [fileId]);\r\n\r\n const submitPaymentToChecker = () => {\r\n // const payload: BulkPaymentChecker = {\r\n // bulkpaymentFile: pages,\r\n // approvalStatus: 2,\r\n // };\r\n const payload: BulkPayload = {\r\n fileId: fileId,\r\n approvalStatus: 2,\r\n };\r\n\r\n dispatch(bulkPaymentRequest(payload));\r\n };\r\n\r\n useEffect(() => {\r\n if (success || !uploadSuccess) {\r\n dispatch(clearStates());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [success, uploadSuccess]);\r\n return (\r\n
\r\n \r\n \r\n
\r\n {\r\n const tran = translate(`general.pagination`);\r\n let t = tran.replace(`%d`, `${range[0]} - ${range[1]}`);\r\n let s = t.replace(`%s`, total);\r\n return s;\r\n },\r\n }}\r\n loading={!filePreviewSuccess}\r\n />\r\n
\r\n \r\n
\r\n \r\n {JSON.stringify(error) !== \"{}\"\r\n ? message.error(`${JSON.stringify(error)}`)\r\n : null}\r\n {success\r\n ? message.success(\"Payment Successfully Submitted for Approval\")\r\n : null}\r\n submitPaymentToChecker()}\r\n icon={loading ? : null}\r\n >\r\n {!loading ? t(\"general.processPayment\") : t(\"Please wait . .\")}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DataTable;\r\n","import React, { Suspense, Fragment, useState, useEffect } from \"react\";\r\nimport { Layout, Spin, Row, Upload, message, Button, Form, Col } from \"antd\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { PlusOutlined } from \"@ant-design/icons\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { AppDispatch } from \"../../helpers/appDispatch\";\r\nimport { appSelector } from \"../../helpers/appSelector\";\r\nimport { clearStates, uploadFile } from \"../../store/bulk-payment\";\r\n\r\nconst { Content } = Layout;\r\n\r\nconst FileUpload = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const [excel, setExcel] = useState(\"\");\r\n const [excelFile, setExcelFile] = useState();\r\n const { uploadingFile, success, failure, uploadSuccess } = appSelector(\r\n (state) => state.bulkPayment\r\n );\r\n\r\n const { user } = appSelector((state) => state.auth);\r\n\r\n const beforeUpload = (file: File): boolean => {\r\n const isExcel =\r\n file.type === \"text/csv\" ||\r\n file.name.slice(file.name.lastIndexOf(\".\")) === \".xlsx\";\r\n\r\n if (!isExcel) {\r\n message.error(`${t(\"general.fileUploadTypeError\")}`);\r\n }\r\n setExcel(file.name);\r\n setExcelFile(file);\r\n return isExcel;\r\n };\r\n const uploadButton: React.ReactNode = (\r\n
\r\n {}\r\n
{t(\"general.chooseFile\")}
\r\n
\r\n );\r\n\r\n let container: React.ReactNode;\r\n if (uploadingFile) {\r\n container = (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const onValidateFile = () => {\r\n const formData = new FormData();\r\n if (excelFile) {\r\n formData.append(\"File\", excelFile, excelFile.name);\r\n formData.append(\"fileName\", excelFile.name);\r\n formData.append(\"userId\", user ? `${user.userId}` : \"\");\r\n\r\n dispatch(uploadFile(formData));\r\n }\r\n };\r\n useEffect(() => {\r\n if (uploadSuccess) {\r\n dispatch(clearStates());\r\n }\r\n }, [uploadSuccess]);\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n {/*
1000
\r\n
1000
*/}\r\n
\r\n \r\n {/* \r\n handleChangeEvent()}\r\n optionFilterProp=\"children\"\r\n filterOption={(input: any, option: any) =>\r\n option.children\r\n .toLowerCase()\r\n .indexOf(input.toLowerCase()) >= 0\r\n }\r\n allowClear\r\n showSearch\r\n >\r\n {providers.length &&\r\n providers.map((p) => (\r\n \r\n ))}\r\n \r\n */}\r\n \r\n
\r\n\r\n {!success ? (\r\n
\r\n
\r\n \r\n {!uploadingFile\r\n ? excel.length\r\n ? excel\r\n : uploadButton\r\n : failure\r\n ? message.error(`${t(\"general.fileUploadError\")}`)\r\n : container}\r\n {/* {failure\r\n ? message.error(`${t(\"general.fileUploadError\")}`)\r\n : null} */}\r\n \r\n
\r\n \r\n onValidateFile()}\r\n disabled={!excel || uploadingFile}\r\n >\r\n {t(\"general.uploadFile\")}\r\n \r\n \r\n
\r\n ) : null}\r\n\r\n {/* {failure ? message.error(`${t(\"general.fileUploadError\")}`) : null} */}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default FileUpload;\r\n","import React from \"react\";\r\nimport { Table, Row, Col, Spin } from \"antd\";\r\nimport { appSelector } from \"../../helpers/appSelector\";\r\nimport { Transaction } from \"../../interfaces/BulkPayment\";\r\n\r\ninterface Props {\r\n transaction: Transaction[];\r\n loading: boolean;\r\n translate: any;\r\n}\r\ninterface TableData {\r\n amount: number;\r\n msisdn: string;\r\n providerName: string;\r\n currency: string;\r\n}\r\n\r\nconst ProcessFile: React.FC = ({\r\n //onClickRow,\r\n loading,\r\n translate,\r\n}) => {\r\n const columns: any[] = [\r\n {\r\n title: ,\r\n dataIndex: \"status\",\r\n key: \"status\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n render: () => {\r\n return (\r\n \r\n );\r\n },\r\n },\r\n {\r\n title: `${translate(\"general.msisdn\")}`,\r\n dataIndex: \"msisdn\",\r\n key: \"msisdn\",\r\n align: \"center\",\r\n render: (pageName: string, page: TableData) => (\r\n onClickRow(page.msisdn)}\r\n >\r\n {pageName}\r\n \r\n ),\r\n },\r\n {\r\n title: `${translate(\"general.provider\")}`,\r\n dataIndex: \"providerName\",\r\n key: \"providerName\",\r\n align: \"center\",\r\n },\r\n {\r\n title: `${translate(\"general.currency\")}`,\r\n dataIndex: \"currency\",\r\n key: \"currency\",\r\n align: \"center\",\r\n },\r\n {\r\n title: `${translate(\"general.amount\")}`,\r\n dataIndex: \"amount\",\r\n key: \"amount\",\r\n align: \"center\",\r\n },\r\n {\r\n title: `${translate(\"general.transactionStatus\")}`,\r\n dataIndex: \"transactionStatus\",\r\n key: \"transactionStatus\",\r\n align: \"center\",\r\n },\r\n ];\r\n // const dispatch: AppDispatch = useDispatch()\r\n const { pages } = appSelector((state) => state.bulkPayment);\r\n\r\n let data: TableData[] = [];\r\n for (let page of pages) {\r\n data.push({\r\n amount: page ? page.amount : 0,\r\n msisdn: page ? page.msisdn : \"\",\r\n providerName: \"\",\r\n currency: page ? page.currency : \"\",\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n {pages.length ? (\r\n \r\n
\r\n {\r\n const tran = translate(`general.pagination`);\r\n let t = tran.replace(`%d`, `${range[0]} - ${range[1]}`);\r\n let s = t.replace(`%s`, total);\r\n return s;\r\n },\r\n }}\r\n loading={loading}\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 ProcessFile;\r\n","import React, { Suspense, Fragment, useState, useEffect } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Layout, Spin, Row } from \"antd\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport DataTable from \"../components/bulkPayment/DataTable\";\r\nimport { appSelector } from \"../helpers/appSelector\";\r\n// import Wizard from \"../components/bulkPayment/Wizard\";\r\nimport FileUplaod from \"../components/bulkPayment/FileUplaod\";\r\nimport ProcessFile from \"../components/bulkPayment/ProcessFile\";\r\nimport { clearStates } from \"../store/bulk-payment\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { AppDispatch } from \"../helpers/appDispatch\";\r\nimport { FilePreview } from \"../interfaces/BulkPayment\";\r\nconst { Content } = Layout;\r\n\r\nconst BulkPayment = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const { pages, processing, uploadSuccess, isSubmitting, success } =\r\n appSelector((state) => state.bulkPayment);\r\n\r\n // const [pageData] = useState(pages);\r\n useEffect(() => {\r\n // if () {\r\n dispatch(clearStates());\r\n // }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n {!uploadSuccess ? (\r\n \r\n ) : uploadSuccess ? (\r\n
\r\n \r\n
\r\n ) : processing ? (\r\n \r\n ) : null}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withRouter(BulkPayment);\r\n","import React, { useState, useEffect, lazy, Suspense } from \"react\";\r\nimport { Layout, Row, Spin } from \"antd\";\r\n\r\nimport { useDispatch } from \"react-redux\";\r\nimport { appSelector } from \"../helpers/appSelector\";\r\nimport { AppDispatch } from \"../helpers/appDispatch\";\r\nimport { withRouter, useHistory } from \"react-router-dom\";\r\n\r\nimport { path } from \"../helpers/path\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nimport { clearStates, getFilesRequest } from \"../store/bulk-payment\";\r\n\r\nconst FilterMenu = lazy(\r\n () => import(\"../components/bulkpayment-pages/FilterMenu\")\r\n);\r\nconst Files = lazy(\r\n () => import(\"../components/bulkpayment-pages/PaymentFiles\")\r\n);\r\n\r\nconst PaymentPages = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n\r\n const { files, loadingFiles } = appSelector((state) => state.bulkPayment);\r\n const { Content } = Layout;\r\n\r\n const [fileData, setFileData] = useState(files);\r\n\r\n const { t } = useTranslation();\r\n const history = useHistory();\r\n const [processStatus, setProcessStatus] = useState([]);\r\n useEffect(() => {\r\n dispatch(clearStates());\r\n dispatch(getFilesRequest());\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n const data: string = JSON.stringify(files);\r\n localStorage.setItem(\"status\", data);\r\n }, [files]);\r\n\r\n const onClickRow = (fileId: number) => {\r\n history.push(`${path.file}/${fileId}`);\r\n };\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields();\r\n // setPageData(pages);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n {/* */}\r\n
\r\n \r\n

\r\n {t(\"general.paymentPage\")}\r\n

\r\n
\r\n {/* reloadPages()}\r\n >\r\n {t(\"general.newPageText\")}\r\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 withRouter(PaymentPages);\r\n","import { Page, TransactionHistory, Fee } from '../../interfaces'\r\n\r\nexport enum PaymentPagesTypes {\r\n GET_PAYMENT_PAGES_REQUEST = '@@payment-pages/GET_PAYMENT_PAGES_REQUEST',\r\n GET_PAYMENT_PAGES_SUCCESS = '@@payment-pages/GET_PAYMENT_PAGES_SUCCESS',\r\n GET_PAYMENT_PAGES_FAILURE = '@@payment-pages/GET_PAYMENT_PAGES_FAILURE',\r\n ADD_PAYMENT_PAGE_REQUEST = '@@payment-pages/ADD_PAYMENT_PAGE_REQUEST',\r\n ADD_PAYMENT_PAGE_SUCCESS = '@@payment-pages/ADD_PAYMENT_PAGE_SUCCESS',\r\n ADD_PAYMENT_PAGE_FAILURE = '@@payment-pages/ADD_PAYMENT_PAGE_FAILURE',\r\n UPDATE_PAYMENT_PAGE_REQUEST = '@@payment-pages/UPDATE_PAYMENT_PAGE_REQUEST',\r\n UPDATE_PAYMENT_PAGE_SUCCESS = '@@payment-pages/UPDATE_PAYMENT_PAGE_SUCCESS',\r\n UPDATE_PAYMENT_PAGE_FAILURE = '@@payment-pages/UPDATE_PAYMENT_PAGE_FAILURE',\r\n DELETE_PAYMENT_PAGE_REQUEST = '@@payment-pages/DELETE_PAYMENT_PAGE_REQUEST',\r\n DELETE_PAYMENT_PAGE_SUCCESS = '@@payment-pages/DELETE_PAYMENT_PAGE_SUCCESS',\r\n DELETE_PAYMENT_PAGE_FAILURE = '@@payment-pages/DELETE_PAYMENT_PAGE_FAILURE',\r\n CLEAR_STATES = '@@payment-pages/CLEAR_STATES',\r\n PAYMENT_PAGE_REQUEST = '@@payment-pages/PAYMENT_PAGE_REQUEST',\r\n PAYMENT_PAGE_SUCCESS = '@@payment-pages/PAYMENT_PAGE_SUCCESS',\r\n PAYMENT_PAGE_FAILURE = '@@payment-pages/PAYMENT_PAGE_FAILURE',\r\n GET_PAGE_TRANX_REQUEST = '@@payment-pages/GET_PAGE_TRANX_REQUEST',\r\n GET_PAGE_TRANX_SUCCESS = '@@payment-pages/GET_PAGE_TRANX_SUCCESS',\r\n GET_PAGE_TRANX_FAILURE = '@@payment-pages/GET_PAGE_TRANX_FAILURE',\r\n CLEAR_PAYMENT_PAGES = '@@payment-pages/CLEAR_PAYMENT_PAGES',\r\n REQUEST_FEE_REQUEST = '@@payment-pages/REQUEST_FEE_REQUEST',\r\n REQUEST_FEE_SUCCESS = '@@payment-pages/REQUEST_FEE_SUCCESS',\r\n REQUEST_FEE_FAILURE = '@@payment-pages/REQUEST_FEE_FAILURE',\r\n CLEAR_FEE = '@@payment-pages/CLEAR_FEE',\r\n GET_PROVIDERS_REQUEST = '@@payment-pages/GET_MOBILE_PROVIDERS',\r\n GET_PROVIDERS_SUCCESS = '@@payment-pages/GET_MOBILE_PROVIDERS_SUCCESS',\r\n GET_PROVIDERS_FAILURE = '@@payment-pages/GET_MOBILE_PROVIDERS_FAILURE',\r\n INCREASE_PAYMENT_STEP = '@@payment/INCREASE_PAYMENT_STEP',\r\n INCREASE_PAYMENT_STEP_CUSTOM = '@@payment/INCREASE_PAYMENT_STEP_CUSTOM',\r\n DECREASE_PAYMENT_STEP = '@@payment/DECREASE_PAYMENT_STEP',\r\n DECREASE_PAYMENT_STEP_CUSTOM = '@@payment/DECREASE_PAYMENT_STEP_CUSTOM',\r\n}\r\n\r\nexport type PaymentPagesState = {\r\n readonly pages: Page[]\r\n readonly loading: boolean\r\n readonly isSubmitting: boolean\r\n readonly error: any\r\n readonly success: boolean\r\n readonly failure: boolean\r\n readonly singlePage: Page | undefined\r\n readonly pageTransactions: TransactionHistory[]\r\n readonly fee: Fee | undefined\r\n readonly feeError: any\r\n readonly feeLoading: boolean\r\n readonly providers: []\r\n}\r\n","import { Reducer } from 'redux'\r\nimport { PaymentPagesState, PaymentPagesTypes } from './types'\r\nimport { AuthActionTypes } from '../auth'\r\n\r\nexport const initialState: PaymentPagesState = {\r\n error: undefined,\r\n failure: false,\r\n loading: false,\r\n pages: [],\r\n success: false,\r\n isSubmitting: false,\r\n singlePage: undefined,\r\n pageTransactions: [],\r\n fee: undefined,\r\n feeError: undefined,\r\n feeLoading: false,\r\n providers: []\r\n}\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState\r\n\r\n case PaymentPagesTypes.ADD_PAYMENT_PAGE_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: {},\r\n success: false,\r\n failure: false\r\n }\r\n case PaymentPagesTypes.ADD_PAYMENT_PAGE_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: {},\r\n pages: [action.payload, ...state.pages],\r\n success: true,\r\n failure: false\r\n }\r\n case PaymentPagesTypes.ADD_PAYMENT_PAGE_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n success: false,\r\n failure: true\r\n }\r\n\r\n case PaymentPagesTypes.UPDATE_PAYMENT_PAGE_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true\r\n }\r\n\r\n case PaymentPagesTypes.UPDATE_PAYMENT_PAGE_SUCCESS:\r\n let pages = state.pages.slice()\r\n pages = pages.filter(\r\n (page) => page.paymentPageId !== action.payload.paymentPageId\r\n )\r\n pages.unshift(action.payload)\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n pages: pages,\r\n success: true,\r\n failure: false\r\n }\r\n\r\n case PaymentPagesTypes.UPDATE_PAYMENT_PAGE_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n success: false,\r\n failure: true\r\n }\r\n\r\n case PaymentPagesTypes.DELETE_PAYMENT_PAGE_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true\r\n }\r\n\r\n case PaymentPagesTypes.DELETE_PAYMENT_PAGE_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n success: true,\r\n failure: false,\r\n pages: state.pages.filter(\r\n (page) => page.paymentPageId !== action.payload\r\n )\r\n }\r\n\r\n case PaymentPagesTypes.DELETE_PAYMENT_PAGE_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n success: false,\r\n failure: true,\r\n error: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.GET_PAYMENT_PAGES_REQUEST:\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n\r\n case PaymentPagesTypes.GET_PAYMENT_PAGES_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n pages: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.GET_PAYMENT_PAGES_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.PAYMENT_PAGE_REQUEST:\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n\r\n case PaymentPagesTypes.PAYMENT_PAGE_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n singlePage: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.PAYMENT_PAGE_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.GET_PAGE_TRANX_REQUEST:\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n\r\n case PaymentPagesTypes.GET_PAGE_TRANX_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n pageTransactions: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.GET_PAGE_TRANX_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.CLEAR_STATES:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: undefined,\r\n success: false,\r\n failure: false\r\n }\r\n case PaymentPagesTypes.CLEAR_PAYMENT_PAGES:\r\n return {\r\n ...state,\r\n pages: []\r\n }\r\n case PaymentPagesTypes.REQUEST_FEE_REQUEST:\r\n return {\r\n ...state,\r\n feeError: initialState.feeError,\r\n feeLoading: true\r\n }\r\n\r\n case PaymentPagesTypes.REQUEST_FEE_SUCCESS:\r\n return {\r\n ...state,\r\n fee: action.payload,\r\n feeLoading: false\r\n }\r\n\r\n case PaymentPagesTypes.REQUEST_FEE_FAILURE:\r\n return {\r\n ...state,\r\n feeError: action.payload,\r\n feeLoading: false\r\n }\r\n case PaymentPagesTypes.CLEAR_FEE:\r\n return {\r\n ...state,\r\n fee: undefined\r\n }\r\n\r\n case PaymentPagesTypes.GET_PROVIDERS_SUCCESS:\r\n return {\r\n ...state,\r\n providers: action.payload\r\n }\r\n\r\n case PaymentPagesTypes.GET_PROVIDERS_FAILURE:\r\n return {\r\n ...state,\r\n error: action.payload\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport { reducer as paymentPagesReducer }\r\n","import { action } from 'typesafe-actions'\r\nimport { PaymentPagesTypes } from './types'\r\nimport { PaymentPage, Page, TransactionHistory, Fee } from '../../interfaces'\r\n\r\nexport const addPaymentPageRequest = (payload: PaymentPage) =>\r\n action(PaymentPagesTypes.ADD_PAYMENT_PAGE_REQUEST, payload)\r\n\r\nexport const addPaymentPageSuccess = (response: Page) =>\r\n action(PaymentPagesTypes.ADD_PAYMENT_PAGE_SUCCESS, response)\r\n\r\nexport const addPaymentPageFailure = (error: any) =>\r\n action(PaymentPagesTypes.ADD_PAYMENT_PAGE_FAILURE, error)\r\n\r\nexport const updatePaymentPageRequest = (payload: PaymentPage) =>\r\n action(PaymentPagesTypes.UPDATE_PAYMENT_PAGE_REQUEST, payload)\r\n\r\nexport const updatePaymentPageSuccess = (response: Page) =>\r\n action(PaymentPagesTypes.UPDATE_PAYMENT_PAGE_SUCCESS, response)\r\n\r\nexport const updatePaymentPageFailure = (error: any) =>\r\n action(PaymentPagesTypes.UPDATE_PAYMENT_PAGE_FAILURE, error)\r\n\r\nexport const deletePaymentPageRequest = (payload: string) =>\r\n action(PaymentPagesTypes.DELETE_PAYMENT_PAGE_REQUEST, payload)\r\n\r\nexport const deletePaymentPageSuccess = (response: string) =>\r\n action(PaymentPagesTypes.DELETE_PAYMENT_PAGE_SUCCESS, response)\r\n\r\nexport const deletePaymentPageFailure = (error: any) =>\r\n action(PaymentPagesTypes.DELETE_PAYMENT_PAGE_FAILURE, error)\r\n\r\nexport const getPaymentPagesRequest = () =>\r\n action(PaymentPagesTypes.GET_PAYMENT_PAGES_REQUEST)\r\n\r\nexport const getPaymentPagesSuccess = (response: Page[]) =>\r\n action(PaymentPagesTypes.GET_PAYMENT_PAGES_SUCCESS, response)\r\n\r\nexport const getPaymentPagesFailure = (error: any) =>\r\n action(PaymentPagesTypes.GET_PAYMENT_PAGES_FAILURE, error)\r\n\r\nexport const paymentPageRequest = (payload: string) =>\r\n action(PaymentPagesTypes.PAYMENT_PAGE_REQUEST, payload)\r\n\r\nexport const paymentPageSuccess = (response: Page) =>\r\n action(PaymentPagesTypes.PAYMENT_PAGE_SUCCESS, response)\r\n\r\nexport const paymentPageFailure = (error: any) =>\r\n action(PaymentPagesTypes.PAYMENT_PAGE_FAILURE, error)\r\n\r\nexport const getPageTranxRequest = (pageId: number) =>\r\n action(PaymentPagesTypes.GET_PAGE_TRANX_REQUEST, pageId)\r\n\r\nexport const getPageTranxSuccess = (response: TransactionHistory[]) =>\r\n action(PaymentPagesTypes.GET_PAGE_TRANX_SUCCESS, response)\r\n\r\nexport const getPageTranxFailure = (error: any) =>\r\n action(PaymentPagesTypes.GET_PAGE_TRANX_FAILURE, error)\r\n\r\nexport const clearStates = () => action(PaymentPagesTypes.CLEAR_STATES)\r\n\r\nexport const clearPaymentPages = () =>\r\n action(PaymentPagesTypes.CLEAR_PAYMENT_PAGES)\r\n\r\nexport const getProvidersRequest = () =>\r\n action(PaymentPagesTypes.GET_PROVIDERS_REQUEST)\r\n\r\nexport const postFeeRequest = (payload: any) =>\r\n action(PaymentPagesTypes.REQUEST_FEE_REQUEST, payload)\r\n\r\nexport const postFeeSuccess = (data: Fee) =>\r\n action(PaymentPagesTypes.REQUEST_FEE_SUCCESS, data)\r\n\r\nexport const postFeeFailure = (error: any) =>\r\n action(PaymentPagesTypes.REQUEST_FEE_FAILURE, error)\r\n\r\nexport const clearFee = () => action(PaymentPagesTypes.CLEAR_FEE)\r\n\r\nexport const getProvidersSuccess = (data: any) =>\r\n action(PaymentPagesTypes.GET_PROVIDERS_SUCCESS, data)\r\n\r\nexport const getProvidersFailure = (error: string) =>\r\n action(PaymentPagesTypes.GET_PROVIDERS_FAILURE, error)\r\n\r\n export const decreasePaymentStepCustom = (step: number) =>\r\n action(PaymentPagesTypes.DECREASE_PAYMENT_STEP_CUSTOM, step)\r\n","import React, { useState, useEffect, lazy, Suspense } from 'react'\r\nimport { Layout, Row, Button, message, Spin } from 'antd'\r\nimport { PlusOutlined, LoadingOutlined } from '@ant-design/icons'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { withRouter, useHistory } from 'react-router-dom'\r\nimport { PaymentPage } from '../interfaces'\r\nimport {\r\n getPaymentPagesRequest,\r\n addPaymentPageRequest,\r\n clearStates,\r\n clearFee\r\n} from '../store/payment-pages'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { path } from '../helpers/path'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { GetPagesFilteredResult } from '../helpers/page_functions'\r\n\r\nconst PaymentTypeModal = lazy(\r\n () => import('../components/payment-pages/PaymentTypeModal')\r\n)\r\nconst FormModal = lazy(() => import('../components/payment-pages/FormModal'))\r\nconst FilterMenu = lazy(() => import('../components/payment-pages/FilterMenu'))\r\nconst Pages = lazy(() => import('../components/payment-pages/Pages'))\r\n\r\nconst PaymentPages = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { pages, loading, isSubmitting, success, failure, error } = appSelector(\r\n (state) => state.page\r\n )\r\n const { Content } = Layout\r\n const [showPaymentTypeModal, setShowPaymentTypeModal] = useState(false)\r\n const [showFormModal, setShowFormModal] = useState(false)\r\n const [imageUrl, setImageUrl] = useState('')\r\n // const [spin, setSpin] = useState(false);\r\n\r\n const [values] = useState({\r\n Amount: '',\r\n Description: '',\r\n EmailAddress: true,\r\n Logo: '',\r\n PageName: '',\r\n PhoneNumber: true,\r\n RedirectUrl: '',\r\n Currency: 'USD',\r\n CustomerName: true,\r\n ProcessId: '',\r\n TransactionReference: ''\r\n })\r\n const [pageData, setPageData] = useState(pages)\r\n const [isCopied, setIsCopied] = useState(false)\r\n const [processId, setProcessId] = useState('')\r\n const { t } = useTranslation()\r\n const history = useHistory()\r\n\r\n useEffect(() => {\r\n if (isEmpty(pages)) {\r\n dispatch(getPaymentPagesRequest())\r\n }\r\n dispatch(clearStates())\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (success) {\r\n message.success(`${t('general.pageAddSuccess')}`, 5)\r\n\r\n }\r\n if (failure) {\r\n message.error(error, 5)\r\n }\r\n setPageData(pages)\r\n }, [success, error, failure, t, pages])\r\n\r\n const reloadPages = () => {\r\n dispatch(getPaymentPagesRequest())\r\n }\r\n\r\n const onTogglePaymentTypeModal = () => {\r\n setShowPaymentTypeModal(!showPaymentTypeModal)\r\n }\r\n\r\n const onToggleFormModal = () => {\r\n setShowFormModal(!showFormModal)\r\n setImageUrl('')\r\n dispatch(clearStates())\r\n }\r\n\r\n const choosePaymentPage = () => {\r\n onTogglePaymentTypeModal()\r\n onToggleFormModal()\r\n }\r\n\r\n const onClickRow = (pageId: number) => {\r\n history.push(`${path.page}/${pageId}`)\r\n }\r\n\r\n const beforeUpload = (file: File): boolean => {\r\n const isJPGOrPNG = file.type === 'image/jpeg' || file.type === 'image/png'\r\n\r\n if (!isJPGOrPNG) {\r\n message.error(`${t('general.fileTypeError')}`)\r\n }\r\n\r\n const isLessThan2MB = file.size / 1024 / 1024 < 2\r\n if (!isLessThan2MB) {\r\n message.error(`${t('general.fileSizeError')}`)\r\n }\r\n\r\n return isJPGOrPNG && isLessThan2MB\r\n }\r\n\r\n const getBase64 = (img: File, callback: Function) => {\r\n const reader = new FileReader()\r\n reader.addEventListener('load', () => callback(reader.result))\r\n reader.readAsDataURL(img)\r\n }\r\n\r\n const handleChange = (info: any): void => {\r\n getBase64(info.file.originFileObj, (imageUrl: any) => {\r\n setImageUrl(imageUrl)\r\n // setSpin(false);\r\n })\r\n }\r\n\r\n const uploadButton: React.ReactNode = (\r\n
\r\n {loading ? : }\r\n
{t('general.chooseFile')}
\r\n
\r\n )\r\n\r\n const onSubmit = (values: PaymentPage) => {\r\n const payload: PaymentPage = {\r\n Amount: values.Amount,\r\n Description: values.Description,\r\n EmailAddress: values.EmailAddress,\r\n Logo: imageUrl,\r\n PageName: values.PageName,\r\n PhoneNumber: values.PhoneNumber,\r\n RedirectUrl: values.RedirectUrl,\r\n Currency: values.Currency,\r\n CustomerName: values.CustomerName,\r\n ProcessId: '',\r\n TransactionReference: ''\r\n }\r\n dispatch(addPaymentPageRequest(payload))\r\n }\r\n\r\n const copyLink = (processId: string) => {\r\n if (typeof window !== 'undefined') {\r\n const { location } = window\r\n const path = `${location.protocol}//${location.host}/payment/${processId}`\r\n\r\n let board = document.createElement('textarea')\r\n document.body.appendChild(board)\r\n board.value = path\r\n board.select()\r\n document.execCommand('copy')\r\n document.body.removeChild(board)\r\n setIsCopied(true)\r\n setProcessId(processId)\r\n }\r\n }\r\n\r\n const onPreviewClick = (processId: string) => {\r\n const { location } = window\r\n const path = `${location.protocol}//${location.host}/payment/${processId}`\r\n dispatch(clearFee())\r\n window.open(path, '_blank')\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n setPageData(pages)\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n const { bucket } = GetPagesFilteredResult(pages, values)\r\n setPageData(bucket)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n
\r\n \r\n

\r\n {t('general.paymentPage')}\r\n

\r\n
\r\n onTogglePaymentTypeModal()}\r\n >\r\n {t('general.newPageText')}\r\n \r\n reloadPages()}\r\n >\r\n {t('general.refresh')}\r\n \r\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 withRouter(PaymentPages)\r\n","import { Page } from '../interfaces'\r\nimport { isEmpty } from './isEmpty'\r\nimport moment from 'moment'\r\n\r\nexport const GetPagesFilteredResult = (pages: Page[], values: any) => {\r\n // set bucket to transactions\r\n let bucket: Page[] = pages\r\n const { periodFrom, periodTo, query } = values\r\n let from: string | number\r\n let to: string | number\r\n\r\n // check if dates are not empty\r\n if (!isEmpty(periodFrom) && !isEmpty(periodTo)) {\r\n let filtered: Page[] = []\r\n let pFrom = moment(periodFrom).format('MM/DD/YYYY 00:00:00')\r\n from = moment(pFrom, 'MM/DD/YYYY 00:00:00').format('X')\r\n to = moment(periodTo._d).format('X')\r\n for (let page of bucket) {\r\n const createdAt = moment(page.createdWhen, 'MM/DD/YYYY HH:mm:ss').format('X')\r\n if (createdAt >= from && createdAt <= to) {\r\n filtered.push(page)\r\n }\r\n }\r\n bucket = filtered\r\n }\r\n\r\n if (!isEmpty(query)) {\r\n let filtered: Page[] = []\r\n filtered = bucket.filter((page) => {\r\n const amount = `${page.amount}`\r\n const pageName = page.pageName.toLowerCase()\r\n return amount.includes(query) || pageName.includes(query)\r\n })\r\n bucket = filtered\r\n }\r\n\r\n return { bucket }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Input, List, message, Avatar } from 'antd';\r\nimport { useHistory, useParams } from 'react-router-dom';\r\nimport { appSelector } from '../../helpers/appSelector';\r\nimport { path } from '../../helpers/path';\r\nimport { Page } from '../../interfaces';\r\nimport moment from 'moment';\r\n\r\ninterface PageDetailsProps {}\r\n\r\ninterface ParamProps {\r\n pageId: string;\r\n}\r\n\r\nexport const PageDetails: React.FC = () => {\r\n const { pageId } = useParams();\r\n const history = useHistory();\r\n const auth = appSelector((state) => state.auth);\r\n const page = appSelector((state) => state.page);\r\n const [pageDetails, setPageDetails] = useState(undefined);\r\n const [isCopied, setIsCopied] = useState(false);\r\n\r\n const { location } = window;\r\n\r\n useEffect(() => {\r\n const { isAuthenticated } = auth;\r\n if (pageId === undefined) {\r\n switch (isAuthenticated) {\r\n case true:\r\n history.push(path.paymentPages);\r\n break;\r\n case false:\r\n history.push(path.login);\r\n }\r\n } else {\r\n const { pages } = page;\r\n const paymentPage = pages.find(\r\n (p) => p.paymentPageId === parseInt(pageId)\r\n );\r\n if (paymentPage !== undefined) {\r\n setPageDetails(paymentPage);\r\n } else {\r\n message.error('This payment page does not exist', 5);\r\n switch (isAuthenticated) {\r\n case true:\r\n history.push(path.paymentPages);\r\n break;\r\n case false:\r\n history.push(path.login);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const paymentLink = `${location.protocol}//${location.host}/payment/${\r\n pageDetails !== undefined ? pageDetails.processId : ''\r\n }`;\r\n\r\n const copyLink = () => {\r\n if (typeof window !== 'undefined') {\r\n let board = document.createElement('textarea');\r\n document.body.appendChild(board);\r\n board.value = paymentLink;\r\n board.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(board);\r\n setIsCopied(true);\r\n }\r\n };\r\n\r\n let initials: string[] = [];\r\n let name = '';\r\n if (pageDetails !== undefined) {\r\n initials = pageDetails.pageName.match(/\\b\\w/g) || [];\r\n name = ((initials.shift() || '') + (initials.pop() || '')).toUpperCase();\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {pageDetails !== undefined && pageDetails.logo !== '' ? (\r\n \r\n ) : (\r\n \r\n {name}\r\n \r\n )}\r\n
\r\n
\r\n

Page Name

\r\n

\r\n {pageDetails !== undefined\r\n ? pageDetails.pageName.toUpperCase()\r\n : ''}\r\n

\r\n
\r\n
\r\n copyLink()}>\r\n {isCopied ? 'Copied!' : 'Copy Link'}\r\n
\r\n }\r\n value={paymentLink}\r\n readOnly\r\n addonAfter={\r\n \r\n Visit Link\r\n \r\n }\r\n />\r\n
\r\n \r\n\r\n \r\n \r\n

Page Type

\r\n

Payment

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

Currency

\r\n

\r\n {pageDetails !== undefined ? pageDetails.currency : ''}\r\n

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

Page Amount

\r\n

\r\n {pageDetails !== undefined && pageDetails.amount !== ''\r\n ? `${pageDetails.currency} ${parseFloat(\r\n pageDetails.amount\r\n ).toFixed(2)}`\r\n : 'Flexible'}\r\n

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

Description

\r\n

\r\n {pageDetails !== undefined ? pageDetails.description : ''}\r\n

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

Redirect URL

\r\n

\r\n {pageDetails !== undefined && pageDetails.redirectURL !== null\r\n ? pageDetails.redirectURL\r\n : ''}\r\n

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

Created On

\r\n

\r\n {pageDetails !== undefined && pageDetails.createdWhen !== null\r\n ? moment(pageDetails.createdWhen, 'MM/DD/YYYY HH:mm:ss').format(\r\n 'MMMM D, YYYY (h:mm a)'\r\n )\r\n : ''}\r\n

\r\n
\r\n
\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Empty } from 'antd';\r\n\r\ninterface EmptyTransactionsProps {}\r\n\r\nexport const EmptyTransactions: React.FC = () => {\r\n return (\r\n \r\n \r\n No transaction\r\n \r\n No payments have been made on this page\r\n \r\n }\r\n />\r\n );\r\n};\r\n","import React from 'react'\r\nimport { TransactionHistory } from '../../interfaces'\r\nimport { Tag, Table } from 'antd'\r\nimport { transactionStatus } from '../../helpers/constants'\r\nimport moment from 'moment'\r\n\r\ninterface TransactionsProps {\r\n transactions: TransactionHistory[]\r\n}\r\n\r\ninterface DataSource {\r\n key: number\r\n amount: string\r\n transactionId: number\r\n reference: string\r\n date: string\r\n status: string\r\n merchant: string\r\n}\r\n\r\nexport const Transactions: React.FC = ({ transactions }) => {\r\n const columns: any[] = [\r\n {\r\n title: 'Amount',\r\n dataIndex: 'amount',\r\n key: 'amount',\r\n align: 'center'\r\n },\r\n // {\r\n // title: 'Reference',\r\n // dataIndex: 'customer',\r\n // key: 'customer',\r\n // align: 'center',\r\n // },\r\n {\r\n title: 'Transaction ID',\r\n dataIndex: 'transactionId',\r\n key: 'trasactionId',\r\n align: 'center'\r\n },\r\n {\r\n title: 'Paid on',\r\n dataIndex: 'date',\r\n key: 'date',\r\n align: 'center'\r\n },\r\n {\r\n title: 'Status',\r\n dataIndex: 'status',\r\n key: 'status',\r\n align: 'center',\r\n render: (status: string) => {\r\n let color: string = 'geekblue'\r\n switch (status) {\r\n case transactionStatus.APPROVED:\r\n color = 'green'\r\n break\r\n case transactionStatus.DECLINED:\r\n color = 'volcano'\r\n break\r\n case transactionStatus.CANCELED:\r\n color = 'geekblue'\r\n break\r\n default:\r\n color = 'geekblue'\r\n break\r\n }\r\n return (\r\n \r\n {status ? status.toUpperCase() : 'N/A'}\r\n \r\n )\r\n }\r\n },\r\n {\r\n title: 'Merchant',\r\n dataIndex: 'merchant',\r\n key: 'merchant',\r\n align: 'left'\r\n }\r\n ]\r\n\r\n let dataSource: DataSource[] = []\r\n\r\n for (let transaction of transactions) {\r\n dataSource.push({\r\n key: transaction.transactionId,\r\n amount: `${transaction.currency} ${transaction.amountPaid.toFixed(2)}`,\r\n transactionId: transaction.transactionId,\r\n reference: '',\r\n date: moment(transaction.createdAt, 'MM/DD/YYYY HH:mm:ss').format(\r\n 'MMMM D, YYYY (h:mm a)'\r\n ),\r\n status: transaction.status,\r\n merchant: transaction.merchant\r\n })\r\n }\r\n return (\r\n \r\n )\r\n}\r\n","import React from 'react';\r\nimport { Tabs, Spin } from 'antd';\r\nimport { EmptyTransactions } from './EmptyTransactions';\r\nimport { TransactionHistory } from '../../interfaces';\r\nimport { isEmpty } from '../../helpers/isEmpty';\r\nimport { Transactions } from './Transactions';\r\n\r\ninterface PageTransactionsProps {\r\n loading: boolean;\r\n transactions: TransactionHistory[];\r\n}\r\n\r\nexport const PageTransactions: React.FC = ({\r\n loading,\r\n transactions,\r\n}) => {\r\n const { TabPane } = Tabs;\r\n\r\n let render: React.ReactNode;\r\n\r\n if (loading && isEmpty(transactions)) {\r\n render = (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n if (!loading && isEmpty(transactions)) {\r\n render = ;\r\n }\r\n\r\n if (!loading && !isEmpty(transactions)) {\r\n render = ;\r\n }\r\n\r\n return (\r\n \r\n \r\n {render}\r\n \r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { withRouter, useParams } from 'react-router-dom';\r\nimport { Layout, Row, Col, Card } from 'antd';\r\nimport { PageDetails } from '../components/[pageId]/PageDetails';\r\nimport { PageTransactions } from '../components/[pageId]/PageTransactions';\r\nimport { useDispatch } from 'react-redux';\r\nimport { AppDispatch } from '../helpers/appDispatch';\r\nimport { appSelector } from '../helpers/appSelector';\r\nimport { getPageTranxRequest, clearStates } from '../store/payment-pages';\r\nimport { TransactionHistory } from '../interfaces';\r\n\r\ninterface PageProps {}\r\n\r\ninterface ParamProps {\r\n pageId: string;\r\n}\r\n\r\nconst Page: React.FC = () => {\r\n const { Content } = Layout;\r\n const dispatch: AppDispatch = useDispatch();\r\n const { pageId } = useParams();\r\n const page = appSelector((state) => state.page);\r\n const [loading, setLoading] = useState(false);\r\n const [transactions, setTransactions] = useState([]);\r\n\r\n useEffect(() => {\r\n dispatch(clearStates());\r\n dispatch(getPageTranxRequest(parseInt(pageId)));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n const { pageTransactions, loading } = page;\r\n setLoading(loading);\r\n setTransactions(pageTransactions);\r\n }, [page]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withRouter(Page);\r\n","import React from 'react'\r\nimport { Row, Col, Form, Input, Button, Alert, Image } from 'antd'\r\nimport { LoadingOutlined } from '@ant-design/icons'\r\nimport { Login } from '../../interfaces'\r\nimport { isEmpty } from '../../helpers/isEmpty'\r\nimport logo from '../../images/logo_symbol.png'\r\nimport { Link } from 'react-router-dom'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { path } from '../../helpers/path'\r\n\r\ninterface LoginFormProps {\r\n values: Login\r\n onSubmit(values: Login): void\r\n isSubmit: boolean\r\n error: any\r\n singleError: string\r\n resetSuccess: boolean\r\n}\r\n\r\nexport const LoginForm: React.FC = ({\r\n values,\r\n onSubmit,\r\n isSubmit,\r\n error,\r\n singleError,\r\n resetSuccess\r\n}) => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n \r\n \"\"\r\n \r\n \r\n \r\n \r\n

{t('login.header')}

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

{t('login.box-header')}

\r\n\r\n {!isEmpty(error) ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n {!isEmpty(singleError) ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n {resetSuccess ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n >\r\n {!isSubmit ? t('login.btn-text') : t('login.btn-loading')}\r\n \r\n \r\n \r\n \r\n {t('login.forgot-password')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n

\r\n {t('login.no-account')}{' '}\r\n \r\n {t('login.sign-up')}\r\n \r\n

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

\r\n \r\n {t('login.terms')}\r\n \r\n \r\n {t('login.compliance')}\r\n \r\n \r\n {t('login.support')}\r\n \r\n \r\n {t('login.contact')}\r\n \r\n

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

\r\n Copyright © 2020-{new Date().getFullYear()} |{' '}\r\n {t('login.privacy')}\r\n

\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\ninterface LanguageProps {}\r\n\r\nexport const Language: React.FC = () => {\r\n const { i18n } = useTranslation()\r\n\r\n const onChangeLanguage = (lang: string) => {\r\n i18n.changeLanguage(lang)\r\n }\r\n\r\n return (\r\n
\r\n onChangeLanguage('en')}\r\n >\r\n onChangeLanguage('fr')}\r\n >\r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect, useRef, useCallback } from 'react'\r\nimport { withRouter, useHistory } from 'react-router-dom'\r\nimport { Layout } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { LoginForm } from '../components/login/LoginForm'\r\nimport { Login as Auth, Error } from '../interfaces'\r\nimport { loginRequest, clearAuthState } from '../store/auth'\r\nimport { path } from '../helpers/path'\r\nimport { Language } from '../components/menu/Language'\r\nimport ReCAPTCHA from 'react-google-recaptcha'\r\nimport { SITE_KEY } from '../helpers/constants'\r\n\r\ninterface LoginProps {}\r\n\r\nconst DELAY = 1500\r\n\r\nconst Login: React.FC = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const auth = appSelector((state) => state.auth)\r\n const { Content } = Layout\r\n const [values] = useState({\r\n EmailAddress: '',\r\n Password: ''\r\n })\r\n const [isSubmit, setIsSubmit] = useState(false)\r\n const [error, setError] = useState({})\r\n const [singleError, setSingleError] = useState('')\r\n const history = useHistory()\r\n const [load, setLoad] = useState(false)\r\n const [expired, setExpired] = useState(false)\r\n const reCaptchaRef = useRef()\r\n const [isMounted, setIsMounted] = useState(false)\r\n\r\n useEffect(() => {\r\n dispatch(clearAuthState())\r\n setTimeout(() => {\r\n setLoad(true)\r\n }, DELAY)\r\n return () => {\r\n setIsMounted(!isMounted)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onSubmit = (values: Auth) => {\r\n reCaptchaRef.current\r\n .executeAsync()\r\n .then((value: string) => {\r\n if (value && !expired) {\r\n const payload: Auth = {\r\n EmailAddress: values.EmailAddress,\r\n Password: values.Password\r\n }\r\n dispatch(loginRequest(payload))\r\n }\r\n })\r\n .catch((err: any) => {})\r\n }\r\n\r\n useEffect(() => {\r\n const { isSubmitting, error, singleError, isAuthenticated } = auth\r\n setIsSubmit(isSubmitting)\r\n setError(error)\r\n setSingleError(singleError)\r\n if (isAuthenticated) {\r\n history.push(path.home)\r\n }\r\n }, [auth, history])\r\n\r\n const handleRecaptcha = useCallback((value) => {\r\n if (value === null) setExpired(true)\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {load && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default withRouter(Login)\r\n","import React from 'react';\r\nimport { Row, Col, Form, Input, Button, Alert } from 'antd';\r\nimport { Merchant } from '../../interfaces';\r\nimport { isEmpty } from '../../helpers/isEmpty';\r\nimport { PayCircleOutlined, LoadingOutlined } from '@ant-design/icons';\r\n\r\ninterface PayFormProps {\r\n values: any;\r\n onSubmit(values: Merchant): void;\r\n isSubmit: boolean;\r\n error: any;\r\n}\r\n\r\nexport const PayForm: React.FC = ({\r\n values,\r\n onSubmit,\r\n isSubmit,\r\n error,\r\n}) => {\r\n return (\r\n \r\n \r\n {!isEmpty(error) ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","export default __webpack_public_path__ + \"static/media/visa.a256fe8d.png\";","export default __webpack_public_path__ + \"static/media/master-card.a1c6e906.png\";","import React, { useState, useEffect } from 'react'\r\nimport { withRouter, useParams, useLocation } from 'react-router-dom'\r\nimport { Layout, Row, Col, Image, Avatar } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { PayForm } from '../components/[pay]/PayForm'\r\nimport visa from '../images/visa.png'\r\nimport mastercard from '../images/master-card.png'\r\nimport { Merchant, Error, Page } from '../interfaces'\r\nimport { paymentRequest, clearPaymentData } from '../store/home'\r\nimport { paymentPageRequest, clearStates } from '../store/payment-pages'\r\n\r\ninterface PayProps {}\r\n\r\ninterface ParamProps {\r\n processId: string\r\n}\r\n\r\nconst Pay: React.FC = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { Content } = Layout\r\n const { processId } = useParams()\r\n const home = appSelector((state) => state.home)\r\n const page = appSelector((state) => state.page)\r\n const query = new URLSearchParams(useLocation().search)\r\n\r\n const [values] = useState({\r\n pageTitle: query.get('pageTitle') !== null ? query.get('pageTitle') : '',\r\n pageLogo: query.get('pageLogo') !== null ? query.get('pageLogo') : '',\r\n pageDescription:\r\n query.get('pageDescription') !== null ? query.get('pageDescription') : '',\r\n customerFullName:\r\n query.get('customerFullName') !== null\r\n ? query.get('customerFullName')\r\n : '',\r\n customerPhoneNumber:\r\n query.get('customerPhoneNumber') !== null\r\n ? query.get('customerPhoneNumber')\r\n : '',\r\n customerEmailAddress:\r\n query.get('customerEmailAddress') !== null\r\n ? query.get('customerEmailAddress')\r\n : '',\r\n transactionReference:\r\n query.get('transactionReference') !== null\r\n ? query.get('transactionReference')\r\n : '',\r\n currency: query.get('currency') !== null ? query.get('currency') : '',\r\n amount: query.get('amount') !== null ? query.get('amount') : '',\r\n redirectURL:\r\n query.get('redirectURL') !== null ? query.get('redirectURL') : '',\r\n processId: processId\r\n })\r\n const [isSubmit, setIsSubmit] = useState(false)\r\n const [errorData, setErrorData] = useState({})\r\n const [singlePage, setSinglePage] = useState(undefined)\r\n\r\n const onSubmit = (v: Merchant) => {\r\n v.processId = values.processId\r\n v.pageTitle = values.pageTitle !== null ? values.pageTitle : ''\r\n v.pageDescription =\r\n values.pageDescription !== null ? values.pageDescription : ''\r\n v.pageLogo = values.pageLogo !== null ? values.pageLogo : ''\r\n v.redirectURL = values.redirectURL !== null ? values.redirectURL : ''\r\n v.transactionReference =\r\n values.transactionReference !== null ? values.transactionReference : ''\r\n v.paymentPageId = singlePage !== undefined ? singlePage.paymentPageId : 0\r\n\r\n dispatch(paymentRequest(v))\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(clearStates())\r\n dispatch(paymentPageRequest(processId))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const {\r\n isPaymentFailure,\r\n isPaymentSuccess,\r\n isSubmitting,\r\n orderResponse,\r\n error\r\n } = home\r\n const { singlePage } = page\r\n setIsSubmit(isSubmitting)\r\n if (isPaymentSuccess && orderResponse !== undefined) {\r\n const { orderURL } = orderResponse.order\r\n dispatch(clearPaymentData())\r\n window.location.href = orderURL\r\n }\r\n if (isPaymentFailure && error !== undefined) {\r\n setErrorData(error)\r\n }\r\n setSinglePage(singlePage)\r\n }, [home, dispatch, page])\r\n\r\n let initials: string[] = []\r\n let name = ''\r\n if (singlePage !== undefined) {\r\n initials = singlePage.pageName.match(/\\b\\w/g) || []\r\n name = ((initials.shift() || '') + (initials.pop() || '')).toUpperCase()\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {singlePage !== undefined && singlePage.logo !== '' ? (\r\n \r\n ) : (\r\n \r\n {name}\r\n \r\n )}\r\n

{values.pageTitle}

\r\n

{values.pageDescription}

\r\n
\r\n \r\n \r\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 withRouter(Pay)\r\n","import React, { useState } from 'react'\r\nimport { Row, Col, Form, Input, Button, Alert, Select } from 'antd'\r\nimport { Merchant, Page, Fee } from '../../interfaces'\r\nimport { PayCircleOutlined } from '@ant-design/icons'\r\nimport { isEmpty } from '../../helpers/isEmpty'\r\nimport PhoneInput from 'react-phone-input-2'\r\nimport 'react-phone-input-2/lib/style.css'\r\n\r\ninterface PaymentFormProps {\r\n page: Page\r\n onSubmit(values: Merchant): void\r\n isSubmit: boolean\r\n error: any\r\n fee: Fee | undefined\r\n onCalculateFee(e: React.FormEvent): void\r\n translate: any\r\n isDefault: boolean\r\n momoProviders: any[]\r\n urlAmount: any\r\n urlReference: any\r\n urlCusName: any\r\n urlCusPhone: any\r\n urlCusEmail: any\r\n redirectURL: any\r\n}\r\n\r\nexport const PaymentForm: React.FC = ({\r\n page,\r\n onSubmit,\r\n error,\r\n isSubmit,\r\n fee,\r\n onCalculateFee,\r\n translate,\r\n isDefault,\r\n momoProviders,\r\n urlAmount,\r\n urlReference,\r\n urlCusEmail,\r\n urlCusName,\r\n urlCusPhone,\r\n redirectURL\r\n}) => {\r\n const [values] = useState({\r\n amount: page.amount !== '' ? page.amount : urlAmount ? urlAmount : '',\r\n currency: page.currency,\r\n customerEmailAddress: urlCusEmail ? urlCusEmail : '',\r\n customerFullName: urlCusName ? urlCusName : '',\r\n customerPhoneNumber: urlCusPhone ? urlCusPhone : '',\r\n pageDescription: page.description,\r\n pageLogo: '',\r\n pageTitle: page.pageName,\r\n processId: page.processId,\r\n redirectURL: redirectURL ? redirectURL : page.redirectURL,\r\n transactionReference:\r\n page.transactionReference !== ''\r\n ? page.transactionReference\r\n : urlReference\r\n ? urlReference\r\n : '',\r\n paymentPageId: page.paymentPageId,\r\n momoProvider: '',\r\n momoAccountNumber: '',\r\n paymentInfo: {}\r\n })\r\n const { Option } = Select\r\n\r\n return (\r\n \r\n \r\n {!isEmpty(error) ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n {page.customerName === 'true' ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {page.emailAddress === 'true' ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {page.phoneNumber === 'true' ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {page.amount !== '' || urlAmount !== null ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n \r\n */}\r\n {/* \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n onCalculateFee(e)}\r\n />\r\n \r\n \r\n {/* \r\n \r\n \r\n \r\n */}\r\n {/* \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {!isDefault ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n {page.transactionReference !== '' || urlReference !== null ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","export default __webpack_public_path__ + \"static/media/visa-master-card.055ed10c.jpg\";","export default __webpack_public_path__ + \"static/media/mobile-wallets.6c5ac55a.jpg\";","import React, { useState, useEffect } from 'react'\r\nimport { useParams, withRouter, useLocation } from 'react-router-dom'\r\nimport {\r\n Layout,\r\n Row,\r\n Col,\r\n Image,\r\n Avatar,\r\n Spin,\r\n Empty,\r\n /*message,*/\r\n Button,\r\n Modal,\r\n notification\r\n} from 'antd'\r\nimport { ArrowLeftOutlined } from '@ant-design/icons'\r\nimport { useDispatch } from 'react-redux'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { PaymentForm } from '../components/[genericPay]/PaymentForm'\r\nimport visa from '../images/visa.png'\r\nimport mastercard from '../images/master-card.png'\r\nimport creditDebitCards from '../images/logos/visa-master-card.jpg'\r\nimport mobileWallets from '../images/logos/mobile-wallets.jpg'\r\nimport { Merchant, Error, Page, Fee } from '../interfaces'\r\nimport {\r\n paymentRequest,\r\n clearPaymentData,\r\n mobilePaymentRequest,\r\n checkMobileStatusRequest\r\n} from '../store/home'\r\nimport {\r\n paymentPageRequest,\r\n getProvidersRequest,\r\n clearStates,\r\n postFeeRequest,\r\n clearFee\r\n} from '../store/payment-pages'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Language } from '../components/menu/Language'\r\n\r\ninterface GenericPayProps {}\r\n\r\ninterface ParamProps {\r\n processId: string\r\n}\r\n\r\nconst GenericPay: React.FC = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { Content } = Layout\r\n const { processId } = useParams()\r\n const home = appSelector((state) => state.home)\r\n const page = appSelector((state) => state.page)\r\n const [singlePage, setSinglePage] = useState(undefined)\r\n const [loading, setLoading] = useState(false)\r\n const [isSubmit, setIsSubmit] = useState(false)\r\n const [isMomoSubmit, setIsMomoSubmit] = useState(false)\r\n const [isShowOptions, setIsShowOptions] = useState(true)\r\n const [isPayWithCard, setIsPayWithCard] = useState(false)\r\n const [isPayWithMomo, setIsPayWithMomo] = useState(false)\r\n const [momoProviders, setMomoProviders] = useState([])\r\n const [errorData, setErrorData] = useState({})\r\n const query = new URLSearchParams(useLocation().search)\r\n const transactionStatus = query.get('transactionStatus')\r\n const [fee, setFee] = useState(undefined)\r\n const { t } = useTranslation()\r\n const [counter, setCounter] = useState(1)\r\n const [isMobilePaymentSuccess, setIsMobilePaymentSuccess] = useState(false)\r\n const urlAmount = query.get('amount')\r\n const urlReference = query.get('transactionReference')\r\n const urlCusName = query.get('customerFullName')\r\n const urlCusPhone = query.get('customerPhoneNumber')\r\n const urlCusEmail = query.get('customerEmailAddress')\r\n const redirectURL = query.get('redirectURL')\r\n\r\n useEffect(() => {\r\n dispatch(clearStates())\r\n dispatch(clearPaymentData())\r\n dispatch(clearFee())\r\n dispatch(paymentPageRequest(processId))\r\n dispatch(getProvidersRequest())\r\n if (!isEmpty(transactionStatus)) {\r\n switch (transactionStatus) {\r\n case 'PENDING':\r\n notification['info']({\r\n message: 'Oops',\r\n description: 'Transaction is Pending'\r\n })\r\n break\r\n case 'SUCCESS':\r\n notification['success']({\r\n message: 'Nice!',\r\n description: 'Transaction was successful'\r\n })\r\n\r\n break\r\n case 'FAILED':\r\n notification['error']({\r\n message: 'Oops',\r\n description: 'Transaction has failed'\r\n })\r\n break\r\n case 'DECLINED':\r\n notification['error']({\r\n message: 'Oops',\r\n description: 'Transaction was declined'\r\n })\r\n break\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { singlePage, loading, fee, providers } = page\r\n const {\r\n isPaymentFailure,\r\n isPaymentSuccess,\r\n isSubmitting,\r\n orderResponse,\r\n error,\r\n mobilePaymentSubmit,\r\n mobilePaymentSuccess,\r\n trxStatus,\r\n mobileResponse\r\n } = home\r\n setSinglePage(singlePage)\r\n setLoading(loading)\r\n setIsSubmit(isSubmitting)\r\n setIsMomoSubmit(mobilePaymentSubmit)\r\n setIsMobilePaymentSuccess(mobilePaymentSuccess)\r\n if (isPaymentSuccess && orderResponse !== undefined) {\r\n const { orderURL } = orderResponse.order\r\n dispatch(clearPaymentData())\r\n window.location.href = orderURL\r\n }\r\n if (isPaymentFailure && error !== undefined) {\r\n setErrorData(error)\r\n }\r\n if (mobilePaymentSuccess && !isEmpty(mobileResponse)) {\r\n if (counter <= 3) {\r\n setInterval(() => {\r\n dispatch(checkMobileStatusRequest(mobileResponse.transactionId))\r\n setCounter(counter + 1)\r\n }, 10000)\r\n } else {\r\n if (singlePage) {\r\n window.location.href = `${\r\n redirectURL ? redirectURL : singlePage.redirectURL\r\n }?systemReference=${mobileResponse.transactionId}&transactionStatus=${\r\n trxStatus.status\r\n }&transactionReference=${urlReference ? urlReference : singlePage.transactionReference}`\r\n dispatch(clearPaymentData())\r\n }\r\n }\r\n }\r\n\r\n if (!isEmpty(trxStatus) && mobilePaymentSuccess) {\r\n switch (trxStatus.status) {\r\n case 'SUCCESS':\r\n if (singlePage) {\r\n window.location.href = `${\r\n redirectURL ? redirectURL : singlePage.redirectURL\r\n }?systemReference=${mobileResponse.transactionId}&transactionStatus=${\r\n trxStatus.status\r\n }&transactionReference=${urlReference ? urlReference : singlePage.transactionReference}`\r\n dispatch(clearPaymentData())\r\n }\r\n break\r\n case 'FAILED':\r\n if (singlePage) {\r\n window.location.href = `${\r\n redirectURL ? redirectURL : singlePage.redirectURL\r\n }?systemReference=${mobileResponse.transactionId}&transactionStatus=${\r\n trxStatus.status\r\n }&transactionReference=${urlReference ? urlReference : singlePage.transactionReference}`\r\n dispatch(clearPaymentData())\r\n }\r\n break\r\n }\r\n }\r\n // if (singlePage !== undefined && fee === undefined) {\r\n // if (singlePage.amount !== '') {\r\n // const payload = {\r\n // data: {\r\n // Amount: singlePage.amount,\r\n // processId: singlePage.processId,\r\n // },\r\n // };\r\n // }\r\n // }\r\n setFee(fee)\r\n setMomoProviders(providers)\r\n }, [page, home, dispatch, counter, redirectURL, urlReference])\r\n\r\n const onSubmit = (values: Merchant) => {\r\n if (isPayWithCard) {\r\n dispatch(paymentRequest(values))\r\n }\r\n if (isPayWithMomo) {\r\n const PaymentInfo = {\r\n Channel: 'MOBILEWALLET',\r\n Provider: values.momoProvider,\r\n WalletID: values.momoAccountNumber\r\n }\r\n\r\n values.paymentInfo = PaymentInfo\r\n dispatch(mobilePaymentRequest(values))\r\n }\r\n }\r\n\r\n const onCalculateFee = (e: React.FormEvent) => {\r\n const { value } = e.target as HTMLTextAreaElement\r\n const payload = {\r\n data: {\r\n Amount: value,\r\n processId: singlePage!.processId\r\n }\r\n }\r\n dispatch(postFeeRequest(payload))\r\n }\r\n\r\n let initials: string[] = []\r\n let name = ''\r\n if (singlePage !== undefined) {\r\n initials = singlePage.pageName.match(/\\b\\w/g) || []\r\n name = ((initials.shift() || '') + (initials.pop() || '')).toUpperCase()\r\n }\r\n\r\n let render: React.ReactNode,\r\n form: React.ReactNode,\r\n methodsMoMo: React.ReactNode,\r\n methodsCard: React.ReactNode,\r\n paymentOptions: React.ReactNode\r\n if (loading) {\r\n render = (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n if (!loading && singlePage === undefined) {\r\n render = (\r\n \r\n )\r\n }\r\n\r\n if (!loading && singlePage !== undefined) {\r\n render = (\r\n \r\n
\r\n {singlePage !== undefined && singlePage.logo !== '' ? (\r\n \r\n ) : (\r\n \r\n {name}\r\n \r\n )}\r\n

{singlePage.pageName}

\r\n

{singlePage.description}

\r\n
\r\n \r\n )\r\n form = (\r\n \r\n \r\n }\r\n onClick={() => {\r\n setIsPayWithMomo(false)\r\n setIsPayWithCard(false)\r\n setIsShowOptions(true)\r\n }}\r\n >\r\n {t('general.Select another payment option')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n methodsMoMo = (\r\n \r\n
\r\n \r\n
\r\n \r\n )\r\n methodsCard = (\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n )\r\n paymentOptions = (\r\n \r\n \r\n {\r\n setIsPayWithCard(true)\r\n setIsShowOptions(false)\r\n }}\r\n >\r\n \"Pay\r\n

{t('general.Pay with Credit/Debit Card')}

\r\n \r\n \r\n \r\n {\r\n setIsPayWithMomo(true)\r\n setIsShowOptions(false)\r\n }}\r\n >\r\n \"Pay\r\n

{t('general.Pay with Mobile Wallets')}

\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {render}\r\n \r\n {isShowOptions ? paymentOptions : null}\r\n {isPayWithCard || isPayWithMomo ? form : null}\r\n {isPayWithCard || isPayWithMomo ? (isPayWithCard ? methodsCard : methodsMoMo) : null}\r\n \r\n \r\n \r\n \r\n \r\n

{t('general.Complete the payment on your phone. We are waiting...')}

\r\n \r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default withRouter(GenericPay)\r\n","import React, { useState } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Layout, Row, Col } from 'antd';\r\nimport { path } from '../helpers/path';\r\nimport { Merchant } from '../interfaces';\r\n\r\ninterface ExamplePayProps {}\r\n\r\nconst ExamplePay: React.FC = () => {\r\n const { Content } = Layout;\r\n\r\n const [values] = useState({\r\n pageTitle: 'INRB COVID-19 TEST',\r\n pageLogo: 'https://inrbcovid.com/images/inrb_logo.png',\r\n pageDescription: 'Sample description',\r\n customerFullName: 'Mike Wazowski',\r\n customerPhoneNumber: '+2430990998098',\r\n customerEmailAddress: 'example@user.com',\r\n transactionReference: 'TRW344232134',\r\n currency: 'USD',\r\n amount: '40',\r\n redirectURL: 'https://inrbcovid.com/transaction-status',\r\n processId: 'b255c76a-41cc-4398-bfd2-b2f9e3238c2d',\r\n paymentPageId: 0,\r\n momoAccountNumber :'',\r\n momoProvider: '',\r\n paymentInfo: {}\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withRouter(ExamplePay);\r\n","import { DataStream, MerchantOverviewReport } from '../../interfaces';\r\n\r\nexport enum MerchantsOverviewTypes {\r\n GET_MERCHANTS_OVERVIEW = '@@merchant-overview/GET_MERCHANTS_OVERVIEW',\r\n GET_MERCHANTS_OVERVIEW_SUCCESS = '@@merchant-overview/GET_MERCHANTS_OVERVIEW_SUCCESS',\r\n GET_MERCHANTS_OVERVIEW_FAILURE = '@@merchant-overview/GET_MERCHANTS_OVERVIEW_FAILURE',\r\n EXPORT_OVERVIEW_REQUEST = '@@merchant-overview/EXPORT_OVERVIEW_REQUEST',\r\n EXPORT_OVERVIEW_SUCCESS = '@@merchant-overview/EXPORT_OVERVIEW_SUCCESS',\r\n EXPORT_OVERVIEW_FAILURE = '@@merchant-overview/EXPORT_OVERVIEW_FAILURE',\r\n CLEAR_OVERVIEW = '@@merchant-overview/CLEAR_OVERVIEW',\r\n}\r\n\r\nexport type MerchantsOverviewState = {\r\n readonly overviews: MerchantOverviewReport | null;\r\n readonly loading: boolean;\r\n readonly error: any;\r\n readonly isExporting: boolean;\r\n readonly isExportSuccess: boolean;\r\n readonly isExportError: boolean;\r\n readonly exportStream: DataStream | undefined;\r\n};\r\n","import { Reducer } from 'redux';\r\nimport { MerchantsOverviewState, MerchantsOverviewTypes } from './types';\r\nimport { AuthActionTypes } from '../auth';\r\n\r\nexport const initialState: MerchantsOverviewState = {\r\n error: undefined,\r\n exportStream: undefined,\r\n isExportError: false,\r\n isExportSuccess: false,\r\n isExporting: false,\r\n loading: false,\r\n overviews: null,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = initialState,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case MerchantsOverviewTypes.GET_MERCHANTS_OVERVIEW:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined,\r\n };\r\n case MerchantsOverviewTypes.GET_MERCHANTS_OVERVIEW_SUCCESS:\r\n return {\r\n ...state,\r\n overviews: action.payload,\r\n loading: false,\r\n };\r\n case MerchantsOverviewTypes.GET_MERCHANTS_OVERVIEW_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n\r\n case MerchantsOverviewTypes.CLEAR_OVERVIEW:\r\n return {\r\n ...state,\r\n overviews: null,\r\n };\r\n case MerchantsOverviewTypes.EXPORT_OVERVIEW_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true,\r\n };\r\n case MerchantsOverviewTypes.EXPORT_OVERVIEW_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined,\r\n };\r\n case MerchantsOverviewTypes.EXPORT_OVERVIEW_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload,\r\n };\r\n\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as overviewReducer };\r\n","import { action } from 'typesafe-actions'\r\nimport { MerchantsOverviewTypes } from './types'\r\nimport { MerchantOverviewReport, DataStream } from '../../interfaces'\r\n\r\nexport const getMerchantsOverview = (payload: any) =>\r\n action(MerchantsOverviewTypes.GET_MERCHANTS_OVERVIEW, payload)\r\n\r\nexport const getMerchantsOverviewSuccess = (data: MerchantOverviewReport) =>\r\n action(MerchantsOverviewTypes.GET_MERCHANTS_OVERVIEW_SUCCESS, data)\r\n\r\nexport const getMerchantsOverviewFailure = (error: any) =>\r\n action(MerchantsOverviewTypes.GET_MERCHANTS_OVERVIEW_FAILURE, error)\r\n\r\nexport const exportOverviewRequest = (payload: any) =>\r\n action(MerchantsOverviewTypes.EXPORT_OVERVIEW_REQUEST, payload)\r\n\r\nexport const exportOverviewSuccess = (data: DataStream) =>\r\n action(MerchantsOverviewTypes.EXPORT_OVERVIEW_SUCCESS, data)\r\n\r\nexport const exportOverviewFailure = (error: any) =>\r\n action(MerchantsOverviewTypes.EXPORT_OVERVIEW_FAILURE, error)\r\n\r\nexport const clearOverview = () => action(MerchantsOverviewTypes.CLEAR_OVERVIEW)\r\n","import React, { lazy, Suspense, useEffect, useState, Fragment } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Button } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport {\r\n getMerchantsOverview,\r\n exportOverviewRequest\r\n} from '../store/merchant-overview'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport {\r\n MerchantOverview,\r\n MerchantData,\r\n MerchantOverviewReport\r\n} from '../interfaces'\r\nimport { getMerchantsRequest } from '../store/reports'\r\nimport moment from 'moment'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\nconst Filters = lazy(() => import('../components/merchants-overview/Filters'))\r\nconst Cards = lazy(() => import('../components/merchants-overview/Cards'))\r\nconst Details = lazy(() => import('../components/merchants-overview/Details'))\r\nconst CurrencyFilter = lazy(\r\n () => import('../components/merchants-overview/CurrencyFilter')\r\n)\r\nconst EmptyBox = lazy(() => import('../components/merchants-overview/EmptyBox'))\r\n\r\nconst { Content } = Layout\r\n\r\nconst MerchantsOverview = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const overviewsStore = appSelector((state) => state.overviews)\r\n const reports = appSelector((state) => state.reports)\r\n const [overviewReport, setOverviewReport] =\r\n useState(null)\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const [exportType, setExportType] = useState('')\r\n const [fromDate, setFromDate] = useState('')\r\n const [toDate, setToDate] = useState('')\r\n const [overviewdata, setOverviewdata] = useState([])\r\n const [merchant, setMerchant] = useState(null)\r\n const [currency, setCurrency] = useState('USD')\r\n const [loading, setLoading] = useState(false)\r\n const [isExporting, setIsExporting] = useState(false)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [isSearching, setIsSearching] = useState(false)\r\n const [currentPage, setCurrentPage] = useState(1)\r\n\r\n const getSearchParams = () => ({\r\n currency,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant?.name || '',\r\n exportType,\r\n pageSize,\r\n skip,\r\n fixedPeriod: 'overall'\r\n })\r\n\r\n useEffect(() => {\r\n const { merchants } = reports\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { loading, overviews, isExporting } = overviewsStore\r\n const { merchants } = reports\r\n setLoading(loading)\r\n setOverviewdata(overviews && !isEmpty(overviews.data) ? overviews.data : [])\r\n setOverviewReport(overviews)\r\n setMerchants(merchants)\r\n setIsExporting(isExporting)\r\n }, [overviewsStore, reports])\r\n\r\n const reloadOverviews = () => {\r\n const searchParams = getSearchParams()\r\n dispatch(getMerchantsOverview(searchParams))\r\n }\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type)\r\n const searchParams = getSearchParams()\r\n searchParams.exportType = type\r\n dispatch(exportOverviewRequest(searchParams))\r\n }\r\n\r\n const onLoadMore = (page: number, size: number) => {\r\n const newSkip = page - 1\r\n setPageSize(size)\r\n setSkip(newSkip)\r\n setCurrentPage(page)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.skip = newSkip\r\n searchParams.pageSize = size\r\n \r\n dispatch(getMerchantsOverview(searchParams))\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n setFromDate('')\r\n setToDate('')\r\n setMerchant(null)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n setIsSearching(false)\r\n \r\n const resetParams = {\r\n currency,\r\n periodFrom: '',\r\n periodTo: '',\r\n merchant: '',\r\n exportType: '',\r\n pageSize: 10,\r\n skip: 0,\r\n fixedPeriod: 'overall'\r\n }\r\n \r\n dispatch(getMerchantsOverview(resetParams))\r\n }\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.currency = value\r\n searchParams.skip = 0\r\n \r\n dispatch(getMerchantsOverview(searchParams))\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const { periodFrom, periodTo, merchant: merchantId } = values\r\n let m: MerchantData | undefined = undefined\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n \r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setFromDate(pFrom)\r\n setToDate(pTo)\r\n }\r\n \r\n if (merchantId !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchantId)\r\n setMerchant(m !== undefined ? m : null)\r\n } else {\r\n setMerchant(null)\r\n }\r\n\r\n const searchParams = {\r\n currency,\r\n periodFrom: pFrom,\r\n periodTo: pTo,\r\n merchant: m?.name || '',\r\n exportType: '',\r\n pageSize,\r\n skip: 0,\r\n fixedPeriod: 'overall'\r\n }\r\n \r\n dispatch(getMerchantsOverview(searchParams))\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n \r\n
\r\n \r\n

\r\n {t('general.merchantsTable')}\r\n

\r\n
\r\n <>\r\n onExportClick('EXCEL')}\r\n loading={isExporting && exportType === 'EXCEL'}\r\n disabled={isEmpty(overviewdata)}\r\n >\r\n {t('general.export-excel')}\r\n \r\n \r\n reloadOverviews()}\r\n >\r\n {t('general.refresh')}\r\n \r\n
\r\n
\r\n \r\n \r\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 withRouter(MerchantsOverview)\r\n","import { DataStream, MerchantChannelReport } from '../../interfaces'\r\n\r\nexport enum MerchantsChannelsTypes {\r\n GET_MERCHANTS_CHANNELS = '@@merchant-channels/GET_MERCHANTS_CHANNELS',\r\n GET_MERCHANTS_CHANNELS_SUCCESS = '@@merchant-channels/GET_MERCHANTS_CHANNELS_SUCCESS',\r\n GET_MERCHANTS_CHANNELS_FAILURE = '@@merchant-channels/GET_MERCHANTS_CHANNELS_FAILURE',\r\n EXPORT_CHANNELS_REQUEST = '@@merchant-channels/EXPORT_CHANNELS_REQUEST',\r\n EXPORT_CHANNELS_SUCCESS = '@@merchant-channels/EXPORT_CHANNELS_SUCCESS',\r\n EXPORT_CHANNELS_FAILURE = '@@merchant-channels/EXPORT_CHANNELS_FAILURE',\r\n CLEAR_CHANNELS = '@@merchant-channels/CLEAR_CHANNELS'\r\n}\r\n\r\nexport type MerchantsChannelsState = {\r\n readonly channels: MerchantChannelReport | null\r\n readonly loading: boolean\r\n readonly error: any\r\n readonly isExporting: boolean\r\n readonly isExportSuccess: boolean\r\n readonly isExportError: boolean\r\n readonly exportStream: DataStream | undefined\r\n}\r\n","import { Reducer } from 'redux'\r\nimport { MerchantsChannelsState, MerchantsChannelsTypes } from './types'\r\nimport { AuthActionTypes } from '../auth'\r\n\r\nexport const initialState: MerchantsChannelsState = {\r\n error: undefined,\r\n exportStream: undefined,\r\n isExportError: false,\r\n isExportSuccess: false,\r\n isExporting: false,\r\n loading: false,\r\n channels: null\r\n}\r\n\r\nconst reducer: Reducer = (\r\n state = initialState,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case MerchantsChannelsTypes.GET_MERCHANTS_CHANNELS:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined\r\n }\r\n case MerchantsChannelsTypes.GET_MERCHANTS_CHANNELS_SUCCESS:\r\n return {\r\n ...state,\r\n channels: action.payload,\r\n loading: false\r\n }\r\n case MerchantsChannelsTypes.GET_MERCHANTS_CHANNELS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload\r\n }\r\n\r\n case MerchantsChannelsTypes.CLEAR_CHANNELS:\r\n return {\r\n ...state,\r\n overviews: null\r\n }\r\n case MerchantsChannelsTypes.EXPORT_CHANNELS_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true\r\n }\r\n case MerchantsChannelsTypes.EXPORT_CHANNELS_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined\r\n }\r\n case MerchantsChannelsTypes.EXPORT_CHANNELS_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload\r\n }\r\n\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport { reducer as channelsReducer }\r\n","import { action } from 'typesafe-actions'\r\nimport { MerchantsChannelsTypes } from './types'\r\nimport { MerchantChannelReport, DataStream } from '../../interfaces'\r\n\r\nexport const getMerchantsChannels = (payload: any) =>\r\n action(MerchantsChannelsTypes.GET_MERCHANTS_CHANNELS, payload)\r\n\r\nexport const getMerchantsChannelsSuccess = (data: MerchantChannelReport) =>\r\n action(MerchantsChannelsTypes.GET_MERCHANTS_CHANNELS_SUCCESS, data)\r\n\r\nexport const getMerchantsChannelsFailure = (error: any) =>\r\n action(MerchantsChannelsTypes.GET_MERCHANTS_CHANNELS_FAILURE, error)\r\n\r\nexport const exportChannelsRequest = (payload: any) =>\r\n action(MerchantsChannelsTypes.EXPORT_CHANNELS_REQUEST, payload)\r\n\r\nexport const exportChannelsSuccess = (data: DataStream) =>\r\n action(MerchantsChannelsTypes.EXPORT_CHANNELS_SUCCESS, data)\r\n\r\nexport const exportChannelsFailure = (error: any) =>\r\n action(MerchantsChannelsTypes.EXPORT_CHANNELS_FAILURE, error)\r\n\r\nexport const clearChannels = () => action(MerchantsChannelsTypes.CLEAR_CHANNELS)\r\n","import React, { lazy, Suspense, useEffect, useState, Fragment } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Button } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport {\r\n getMerchantsChannels,\r\n exportChannelsRequest\r\n} from '../store/merchant-channels'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport {\r\n MerchantChannel,\r\n MerchantData,\r\n MerchantChannelReport\r\n} from '../interfaces'\r\nimport moment from 'moment'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { getMerchantsRequest } from '../store/reports'\r\n\r\nconst Filters = lazy(() => import('../components/merchants-channels/Filters'))\r\nconst Details = lazy(() => import('../components/merchants-channels/Details'))\r\nconst CurrencyFilter = lazy(\r\n () => import('../components/merchants-channels/CurrencyFilter')\r\n)\r\nconst EmptyBox = lazy(() => import('../components/merchants-channels/EmptyBox'))\r\n\r\nconst { Content } = Layout\r\n\r\nconst MerchantsChannels = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const channelStore = appSelector((state) => state.channels)\r\n const reports = appSelector((state) => state.reports)\r\n const [channelReport, setChannelReport] =\r\n useState(null)\r\n const [channels, setChannels] = useState([])\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const [exportType, setExportType] = useState('')\r\n const [fromDate, setFromDate] = useState('')\r\n const [toDate, setToDate] = useState('')\r\n const [merchant, setMerchant] = useState(null)\r\n const [currency, setCurrency] = useState('USD')\r\n const [loading, setLoading] = useState(false)\r\n const [isExporting, setIsExporting] = useState(false)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [isSearching, setIsSearching] = useState(false)\r\n const [currentPage, setCurrentPage] = useState(1)\r\n\r\n const getSearchParams = () => ({\r\n currency,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant?.name || null,\r\n exportType,\r\n pageSize,\r\n skip,\r\n fixedPeriod: 'overall',\r\n reportType: null,\r\n product: null,\r\n status: null,\r\n channel: null,\r\n searchValue: null\r\n })\r\n\r\n useEffect(() => {\r\n const { merchants } = reports\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { loading, channels, isExporting } = channelStore\r\n const { merchants } = reports\r\n setLoading(loading)\r\n setChannels(channels && !isEmpty(channels.data) ? channels.data : [])\r\n setChannelReport(channels)\r\n setMerchants(merchants)\r\n setIsExporting(isExporting)\r\n }, [channelStore, reports])\r\n\r\n const reloadChannels = () => {\r\n const searchParams = getSearchParams()\r\n dispatch(getMerchantsChannels(searchParams))\r\n }\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type)\r\n const searchParams = getSearchParams()\r\n searchParams.exportType = type\r\n dispatch(exportChannelsRequest(searchParams))\r\n }\r\n\r\n const onLoadMore = (page: number, size: number) => {\r\n const newSkip = page - 1\r\n setPageSize(size)\r\n setSkip(newSkip)\r\n setCurrentPage(page)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.skip = newSkip\r\n searchParams.pageSize = size\r\n \r\n dispatch(getMerchantsChannels(searchParams))\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n setFromDate('')\r\n setToDate('')\r\n setMerchant(null)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n setIsSearching(false)\r\n \r\n const resetParams = {\r\n currency,\r\n periodFrom: '',\r\n periodTo: '',\r\n merchant: null,\r\n exportType: '',\r\n pageSize: 10,\r\n skip: 0,\r\n fixedPeriod: 'overall',\r\n reportType: null,\r\n product: null,\r\n status: null,\r\n channel: null,\r\n searchValue: null\r\n }\r\n \r\n dispatch(getMerchantsChannels(resetParams))\r\n }\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.currency = value\r\n searchParams.skip = 0\r\n \r\n dispatch(getMerchantsChannels(searchParams))\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const { periodFrom, periodTo, merchant: merchantId } = values\r\n let m: MerchantData | undefined = undefined\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n \r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setFromDate(pFrom)\r\n setToDate(pTo)\r\n }\r\n \r\n if (merchantId !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchantId)\r\n setMerchant(m !== undefined ? m : null)\r\n } else {\r\n setMerchant(null)\r\n }\r\n\r\n const searchParams = {\r\n currency,\r\n periodFrom: pFrom,\r\n periodTo: pTo,\r\n merchant: m?.name || null,\r\n exportType: '',\r\n pageSize,\r\n skip: 0,\r\n fixedPeriod: 'overall',\r\n reportType: null,\r\n product: null,\r\n status: null,\r\n channel: null,\r\n searchValue: null\r\n }\r\n \r\n dispatch(getMerchantsChannels(searchParams))\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n
\r\n \r\n

\r\n {t('general.merchantsTable')}\r\n

\r\n
\r\n <>\r\n onExportClick('EXCEL')}\r\n loading={isExporting && exportType === 'EXCEL'}\r\n disabled={!channels.length}\r\n >\r\n {t('general.export-excel')}\r\n \r\n \r\n reloadChannels()}\r\n >\r\n {t('general.refresh')}\r\n \r\n
\r\n
\r\n \r\n \r\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 withRouter(MerchantsChannels)\r\n","import { VASProcessedReport, DataStream } from '../../interfaces';\r\n\r\nexport enum VASProcessedTypes {\r\n GET_VAS_REQUEST = '@@vas/GET_VAS_REQUEST',\r\n GET_VAS_SUCCESS = '@@vas/GET_VAS_SUCCESS',\r\n GET_VAS_FAILURE = '@@vas/GET_VAS_FAILURE',\r\n EXPORT_VAS_REQUEST = '@@vas/EXPORT_VAS_REQUEST',\r\n EXPORT_VAS_SUCCESS = '@@vas/EXPORT_VAS_SUCCESS',\r\n EXPORT_VAS_FAILURE = '@@vas/EXPORT_VAS_FAILURE',\r\n CLEAR_VAS = '@@vas/CLEAR_VAS',\r\n}\r\n\r\nexport type VASProcessedState = {\r\n readonly vas: VASProcessedReport | null;\r\n readonly loading: boolean;\r\n readonly error: any;\r\n readonly isExporting: boolean;\r\n readonly isExportSuccess: boolean;\r\n readonly isExportError: boolean;\r\n readonly exportStream: DataStream | undefined;\r\n};\r\n","import { Reducer } from 'redux';\r\nimport { VASProcessedState, VASProcessedTypes } from './types';\r\nimport { AuthActionTypes } from '../auth';\r\n\r\nexport const initialState: VASProcessedState = {\r\n error: undefined,\r\n exportStream: undefined,\r\n isExportError: false,\r\n isExportSuccess: false,\r\n isExporting: false,\r\n loading: false,\r\n vas: null,\r\n};\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case VASProcessedTypes.GET_VAS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined,\r\n };\r\n case VASProcessedTypes.GET_VAS_SUCCESS:\r\n return {\r\n ...state,\r\n vas: action.payload,\r\n loading: false,\r\n };\r\n case VASProcessedTypes.GET_VAS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n\r\n case VASProcessedTypes.CLEAR_VAS:\r\n return {\r\n ...state,\r\n vas: null,\r\n };\r\n case VASProcessedTypes.EXPORT_VAS_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true,\r\n };\r\n case VASProcessedTypes.EXPORT_VAS_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined,\r\n };\r\n case VASProcessedTypes.EXPORT_VAS_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload,\r\n };\r\n\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as vasReducer };\r\n","import { action } from 'typesafe-actions';\r\nimport { VASProcessedTypes } from './types';\r\nimport { VASProcessed, DataStream } from '../../interfaces';\r\n\r\nexport const getVasRequest = (payload: any) =>\r\n action(VASProcessedTypes.GET_VAS_REQUEST, payload);\r\n\r\nexport const getVasSuccess = (data: VASProcessed[]) =>\r\n action(VASProcessedTypes.GET_VAS_SUCCESS, data);\r\n\r\nexport const getVasFailure = (error: any) =>\r\n action(VASProcessedTypes.GET_VAS_FAILURE, error);\r\n\r\nexport const exportVASRequest = (payload: any) =>\r\n action(VASProcessedTypes.EXPORT_VAS_REQUEST, payload);\r\n\r\nexport const exportVASSuccess = (data: DataStream) =>\r\n action(VASProcessedTypes.EXPORT_VAS_FAILURE, data);\r\n\r\nexport const exportVASFailure = (error: any) =>\r\n action(VASProcessedTypes.EXPORT_VAS_FAILURE, error);\r\n\r\nexport const clearVAS = () => action(VASProcessedTypes.CLEAR_VAS);\r\n","import React, { lazy, Suspense, useEffect, useState, Fragment } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Button } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { getVasRequest, exportVASRequest } from '../store/vas-processed'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { VASProcessed, MerchantData, VASProcessedReport, VASService } from '../interfaces'\r\nimport { getMerchantsRequest, getVASServiceRequest } from '../store/reports'\r\nimport moment from 'moment'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\nconst Filters = lazy(() => import('../components/vas-processed/Filters'))\r\n// const Cards = lazy(() => import('../components/vas-processed/Cards'))\r\nconst Details = lazy(() => import('../components/vas-processed/Details'))\r\nconst CurrencyFilter = lazy(() => import('../components/vas-processed/CurrencyFilter'))\r\nconst EmptyBox = lazy(() => import('../components/vas-processed/EmptyBox'))\r\n\r\nconst { Content } = Layout\r\n\r\nconst VASProcessedPage = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const vasStore = appSelector((state) => state.vas)\r\n const reports = appSelector((state) => state.reports)\r\n const [vasReport, setVasReport] = useState(null)\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const [vasservices, setVasServices] = useState(reports.vasservices)\r\n const [exportType, setExportType] = useState('')\r\n const [fromDate, setFromDate] = useState('')\r\n const [toDate, setToDate] = useState('')\r\n const [processType, setProcessType] = useState('')\r\n const [vasData, setVasData] = useState([])\r\n const [merchant, setMerchant] = useState(null)\r\n const [currency, setCurrency] = useState('USD')\r\n const [loading, setLoading] = useState(false)\r\n const [isExporting, setIsExporting] = useState(false)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [isSearching, setIsSearching] = useState(false)\r\n const [currentPage, setCurrentPage] = useState(1)\r\n\r\n const getSearchParams = () => ({\r\n currency,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant?.name || '',\r\n exportType,\r\n pageSize,\r\n skip,\r\n fixedPeriod: 'overall',\r\n processTypeId: processType\r\n })\r\n\r\n useEffect(() => {\r\n dispatch(getMerchantsRequest())\r\n dispatch(getVASServiceRequest())\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { loading, vas, isExporting } = vasStore\r\n const { merchants, vasservices } = reports\r\n setLoading(loading)\r\n setVasData(vas && !isEmpty(vas.data) ? vas.data : [])\r\n setVasReport(vas)\r\n setMerchants(merchants)\r\n setIsExporting(isExporting)\r\n setVasServices(vasservices)\r\n }, [vasStore, reports])\r\n\r\n const reloadOverviews = () => {\r\n const searchParams = getSearchParams()\r\n dispatch(getVasRequest(searchParams))\r\n }\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type)\r\n const searchParams = getSearchParams()\r\n searchParams.exportType = type\r\n dispatch(exportVASRequest(searchParams))\r\n }\r\n\r\n const onLoadMore = (page: number, size: number) => {\r\n const newSkip = page - 1\r\n setPageSize(size)\r\n setSkip(newSkip)\r\n setCurrentPage(page)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.skip = newSkip\r\n searchParams.pageSize = size\r\n \r\n dispatch(getVasRequest(searchParams))\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n setFromDate('')\r\n setToDate('')\r\n setMerchant(null)\r\n setProcessType('')\r\n setSkip(0)\r\n setCurrentPage(1)\r\n setIsSearching(false)\r\n \r\n const resetParams = {\r\n currency,\r\n periodFrom: '',\r\n periodTo: '',\r\n merchant: '',\r\n exportType: '',\r\n pageSize: 10,\r\n skip: 0,\r\n fixedPeriod: 'overall',\r\n processTypeId: ''\r\n }\r\n \r\n dispatch(getVasRequest(resetParams))\r\n }\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.currency = value\r\n searchParams.skip = 0\r\n \r\n dispatch(getVasRequest(searchParams))\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const { periodFrom, periodTo, merchant: merchantId, processTypeId } = values\r\n let m: MerchantData | undefined = undefined\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n \r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setFromDate(pFrom)\r\n setToDate(pTo)\r\n }\r\n \r\n if (merchantId !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchantId)\r\n setMerchant(m !== undefined ? m : null)\r\n } else {\r\n setMerchant(null)\r\n }\r\n\r\n setProcessType(processTypeId || '')\r\n\r\n const searchParams = {\r\n currency,\r\n periodFrom: pFrom,\r\n periodTo: pTo,\r\n merchant: m?.name || '',\r\n exportType: '',\r\n pageSize,\r\n skip: 0,\r\n fixedPeriod: 'overall',\r\n processTypeId: processTypeId || ''\r\n }\r\n \r\n dispatch(getVasRequest(searchParams))\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n {/* */}\r\n
\r\n \r\n

{t('general.merchantsTable')}

\r\n
\r\n <>\r\n onExportClick('EXCEL')}\r\n loading={isExporting && exportType === 'EXCEL'}\r\n disabled={isEmpty(vasData)}\r\n >\r\n {t('general.export-excel')}\r\n \r\n \r\n reloadOverviews()}\r\n >\r\n {t('general.refresh')}\r\n \r\n
\r\n
\r\n \r\n \r\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 withRouter(VASProcessedPage)\r\n","import React, { useState } from 'react'\r\nimport { Row, Col, Button, Alert, Input, Form } from 'antd'\r\nimport { appSelector } from '../../../helpers/appSelector'\r\nimport { FxCurrency, FxRateRq } from '../../../interfaces/FxCurrency'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useTranslation } from 'react-i18next'\r\nimport {\r\n updateFxRateRequest\r\n} from '../../../store/settings'\r\ninterface Props {\r\n fxRate: FxCurrency\r\n onClose: () => void\r\n}\r\n\r\nexport const EditFxRate: React.FC= ({ fxRate, onClose }: Props) => {\r\n const { t } = useTranslation()\r\n // const { createFxSuccess } = appSelector((state) => state.settings)\r\n const dispatch = useDispatch()\r\n const [formData, setFormData] = useState(fxRate)\r\n\r\n const handleSubmit = async () => {\r\n const payload: FxRateRq = {\r\n id: formData.id,\r\n SourceCurrency: formData.SourceCurrency,\r\n DestinationCurrency: formData.DestinationCurrency,\r\n Selling: formData.Selling,\r\n Buying: formData.Buying,\r\n Median: formData.Median\r\n }\r\n\r\n await dispatch(updateFxRateRequest(payload))\r\n }\r\n\r\n return (\r\n \r\n \r\n

{t('general.editCurrency')}

\r\n \r\n \r\n
\r\n {/* {createFxSuccess && (\r\n \r\n )} */}\r\n \r\n\r\n \r\n \r\n \r\n setFormData({ ...formData, SourceCurrency: e.target.value })}\r\n disabled\r\n />\r\n \r\n \r\n \r\n \r\n \r\n setFormData({ ...formData, DestinationCurrency: e.target.value })\r\n }\r\n disabled\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n setFormData({ ...formData, Selling: parseFloat(e.target.value) })}\r\n />\r\n \r\n \r\n \r\n \r\n setFormData({ ...formData, Buying: parseFloat(e.target.value) })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n setFormData({ ...formData, Median: parseFloat(e.target.value) })}\r\n />\r\n \r\n \r\n \r\n \r\n setFormData({ ...formData, CreatedBy: e.target.value })}\r\n disabled={true}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n setFormData({ ...formData, CreatedWhen: e.target.value })}\r\n disabled={true}\r\n />\r\n \r\n \r\n \r\n \r\n setFormData({ ...formData, CreatedWhenUTC: e.target.value })}\r\n disabled={true}\r\n />\r\n \r\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 EditFxRate","import React, { useEffect } from \"react\";\r\nimport { Input, Row, Col, Button, Alert, Select } from \"antd\";\r\nimport { ArrowLeftCircle } from 'react-feather';\r\nimport \"antd-country-phone-input/dist/index.css\";\r\nimport { AppDispatch } from \"../../../helpers/appDispatch\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { appSelector } from \"../../../helpers/appSelector\";\r\nimport { getCurrencies } from \"../../../store/transactions\";\r\nimport { FxRateRq } from \"../../../interfaces/FxCurrency\";\r\nimport { addFxRateRequest, clearSomeBooleans } from \"../../../store/settings\";\r\ninterface CreateFXProps {\r\n isSubmitting: boolean;\r\n Form: any;\r\n form: any;\r\n errors: any;\r\n success: boolean;\r\n values: FxRateRq;\r\n translate: any;\r\n onClickBackButton: () => void\r\n}\r\n\r\nconst AddFxRate: React.FC = ({\r\n Form,\r\n errors,\r\n form,\r\n isSubmitting,\r\n success,\r\n values,\r\n translate,\r\n onClickBackButton\r\n}) => {\r\n const FormItem = Form.Item;\r\n const { t } = useTranslation();\r\n const dispatch: AppDispatch = useDispatch();\r\n const { currencies } = appSelector((state) => state.transaction);\r\n const { error, createFxSuccess, createFxFailure } = appSelector((state) => state.settings);\r\n const { Option } = Select;\r\n\r\n useEffect(() => {\r\n dispatch(getCurrencies());\r\n dispatch(clearSomeBooleans())\r\n\r\n }, [dispatch]);\r\n\r\n const handleSubmit = async (values: FxRateRq) => {\r\n const payload: FxRateRq = {\r\n SourceCurrency: values.SourceCurrency,\r\n DestinationCurrency: values.DestinationCurrency,\r\n Selling: values.Selling,\r\n Buying: values.Buying,\r\n Median: values.Median\r\n }\r\n\r\n await dispatch(addFxRateRequest(payload))\r\n }\r\n\r\n return (\r\n \r\n \r\n
onClickBackButton()}>\r\n \r\n {/* onClickBackButton()}>{translate(\"general.back\")} */}\r\n
\r\n

{translate(\"general.createFx\")}

\r\n {createFxSuccess ?\r\n \r\n : null}\r\n {error || createFxFailure ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n {success ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n {errors ? (\r\n
\r\n {/* */}\r\n
\r\n ) : null}\r\n {translate(\"general.sourceCurrency\")}\r\n \r\n handleSourceCurrencyChangeEvent()}\r\n optionFilterProp=\"children\"\r\n filterOption={(input: any, option: any) =>\r\n option.value\r\n .toLowerCase()\r\n .indexOf(input.toLowerCase()) >= 0\r\n }\r\n allowClear\r\n showSearch\r\n >\r\n {currencies.length &&\r\n currencies.map((p) => (\r\n \r\n ))}\r\n \r\n \r\n {translate(\"general.destinationCurrency\")}\r\n \r\n handleDestinationCurrencyChangeEvent()}\r\n optionFilterProp=\"children\"\r\n filterOption={(input: any, option: any) =>\r\n option.value\r\n .toLowerCase()\r\n .indexOf(input.toLowerCase()) >= 0\r\n }\r\n allowClear\r\n showSearch\r\n >\r\n {currencies.length &&\r\n currencies.map((p) => (\r\n \r\n ))}\r\n \r\n \r\n {translate(\"general.BuyingPrice\")}\r\n \r\n \r\n \r\n {translate(\"general.sellingPrice\")}\r\n \r\n \r\n \r\n {translate(\"general.MedianPrice\")}\r\n \r\n \r\n \r\n\r\n \r\n {translate(\"general.createFx\")}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AddFxRate;\r\n","import React, { useState } from 'react'\r\nimport { Row, Col, Table, Button, Form } from 'antd'\r\n\r\nimport 'antd-country-phone-input/dist/index.css'\r\nimport { appSelector } from '../../../helpers/appSelector'\r\nimport moment from 'moment'\r\nimport { FxCurrency, FxRateRq } from '../../../interfaces/FxCurrency'\r\nimport { EditFxRate } from './EditFX'\r\nimport { useDispatch } from 'react-redux'\r\nimport { AppDispatch } from '../../../helpers/appDispatch'\r\nimport { getFxRateRequest } from '../../../store/settings'\r\nimport AddFxRate from './AddFX'\r\n\r\ninterface Props {\r\n translate: any,\r\n}\r\n\r\nconst ManageFX: React.FC = ({ translate }) => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { fxCurrencies } = appSelector((state) => state.settings)\r\n const [switchView, setSwitchView] = useState(false)\r\n const [screen, setScreen] = useState<''| \"edit\"| \"add\">('')\r\n const [fxRate, setFxRate] = useState(null)\r\n\r\n let tzdiff = (new Date().getTimezoneOffset() / 60) * -1\r\n\r\n const editFx = (row: any): void => {\r\n setScreen(\"edit\")\r\n const currency: FxCurrency = {\r\n id: row.id,\r\n SourceCurrency: row.sourceCurrency,\r\n DestinationCurrency: row.destinationCurrency,\r\n Selling: row.selling,\r\n Buying: row.buying,\r\n Median: row.median,\r\n CreatedBy: row.createdBy,\r\n CreatedWhen: row.createdWhen,\r\n CreatedWhenUTC: row.createdWhenUTC\r\n }\r\n setFxRate(currency)\r\n setSwitchView(true)\r\n }\r\n\r\n const onClose = () => {\r\n form.resetFields()\r\n dispatch(getFxRateRequest())\r\n setSwitchView(false)\r\n }\r\n\r\n const onAddFxRate = () => {\r\n setSwitchView(true)\r\n setScreen(\"add\")\r\n }\r\n\r\n const [form] = Form.useForm();\r\n const initialValues: FxRateRq = {\r\n SourceCurrency: \"\",\r\n DestinationCurrency: \"\",\r\n Selling: \"\",\r\n Buying: \"\",\r\n Median: \"\"\r\n };\r\n\r\n const columns: any = [\r\n {\r\n title: `${translate('general.sourceCurrency')}`,\r\n dataIndex: 'sourceCurrency',\r\n key: 'sourceCurrency',\r\n className: 'column-text',\r\n },\r\n {\r\n title: `${translate('general.destinationCurrency')}`,\r\n dataIndex: 'destinationCurrency',\r\n key: 'destinationCurrency',\r\n className: 'column-text',\r\n },\r\n {\r\n title: `${translate('general.selling')}`,\r\n dataIndex: 'selling',\r\n key: 'selling',\r\n className: 'column-text',\r\n },\r\n {\r\n title: `${translate('general.buying')}`,\r\n dataIndex: 'buying',\r\n key: 'buying',\r\n className: 'column-text',\r\n },\r\n {\r\n title: `${translate('general.median')}`,\r\n dataIndex: 'median',\r\n key: 'median',\r\n className: 'column-text',\r\n },\r\n {\r\n title: `${translate('general.createdBy')}`,\r\n dataIndex: 'createdBy',\r\n key: 'createdBy',\r\n className: 'column-text',\r\n },\r\n {\r\n title: `${translate('general.createdAt')}`,\r\n dataIndex: 'createdWhen',\r\n key: 'createdWhen',\r\n className: 'column-text',\r\n render: (createdWhen: string) => {\r\n const d = moment(createdWhen).add(tzdiff, 'hour').format(`MM/DD/YYYY (h:mm a)`)\r\n return {d}\r\n },\r\n },\r\n {\r\n title: `${translate('general.actions')}`,\r\n key: 'row',\r\n render: (row: any) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n },\r\n },\r\n ]\r\n\r\n return (\r\n \r\n \r\n

{translate(' ')}

\r\n\r\n \r\n \r\n {/* {updateMerchantError && } */}\r\n
\r\n onAddFxRate()}\r\n >\r\n {translate(\"general.createFx\")}\r\n \r\n
\r\n {!switchView ?\r\n \r\n :\r\n switchView && screen === \"edit\"?\r\n onClose()} />\r\n :\r\n switchView && screen === \"add\" ?\r\n onClose()}\r\n />\r\n : null\r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ManageFX\r\n","import React, { lazy, Suspense, useEffect, useState } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, message, Tabs, Form } from 'antd'\r\nimport {\r\n SettingOutlined,\r\n UserAddOutlined,\r\n TeamOutlined\r\n} from '@ant-design/icons'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport {\r\n getCurrentUser,\r\n changePasswordRequest,\r\n clearSomeBooleans,\r\n updateUserRequest,\r\n createMerchantRequest,\r\n getAllMerchantsRequest,\r\n getFxRateRequest\r\n} from '../store/settings'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { Register, MerchantData } from '../interfaces'\r\nimport { roles } from '../helpers/constants'\r\nimport { useTranslation } from 'react-i18next'\r\nimport ManageFX from '../components/settings/ForeignExchange/ManageFX'\r\n// import { getMerchantsOverview } from '../store/merchant-overview'\r\n// import { getMerchantsRequest } from '../store/reports'\r\n\r\nconst { Content } = Layout\r\nconst { TabPane } = Tabs\r\n\r\nconst UserProfile = lazy(() => import('../components/settings/UserProfile'))\r\nconst CreateMerchant = lazy(\r\n () => import('../components/settings/CreateMerchant')\r\n)\r\nconst AllMerchants = lazy(() => import('../components/settings/AllMerchants'))\r\n\r\ninterface Merchant {\r\n Name: string\r\n PhoneNumber: {\r\n short: string\r\n code: number\r\n phone: string\r\n }\r\n EmailAddress: string\r\n Password: string\r\n Confirm: string\r\n}\r\n\r\nexport const Settings = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const { user } = appSelector((state) => state.auth)\r\n const settings = appSelector((state) => state.settings)\r\n const [merchants, setMerchants] = useState(\r\n settings.allMerchants\r\n )\r\n const [form] = Form.useForm()\r\n const initialValues: Merchant = {\r\n Name: '',\r\n Confirm: '',\r\n EmailAddress: '',\r\n Password: '',\r\n PhoneNumber: { short: 'cd', code: 0, phone: '' }\r\n }\r\n const [showFormModal, setShowFormModal] = useState(false)\r\n const [updateForm] = Form.useForm()\r\n const [passwordForm] = Form.useForm()\r\n\r\n // const params = {\r\n // fixedPeriod: 'overall',\r\n // };\r\n const {\r\n client,\r\n isSubmitting,\r\n isChangingPassword,\r\n editSuccess,\r\n changePasswordSuccess,\r\n changePasswordFailure,\r\n error,\r\n editFailure,\r\n createMerchantSuccess,\r\n merchantError,\r\n singleError\r\n } = appSelector((state) => state.settings)\r\n let role\r\n if (user) {\r\n role = user.roles.find((r) => r === roles.SuperMerchant)\r\n } else {\r\n role = roles.SuperMerchant\r\n }\r\n\r\n useEffect(() => {\r\n if (user && isEmpty(client)) {\r\n // fetch user details\r\n dispatch(getCurrentUser(user.userId))\r\n }\r\n dispatch(clearSomeBooleans())\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n // useEffect(() => {\r\n // dispatch(getMerchantsOverview(params));\r\n // const { merchants } = reports;\r\n // if (isEmpty(merchants)) {\r\n // dispatch(getMerchantsRequest())\r\n // }\r\n // })\r\n\r\n useEffect(() => {\r\n const { allMerchants, fxCurrencies } = settings\r\n if (isEmpty(allMerchants)) {\r\n dispatch(getAllMerchantsRequest())\r\n\r\n }\r\n setMerchants(allMerchants)\r\n dispatch(getFxRateRequest())\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onUpdateProfile = (values: any) => {\r\n dispatch(updateUserRequest(values))\r\n }\r\n\r\n const onChangePassword = (values: any) => {\r\n dispatch(changePasswordRequest(values))\r\n }\r\n\r\n const createMerchant = (values: Merchant) => {\r\n const payload: Register = {\r\n EmailAddress: values.EmailAddress,\r\n IsBusiness: true,\r\n Name: values.Name,\r\n Password: values.Password,\r\n PhoneNumber: `${values.PhoneNumber.code}${values.PhoneNumber.phone}`\r\n }\r\n dispatch(createMerchantRequest(payload))\r\n }\r\n\r\n const onToggleFormModal = () => {\r\n setShowFormModal(!showFormModal)\r\n }\r\n\r\n useEffect(() => {\r\n if (changePasswordFailure) {\r\n message.error(JSON.stringify(error))\r\n }\r\n if (changePasswordSuccess) {\r\n message.success(t('general.passwordChanged'))\r\n setShowFormModal(false)\r\n passwordForm.resetFields()\r\n }\r\n if (editSuccess) {\r\n message.success(t('general.detailsUpdated'))\r\n updateForm.resetFields()\r\n }\r\n if (editFailure) {\r\n message.error(JSON.stringify(error))\r\n }\r\n if (createMerchantSuccess) {\r\n form.resetFields()\r\n }\r\n }, [\r\n changePasswordFailure,\r\n changePasswordSuccess,\r\n error,\r\n editFailure,\r\n editSuccess,\r\n createMerchantSuccess,\r\n form,\r\n t,\r\n updateForm,\r\n passwordForm\r\n ])\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n
\r\n \r\n dispatch(clearSomeBooleans())}>\r\n {t('general.profile')}\r\n \r\n }\r\n key=\"1\"\r\n >\r\n \r\n \r\n {role !== undefined && role === roles.SuperMerchant ? (\r\n dispatch(clearSomeBooleans())}>\r\n {t('general.createMerchant')}\r\n \r\n }\r\n key=\"2\"\r\n >\r\n \r\n \r\n ) : null}\r\n {role !== undefined && role === roles.SuperMerchant ? (\r\n dispatch(clearSomeBooleans())}>\r\n {t('general.allMerchants')}\r\n \r\n }\r\n key={3}\r\n >\r\n \r\n \r\n ) : null}\r\n {role !== undefined && role === roles.SuperMerchant ? ( \r\n dispatch(clearSomeBooleans())}>\r\n {t('general.manageFx')}\r\n \r\n }\r\n key={4}\r\n >\r\n \r\n \r\n ) : null}\r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default withRouter(Settings)\r\n","import React, { lazy, Suspense, useEffect, useState, Fragment } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Button } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { MerchantData, PCESReport, PCESTableData } from '../interfaces'\r\nimport {\r\n getMerchantsRequest,\r\n exportPCESRequest,\r\n getPCESRequest,\r\n clearData\r\n} from '../store/reports'\r\nimport moment from 'moment'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\nconst { Content } = Layout\r\n\r\nconst Filters = lazy(() => import('../components/fee-reports/Filters'))\r\nconst Cards = lazy(() => import('../components/fee-reports/Cards'))\r\nconst Details = lazy(() => import('../components/fee-reports/Details'))\r\nconst CurrencyFilter = lazy(() => import('../components/fee-reports/CurrencyFilter'))\r\nconst EmptyBox = lazy(() => import('../components/fee-reports/EmptyBox'))\r\n\r\nconst FeeReports = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const reports = appSelector((state) => state.reports)\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const [pces, setPces] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [pcesReport, setPcesReport] = useState(null)\r\n const [merchant, setMerchant] = useState(null)\r\n const [periodFrom, setPeriodFrom] = useState('')\r\n const [periodTo, setPeriodTo] = useState('')\r\n const [exportType, setExportType] = useState('')\r\n const [isExporting, setIsExporting] = useState(false)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [currency, setCurrency] = useState('USD')\r\n const [isSearching, setIsSearching] = useState(false)\r\n const [currentPage, setCurrentPage] = useState(1)\r\n\r\n const getSearchParams = () => ({\r\n currency,\r\n pageSize,\r\n skip,\r\n periodFrom,\r\n periodTo,\r\n merchant: merchant?.name || '',\r\n exportType,\r\n status: 'APPROVED',\r\n fixedPeriod: 'overall'\r\n })\r\n\r\n useEffect(() => {\r\n const { merchants } = reports\r\n dispatch(clearData())\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { merchants, loading, pces, isExporting } = reports\r\n setPces(pces && !isEmpty(pces.data) ? pces.data : [])\r\n setMerchants(merchants)\r\n setPcesReport(pces)\r\n setIsExporting(isExporting)\r\n setLoading(loading)\r\n }, [reports])\r\n\r\n const reloadReport = () => {\r\n dispatch(clearData())\r\n const searchParams = getSearchParams()\r\n dispatch(getPCESRequest(searchParams))\r\n }\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.currency = value\r\n searchParams.skip = 0\r\n \r\n dispatch(clearData())\r\n dispatch(getPCESRequest(searchParams))\r\n }\r\n\r\n const onLoadMore = (page: number, size: number) => {\r\n const newSkip = page - 1\r\n setPageSize(size)\r\n setSkip(newSkip)\r\n setCurrentPage(page)\r\n \r\n const searchParams = getSearchParams()\r\n searchParams.skip = newSkip\r\n searchParams.pageSize = size\r\n \r\n dispatch(getPCESRequest(searchParams))\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n \r\n const { merchant: merchantId, periodFrom, periodTo } = values\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n let m: MerchantData | undefined = undefined\r\n\r\n if (!isEmpty(periodFrom) && !isEmpty(periodTo)) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setPeriodFrom(pFrom)\r\n setPeriodTo(pTo)\r\n }\r\n \r\n if (!isEmpty(merchantId)) {\r\n m = merchants.find((m) => m.merchantId === merchantId)\r\n setMerchant(m !== undefined ? m : null)\r\n } else {\r\n setMerchant(null)\r\n }\r\n\r\n const searchParams = {\r\n currency,\r\n pageSize,\r\n skip: 0,\r\n periodFrom: pFrom,\r\n periodTo: pTo,\r\n merchant: m?.name || '',\r\n exportType: '',\r\n status: 'APPROVED',\r\n fixedPeriod: 'overall'\r\n }\r\n \r\n dispatch(clearData())\r\n dispatch(getPCESRequest(searchParams))\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n setPeriodFrom('')\r\n setPeriodTo('')\r\n setMerchant(null)\r\n setSkip(0)\r\n setCurrentPage(1)\r\n setIsSearching(false)\r\n \r\n const resetParams = {\r\n currency,\r\n pageSize: 10,\r\n skip: 0,\r\n periodFrom: '',\r\n periodTo: '',\r\n merchant: '',\r\n exportType: '',\r\n status: 'APPROVED',\r\n fixedPeriod: 'overall'\r\n }\r\n \r\n dispatch(clearData())\r\n dispatch(getPCESRequest(resetParams))\r\n }\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type)\r\n const searchParams = getSearchParams()\r\n searchParams.exportType = type\r\n dispatch(exportPCESRequest(searchParams))\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n \r\n \r\n
\r\n \r\n

\r\n {t('general.FEEReports')}\r\n

\r\n
\r\n <>\r\n onExportClick('EXCEL')}\r\n loading={isExporting && exportType === 'EXCEL'}\r\n disabled={isEmpty(pces)}\r\n >\r\n {t('general.export-excel')}\r\n \r\n \r\n reloadReport()}\r\n >\r\n {t('general.refresh')}\r\n \r\n
\r\n
\r\n \r\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 withRouter(FeeReports)\r\n","import { Transaction, Currency, DataStream } from \"../../interfaces\";\r\n\r\nexport enum TransactionTypes {\r\n GET_TRANSACTIONS_REQUEST = \"@@b2ctransactions/GET_TRANSACTIONS_REQUEST\",\r\n GET_TRANSACTIONS_SUCCESS = \"@@b2ctransactions/GET_TRANSACTIONS_SUCCESS\",\r\n GET_TRANSACTIONS_FAILURE = \"@@b2ctransactions/GET_TRANSACTIONS_FAILURE\",\r\n GET_CURRENCIES = \"@@transaction/GET_CURRENCIES\",\r\n GET_CURRENCIES_SUCCESS = \"@@transaction/GET_CURRENCIES_SUCCESS\",\r\n GET_CURRENCIES_FAILURE = \"@@transaction/GET_CURRENCIES_FAILURE\",\r\n EXPORT_TRANSACTIONS_REQUEST = \"@@b2ctransactions/EXPORT_TRANSACTIONS_REQUEST\",\r\n EXPORT_TRANSACTIONS_SUCCESS = \"@@b2ctransactions/EXPORT_TRANSACTIONS_SUCCESS\",\r\n EXPORT_TRANSACTIONS_FAILURE = \"@@b2ctransactions/EXPORT_TRANSACTIONS_FAILURE\",\r\n DOWNLOAD_RECEIPT_REQUEST = \"@@b2ctransactions/DOWNLOAD_RECEIPT_REQUEST\",\r\n DOWNLOAD_RECEIPT_SUCCESS = \"@@b2ctransactions/DOWNLOAD_RECEIPT_SUCCESS\",\r\n DOWNLOAD_RECEIPT_FAILURE = \"@@b2ctransactions/DOWNLOAD_RECEIPT_FAILURE\",\r\n}\r\n\r\nexport type B2CTransactionTableState = {\r\n readonly transactions: Transaction | null;\r\n readonly loading: boolean;\r\n readonly error: any;\r\n readonly currencies: Currency[];\r\n readonly currenciesLoading: boolean;\r\n readonly currencyError: any;\r\n readonly isExporting: boolean;\r\n readonly isExportSuccess: boolean;\r\n readonly isExportError: boolean;\r\n readonly exportStream: DataStream | undefined;\r\n readonly exportError: any;\r\n readonly isRequestingDownload: boolean;\r\n readonly downloadRecieptSuccess: boolean;\r\n readonly downloadRecieptError: boolean;\r\n readonly downloadReceiptStream: DataStream | undefined;\r\n readonly downloadError: any;\r\n};\r\n","import { Reducer } from 'redux';\r\nimport { B2CTransactionTableState, TransactionTypes } from './types';\r\nimport { AuthActionTypes } from '../auth';\r\n\r\nexport const initialState: B2CTransactionTableState = {\r\n currencies: [],\r\n currenciesLoading: false,\r\n currencyError: undefined,\r\n error: undefined,\r\n loading: false,\r\n transactions: null,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportSuccess: false,\r\n isExportError: false,\r\n exportError: undefined,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: false,\r\n isRequestingDownload: false,\r\n downloadError: undefined,\r\n};\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case TransactionTypes.GET_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n transactions: action.payload,\r\n loading: false,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n case TransactionTypes.GET_CURRENCIES:\r\n return {\r\n ...state,\r\n currenciesLoading: true,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_SUCCESS:\r\n return {\r\n ...state,\r\n currencies: action.payload,\r\n currenciesLoading: false,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_FAILURE:\r\n return {\r\n ...state,\r\n currenciesLoading: false,\r\n currencyError: action.payload,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload,\r\n };\r\n case TransactionTypes.DOWNLOAD_RECEIPT_REQUEST:\r\n return {\r\n ...state,\r\n isRequestingDownload: true,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: action.payload,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: true,\r\n downloadError: undefined,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_FAILURE:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: true,\r\n downloadRecieptSuccess: false,\r\n downloadError: action.payload,\r\n };\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as b2cTransactionTableReducer };\r\n","import { action } from 'typesafe-actions';\r\nimport { TransactionTypes } from './types';\r\nimport { Currency, DataStream, TransactionHistory } from '../../interfaces';\r\n\r\nexport const getTransactionsRequest = (payload: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const getTransactionsSuccess = (data: TransactionHistory) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const getTransactionsFailure = (error: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const getCurrencies = () => action(TransactionTypes.GET_CURRENCIES);\r\n\r\nexport const getCurrenciesSuccess = (data: Currency[]) =>\r\n action(TransactionTypes.GET_CURRENCIES_SUCCESS, data);\r\n\r\nexport const getCurrenciesFailure = (error: any) =>\r\n action(TransactionTypes.GET_CURRENCIES_FAILURE, error);\r\n\r\nexport const exportTranxRequest = (payload: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const exportTranxSuccess = (data: DataStream) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const exportTranxFailure = (error: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const downloadReceiptRequest = (transactionId: number) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_REQUEST, transactionId);\r\n\r\nexport const downloadReceiptSuccess = (data: DataStream) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS, data);\r\n\r\nexport const downloadReceiptFailure = (error: any) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_FAILURE, error);\r\n","export enum B2CTransactionTypes {\r\n B2C_PAYMENT_REQUEST = '@@b2ctransactions/B2C_PAYMENT_REQUEST',\r\n B2C_PAYMENT_SUCCESS = '@@b2ctransactions/B2C_PAYMENT_SUCCESS',\r\n B2C_PAYMENT_FAILURE = '@@b2ctransactions/B2C_PAYMENT_FAILURE',\r\n CLEAR_STATES = '@@b2ctransactions/CLEAR_STATES'\r\n}\r\n\r\nexport type B2CTransactionState = {\r\n readonly isSubmitting: boolean\r\n readonly loading: boolean\r\n readonly error: any\r\n readonly b2cpay: null\r\n readonly success: boolean\r\n readonly failure: boolean\r\n}\r\n","import { Reducer } from 'redux'\r\nimport { B2CTransactionTypes, B2CTransactionState } from './types'\r\n\r\nexport const initialState: B2CTransactionState = {\r\n error: undefined,\r\n failure: false,\r\n loading: false,\r\n b2cpay: null,\r\n success: false,\r\n isSubmitting: false\r\n}\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case B2CTransactionTypes.B2C_PAYMENT_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: {},\r\n success: false,\r\n failure: false\r\n }\r\n\r\n case B2CTransactionTypes.B2C_PAYMENT_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n b2cpay: action.payload,\r\n success: true,\r\n failure: false,\r\n error: {}\r\n }\r\n\r\n case B2CTransactionTypes.B2C_PAYMENT_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n success: false,\r\n failure: true\r\n }\r\n case B2CTransactionTypes.CLEAR_STATES:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: undefined,\r\n success: false,\r\n failure: false\r\n }\r\n // case B2CTransactionTypes.GET_TRANSACTIONS_REQUEST:\r\n // return {\r\n // ...state,\r\n // loading: true,\r\n // error: undefined,\r\n // };\r\n // case B2CTransactionTypes.GET_TRANSACTIONS_SUCCESS:\r\n // return {\r\n // ...state,\r\n // transactions: action.payload,\r\n // loading: false,\r\n // };\r\n // case B2CTransactionTypes.GET_TRANSACTIONS_FAILURE:\r\n // return {\r\n // ...state,\r\n // loading: false,\r\n // error: action.payload,\r\n // };\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport { reducer as B2CPaymentReducer }\r\n","import { action } from 'typesafe-actions'\r\nimport { B2CTransactionTypes } from './types'\r\nimport { B2CTransaction, B2CPayout } from '../../interfaces'\r\n\r\nexport const b2cPaymentRequest = (payload: B2CTransaction) =>\r\n action(B2CTransactionTypes.B2C_PAYMENT_REQUEST, payload)\r\n\r\nexport const b2cPaymentSuccess = (response: B2CPayout) =>\r\n action(B2CTransactionTypes.B2C_PAYMENT_SUCCESS, response)\r\n\r\nexport const clearStates = () => action(B2CTransactionTypes.CLEAR_STATES)\r\nexport const b2cPaymentFailure = (error: any) =>\r\n action(B2CTransactionTypes.B2C_PAYMENT_FAILURE, error)\r\n","import React, { lazy, Suspense, useState, useEffect, Fragment } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Button, message } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\n\r\nimport {\r\n getTransactionsRequest,\r\n exportTranxRequest,\r\n downloadReceiptRequest\r\n} from '../store/b2cTransactionTable'\r\nimport { getMerchantsRequest } from '../store/reports'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { TransactionHistory, MerchantData, Transaction, B2CTransaction } from '../interfaces'\r\nimport { useTranslation } from 'react-i18next'\r\nimport moment from 'moment'\r\nimport { b2cPaymentRequest, clearStates } from '../store/b2ctransactions'\r\n\r\nconst { Content } = Layout\r\n\r\nconst TransactionFilters = lazy(() => import('../components/b2ctransactions/TransactionFilters'))\r\nconst TransactionTable = lazy(() => import('../components/b2ctransactions/TransactionTable'))\r\nconst TransactionDetail = lazy(() => import('../components/b2ctransactions/TransactionDetail'))\r\nconst CurrencyFilter = lazy(() => import('../components/b2ctransactions/CurrencyFilter'))\r\nconst EmptyBox = lazy(() => import('../components/b2ctransactions/EmptyBox'))\r\n\r\nconst PaymentTypeModal = lazy(() => import('../components/b2ctransactions/PaymentTypeModal'))\r\nconst FormModal = lazy(() => import('../components/b2ctransactions/FormModal'))\r\n\r\nconst Transactions = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n\r\n //Modal\r\n const { isSubmitting, success, failure, error } = appSelector((state) => state.b2cPayment)\r\n const [showPaymentTypeModal, setShowPaymentTypeModal] = useState(false)\r\n const [showFormModal, setShowFormModal] = useState(false)\r\n // const [imageUrl, setImageUrl] = useState('')\r\n\r\n const transaction = appSelector((state) => state.b2cTransactionTable)\r\n const reports = appSelector((state) => state.reports)\r\n const [trans, setTrans] = useState([])\r\n const [trxReport, setTrxReport] = useState(null)\r\n const { t } = useTranslation()\r\n const [channelSearch, setChannelSearch] = useState('')\r\n const [searchValue, setSearchValue] = useState('')\r\n const [statusSearch, setStatusSearch] = useState('')\r\n const [fromDate, setFromDate] = useState('')\r\n const [toDate, setToDate] = useState('')\r\n const [exportType, setExportType] = useState('')\r\n const [trx, setTrx] = useState(null)\r\n const [switchView, setSwitchView] = useState(false)\r\n const [loading, setLoading] = useState(false)\r\n const [currency, setCurrency] = useState('USD')\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const [merchant, setMerchant] = useState(null)\r\n const [isExporting, setIsExporting] = useState(false)\r\n const [isDownlaoding, setIsDownloading] = useState(false)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [isSearching, setIsSearching] = useState(false)\r\n\r\n const params = {\r\n currency: currency,\r\n pageSize: pageSize,\r\n skip: skip,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant ? merchant.name : '',\r\n status: statusSearch,\r\n channel: channelSearch,\r\n searchValue: searchValue,\r\n exportType: exportType,\r\n fixedPeriod: 'overall'\r\n }\r\n\r\n interface TransactionB2c {\r\n transactionReference: string\r\n currency: string\r\n amount: string\r\n customerPhoneNumber: string\r\n\r\n provider: string\r\n }\r\n\r\n useEffect(() => {\r\n // fetch transaction history\r\n // dispatch(getTransactionsRequest(params))\r\n const { merchants } = reports\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest())\r\n }\r\n // dispatch(clearStates())\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { loading, transactions, isExporting, isRequestingDownload } = transaction\r\n const { merchants } = reports\r\n setLoading(loading)\r\n setMerchants(merchants)\r\n setTrans(transactions && !isEmpty(transactions.data) ? transactions.data : [])\r\n setTrxReport(transactions)\r\n setIsExporting(isExporting)\r\n setIsDownloading(isRequestingDownload)\r\n }, [transaction, reports])\r\n\r\n const onClickRow = (transactionID: number) => {\r\n setSwitchView(!switchView)\r\n if (transaction.transactions && !isEmpty(transaction.transactions.data)) {\r\n const trx = transaction.transactions.data.find((t) => t.transactionId === transactionID)\r\n if (trx !== undefined) {\r\n setTrx(trx)\r\n }\r\n }\r\n }\r\n\r\n const onCloseScreen = () => {\r\n setSwitchView(!switchView)\r\n }\r\n\r\n const reloadTransaction = () => {\r\n dispatch(getTransactionsRequest(params))\r\n }\r\n\r\n const onDownloadReceiptClick = (transactionId: number): void => {\r\n dispatch(downloadReceiptRequest(transactionId))\r\n }\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value)\r\n params.skip = 0\r\n params.currency = value\r\n params.pageSize = pageSize\r\n params.periodFrom = fromDate\r\n params.periodTo = toDate\r\n params.status = ''\r\n params.channel = ''\r\n params.searchValue = ''\r\n params.fixedPeriod = 'overall'\r\n dispatch(getTransactionsRequest(params))\r\n }\r\n\r\n const onLoadMore = (page: any, size: any) => {\r\n setSkip(0)\r\n setPageSize(size)\r\n params.skip = page - 1\r\n setSkip(params.skip)\r\n dispatch(getTransactionsRequest(params))\r\n }\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type)\r\n params.exportType = type\r\n dispatch(exportTranxRequest(params))\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n const { status, channel, periodFrom, periodTo, query, merchant } = values\r\n let m: MerchantData | undefined = undefined\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n\r\n setChannelSearch(channel !== undefined ? channel : '')\r\n setStatusSearch(status !== undefined ? status : '')\r\n setSearchValue(query !== undefined ? query : '')\r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setFromDate(pFrom)\r\n setToDate(pTo)\r\n }\r\n if (merchant !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchant)\r\n setMerchant(m !== undefined ? m : null)\r\n }\r\n params.periodFrom = pFrom\r\n params.periodTo = pTo\r\n params.merchant = m !== undefined ? m.name : ''\r\n params.status = status\r\n params.channel = channel\r\n params.searchValue = query\r\n\r\n dispatch(getTransactionsRequest(params))\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n params.skip = 0\r\n params.periodFrom = ''\r\n params.periodTo = ''\r\n params.merchant = ''\r\n params.status = ''\r\n params.channel = ''\r\n params.searchValue = ''\r\n params.pageSize = 10\r\n\r\n setIsSearching(false)\r\n\r\n // dispatch(getTransactionsRequest(params))\r\n }\r\n\r\n // Modal\r\n useEffect(() => {\r\n if (success) {\r\n message.success(`${t('general.b2cSuccess')}`, 5)\r\n }\r\n if (failure) {\r\n message.error(error, 5)\r\n }\r\n }, [success, error, failure, t])\r\n const onTogglePaymentTypeModal = () => {\r\n setShowPaymentTypeModal(!showPaymentTypeModal)\r\n }\r\n\r\n const onToggleFormModal = () => {\r\n setShowFormModal(!showFormModal)\r\n // setImageUrl('')\r\n dispatch(clearStates())\r\n }\r\n\r\n const choosePaymentPage = () => {\r\n onTogglePaymentTypeModal()\r\n onToggleFormModal()\r\n }\r\n\r\n const onSubmit = (values: TransactionB2c) => {\r\n const payload: B2CTransaction = {\r\n order: {\r\n amount: values.amount,\r\n transactionReference: values.transactionReference,\r\n currency: values.currency,\r\n customerPhoneNumber: values.customerPhoneNumber\r\n },\r\n destination: {\r\n provider: values.provider,\r\n walletID: values.customerPhoneNumber\r\n }\r\n }\r\n dispatch(b2cPaymentRequest(payload))\r\n }\r\n\r\n const initialValues: TransactionB2c = {\r\n amount: '',\r\n currency: 'USD',\r\n customerPhoneNumber: '',\r\n transactionReference: '',\r\n provider: 'MPESA'\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n {!switchView ? (\r\n \r\n {/* */}\r\n\r\n \r\n
\r\n \r\n

{t('general.transactionsChart')}

\r\n
\r\n {!isEmpty(trans) ? (\r\n <>\r\n onExportClick('EXCEL')}\r\n loading={isExporting && exportType === 'EXCEL'}\r\n >\r\n {t('general.export-excel')}\r\n \r\n {/* onExportClick('PDF')}\r\n loading={isExporting && exportType === 'PDF'}\r\n >\r\n {t('general.export-pdf')}\r\n */}\r\n \r\n ) : null}\r\n reloadTransaction()}\r\n >\r\n {t('general.refresh')}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n ) : (\r\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 withRouter(Transactions)\r\n","import React, { lazy, Suspense, useEffect, useState, Fragment } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Button } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { MerchantData, PendingTransactionsTableData, PendingTransactions } from '../interfaces'\r\nimport {\r\n getMerchantsRequest,\r\n exportPendingTxRequest,\r\n getPendingTransactionsRequest,\r\n clearData\r\n} from '../store/reports'\r\nimport moment from 'moment'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { roles } from '../helpers/constants'\r\n\r\nconst { Content } = Layout\r\n\r\nconst PendingFilters = lazy(() => import('../components/pending-transactions/PendingFilters'))\r\nconst Details = lazy(() => import('../components/pending-transactions/Details'))\r\nconst CurrencyFilter = lazy(() => import('../components/fee-reports/CurrencyFilter'))\r\nconst EmptyBox = lazy(() => import('../components/transactions/EmptyBox'))\r\n\r\nconst PendingTransactionsView = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const reports = appSelector((state) => state.reports)\r\n const { user } = appSelector((state) => state.auth)\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const [pces, setPces] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [pcesReport, setPcesReport] = useState(null)\r\n const [merchant, setMerchant] = useState(null)\r\n const [periodFrom, setPeriodFrom] = useState('')\r\n const [periodTo, setPeriodTo] = useState('')\r\n const [exportType, setExportType] = useState('')\r\n const [isExporting, setIsExporting] = useState(false)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [currency, setCurrency] = useState('USD')\r\n const [isSearching, setIsSearching] = useState(false)\r\n\r\n let isSuperMerchant = false\r\n if (user) {\r\n const superMerchantRole = user.roles.find((r) => r === roles.SuperMerchant)\r\n isSuperMerchant = superMerchantRole !== undefined\r\n }\r\n\r\n const params = {\r\n currency: currency,\r\n pageSize: pageSize,\r\n skip: skip,\r\n periodFrom: periodFrom,\r\n periodTo: periodTo,\r\n merchant: merchant ? merchant.name : '',\r\n exportType: exportType,\r\n status: '',\r\n fixedPeriod: 'overall'\r\n }\r\n\r\n useEffect(() => {\r\n const { merchants } = reports\r\n dispatch(clearData())\r\n // dispatch(getPendingTransactionsRequest(params))\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { merchants, loading, pendingtransactions, isExporting } = reports\r\n setPces(\r\n pendingtransactions && !isEmpty(pendingtransactions.data) ? pendingtransactions.data : []\r\n )\r\n setMerchants(merchants)\r\n setPcesReport(pendingtransactions)\r\n setIsExporting(isExporting)\r\n setLoading(loading)\r\n }, [reports])\r\n\r\n const reloadReport = () => {\r\n dispatch(clearData())\r\n dispatch(getPendingTransactionsRequest(params))\r\n }\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value)\r\n params.skip = skip\r\n params.currency = value\r\n dispatch(clearData())\r\n dispatch(getPendingTransactionsRequest(params))\r\n }\r\n\r\n const onLoadMore = (page: any, size: any) => {\r\n setSkip(0)\r\n setPageSize(size)\r\n params.skip = page - 1\r\n setSkip(params.skip)\r\n dispatch(getPendingTransactionsRequest(params))\r\n }\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n const { merchant, periodFrom, periodTo } = values\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n let m: MerchantData | undefined = undefined\r\n\r\n if (!isEmpty(periodFrom) && !isEmpty(periodTo)) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setPeriodFrom(pFrom)\r\n setPeriodTo(pTo)\r\n }\r\n \r\n if (isSuperMerchant && !isEmpty(merchant)) {\r\n m = merchants.find((m) => m.merchantId === merchant)\r\n if (m !== undefined) {\r\n setMerchant(m)\r\n }\r\n }\r\n \r\n params.periodFrom = pFrom\r\n params.periodTo = pTo\r\n params.merchant = m !== undefined ? m.name : ''\r\n dispatch(clearData())\r\n dispatch(getPendingTransactionsRequest(params))\r\n }\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n params.periodFrom = ''\r\n params.periodTo = ''\r\n params.merchant = ''\r\n setMerchant(null)\r\n dispatch(getPendingTransactionsRequest(params))\r\n setIsSearching(false)\r\n }\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type)\r\n params.exportType = type\r\n dispatch(exportPendingTxRequest(params))\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n {isSearching ? (\r\n \r\n \r\n
\r\n \r\n

{t('general.PendingTransactions')}

\r\n
\r\n <>\r\n onExportClick('EXCEL')}\r\n loading={isExporting && exportType === 'EXCEL'}\r\n disabled={isEmpty(pces)}\r\n >\r\n {t('general.export-excel')}\r\n \r\n \r\n reloadReport()}\r\n >\r\n {t('general.refresh')}\r\n \r\n
\r\n
\r\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 withRouter(PendingTransactionsView)\r\n","import React from 'react';\r\n\r\nconst Background: React.FC = () => {\r\n return (\r\n <>\r\n \r\n 404\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 { Background };\r\n","import React from 'react';\r\nimport { Background } from './Background';\r\nimport './style.css';\r\n\r\nconst NotFound: React.FC = () => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport { NotFound };\r\n","import React from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { NotFound } from '../components/not-found/404';\r\n\r\nconst NotFoundPage: React.FC = () => {\r\n return ;\r\n};\r\n\r\nexport default withRouter(NotFoundPage);\r\n","import React from 'react'\r\nimport { Row, Col, Form, Input, Button, Alert, Image } from 'antd'\r\nimport { LoadingOutlined } from '@ant-design/icons'\r\nimport { ForgottenPassword } from '../../interfaces'\r\nimport logo from '../../images/logo_symbol.png'\r\nimport { Link } from 'react-router-dom'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { path } from '../../helpers/path'\r\n\r\ninterface Props {\r\n values: ForgottenPassword\r\n onSubmit(values: ForgottenPassword): void\r\n isSubmit: boolean\r\n error: any\r\n success: boolean\r\n failure: boolean\r\n}\r\n\r\nconst ForgottenPasswordForm: React.FC = (props) => {\r\n const { values, onSubmit, isSubmit, error, success, failure } = props\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n

{t('login.header')}

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

{t('login.forgotten-header')}

\r\n {success ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n {failure ? (\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n >\r\n {!isSubmit\r\n ? t('login.btn-text-forgotten')\r\n : t('login.Please wait . .')}\r\n \r\n \r\n \r\n {t('login.return-to-login')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ForgottenPasswordForm\r\n","import React, { useState, useEffect, useRef, useCallback } from 'react'\r\nimport { withRouter, useHistory } from 'react-router-dom'\r\nimport { Layout } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport ForgottenPasswordForm from '../components/forgotten-password/ForgottenPasswordForm'\r\nimport { ForgottenPassword as FP } from '../interfaces'\r\nimport { forgottenPasswordRequest, clearAuthState } from '../store/auth'\r\nimport { Language } from '../components/menu/Language'\r\nimport ReCAPTCHA from 'react-google-recaptcha'\r\nimport { SITE_KEY } from '../helpers/constants'\r\n\r\nconst DELAY = 1500\r\n\r\nconst ForgottenPassword = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const auth = appSelector((state) => state.auth)\r\n const { Content } = Layout\r\n const [values] = useState({\r\n EmailAddress: ''\r\n })\r\n const [isSubmit, setIsSubmit] = useState(false)\r\n const [error, setError] = useState('')\r\n const history = useHistory()\r\n const [load, setLoad] = useState(false)\r\n const [expired, setExpired] = useState(false)\r\n const reCaptchaRef = useRef()\r\n const [isMounted, setIsMounted] = useState(false)\r\n const [isSccess, setIsSuccess] = useState(false)\r\n const [isError, setIsError] = useState(false)\r\n\r\n useEffect(() => {\r\n dispatch(clearAuthState())\r\n setTimeout(() => {\r\n setLoad(true)\r\n }, DELAY)\r\n return () => {\r\n setIsMounted(!isMounted)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onSubmit = (values: FP) => {\r\n reCaptchaRef.current\r\n .executeAsync()\r\n .then((value: string) => {\r\n if (value && !expired) {\r\n const getUrl = window.location\r\n const baseUrl =\r\n getUrl.protocol +\r\n '//' +\r\n getUrl.host +\r\n '/' +\r\n getUrl.pathname.split('/')[1] +\r\n '/reset-password'\r\n const payload: FP = {\r\n EmailAddress: values.EmailAddress,\r\n CallbackURL: baseUrl\r\n }\r\n dispatch(forgottenPasswordRequest(payload))\r\n }\r\n })\r\n .catch((err: any) => {})\r\n }\r\n\r\n useEffect(() => {\r\n const {\r\n isForgottenPassword,\r\n forgottenPasswordSuccess,\r\n forgottenPasswordError,\r\n forgottenError\r\n } = auth\r\n setIsSubmit(isForgottenPassword)\r\n setError(forgottenError)\r\n setIsSuccess(forgottenPasswordSuccess)\r\n setIsError(forgottenPasswordError)\r\n }, [auth, history])\r\n\r\n const handleRecaptcha = useCallback((value) => {\r\n if (value === null) setExpired(true)\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {load && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default withRouter(ForgottenPassword)\r\n","import React from 'react'\r\nimport { Row, Col, Form, Input, Button, Alert, Image } from 'antd'\r\nimport { LoadingOutlined } from '@ant-design/icons'\r\nimport { ResetPassword } from '../../interfaces'\r\nimport logo from '../../images/logo_symbol.png'\r\nimport { Link } from 'react-router-dom'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { path } from '../../helpers/path'\r\n\r\ninterface Props {\r\n values: ResetPassword\r\n onSubmit(values: ResetPassword): void\r\n isSubmit: boolean\r\n error: any\r\n}\r\n\r\nconst ResetPasswordForm: React.FC = (props) => {\r\n const { values, onSubmit, isSubmit, error } = props\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{t('login.header')}

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

{t('login.forgotten-header')}

\r\n {error ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n \r\n \r\n \r\n \r\n ({\r\n validator(_: any, value: any) {\r\n if (!value || getFieldValue('Password') === value) {\r\n return Promise.resolve()\r\n }\r\n return Promise.reject(\r\n 'The two passwords that you entered do not match!'\r\n )\r\n }\r\n })\r\n ]}\r\n >\r\n \r\n \r\n \r\n \r\n : null}\r\n >\r\n {!isSubmit\r\n ? t('general.saveNewPassword')\r\n : t('login.Please wait . .')}\r\n \r\n \r\n \r\n {t('login.return-to-login')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ResetPasswordForm\r\n","import React, { useState, useEffect, useRef, useCallback } from 'react'\r\nimport { withRouter, useHistory, useLocation } from 'react-router-dom'\r\nimport { Layout } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport ResetPasswordForm from '../components/forgotten-password/ResetPasswordForm'\r\nimport { ResetPassword as FP } from '../interfaces'\r\nimport { resetPasswordRequest, clearAuthState } from '../store/auth'\r\nimport { path } from '../helpers/path'\r\nimport { Language } from '../components/menu/Language'\r\nimport ReCAPTCHA from 'react-google-recaptcha'\r\nimport { SITE_KEY } from '../helpers/constants'\r\n\r\nconst DELAY = 1500\r\n\r\nconst ResetPassword = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const query = new URLSearchParams(useLocation().search)\r\n const processId = query.get('PID')\r\n const auth = appSelector((state) => state.auth)\r\n const { Content } = Layout\r\n const [values] = useState({\r\n Password: '',\r\n ProcessId: processId ?? '',\r\n Confirm: ''\r\n })\r\n const [isSubmit, setIsSubmit] = useState(false)\r\n const [error, setError] = useState('')\r\n const history = useHistory()\r\n const [load, setLoad] = useState(false)\r\n const [expired, setExpired] = useState(false)\r\n const reCaptchaRef = useRef()\r\n const [isMounted, setIsMounted] = useState(false)\r\n\r\n useEffect(() => {\r\n dispatch(clearAuthState())\r\n setTimeout(() => {\r\n setLoad(true)\r\n }, DELAY)\r\n return () => {\r\n setIsMounted(!isMounted)\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const onSubmit = (values: FP) => {\r\n reCaptchaRef.current\r\n .executeAsync()\r\n .then((value: string) => {\r\n if (value && !expired) {\r\n const payload: FP = {\r\n Password: values.Password,\r\n ProcessId: values.ProcessId\r\n }\r\n dispatch(resetPasswordRequest(payload))\r\n }\r\n })\r\n .catch((err: any) => {})\r\n }\r\n\r\n useEffect(() => {\r\n const {\r\n isResettingPassword,\r\n resetPasswordSuccess,\r\n resetPasswordError,\r\n resetError\r\n } = auth\r\n setIsSubmit(isResettingPassword)\r\n\r\n if (resetPasswordSuccess) {\r\n history.push(path.login)\r\n }\r\n if (resetPasswordError) {\r\n setError(resetError)\r\n }\r\n }, [auth, history])\r\n\r\n const handleRecaptcha = useCallback((value) => {\r\n if (value === null) setExpired(true)\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {load && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default withRouter(ResetPassword)\r\n","import { Reducer } from \"redux\";\r\nimport { VASTransactionState, TransactionTypes } from \"./types\";\r\nimport { AuthActionTypes } from \"../auth\";\r\n\r\nexport const initialState: VASTransactionState = {\r\n currencies: [],\r\n currenciesLoading: false,\r\n currencyError: null,\r\n error: null,\r\n loading: false,\r\n transactions: null,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportSuccess: false,\r\n isExportError: false,\r\n exportError: null,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: false,\r\n isRequestingDownload: false,\r\n downloadError: null,\r\n vasDashboard: null,\r\n vasDashboardLoading: false,\r\n vasDashboardError: null,\r\n collectionDashboard: null,\r\n collectionDashboardLoading: false,\r\n collectionDashboardError: null,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = initialState,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case TransactionTypes.GET_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n transactions: action.payload,\r\n loading: false,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n case TransactionTypes.GET_CURRENCIES:\r\n return {\r\n ...state,\r\n currenciesLoading: true,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_SUCCESS:\r\n return {\r\n ...state,\r\n currencies: action.payload,\r\n currenciesLoading: false,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_FAILURE:\r\n return {\r\n ...state,\r\n currenciesLoading: false,\r\n currencyError: action.payload,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload,\r\n };\r\n case TransactionTypes.DOWNLOAD_RECEIPT_REQUEST:\r\n return {\r\n ...state,\r\n isRequestingDownload: true,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: action.payload,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: true,\r\n downloadError: undefined,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_FAILURE:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: true,\r\n downloadRecieptSuccess: false,\r\n downloadError: action.payload,\r\n };\r\n case TransactionTypes.CLEAR_VAS:\r\n return {\r\n ...state,\r\n vasDashboard: null,\r\n vasDashboardLoading: false,\r\n vasDashboardError: null,\r\n collectionDashboard: null,\r\n collectionDashboardLoading: false,\r\n collectionDashboardError: null,\r\n transactions: null,\r\n };\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n case TransactionTypes.GET_VAS_DASHBOARD_REQUEST:\r\n return {\r\n ...state,\r\n vasDashboardLoading: true,\r\n vasDashboardError: null,\r\n };\r\n case TransactionTypes.GET_VAS_DASHBOARD_SUCCESS:\r\n return {\r\n ...state,\r\n vasDashboard: action.payload,\r\n vasDashboardLoading: false,\r\n };\r\n case TransactionTypes.GET_VAS_DASHBOARD_FAILURE:\r\n return {\r\n ...state,\r\n vasDashboardError: action.payload,\r\n vasDashboardLoading: false,\r\n };\r\n case TransactionTypes.GET_COLLECTION_DASHBOARD_REQUEST:\r\n return {\r\n ...state,\r\n collectionDashboardLoading: true,\r\n collectionDashboardError: null,\r\n };\r\n case TransactionTypes.GET_COLLECTION_DASHBOARD_SUCCESS:\r\n return {\r\n ...state,\r\n collectionDashboard: action.payload,\r\n collectionDashboardLoading: false,\r\n };\r\n case TransactionTypes.GET_COLLECTION_DASHBOARD_FAILURE:\r\n return {\r\n ...state,\r\n collectionDashboardError: action.payload,\r\n collectionDashboardLoading: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as vasTransactionTableReducer };\r\n","import React from 'react'\r\nimport { Spin, Row } from 'antd'\r\nimport { Account } from '../interfaces'\r\n\r\ninterface Props {\r\n accounts: Account[]\r\n loading: boolean\r\n}\r\n\r\nconst Accounts = (props: Props) => {\r\n const { accounts, loading }= props\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n \r\n \r\n )\r\n : (\r\n
\r\n
\r\n

\r\n USD\r\n {accounts && accounts.length ? accounts.filter(x => x.currency === 'USD')[0]?.availableBalance : 0}\r\n

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

\r\n CDF\r\n {accounts && accounts.length ? accounts.filter(x => x.currency === 'CDF')[0]?.availableBalance : 0}\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default Accounts\r\n","import React, { lazy, Suspense, useState, useEffect, Fragment } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Layout, Spin, Row, Button } from \"antd\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { appSelector } from \"../helpers/appSelector\";\r\nimport { AppDispatch } from \"../helpers/appDispatch\";\r\n\r\nimport {\r\n getTransactionsRequest,\r\n exportTranxRequest,\r\n downloadReceiptRequest,\r\n} from \"../store/vas-transactions\";\r\nimport { getMerchantsRequest, getVASServiceRequest } from \"../store/reports\";\r\nimport { isEmpty } from \"../helpers/isEmpty\";\r\nimport {\r\n TransactionHistory,\r\n MerchantData,\r\n Transaction,\r\n VASService,\r\n} from \"../interfaces\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport moment from \"moment\";\r\nimport Accounts from \"./_accounts\";\r\nimport { getAccountsBalanceRequest } from \"../store/home\";\r\n\r\nconst { Content } = Layout;\r\n\r\nconst TransactionFilters = lazy(\r\n () => import(\"../components/vas-transactions/TransactionFilters\")\r\n);\r\nconst TransactionTable = lazy(\r\n () => import(\"../components/vas-transactions/TransactionTable\")\r\n);\r\nconst TransactionDetail = lazy(\r\n () => import(\"../components/vas-transactions/TransactionDetail\")\r\n);\r\nconst CurrencyFilter = lazy(\r\n () => import(\"../components/vas-transactions/CurrencyFilter\")\r\n);\r\nconst EmptyBox = lazy(() => import(\"../components/vas-transactions/EmptyBox\"));\r\n\r\nconst VasTransactions = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n\r\n //Modal\r\n\r\n // const [imageUrl, setImageUrl] = useState('')\r\n\r\n const transaction = appSelector((state) => state.vasTransaction);\r\n const reports = appSelector((state) => state.reports);\r\n const { user } = appSelector((state) => state.auth);\r\n const home = appSelector((state) => state.home)\r\n const [trans, setTrans] = useState([]);\r\n const [trxReport, setTrxReport] = useState(null);\r\n const { t } = useTranslation();\r\n const [channelSearch, setChannelSearch] = useState(\"\");\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n const [statusSearch, setStatusSearch] = useState(\"\");\r\n const [fromDate, setFromDate] = useState(\"\");\r\n const [toDate, setToDate] = useState(\"\");\r\n const [exportType, setExportType] = useState(\"\");\r\n const [trx, setTrx] = useState(null);\r\n const [switchView, setSwitchView] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [currency, setCurrency] = useState(\"USD\");\r\n const [merchants, setMerchants] = useState(reports.merchants);\r\n const [merchant, setMerchant] = useState(null);\r\n const [isExporting, setIsExporting] = useState(false);\r\n const [isDownlaoding, setIsDownloading] = useState(false);\r\n const [pageSize, setPageSize] = useState(10);\r\n const [skip, setSkip] = useState(0);\r\n const [isSearching, setIsSearching] = useState(false);\r\n const [processType, setProcessType] = useState(\"\");\r\n const [vasservices, setVasServices] = useState(\r\n reports.vasservices\r\n );\r\n const { accounts, loadingAccounts } = home\r\n const [currentPage, setCurrentPage] = useState(1);\r\n \r\n const params = {\r\n currency: currency,\r\n pageSize: pageSize,\r\n skip: skip,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant ? merchant.name : \"\",\r\n status: statusSearch,\r\n channel: channelSearch,\r\n searchValue: searchValue,\r\n exportType: exportType,\r\n fixedPeriod: \"overall\",\r\n processTypeId: processType,\r\n };\r\n\r\n useEffect(() => {\r\n // fetch transaction history\r\n // dispatch(getTransactionsRequest(params))\r\n const { merchants } = reports;\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest());\r\n }\r\n dispatch(getVASServiceRequest());\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (user) {\r\n dispatch(getAccountsBalanceRequest(user?.userId?.toString()))\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [user])\r\n\r\n useEffect(() => {\r\n const { loading, transactions, isExporting, isRequestingDownload } =\r\n transaction;\r\n const { merchants, vasservices } = reports;\r\n setLoading(loading);\r\n setMerchants(merchants);\r\n setTrans(\r\n transactions && !isEmpty(transactions.data) ? transactions.data : []\r\n );\r\n setTrxReport(transactions);\r\n setIsExporting(isExporting);\r\n setIsDownloading(isRequestingDownload);\r\n setVasServices(vasservices);\r\n }, [transaction, reports]);\r\n\r\n const onClickRow = (transactionID: number) => {\r\n if (transaction.transactions && !isEmpty(transaction.transactions.data)) {\r\n const trx = transaction.transactions.data.find(\r\n (t) => t.transactionId === transactionID\r\n );\r\n if (trx !== undefined) {\r\n setTrx(trx);\r\n setSwitchView(true);\r\n }\r\n }\r\n };\r\n\r\n const onCloseScreen = () => {\r\n setSwitchView(false);\r\n setTrx(null);\r\n };\r\n\r\n const reloadTransaction = () => {\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onDownloadReceiptClick = (transactionId: number): void => {\r\n dispatch(downloadReceiptRequest(transactionId));\r\n };\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value);\r\n setSkip(0);\r\n setCurrentPage(1);\r\n \r\n const searchParams = {\r\n currency: value,\r\n pageSize,\r\n skip: 0,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n status: \"\",\r\n channel: \"\",\r\n searchValue: \"\",\r\n merchant: \"\",\r\n exportType: \"\",\r\n fixedPeriod: \"overall\",\r\n processTypeId: processType,\r\n };\r\n \r\n dispatch(getTransactionsRequest(searchParams));\r\n };\r\n\r\n const getSearchParams = () => ({\r\n currency,\r\n pageSize,\r\n skip,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant?.name || \"\",\r\n status: statusSearch,\r\n channel: channelSearch,\r\n searchValue: searchValue,\r\n exportType: exportType,\r\n fixedPeriod: \"overall\",\r\n processTypeId: processType,\r\n });\r\n\r\n const onLoadMore = (page: number, size: number) => {\r\n const newSkip = page - 1;\r\n setPageSize(size);\r\n setSkip(newSkip);\r\n setCurrentPage(page);\r\n \r\n const searchParams = getSearchParams();\r\n searchParams.skip = newSkip;\r\n searchParams.pageSize = size;\r\n \r\n dispatch(getTransactionsRequest(searchParams));\r\n };\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type);\r\n params.exportType = type;\r\n dispatch(exportTranxRequest(params));\r\n };\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true);\r\n setSwitchView(false);\r\n setTrx(null);\r\n setSkip(0);\r\n setCurrentPage(1);\r\n \r\n const {\r\n status,\r\n channel,\r\n periodFrom,\r\n periodTo,\r\n query,\r\n merchant: merchantId,\r\n processTypeId,\r\n } = values;\r\n \r\n let m: MerchantData | undefined = undefined;\r\n let pFrom: string = \"\",\r\n pTo: string = \"\";\r\n\r\n setChannelSearch(channel !== undefined ? channel : \"\");\r\n setStatusSearch(status !== undefined ? status : \"\");\r\n setSearchValue(query !== undefined ? query : \"\");\r\n \r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format(\"MM/DD/YYYY\");\r\n pTo = moment(periodTo).format(\"MM/DD/YYYY\");\r\n setFromDate(pFrom);\r\n setToDate(pTo);\r\n }\r\n \r\n if (merchantId !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchantId);\r\n setMerchant(m !== undefined ? m : null);\r\n } else {\r\n setMerchant(null);\r\n }\r\n \r\n setProcessType(processTypeId);\r\n\r\n const searchParams = {\r\n currency,\r\n pageSize,\r\n skip: 0,\r\n periodFrom: pFrom,\r\n periodTo: pTo,\r\n merchant: m?.name || \"\",\r\n status: status || \"\",\r\n channel: channel || \"\",\r\n searchValue: query || \"\",\r\n exportType,\r\n fixedPeriod: \"overall\",\r\n processTypeId,\r\n };\r\n\r\n dispatch(getTransactionsRequest(searchParams));\r\n };\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields();\r\n setSwitchView(false);\r\n setTrx(null);\r\n setSkip(0);\r\n setCurrentPage(1);\r\n setMerchant(null);\r\n setFromDate(\"\");\r\n setToDate(\"\");\r\n setStatusSearch(\"\");\r\n setChannelSearch(\"\");\r\n setSearchValue(\"\");\r\n setProcessType(\"\");\r\n setIsSearching(false);\r\n \r\n const resetParams = {\r\n currency,\r\n pageSize: 10,\r\n skip: 0,\r\n periodFrom: \"\",\r\n periodTo: \"\",\r\n merchant: \"\",\r\n status: \"\",\r\n channel: \"\",\r\n searchValue: \"\",\r\n exportType: \"\",\r\n fixedPeriod: \"overall\",\r\n processTypeId: \"\",\r\n };\r\n\r\n dispatch(getTransactionsRequest(resetParams));\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n {isSearching ? (\r\n \r\n {!switchView ? (\r\n \r\n {/* */}\r\n\r\n \r\n
\r\n \r\n

\r\n {t(\"general.transactionsChart\")}\r\n

\r\n
\r\n {!isEmpty(trans) ? (\r\n <>\r\n onExportClick(\"EXCEL\")}\r\n loading={isExporting && exportType === \"EXCEL\"}\r\n >\r\n {t(\"general.export-excel\")}\r\n \r\n {/* onExportClick('PDF')}\r\n loading={isExporting && exportType === 'PDF'}\r\n >\r\n {t('general.export-pdf')}\r\n */}\r\n \r\n ) : null}\r\n reloadTransaction()}\r\n >\r\n {t(\"general.refresh\")}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n ) : (\r\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 withRouter(VasTransactions);\r\n","import { FundTransaction } from \"../../interfaces/AllocateFunds\"\r\n\r\nexport enum AllocateFundActionTypes {\r\n ALLOCATE_FUNDS_REQUEST = '@@allocate-funds/ALLOCATE_FUNDS_REQUEST',\r\n ALLOCATE_FUNDS_SUCCESS = '@@allocate-funds/ALLOCATE_FUNDS_SUCCESS',\r\n ALLOCATE_FUNDS_FAILURE = '@@allocate-funds/ALLOCATE_FUNDS_FAILURE',\r\n FUNDS_TRANSACTIONS_REQUEST = '@@allocate-funds/FUNDS_TRANSACTIONS_REQUEST',\r\n FUNDS_TRANSACTIONS_SUCCESS = '@@allocate-funds/FUNDS_TRANSACTIONS_SUCCESS',\r\n FUNDS_TRANSACTIONS_FAILURE = '@@allocate-funds/FUNDS_TRANSACTIONS_FAILURE',\r\n CLEAR_STATES = '@@allocate-funds/CLEAR_STATES',\r\n VERIFY_FUNDS_ALLOCATION_REQUEST = '@@allocate-funds/VERIFY_FUNDS_ALLOCATION_REQUEST',\r\n VERIFY_FUNDS_ALLOCATION_SUCCESS = '@@allocate-funds/VERIFY_FUNDS_ALLOCATION_SUCCESS',\r\n VERIFY_FUNDS_ALLOCATION_FAILURE= '@@allocate-funds/VERIFY_FUNDS_ALLOCATION_FAILURE',\r\n EXPORT_TRANSACTIONS_REQUEST= '@@allocate-funds/EXPORT_TRANSACTIONS_REQUEST',\r\n EXPORT_TRANSACTIONS_SUCCESS= '@@allocate-funds/EXPORT_TRANSACTIONS_SUCCESS',\r\n EXPORT_TRANSACTIONS_FAILURE= '@@allocate-funds/EXPORT_TRANSACTIONS_FAILURE'\r\n}\r\n\r\nexport type AllocateFundState = {\r\n readonly isSubmitting: boolean\r\n readonly isVerifying: boolean\r\n readonly isFetching: boolean\r\n readonly success: boolean\r\n readonly failure: boolean\r\n readonly error: any\r\n readonly transactions: FundTransaction[]\r\n}\r\n","import { Reducer } from 'redux'\r\nimport { AllocateFundState, AllocateFundActionTypes } from './types'\r\nimport { AuthActionTypes } from '../auth'\r\n\r\nexport const initialState: AllocateFundState = {\r\n isSubmitting: false,\r\n success: false,\r\n failure: false,\r\n error: undefined,\r\n isFetching: false,\r\n transactions: [],\r\n isVerifying: false\r\n}\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState\r\n case AllocateFundActionTypes.ALLOCATE_FUNDS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n success: false,\r\n error: undefined,\r\n failure: false\r\n }\r\n case AllocateFundActionTypes.ALLOCATE_FUNDS_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n success: true\r\n }\r\n case AllocateFundActionTypes.ALLOCATE_FUNDS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n failure: true\r\n }\r\n case AllocateFundActionTypes.FUNDS_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n isFetching: true,\r\n error: undefined,\r\n }\r\n case AllocateFundActionTypes.FUNDS_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n transactions: action.payload\r\n }\r\n case AllocateFundActionTypes.FUNDS_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n isFetching: false\r\n }\r\n case AllocateFundActionTypes.CLEAR_STATES:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n success: false,\r\n failure: false,\r\n error: undefined,\r\n isVerifying: false\r\n }\r\n case AllocateFundActionTypes.VERIFY_FUNDS_ALLOCATION_REQUEST:\r\n return {\r\n ...state,\r\n isVerifying: true,\r\n error: undefined\r\n }\r\n case AllocateFundActionTypes.VERIFY_FUNDS_ALLOCATION_SUCCESS:\r\n return {\r\n ...state,\r\n isVerifying: false,\r\n success: true\r\n }\r\n case AllocateFundActionTypes.VERIFY_FUNDS_ALLOCATION_FAILURE:\r\n return {\r\n ...state,\r\n isVerifying: false,\r\n failure: true,\r\n error: action.payload\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport { reducer as allocateFundsReducer }\r\n","import { action } from 'typesafe-actions'\r\nimport { AllocateFundActionTypes } from './types'\r\n\r\nexport const allocateFundsRequest = (payload: any) =>\r\n action(AllocateFundActionTypes.ALLOCATE_FUNDS_REQUEST, payload)\r\nexport const allocateFundSuccess = (response: any) =>\r\n action(AllocateFundActionTypes.ALLOCATE_FUNDS_SUCCESS, response)\r\nexport const allocateFundFailure = (error: any) =>\r\n action(AllocateFundActionTypes.ALLOCATE_FUNDS_FAILURE, error)\r\nexport const fundTransactionsRequest = (payload: any) =>\r\n action(AllocateFundActionTypes.FUNDS_TRANSACTIONS_REQUEST, payload)\r\nexport const fundTransactionsSuccess = (response: any) =>\r\n action(AllocateFundActionTypes.FUNDS_TRANSACTIONS_SUCCESS, response)\r\nexport const fundTransactionsFailure = (error: any) =>\r\n action(AllocateFundActionTypes.FUNDS_TRANSACTIONS_FAILURE, error)\r\nexport const clearStates = () => action(AllocateFundActionTypes.CLEAR_STATES)\r\nexport const verifyFundAllocationRequest = (payload: any) =>\r\n action(AllocateFundActionTypes.VERIFY_FUNDS_ALLOCATION_REQUEST, payload)\r\nexport const verifyFundAllocationSuccess = (response: any) =>\r\n action(AllocateFundActionTypes.VERIFY_FUNDS_ALLOCATION_SUCCESS, response)\r\nexport const verifyFundAllocationFailure = (error: any) =>\r\n action(AllocateFundActionTypes.VERIFY_FUNDS_ALLOCATION_FAILURE, error)\r\nexport const exportTransactionRequest = (payload: any) =>\r\n action(AllocateFundActionTypes.EXPORT_TRANSACTIONS_REQUEST, payload);\r\nexport const exportTransactionSuccess = (response: any) =>\r\n action(AllocateFundActionTypes.EXPORT_TRANSACTIONS_SUCCESS, response)\r\nexport const exportTransactionFailure = (error: any) =>\r\n action(AllocateFundActionTypes.EXPORT_TRANSACTIONS_FAILURE, error)","import React from 'react'\r\nimport { Input, Row, Col, Button, Alert, Select, Modal } from 'antd'\r\nimport 'antd-country-phone-input/dist/index.css'\r\nimport { MerchantData } from '../../interfaces'\r\nimport { isEmpty } from '../../helpers/isEmpty';\r\n\r\ninterface Props {\r\n onSubmit(values: any) : void\r\n isSubmitting: boolean\r\n Form: any\r\n form: any\r\n errors: any\r\n success: boolean\r\n merchants: MerchantData[]\r\n translate: any\r\n showModal?: boolean\r\n onToggleModal: () => void\r\n}\r\n\r\nconst FundAllocation: React.FC = ({\r\n Form,\r\n errors,\r\n form,\r\n isSubmitting,\r\n onSubmit,\r\n success,\r\n merchants,\r\n translate,\r\n showModal,\r\n onToggleModal\r\n}) => {\r\n const { Option } = Select;\r\n\r\n return (\r\n null}\r\n footer={[\r\n onToggleModal()}\r\n className=\"new-cancel-btn\"\r\n >\r\n {translate('general.close')}\r\n ,\r\n \r\n {translate('general.send')}\r\n \r\n ]}\r\n >\r\n \r\n
\r\n \r\n {success ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n {errors ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n \r\n \r\n \r\n option.children\r\n .toLowerCase()\r\n .indexOf(input.toLowerCase()) >= 0\r\n }\r\n className=\"select-merchant\" \r\n >\r\n {!isEmpty(merchants) &&\r\n merchants.map((m) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 FundAllocation\r\n","import React from 'react'\r\nimport {\r\n Row,\r\n Col,\r\n Select,\r\n DatePicker,\r\n Button,\r\n Collapse,\r\n Form\r\n} from 'antd'\r\nimport { Clock } from '../../utils/clock'\r\nimport { MerchantData } from '../../interfaces'\r\nimport { isEmpty } from '../../helpers/isEmpty'\r\nimport { roles } from '../../helpers/constants'\r\nimport { appSelector } from '../../helpers/appSelector'\r\nimport { AppDispatch } from '../../helpers/appDispatch'\r\nimport { useDispatch } from 'react-redux'\r\nimport { exportTransactionRequest } from '../../store/allocate-funds'\r\n\r\ninterface FiltersProps {\r\n merchants: MerchantData[]\r\n onSearch(values: any): void\r\n onReset(form: any): void\r\n translate: any\r\n setOpenModal: () => void\r\n}\r\n\r\nconst { Option } = Select\r\nconst { Panel } = Collapse\r\n\r\nconst Filters: React.FC = ({\r\n merchants,\r\n onSearch,\r\n onReset,\r\n translate,\r\n setOpenModal\r\n}) => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { transactions } = appSelector((state) => state.allocateFundState);\r\n const { time } = Clock()\r\n const [form] = Form.useForm()\r\n const { user } = appSelector((state) => state.auth)\r\n\r\n let role: any\r\n if (user) {\r\n role = user.roles.find((r) => r === roles.SuperMerchant)\r\n } else {\r\n role = roles.SuperMerchant\r\n }\r\n\r\n const onExportClick = () => {\r\n const params = {\r\n periodFrom: '',\r\n periodTo: '',\r\n merchant: '',\r\n exportType: 'EXCEL'\r\n }\r\n dispatch(exportTransactionRequest(params))\r\n }\r\n\r\n return (\r\n \r\n \r\n {time}\r\n \r\n }\r\n >\r\n \r\n \r\n
\r\n \r\n \r\n option.children\r\n .toLowerCase()\r\n .indexOf(input.toLowerCase()) >= 0\r\n }\r\n >\r\n {!isEmpty(merchants) &&\r\n merchants.map((m) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {translate('general.filter')}\r\n \r\n \r\n \r\n \r\n onReset(form)}\r\n >\r\n {translate('general.reset')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isEmpty(transactions) ? (\r\n \r\n {translate('general.export-excel')}\r\n \r\n ) : null}\r\n {role !== undefined && role === roles.SuperMerchant ? (\r\n \r\n {translate('general.Allocate_Funds')}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Filters\r\n","import React, { useState } from 'react'\r\nimport { Row, Col, Table, Tag } from 'antd'\r\nimport { appSelector } from '../../helpers/appSelector'\r\nimport Filters from './Filters'\r\nimport moment from 'moment'\r\nimport { roles, timeZones } from '../../helpers/constants'\r\nimport { MerchantData, FundTransaction as TT } from \"../../interfaces\";\r\nimport { isEmpty } from '../../helpers/isEmpty'\r\nimport { clearStates, fundTransactionsRequest } from '../../store/allocate-funds'\r\nimport { AppDispatch } from '../../helpers/appDispatch'\r\nimport { useDispatch } from 'react-redux'\r\nimport Accounts from '../../pages/_accounts'\r\nimport { getMerchantVASAccountBalance } from '../../store/home'\r\n\r\ninterface Props {\r\n onLoadMore(page: any, pageSize: any): void\r\n translate: any\r\n total: number\r\n setOpenModal: () => void\r\n onClickRow(transactionID: number): void\r\n}\r\n\r\nconst AllocateFundsDashboard: React.FC = (props) => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { onLoadMore, translate, total, setOpenModal, onClickRow } = props\r\n const { transactions, isFetching} = appSelector((state) => state.allocateFundState);\r\n const { user } = appSelector((state) => state.auth)\r\n const reports = appSelector((state) => state.reports)\r\n const home = appSelector((state) => state.home)\r\n const { merchants } = reports\r\n const [merchant, setMerchant] = useState(null)\r\n const [periodFrom, setPeriodFrom] = useState('')\r\n const [periodTo, setPeriodTo] = useState('')\r\n const [skip, setSkip] = useState(0)\r\n const [pageSize, setPageSize] = useState(10)\r\n const [isSearching, setIsSearching] = useState(false)\r\n const {loadingAccounts, merchantAccounts } = home\r\n\r\n let role: any;\r\n if (user) {\r\n role = user.roles.find((r) => r === roles.SuperMerchant);\r\n } else {\r\n role = roles.SuperMerchant;\r\n }\r\n \r\n const payload = {\r\n periodFrom: periodFrom,\r\n periodTo: periodTo,\r\n merchant: merchant ? merchant?.userId : 0,\r\n skip: skip,\r\n pageSize: pageSize\r\n }\r\n console.log({merchant});\r\n const onSearch = (values: any) => {\r\n setIsSearching(true)\r\n const { merchant, periodFrom, periodTo } = values\r\n let pFrom: string = '',\r\n pTo: string = ''\r\n let m: MerchantData | undefined = undefined\r\n \r\n if (!isEmpty(periodFrom) && !isEmpty(periodTo)) {\r\n pFrom = moment(periodFrom).format('MM/DD/YYYY')\r\n pTo = moment(periodTo).format('MM/DD/YYYY')\r\n setPeriodFrom(pFrom)\r\n setPeriodTo(pTo)\r\n }\r\n if (!isEmpty(merchant)) {\r\n m = merchants.find((m) => m.merchantId === merchant)\r\n if (m !== undefined) {\r\n setMerchant(m)\r\n\r\n dispatch(getMerchantVASAccountBalance(m !== undefined ? m?.userId?.toString() : ''))\r\n } else {\r\n setMerchant(null)\r\n }\r\n }\r\n payload.periodFrom = pFrom\r\n payload.periodTo = pTo\r\n payload.merchant = m !== undefined ? m?.userId : 0\r\n dispatch(clearStates())\r\n dispatch(fundTransactionsRequest(payload))\r\n }\r\n \r\n const onReset = (form: any) => {\r\n form.resetFields()\r\n payload.periodFrom = ''\r\n payload.periodTo = ''\r\n payload.merchant = 0\r\n setIsSearching(false)\r\n }\r\n\r\n const columns: any = [\r\n {\r\n title: ,\r\n dataIndex: \"status\",\r\n key: \"status\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n render: (status: string) => {\r\n return ;\r\n },\r\n },\r\n {\r\n title: `${translate(\"general.amount\")}`,\r\n dataIndex: \"amount\",\r\n key: \"amount\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n },\r\n {\r\n title: `${translate(\"general.debitAccount\")}`,\r\n dataIndex: \"debitAccount\",\r\n key: \"debitAccount\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n },\r\n {\r\n title: `${translate(\"general.creditAccount\")}`,\r\n dataIndex: \"creditAccount\",\r\n key: \"creditAccount\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n },\r\n {\r\n title: `${translate(\"general.createdAt\")}`,\r\n dataIndex: \"trxDate\",\r\n key: \"trxdate\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n responsive: [\"lg\"],\r\n render: (date: string) => {\r\n // const d = moment(date, 'MM/DD/YYYY HH:mm:ss')\r\n const d = moment(date)\r\n .tz(timeZones.kinshasa)\r\n .format(`MMMM D, YYYY (h:mm a)`);\r\n return {d};\r\n },\r\n },\r\n {\r\n title: `${translate(\"general.status\")}`,\r\n dataIndex: \"status\",\r\n key: \"status\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n responsive: [\"lg\"]\r\n },\r\n {\r\n title: `${translate(\"general.approvalStatus\")}`,\r\n dataIndex: \"approvalStatusId\",\r\n key: \"approvalStatusId\",\r\n align: \"center\",\r\n className: \"column-text\",\r\n responsive: [\"lg\"],\r\n render: (approvalStatusId: number) => {\r\n switch (approvalStatusId) {\r\n case 1:\r\n return (\r\n \r\n {'Submitted to Checker'}\r\n \r\n );\r\n case 2:\r\n return (\r\n \r\n {'Approved'}\r\n \r\n );\r\n case 3:\r\n return (\r\n \r\n {'Rejected'}\r\n \r\n );\r\n default:\r\n break;\r\n }\r\n \r\n },\r\n }\r\n ];\r\n\r\n let dataSource: TT[] = [];\r\n for (let transaction of transactions) {\r\n dataSource.push({\r\n amount: `${transaction.currency} ${transaction.amount}`,\r\n transactionId: transaction.transactionId,\r\n trxDate: transaction.trxDate,\r\n status: transaction.status,\r\n debitAccount: transaction.debitAccount,\r\n creditAccount: transaction.creditAccount,\r\n currency: transaction.status,\r\n approvalStatusId: transaction.approvalStatusId,\r\n approvalStatus: transaction.approvalStatus\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n {role !== undefined && role === roles.SuperMerchant && merchant !== undefined && merchant !== null && !loadingAccounts? (\r\n
\r\n {`${merchant? merchant.name: ''} ${translate(\"general.balance\")}:`}\r\n \r\n
\r\n ): null}\r\n \r\n
\r\n
\r\n ({\r\n onClick: () => onClickRow(t.transactionId),\r\n })}\r\n pagination={{\r\n onChange: (page, pageSize) => {\r\n onLoadMore(page, pageSize)\r\n },\r\n total: total,\r\n showTotal: (_, range) => {\r\n const tran = translate(`general.pagination`)\r\n let t = tran.replace(`%d`, `${range[0]} - ${range[1]}`)\r\n let s = t.replace(`%s`, total)\r\n return s\r\n },\r\n showSizeChanger: false\r\n }}\r\n loading={isFetching}\r\n />\r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AllocateFundsDashboard\r\n","import React, { useState } from 'react'\r\nimport { Row, Col, Divider, Button, List, /*, Avatar*/ \r\nAlert,\r\nForm} from 'antd'\r\nimport { XCircle } from 'react-feather'\r\nimport { FundTransaction } from '../../interfaces'\r\nimport { transactionStatus, timeZones, roles } from '../../helpers/constants'\r\nimport moment from 'moment-timezone'\r\nimport { appSelector } from '../../helpers/appSelector'\r\nimport { AppDispatch } from '../../helpers/appDispatch'\r\nimport { useDispatch } from 'react-redux'\r\nimport { verifyFundAllocationRequest } from '../../store/allocate-funds'\r\nimport TextArea from 'antd/lib/input/TextArea'\r\ninterface TransactionDetailProps {\r\n onCloseScreen(): void\r\n transaction: FundTransaction\r\n isDownloading: boolean\r\n translate: any\r\n}\r\n\r\nconst TransactionDetail: React.FC = ({\r\n onCloseScreen,\r\n transaction,\r\n isDownloading,\r\n translate,\r\n}) => {\r\n const allocateFundState = appSelector((state) => state.allocateFundState)\r\n const { user } = appSelector((state) => state.auth);\r\n const { success, error } = allocateFundState\r\n const dispatch: AppDispatch = useDispatch()\r\n const [formData, setFormData] = useState({ reason: '' });\r\n\r\n let classname = ''\r\n switch (transaction.status) {\r\n case 'SUCCESS':\r\n classname = 'trans-status-success'\r\n break\r\n case transactionStatus.CANCELED:\r\n classname = 'trans-status-canceled'\r\n break\r\n case transactionStatus.DECLINED:\r\n classname = 'trans-status-declined'\r\n break\r\n default:\r\n classname = 'trans-status-canceled'\r\n }\r\n\r\n const params = {\r\n transactionId: 0,\r\n approvalStatusId: 0,\r\n reason: ''\r\n }\r\n\r\n let role;\r\n if (user) {\r\n role = user.roles.find((r) => r === roles.SuperMerchant);\r\n } else {\r\n role = roles.SuperMerchant;\r\n }\r\n\r\n const onApproveAllocation = (values: any) => {\r\n params.transactionId = transaction.transactionId\r\n params.approvalStatusId = 2\r\n params.reason = formData.reason\r\n dispatch(verifyFundAllocationRequest(params))\r\n }\r\n\r\n const onRejectAllocation = (values: any) => {\r\n console.log({ formData });\r\n params.transactionId = transaction.transactionId\r\n params.approvalStatusId = 3\r\n params.reason = formData.reason\r\n dispatch(verifyFundAllocationRequest(params))\r\n }\r\n\r\n const handleChange = (e: any) => {\r\n setFormData({\r\n ...formData,\r\n [e.target.name]: e.target.value,\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
\r\n

{translate('general.transactionDetails')}

\r\n
\r\n onCloseScreen()} style={{ cursor: 'pointer' }} />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {success ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n {error ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n\r\n {role !== undefined && role === roles.SuperMerchant && transaction.approvalStatusId === 1 ?\r\n (\r\n
\r\n
\r\n \r\n {translate('general.reject')}\r\n \r\n \r\n {translate('general.approve')}\r\n \r\n
\r\n
\r\n )\r\n : null}\r\n
\r\n
\r\n

{translate('general.amount')}

\r\n

{`${transaction.currency} ${parseFloat(transaction.amount).toFixed(2)}`}

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

{translate('general.transactionId')}

\r\n

{transaction.transactionId}

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

{translate('general.debitAccount')}

\r\n

{transaction.debitAccount}

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

{translate('general.creditAccount')}

\r\n

{`${transaction.creditAccount}`}

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

{translate('general.createdAt')}

\r\n

\r\n {moment(transaction.trxDate)\r\n .tz(timeZones.kinshasa)\r\n .format(`MMMM D, YYYY (h:mm a)`)}\r\n

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

{translate('general.approvalStatus')}

\r\n

{`${transaction.approvalStatus}`}

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

{translate('general.approvalStatus')}

\r\n

{`${transaction.approvalStatus}`}

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

{translate('general.reason')}

\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 TransactionDetail\r\n","import React, { Suspense, useEffect, useState } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { Layout, Spin, Row, Form } from 'antd'\r\nimport { useDispatch } from 'react-redux'\r\nimport { appSelector } from '../helpers/appSelector'\r\nimport { AppDispatch } from '../helpers/appDispatch'\r\nimport { FundTransaction, MerchantData } from '../interfaces'\r\nimport { allocateFundsRequest, clearStates, fundTransactionsRequest } from '../store/allocate-funds'\r\nimport { isEmpty } from '../helpers/isEmpty'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { getMerchantsRequest } from '../store/reports'\r\nimport FundAllocation from '../components/allocateFunds'\r\nimport AllocateFundsDashboard from '../components/allocateFunds/dashboard'\r\nimport TransactionDetail from '../components/allocateFunds/TransactionDetail'\r\n\r\nconst { Content } = Layout\r\n\r\nconst AllocateFunds = () => {\r\n const dispatch: AppDispatch = useDispatch()\r\n const { t } = useTranslation()\r\n const reports = appSelector((state) => state.reports)\r\n const allocateFundState = appSelector((state) => state.allocateFundState)\r\n const [merchants, setMerchants] = useState(reports.merchants)\r\n const { isSubmitting, success, error } = allocateFundState\r\n const [pageSize, setPageSize] = useState(10)\r\n const [skip, setSkip] = useState(0)\r\n const [showModal, setShowModal] = useState(false)\r\n const [switchView, setSwitchView] = useState(false)\r\n const [trx, setTrx] = useState(null)\r\n\r\n const payload = {\r\n periodFrom: '',\r\n periodTo: '',\r\n merchant: 0,\r\n skip: skip,\r\n pageSize: pageSize\r\n }\r\n const params = {\r\n currency: '',\r\n merchantId: 0,\r\n amount: 0\r\n }\r\n const [form] = Form.useForm()\r\n\r\n useEffect(() => {\r\n dispatch(fundTransactionsRequest(payload));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n \r\n useEffect(() => {\r\n const { merchants } = reports\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest())\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n const { merchants } = reports\r\n setMerchants(merchants)\r\n }, [reports])\r\n\r\n const onAllocateFunds = (values: any) => {\r\n const { merchant, amount, currency } = values\r\n params.merchantId = merchant\r\n params.amount = amount\r\n params.currency = currency\r\n dispatch(allocateFundsRequest(params))\r\n }\r\n\r\n const onLoadMore = (page: any, size: any) => {\r\n setSkip(0)\r\n setPageSize(size)\r\n payload.skip = page - 1\r\n setSkip(payload.skip)\r\n dispatch(fundTransactionsRequest(payload));\r\n }\r\n const onToggleModal = () => {\r\n setShowModal(!showModal)\r\n dispatch(fundTransactionsRequest(payload));\r\n dispatch(clearStates())\r\n }\r\n \r\n const onClickRow = (transactionID: number) => {\r\n setSwitchView(!switchView)\r\n if (allocateFundState.transactions && !isEmpty(allocateFundState.transactions)) {\r\n const trx = allocateFundState.transactions.find(\r\n (t) => t.transactionId === transactionID\r\n )\r\n if (trx !== undefined) {\r\n setTrx(trx)\r\n }\r\n }\r\n }\r\n\r\n const onCloseScreen = () => {\r\n if (success) {\r\n dispatch(fundTransactionsRequest(payload));\r\n dispatch(clearStates());\r\n }\r\n setSwitchView(!switchView)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n {!switchView ? (\r\n onLoadMore(page, pageSize)}\r\n translate={t}\r\n total={0}\r\n setOpenModal={onToggleModal}\r\n onClickRow={onClickRow}\r\n />\r\n )\r\n :\r\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 withRouter(AllocateFunds)\r\n","import React from 'react';\r\nimport { Empty } from 'antd';\r\n\r\ninterface EmptyTransactionsProps {}\r\n\r\nexport const EmptyTransactions: React.FC = () => {\r\n return (\r\n \r\n \r\n No transaction\r\n \r\n No payments have been made on this page\r\n \r\n }\r\n />\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Tag, Table } from \"antd\";\r\nimport { timeZones } from \"../../helpers/constants\";\r\nimport moment from \"moment\";\r\nimport { FilePreview, PaymentStatus } from \"../../interfaces/BulkPayment\";\r\n\r\ninterface TransactionsProps {\r\n transactions: FilePreview[];\r\n}\r\n\r\ninterface Preview {\r\n key: number;\r\n msisdn: string;\r\n amount: string;\r\n currency: string;\r\n statusId: number;\r\n date: string;\r\n}\r\n\r\nexport const Transactions: React.FC = ({ transactions }) => {\r\n const columns: any[] = [\r\n {\r\n title: \"Amount\",\r\n dataIndex: \"amount\",\r\n key: \"amount\",\r\n align: \"center\",\r\n },\r\n // {\r\n // title: 'Reference',\r\n // dataIndex: 'customer',\r\n // key: 'customer',\r\n // align: 'center',\r\n // },\r\n {\r\n title: \"Phone Number\",\r\n dataIndex: \"msisdn\",\r\n key: \"msisdn\",\r\n align: \"center\",\r\n },\r\n {\r\n title: \"Uploaded on\",\r\n dataIndex: \"date\",\r\n key: \"date\",\r\n align: \"center\",\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"statusId\",\r\n key: \"statusId\",\r\n align: \"center\",\r\n render: (status: number) => {\r\n let color: string = \"geekblue\";\r\n switch (status) {\r\n case PaymentStatus.APPROVED:\r\n color = \"green\";\r\n break;\r\n case PaymentStatus.FAILED:\r\n color = \"volcano\";\r\n break;\r\n case PaymentStatus.PENDINGAPPROVAL:\r\n color = \"geekblue\";\r\n\r\n break;\r\n default:\r\n color = \"geekblue\";\r\n break;\r\n }\r\n return (\r\n \r\n {status === 1\r\n ? \"APPROVED\"\r\n : status === 3\r\n ? \"FAILED\"\r\n : \"PENDING APPROVAL\"}\r\n \r\n );\r\n },\r\n },\r\n // {\r\n // title: \"Merchant\",\r\n // dataIndex: \"merchant\",\r\n // key: \"merchant\",\r\n // align: \"left\",\r\n // },\r\n ];\r\n\r\n let dataSource: Preview[] = [];\r\n\r\n for (let transaction of transactions) {\r\n dataSource.push({\r\n key: transaction?.id,\r\n amount: `${transaction.currency} ${transaction.amount.toFixed(2)}`,\r\n\r\n date: moment(transaction.paymentDate)\r\n .tz(timeZones.kinshasa)\r\n .format(\"MMMM D, YYYY (h:mm a)\"),\r\n statusId: transaction.statusId,\r\n currency: transaction.currency,\r\n msisdn: transaction.msisdn,\r\n });\r\n }\r\n return (\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Row, Col, Button, Alert } from \"antd\";\r\n\r\nimport \"antd-country-phone-input/dist/index.css\";\r\nimport { appSelector } from \"../../helpers/appSelector\";\r\nimport { roles } from \"../../helpers/constants\";\r\n\r\ninterface CreateMerchantProps {\r\n onSubmit(): void;\r\n isSubmitting: boolean;\r\n\r\n errors: any;\r\n success: boolean;\r\n\r\n translate: any;\r\n}\r\n\r\nconst Approve: React.FC = ({\r\n errors,\r\n\r\n isSubmitting,\r\n onSubmit,\r\n success,\r\n\r\n translate,\r\n}) => {\r\n const { user } = appSelector((state) => state.auth);\r\n let role: any;\r\n if (user) {\r\n role = user.roles.find((r) => r === roles.SuperMerchant);\r\n } else {\r\n role = roles.SuperMerchant;\r\n }\r\n\r\n return (\r\n \r\n
\r\n

{translate(\"general.approve\")}

\r\n\r\n \r\n \r\n {success ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n\r\n {JSON.stringify(errors) !== \"{}\" ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n\r\n {role !== undefined && role === roles.SuperMerchant ? (\r\n \r\n {translate(\"general.approve\")}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Approve;\r\n","import React, { useEffect } from \"react\";\r\nimport { Tabs, Spin } from \"antd\";\r\nimport { EmptyTransactions } from \"./EmptyTransactions\";\r\n\r\nimport { isEmpty } from \"../../helpers/isEmpty\";\r\nimport { Transactions } from \"./Transactions\";\r\nimport {\r\n BulkPayload,\r\n BulkPaymentChecker,\r\n BulkPaymentFile,\r\n FilePreview,\r\n PaymentFile,\r\n} from \"../../interfaces/BulkPayment\";\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Approve from \"./Approve\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n bulkPaymentRequest,\r\n clearStates,\r\n getFilesRequest,\r\n} from \"../../store/bulk-payment\";\r\nimport { AppDispatch } from \"../../helpers/appDispatch\";\r\nimport { appSelector } from \"../../helpers/appSelector\";\r\n\r\ninterface PageTransactionsProps {\r\n loading: boolean;\r\n transactions: FilePreview[];\r\n isSubmiting: boolean;\r\n success: boolean;\r\n errors: any;\r\n fileId: number;\r\n}\r\n\r\nexport const PageTransactions: React.FC = ({\r\n loading,\r\n transactions,\r\n isSubmiting,\r\n success,\r\n errors,\r\n fileId,\r\n}) => {\r\n const dispatch: AppDispatch = useDispatch();\r\n\r\n const { TabPane } = Tabs;\r\n const { t } = useTranslation();\r\n let render: React.ReactNode;\r\n\r\n if (loading && isEmpty(transactions)) {\r\n render = (\r\n
\r\n \r\n
\r\n );\r\n }\r\n const process: string | null = localStorage.getItem(\"status\");\r\n\r\n let processData: PaymentFile[] = [];\r\n\r\n if (process) {\r\n processData = JSON.parse(process);\r\n }\r\n\r\n if (!loading && isEmpty(transactions)) {\r\n render = ;\r\n }\r\n\r\n if (!loading && !isEmpty(transactions)) {\r\n render = ;\r\n }\r\n\r\n let data: BulkPaymentFile[] = [];\r\n for (let page of transactions) {\r\n data.push({\r\n id: page ? page.id : 0,\r\n fileId: page ? page.fileId : 0,\r\n amount: page ? page.amount : 0,\r\n msisdn: page ? page.msisdn : \"\",\r\n currency: page ? page.currency : \"\",\r\n transactionReference: \"\",\r\n provider: \"MPESA\",\r\n statusId: page ? page.statusId : 0,\r\n });\r\n }\r\n\r\n const approvePayments = () => {\r\n const payload: BulkPayload = {\r\n approvalStatus: 1,\r\n fileId: fileId,\r\n };\r\n dispatch(bulkPaymentRequest(payload));\r\n };\r\n\r\n return (\r\n \r\n \r\n {render}\r\n \r\n\r\n {processData.find((f) => f.fileId === fileId)?.statusId === 2 && (\r\n {t(\"general.approve\")}} key=\"2\">\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { withRouter, useParams } from \"react-router-dom\";\r\nimport { Layout, Row, Col, Card, Button } from \"antd\";\r\n// import { PageDetails } from \"../components/[pageId]/PageDetails\";\r\n// import { PageTransactions } from \"../components/[pageId]/PageTransactions\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { AppDispatch } from \"../helpers/appDispatch\";\r\nimport { appSelector } from \"../helpers/appSelector\";\r\n\r\nimport { TransactionHistory } from \"../interfaces\";\r\nimport {\r\n clearStates,\r\n getFilesRequest,\r\n uploadedFilePreview,\r\n} from \"../store/bulk-payment\";\r\n\r\nimport { PageTransactions } from \"../components/[fileId]/PageTransactions\";\r\nimport { FilePreview } from \"../interfaces/BulkPayment\";\r\n\r\ninterface PageProps {}\r\n\r\ninterface ParamProps {\r\n fileId: string;\r\n}\r\n\r\nconst PaymentFile: React.FC = () => {\r\n const { Content } = Layout;\r\n const dispatch: AppDispatch = useDispatch();\r\n const { fileId } = useParams();\r\n // const page = appSelector((state) => state.page);\r\n const bulkPay = appSelector((state) => state.bulkPayment);\r\n const { isSubmitting, success, error } = appSelector(\r\n (state) => state.bulkPayment\r\n );\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [payments, setPayments] = useState([]);\r\n\r\n useEffect(() => {\r\n // dispatch(clearStates());\r\n dispatch(uploadedFilePreview(parseInt(fileId)));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n const { pages, uploadingFile } = bulkPay;\r\n setLoading(uploadingFile);\r\n setPayments(pages);\r\n }, [bulkPay]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n {/* \r\n \r\n */}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withRouter(PaymentFile);\r\n","import { Transaction, Currency, DataStream } from \"../../interfaces\";\r\n\r\nexport enum TransactionTypes {\r\n GET_TRANSACTIONS_REQUEST = \"@@socodeetransactions/GET_TRANSACTIONS_REQUEST\",\r\n GET_TRANSACTIONS_SUCCESS = \"@@socodeetransactions/GET_TRANSACTIONS_SUCCESS\",\r\n GET_TRANSACTIONS_FAILURE = \"@@socodeetransactions/GET_TRANSACTIONS_FAILURE\",\r\n GET_CURRENCIES = \"@@transaction/GET_CURRENCIES\",\r\n GET_CURRENCIES_SUCCESS = \"@@transaction/GET_CURRENCIES_SUCCESS\",\r\n GET_CURRENCIES_FAILURE = \"@@transaction/GET_CURRENCIES_FAILURE\",\r\n EXPORT_TRANSACTIONS_REQUEST = \"@@socodeetransactions/EXPORT_TRANSACTIONS_REQUEST\",\r\n EXPORT_TRANSACTIONS_SUCCESS = \"@@socodeetransactions/EXPORT_TRANSACTIONS_SUCCESS\",\r\n EXPORT_TRANSACTIONS_FAILURE = \"@@socodeetransactions/EXPORT_TRANSACTIONS_FAILURE\",\r\n DOWNLOAD_RECEIPT_REQUEST = \"@@transaction/DOWNLOAD_RECEIPT_REQUEST\",\r\n DOWNLOAD_RECEIPT_SUCCESS = \"@@transaction/DOWNLOAD_RECEIPT_SUCCESS\",\r\n DOWNLOAD_RECEIPT_FAILURE = \"@@transaction/DOWNLOAD_RECEIPT_FAILURE\",\r\n CLEAR_VAS = \"@@vas/CLEAR_VAS\",\r\n}\r\n\r\nexport type SocodeeTransactionState = {\r\n readonly transactions: Transaction | null;\r\n readonly loading: boolean;\r\n readonly error: any;\r\n readonly currencies: Currency[];\r\n readonly currenciesLoading: boolean;\r\n readonly currencyError: any;\r\n readonly isExporting: boolean;\r\n readonly isExportSuccess: boolean;\r\n readonly isExportError: boolean;\r\n readonly exportStream: DataStream | undefined;\r\n readonly exportError: any;\r\n readonly isRequestingDownload: boolean;\r\n readonly downloadRecieptSuccess: boolean;\r\n readonly downloadRecieptError: boolean;\r\n readonly downloadReceiptStream: DataStream | undefined;\r\n readonly downloadError: any;\r\n};\r\n","import { Reducer } from \"redux\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport { AuthActionTypes } from \"../auth\";\r\nimport { SocodeeTransactionState } from \"../socodee\";\r\n\r\nexport const initialState: SocodeeTransactionState = {\r\n currencies: [],\r\n currenciesLoading: false,\r\n currencyError: undefined,\r\n error: undefined,\r\n loading: false,\r\n transactions: null,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportSuccess: false,\r\n isExportError: false,\r\n exportError: undefined,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: false,\r\n isRequestingDownload: false,\r\n downloadError: undefined,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = initialState,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case TransactionTypes.GET_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n transactions: action.payload,\r\n loading: false,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n case TransactionTypes.GET_CURRENCIES:\r\n return {\r\n ...state,\r\n currenciesLoading: true,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_SUCCESS:\r\n return {\r\n ...state,\r\n currencies: action.payload,\r\n currenciesLoading: false,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_FAILURE:\r\n return {\r\n ...state,\r\n currenciesLoading: false,\r\n currencyError: action.payload,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload,\r\n };\r\n case TransactionTypes.DOWNLOAD_RECEIPT_REQUEST:\r\n return {\r\n ...state,\r\n isRequestingDownload: true,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: action.payload,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: true,\r\n downloadError: undefined,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_FAILURE:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: true,\r\n downloadRecieptSuccess: false,\r\n downloadError: action.payload,\r\n };\r\n case TransactionTypes.CLEAR_VAS:\r\n return {\r\n ...state,\r\n transactions: null,\r\n };\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as socodeeTransactionTableReducer };\r\n","import { action } from \"typesafe-actions\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport { Currency, DataStream, TransactionHistory } from \"../../interfaces\";\r\n\r\nexport const getTransactionsRequest = (payload: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const getTransactionsSuccess = (data: TransactionHistory) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const getTransactionsFailure = (error: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const getCurrencies = () => action(TransactionTypes.GET_CURRENCIES);\r\n\r\nexport const getCurrenciesSuccess = (data: Currency[]) =>\r\n action(TransactionTypes.GET_CURRENCIES_SUCCESS, data);\r\n\r\nexport const getCurrenciesFailure = (error: any) =>\r\n action(TransactionTypes.GET_CURRENCIES_FAILURE, error);\r\n\r\nexport const exportTranxRequest = (payload: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const exportTranxSuccess = (data: DataStream) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const exportTranxFailure = (error: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const downloadReceiptRequest = (transactionId: number) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_REQUEST, transactionId);\r\n\r\nexport const downloadReceiptSuccess = (data: DataStream) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS, data);\r\n\r\nexport const downloadReceiptFailure = (error: any) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_FAILURE, error);\r\n\r\nexport const clearVAS = () => action(TransactionTypes.CLEAR_VAS);\r\n","import React, { lazy, Suspense, useState, useEffect, Fragment } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Layout, Spin, Row, Button } from \"antd\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { appSelector } from \"../helpers/appSelector\";\r\nimport { AppDispatch } from \"../helpers/appDispatch\";\r\nimport {\r\n getTransactionsRequest,\r\n exportTranxRequest,\r\n downloadReceiptRequest,\r\n} from \"../store/socodee\";\r\nimport { getMerchantsRequest } from \"../store/reports\";\r\nimport { isEmpty } from \"../helpers/isEmpty\";\r\nimport {\r\n TransactionHistory,\r\n MerchantData,\r\n Transaction,\r\n} from \"../interfaces\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport moment from \"moment\";\r\n\r\nconst { Content } = Layout;\r\n\r\nconst TransactionFilters = lazy(\r\n () => import(\"../components/socodee/TransactionFilters\")\r\n);\r\nconst TransactionTable = lazy(\r\n () => import(\"../components/socodee/TransactionTable\")\r\n);\r\nconst TransactionDetail = lazy(\r\n () => import(\"../components/socodee/TransactionDetail\")\r\n);\r\nconst CurrencyFilter = lazy(\r\n () => import(\"../components/socodee/CurrencyFilter\")\r\n);\r\nconst EmptyBox = lazy(() => import(\"../components/socodee/EmptyBox\"));\r\n\r\nconst SocodeeTransactions = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n\r\n const transaction = appSelector((state) => state.socodee);\r\n const reports = appSelector((state) => state.reports);\r\n const [trans, setTrans] = useState([]);\r\n const [trxReport, setTrxReport] = useState(null);\r\n const { t } = useTranslation();\r\n const [channelSearch, setChannelSearch] = useState(\"\");\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n const [statusSearch, setStatusSearch] = useState(\"\");\r\n const [fromDate, setFromDate] = useState(\"\");\r\n const [toDate, setToDate] = useState(\"\");\r\n const [exportType, setExportType] = useState(\"\");\r\n const [trx, setTrx] = useState(null);\r\n const [switchView, setSwitchView] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [currency, setCurrency] = useState(\"USD\");\r\n const [merchants, setMerchants] = useState(reports.merchants);\r\n const [merchant, setMerchant] = useState(null);\r\n const [isExporting, setIsExporting] = useState(false);\r\n const [isDownlaoding, setIsDownloading] = useState(false);\r\n const [pageSize, setPageSize] = useState(10);\r\n const [skip, setSkip] = useState(0);\r\n const [isSearching, setIsSearching] = useState(false);\r\n const [processType, setProcessType] = useState(\"4\");\r\n\r\n const params = {\r\n currency: currency,\r\n pageSize: pageSize,\r\n skip: skip,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant ? merchant.name : \"\",\r\n status: statusSearch,\r\n channel: channelSearch,\r\n searchValue: searchValue,\r\n exportType: exportType,\r\n fixedPeriod: \"overall\",\r\n processTypeId: processType,\r\n export: exportType,\r\n };\r\n\r\n useEffect(() => {\r\n const { merchants } = reports;\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n const { loading, transactions, isExporting, isRequestingDownload } =\r\n transaction;\r\n const { merchants } = reports;\r\n setLoading(loading);\r\n setMerchants(merchants);\r\n setTrans(\r\n transactions && !isEmpty(transactions.data) ? transactions.data : []\r\n );\r\n\r\n setTrxReport(transactions);\r\n setIsExporting(isExporting);\r\n setIsDownloading(isRequestingDownload);\r\n }, [transaction, reports]);\r\n\r\n const onClickRow = (transactionID: number) => {\r\n setSwitchView(!switchView);\r\n if (transaction.transactions && !isEmpty(transaction.transactions.data)) {\r\n const trx = transaction.transactions.data.find(\r\n (t) => t.transactionId === transactionID\r\n );\r\n if (trx !== undefined) {\r\n setTrx(trx);\r\n }\r\n }\r\n };\r\n\r\n const onCloseScreen = () => {\r\n setSwitchView(!switchView);\r\n };\r\n\r\n const reloadTransaction = () => {\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onDownloadReceiptClick = (transactionId: number): void => {\r\n dispatch(downloadReceiptRequest(transactionId));\r\n };\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value);\r\n params.skip = 0;\r\n params.currency = value;\r\n params.pageSize = pageSize;\r\n params.periodFrom = fromDate;\r\n params.periodTo = toDate;\r\n params.status = \"\";\r\n params.channel = \"\";\r\n params.searchValue = \"\";\r\n params.fixedPeriod = \"overall\";\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onLoadMore = (page: any, size: any) => {\r\n setSkip(0);\r\n setPageSize(size);\r\n params.skip = page - 1;\r\n setSkip(params.skip);\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type);\r\n params.exportType = type;\r\n params.export = type;\r\n dispatch(exportTranxRequest(params));\r\n };\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true);\r\n const {\r\n status,\r\n channel,\r\n periodFrom,\r\n periodTo,\r\n query,\r\n merchant\r\n } = values;\r\n let m: MerchantData | undefined = undefined;\r\n let pFrom: string = \"\",\r\n pTo: string = \"\";\r\n\r\n setChannelSearch(channel !== undefined ? channel : \"\");\r\n setStatusSearch(status !== undefined ? status : \"\");\r\n setSearchValue(query !== undefined ? query : \"\");\r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format(\"MM/DD/YYYY\");\r\n pTo = moment(periodTo).format(\"MM/DD/YYYY\");\r\n setFromDate(pFrom);\r\n setToDate(pTo);\r\n }\r\n if (merchant !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchant);\r\n setMerchant(m !== undefined ? m : null);\r\n }\r\n setProcessType(\"4\");\r\n params.periodFrom = pFrom;\r\n params.periodTo = pTo;\r\n params.merchant = m !== undefined ? m.name : \"\";\r\n params.status = status;\r\n params.channel = channel;\r\n params.searchValue = query;\r\n params.processTypeId = processType;\r\n\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields();\r\n params.skip = 0;\r\n params.periodFrom = \"\";\r\n params.periodTo = \"\";\r\n params.merchant = \"\";\r\n params.status = \"\";\r\n params.channel = \"\";\r\n params.searchValue = \"\";\r\n params.pageSize = 10;\r\n\r\n setIsSearching(false);\r\n\r\n // dispatch(getTransactionsRequest(params))\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n {!switchView ? (\r\n \r\n \r\n
\r\n \r\n

\r\n {t(\"general.transactionsChart\")}\r\n

\r\n
\r\n {!isEmpty(trans) ? (\r\n <>\r\n onExportClick(\"EXCEL\")}\r\n loading={isExporting && exportType === \"EXCEL\"}\r\n >\r\n {t(\"general.export-excel\")}\r\n \r\n \r\n ) : null}\r\n reloadTransaction()}\r\n >\r\n {t(\"general.refresh\")}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n ) : (\r\n \r\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 withRouter(SocodeeTransactions);\r\n","import { Transaction, Currency, DataStream } from \"../../interfaces\";\r\n\r\nexport enum TransactionTypes {\r\n GET_TRANSACTIONS_REQUEST = \"@@sneltransactions/GET_TRANSACTIONS_REQUEST\",\r\n GET_TRANSACTIONS_SUCCESS = \"@@sneltransactions/GET_TRANSACTIONS_SUCCESS\",\r\n GET_TRANSACTIONS_FAILURE = \"@@sneltransactions/GET_TRANSACTIONS_FAILURE\",\r\n GET_CURRENCIES = \"@@transaction/GET_CURRENCIES\",\r\n GET_CURRENCIES_SUCCESS = \"@@transaction/GET_CURRENCIES_SUCCESS\",\r\n GET_CURRENCIES_FAILURE = \"@@transaction/GET_CURRENCIES_FAILURE\",\r\n EXPORT_TRANSACTIONS_REQUEST = \"@@sneltransactions/EXPORT_TRANSACTIONS_REQUEST\",\r\n EXPORT_TRANSACTIONS_SUCCESS = \"@@sneltransactions/EXPORT_TRANSACTIONS_SUCCESS\",\r\n EXPORT_TRANSACTIONS_FAILURE = \"@@sneltransactions/EXPORT_TRANSACTIONS_FAILURE\",\r\n DOWNLOAD_RECEIPT_REQUEST = \"@@transaction/DOWNLOAD_RECEIPT_REQUEST\",\r\n DOWNLOAD_RECEIPT_SUCCESS = \"@@transaction/DOWNLOAD_RECEIPT_SUCCESS\",\r\n DOWNLOAD_RECEIPT_FAILURE = \"@@transaction/DOWNLOAD_RECEIPT_FAILURE\",\r\n CLEAR_VAS = \"@@vas/CLEAR_VAS\",\r\n}\r\n\r\nexport type SnelTransactionState = {\r\n readonly transactions: Transaction | null;\r\n readonly loading: boolean;\r\n readonly error: any;\r\n readonly currencies: Currency[];\r\n readonly currenciesLoading: boolean;\r\n readonly currencyError: any;\r\n readonly isExporting: boolean;\r\n readonly isExportSuccess: boolean;\r\n readonly isExportError: boolean;\r\n readonly exportStream: DataStream | undefined;\r\n readonly exportError: any;\r\n readonly isRequestingDownload: boolean;\r\n readonly downloadRecieptSuccess: boolean;\r\n readonly downloadRecieptError: boolean;\r\n readonly downloadReceiptStream: DataStream | undefined;\r\n readonly downloadError: any;\r\n};\r\n","import { Reducer } from \"redux\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport { AuthActionTypes } from \"../auth\";\r\nimport { SnelTransactionState } from \"../snel\";\r\n\r\nexport const initialState: SnelTransactionState = {\r\n currencies: [],\r\n currenciesLoading: false,\r\n currencyError: undefined,\r\n error: undefined,\r\n loading: false,\r\n transactions: null,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportSuccess: false,\r\n isExportError: false,\r\n exportError: undefined,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: false,\r\n isRequestingDownload: false,\r\n downloadError: undefined,\r\n};\r\n\r\nconst reducer: Reducer = (\r\n state = initialState,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case TransactionTypes.GET_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: undefined,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n transactions: action.payload,\r\n loading: false,\r\n };\r\n case TransactionTypes.GET_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n case TransactionTypes.GET_CURRENCIES:\r\n return {\r\n ...state,\r\n currenciesLoading: true,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_SUCCESS:\r\n return {\r\n ...state,\r\n currencies: action.payload,\r\n currenciesLoading: false,\r\n };\r\n case TransactionTypes.GET_CURRENCIES_FAILURE:\r\n return {\r\n ...state,\r\n currenciesLoading: false,\r\n currencyError: action.payload,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_REQUEST:\r\n return {\r\n ...state,\r\n isExporting: true,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: action.payload,\r\n isExportError: false,\r\n isExportSuccess: true,\r\n exportError: undefined,\r\n };\r\n case TransactionTypes.EXPORT_TRANSACTIONS_FAILURE:\r\n return {\r\n ...state,\r\n isExporting: false,\r\n exportStream: undefined,\r\n isExportError: true,\r\n isExportSuccess: false,\r\n exportError: action.payload,\r\n };\r\n case TransactionTypes.DOWNLOAD_RECEIPT_REQUEST:\r\n return {\r\n ...state,\r\n isRequestingDownload: true,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: action.payload,\r\n downloadRecieptError: false,\r\n downloadRecieptSuccess: true,\r\n downloadError: undefined,\r\n };\r\n\r\n case TransactionTypes.DOWNLOAD_RECEIPT_FAILURE:\r\n return {\r\n ...state,\r\n isRequestingDownload: false,\r\n downloadReceiptStream: undefined,\r\n downloadRecieptError: true,\r\n downloadRecieptSuccess: false,\r\n downloadError: action.payload,\r\n };\r\n case TransactionTypes.CLEAR_VAS:\r\n return {\r\n ...state,\r\n transactions: null,\r\n };\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as snelTransactionTableReducer };\r\n","import { action } from \"typesafe-actions\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport { Currency, DataStream, TransactionHistory } from \"../../interfaces\";\r\n\r\nexport const getTransactionsRequest = (payload: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const getTransactionsSuccess = (data: TransactionHistory) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const getTransactionsFailure = (error: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const getCurrencies = () => action(TransactionTypes.GET_CURRENCIES);\r\n\r\nexport const getCurrenciesSuccess = (data: Currency[]) =>\r\n action(TransactionTypes.GET_CURRENCIES_SUCCESS, data);\r\n\r\nexport const getCurrenciesFailure = (error: any) =>\r\n action(TransactionTypes.GET_CURRENCIES_FAILURE, error);\r\n\r\nexport const exportTranxRequest = (payload: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const exportTranxSuccess = (data: DataStream) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const exportTranxFailure = (error: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const downloadReceiptRequest = (transactionId: number) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_REQUEST, transactionId);\r\n\r\nexport const downloadReceiptSuccess = (data: DataStream) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS, data);\r\n\r\nexport const downloadReceiptFailure = (error: any) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_FAILURE, error);\r\n\r\nexport const clearVAS = () => action(TransactionTypes.CLEAR_VAS);\r\n","import React, { lazy, Suspense, useState, useEffect, Fragment } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Layout, Spin, Row, Button } from \"antd\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { appSelector } from \"../helpers/appSelector\";\r\nimport { AppDispatch } from \"../helpers/appDispatch\";\r\n\r\nimport {\r\n getTransactionsRequest,\r\n exportTranxRequest,\r\n downloadReceiptRequest,\r\n} from \"../store/snel\";\r\nimport { getMerchantsRequest } from \"../store/reports\";\r\nimport { isEmpty } from \"../helpers/isEmpty\";\r\nimport {\r\n TransactionHistory,\r\n MerchantData,\r\n Transaction\r\n} from \"../interfaces\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport moment from \"moment\";\r\n\r\nconst { Content } = Layout;\r\n\r\nconst TransactionFilters = lazy(\r\n () => import(\"../components/snel/TransactionFilters\")\r\n);\r\nconst TransactionTable = lazy(\r\n () => import(\"../components/snel/TransactionTable\")\r\n);\r\nconst TransactionDetail = lazy(\r\n () => import(\"../components/snel/TransactionDetail\")\r\n);\r\nconst CurrencyFilter = lazy(() => import(\"../components/snel/CurrencyFilter\"));\r\nconst EmptyBox = lazy(() => import(\"../components/snel/EmptyBox\"));\r\n\r\nconst SnelTransactions = () => {\r\n const dispatch: AppDispatch = useDispatch();\r\n\r\n const transaction = appSelector((state) => state.snel);\r\n const reports = appSelector((state) => state.reports);\r\n const [trans, setTrans] = useState([]);\r\n const [trxReport, setTrxReport] = useState(null);\r\n const { t } = useTranslation();\r\n const [channelSearch, setChannelSearch] = useState(\"\");\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n const [statusSearch, setStatusSearch] = useState(\"\");\r\n const [fromDate, setFromDate] = useState(\"\");\r\n const [toDate, setToDate] = useState(\"\");\r\n const [exportType, setExportType] = useState(\"\");\r\n const [trx, setTrx] = useState(null);\r\n const [switchView, setSwitchView] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [currency, setCurrency] = useState(\"USD\");\r\n const [merchants, setMerchants] = useState(reports.merchants);\r\n const [merchant, setMerchant] = useState(null);\r\n const [isExporting, setIsExporting] = useState(false);\r\n const [isDownlaoding, setIsDownloading] = useState(false);\r\n const [pageSize, setPageSize] = useState(10);\r\n const [skip, setSkip] = useState(0);\r\n const [isSearching, setIsSearching] = useState(false);\r\n const [processType, setProcessType] = useState(\"5\");\r\n\r\n const params = {\r\n currency: currency,\r\n pageSize: pageSize,\r\n skip: skip,\r\n periodFrom: fromDate,\r\n periodTo: toDate,\r\n merchant: merchant ? merchant.name : \"\",\r\n status: statusSearch,\r\n channel: channelSearch,\r\n searchValue: searchValue,\r\n exportType: exportType,\r\n fixedPeriod: \"overall\",\r\n processTypeId: processType,\r\n export: exportType,\r\n };\r\n\r\n useEffect(() => {\r\n const { merchants } = reports;\r\n if (isEmpty(merchants)) {\r\n dispatch(getMerchantsRequest());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n const { loading, transactions, isExporting, isRequestingDownload } =\r\n transaction;\r\n const { merchants } = reports;\r\n setLoading(loading);\r\n setMerchants(merchants);\r\n setTrans(\r\n transactions && !isEmpty(transactions.data) ? transactions.data : []\r\n );\r\n setTrxReport(transactions);\r\n setIsExporting(isExporting);\r\n setIsDownloading(isRequestingDownload);\r\n }, [transaction, reports]);\r\n\r\n const onClickRow = (transactionID: number) => {\r\n setSwitchView(!switchView);\r\n if (transaction.transactions && !isEmpty(transaction.transactions.data)) {\r\n const trx = transaction.transactions.data.find(\r\n (t) => t.transactionId === transactionID\r\n );\r\n if (trx !== undefined) {\r\n setTrx(trx);\r\n }\r\n }\r\n };\r\n\r\n const onCloseScreen = () => {\r\n setSwitchView(!switchView);\r\n };\r\n\r\n const reloadTransaction = () => {\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onDownloadReceiptClick = (transactionId: number): void => {\r\n dispatch(downloadReceiptRequest(transactionId));\r\n };\r\n\r\n const onSelectCurrency = (value: string) => {\r\n setCurrency(value);\r\n params.skip = 0;\r\n params.currency = value;\r\n params.pageSize = pageSize;\r\n params.periodFrom = fromDate;\r\n params.periodTo = toDate;\r\n params.status = \"\";\r\n params.channel = \"\";\r\n params.searchValue = \"\";\r\n params.fixedPeriod = \"overall\";\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onLoadMore = (page: any, size: any) => {\r\n setSkip(0);\r\n setPageSize(size);\r\n params.skip = page - 1;\r\n setSkip(params.skip);\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onExportClick = (type: string) => {\r\n setExportType(type);\r\n params.exportType = type;\r\n dispatch(exportTranxRequest(params));\r\n };\r\n\r\n const onSearch = (values: any) => {\r\n setIsSearching(true);\r\n const {\r\n status,\r\n channel,\r\n periodFrom,\r\n periodTo,\r\n query,\r\n merchant\r\n } = values;\r\n let m: MerchantData | undefined = undefined;\r\n let pFrom: string = \"\",\r\n pTo: string = \"\";\r\n\r\n setChannelSearch(channel !== undefined ? channel : \"\");\r\n setStatusSearch(status !== undefined ? status : \"\");\r\n setSearchValue(query !== undefined ? query : \"\");\r\n if (periodFrom !== undefined && periodTo !== undefined) {\r\n pFrom = moment(periodFrom).format(\"MM/DD/YYYY\");\r\n pTo = moment(periodTo).format(\"MM/DD/YYYY\");\r\n setFromDate(pFrom);\r\n setToDate(pTo);\r\n }\r\n if (merchant !== undefined) {\r\n m = merchants.find((m) => m.merchantId === merchant);\r\n setMerchant(m !== undefined ? m : null);\r\n }\r\n setProcessType(\"5\");\r\n params.periodFrom = pFrom;\r\n params.periodTo = pTo;\r\n params.merchant = m !== undefined ? m.name : \"\";\r\n params.status = status;\r\n params.channel = channel;\r\n params.searchValue = query;\r\n params.processTypeId = processType;\r\n\r\n dispatch(getTransactionsRequest(params));\r\n };\r\n\r\n const onReset = (form: any) => {\r\n form.resetFields();\r\n params.skip = 0;\r\n params.periodFrom = \"\";\r\n params.periodTo = \"\";\r\n params.merchant = \"\";\r\n params.status = \"\";\r\n params.channel = \"\";\r\n params.searchValue = \"\";\r\n params.pageSize = 10;\r\n\r\n setIsSearching(false);\r\n\r\n // dispatch(getTransactionsRequest(params))\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n }\r\n >\r\n \r\n \r\n {isSearching ? (\r\n \r\n {!switchView ? (\r\n \r\n \r\n
\r\n \r\n

\r\n {t(\"general.transactionsChart\")}\r\n

\r\n
\r\n {!isEmpty(trans) ? (\r\n <>\r\n onExportClick(\"EXCEL\")}\r\n loading={isExporting && exportType === \"EXCEL\"}\r\n >\r\n {t(\"general.export-excel\")}\r\n \r\n \r\n ) : null}\r\n reloadTransaction()}\r\n >\r\n {t(\"general.refresh\")}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n ) : (\r\n \r\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 withRouter(SnelTransactions);\r\n","import React from \"react\";\r\nimport { Route, Switch } from \"react-router-dom\";\r\nimport { PrivateRoute } from \"./PrivateRoute\";\r\nimport { path } from \"../helpers/path\";\r\nimport { roles } from \"../helpers/constants\";\r\nimport { appSelector } from \"../helpers/appSelector\";\r\n\r\nimport Dashboard from \"../pages/_dashboard\";\r\nimport Transactions from \"../pages/_trans\";\r\nimport BulkPayment from \"../pages/_bulkPayment\";\r\nimport bulkPaymentPage from \"../pages/_bulkPaymentPage\";\r\nimport PaymentPages from \"../pages/_paymentPages\";\r\nimport Page from \"../pages/_[pageId]\";\r\nimport Login from \"../pages/_login\";\r\nimport Pay from \"../pages/_[pay]\";\r\nimport GenericPay from \"../pages/_[genericPay]\";\r\nimport ExamplePay from \"../pages/_examplePay\";\r\nimport MerchantsOverview from \"../pages/_merchantsOverview\";\r\nimport MerchantsChannels from \"../pages/_merchantsChannels\";\r\nimport VASProcessed from \"../pages/_vasProcessed\";\r\nimport Settings from \"../pages/_settings\";\r\nimport FeeReports from \"../pages/_feeReports\";\r\nimport B2CTransactions from \"../pages/_b2ctransactions\";\r\nimport PendingTransactionsView from \"../pages/_pendingTransactions\";\r\nimport NotFound from \"../pages/_404\";\r\nimport ForgottenPassword from \"../pages/_forgottenPassword\";\r\nimport ResetPassword from \"../pages/_reset-password\";\r\nimport VasTransactions from \"../pages/_vasTransactions\";\r\nimport AllocateFunds from \"../pages/_allocateFunds\";\r\nimport PaymentFile from \"../pages/_[fileId]\";\r\nimport SocodeeTransactions from \"../pages/_socodee\";\r\nimport SnelTransactions from \"../pages/_snel\";\r\n\r\nconst Routes: React.FC = () => {\r\n const { user } = appSelector((state) => state.auth);\r\n\r\n const isSuperMerchant = user?.roles?.includes(roles.SuperMerchant) || false;\r\n\r\n return (\r\n \r\n \r\n {/* Public routes */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Private routes for all authenticated users */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* SuperMerchant only routes */}\r\n {isSuperMerchant ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {/* Catch-all route - */}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Routes;\r\n","import React, { useState, useEffect } from 'react'\r\nimport { Provider } from 'react-redux'\r\nimport { PersistGate } from 'redux-persist/integration/react'\r\nimport { ConnectedRouter } from 'connected-react-router'\r\nimport { Store } from 'redux'\r\nimport { History } from 'history'\r\nimport Routes from './routes/Routes'\r\nimport { ApplicationState } from './store'\r\n// import { message } from 'antd';\r\nimport { logout } from './store/auth'\r\n\r\ninterface AppProps {\r\n store: Store\r\n history: History\r\n persistor: any\r\n}\r\n\r\nconst App: React.FC = ({ store, history, persistor }) => {\r\n const [signOutTime] = useState(60 * 10 * 1000) // 10 minutes\r\n const [warningTime] = useState(54 * 10 * 1000) // 9 minutes\r\n let warnTimeOut: any\r\n let logoutTimeOut: any\r\n const { isAuthenticated } = store.getState().auth\r\n\r\n const warn = () => {\r\n // message.info(\r\n // 'You will be logged out of this session in a 1 minute time',\r\n // 5\r\n // );\r\n }\r\n\r\n const logoutSession = () => {\r\n store.dispatch(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n // message.info(\r\n // 'You have been logged out for your own safety. You can login once again to continue'\r\n // );\r\n }\r\n\r\n const setTimeOuts = () => {\r\n warnTimeOut = setTimeout(warn, warningTime)\r\n logoutTimeOut = setTimeout(logoutSession, signOutTime)\r\n }\r\n\r\n const clearTimeOuts = () => {\r\n if (warnTimeOut) clearTimeout(warnTimeOut)\r\n if (logoutTimeOut) clearTimeout(logoutTimeOut)\r\n }\r\n\r\n useEffect(() => {\r\n const events = [\r\n 'load',\r\n 'mousemove',\r\n 'mousedown',\r\n 'click',\r\n 'scroll',\r\n 'keypress'\r\n ]\r\n\r\n if (isAuthenticated) {\r\n const resetTimeOut = () => {\r\n clearTimeOuts()\r\n setTimeOuts()\r\n }\r\n\r\n for (let i in events) {\r\n window.addEventListener(events[i], resetTimeOut)\r\n }\r\n\r\n setTimeOuts()\r\n return () => {\r\n for (let i in events) {\r\n window.removeEventListener(events[i], resetTimeOut)\r\n clearTimeOuts()\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default App\r\n","import i18n from 'i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport XHR from 'i18next-xhr-backend';\r\nimport en from './locale/en/en.json';\r\nimport fr from './locale/fr/fr.json';\r\n\r\nconst locale = localStorage.getItem('i18nextLng');\r\n\r\ni18n\r\n .use(XHR)\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n resources: {\r\n en: en,\r\n fr: fr,\r\n },\r\n lng: locale !== null ? locale : 'fr',\r\n debug: false,\r\n ns: ['translations'],\r\n defaultNS: 'translations',\r\n keySeparator: '.',\r\n interpolation: {\r\n escapeValue: false,\r\n formatSeparator: ',',\r\n },\r\n react: {\r\n wait: true,\r\n bindI18n: 'languageChanged loaded',\r\n bindI18nStore: 'added removed',\r\n nsMode: 'default',\r\n },\r\n });\r\n\r\nexport { i18n };\r\n","import axios, { AxiosResponse } from 'axios'\r\n\r\nconst API_ENDPOINT = process.env.REACT_APP_API_ENDPOINT\r\n\r\nexport async function callApiGet(path: string): Promise {\r\n return await axios.get(`${API_ENDPOINT}/api/${path}`)\r\n}\r\n\r\nexport async function callApiPost(\r\n path: string,\r\n payload: any\r\n): Promise {\r\n return await axios.post(`${API_ENDPOINT}/api/${path}`, payload)\r\n}\r\n\r\n\r\nexport async function callApiPostQueryParams(\r\n path: string,\r\n payload: any\r\n): Promise {\r\n return await axios.post(`${API_ENDPOINT}/api/${path}`, null, {\r\n params: payload\r\n })\r\n}\r\n","import axios from 'axios';\r\n\r\nexport const authorization = (token: string): void => {\r\n if (token) {\r\n axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;\r\n } else {\r\n delete axios.defaults.headers.common['Authorization'];\r\n }\r\n};\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { AuthActionTypes } from './types'\r\nimport {\r\n loginError,\r\n loginSuccess,\r\n logError,\r\n forgottenPasswordSuccess,\r\n forgottenPasswordFailure,\r\n resetPasswordSuccess,\r\n resetPasswordFailure\r\n} from './actions'\r\nimport { callApiPost } from '../../utils/api'\r\nimport { Login, ForgottenPassword, ResetPassword } from '../../interfaces'\r\nimport { authorization } from '../../utils/authorization'\r\nimport { secure } from '../../utils/secure'\r\n\r\nfunction* login({ payload }: { type: string; payload: Login }): any {\r\n try {\r\n const res = yield call(callApiPost, 'login', payload)\r\n secure.set('user', res.data)\r\n yield authorization(res.data.token)\r\n yield put(loginSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.data.status) {\r\n yield put(loginError(err.response.data))\r\n } else {\r\n yield put(logError(err.response.data))\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* forgotten({\r\n payload\r\n}: {\r\n type: string\r\n payload: ForgottenPassword\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, 'login/requestpasswordreset', payload)\r\n if (res.status === 200) {\r\n yield put(forgottenPasswordSuccess(res.data))\r\n } else {\r\n yield put(forgottenPasswordFailure(res.data))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.data.status) {\r\n yield put(forgottenPasswordFailure(err.response.data))\r\n } else {\r\n yield put(forgottenPasswordFailure(err.response.data))\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction* reset({ payload }: { type: string; payload: ResetPassword }): any {\r\n try {\r\n const res = yield call(callApiPost, 'login/resetpassword', payload)\r\n if (res.status === 200) {\r\n yield put(resetPasswordSuccess(res.data))\r\n } else {\r\n yield put(resetPasswordFailure(res.data))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.data.status) {\r\n yield put(resetPasswordFailure(err.response.data))\r\n } else {\r\n yield put(resetPasswordFailure(err.response.data))\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction* watchLogin() {\r\n yield takeEvery(AuthActionTypes.REQUEST_LOGIN_SUBMIT, login)\r\n}\r\n\r\nfunction* watchForgottenPassword() {\r\n yield takeEvery(AuthActionTypes.FORGOTTEN_PASSWORD_REQUEST, forgotten)\r\n}\r\n\r\nfunction* watchResetPassword() {\r\n yield takeEvery(AuthActionTypes.RESET_PASSWORD_REQUEST, reset)\r\n}\r\n\r\nfunction* authSaga() {\r\n yield all([\r\n fork(watchLogin),\r\n fork(watchForgottenPassword),\r\n fork(watchResetPassword)\r\n ])\r\n}\r\n\r\nexport { authSaga }\r\n","import { all, call, fork, put, takeEvery } from \"redux-saga/effects\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport {\r\n getTransactionsSuccess,\r\n getTransactionsFailure,\r\n getCurrenciesSuccess,\r\n getCurrenciesFailure,\r\n exportTranxSuccess,\r\n exportTranxFailure,\r\n downloadReceiptSuccess,\r\n downloadReceiptFailure,\r\n getTransactionReasonsSuccess,\r\n getTransactionReasonsFailure,\r\n getTransactionLogsSuccess,\r\n getTransactionLogsFailure,\r\n} from \"./actions\";\r\nimport { callApiGet, callApiPost } from \"../../utils/api\";\r\nimport { DataStream } from \"../../interfaces\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { logout } from \"../auth\";\r\n\r\nfunction* getTransactions({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n \"reports/gettransactionsoverview\",\r\n payload\r\n );\r\n if (res.status === 200) {\r\n yield put(getTransactionsSuccess(res.data));\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getTransactionsFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getCurrencies(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/currencycodes\");\r\n if (res.status === 200) {\r\n yield put(getCurrenciesSuccess(res.data));\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getCurrenciesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportTransactions({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: any;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `reports/exportmerchanttransactions`,\r\n payload\r\n );\r\n if (res.status === 200) {\r\n yield put(exportTranxSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(exportTranxFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(exportTranxFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getDownloadReceiptStream({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: number;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/gettransactionreciept/${payload}`\r\n );\r\n if (res.status === 200) {\r\n yield put(downloadReceiptSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(downloadReceiptFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(downloadReceiptFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getTransactionReasons({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: number;\r\n}): any {\r\n try {\r\n const res = yield call(callApiGet, `reports/gettransactionreasons?transactionId=${payload}`);\r\n if (res.status === 200) {\r\n yield put(getTransactionReasonsSuccess(res.data));\r\n } else {\r\n yield put(getTransactionReasonsFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getCurrenciesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* handleGetTransactionLogs({ payload }: { type: string; payload: string }): any {\r\n try {\r\n const res = yield call(callApiPost, 'reports/logs', { transactionId: payload });\r\n if (res.status === 200) {\r\n yield put(getTransactionLogsSuccess(res.data));\r\n } else {\r\n yield put(getTransactionLogsFailure('An unknown error occurred'));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem('user');\r\n localStorage.removeItem('persist:root');\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getTransactionLogsFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getTransactionLogsFailure('An unknown error occurred'));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetTransactions() {\r\n yield takeEvery(TransactionTypes.GET_TRANSACTIONS_REQUEST, getTransactions);\r\n}\r\n\r\nfunction* watchGetCurrencies() {\r\n yield takeEvery(TransactionTypes.GET_CURRENCIES, getCurrencies);\r\n}\r\n\r\nfunction* watchExportTransactions() {\r\n yield takeEvery(\r\n TransactionTypes.EXPORT_TRANSACTIONS_REQUEST,\r\n getExportTransactions\r\n );\r\n}\r\n\r\nfunction* watchFetchGetDownloadReceiptStream() {\r\n yield takeEvery(\r\n TransactionTypes.DOWNLOAD_RECEIPT_REQUEST,\r\n getDownloadReceiptStream\r\n );\r\n}\r\n\r\nfunction* watchGetTransactionReason() {\r\n yield takeEvery(TransactionTypes.GET_TRANSACTION_REASONS, getTransactionReasons);\r\n}\r\n\r\nfunction* watchGetTransactionLogs() {\r\n yield takeEvery(TransactionTypes.GET_TRANSACTION_LOGS_REQUEST, handleGetTransactionLogs);\r\n}\r\n\r\nfunction* transactionSaga(): Generator {\r\n yield all([\r\n fork(watchGetTransactions),\r\n fork(watchGetCurrencies),\r\n fork(watchExportTransactions),\r\n fork(watchFetchGetDownloadReceiptStream),\r\n fork(watchGetTransactionReason),\r\n fork(watchGetTransactionLogs),\r\n ]);\r\n}\r\n\r\nexport { transactionSaga };\r\n","import { all, call, fork, put, takeEvery } from \"redux-saga/effects\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport {\r\n getTransactionsSuccess,\r\n getTransactionsFailure,\r\n getCurrenciesSuccess,\r\n getCurrenciesFailure,\r\n exportTranxSuccess,\r\n exportTranxFailure,\r\n downloadReceiptSuccess,\r\n downloadReceiptFailure,\r\n} from \"./actions\";\r\nimport { callApiGet, callApiPost } from \"../../utils/api\";\r\nimport { DataStream } from \"../../interfaces\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { logout } from \"../auth\";\r\n\r\nfunction* getTransactions({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, \"reports/getb2ctransactions\", payload);\r\n if (res.status === 200) {\r\n yield put(getTransactionsSuccess(res.data));\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getTransactionsFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getCurrencies(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/currencycodes\");\r\n if (res.status === 200) {\r\n yield put(getCurrenciesSuccess(res.data));\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getCurrenciesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportTransactions({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: any;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `reports/exportb2ctransactions`,\r\n payload\r\n );\r\n if (res.status === 200) {\r\n yield put(exportTranxSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(exportTranxFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(exportTranxFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getDownloadReceiptStream({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: number;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/gettransactionreciept/${payload}`\r\n );\r\n if (res.status === 200) {\r\n yield put(downloadReceiptSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(downloadReceiptFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(downloadReceiptFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetTransactions() {\r\n yield takeEvery(TransactionTypes.GET_TRANSACTIONS_REQUEST, getTransactions);\r\n}\r\n\r\nfunction* watchGetCurrencies() {\r\n yield takeEvery(TransactionTypes.GET_CURRENCIES, getCurrencies);\r\n}\r\n\r\nfunction* watchExportTransactions() {\r\n yield takeEvery(\r\n TransactionTypes.EXPORT_TRANSACTIONS_REQUEST,\r\n getExportTransactions\r\n );\r\n}\r\n\r\nfunction* watchFetchGetDownloadReceiptStream() {\r\n yield takeEvery(\r\n TransactionTypes.DOWNLOAD_RECEIPT_REQUEST,\r\n getDownloadReceiptStream\r\n );\r\n}\r\n\r\nfunction* b2ctransactionTableSaga(): Generator {\r\n yield all([\r\n fork(watchGetTransactions),\r\n fork(watchGetCurrencies),\r\n fork(watchExportTransactions),\r\n fork(watchFetchGetDownloadReceiptStream),\r\n ]);\r\n}\r\n\r\nexport { b2ctransactionTableSaga };\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { HomeTypes } from './types'\r\nimport { callApiPost, callApiGet } from '../../utils/api'\r\nimport { Merchant } from '../../interfaces'\r\nimport {\r\n paymentSuccess,\r\n paymentFailure,\r\n getOverviewFailure,\r\n getOverviewSuccess,\r\n paymentSuccessAlt,\r\n paymentFailureAlt,\r\n mobilePaymentSuccess,\r\n mobilePaymentFailure,\r\n checkMobileStatusSuccess,\r\n checkMobileStatusFailure,\r\n getAccountsBalanceSuccess,\r\n getAccountsBalanceFailure,\r\n getMerchantVASAccountBalanceSuccess\r\n} from './actions'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\n\r\nfunction* getOverview({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n 'reports/getperiodictotaltransactionoverview',\r\n payload\r\n )\r\n if (res.status === 200) {\r\n yield put(getOverviewSuccess(res.data))\r\n } else {\r\n yield put(getOverviewFailure('An unknwon error occurred'))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getOverviewFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getOverviewFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* processOrderRequest({\r\n payload\r\n}: {\r\n type: string\r\n payload: Merchant\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/getpaymentpage', payload)\r\n yield put(paymentSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(paymentFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(\r\n paymentFailure('An error occured when making request to server')\r\n )\r\n }\r\n }\r\n}\r\n\r\nfunction* processPayment({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/', payload)\r\n if (res.status === 200) {\r\n yield put(paymentSuccessAlt())\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(paymentFailureAlt(err.response.data))\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* mobilePayment({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/momopaymentpage', payload)\r\n yield put(mobilePaymentSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(mobilePaymentFailure('An error occured during payment.'))\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* mobileStatus({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/gettransactionstatus/${payload}`\r\n )\r\n yield put(checkMobileStatusSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(checkMobileStatusFailure('An error occured during payment.'))\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* getAccountsBalance({ payload }: { type: string; payload: string }): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/getaccountbalance/${payload}`\r\n )\r\n yield put(getAccountsBalanceSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getAccountsBalanceFailure('An error occured during payment.'))\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* getMerchantVASAccountBalance({ payload }: { type: string; payload: string }): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/getaccountbalance/${payload}`\r\n )\r\n yield put(getMerchantVASAccountBalanceSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getAccountsBalanceFailure('An error occured during payment.'))\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* watchProcessOrderRequest() {\r\n yield takeEvery(HomeTypes.REQUEST_PAYMENT, processOrderRequest)\r\n}\r\n\r\nfunction* watchGetOverviewRequest() {\r\n yield takeEvery(HomeTypes.GET_OVERVIEW_REQUEST, getOverview)\r\n}\r\n\r\nfunction* watchProcessPayment() {\r\n yield takeEvery(HomeTypes.PAYMENT_REQUEST, processPayment)\r\n}\r\n\r\nfunction* watchMobilePayment() {\r\n yield takeEvery(HomeTypes.MOBILE_PAYMENT_REQUEST, mobilePayment)\r\n}\r\n\r\nfunction* watchMobileStatus() {\r\n yield takeEvery(HomeTypes.MOBILE_STATUS_REQUEST, mobileStatus)\r\n}\r\n\r\nfunction* watchGetAccountsBalance() {\r\n yield takeEvery(HomeTypes.ACCOUNTS_BALANCE_REQUEST, getAccountsBalance)\r\n}\r\n\r\nfunction* watchGetMerchantVASAccountBalance() {\r\n yield takeEvery(HomeTypes.MERCHANT_VAS_ACCOUNTS_BALANCE_REQUEST, getMerchantVASAccountBalance)\r\n}\r\n\r\nfunction* homeSaga(): Generator {\r\n yield all([\r\n fork(watchProcessOrderRequest),\r\n fork(watchGetOverviewRequest),\r\n fork(watchProcessPayment),\r\n fork(watchMobilePayment),\r\n fork(watchMobileStatus),\r\n fork(watchGetAccountsBalance),\r\n fork(watchGetMerchantVASAccountBalance)\r\n ])\r\n}\r\n\r\nexport { homeSaga }\r\n","import { all, call, fork, put, takeEvery } from \"redux-saga/effects\";\r\nimport { PaymentPagesTypes } from \"./types\";\r\nimport { callApiPost, callApiGet } from \"../../utils/api\";\r\nimport { PaymentPage } from \"../../interfaces\";\r\nimport {\r\n addPaymentPageSuccess,\r\n addPaymentPageFailure,\r\n updatePaymentPageSuccess,\r\n updatePaymentPageFailure,\r\n deletePaymentPageSuccess,\r\n deletePaymentPageFailure,\r\n getPaymentPagesSuccess,\r\n getPaymentPagesFailure,\r\n paymentPageSuccess,\r\n paymentPageFailure,\r\n getPageTranxSuccess,\r\n getPageTranxFailure,\r\n postFeeSuccess,\r\n postFeeFailure,\r\n getProvidersSuccess,\r\n getProvidersFailure,\r\n} from \"./actions\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { logout } from \"../auth\";\r\n\r\nfunction* addPaymentPage({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: PaymentPage;\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, \"payments/addpaymentpage\", payload);\r\n\r\n yield put(addPaymentPageSuccess(res.data));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(addPaymentPageFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(\r\n addPaymentPageFailure(\"An error occured when making request to server\")\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction* updatePaymentPage({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: PaymentPage;\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, \"\", payload);\r\n yield put(updatePaymentPageSuccess(res.data));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(updatePaymentPageFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(\r\n updatePaymentPageFailure(\r\n \"An error occured when making request to server\"\r\n )\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction* deletePaymentPage({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: string;\r\n}): any {\r\n try {\r\n yield call(callApiPost, \"\", payload);\r\n yield put(deletePaymentPageSuccess(payload));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(deletePaymentPageFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(\r\n deletePaymentPageFailure(\r\n \"An error occured when making request to server\"\r\n )\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction* getPaymentPages(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/merchantpaymentpages\");\r\n if (res.status === 200) {\r\n yield put(getPaymentPagesSuccess(res.data));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getPaymentPagesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getPaymentPagesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* paymentPage({ payload }: { type: string; payload: string }): any {\r\n try {\r\n const res = yield call(callApiGet, `payments/getpaymentpage/${payload}`);\r\n if (res.status === 200) {\r\n yield put(paymentPageSuccess(res.data));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(paymentPageFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(paymentPageFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* pageTranx({ payload }: { type: string; payload: number }): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/getproducttransactions/${payload}`\r\n );\r\n if (res.status === 200) {\r\n yield put(getPageTranxSuccess(res.data));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getPageTranxFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getPageTranxFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* processFeeRequest({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, \"payments/getfees\", payload);\r\n if (res.status === 200) {\r\n yield put(postFeeSuccess(res.data));\r\n } else {\r\n yield put(postFeeFailure(res.data));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(\r\n postFeeFailure(\"An error occured when making request to server\")\r\n );\r\n }\r\n } else {\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\nfunction* getProviders(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/getmobilewalletproviders\");\r\n yield put(getProvidersSuccess(res.data));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getProvidersFailure(\"An error occured during payment.\"));\r\n }\r\n } else {\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\nfunction* watchAddPaymentPage() {\r\n yield takeEvery(PaymentPagesTypes.ADD_PAYMENT_PAGE_REQUEST, addPaymentPage);\r\n}\r\n\r\nfunction* watchUpdatePaymentPage() {\r\n yield takeEvery(\r\n PaymentPagesTypes.UPDATE_PAYMENT_PAGE_REQUEST,\r\n updatePaymentPage\r\n );\r\n}\r\n\r\nfunction* watchDeletePaymentPage() {\r\n yield takeEvery(\r\n PaymentPagesTypes.DELETE_PAYMENT_PAGE_REQUEST,\r\n deletePaymentPage\r\n );\r\n}\r\n\r\nfunction* watchGetPaymentPages() {\r\n yield takeEvery(PaymentPagesTypes.GET_PAYMENT_PAGES_REQUEST, getPaymentPages);\r\n}\r\n\r\nfunction* watchGetPaymentPage() {\r\n yield takeEvery(PaymentPagesTypes.PAYMENT_PAGE_REQUEST, paymentPage);\r\n}\r\n\r\nfunction* watchGetPageTranx() {\r\n yield takeEvery(PaymentPagesTypes.GET_PAGE_TRANX_REQUEST, pageTranx);\r\n}\r\n\r\nfunction* watchPostFeeRequest() {\r\n yield takeEvery(PaymentPagesTypes.REQUEST_FEE_REQUEST, processFeeRequest);\r\n}\r\n\r\nfunction* watchGetProviders() {\r\n yield takeEvery(PaymentPagesTypes.GET_PROVIDERS_REQUEST, getProviders);\r\n}\r\n\r\nfunction* paymentPagesSaga(): Generator {\r\n yield all([\r\n fork(watchAddPaymentPage),\r\n fork(watchUpdatePaymentPage),\r\n fork(watchDeletePaymentPage),\r\n fork(watchGetPaymentPages),\r\n fork(watchGetPaymentPage),\r\n fork(watchGetPageTranx),\r\n fork(watchPostFeeRequest),\r\n fork(watchGetProviders),\r\n ]);\r\n}\r\n\r\nexport { paymentPagesSaga };\r\n","import { all, call, fork, put, takeEvery } from \"redux-saga/effects\";\r\nimport { BulkPaymentTypes } from \"./types\";\r\nimport { callApiPost, callApiGet } from \"../../utils/api\";\r\nimport {\r\n bulkPaymentFailure,\r\n // bulkPaymentIncreaseStep,\r\n bulkPaymentSuccess,\r\n fileListSuccess,\r\n getFilesFailure,\r\n getFilesSuccess,\r\n getProviderSuccess,\r\n uploadFailure,\r\n uploadSuccess,\r\n} from \"./actions\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { logout } from \"../auth\";\r\nimport { BulkPayload } from \"../../interfaces/BulkPayment\";\r\n\r\nfunction* getProviders(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/getmobilewalletproviders\");\r\n const newres = res.data.map((item: any, name: any) => {\r\n name = \"name\";\r\n return { [name]: item };\r\n });\r\n yield put(getProviderSuccess(newres));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n //yield put(getProvidersFailure('An error occured during payment.'))\r\n }\r\n } else {\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\nfunction* uploadFile({ payload }: { type: string; payload: FormData }): any {\r\n try {\r\n const res = yield call(callApiPost, \"payments/importfile\", payload);\r\n yield put(uploadSuccess(res.data));\r\n\r\n // yield put(bulkPaymentIncreaseStep(1));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(uploadFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(\r\n uploadFailure(\"An error occured when making request to server\")\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction* uploadedFilePreview({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: number;\r\n}): any {\r\n try {\r\n const res = yield call(callApiGet, `payments/filepreview/${payload}`);\r\n yield put(fileListSuccess(res.data));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(uploadFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(uploadFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* bulkPaymentRequest({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: BulkPayload;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `payments/updatepaymentstatuses?fileId=${payload.fileId}&approvalStatus=${payload.approvalStatus}`,\r\n payload\r\n );\r\n // yield put(bulkPaymentIncreaseStep(1));\r\n yield put(bulkPaymentSuccess(res.data));\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(bulkPaymentFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(\r\n bulkPaymentFailure(\"An error occured when making request to server\")\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction* getPaymentFiles(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/getfiles\");\r\n if (res.status === 200) {\r\n yield put(getFilesSuccess(res.data));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err && err.response === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getFilesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getFilesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchUploadFile() {\r\n yield takeEvery(BulkPaymentTypes.UPLOAD_FILE, uploadFile);\r\n}\r\nfunction* watchUploadedFilePreview() {\r\n yield takeEvery(BulkPaymentTypes.FILE_PREVIEW_REQUEST, uploadedFilePreview);\r\n}\r\n\r\nfunction* watchFetchProviders() {\r\n yield takeEvery(BulkPaymentTypes.GET_PROVIDERS, getProviders);\r\n}\r\n\r\nfunction* watchBulkPaymentRequest() {\r\n yield takeEvery(\r\n BulkPaymentTypes.COMPLETE_PAYMENT_REQUEST,\r\n bulkPaymentRequest\r\n );\r\n}\r\n\r\nfunction* watchGetPaymentFiles() {\r\n yield takeEvery(\r\n BulkPaymentTypes.GET_BULKPAYMENT_FILES_REQUEST,\r\n getPaymentFiles\r\n );\r\n}\r\n\r\nfunction* bulkPaymentSaga(): Generator {\r\n yield all([\r\n fork(watchUploadFile),\r\n fork(watchUploadedFilePreview),\r\n fork(watchFetchProviders),\r\n fork(watchBulkPaymentRequest),\r\n fork(watchGetPaymentFiles),\r\n ]);\r\n}\r\n\r\nexport { bulkPaymentSaga };\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { SettingsTypes } from './types'\r\nimport {\r\n getCurrentUserSuccess,\r\n getCurrentUserFailure,\r\n updateUserSuccess,\r\n updateUserFailure,\r\n changePasswordSuccess,\r\n changePasswordFailure,\r\n createMerchantSuccess,\r\n createMerchantFailure,\r\n logError,\r\n getAllMerchantsSuccess,\r\n getAllMerchantsFailure,\r\n updateMerchantStatusSuccess,\r\n updateMerchantStatusFailure,\r\n getFxRateSuccess,\r\n getFxRateFailure,\r\n createFxRateSuccess,\r\n createFxRateFailure\r\n} from './actions'\r\nimport { callApiGet, callApiPost } from '../../utils/api'\r\nimport { Client, MerchantActivation, Register } from '../../interfaces'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\n\r\nfunction* getUser({ payload }: { type: string; payload: number }): any {\r\n try {\r\n const res = yield call(callApiGet, `payments/clientdetails/${payload}`)\r\n if (res.status === 200) {\r\n yield put(getCurrentUserSuccess(res.data))\r\n } else {\r\n yield put(getCurrentUserFailure('An unknown error occurred'))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getCurrentUserFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getCurrentUserFailure('An unknown error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* updateUser({ payload }: { type: string; payload: Client }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/clientdetails', payload)\r\n if (res.status === 200) {\r\n yield put(updateUserSuccess(res.data))\r\n } else {\r\n yield put(updateUserFailure(res.data))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(updateUserFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(updateUserFailure('An unknown error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* changePassword({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'login/changepassword', payload)\r\n if (res.status === 200) {\r\n yield put(changePasswordSuccess())\r\n } else {\r\n yield put(changePasswordSuccess())\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(changePasswordFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(changePasswordFailure('An unknown error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* createMerchant({\r\n payload\r\n}: {\r\n type: string\r\n payload: Register\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, 'login/register', payload)\r\n yield put(createMerchantSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n if (err.response.data.status) {\r\n yield put(createMerchantFailure(err.response.data))\r\n } else {\r\n yield put(logError(err.response.data))\r\n }\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* getAllMerchants(): any {\r\n try {\r\n const res = yield call(callApiGet, 'payments/getmerchants')\r\n yield put(getAllMerchantsSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getAllMerchantsFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getAllMerchantsFailure('An unknown error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* updateMerchantStatus({\r\n payload\r\n}: {\r\n type: string\r\n payload: MerchantActivation\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/updateuserstatus', payload)\r\n if (res.data) {\r\n yield put(updateMerchantStatusSuccess(payload))\r\n } else {\r\n yield put(\r\n updateMerchantStatusFailure(\r\n 'Status update was not performed. Please try again'\r\n )\r\n )\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(updateMerchantStatusFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(updateMerchantStatusFailure('An unknown error occurred'))\r\n }\r\n }\r\n}\r\n//Araka Manage FX\r\nfunction* getFxCurrencies(): any {\r\n try {\r\n const res = yield call(callApiGet, 'payments/araka/fxrates')\r\n yield put(getFxRateSuccess(res.data))\r\n console.log(res.data)\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getFxRateFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getFxRateFailure('An unknown error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* updateFxRate({\r\n payload\r\n}: {\r\n type: string\r\n payload: Register\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/araka/updatefxrate', payload)\r\n yield put(createFxRateSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n if (err.response.data.status) {\r\n yield put(createFxRateFailure(err.response.data))\r\n } else {\r\n yield put(logError(err.response.data))\r\n }\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* addFxRate({\r\n payload\r\n}: {\r\n type: string\r\n payload: Register\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/araka/addfxrate', payload)\r\n yield put(createFxRateSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n if (err.response.data.status) {\r\n yield put(createFxRateFailure(err.response.data))\r\n } else {\r\n yield put(logError(err.response.data))\r\n }\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\n\r\nfunction* watchGetUser() {\r\n yield takeEvery(SettingsTypes.GET_CURRENT_USER, getUser)\r\n}\r\n\r\nfunction* watchUpdateUser() {\r\n yield takeEvery(SettingsTypes.EDIT_ACCOUNT_REQUEST, updateUser)\r\n}\r\n\r\nfunction* watchChangePassword() {\r\n yield takeEvery(SettingsTypes.CHANGE_PASSWORD_REQUEST, changePassword)\r\n}\r\n\r\nfunction* watchCreateMerchant() {\r\n yield takeEvery(SettingsTypes.REGISTER_MERCHANT_REQUEST, createMerchant)\r\n}\r\nfunction* watchGetAllMerchants() {\r\n yield takeEvery(SettingsTypes.GET_MERCHANTS_REQUEST, getAllMerchants)\r\n}\r\n\r\nfunction* watchUpdateMerchantStatus() {\r\n yield takeEvery(\r\n SettingsTypes.UPDATE_MERCHANT_STATUS_REQUEST,\r\n updateMerchantStatus\r\n )\r\n}\r\n\r\nfunction* watchGetFxRate() {\r\n yield takeEvery(SettingsTypes.FX_RATE_REQUEST, getFxCurrencies)\r\n}\r\nfunction* watchUpdateFxRate() {\r\n yield takeEvery(SettingsTypes.UPDATE_FX_RATE_REQUEST, updateFxRate)\r\n}\r\nfunction* watchAddFxRate() {\r\n yield takeEvery(SettingsTypes.ADD_FX_RATE_REQUEST, addFxRate)\r\n}\r\n\r\nfunction* settingsSaga(): Generator {\r\n yield all([\r\n fork(watchGetUser),\r\n fork(watchUpdateUser),\r\n fork(watchChangePassword),\r\n fork(watchCreateMerchant),\r\n fork(watchGetAllMerchants),\r\n fork(watchUpdateMerchantStatus),\r\n fork(watchGetFxRate),\r\n fork(watchUpdateFxRate),\r\n fork(watchAddFxRate)\r\n ])\r\n}\r\n\r\nexport { settingsSaga }\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { MerchantsOverviewTypes } from './types'\r\nimport {\r\n getMerchantsOverviewSuccess,\r\n getMerchantsOverviewFailure,\r\n exportOverviewSuccess,\r\n exportOverviewFailure\r\n} from './actions'\r\nimport { callApiPost } from '../../utils/api'\r\nimport { DataStream } from '../../interfaces'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\n\r\nfunction* getOverview({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'reports/getmerchantsoverview', payload)\r\n if (res.status === 200) {\r\n yield put(getMerchantsOverviewSuccess(res.data))\r\n } else {\r\n yield put(getMerchantsOverviewFailure('An unknwon error occurred'))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getMerchantsOverviewFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getMerchantsOverviewFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportOverview({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `reports/exportmerchantsoverview`,\r\n payload\r\n )\r\n if (res.status === 200) {\r\n yield put(exportOverviewSuccess(res.data))\r\n let file: DataStream = res.data\r\n const link = document.createElement('a')\r\n link.href = `data:application/pdf;base64,${file.fileContents}`\r\n link.download = file.fileDownloadName\r\n link.click()\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(exportOverviewFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(exportOverviewFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetOverview() {\r\n yield takeEvery(MerchantsOverviewTypes.GET_MERCHANTS_OVERVIEW, getOverview)\r\n}\r\n\r\nfunction* watchExportOverview() {\r\n yield takeEvery(\r\n MerchantsOverviewTypes.EXPORT_OVERVIEW_REQUEST,\r\n getExportOverview\r\n )\r\n}\r\n\r\nfunction* overviewSaga(): Generator {\r\n yield all([fork(watchGetOverview), fork(watchExportOverview)])\r\n}\r\n\r\nexport { overviewSaga }\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { VASProcessedTypes } from './types'\r\nimport { getVasSuccess, getVasFailure, exportVASSuccess, exportVASFailure } from './actions'\r\nimport { callApiPost } from '../../utils/api'\r\nimport { DataStream } from '../../interfaces'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\n\r\nfunction* getVas({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'reports/getvasoverview', payload)\r\n if (res.status === 200) {\r\n yield put(getVasSuccess(res.data))\r\n } else {\r\n yield put(getVasFailure('An unknwon error occurred'))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getVasFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getVasFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportVas({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, `reports/exportvasoverview`, payload)\r\n if (res.status === 200) {\r\n yield put(exportVASSuccess(res.data))\r\n let file: DataStream = res.data\r\n const link = document.createElement('a')\r\n link.href = `data:application/pdf;base64,${file.fileContents}`\r\n link.download = file.fileDownloadName\r\n link.click()\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(exportVASFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(exportVASFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetVas() {\r\n yield takeEvery(VASProcessedTypes.GET_VAS_REQUEST, getVas)\r\n}\r\n\r\nfunction* watchExportVas() {\r\n yield takeEvery(VASProcessedTypes.EXPORT_VAS_REQUEST, getExportVas)\r\n}\r\n\r\nfunction* vasSaga(): Generator {\r\n yield all([fork(watchGetVas), fork(watchExportVas)])\r\n}\r\n\r\nexport { vasSaga }\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { ReportsActionTypes } from './types'\r\nimport { callApiPost, callApiGet } from '../../utils/api'\r\nimport { PayoutNewRecord, DataStream } from '../../interfaces'\r\nimport {\r\n getPCESFailure,\r\n getPCESSuccess,\r\n getPendingTransactionsSuccess,\r\n getPendingTransactionsFailure,\r\n getPayoutFailure,\r\n getPayoutSuccess,\r\n getProxyPaySubscribersSuccess,\r\n getProxyPayTransactionsSuccess,\r\n getProxyPayVolumesSuccess,\r\n getProxyPayRevenuesSuccess,\r\n getProxyPayOpexSuccess,\r\n getProxyPayEbitdaSuccess,\r\n getProxyPaySubscribersFailure,\r\n getProxyPayTransactionsFailure,\r\n getProxyPayVolumesFailure,\r\n getProxyPayRevenuesFailure,\r\n getProxyPayOpexFailure,\r\n getProxyPayEbitdaFailure,\r\n postPayoutFailure,\r\n postPayoutSuccess,\r\n getMerchantsFailure,\r\n getMerchantsSuccess,\r\n getPayoutFeeSuccess,\r\n getPayoutFeeFailure,\r\n exportFailure,\r\n exportSuccess,\r\n downloadReceiptSuccess,\r\n downloadReceiptFailure,\r\n exportPCESFailure,\r\n exportPCESSuccess,\r\n exportPendingTxSuccess,\r\n exportPendingTxFailure,\r\n getVASServiceSuccess,\r\n getVASServiceFailure\r\n} from './actions'\r\nimport { isEmpty } from '../../helpers/isEmpty'\r\nimport { proxyPayDataTypes } from '../../helpers/constants'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\n\r\nfunction* getPCESReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'reports/getpcesreports', payload)\r\n yield put(getPCESSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getPCESFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getPCESFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getPendingTransactionsReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'reports/getpendingtransactions', payload)\r\n yield put(getPendingTransactionsSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getPendingTransactionsFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getPendingTransactionsFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getProxyPaySubReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n payload.reportType = proxyPayDataTypes.subscribers\r\n const res = yield call(callApiPost, 'payments/getproxypayreports', payload)\r\n yield put(getProxyPaySubscribersSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getProxyPaySubscribersFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getProxyPaySubscribersFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getProxyPayTrxReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n payload.reportType = proxyPayDataTypes.transactions\r\n const res = yield call(callApiPost, 'payments/getproxypayreports', payload)\r\n yield put(getProxyPayTransactionsSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getProxyPayTransactionsFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getProxyPayTransactionsFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getProxyPayVolReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n payload.reportType = proxyPayDataTypes.volumes\r\n const res = yield call(callApiPost, 'payments/getproxypayreports', payload)\r\n yield put(getProxyPayVolumesSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getProxyPayVolumesFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getProxyPayVolumesFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getProxyPayRevReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n payload.reportType = proxyPayDataTypes.revenues\r\n const res = yield call(callApiPost, 'payments/getproxypayreports', payload)\r\n yield put(getProxyPayRevenuesSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getProxyPayRevenuesFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getProxyPayRevenuesFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getProxyPayOpexReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n payload.reportType = proxyPayDataTypes.opex\r\n const res = yield call(callApiPost, 'payments/getproxypayreports', payload)\r\n yield put(getProxyPayOpexSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getProxyPayOpexFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getProxyPayOpexFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getProxyPayEbitdaReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n payload.reportType = proxyPayDataTypes.ebitda\r\n const res = yield call(callApiPost, 'payments/getproxypayreports', payload)\r\n yield put(getProxyPayEbitdaSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getProxyPayEbitdaFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getProxyPayEbitdaFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getPayoutReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/getproxypayouts', payload)\r\n if (isEmpty(res.data)) {\r\n yield put(getPayoutSuccess(null))\r\n } else {\r\n yield put(getPayoutSuccess(res.data))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getPayoutFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getPayoutFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* postNewRecord({ payload }: { type: string; payload: PayoutNewRecord }): any {\r\n try {\r\n yield call(callApiPost, 'payments/newrecordpayout', payload)\r\n yield put(postPayoutSuccess())\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(postPayoutFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(postPayoutFailure('An error occured when making request to server'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getMerchants(): any {\r\n try {\r\n const res = yield call(callApiGet, 'payments/getmerchants')\r\n yield put(getMerchantsSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getMerchantsFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getMerchantsFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* postPayoutFee({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/getpayoutfee', payload)\r\n yield put(getPayoutFeeSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getPayoutFeeFailure('An error occured when making request to server'))\r\n }\r\n } else {\r\n throw err\r\n }\r\n }\r\n}\r\n\r\nfunction* getExport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, `reports/exportproxypayouts`, payload)\r\n yield put(exportSuccess(res.data))\r\n let file: DataStream = res.data\r\n const link = document.createElement('a')\r\n link.href = `data:application/pdf;base64,${file.fileContents}`\r\n link.download = file.fileDownloadName\r\n link.click()\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(exportFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(exportFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportPCESReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, `reports/exportpcesreports`, payload)\r\n yield put(exportPCESSuccess(res.data))\r\n let file: DataStream = res.data\r\n const link = document.createElement('a')\r\n link.href = `data:application/pdf;base64,${file.fileContents}`\r\n link.download = file.fileDownloadName\r\n link.click()\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(exportPCESFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(exportPCESFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getDownloadReceiptStream({ payload }: { type: string; payload: number }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/getpayoutreceipt', payload)\r\n if (res.status === 200) {\r\n yield put(downloadReceiptSuccess(res.data))\r\n\r\n let file: DataStream = res.data\r\n const link = document.createElement('a')\r\n link.href = `data:application/pdf;base64,${file.fileContents}`\r\n link.download = file.fileDownloadName\r\n link.click()\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(downloadReceiptFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(downloadReceiptFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportPendingTxReport({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, `reports/exportpendingtransactions`, payload)\r\n yield put(exportPendingTxSuccess(res.data))\r\n let file: DataStream = res.data\r\n const link = document.createElement('a')\r\n link.href = `data:application/pdf;base64,${file.fileContents}`\r\n link.download = file.fileDownloadName\r\n link.click()\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(exportPendingTxFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(exportPendingTxFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getVASServices(): any {\r\n try {\r\n const res = yield call(callApiGet, 'reports/getvasservices')\r\n yield put(getVASServiceSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getVASServiceFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getVASServiceFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetPCESReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PCES_REQUEST, getPCESReport)\r\n}\r\n\r\nfunction* watchGetPendingTransactionsReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PENDING_TRANSACTIONS_REQUEST, getPendingTransactionsReport)\r\n}\r\n\r\nfunction* watchGetProxyPaySubReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PROXYPAY_SUBSCRIBERS_REQUEST, getProxyPaySubReport)\r\n}\r\n\r\nfunction* watchGetProxyPayTrxReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PROXYPAY_TRANSACTIONS_REQUEST, getProxyPayTrxReport)\r\n}\r\n\r\nfunction* watchGetProxyPayVolReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PROXYPAY_VOLUMES_REQUEST, getProxyPayVolReport)\r\n}\r\n\r\nfunction* watchGetProxyPayRevReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PROXYPAY_REVENUES_REQUEST, getProxyPayRevReport)\r\n}\r\n\r\nfunction* watchGetProxyPayOpexReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PROXYPAY_OPEX_REQUEST, getProxyPayOpexReport)\r\n}\r\n\r\nfunction* watchGetProxyPayEbitdaReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PROXYPAY_EBITDA_REQUEST, getProxyPayEbitdaReport)\r\n}\r\n\r\nfunction* watchGetPayoutReport() {\r\n yield takeEvery(ReportsActionTypes.GET_PAYOUT_REQUEST, getPayoutReport)\r\n}\r\n\r\nfunction* watchPostNewRecord() {\r\n yield takeEvery(ReportsActionTypes.POST_RECORD_REQUEST, postNewRecord)\r\n}\r\n\r\nfunction* watchGetMerchants() {\r\n yield takeEvery(ReportsActionTypes.GET_MERCHANTS_REQUEST, getMerchants)\r\n}\r\n\r\nfunction* watchPostPayoutFee() {\r\n yield takeEvery(ReportsActionTypes.POST_PAYOUT_FEE_REQUEST, postPayoutFee)\r\n}\r\n\r\nfunction* watchExport() {\r\n yield takeEvery(ReportsActionTypes.EXPORT_REQUEST, getExport)\r\n}\r\n\r\nfunction* watchPCESExport() {\r\n yield takeEvery(ReportsActionTypes.EXPORT_PCES_REQUEST, getExportPCESReport)\r\n}\r\n\r\nfunction* watchFetchGetDownloadReceiptStream() {\r\n yield takeEvery(ReportsActionTypes.DOWNLOAD_RECEIPT_REQUEST, getDownloadReceiptStream)\r\n}\r\n\r\nfunction* watchPendingTxExport() {\r\n yield takeEvery(ReportsActionTypes.EXPORT_PENDING_TX_REQUEST, getExportPendingTxReport)\r\n}\r\n\r\nfunction* watchGetVASServices() {\r\n yield takeEvery(ReportsActionTypes.GET_VAS_SERVICES_REQUEST, getVASServices)\r\n}\r\n\r\nfunction* reportsSaga(): Generator {\r\n yield all([\r\n fork(watchGetPCESReport),\r\n fork(watchGetPendingTransactionsReport),\r\n fork(watchGetProxyPaySubReport),\r\n fork(watchGetProxyPayTrxReport),\r\n fork(watchGetProxyPayVolReport),\r\n fork(watchGetProxyPayRevReport),\r\n fork(watchGetProxyPayOpexReport),\r\n fork(watchGetProxyPayEbitdaReport),\r\n fork(watchGetPayoutReport),\r\n fork(watchPostNewRecord),\r\n fork(watchGetMerchants),\r\n fork(watchPostPayoutFee),\r\n fork(watchExport),\r\n fork(watchPCESExport),\r\n fork(watchFetchGetDownloadReceiptStream),\r\n fork(watchPendingTxExport),\r\n fork(watchGetVASServices)\r\n ])\r\n}\r\n\r\nexport { reportsSaga }\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { MerchantsChannelsTypes } from './types'\r\nimport {\r\n getMerchantsChannelsSuccess,\r\n getMerchantsChannelsFailure,\r\n exportChannelsSuccess,\r\n exportChannelsFailure\r\n} from './actions'\r\nimport { callApiPost } from '../../utils/api'\r\nimport { DataStream } from '../../interfaces'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\n\r\nfunction* getChannels({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n 'Payments/merchantchannelpayments',\r\n payload\r\n )\r\n if (res.status === 200) {\r\n yield put(getMerchantsChannelsSuccess(res.data))\r\n } else {\r\n yield put(getMerchantsChannelsFailure('An unknwon error occurred'))\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(getMerchantsChannelsFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(getMerchantsChannelsFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportChannels({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `Payments/exportmerchantchannelpayments `,\r\n payload\r\n )\r\n if (res.status === 200) {\r\n yield put(exportChannelsSuccess(res.data))\r\n let file: DataStream = res.data\r\n const link = document.createElement('a')\r\n link.href = `data:application/pdf;base64,${file.fileContents}`\r\n link.download = file.fileDownloadName\r\n link.click()\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(exportChannelsFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(exportChannelsFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetChannels() {\r\n yield takeEvery(MerchantsChannelsTypes.GET_MERCHANTS_CHANNELS, getChannels)\r\n}\r\n\r\nfunction* watchExportChannels() {\r\n yield takeEvery(\r\n MerchantsChannelsTypes.EXPORT_CHANNELS_REQUEST,\r\n getExportChannels\r\n )\r\n}\r\n\r\nfunction* channelSaga(): Generator {\r\n yield all([fork(watchGetChannels), fork(watchExportChannels)])\r\n}\r\n\r\nexport { channelSaga }\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { B2CTransactionTypes } from './types'\r\nimport { callApiPost } from '../../utils/api'\r\nimport { B2CTransaction } from '../../interfaces'\r\nimport { b2cPaymentFailure, b2cPaymentSuccess } from './actions'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\n\r\nfunction* b2cPaymentPage({\r\n payload\r\n}: {\r\n type: string\r\n payload: B2CTransaction\r\n}): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/makemomopay', payload)\r\n\r\n yield put(b2cPaymentSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else {\r\n yield put(b2cPaymentFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(\r\n b2cPaymentFailure('An error occured when making request to server')\r\n )\r\n }\r\n }\r\n}\r\n\r\nfunction* watchb2cPaymentPage() {\r\n yield takeEvery(B2CTransactionTypes.B2C_PAYMENT_REQUEST, b2cPaymentPage)\r\n}\r\n\r\nfunction* b2cPaymentPageSaga(): Generator {\r\n yield all([fork(watchb2cPaymentPage)])\r\n}\r\n\r\nexport { b2cPaymentPageSaga }\r\n","import { all, call, fork, put, takeEvery, takeLatest } from \"redux-saga/effects\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport {\r\n getTransactionsSuccess,\r\n getTransactionsFailure,\r\n getCurrenciesSuccess,\r\n getCurrenciesFailure,\r\n exportTranxSuccess,\r\n exportTranxFailure,\r\n downloadReceiptSuccess,\r\n downloadReceiptFailure,\r\n getVASDashboardSuccess,\r\n getVASDashboardFailure,\r\n getCollectionDashboardSuccess,\r\n getCollectionDashboardFailure,\r\n} from \"./actions\";\r\nimport { callApiGet, callApiPost } from \"../../utils/api\";\r\nimport { DataStream } from \"../../interfaces\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { logout } from \"../auth\";\r\n\r\nfunction* getTransactions({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, \"reports/getvastransactions\", payload);\r\n if (res.status === 200) {\r\n yield put(getTransactionsSuccess(res.data));\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getTransactionsFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getCurrencies(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/currencycodes\");\r\n if (res.status === 200) {\r\n yield put(getCurrenciesSuccess(res.data));\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getCurrenciesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportTransactions({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: any;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `reports/exportvastransactions`,\r\n payload\r\n );\r\n if (res.status === 200) {\r\n yield put(exportTranxSuccess(res.data));\r\n\r\n // console.log(res.data);\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(exportTranxFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(exportTranxFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getDownloadReceiptStream({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: number;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/gettransactionreciept/${payload}`\r\n );\r\n if (res.status === 200) {\r\n yield put(downloadReceiptSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(downloadReceiptFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(downloadReceiptFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* handleGetVASDashboard({ payload }: any): any {\r\n try {\r\n const result = yield call(callApiPost, \"reports/dashboardvas\", payload);\r\n if (result.status === 200) {\r\n // Extract the nested data structure\r\n yield put(getVASDashboardSuccess(result.data));\r\n }\r\n } catch (err) {\r\n yield put(getVASDashboardFailure(err));\r\n }\r\n}\r\n\r\nfunction* handleGetCollectionDashboard({ payload }: any): any {\r\n try {\r\n const result = yield call(callApiPost, \"reports/dashboardcollection\", payload);\r\n if (result.status === 200) {\r\n yield put(getCollectionDashboardSuccess(result.data));\r\n }\r\n } catch (err) {\r\n yield put(getCollectionDashboardFailure(err));\r\n }\r\n}\r\n\r\nfunction* watchGetTransactions() {\r\n yield takeEvery(TransactionTypes.GET_TRANSACTIONS_REQUEST, getTransactions);\r\n}\r\n\r\nfunction* watchGetCurrencies() {\r\n yield takeEvery(TransactionTypes.GET_CURRENCIES, getCurrencies);\r\n}\r\n\r\nfunction* watchExportTransactions() {\r\n yield takeEvery(\r\n TransactionTypes.EXPORT_TRANSACTIONS_REQUEST,\r\n getExportTransactions\r\n );\r\n}\r\n\r\nfunction* watchFetchGetDownloadReceiptStream() {\r\n yield takeEvery(\r\n TransactionTypes.DOWNLOAD_RECEIPT_REQUEST,\r\n getDownloadReceiptStream\r\n );\r\n}\r\n\r\nfunction* watchGetVASDashboard() {\r\n yield takeLatest(TransactionTypes.GET_VAS_DASHBOARD_REQUEST, handleGetVASDashboard);\r\n}\r\n\r\nfunction* watchGetCollectionDashboard() {\r\n yield takeLatest(TransactionTypes.GET_COLLECTION_DASHBOARD_REQUEST, handleGetCollectionDashboard);\r\n}\r\n\r\nfunction* vasSaga(): Generator {\r\n yield all([\r\n fork(watchGetTransactions),\r\n fork(watchGetCurrencies),\r\n fork(watchExportTransactions),\r\n fork(watchFetchGetDownloadReceiptStream),\r\n fork(watchGetVASDashboard),\r\n fork(watchGetCollectionDashboard),\r\n ]);\r\n}\r\n\r\nexport default vasSaga;\r\n","import { all, call, fork, put, takeEvery } from \"redux-saga/effects\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport {\r\n getTransactionsSuccess,\r\n getTransactionsFailure,\r\n getCurrenciesSuccess,\r\n getCurrenciesFailure,\r\n exportTranxSuccess,\r\n exportTranxFailure,\r\n downloadReceiptSuccess,\r\n downloadReceiptFailure,\r\n} from \"./actions\";\r\nimport { callApiGet, callApiPost } from \"../../utils/api\";\r\nimport { DataStream } from \"../../interfaces\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { logout } from \"../auth\";\r\n\r\nfunction* getTransactions({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n \"reports/getmerchanttransactions\",\r\n payload\r\n );\r\n if (res.status === 200) {\r\n console.log(res.data);\r\n yield put(getTransactionsSuccess(res.data));\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getTransactionsFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getCurrencies(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/currencycodes\");\r\n if (res.status === 200) {\r\n yield put(getCurrenciesSuccess(res.data));\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getCurrenciesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportTransactions({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: any;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `reports/exportalltmerchanttransactions`,\r\n payload\r\n );\r\n if (res.status === 200) {\r\n yield put(exportTranxSuccess(res.data));\r\n\r\n // console.log(res.data);\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(exportTranxFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(exportTranxFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getDownloadReceiptStream({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: number;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/gettransactionreciept/${payload}`\r\n );\r\n if (res.status === 200) {\r\n yield put(downloadReceiptSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(downloadReceiptFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(downloadReceiptFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetTransactions() {\r\n yield takeEvery(TransactionTypes.GET_TRANSACTIONS_REQUEST, getTransactions);\r\n}\r\n\r\nfunction* watchGetCurrencies() {\r\n yield takeEvery(TransactionTypes.GET_CURRENCIES, getCurrencies);\r\n}\r\n\r\nfunction* watchExportTransactions() {\r\n yield takeEvery(\r\n TransactionTypes.EXPORT_TRANSACTIONS_REQUEST,\r\n getExportTransactions\r\n );\r\n}\r\n\r\nfunction* watchFetchGetDownloadReceiptStream() {\r\n yield takeEvery(\r\n TransactionTypes.DOWNLOAD_RECEIPT_REQUEST,\r\n getDownloadReceiptStream\r\n );\r\n}\r\n\r\nfunction* socodeetransactionTableSaga(): Generator {\r\n yield all([\r\n fork(watchGetTransactions),\r\n fork(watchGetCurrencies),\r\n fork(watchExportTransactions),\r\n fork(watchFetchGetDownloadReceiptStream),\r\n ]);\r\n}\r\n\r\nexport { socodeetransactionTableSaga };\r\n","import { all, call, fork, put, takeEvery } from \"redux-saga/effects\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport {\r\n getTransactionsSuccess,\r\n getTransactionsFailure,\r\n getCurrenciesSuccess,\r\n getCurrenciesFailure,\r\n exportTranxSuccess,\r\n exportTranxFailure,\r\n downloadReceiptSuccess,\r\n downloadReceiptFailure,\r\n} from \"./actions\";\r\nimport { callApiGet, callApiPost } from \"../../utils/api\";\r\nimport { DataStream } from \"../../interfaces\";\r\nimport { path } from \"../../helpers/path\";\r\nimport { logout } from \"../auth\";\r\n\r\nfunction* getTransactions({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n \"reports/getmerchanttransactions\",\r\n payload\r\n );\r\n if (res.status === 200) {\r\n console.log(res.data);\r\n yield put(getTransactionsSuccess(res.data));\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getTransactionsFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getTransactionsFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getCurrencies(): any {\r\n try {\r\n const res = yield call(callApiGet, \"payments/currencycodes\");\r\n if (res.status === 200) {\r\n yield put(getCurrenciesSuccess(res.data));\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(getCurrenciesFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(getCurrenciesFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getExportTransactions({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: any;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `reports/exportalltmerchanttransactions`,\r\n payload\r\n );\r\n if (res.status === 200) {\r\n yield put(exportTranxSuccess(res.data));\r\n\r\n // console.log(res.data);\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(exportTranxFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(exportTranxFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* getDownloadReceiptStream({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: number;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiGet,\r\n `payments/gettransactionreciept/${payload}`\r\n );\r\n if (res.status === 200) {\r\n yield put(downloadReceiptSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(downloadReceiptFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(downloadReceiptFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchGetTransactions() {\r\n yield takeEvery(TransactionTypes.GET_TRANSACTIONS_REQUEST, getTransactions);\r\n}\r\n\r\nfunction* watchGetCurrencies() {\r\n yield takeEvery(TransactionTypes.GET_CURRENCIES, getCurrencies);\r\n}\r\n\r\nfunction* watchExportTransactions() {\r\n yield takeEvery(\r\n TransactionTypes.EXPORT_TRANSACTIONS_REQUEST,\r\n getExportTransactions\r\n );\r\n}\r\n\r\nfunction* watchFetchGetDownloadReceiptStream() {\r\n yield takeEvery(\r\n TransactionTypes.DOWNLOAD_RECEIPT_REQUEST,\r\n getDownloadReceiptStream\r\n );\r\n}\r\n\r\nfunction* sneltransactionTableSaga(): Generator {\r\n yield all([\r\n fork(watchGetTransactions),\r\n fork(watchGetCurrencies),\r\n fork(watchExportTransactions),\r\n fork(watchFetchGetDownloadReceiptStream),\r\n ]);\r\n}\r\n\r\nexport { sneltransactionTableSaga };\r\n","import { all, call, fork, put, takeEvery } from 'redux-saga/effects'\r\nimport { AllocateFundActionTypes } from './types'\r\nimport { callApiPost } from '../../utils/api'\r\nimport {\r\n allocateFundSuccess,\r\n allocateFundFailure,\r\n fundTransactionsFailure,\r\n fundTransactionsSuccess,\r\n verifyFundAllocationFailure,\r\n verifyFundAllocationSuccess,\r\n exportTransactionSuccess,\r\n exportTransactionFailure\r\n} from './actions'\r\nimport { path } from '../../helpers/path'\r\nimport { logout } from '../auth'\r\nimport { DataStream } from '../../interfaces'\r\n\r\nfunction* allocateFunds({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/allocatefundstomerchant', payload)\r\n yield put(allocateFundSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n console.log(err)\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else if (err.response.status === 500) {\r\n yield put(allocateFundFailure('An unknwon error occurred'))\r\n } else{\r\n yield put(allocateFundFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(allocateFundFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* fundTransactions({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/fundtransactions', payload)\r\n yield put(fundTransactionsSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n console.log(err)\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else if (err.response.status === 500) {\r\n yield put(fundTransactionsFailure('An unknwon error occurred'))\r\n } else{\r\n yield put(fundTransactionsFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(fundTransactionsFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* verifyFundAllocation({ payload }: { type: string; payload: any }): any {\r\n try {\r\n const res = yield call(callApiPost, 'payments/approvefundallocation', payload)\r\n yield put(verifyFundAllocationSuccess(res.data))\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n console.log(err)\r\n if (err.response.status === 401) {\r\n yield put(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n } else if (err.response.status === 500) {\r\n yield put(verifyFundAllocationFailure('An unknwon error occurred'))\r\n } else{\r\n yield put(verifyFundAllocationFailure(err.response.data))\r\n }\r\n } else {\r\n yield put(verifyFundAllocationFailure('An unknwon error occurred'))\r\n }\r\n }\r\n}\r\n\r\nfunction* exportFundAllocations({\r\n payload,\r\n}: {\r\n type: string;\r\n payload: any;\r\n}): any {\r\n try {\r\n const res = yield call(\r\n callApiPost,\r\n `reports/exportfundallocation`,\r\n payload\r\n );\r\n if (res.status === 200) {\r\n yield put(exportTransactionSuccess(res.data));\r\n\r\n let file: DataStream = res.data;\r\n const link = document.createElement(\"a\");\r\n link.href = `data:application/pdf;base64,${file.fileContents}`;\r\n link.download = file.fileDownloadName;\r\n link.click();\r\n }\r\n } catch (err: any) {\r\n if (err && err.response) {\r\n if (err.response.status === 401) {\r\n yield put(logout());\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"persist:root\");\r\n localStorage.clear();\r\n window.location.href = path.login;\r\n } else {\r\n yield put(exportTransactionFailure(err.response.data));\r\n }\r\n } else {\r\n yield put(exportTransactionFailure(\"An unknwon error occurred\"));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchAllocateFunds() {\r\n yield takeEvery(AllocateFundActionTypes.ALLOCATE_FUNDS_REQUEST, allocateFunds)\r\n}\r\nfunction* watchFundTransactions() {\r\n yield takeEvery(AllocateFundActionTypes.FUNDS_TRANSACTIONS_REQUEST, fundTransactions)\r\n}\r\nfunction* watchVerifyFundAllocation() {\r\n yield takeEvery(AllocateFundActionTypes.VERIFY_FUNDS_ALLOCATION_REQUEST, verifyFundAllocation)\r\n}\r\nfunction* watchExportFundAllocations() {\r\n yield takeEvery(AllocateFundActionTypes.EXPORT_TRANSACTIONS_REQUEST, exportFundAllocations)\r\n}\r\n\r\nfunction* allocateFundsSaga(): Generator {\r\n yield all([\r\n fork(watchAllocateFunds),\r\n fork(watchFundTransactions),\r\n fork(watchVerifyFundAllocation),\r\n fork(watchExportFundAllocations)\r\n ])\r\n}\r\n\r\nexport { allocateFundsSaga }\r\n","import { combineReducers } from \"redux\";\r\nimport { persistReducer } from \"redux-persist\";\r\nimport { all, fork } from \"redux-saga/effects\";\r\nimport { connectRouter, RouterState } from \"connected-react-router\";\r\nimport { History } from \"history\";\r\nimport storage from \"redux-persist/lib/storage\";\r\nimport { authSaga } from \"./auth/sagas\";\r\nimport { transactionSaga } from \"./transactions/sagas\";\r\nimport { b2ctransactionTableSaga } from \"./b2cTransactionTable/sagas\";\r\nimport { homeSaga } from \"./home/sagas\";\r\nimport { paymentPagesSaga } from \"./payment-pages/sagas\";\r\nimport { bulkPaymentSaga } from \"./bulk-payment/sagas\";\r\nimport { settingsSaga } from \"./settings/sagas\";\r\nimport { overviewSaga } from \"./merchant-overview/sagas\";\r\nimport { vasSaga } from \"./vas-processed/sagas\";\r\nimport { reportsSaga } from \"./reports/sagas\";\r\nimport { channelSaga } from \"./merchant-channels/sagas\";\r\nimport { b2cPaymentPageSaga } from \"./b2ctransactions/sagas\";\r\nimport { AuthState, authReducer } from \"./auth\";\r\nimport { HomeState, homeReducer } from \"./home\";\r\nimport { TransactionState, transactionReducer } from \"./transactions\";\r\nimport {\r\n B2CTransactionTableState,\r\n b2cTransactionTableReducer,\r\n} from \"./b2cTransactionTable\";\r\nimport { PaymentPagesState, paymentPagesReducer } from \"./payment-pages\";\r\nimport { UtilsState, utilsReducer } from \"./utils\";\r\nimport { SettingsState, settingsReducer } from \"./settings\";\r\nimport { MerchantsOverviewState, overviewReducer } from \"./merchant-overview\";\r\nimport { VASProcessedState, vasReducer } from \"./vas-processed\";\r\nimport { ReportsState, reportsReducer } from \"./reports\";\r\nimport { MerchantsChannelsState, channelsReducer } from \"./merchant-channels\";\r\nimport { B2CPaymentReducer, B2CTransactionState } from \"./b2ctransactions\";\r\nimport { bulkPaymentReducer, BulkPaymentState } from \"./bulk-payment\";\r\nimport { VASTransactionState } from \"./vas-transactions/types\";\r\nimport { vasTransactionTableReducer } from \"./vas-transactions\";\r\nimport vasTransactionsSaga from \"./vas-transactions/sagas\";\r\nimport { socodeeTransactionTableReducer } from \"./socodee/reducer\";\r\nimport { SocodeeTransactionState } from \"./socodee/types\";\r\nimport { socodeetransactionTableSaga } from \"./socodee/sagas\";\r\nimport { sneltransactionTableSaga } from \"./snel/sagas\";\r\nimport { SnelTransactionState, snelTransactionTableReducer } from \"./snel\";\r\nimport { AllocateFundState, allocateFundsReducer } from \"./allocate-funds\";\r\nimport { allocateFundsSaga } from \"./allocate-funds/sagas\";\r\n\r\nexport type ApplicationState = {\r\n auth: AuthState;\r\n home: HomeState;\r\n transaction: TransactionState;\r\n b2cTransactionTable: B2CTransactionTableState;\r\n page: PaymentPagesState;\r\n utils: UtilsState;\r\n settings: SettingsState;\r\n overviews: MerchantsOverviewState;\r\n vas: VASProcessedState;\r\n reports: ReportsState;\r\n router: RouterState;\r\n channels: MerchantsChannelsState;\r\n b2cPayment: B2CTransactionState;\r\n payment: PaymentPagesState;\r\n bulkPayment: BulkPaymentState;\r\n vasTransaction: VASTransactionState;\r\n socodee: SocodeeTransactionState;\r\n snel: SnelTransactionState;\r\n allocateFundState: AllocateFundState;\r\n};\r\n\r\nconst persistConfig = {\r\n key: \"root\",\r\n storage,\r\n whitelist: [\r\n \"auth\",\r\n \"home\",\r\n \"transaction\",\r\n \"b2cTransactionTable\",\r\n \"page\",\r\n \"utils\",\r\n \"settings\",\r\n \"overviews\",\r\n \"vas\",\r\n \"reports\",\r\n \"router\",\r\n \"channels\",\r\n \"b2cPayment\",\r\n \"bulkPayment\",\r\n \"vasTransaction\",\r\n \"socodee\",\r\n \"snel\",\r\n \"allocateFunds\"\r\n ],\r\n};\r\n\r\nexport const persistingReducer = (history: History) =>\r\n persistReducer(\r\n persistConfig,\r\n combineReducers({\r\n auth: authReducer,\r\n home: homeReducer,\r\n transaction: transactionReducer,\r\n b2cTransactionTable: b2cTransactionTableReducer,\r\n page: paymentPagesReducer,\r\n utils: utilsReducer,\r\n settings: settingsReducer,\r\n overviews: overviewReducer,\r\n vas: vasReducer,\r\n reports: reportsReducer,\r\n channels: channelsReducer,\r\n b2cPayment: B2CPaymentReducer,\r\n router: connectRouter(history),\r\n bulkPayment: bulkPaymentReducer,\r\n vasTransaction: vasTransactionTableReducer,\r\n socodee: socodeeTransactionTableReducer,\r\n snel: snelTransactionTableReducer,\r\n allocateFundState: allocateFundsReducer\r\n })\r\n );\r\n\r\nexport function* rootSaga() {\r\n yield all([\r\n fork(authSaga),\r\n fork(transactionSaga),\r\n fork(homeSaga),\r\n fork(paymentPagesSaga),\r\n fork(bulkPaymentSaga),\r\n fork(settingsSaga),\r\n fork(overviewSaga),\r\n fork(vasSaga),\r\n fork(reportsSaga),\r\n fork(channelSaga),\r\n fork(b2cPaymentPageSaga),\r\n fork(b2ctransactionTableSaga),\r\n fork(vasTransactionsSaga),\r\n fork(socodeetransactionTableSaga),\r\n fork(sneltransactionTableSaga),\r\n fork(allocateFundsSaga),\r\n ]);\r\n}\r\n","import { createStore, applyMiddleware } from 'redux';\r\nimport createSagaMiddleware from 'redux-saga';\r\nimport { routerMiddleware } from 'connected-react-router';\r\n\r\nimport { persistStore } from 'redux-persist';\r\n\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\n\r\nimport { History } from 'history';\r\n\r\nimport { ApplicationState, rootSaga, persistingReducer } from './store';\r\n\r\nexport function configureStore(\r\n history: History,\r\n initialState: ApplicationState\r\n) {\r\n const composeEnhancers = composeWithDevTools({});\r\n\r\n const sagaMiddleware = createSagaMiddleware();\r\n\r\n const store = createStore(\r\n persistingReducer(history),\r\n initialState,\r\n composeEnhancers(applyMiddleware(routerMiddleware(history), sagaMiddleware))\r\n );\r\n\r\n sagaMiddleware.run(rootSaga);\r\n\r\n const persistor = persistStore(store);\r\n\r\n return { store, persistor };\r\n}\r\n\r\nexport default configureStore;\r\n","import React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport jwt_decode from 'jwt-decode'\r\nimport { createBrowserHistory } from 'history'\r\nimport reportWebVitals from './reportWebVitals'\r\nimport 'antd/dist/antd.css'\r\nimport 'flag-icon-css/css/flag-icon.min.css'\r\nimport './index.css'\r\nimport './responsive.css'\r\n\r\nimport App from './App'\r\nimport { I18nextProvider } from 'react-i18next'\r\nimport { i18n } from './i18n'\r\nimport { configureStore } from './configureStore'\r\nimport { secure } from './utils/secure'\r\nimport { isEmpty } from './helpers/isEmpty'\r\nimport { setUser } from './store/auth/actions'\r\nimport { authorization } from './utils/authorization'\r\nimport { logout } from './store/auth/actions'\r\nimport { path } from './helpers/path'\r\nimport moment from 'moment'\r\n\r\nconst history = createBrowserHistory()\r\n\r\ndeclare global {\r\n interface Window {\r\n INITIAL_REDUX_STATE: any\r\n }\r\n}\r\n\r\nconst initialState = window.INITIAL_REDUX_STATE\r\nexport const { store, persistor } = configureStore(history, initialState)\r\n\r\nconst user = secure.get('user')\r\nconst { token } = user\r\n\r\nif (!isEmpty(token)) {\r\n const decode: any = jwt_decode(token)\r\n const d = new Date(0)\r\n d.setUTCSeconds(decode.exp)\r\n const futureTime = moment(d).format('X')\r\n const currentTime = moment(new Date()).format('X')\r\n if (futureTime > currentTime) {\r\n store.dispatch(setUser(user))\r\n authorization(token)\r\n } else {\r\n store.dispatch(logout())\r\n localStorage.removeItem('user')\r\n localStorage.removeItem('persist:root')\r\n localStorage.clear()\r\n window.location.href = path.login\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n)\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals()\r\n","import { action } from 'typesafe-actions';\r\nimport { TransactionTypes, TransactionLogDto } from './types';\r\nimport { Currency, DataStream, TransactionHistory, TransactionReason } from '../../interfaces';\r\n\r\nexport const getTransactionsRequest = (payload: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const getTransactionsSuccess = (data: TransactionHistory) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const getTransactionsFailure = (error: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const getCurrencies = () => action(TransactionTypes.GET_CURRENCIES);\r\n\r\nexport const getCurrenciesSuccess = (data: Currency[]) =>\r\n action(TransactionTypes.GET_CURRENCIES_SUCCESS, data);\r\n\r\nexport const getCurrenciesFailure = (error: any) =>\r\n action(TransactionTypes.GET_CURRENCIES_FAILURE, error);\r\n\r\nexport const exportTranxRequest = (payload: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const exportTranxSuccess = (data: DataStream) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const exportTranxFailure = (error: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const downloadReceiptRequest = (transactionId: number) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_REQUEST, transactionId);\r\n\r\nexport const downloadReceiptSuccess = (data: DataStream) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS, data);\r\n\r\nexport const downloadReceiptFailure = (error: any) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_FAILURE, error);\r\n\r\nexport const getTransactionReason = (transactionId: number) =>\r\n action(TransactionTypes.GET_TRANSACTION_REASONS, transactionId);\r\n\r\nexport const getTransactionReasonsSuccess = (data: TransactionReason[]) =>\r\n action(TransactionTypes.GET_TRANSACTION_REASONS_SUCCESS, data);\r\n\r\nexport const getTransactionReasonsFailure = (error: any) =>\r\n action(TransactionTypes.GET_TRANSACTION_REASONS_FAILURE, error);\r\n\r\nexport const getTransactionLogsRequest = (transactionId: string) =>\r\n action(TransactionTypes.GET_TRANSACTION_LOGS_REQUEST, transactionId);\r\n\r\nexport const getTransactionLogsSuccess = (data: TransactionLogDto[]) =>\r\n action(TransactionTypes.GET_TRANSACTION_LOGS_SUCCESS, data);\r\n\r\nexport const getTransactionLogsFailure = (error: any) =>\r\n action(TransactionTypes.GET_TRANSACTION_LOGS_FAILURE, error);\r\n","import { Reducer } from 'redux';\r\nimport { SettingsState, SettingsTypes } from './types';\r\nimport { AuthActionTypes } from '../auth';\r\n\r\nexport const initialState: SettingsState = {\r\n isSubmitting: false,\r\n changePasswordFailure: false,\r\n changePasswordSuccess: false,\r\n client: null,\r\n editFailure: false,\r\n editSuccess: false,\r\n error: undefined,\r\n isChangingPassword: false,\r\n loading: false,\r\n createMerchantFailure: false,\r\n createMerchantSuccess: false,\r\n updateMerchantStatusSuccess: false,\r\n updateMerchantStatusFailure: false,\r\n updateMerchantError: '',\r\n allMerchants: [],\r\n merchants: [],\r\n singleError: '',\r\n merchantError: undefined,\r\n fxCurrencies: [],\r\n createFxSuccess: false,\r\n createFxFailure: false\r\n};\r\n\r\nconst reducer: Reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case SettingsTypes.EDIT_ACCOUNT_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n error: undefined,\r\n editFailure: false,\r\n editSuccess: false,\r\n };\r\n case SettingsTypes.EDIT_ACCOUNT_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n client: action.payload,\r\n editFailure: false,\r\n editSuccess: true,\r\n };\r\n case SettingsTypes.EDIT_ACCOUNT_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n error: action.payload,\r\n editSuccess: false,\r\n editFailure: true,\r\n };\r\n\r\n case SettingsTypes.GET_CURRENT_USER:\r\n return {\r\n ...state,\r\n loading: true,\r\n };\r\n case SettingsTypes.GET_CURRENT_USER_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n client: action.payload,\r\n };\r\n case SettingsTypes.GET_CURRENT_USER_FAILURE:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.payload,\r\n };\r\n\r\n case SettingsTypes.CHANGE_PASSWORD_REQUEST:\r\n return {\r\n ...state,\r\n isChangingPassword: true,\r\n changePasswordFailure: false,\r\n changePasswordSuccess: false,\r\n error: undefined,\r\n };\r\n\r\n case SettingsTypes.CHANGE_PASSWORD_SUCCESS:\r\n return {\r\n ...state,\r\n isChangingPassword: false,\r\n changePasswordSuccess: true,\r\n changePasswordFailure: false,\r\n };\r\n\r\n case SettingsTypes.CHANGE_PASSWORD_FAILURE:\r\n return {\r\n ...state,\r\n isChangingPassword: false,\r\n error: action.payload,\r\n changePasswordSuccess: false,\r\n changePasswordFailure: true,\r\n };\r\n case SettingsTypes.UPDATE_MERCHANT_STATUS_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true\r\n };\r\n case SettingsTypes.UPDATE_MERCHANT_STATUS_SUCCESS:\r\n const resp = action.payload\r\n for (var i = 0; i < state.allMerchants.length; i += 1){\r\n if (state.allMerchants[i].emailAddress === resp.EmailAddress) {\r\n state.allMerchants[i].isActive = resp.IsActive\r\n }\r\n }\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n updateMerchantStatusSuccess: true,\r\n updateMerchantStatusFailure: false,\r\n // merchants: [action.payload, ...state.merchants],\r\n };\r\n case SettingsTypes.UPDATE_MERCHANT_STATUS_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n updateMerchantError: action.payload,\r\n updateMerchantStatusFailure: true,\r\n updateMerchantStatusSuccess: false\r\n };\r\n\r\n case SettingsTypes.GET_MERCHANTS_REQUEST:\r\n return {\r\n ...state,\r\n }\r\n case SettingsTypes.GET_MERCHANTS_SUCCESS:\r\n return {\r\n ...state,\r\n allMerchants: action.payload\r\n }\r\n case SettingsTypes.GET_MERCHANTS_FAILURE:\r\n return {\r\n ...state,\r\n error: action.payload\r\n }\r\n case SettingsTypes.REGISTER_MERCHANT_REQUEST:\r\n return {\r\n ...state,\r\n isSubmitting: true,\r\n merchantError: undefined,\r\n singleError: '',\r\n };\r\n \r\n case SettingsTypes.REGISTER_MERCHANT_SUCCESS:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n createMerchantSuccess: true,\r\n createMerchantFailure: false,\r\n merchants: [action.payload, ...state.merchants],\r\n };\r\n\r\n case SettingsTypes.REGISTER_MERCHANT_FAILURE:\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n merchantError: action.payload,\r\n createMerchantFailure: true,\r\n createMerchantSuccess: false,\r\n };\r\n\r\n case SettingsTypes.LOG_SINGLE_ERROR: {\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n singleError: action.payload,\r\n createMerchantSuccess: false,\r\n };\r\n }\r\n\r\n case SettingsTypes.CLEAR_SOME_BOOLEANS:\r\n return {\r\n ...state,\r\n changePasswordFailure: false,\r\n changePasswordSuccess: false,\r\n editFailure: false,\r\n editSuccess: false,\r\n createMerchantFailure: false,\r\n createMerchantSuccess: false,\r\n error: undefined,\r\n merchantError: undefined,\r\n singleError: '',\r\n createFxFailure: false,\r\n createFxSuccess: false\r\n };\r\n case SettingsTypes.FX_RATE_SUCCESS:\r\n return {\r\n ...state,\r\n fxCurrencies: action.payload\r\n }\r\n case SettingsTypes.ADD_FX_RATE_SUCCESS:\r\n return {\r\n ...state,\r\n createFxSuccess: true,\r\n createFxFailure: false\r\n }\r\n case SettingsTypes.ADD_FX_RATE_FAILURE:\r\n return {\r\n ...state,\r\n createFxSuccess: false,\r\n createFxFailure: true,\r\n error: action.payload\r\n }\r\n case AuthActionTypes.DESTROY_STATES:\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as settingsReducer };\r\n","import { action } from \"typesafe-actions\";\r\nimport { TransactionTypes } from \"./types\";\r\nimport { Currency, DataStream, TransactionHistory, VASTransactionRequest, VASTransactionDashboardResponse, CollectionSummaryRequest, CollectionDashboardResponse } from \"../../interfaces\";\r\n\r\nexport const getTransactionsRequest = (payload: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const getTransactionsSuccess = (data: TransactionHistory) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const getTransactionsFailure = (error: any) =>\r\n action(TransactionTypes.GET_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const getCurrencies = () => action(TransactionTypes.GET_CURRENCIES);\r\n\r\nexport const getCurrenciesSuccess = (data: Currency[]) =>\r\n action(TransactionTypes.GET_CURRENCIES_SUCCESS, data);\r\n\r\nexport const getCurrenciesFailure = (error: any) =>\r\n action(TransactionTypes.GET_CURRENCIES_FAILURE, error);\r\n\r\nexport const exportTranxRequest = (payload: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_REQUEST, payload);\r\n\r\nexport const exportTranxSuccess = (data: DataStream) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_SUCCESS, data);\r\n\r\nexport const exportTranxFailure = (error: any) =>\r\n action(TransactionTypes.EXPORT_TRANSACTIONS_FAILURE, error);\r\n\r\nexport const downloadReceiptRequest = (transactionId: number) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_REQUEST, transactionId);\r\n\r\nexport const downloadReceiptSuccess = (data: DataStream) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_SUCCESS, data);\r\n\r\nexport const downloadReceiptFailure = (error: any) =>\r\n action(TransactionTypes.DOWNLOAD_RECEIPT_FAILURE, error);\r\n\r\nexport const clearVAS = () => action(TransactionTypes.CLEAR_VAS);\r\n\r\nexport const getVASDashboardRequest = (payload: VASTransactionRequest) =>\r\n action(TransactionTypes.GET_VAS_DASHBOARD_REQUEST, payload);\r\n\r\nexport const getVASDashboardSuccess = (data: VASTransactionDashboardResponse) =>\r\n action(TransactionTypes.GET_VAS_DASHBOARD_SUCCESS, data);\r\n\r\nexport const getVASDashboardFailure = (error: any) =>\r\n action(TransactionTypes.GET_VAS_DASHBOARD_FAILURE, error);\r\n\r\nexport const getCollectionDashboardRequest = (payload: CollectionSummaryRequest) =>\r\n action(TransactionTypes.GET_COLLECTION_DASHBOARD_REQUEST, payload);\r\n\r\nexport const getCollectionDashboardSuccess = (data: CollectionDashboardResponse) =>\r\n action(TransactionTypes.GET_COLLECTION_DASHBOARD_SUCCESS, data);\r\n\r\nexport const getCollectionDashboardFailure = (error: any) =>\r\n action(TransactionTypes.GET_COLLECTION_DASHBOARD_FAILURE, error);\r\n","import { action } from 'typesafe-actions'\r\nimport {\r\n Login,\r\n Error,\r\n User,\r\n ForgottenPassword,\r\n ResetPassword\r\n} from '../../interfaces'\r\nimport { AuthActionTypes } from './types'\r\n\r\nexport const loginRequest = (payload: Login) =>\r\n action(AuthActionTypes.REQUEST_LOGIN_SUBMIT, payload)\r\n\r\nexport const loginSuccess = (user: User) =>\r\n action(AuthActionTypes.LOGIN_SUCCESS, user)\r\n\r\nexport const loginError = (error: Error) =>\r\n action(AuthActionTypes.LOGIN_ERROR, error)\r\n\r\nexport const resetErrorState = () => action(AuthActionTypes.RESET_ERROR_STATE)\r\n\r\nexport const logError = (error: string) =>\r\n action(AuthActionTypes.LOG_SINGLE_ERROR, error)\r\n\r\nexport const setUser = (user: User) => action(AuthActionTypes.SET_USER, user)\r\n\r\nexport const logout = () => action(AuthActionTypes.DESTROY_STATES)\r\n\r\nexport const clearAuthState = () => action(AuthActionTypes.CLEAR_AUTH_STATES)\r\n\r\nexport const forgottenPasswordRequest = (payload: ForgottenPassword) =>\r\n action(AuthActionTypes.FORGOTTEN_PASSWORD_REQUEST, payload)\r\n\r\nexport const forgottenPasswordSuccess = (response: any) =>\r\n action(AuthActionTypes.FORGOTTEN_PASSWORD_SUCCESS, response)\r\n\r\nexport const forgottenPasswordFailure = (error: any) =>\r\n action(AuthActionTypes.FORGOTTEN_PASSWORD_FAILURE, error)\r\n\r\nexport const resetPasswordRequest = (payload: ResetPassword) =>\r\n action(AuthActionTypes.RESET_PASSWORD_REQUEST, payload)\r\n\r\nexport const resetPasswordSuccess = (response: any) =>\r\n action(AuthActionTypes.RESET_PASSWORD_SUCCESS, response)\r\n\r\nexport const resetPasswordFailure = (error: any) =>\r\n action(AuthActionTypes.RESET_PASSWORD_FAILURE, error)\r\n"],"sourceRoot":""}