{"version":3,"sources":["history.js","routing/AuthenticatedRoute.jsx","routing/AuthorizedRoute.jsx","const/user.js","store/shared.js","const/backend.js","store/dashboard/actions.js","store/user/actions.js","components/DashboardCard/DashboardCard.jsx","pages/AdminDashboardPage.jsx","store/dashboard/actionCreators.js","store/user/actionCreators.js","common/SiteLogo/TMF-logo-default-gold.svg","common/SiteLogo/Weslean_Impact_gold_navy.svg","common/SiteLogo/SiteLogo.jsx","common/UserLogo/UserLogo.jsx","labels/main-header.js","components/Header/Header.jsx","pages/layouts/AdminLayout.jsx","pages/HomePage.jsx","pages/NotFound.jsx","actions/index.js","actions/resourceRequestActions.js","components/ViewSelector/ViewSelector.jsx","utility/index.js","components/ResourceRequestView/ResourceRequestListItemAlt.jsx","components/ResourceRequestView/ResourceRequestList.jsx","components/ResourceRequestView/ResourceRequestView.jsx","common/layout/portal-layout/PortalLayout.jsx","common/HeaderComponents/NavigationMenu/NavigationMenu.jsx","labels/user-header.js","common/HeaderComponents/ProfileMenu/ProfileMenu.jsx","common/pages/admin-page/AdminPage.jsx","pages/resource-requests/ResourceRequestsPage.jsx","components/UserDetailsCard/UserDetailsCard.jsx","components/ResourceRequestCard/ResourceRequestCard.jsx","components/ResourceRequestDetailsPage/ResourceRequestControlPanel.jsx","actions/resourceActions.js","components/ResourceRequestDetailsPage/BestMatchItem.jsx","components/ResourceRequestDetailsPage/BestMatchList.jsx","components/ResourceRequestDetailsPage/ApprovedRequestDetails.jsx","components/ResourceRequestDetailsPage/ResourceRequestDetailsPage.jsx","store/userProfile/actions.js","store/userProfile/actionCreators.js","store/loanDetails/actions.js","common/HeaderComponents/UserData/UserData.jsx","common/pages/user-account-page/UserAccountPage.jsx","components/LoanLinesTable/LoanLinesTable.jsx","pages/loans/LoanDetailsPage.jsx","store/loanDetails/actionCreators.js","store/userManagement/actions.js","store/userManagement/actionCreators.js","store/adminUserProfile/actions.js","components/Highlight/Highlight.jsx","pages/AdminUserProfilePage.jsx","store/adminUserProfile/actionCreators.js","store/resourceRequests/actions.js","store/resourceRequests/actionCreators.js","components/Modals/AddResourceModal.jsx","components/LoanList/LoanList.jsx","pages/loans/LoansPage.jsx","components/InvestmentList/InvestmentList.jsx","pages/investments/InvestmentsPage.jsx","store/investmentDetails/actions.js","store/statements/actions.js","store/statements/actionCreators.js","components/AssetTable/AssetTable.jsx","components/AccountActivityTable/AccountActivityTable.jsx","components/StatementTable/StatementTable.jsx","pages/investments/InvestmentDetailsPage.jsx","store/investmentDetails/actionCreators.js","store/assetDetails/actions.js","components/AssetStatementsTable/AssetStatementsTable.jsx","pages/investments/AssetDetailsPage.jsx","store/assetDetails/actionCreators.js","const/resource-request.js","components/UserProfile/ResourceRequestsList.jsx","pages/resource-requests/ResourceRequestStatusPage.jsx","components/StatementsVault/VaultInvestmentView.jsx","components/StatementsVault/StatementsVault.jsx","pages/statements/StatementsVaultPage.jsx","store/geo/actions.js","store/geo/actionCreators.js","labels/register-form.js","user/profile-settings/formik.config.js","common/FormControl/FormControl.jsx","user/profile-settings/ProfileSettingsForm.jsx","pages/user/ProfileSettingsPage.jsx","const/user-search.js","components/UsersView/UsersSearchPanel.jsx","components/UsersView/CityFilterPanel.jsx","components/UsersView/UsersListPageable.jsx","components/UsersView/UsersView.jsx","pages/user/UserManagementPage.jsx","store/dataImportSessions/actions.js","store/dataImportSessions/actionCreators.js","components/DataImportSessionsList/DataImportSessionListItem.jsx","components/DataImportSessionsList/DataImportSessionsList.jsx","store/dataImportFiles/actions.js","components/DataImportWizard/FileItem.jsx","components/DataImportWizard/UploadFilesStep.jsx","const/data-import.js","components/DataImportWizard/DataImportProgressStep.jsx","components/DataImportWizard/DataImportResultStep.jsx","components/DataImportWizard/DataImportWizard.jsx","store/dataImportFiles/actionCreators.js","pages/data-import/DataImportPage.jsx","common/layout/auth/AuthLayout.jsx","labels/login-form.js","auth/login/const.js","auth/login/LoginForm.jsx","assets/images/login.jpg","pages/authentication/LoginPage.jsx","auth/register/formik.config.js","auth/register/RegisterForm.jsx","assets/images/registration_page_cp.jpg","pages/authentication/RegisterPage.jsx","labels/reset-password.js","auth/forgot-password/formik.config.js","auth/forgot-password/ForgotPassword.jsx","assets/images/island.jpg","pages/authentication/ForgotPasswordPage.jsx","labels/confirm-email.js","auth/confirm-email/ConfirmEmail.jsx","assets/images/sunset.jpg","pages/authentication/ConfirmEmailPage.jsx","labels/set-new-password.js","auth/reset-password/formik.config.js","auth/reset-password/ResetPassword.jsx","assets/images/mountein.jpg","pages/authentication/ResetPasswordPage.jsx","routing/index.js","registerServiceWorker.js","store/user/index.js","store/geo/index.js","store/userProfile/index.js","store/userManagement/index.js","store/resourceRequests/index.js","reducers/resourceRequests.js","reducers/resources.js","store/loanDetails/index.js","store/investmentDetails/index.js","store/assetDetails/index.js","store/statements/index.js","store/dataImportSessions/index.js","store/dataImportFiles/index.js","store/adminUserProfile/index.js","store/dashboard/index.js","store/store.js","store/configureStore.js","index.js"],"names":["baseUrl","document","getElementsByTagName","getAttribute","createBrowserHistory","basename","connect","user","Component","component","render","rest","props","token","to","defaultRoutes","login","requiredRole","role","root","adminRole","userRole","actionTemplate","type","authHeaders","userAndAuthHeaders","userId","UserId","window","location","origin","authApiPrefix","authorizedRequestHeaders","authEndpoints","geoEndpoints","stateId","usersEndpoints","skip","limit","search","cityId","view","requestUrl","query","scope","dataImportEndpoints","userProfileEndpoints","resourceRequestEndpoints","loanDetailsEndpoints","loanId","investmentDetailsEndpoint","investmentId","assetId","statementEndpoints","statementId","dataImportSessionEndpoints","sessionId","dataImportFilesEndpoints","adminUserProfileEndpoints","requestId","syncJobsEndpoints","FETCH__STATEMENT_SCAN_STATUS","FETCH__STATEMENT_SCAN_STATUS__SUCCESS","FETCH__STATEMENT_SCAN_STATUS__FAIL","START__STATEMENTS_SCAN","START__STATEMENTS_SCAN__SUCCESS","START__STATEMENTS_SCAN__FAIL","FETCH_USER_TOKEN","FETCH_USER_TOKEN__SUCCESS","FETCH_USER_TOKEN__FAILED","REGISTER_USER","REGISTER_USER__SUCCESS","REGISTER_USER__FAILED","RESTORE_PASSWORD","RESTORE_PASSWORD__SUCCESS","RESTORE_PASSWORD__FAILED","RESET_RESETPASSWORDSTATE","RESET_REGISTERSTATE","CONFIRM_EMAIL","CONFIRM_EMAIL__SUCCESS","CONFIRM_EMAIL__FAILED","RESET_CONFIRMEMAILSTATE","VERIFY_RESET_PASSWORD_TOKEN","VERIFY_RESET_PASSWORD_TOKEN__SUCCESS","VERIFY_RESET_PASSWORD_TOKEN__FAILED","CHANGE_PASSWORD","CHANGE_PASSWORD__SUCCESS","CHANGE_PASSWORD__FAILED","RESET_CHANGEPASSWORDSTATE","LOG_OUT","DELETE_USER","DELETE_USER__SUCCESS","DELETE_USER__FAIL","DashboardCard","title","children","className","AdminDashboardPage","intervalId","handleStartScan","startRepositoryScan","fetchStatementScanStatus","then","setInterval","isScanInProgress","dashboard","clearInterval","this","isStartingStatementsScan","tipText","spinning","tip","icon","ScanOutlined","subTitle","extra","onClick","disabled","loading","PureComponent","dispatch","axios","post","headers","response","status","catch","get","logout","SiteLogo","isAnyWiAssets","rootClasses","classnames","console","log","src","WiLogo","Logo","alt","version","id","xmlns","xlink","x","y","viewBox","space","d","mainHeaderLabels","header","subHeader","userMenu","editProfile","logOut","links","users","requests","dataImport","Item","Menu","Divider","Header","onEditProfile","onLogout","menu","routes","profileSettings","overlay","trigger","placement","UserLogo","exact","activeClassName","resourceRequests","defaultProps","AdminLayout","history","match","ConnectedHomePage","userLoans","NotFound","REQUEST_RESOURCE_REQUESTS","RECEIVE_RESOURCE_REQUESTS","REQUEST_RSRQ_DETAILS","RECEIVE_RSRQ_DETAILS","RSRQ_APPROVE","HANDLE_RSRQ_APPROVE","RSRQ_ACCEPT","HANDLE_RSRQ_ACCEPT","RSRQ_DECLINE","HANDLE_RSRQ_DECLINE","FETCH_RSRQ_RESOLUTION","HANDLE_RSRQ_RESOLUTION","RRQ_DELETE","RRQ_DELETE_SUCCESS","FETCH_RES","RECIEVE_RES","CLEAR_RES_SEARCH","firmUrl","viewMap","getResourceRequestDetails","item","data","ViewSelector","views","activeViewKey","onViewChange","useState","currentViewKey","setViewKey","map","key","classes","classNames","selected","handleViewChange","alignNumber","number","precision","toFixed","toString","replace","wrapNegativeAndAlign","num","Math","abs","resourceRequestNumberTemplate","slice","dataImportSessionNumberTemplate","statusMap","requestTypeMap","ResourceRequestListItemAlt","requestType","createdOn","lastModifiedOn","initiatedBy","initiatedFor","onDoubleClick","onDelete","processedBy","data-item-id","moment","format","fromNow","fullName","organizationName","ResourceRequestList","onItemDoubleClick","onItemDelete","resourceRequestViews","ResourceRequestView","state","viewKey","setState","handleRefresh","onRefresh","isItemsRequested","lg","style","display","justifyContent","alignItems","shape","size","ReloadOutlined","paddingTop","indicator","LoadingOutlined","spin","length","image","Empty","PRESENTED_IMAGE_SIMPLE","description","ghost","userProfile","logoAside","navigation","userProfileAside","Navigation","items","index","label","navLinkProps","userHeaderLabels","labelsLinks","loans","investments","statements","ProfileMenu","adminNavItems","listResourceRequests","params","deleteResourceRequest","delete","isRequested","currentView","useEffect","currentTarget","push","routeBuilder","resourceRequestDetails","UserDetailsCard","userDetails","emailAddress","registeredOn","isAdmin","city","county","loanNodes","loan","name","investmentNodes","investment","htmlFor","color","userAccountLoans","ResourceRequestCard","requestDetails","acceptedOn","completedOn","resourceNumber","remark","TextArea","Input","ResourceRequestControlPanel","declineText","handleDeclineTextChange","e","value","target","handleDecline","onDecline","itemToLink","onDropSelection","onApprove","requestStatus","isOperationInProgress","actions","resourceType","CloseOutlined","rows","text","onChange","BestMatchItem","onItemSelected","numberParts","split","RegExp","nameParts","toLowerCase","Search","viewKeyMap","BestMatchList","searchBy","searchString","highlight","handleSearchChange","listRes","onSearch","searchText","clearSearch","onMatchSelected","resources","isLoading","active","matches","ApprovedRequestDetails","handleRollback","rollbackRequest","retrieveRequestResolution","resolution","CheckOutlined","linkedWith","eventId","message","success","ResourceRequestDetailsPage","selectedItem","handleGoBack","goBack","handleMatchSelected","filtered","filter","handleApprove","approveRequest","declineRequest","handleAccept","acceptRequest","resolveStatusBlock","itemDetails","retireveItemDetails","isDataReady","onAccept","itemId","payload","FETCH__USER_PROFILE","FETCH__USER_PROFILE__FAIL","FETCH__USER_PROFILE__SUCCESS","FETCH__USER_PROFILE_SETTINGS","FETCH__USER_PROFILE_SETTINGS__FAIL","FETCH__USER_PROFILE_SETTINGS__SUCCESS","UPDATE__USER_PROFILE_SETTINGS","UPDATE__USER_PROFILE_SETTINGS__SUCCESS","UPDATE__USER_PROFILE_SETTINGS__FAIL","RESET__USER_PROFILE_SETTINGS","fetchUserProfile","FETCH__LOAN","FETCH__LOAN__SUCCESS","FETCH__LOAN__FAIL","UserData","email","currentUserEmail","isUserProfileRequested","actualizationDate","profileEmailAddress","loadProfile","isAllLoading","currentRoutes","userAccountInvestments","userAccountStatus","userAccountStatements","userInvestments","userRequestStatus","userStatements","userAccountRoutes","navigationItems","Object","keys","Date","getFullYear","Column","Table","LoanLinesTable","indexedLines","lines","amount","transactionInterest","transactionPrincipal","dataSource","pagination","pageSize","hideOnSinglePage","showSizeChanger","dataIndex","val","some","line","reference","loanDetails","fetchLoan","details","isLoanDetailsFetched","isLoanDetailsFetchFailed","homeLink","prefix","originalLoanAmount","principalBalance","interestBalance","scheduledPayment","suffix","rate","FETCH__USER_LIST","FETCH__USER_LIST__SUCCESS","FETCH__USER_LIST__FAIL","PROMOTE__USER","PROMOTE__USER__SUCCESS","PROMOTE__USER__FAIL","REVOKE__ADMIN_RIGHTS","REVOKE__ADMIN_RIGHTS__SUCCESS","REVOKE__ADMIN_RIGHTS__FAIL","FETCH__ADMIN_USER_PROFILE","FETCH__ADMIN_USER_PROFILE__SUCCESS","FETCH__ADMIN_USER_PROFILE__FAIL","CLEAR__ADMIN_USER_PROFILE","FETCH__USER_LOANS","FETCH__USER_LOANS__SUCCESS","FETCH__USER_LOANS__FAIL","FETCH__USER_ACCOUNTS","FETCH__USER_ACCOUNTS__SUCCESS","FETCH__USER_ACCOUNTS__FAIL","FETCH__USER_REQUESTS","FETCH__USER_REQUESTS__SUCCESS","FETCH__USER_REQUESTS__FAIL","CONFIRM__PROFILE__USER_EMAIL","CONFIRM__PROFILE__USER_EMAIL__SUCCESS","CONFIRM__PROFILE__USER_EMAIL__FAIL","UNLINK__LOAN","UNLINK__LOAN__SUCCESS","UNLINK__LOAN__FAIL","UNLINK__INVESTMENT","UNLINK__INVESTMENT__SUCCESS","UNLINK__INVESTMENT__FAIL","DELETE__PROFILE__RESOURCE_REQUEST","DELETE__PROFILE__RESOURCE_REQUEST__SUCCESS","DELETE__PROFILE__RESOURCE_REQUEST__FAIL","Highlight","headerText","contentText","action","LoanListBasic","onUnlink","userAccountLoanDetails","InvestmentListBasic","userAccountInvestmentDetails","statusColorMap","ResourceRequestListBasic","request","LoginHistoryBasic","logins","loginDate","adminUserProfile","fetchAdminUserProfile","getState","clearAdminUserProfile","fetchUserInvestments","fetchUserLoans","fetchUserRequests","promoteToAdminAsync","demoteToRegularAsync","confirmEmail","patch","unlinkLoan","unlinkInvestment","deleteUser","profile","isProfileFetched","isLoansFetched","isInvestmentsFetched","isRequestsFetched","currentUserId","isUserDeletionInProgress","accountTypeActions","emailStatusActions","isEmailConfirmed","userLogins","FETCH__USERS_RRQ_LIST","FETCH__USERS_RRQ_LIST__SUCCESS","FETCH__USERS_RRQ_LIST__FAIL","CREATE__RRQ","CREATE__RRQ__SUCCESS","CREATE__RRQ__FAIL","fetchUsersRequestsByUserId","fetchUsersRequests","createResourceRequest","AddResourceModal","numbers","handleNumberChange","handleNumberDelete","itemIndex","handleAddMore","handleOk","onSubmit","handleAfterClose","visible","onCancel","numberPlaceholderText","okText","destroyOnClose","confirmLoading","afterClose","onOk","data-key","placeholder","allowClear","DeleteOutlined","loanListLabels","addResource","descripion","statisticCommonProps","LoanList","isCreateResourceRequestInProgress","userResourceRequests","isLoanRequestModalVisible","setLoanRequestModalVisible","toggleModal","handleRequestsSubmit","uniqueNumbers","Set","promises","loanNumber","Promise","all","originalAmount","paymentAmount","QuestionOutlined","investmentListLabels","InvestmentList","isAddResourceModalVisible","investmentNumber","investmentDetails","assets","rowKey","record","userAccountAssetDetails","assetDetails","FETCH__INVESTMENT_DETAILS","FETCH__INVESTMENT_DETAILS__SUCCESS","FETCH__INVESTMENT_DETAILS__FAIL","FETCH__ACCOUNT_STATEMENTS","FETCH__ACCOUNT_STATEMENTS__SUCCESS","FETCH__ACCOUNT_STATEMENTS__FAIL","REQUEST__MOVE_TO_VAULT","REQUEST__MOVE_TO_VAULT_SUCCESS","REQUEST__MOVE_TO_VAULT_FAIL","DOWNLOAD__VAULT_FILE","DOWNLOAD__VAULT_FILE__SUCCESS","DOWNLOAD__VAULT_FILE__FAIL","FETCH__USER_STATEMENTS","FETCH__USER_STATEMENTS__SUCCESS","FETCH__USER_STATEMENTS__FAIL","filenameRegex","downloadFile","fileId","resolve","reject","responseType","timeout","filename","exec","FileSaver","saveAs","AssetTable","urlContext","isSymbolExists","InfoCircleOutlined","date","AccountActivityTable","keyedActivities","activities","StatementTable","isDownloadInfoVisible","handleVisibleChange","renderDownloadInstructions","showIcon","onMoveToVault","onDownloadFile","onRefreshTable","fileIdMoving","downloadFileId","statementsKeyed","st","content","onVisibleChange","justifyItems","isInVault","isDownloadPreparing","buttonText","fetchInvestmentDetails","moveToVault","updateStatements","isInvestmentDetailsFetched","isInvestmentDetailsFetchFailed","isStatementUpdateRequested","fileIdRequesed","backLink","loadInvestmentDetails","handleMoveToVault","a","FETCH__ASSET_DETAILS","FETCH__ASSET_DETAILS__SUCCESS","FETCH__ASSET_DETAILS__FAIL","AssetStatementsTable","keyedStatements","position","fetchAssetDetails","isAssetDetailsFetched","isAssetDetailsFetchFailed","investmentLink","investmentName","statuses","isUsersRequestsFetched","isUsersRequestFetchFailed","itemsActive","resourceRequestStatuses","onRow","event","Modal","info","author","avatar","datetime","ResourceRequestStatusPage","VaultInvestmentView","investmentView","accountNumber","accountName","onDownloadClick","statement","isDownloadAvailable","DownloadOutlined","statementDate","StatementsVault","handleFileDownload","fetchUsersStatements","isUserStatementsRequested","every","StatementsVaultPage","FETCH_STATES","FETCH_STATES_SUCCESS","FETCH_STATES_FAILED","FETCH_CITIES","FETCH_CITIES_SUCCESS","FETCH_CITIES_FAILED","fetchStates","states","registerFormLabels","validation","tooShort","tooLong","required","wrongFormat","password","minLength","maxLength","capitalLetterRequired","digitReuired","specialCharacterRequired","confirmPassword","sameAsPassword","controls","organization","buttons","backToLogin","register","goToLogin","result","initialFormValues","undefined","profileSettingsSchema","Yup","min","notRequired","max","test","parent","oneOf","FormControl","Typography","Text","caption","touched","error","ExclamationCircleOutlined","Password","Option","Select","geo","fetchUserProfileSettings","updateProfileSettings","settings","resetProfileSettings","isStatesRequested","isStatesRequestFailed","isSettingsRequested","isSettingsUpdateInProgress","formValues","setFormValues","formik","useFormik","initialValues","enableReinitialize","validationSchema","values","handleSubmit","errors","getFieldProps","showSearch","filterOption","inputValue","option","includes","width","onBlur","setFieldValue","autoComplete","htmlType","filterFlags","account","filterLabelsMap","UsersSearchPanel","onCheckAll","onQueryChanged","onScopeChanged","onUncheckAll","searchQuery","searchScope","filterValue","i","checked","enterButton","CityFilterPanel","handleFilterOption","handleStateChange","fetchCities","isCitiesRequested","isCitiesRequestFailed","cities","onApplyFilter","onCityChanged","optionLabelProp","UsersListPageable","rowIndex","onUserDoubleClick","itemsPerPage","itemsTotal","onPageChanged","onPromoteUser","onRevokeAccess","pagingProps","defaultPageSize","total","lastLoginDate","cancelText","onConfirm","userProfileAdmin","userViews","UsersView","filterApplied","cityName","userActions","promoteUser","revokeAccess","handleQueryChange","handleCityChange","handleSearchParamsChanged","searchOptions","fetchUsers","handlePageChange","page","handleSearchCheckAll","handleSearchUncheckAll","handleSearchScopeChanged","handleSearchQueryChanged","handleQueryClear","handleCityClear","handlePromote","hideProgress","isSuccess","handleRevoke","handleUserDoubleClick","userManagement","isUsersFetched","pageInfo","closable","onClose","itemsCount","UserManagementPage","FETCH__SESSIONS","FETCH__SESSIONS__SUCCESS","FETCH__SESSIONS__FAILED","FETCH__SESSION_JOBS","FETCH__SESSION_JOBS__SUCCESS","FETCH__SESSION_JOBS__FAIL","START__SESSION","START__SESSION__SUCCESS","START__SESSION__FAIL","UPDATE__SELECTED_SESSION","CLEAR__SELECTED_SESSION","CREATE__SESSION","CREATE__SESSION__SUCCESS","CREATE__SESSION__FAIL","CANCEL__SESSION","CANCEL__SESSION__SUCCESS","CANCEL__SESSION__FAIL","fetchDataImportSessions","fetchDataImportJobsBySessionId","clearSelectedSession","statusLabelMap","DataImoprtSessionListItem","handleClick","session","descriptionContent","descriptionClasses","DataImportSessionsList","handleItemClick","onSessionSelectionChanged","selectedSession","that","onStartSession","dataImportSessions","FETCH__DATAIMPORTFILES","FETCH__DATAIMPORTFILES__SUCCESS","FETCH__DATAIMPORTFILES__FAIL","FileItem","fileInfo","avatarStyle","backgroundColor","uploaded","FileOutlined","fileName","Dragger","Upload","fileInfos","isUploaded","UploadFilesStep","files","importJobTypeToFileIdMap","processUploadedFilesList","filesUploaded","forEach","getOwnPropertyNames","uploadedFiles","isNextStepAvailable","onAllFilesUploaded","nameLowercased","onNextClick","dragger1Props","multiple","file","fileList","handleFileUploaded","InboxOutlined","indexOf","importStageKeyProvider","join","sessionStatuses","importStages","steps","dataImportJobType","importJobToBadgeStatusMap","importJobToBadgeCaptionMap","DataImportStep","step","currentJobMap","currentJobStatus","DataImportStage","stage","DataImportProgressStep","percentage","refreshJobs","handleStartSessionClick","onBackClick","onAllJobsCompleted","sessionJobs","isStartSessionRequested","canStartSession","isSessionInProgress","sessionJobMap","fromEntries","jobType","completedItemsCount","newPercentage","round","percent","DataImportResultStep","Step","Steps","DataImportWizard","handleAllFilesUploaded","fetchDataImportFiles","handleNextStepClick","currentStep","handlePreviousStepClick","handleSessionStart","startSession","handleAllJobsCompleted","handleCloseClick","handleCancelSession","cancelSession","dataImportFiles","isItemsFetched","stepContent","current","updateSelectedSession","createDataImportSession","isSessionsFetched","AuthLayout","path","loginFormLabels","empty","loginFailed","forgotPassword","logIn","registerMessage","LoginSchema","username","isTokenRequested","isTokenRequestFailed","LoginPage","loginImg","formInitialValues","registerSchema","resetRegisterState","isRegisterRequested","isRegisterFailed","registerAttempts","RegisterPage","registrationImg","restorePasswordLabels","resetPassword","restorePasswordSchema","resetResetPasswordState","isResetPasswordRequested","isResetPasswordFailed","resetPasswordAttempts","tabIndex","ForgotPasswordPage","forgotPasswordImg","ForgotPassword","confirmEmailLabels","fail","resetConfirmEmailState","isConfirmEmailRequested","isConfirmEmailRequestFailed","confirmEmailAttemptsCount","urlParams","URLSearchParams","ConfirmEmailPage","ConfirmEmailImg","ConfirmEmail","setNewPasswordLabels","invalidTokenDescription","changePassword","resetPasswordSchema","MODE_LOADER","MODE_VERIFICATION_FAILED","MODE_PASSWORD_CHANGE_FORM","MODE_PASSWORD_CHANGE__SUCCESS","MODE_PASSWORD_CHANGE__FAIL","verifyChangePasswordToken","resetChangePasswordState","isVerifyChangePasswordTokenRequested","isVerifyChangePasswordTokenRequestFailed","isChangePasswordRequested","isChangePasswordRequestFailed","changePasswordAttempts","mode","ResetPasswordPage","resetPasswordImg","ResetPassword","resourceRequestId","AppRouting","AdminUserProfilePage","Boolean","hostname","localStorageTokenKey","defaultState","isUserDeletionFailed","initDefaultState","localStorage","getItem","JSON","parse","atob","exp","uniqueIdentifier","setUTCSeconds","getTime","removeItem","err","processToken","setItem","clearAuthData","userTokenPart","isUserProfileRequestFailed","isSettingsRequestFailed","isSettingsUpdateFailed","isUsersFetchFailed","isPromoteUserRequested","isPromoteUserFailed","isRevokeAccessRequested","isRevokeAccessFailed","isCreateResourceRequestFailed","lastUpdated","isStatementUpdateFailed","isMoveToVaultRequested","isMoveToVaultFailed","isDownloadRequested","isDownloadFailed","isUserStatementsRequestFailed","isItemsFetchFailed","isJobsFetched","isJobsFetchFailed","isStartSessionRequestFailed","isCreateNewRequested","isCreateNewRequestFailed","isCancelSessionRequested","isCancelSessionFailed","activeSession","find","isProfileFetchFailed","isLoansFetchFailed","isInvestmentsFetchFailed","isRequestsFetchFailed","isConfirmEmailFailed","isUnlinkLoanFetched","isUnlinkLoanFailed","isUnlinkInvestmentFetched","isUnlinkInvestmentFailed","isDeleteResourceRequestFetched","isDeleteResourceRequestFailed","fetchStatementScanFailed","startingStatementScanFailed","configureStore","initialState","reducers","middleware","thunk","routerMiddleware","enhancers","createStore","combineReducers","router","connectRouter","rootReducer","compose","applyMiddleware","initialReduxState","rootElement","getElementById","ReactDOM","store","navigator","serviceWorker","getRegistrations","registrations","unregister"],"mappings":"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","file":"static/js/main.77423610.chunk.js","sourcesContent":["import { createBrowserHistory } from 'history';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nexport default createBrowserHistory({ basename: baseUrl });","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { defaultRoutes } from '.';\n\nconst AuthenticatedRoute = ({\n component: Component,\n render,\n user,\n ...rest\n}) => (\n (\n !user.token\n ? \n : !Component && render\n ? render(props)\n : \n )}\n />\n);\n\nexport default connect(({ user }) => ({ user }))(AuthenticatedRoute);\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { defaultRoutes } from './';\n\nconst AuthorizedRoute = ({\n render,\n user,\n requiredRole,\n ...rest\n}) => (\n (\n !user.token\n ? \n : user.role !== requiredRole\n ? \n : render(props)\n )}\n />\n);\n\nAuthorizedRoute.propTypes = {\n requiredRole: PropTypes.string.isRequired,\n user: PropTypes.shape({\n token: PropTypes.string,\n role: PropTypes.string\n })\n};\n\nexport default connect(({ user }) => ({ user }))(AuthorizedRoute);\n","export const adminRole = 'admin';\r\nexport const userRole = 'user';","export const actionTemplate = (type) => ({ type });\r\n\r\nexport const authHeaders = (token) => ({ 'Authorization': `Bearer ${token}` });\r\n\r\nexport const userAndAuthHeaders = (token, userId) => ({ ...authHeaders(token), UserId: userId });","export const baseUrl =\n typeof window !== 'undefined'\n ? window.location.origin\n : 'https://localhost';\n\nconst authApiPrefix = `${baseUrl}/api/auth`;\n\nexport const authorizedRequestHeaders = (token) => ({\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n});\n\nexport const authEndpoints = {\n login: () => (`${authApiPrefix}/login`),\n register: () => (`${authApiPrefix}/register`),\n resetPassword: () => (`${authApiPrefix}/resetpassword`),\n confirmEmail: () => (`${authApiPrefix}/confirmemail`),\n verifyChangePasswordToken: () => (`${authApiPrefix}/verifychangepasswordtoken`),\n changePassword: () => (`${authApiPrefix}/changepassword`),\n}\n\nexport const geoEndpoints = {\n states: () => (`${baseUrl}/api/states`),\n cities: (stateId) => (`${baseUrl}/api/states/${stateId}/cities`),\n}\n\nexport const usersEndpoints = {\n list: (skip, limit, search, cityId, view) => {\n let requestUrl = `${baseUrl}/api/users?skip=${skip}&limit=${limit}&preDefinedFilter=${view}`;\n\n if (!!search && !!search.query) {\n requestUrl = `${requestUrl}&searchOptions=${search.scope}&search=${search.query}`;\n }\n\n if (!!cityId) {\n requestUrl = `${requestUrl}&cityId=${cityId}`;\n }\n\n return requestUrl\n },\n promote: () => (`${baseUrl}/api/users/promote`),\n revoke: () => (`${baseUrl}/api/users/revoke`),\n delete: (userId) => (`${baseUrl}/api/users/${userId}`),\n}\n\nexport const dataImportEndpoints = {\n dataImport: () => (`${baseUrl}/api/files/dataimport`),\n}\n\nexport const userProfileEndpoints = {\n get: () => (`${baseUrl}/api/userProfile`),\n settings: () => (`${baseUrl}/api/users/profile`),\n}\n\nexport const resourceRequestEndpoints = {\n root: () => `${baseUrl}/api/resourceRequest`\n}\n\nexport const loanDetailsEndpoints = {\n get: (loanId) => (`${baseUrl}/api/loans/${loanId}`),\n}\n\nexport const investmentDetailsEndpoint = {\n get: investmentId => (`${baseUrl}/api/investments/${investmentId}`),\n assetDetails: (investmentId, assetId) => (`${baseUrl}/api/investments/${investmentId}/assets/${assetId}`),\n accountStatements: investmentId => (`${baseUrl}/api/investments/${investmentId}/accountstatements`),\n}\n\nexport const statementEndpoints = {\n moveToVault: statementId => (`${baseUrl}/api/accountstatements/${statementId}/movetovaultrequest`),\n downloadStatement: statementId => (`${baseUrl}/api/accountstatements/${statementId}/downloadFileRequest`),\n userStatements: () => (`${baseUrl}/api/statements`),\n scanRepository: () => (`${baseUrl}/api/accountstatements/scanRepository`)\n}\n\nexport const dataImportSessionEndpoints = {\n list: () => (`${baseUrl}/api/dataimportsessions`),\n sessionJobs: (sessionId) => (`${baseUrl}/api/dataimportsessions/${sessionId}/jobs`),\n startSession: (sessionId) => (`${baseUrl}/api/dataimportsessions/${sessionId}/start`),\n createSession: () => (`${baseUrl}/api/dataimportsessions`),\n cancelSession: (sessionId) => (`${baseUrl}/api/dataimportsessions/${sessionId}/cancel`)\n}\n\nexport const dataImportFilesEndpoints = {\n listBySessionId: (sessionId) => (`${baseUrl}/api/dataimportfiles?sessionId=${sessionId}`),\n};\n\nexport const adminUserProfileEndpoints = {\n profile: (userId) => (`${baseUrl}/api/userprofile/${userId}/extended`),\n loans: (userId) => (`${baseUrl}/api/userprofile/${userId}/loans`),\n investments: (userId) => (`${baseUrl}/api/userprofile/${userId}/investments`),\n requests: (userId) => (`${baseUrl}/api/userprofile/${userId}/resourcerequests`),\n confirmEmail: (userId) => (`${baseUrl}/api/userprofile/${userId}/confirmEmail`),\n unlinkLoan: (userId, loanId) => (`${baseUrl}/api/userprofile/${userId}/loans/${loanId}/unlink`),\n unlinkInvestment: (userId, investmentId) => (`${baseUrl}/api/userprofile/${userId}/investments/${investmentId}/unlink`),\n deleteResourceRequest: (userId, requestId) => (`${baseUrl}/api/userprofile/${userId}/resourcerequests/${requestId}`),\n};\n\nexport const syncJobsEndpoints = {\n getActiveRepositoryScanJob: () => (`${baseUrl}/api/syncjobs/repository-scan`),\n};\n","export const FETCH__STATEMENT_SCAN_STATUS = 'FETCH__STATEMENT_SCAN_STATUS';\r\nexport const FETCH__STATEMENT_SCAN_STATUS__SUCCESS = 'FETCH__STATEMENT_SCAN_STATUS__SUCCESS';\r\nexport const FETCH__STATEMENT_SCAN_STATUS__FAIL = 'FETCH__STATEMENT_SCAN_STATUS__FAIL';\r\n\r\nexport const START__STATEMENTS_SCAN = 'START__STATEMENTS_SCAN';\r\nexport const START__STATEMENTS_SCAN__SUCCESS = 'START__STATEMENTS_SCAN__SUCCESS';\r\nexport const START__STATEMENTS_SCAN__FAIL = 'START__STATEMENTS_SCAN__FAIL';","export const FETCH_USER_TOKEN = 'FETCH_USER_TOKEN';\nexport const FETCH_USER_TOKEN__SUCCESS = 'FETCH_USER_TOKEN__SUCCESS';\nexport const FETCH_USER_TOKEN__FAILED = 'FETCH_USER_TOKEN__FAILED';\n\nexport const REGISTER_USER = 'REGISTER_USER';\nexport const REGISTER_USER__SUCCESS = 'REGISTER_USER__SUCCESS';\nexport const REGISTER_USER__FAILED = 'REGISTER_USER__FAILED';\n\nexport const RESTORE_PASSWORD = 'RESTORE_PASSWORD';\nexport const RESTORE_PASSWORD__SUCCESS = 'RESTORE_PASSWORD__SUCCESS';\nexport const RESTORE_PASSWORD__FAILED = 'RESTORE_PASSWORD__FAILED';\n\nexport const RESET_RESETPASSWORDSTATE = 'RESET_RESETPASSWORDSTATE';\nexport const RESET_REGISTERSTATE = 'RESET_REGISTERSTATE';\n\nexport const CONFIRM_EMAIL = 'CONFIRM_EMAIL';\nexport const CONFIRM_EMAIL__SUCCESS = 'CONFIRM_EMAIL__SUCCESS';\nexport const CONFIRM_EMAIL__FAILED = 'CONFIRM_EMAIL__FAILED';\n\nexport const RESET_CONFIRMEMAILSTATE = 'RESET_CONFIRMEMAILSTATE';\n\nexport const VERIFY_RESET_PASSWORD_TOKEN = 'VERIFY_RESET_PASSWORD_TOKEN';\nexport const VERIFY_RESET_PASSWORD_TOKEN__SUCCESS = 'VERIFY_RESET_PASSWORD_TOKEN__SUCCESS';\nexport const VERIFY_RESET_PASSWORD_TOKEN__FAILED = 'VERIFY_RESET_PASSWORD_TOKEN__FAILED';\n\nexport const CHANGE_PASSWORD = 'CHANGE_PASSWORD';\nexport const CHANGE_PASSWORD__SUCCESS = 'CHANGE_PASSWORD__SUCCESS';\nexport const CHANGE_PASSWORD__FAILED = 'CHANGE_PASSWORD__FAILED';\n\nexport const RESET_CHANGEPASSWORDSTATE = 'RESET_CHANGEPASSWORDSTATE';\n\nexport const STORE_EMAIL = 'STORE_EMAIL';\nexport const LOG_OUT = 'LOG_OUT';\n\nexport const DELETE_USER = 'DELETE_USER';\nexport const DELETE_USER__SUCCESS = 'DELETE_USER__SUCCESS';\nexport const DELETE_USER__FAIL = 'DELETE_USER__FAIL';\n","import React from 'react';\n\nimport './_dashboardCard.less';\n\nconst DashboardCard = ({ title, children }) => {\n return (\n
\n

{title}

\n
{children}
\n
\n );\n};\n\nexport default DashboardCard;\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { startRepositoryScan, fetchStatementScanStatus } from '../store/dashboard/actionCreators';\nimport { Result, Spin, Button } from 'antd';\nimport { ScanOutlined } from '@ant-design/icons';\n\nimport DashboardCard from '../components/DashboardCard/DashboardCard';\n\nimport './styles/_adminDashboard.scss';\n\nclass AdminDashboardPage extends PureComponent {\n intervalId = 0;\n\n componentDidMount() {\n let {\n user: {\n token\n },\n fetchStatementScanStatus\n } = this.props;\n\n fetchStatementScanStatus(token).then(() => {\n this.intervalId = setInterval(() => {\n let {\n dashboard: {\n isScanInProgress\n },\n } = this.props;\n\n fetchStatementScanStatus(token);\n\n !isScanInProgress && clearInterval(this.intervalId);\n },\n 5000);\n });\n };\n\n componentWillUnmount() {\n !!this.intervalId && clearInterval(this.intervalId);\n };\n\n handleStartScan = () => {\n let {\n user: {\n token\n },\n startRepositoryScan,\n fetchStatementScanStatus\n } = this.props;\n\n startRepositoryScan(token).then(() => {\n fetchStatementScanStatus(token);\n\n this.intervalId = setInterval(() => {\n let {\n dashboard: {\n isScanInProgress\n },\n } = this.props;\n\n fetchStatementScanStatus(token);\n\n !isScanInProgress && clearInterval(this.intervalId);\n },\n 5000);\n });\n };\n\n render() {\n let {\n dashboard: {\n fetchStatementScanStatus,\n isScanInProgress,\n isStartingStatementsScan\n }\n } = this.props;\n\n let tipText = fetchStatementScanStatus\n ? 'Checking job status...'\n : isScanInProgress\n ? 'Scanning Statements Repository...'\n : '';\n\n return (\n
\n \n {\n\n }\n \n }\n title=\"Want to see new statements on the portal?\"\n subTitle=\"Please click on a button down below to achieve that. It might take up to 15 minutes. Process status will be displayed here.\"\n extra={\n \n Start Scan\n }\n />\n \n \n
\n );\n }\n};\n\nexport default connect (\n ({ user, dashboard }) => ({ user, dashboard }),\n { startRepositoryScan, fetchStatementScanStatus }\n)(AdminDashboardPage);","import axios from 'axios';\r\nimport { authHeaders, actionTemplate } from '../shared';\r\nimport { statementEndpoints, syncJobsEndpoints } from '../../const/backend';\r\nimport {\r\n FETCH__STATEMENT_SCAN_STATUS,\r\n FETCH__STATEMENT_SCAN_STATUS__FAIL,\r\n FETCH__STATEMENT_SCAN_STATUS__SUCCESS,\r\n START__STATEMENTS_SCAN,\r\n START__STATEMENTS_SCAN__FAIL,\r\n START__STATEMENTS_SCAN__SUCCESS\r\n} from './actions';\r\nimport { LOG_OUT } from '../user/actions';\r\n\r\nexport const startRepositoryScan = (token) => dispatch => {\r\n dispatch(actionTemplate(START__STATEMENTS_SCAN));\r\n\r\n return axios.post(\r\n statementEndpoints.scanRepository(),\r\n {},\r\n { headers: { ...authHeaders(token) }}\r\n ).then((response) => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(START__STATEMENTS_SCAN__SUCCESS));\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(START__STATEMENTS_SCAN__FAIL));\r\n });\r\n};\r\n\r\nexport const fetchStatementScanStatus = (token) => dispatch => {\r\n dispatch(actionTemplate(FETCH__STATEMENT_SCAN_STATUS));\r\n\r\n return axios.get(\r\n syncJobsEndpoints.getActiveRepositoryScanJob(),\r\n { headers: { ...authHeaders(token) }}\r\n ).then((response) => {\r\n if (response.status === 200) {\r\n dispatch({ \r\n ...actionTemplate(FETCH__STATEMENT_SCAN_STATUS__SUCCESS),\r\n isScanInProgress: true,\r\n });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n if (response.status === 404) {\r\n dispatch({ \r\n ...actionTemplate(FETCH__STATEMENT_SCAN_STATUS__SUCCESS),\r\n isScanInProgress: false,\r\n });\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__STATEMENT_SCAN_STATUS__FAIL));\r\n });\r\n};\r\n\r\n","import axios from 'axios';\nimport {\n FETCH_USER_TOKEN,\n FETCH_USER_TOKEN__SUCCESS,\n FETCH_USER_TOKEN__FAILED,\n REGISTER_USER,\n REGISTER_USER__SUCCESS,\n REGISTER_USER__FAILED,\n RESTORE_PASSWORD,\n RESTORE_PASSWORD__SUCCESS,\n RESTORE_PASSWORD__FAILED,\n RESET_RESETPASSWORDSTATE,\n RESET_REGISTERSTATE,\n CONFIRM_EMAIL,\n CONFIRM_EMAIL__SUCCESS,\n CONFIRM_EMAIL__FAILED,\n RESET_CONFIRMEMAILSTATE,\n VERIFY_RESET_PASSWORD_TOKEN,\n VERIFY_RESET_PASSWORD_TOKEN__SUCCESS,\n VERIFY_RESET_PASSWORD_TOKEN__FAILED,\n CHANGE_PASSWORD,\n CHANGE_PASSWORD__SUCCESS,\n CHANGE_PASSWORD__FAILED,\n RESET_CHANGEPASSWORDSTATE,\n LOG_OUT,\n DELETE_USER,\n DELETE_USER__SUCCESS,\n DELETE_USER__FAIL\n} from './actions';\nimport { authEndpoints, usersEndpoints, authorizedRequestHeaders } from '../../const/backend';\n\nexport const login = (username, password) => dispatch => {\n dispatch({ type: FETCH_USER_TOKEN });\n\n axios.post(\n authEndpoints.login(), {\n email: username,\n password,\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ type: FETCH_USER_TOKEN__SUCCESS, token: response.data })\n }\n }).catch(response => {\n dispatch({ type: FETCH_USER_TOKEN__FAILED });\n })\n};\n\nexport const register = (data) => dispatch => {\n dispatch({ type: REGISTER_USER});\n\n axios.post(\n authEndpoints.register(), {\n ...data\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ type: REGISTER_USER__SUCCESS });\n }\n }).catch(response => {\n dispatch({ type: REGISTER_USER__FAILED })\n });\n}\n\nexport const resetPassword = (email) => dispatch => {\n dispatch({ type: RESTORE_PASSWORD });\n\n axios.post(\n authEndpoints.resetPassword(), {\n email\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ type: RESTORE_PASSWORD__SUCCESS });\n }\n }).catch(response => {\n dispatch({ type: RESTORE_PASSWORD__FAILED });\n });\n}\n\nexport const resetResetPasswordState = () => dispatch => {\n dispatch({ type: RESET_RESETPASSWORDSTATE });\n}\n\nexport const resetRegisterState = () => dispatch => {\n dispatch({ type: RESET_REGISTERSTATE });\n}\n\nexport const confirmEmail = (id, token) => dispatch => {\n dispatch({ type: CONFIRM_EMAIL });\n\n axios.post(\n authEndpoints.confirmEmail(), {\n id,\n token,\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ type: CONFIRM_EMAIL__SUCCESS });\n }\n }).catch(response => {\n dispatch({ type: CONFIRM_EMAIL__FAILED });\n });\n}\n\nexport const resetConfirmEmailState = () => dispatch => {\n dispatch({ type: RESET_CONFIRMEMAILSTATE });\n}\n\nexport const verifyChangePasswordToken = (id, token) => dispatch => {\n dispatch({ type: VERIFY_RESET_PASSWORD_TOKEN });\n\n axios.post(\n authEndpoints.verifyChangePasswordToken(), {\n id,\n token\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ type: VERIFY_RESET_PASSWORD_TOKEN__SUCCESS });\n }\n }).catch(response => {\n dispatch({ type: VERIFY_RESET_PASSWORD_TOKEN__FAILED });\n });\n}\n\nexport const changePassword = (id, token, password) => dispatch => {\n dispatch({ type: CHANGE_PASSWORD });\n\n axios.post(\n authEndpoints.changePassword(), {\n id,\n token,\n password\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ type: CHANGE_PASSWORD__SUCCESS });\n }\n }).catch(response => {\n dispatch({ type: CHANGE_PASSWORD__FAILED });\n });\n}\n\nexport const resetChangePasswordState = () => dispatch => {\n dispatch({ type: RESET_CHANGEPASSWORDSTATE });\n}\n\nexport const logout = () => dispatch => {\n dispatch({ type: LOG_OUT });\n}\n\nexport const deleteUser = (token, userId) => dispatch => {\n dispatch({ type: DELETE_USER });\n\n return axios.delete(\n usersEndpoints.delete(userId),\n {\n headers: { ...authorizedRequestHeaders(token) }\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ type: DELETE_USER__SUCCESS });\n }\n\n if (response.status === 401) {\n dispatch({ type: LOG_OUT })\n }\n }).catch(response => {\n dispatch({ type: DELETE_USER__FAIL });\n });\n}\n","export default __webpack_public_path__ + \"static/media/TMF-logo-default-gold.2c2e20fc.svg\";","export default __webpack_public_path__ + \"static/media/Weslean_Impact_gold_navy.0d2391f2.svg\";","import React from 'react';\nimport classnames from 'classnames';\n\nimport './siteLogo.less';\n\nimport Logo from './TMF-logo-default-gold.svg';\nimport WiLogo from './Weslean_Impact_gold_navy.svg'\n\nconst SiteLogo = ({ className, isAnyWiAssets }) => {\n const rootClasses = classnames([className, 'site-logo_wrapper']);\n\n console.log(isAnyWiAssets);\n\n return (\n
\n \"website\n
\n );\n};\n\nexport default SiteLogo;\n","import React from 'react';\n\nimport './userLogo.less';\n\nconst SiteLogo = () => {\n return(\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n};\n\nexport default SiteLogo;\n","const mainHeaderLabels = {\r\n header: 'TMF Financial Portal',\r\n subHeader: 'Administration',\r\n userMenu: {\r\n editProfile: 'Edit Profile',\r\n logOut: 'Log Out'\r\n },\r\n links: {\r\n dashboard: 'Dashboard',\r\n users: 'Users',\r\n requests: 'Resource Requests',\r\n dataImport: 'Data Import'\r\n }\r\n}\r\n\r\nexport default mainHeaderLabels;","import React, { Component } from 'react';\nimport { NavLink, Link } from 'react-router-dom';\nimport { Dropdown, Menu } from 'antd';\nimport { routes } from '../../routing';\nimport PropTypes from 'prop-types';\nimport SiteLogo from '../../common/SiteLogo/SiteLogo';\nimport UserLogo from '../../common/UserLogo/UserLogo'\nimport mainHeaderLabels from '../../labels/main-header';\n\nimport './header.less';\n\nconst { Item, Divider } = Menu;\n\nexport class Header extends Component {\n render() {\n let { onEditProfile, onLogout } = this.props;\n const menu = (\n \n \n {mainHeaderLabels.userMenu.editProfile}\n \n \n \n {mainHeaderLabels.userMenu.logOut}\n \n \n );\n\n return (\n
\n
\n
\n \n \n \n

{mainHeaderLabels.subHeader}

\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nHeader.propTypes = {\n onEditProfile: PropTypes.func,\n onLogout: PropTypes.func,\n};\n\nHeader.defaultProps = {\n onEditProfile: () => {},\n onLogout: () => {},\n};\n","import React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { logout } from '../../store/user/actionCreators';\n\nimport { Header } from '../../components/Header/Header';\n\nimport './styles/admin-layout.scss';\n\nclass AdminLayout extends PureComponent {\n render() {\n let { component: Component, history, match, logout } = this.props;\n\n return (\n
\n
\n
\n \n
\n
\n );\n }\n}\n\nexport default connect(null, { logout })(AdminLayout);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\n\nimport { adminRole } from '../const/user';\nimport { routes } from '../routing';\nimport AdminDashboardPage from './AdminDashboardPage';\nimport AdminLayout from './layouts/AdminLayout';\n\nconst HomePage = ({ user, history, match }) => (\n user.role === adminRole\n ? \n : \n);\n\nexport const ConnectedHomePage = connect(({ user }) => ({ user }))(HomePage);\n","import React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { defaultRoutes } from '../routing';\r\n\r\nconst NotFound = () => ();\r\n\r\nexport default NotFound;","export const LOGIN_USER = 'LOGIN_USER';\r\n\r\nexport const FETCH_USER_TOKEN = 'FETCH_USER_TOKEN';\r\nexport const RECIEVE_USER_TOKEN = 'RECEIVE_USER_TOKEN';\r\n\r\nexport const REQUEST_RESOURCE_REQUESTS = 'REQUEST_RESOURCE_REQUESTS';\r\nexport const FETCH_RESOURCE_REQUESTS = 'FETCH_RESOURCE_REQUESTS';\r\nexport const RECEIVE_RESOURCE_REQUESTS = 'RECEIVE_RESOURCE_REQUESTS';\r\n\r\nexport const REQUEST_RSRQ_DETAILS = 'REQUEST_RSRQ_DETAILS';\r\nexport const RECEIVE_RSRQ_DETAILS = 'RECEIVE_RSRQ_DETAILS';\r\nexport const RSRQ_APPROVE = 'RSRQ_APPROVE';\r\nexport const HANDLE_RSRQ_APPROVE = 'HANDLE_RSRQ_APPROVE';\r\nexport const RSRQ_ACCEPT = 'RSRQ_ACCEPT';\r\nexport const HANDLE_RSRQ_ACCEPT = 'HANDLE_RSRQ_ACCEPT';\r\nexport const RSRQ_DECLINE = 'RSRQ_DECLINE';\r\nexport const HANDLE_RSRQ_DECLINE = 'HANDLE_RSRQ_DECLINE';\r\nexport const FETCH_RSRQ_RESOLUTION = 'FETCH_RSRQ_RESOLUTION';\r\nexport const HANDLE_RSRQ_RESOLUTION = 'HANDLE_RSRQ_RESOLUTION';\r\nexport const RRQ_ROLLBACK = 'RRQ_ROLLBACK';\r\nexport const RRQ_ROLLBACK__SUCCESS = 'RRQ_ROLLBACK__SUCCESS';\r\nexport const RRQ_ROLLBACK__FAIL = 'RRQ_ROLLBACK__FAIL';\r\nexport const RRQ_DELETE = 'RRQ_DELETE';\r\nexport const RRQ_DELETE_SUCCESS = 'RRQ_DELETE_SUCCESS';\r\n\r\nexport const FETCH_RES = 'FETCH_RES';\r\nexport const RECIEVE_RES = 'RECIEVE_RES';\r\nexport const CLEAR_RES_SEARCH = 'CLEAR_RES_SEARCH';","import {\r\n REQUEST_RESOURCE_REQUESTS,\r\n RECEIVE_RESOURCE_REQUESTS,\r\n REQUEST_RSRQ_DETAILS,\r\n RECEIVE_RSRQ_DETAILS,\r\n RSRQ_APPROVE,\r\n HANDLE_RSRQ_APPROVE,\r\n RSRQ_ACCEPT,\r\n HANDLE_RSRQ_ACCEPT,\r\n RSRQ_DECLINE,\r\n HANDLE_RSRQ_DECLINE,\r\n FETCH_RSRQ_RESOLUTION,\r\n HANDLE_RSRQ_RESOLUTION,\r\n RRQ_DELETE,\r\n RRQ_DELETE_SUCCESS\r\n} from './index';\r\nimport axios from 'axios';\r\nimport { message } from 'antd';\r\n\r\n\r\nconst firmUrl = window.location.origin;\r\nconst viewMap = {\r\n 'all': 0,\r\n 'completed': 1,\r\n 'open': 2,\r\n 'mine': 3\r\n};\r\n\r\nconst authHeaders = (token) => ({\r\n 'Authorization': `Bearer ${token}`\r\n});\r\n\r\nexport const listResourceRequests = (viewKey, token) => dispatch => {\r\n dispatch({ type: REQUEST_RESOURCE_REQUESTS });\r\n\r\n axios.get(\r\n `${firmUrl}/api/resourcerequest`, {\r\n params: {\r\n view: viewMap[viewKey]\r\n },\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({\r\n type: RECEIVE_RESOURCE_REQUESTS,\r\n items: response.data });\r\n }\r\n })\r\n}\r\n\r\nexport const getResourceRequestDetails = (id, token) => dispatch => {\r\n dispatch({ type: REQUEST_RSRQ_DETAILS });\r\n\r\n axios.get(\r\n `${firmUrl}/api/resourcerequest/${id}`, {\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({\r\n type: RECEIVE_RSRQ_DETAILS,\r\n item: response.data\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport const approveRequest = (id, resourceType, itemId, token) => dispatch => {\r\n dispatch({ type: RSRQ_APPROVE });\r\n\r\n axios.post(\r\n `${firmUrl}/api/resourcerequest/${id}/events`, {\r\n eventId: 2,\r\n payload: {\r\n itemId,\r\n resourceType\r\n }\r\n }, {\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ type: HANDLE_RSRQ_APPROVE })\r\n dispatch(getResourceRequestDetails(id, token));\r\n message.success('Request was sucessfully approved', 5);\r\n }\r\n });\r\n}\r\n\r\nexport const acceptRequest = (id, token) => dispatch => {\r\n dispatch({ type: RSRQ_ACCEPT });\r\n\r\n axios.post(\r\n `${firmUrl}/api/resourcerequest/${id}/events`, {\r\n eventId: 0\r\n }, {\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ type: HANDLE_RSRQ_ACCEPT });\r\n dispatch(getResourceRequestDetails(id, token));\r\n message.success('Request was successfully accepted', 5);\r\n }\r\n });\r\n}\r\n\r\nexport const rollbackRequest = (id, token) => dispatch => {\r\n dispatch({ type: RSRQ_ACCEPT });\r\n\r\n axios.post(\r\n `${firmUrl}/api/resourcerequest/${id}/events`, {\r\n eventId: 3\r\n }, {\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ type: HANDLE_RSRQ_ACCEPT });\r\n dispatch(getResourceRequestDetails(id, token));\r\n message.success('Request was successfully rolled back', 5);\r\n }\r\n });\r\n}\r\n\r\nexport const declineRequest = (id, message, token) => dispatch => {\r\n dispatch({ type: RSRQ_DECLINE });\r\n\r\n axios.post(\r\n `${firmUrl}/api/resourcerequest/${id}/events`, {\r\n eventId: 1,\r\n payload: { \r\n message: message \r\n }\r\n }, {\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ type: HANDLE_RSRQ_DECLINE });\r\n dispatch(getResourceRequestDetails(id, token));\r\n }\r\n });\r\n}\r\n\r\nexport const retrieveRequestResolution = (id, token) => dispatch => {\r\n dispatch({ type: FETCH_RSRQ_RESOLUTION });\r\n\r\n axios.get(\r\n `${firmUrl}/api/resourcerequest/${id}/resolution`, {\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({\r\n type: HANDLE_RSRQ_RESOLUTION,\r\n item: response.data\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport const deleteResourceRequest = (requestId, token) => dispatch => {\r\n dispatch({ type: RRQ_DELETE });\r\n\r\n return axios.delete(\r\n `${firmUrl}/api/resourcerequest/${requestId}`, {\r\n headers: { ...authHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ type: RRQ_DELETE_SUCCESS })\r\n }\r\n });\r\n}","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './ViewSelector.less';\n\nconst ViewSelector = (props) => {\n const { views, activeViewKey, onViewChange } = props;\n const [currentViewKey, setViewKey] = useState(activeViewKey);\n\n const handleViewChange = (key) => {\n onViewChange(key);\n setViewKey(key);\n };\n return (\n
\n {views.map(({ key, title }) => {\n let classes = classNames('view-selector--item', {\n selected: key === currentViewKey,\n });\n\n return (\n handleViewChange(key)} className={classes}>\n {title}\n \n );\n })}\n
\n );\n};\n\nViewSelector.propTypes = {\n views: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string,\n title: PropTypes.string,\n })\n ),\n onViewChange: PropTypes.func,\n activeViewKey: PropTypes.string,\n};\n\nViewSelector.defaultProps = {\n onViewChange: () => {},\n activeViewKey: '',\n};\n\nexport default ViewSelector;\n","export const alignNumber = (number, precision) => number.toFixed(precision).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n\r\nexport const wrapNegativeAndAlign = (num, precision = 2) => num >= 0\r\n ? `$${alignNumber(num, precision)}`\r\n : `($${alignNumber(Math.abs(num), precision)})`;\r\n\r\nexport const resourceRequestNumberTemplate = (requestId) =>(`RSRQ-${('000000'+requestId).slice(-7)}`);\r\n\r\nexport const dataImportSessionNumberTemplate = (requestId) =>(`DIS-${('000000'+requestId).slice(-7)}`);","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport moment from 'moment';\r\nimport { Tag, Button } from 'antd';\r\nimport { resourceRequestNumberTemplate } from '../../utility';\r\n\r\nconst statusMap = {\r\n '0': 'open',\r\n '1': 'accepted',\r\n '2': 'declined',\r\n '3': 'approved'\r\n}\r\n\r\nconst requestTypeMap = {\r\n '0': 'Loan',\r\n '1': 'Investment'\r\n}\r\n\r\nconst ResourceRequestListItemAlt = ({\r\n id,\r\n requestType,\r\n number,\r\n createdOn,\r\n status,\r\n lastModifiedOn,\r\n initiatedBy,\r\n initiatedFor,\r\n onDoubleClick,\r\n onDelete,\r\n processedBy,\r\n}) => {\r\n let rootClasses = classNames(\r\n 'rrq-list_item', {\r\n [`rrq-list_item--${statusMap[status]}`]: true\r\n }\r\n );\r\n\r\n return (\r\n
  • \r\n
    \r\n

    {resourceRequestNumberTemplate(id)} {requestTypeMap[requestType]}

    \r\n
    {`on ${moment(createdOn).format('MMMM Do YYYY')} (${moment(createdOn).fromNow()})`}
    \r\n
    {`by ${initiatedBy.fullName}`}
    \r\n
    \r\n
    \r\n

    Initiated for

    \r\n
    {initiatedFor.organizationName}
    \r\n
    {initiatedFor.fullName}
    \r\n
    \r\n
    \r\n

    Requested Number

    \r\n
    {number}
    \r\n
    \r\n
    \r\n

    Status

    \r\n {statusMap[status]}\r\n
    \r\n
    \r\n
    {`Last Updated ${moment(lastModifiedOn).fromNow()}`}
    \r\n
    {`on ${moment(lastModifiedOn).format('lll')} `}
    \r\n
    {`by ${processedBy ? processedBy.fullName : initiatedBy.fullName} `}
    \r\n
    \r\n
    \r\n \r\n
    \r\n
  • \r\n )\r\n}\r\n\r\nexport default ResourceRequestListItemAlt;","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport ResourceRequestListItemAlt from './ResourceRequestListItemAlt';\r\n\r\nconst ResourceRequestList = ({ resourceRequests, onItemDoubleClick, onItemDelete, view }) => {\r\n let rootClasses = classNames(\r\n 'rsrq-list', {\r\n [`rsrq-list--${view}`]: true\r\n }\r\n );\r\n\r\n return (\r\n
      \r\n {resourceRequests.map((item) => (\r\n \r\n ))}\r\n
    )\r\n};\r\n\r\nexport default ResourceRequestList;","import React, { Component, Fragment } from 'react';\nimport { Row, Col } from 'reactstrap';\nimport { Spin, Empty, Button } from 'antd';\nimport { LoadingOutlined, ReloadOutlined } from '@ant-design/icons';\nimport PropTypes from 'prop-types';\n\nimport ViewSelector from '../ViewSelector/ViewSelector';\nimport ResourceRequestList from './ResourceRequestList';\n\nimport './_resourceRequestView.scss';\n\nconst resourceRequestViews = [{\n key: 'open',\n title: 'Open'\n }, {\n key: 'mine',\n title: 'I\\'m working on'\n }, {\n key: 'completed',\n title: 'Completed'\n }, {\n key: 'all',\n title: 'All'\n }];\n\nclass ResourceRequestView extends Component {\n state = {\n currentViewKey: 'open'\n }\n\n handleViewChange = (viewKey) => {\n let { onViewChange } = this.props;\n\n this.setState({ currentViewKey: viewKey });\n onViewChange(viewKey);\n }\n\n handleRefresh = () => {\n let { onRefresh } = this.props;\n let { currentViewKey } = this.state;\n\n onRefresh(currentViewKey);\n }\n\n render() {\n let {\n isItemsRequested,\n resourceRequests,\n onItemDoubleClick,\n onItemDelete\n } = this.props;\n let { currentViewKey } = this.state;\n\n return (\n \n \n \n \n \n \n \n \n )\n }\n \n )\n }\n \n \n )\n }\n}\n\nResourceRequestView.propTypes = {\n resourceRequests: PropTypes.arrayOf(PropTypes.object),\n onViewChange: PropTypes.func,\n onItemDoubleClick: PropTypes.func,\n onRefresh: PropTypes.func\n};\n\nResourceRequestView.defaultProps = {\n resourceRequests: [],\n onViewChange: () => {},\n onItemDoubleClick: () => {},\n onRefresh: () => {}\n};\n\nexport default ResourceRequestView;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport { routes } from '../../../routing';\nimport SiteLogo from '../../SiteLogo/SiteLogo';\n\nimport './portal-layout.less';\n\nconst PortalLayout = ({\n children,\n logoAside,\n navigation,\n userProfileAside,\n userMenu,\n userProfile: {\n isAnyWiAssets\n }\n}) => {\n return (\n
    \n
    \n
    \n
    \n \n \n \n
    \n {logoAside}\n
    \n
    \n
    \n {userProfileAside}\n {userMenu}\n
    \n
    \n \n
    \n
    \n
    \n
    \n {children}\n
    \n
    \n );\n};\n\nexport default connect(\n ({ userProfile }) => ({ userProfile })\n)(PortalLayout);\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\n\nimport './navigation-menu.less'\n\nconst Navigation = ({ items }) => {\n return (\n
      \n {\n items && items.map(([label, navLinkProps], index) => (\n
    • \n \n {label}\n \n
    • \n ))\n }\n
    \n );\n}\n\nexport default Navigation;\n","const userHeaderLabels = {\n subHeader: 'Administration',\n userMenu: {\n editProfile: 'Edit Profile',\n logOut: 'Log Out',\n },\n labelsLinks: {\n loans: 'Loans',\n investments: 'Investments',\n status: 'Status',\n statements: 'Statements',\n },\n};\n\nexport default userHeaderLabels;\n","import React from 'react';\nimport { Dropdown, Menu } from 'antd';\nimport { Link } from 'react-router-dom';\n\nimport UserLogo from '../../UserLogo/UserLogo';\nimport { routes } from '../../../routing';\nimport userHeaderLabels from '../../../labels/user-header';\n\nconst { Item, Divider } = Menu;\n\nconst ProfileMenu = ({ onLogout }) => {\n const userMenu = (\n \n \n \n {userHeaderLabels.userMenu.editProfile}\n \n \n \n \n {userHeaderLabels.userMenu.logOut}\n \n \n );\n\n return (\n \n
    \n \n
    \n \n );\n};\n\nexport default ProfileMenu;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { routes } from '../../../routing';\nimport { logout } from '../../../store/user/actionCreators';\nimport mainHeaderLabels from '../../../labels/main-header';\nimport PortalLayout from '../../layout/portal-layout/PortalLayout';\nimport Navigation from '../../HeaderComponents/NavigationMenu/NavigationMenu';\nimport ProfileMenu from '../../HeaderComponents/ProfileMenu/ProfileMenu';\n\nimport './admin-page.less';\n\nconst AdminPage = ({\n children,\n logout,\n}) => {\n const adminNavItems = [\n [mainHeaderLabels.links.dashboard, { to: routes.root, exact: true }],\n [mainHeaderLabels.links.users, { to: routes.users }],\n [mainHeaderLabels.links.requests, { to: routes.resourceRequests }],\n [mainHeaderLabels.links.dataImport, { to: routes.dataImport, exact: true }]\n ];\n\n return (\n }\n logoAside={\n
    \n

    {mainHeaderLabels.subHeader}

    \n
    \n }\n navigation={}\n >\n {children}\n \n );\n};\n\nexport default connect(\n () => ({}),\n { logout }\n)(AdminPage);\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { listResourceRequests, deleteResourceRequest } from '../../actions/resourceRequestActions';\nimport ResourceRequestView from '../../components/ResourceRequestView/ResourceRequestView';\nimport AdminPage from '../../common/pages/admin-page/AdminPage';\nimport { routeBuilder } from '../../routing';\n\n\nconst ResourceRequestsPage = ({\n history,\n listResourceRequests,\n deleteResourceRequest,\n user: {\n token\n },\n resourceRequests: {\n items,\n isRequested\n },\n}) => {\n let currentView = 'open';\n\n const handleViewChange = (viewKey) => {\n currentView = viewKey;\n token && listResourceRequests(viewKey, token);\n };\n\n useEffect(() => {\n handleViewChange(currentView);\n }, [currentView]);\n\n const handleItemDoubleClick = ({ currentTarget }) => {\n let requestId = currentTarget.getAttribute('data-item-id');\n history.push(routeBuilder.resourceRequestDetails(requestId));\n };\n\n const handleRefresh = (viewKey) => {\n token && listResourceRequests(viewKey, token);\n };\n\n const handleItemDelete = (requestId) => {\n token && deleteResourceRequest(requestId, token).then(() => {\n handleRefresh(currentView);\n });\n };\n\n return (\n \n )\n};\n\nexport default connect(({ user, resourceRequests }) => ({ user, resourceRequests }), { listResourceRequests,\n deleteResourceRequest })(ResourceRequestsPage);\n","import React, { Component, Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { routes, routeBuilder } from '../../routing';\n\nimport { Badge } from 'reactstrap';\n\nimport './UserDetailsCard.css';\n\nclass UserDetailsCard extends Component {\n render() {\n let {\n userDetails: {\n id,\n fullName,\n organizationName,\n emailAddress,\n registeredOn,\n isAdmin,\n city,\n county,\n state,\n loans,\n investments\n }\n } = this.props;\n\n var loanNodes = !!loans && loans.map((loan, index) => {\n return (\n

    \n {loan.number}{loan.name}\n

    \n );\n });\n\n var investmentNodes = !!investments && investments.map((investment, index) => {\n return (\n

    \n {investment.number}{investment.name}\n

    \n );\n });\n\n return (\n
    \n

    User details

    \n \n

    {fullName}

    \n {\n !!organizationName &&\n \n \n

    {organizationName}

    \n
    \n }\n \n
    \n {city}
    \n {state}\n
    \n \n

    {emailAddress}

    \n \n

    {moment(registeredOn).format('MMMM Do, YYYY')}

    \n {\n !!loanNodes &&\n
    \n \n { loanNodes.length > 0 && loanNodes }\n { loanNodes.length === 0 &&

    NO LOANS YET

    }\n
    \n }\n {\n !!investmentNodes &&\n
    \n \n { investmentNodes.length > 0 && investmentNodes }\n { investmentNodes.length === 0 &&

    NO INVESTMETNS YET

    }\n
    \n }\n
    \n )\n }\n}\n\nUserDetailsCard.propTypes = {\n userDetails: PropTypes.shape({\n id: PropTypes.number,\n fullName: PropTypes.string\n })\n}\n\nexport default UserDetailsCard;\n","import React, { Component, Fragment } from 'react';\r\nimport { Badge } from 'reactstrap';\r\n\r\nimport moment from 'moment';\r\n\r\nimport './ResourceRequestCard.css';\r\n\r\nconst requestTypeMap = {\r\n '0': 'Loan',\r\n '1': 'Investment'\r\n}\r\n\r\nconst statusMap = {\r\n '0': 'Open',\r\n '1': 'Accepted',\r\n '2': 'Declined',\r\n '3': 'Approved'\r\n}\r\n\r\nclass ResourceRequestCard extends Component {\r\n render() {\r\n let {\r\n requestDetails: {\r\n id,\r\n initiatedBy,\r\n createdOn,\r\n processedBy,\r\n acceptedOn,\r\n completedOn,\r\n type,\r\n resourceNumber,\r\n status,\r\n remark\r\n }\r\n } = this.props;\r\n\r\n return (\r\n
    \r\n

    Request Details

    \r\n \r\n

    {`RSRQ-${('000000'+id).slice(-7)}`}

    \r\n \r\n

    {statusMap[status]}

    \r\n {\r\n completedOn &&\r\n (\r\n \r\n \r\n

    {moment(createdOn).format('MMMM Do, YYYY')}

    \r\n
    \r\n )\r\n }\r\n {\r\n status === 2 &&\r\n (\r\n \r\n \r\n

    {remark}

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

    {requestTypeMap[type]}

    \r\n \r\n

    {resourceNumber}

    \r\n \r\n

    {moment(createdOn).format('MMMM Do, YYYY')}

    \r\n \r\n

    {initiatedBy.fullName}

    \r\n {\r\n processedBy &&\r\n (\r\n \r\n \r\n

    {processedBy.fullName}

    \r\n \r\n

    {moment(acceptedOn).format('MMMM Do, YYYY')}

    \r\n
    \r\n )\r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ResourceRequestCard;","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\n\nimport { Button, Card, Input } from 'antd';\nimport { CloseOutlined } from '@ant-design/icons';\n\nconst { TextArea } = Input;\n\nclass ResourceRequestControlPanel extends Component {\n state = {\n declineText: ''\n }\n\n handleDeclineTextChange = (e) => {\n let { target: { value }} = e;\n\n this.setState({ declineText: value});\n }\n\n handleDecline = () => {\n let { declineText } = this.state;\n let { onDecline } = this.props;\n\n onDecline(declineText);\n }\n\n render() {\n let {\n itemToLink,\n onDropSelection,\n onApprove,\n requestStatus,\n resourceRequests: {\n isOperationInProgress\n }\n } = this.props;\n let { declineText } = this.state;\n \n return requestStatus === 1 ?\n (\n
    \n

    Actions

    \n {\n requestStatus === 1 &&\n \n Approve\n ]}>\n {\n !itemToLink &&\n

    Please, doubleclick on one of the items from \"Best Matches\" list to pick resource you would like to reference with user account.

    \n }\n {\n !!itemToLink &&\n
    \n
    \n {itemToLink.resourceType === 0 ? 'Loan' : 'Investment'}\n \n
    \n
    \n

    {itemToLink.number}

    \n

    {itemToLink.name}

    \n
    \n
    \n }\n \n Decline\n ]}>\n

    IMPORTANT! Text entered into the text area below will be visible to the user

    \n \n \n
    \n }\n
    \n ) : null;\n }\n}\n\nexport default connect(\n (resourceRequests) => (resourceRequests)\n)(ResourceRequestControlPanel);","import { FETCH_RES, RECIEVE_RES, CLEAR_RES_SEARCH } from './index';\r\nimport { LOG_OUT } from '../store/user/actions';\r\nimport axios from 'axios';\r\n\r\nconst firmUrl = window.location.origin;\r\n\r\nconst authHeaders = (token) => ({\r\n 'Authorization': `Bearer ${token}`\r\n});\r\n\r\nconst viewMap = {\r\n 'all': 0,\r\n 'investment': 1,\r\n 'loan': 2\r\n};\r\n\r\nexport const listRes = (viewKey, searchString, token) => dispatch => {\r\n dispatch({ type: FETCH_RES });\r\n\r\n axios.get(\r\n `${firmUrl}/api/resources`, {\r\n params: {\r\n view: viewMap[viewKey],\r\n search: searchString\r\n },\r\n headers: { ...authHeaders(token) }\r\n }).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ type: RECIEVE_RES, items: response.data });\r\n }\r\n }).catch(response => {\r\n if (response.status === 401) {\r\n dispatch({ type: LOG_OUT });\r\n }\r\n });\r\n};\r\n\r\nexport const clearSearch = () => ({ type: CLEAR_RES_SEARCH });\r\n","import React, { Component } from 'react';\r\n\r\nclass BestMatchItem extends Component {\r\n render() {\r\n let { item: { id, resourceType, number, name }, onItemSelected, search} = this.props;\r\n let numberParts = number.split(new RegExp(`(${search})` ,'gi'));\r\n let nameParts = name.split(new RegExp(`(${search})` ,'gi'));\r\n\r\n return (\r\n
  • \r\n

    {resourceType === 0 ? 'Loan' : 'Investment' }

    \r\n

    \r\n {\r\n numberParts.map((item, index) => {\r\n return item.toLowerCase() === search.toLowerCase()\r\n ? {item}\r\n : {item}\r\n })\r\n }:\r\n {\r\n nameParts.map((item, index) => {\r\n return item.toLowerCase() === search.toLowerCase()\r\n ? {item}\r\n : {item}\r\n })\r\n }\r\n

    \r\n
  • \r\n\r\n );\r\n }\r\n}\r\n\r\nexport default BestMatchItem;","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\n\nimport { listRes, clearSearch } from '../../actions/resourceActions';\n\nimport { Input, Spin, Empty, Skeleton } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport BestMatchItem from './BestMatchItem';\nimport ViewSelector from '../ViewSelector/ViewSelector';\n\nconst { Search } = Input;\n\nconst views = [{\n key: 'all',\n title: 'All'\n}, {\n key: 'loan',\n title: 'Loans'\n}, {\n key: 'investment',\n title: 'Investments'\n}];\n\nconst viewKeyMap = {\n \"0\": 'loan',\n \"1\": 'investment'\n};\n\nclass BestMatchList extends Component {\n state = {\n view: viewKeyMap[this.props.searchBy],\n search: this.props.searchString,\n highlight: this.props.searchString\n }\n\n handleSearchChange = (e) => {\n let { target: { value } } = e;\n this.setState({ search: value });\n }\n\n componentDidMount () {\n let { view, search } = this.state;\n let { user: { token }, listRes } = this.props;\n\n listRes(view, search, token);\n }\n\n handleViewChange = (viewKey) => {\n let { search } = this.state;\n let { user: { token }, listRes } = this.props;\n\n this.setState({ view: viewKey });\n listRes(viewKey, search, token);\n }\n\n onSearch = (searchText) => {\n let { view } = this.state;\n let { user: { token }, listRes } = this.props;\n\n this.setState({ highlight: searchText })\n\n listRes(view, searchText, token);\n }\n\n componentWillUnmount() {\n let { clearSearch } = this.props;\n\n clearSearch();\n }\n\n render () {\n let {\n onMatchSelected,\n resources: {\n isLoading,\n items\n }\n } = this.props;\n\n let { view, search, highlight } = this.state;\n\n return (\n
    \n

    Best Matches

    \n \n \n {\n isLoading &&\n \n }\n />\n
      \n {\n [0, 1, 2].map((item) => ())\n }\n
    \n
    \n }\n {\n !isLoading &&\n
      \n {\n items.map((item) => (\n \n ))\n }\n
    \n }\n {\n !isLoading && items.length === 0 &&\n \n }\n
    \n );\n }\n}\n\nBestMatchList.propTypes = {\n matches: PropTypes.array,\n onMatchSelected: PropTypes.func,\n searchBy: PropTypes.number,\n searchString: PropTypes.string\n};\n\nBestMatchList.defaultProps = {\n matches: [],\n onMatchSelected: () => {},\n searchBy: 0,\n searchString: ''\n};\n\nexport default connect(\n ({ user, resources }) => ({ user, resources }),\n { listRes, clearSearch }\n)(BestMatchList);","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\n\nimport { retrieveRequestResolution, rollbackRequest } from '../../actions/resourceRequestActions';\n\nimport { Result, Spin, Button } from 'antd';\nimport { LoadingOutlined, CheckOutlined } from '@ant-design/icons';\n\nclass ApprovedRequestDetails extends Component {\n componentDidMount() {\n let {\n user: {\n token\n },\n requestId,\n retrieveRequestResolution\n } = this.props;\n\n retrieveRequestResolution(requestId, token)\n }\n\n handleRollback = () => {\n let {\n user: {\n token\n },\n requestId,\n rollbackRequest\n } = this.props;\n\n rollbackRequest(requestId, token);\n }\n\n render() {\n let {\n resourceRequests: {\n resolution\n }\n } = this.props;\n\n return (\n }\n title=\"Request was approved\"\n subTitle={\n \n

    Linked resource

    \n {\n !!resolution && !!resolution.item &&\n
    \n
    {resolution.item.linkedWith.resourceType === 1 ? 'Investment' : 'Loan' }
    \n

    {resolution.item.linkedWith.number}: {resolution.item.linkedWith.name}

    \n
    \n }\n {\n !resolution &&\n } />\n }\n
    \n }\n extra={\n \n }\n />\n );\n }\n}\n\nexport default connect(\n ({ user, resourceRequests }) => ({ user, resourceRequests }),\n { retrieveRequestResolution, rollbackRequest }\n)(ApprovedRequestDetails);\n\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Spin, Result, Button } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport { getResourceRequestDetails, approveRequest, declineRequest, acceptRequest } from '../../actions/resourceRequestActions';\n\nimport UserDetailsCard from '../UserDetailsCard/UserDetailsCard';\nimport ResourceRequestCard from '../ResourceRequestCard/ResourceRequestCard';\nimport ResourceRequestControlPanel from '../ResourceRequestDetailsPage/ResourceRequestControlPanel';\nimport BestMatchList from './BestMatchList';\nimport ApprovedRequestDetails from './ApprovedRequestDetails';\n\nimport './_resourceRequestDetails.scss';\n\nclass ResourceRequestDetailsPage extends Component {\n state = {\n selectedItem: null\n }\n\n componentDidMount() {\n this.retireveItemDetails();\n }\n\n retireveItemDetails() {\n let {\n getResourceRequestDetails,\n match: {\n params: {\n requestId \n } \n },\n user: {\n token\n }\n } = this.props;\n\n token && getResourceRequestDetails(requestId, token);\n }\n\n handleGoBack = () => {\n let { history } = this.props;\n\n history.goBack();\n }\n\n handleMatchSelected = (e) => {\n let { currentTarget } = e;\n let { resources: { items } } = this.props;\n\n if (!currentTarget) {\n return;\n }\n\n let filtered = items.filter(item => item.id === +currentTarget.getAttribute('data-item-id'));\n\n if (filtered.length > 0) {\n this.setState({ selectedItem: filtered[0] });\n }\n }\n\n handleApprove = () => {\n let { selectedItem: { id, resourceType }} = this.state;\n let {\n match: {\n params: {\n requestId\n }\n }, \n approveRequest,\n user: { token }\n } = this.props;\n\n approveRequest(requestId, resourceType, id, token);\n }\n\n handleDecline = (text) => {\n let {\n match: {\n params: {\n requestId\n }\n }, \n declineRequest,\n user: { token }\n } = this.props;\n\n declineRequest(requestId, text, token);\n }\n\n handleAccept = () => {\n let {\n match: {\n params: {\n requestId\n }\n }, \n acceptRequest,\n user: { token }\n } = this.props;\n\n acceptRequest(requestId, token);\n }\n\n onDropSelection = () => {\n this.setState({ selectedItem: null });\n }\n\n resolveStatusBlock = (itemDetails) => {\n switch (itemDetails.status) {\n case 0:\n return (\n \n Accept\n \n }\n />\n );\n\n case 1:\n return (\n \n );\n case 2:\n return (\n \n );\n case 3:\n return (\n \n );\n default:\n return null;\n }\n }\n\n render() {\n let {\n resourceRequests: {\n isRequested,\n itemDetails\n },\n user: { token }\n } = this.props;\n let { selectedItem } = this.state;\n\n let isDataReady = !!token && !!itemDetails && !isRequested;\n\n // if (!itemDetails && !isRequested) {\n // this.retireveItemDetails();\n // }\n\n return (\n
    \n {\n !isDataReady ? (\n } />\n ) : (\n <>\n
    \n \n
    \n
    \n { this.resolveStatusBlock(itemDetails) }\n
    \n
    \n \n \n
    \n \n )\n }\n
    \n );\n }\n}\n\nexport default connect(\n ({ user, resourceRequests, resources }) => ({ user, resourceRequests, resources }),\n { getResourceRequestDetails, approveRequest, declineRequest, acceptRequest }\n)(ResourceRequestDetailsPage);","export const FETCH__USER_PROFILE = 'FETCH__USER_PROFILE';\nexport const FETCH__USER_PROFILE__FAIL = 'FETCH__USER_PROFILE__FAIL';\nexport const FETCH__USER_PROFILE__SUCCESS = 'FETCH__USER_PROFILE__SUCCESS';\n\nexport const FETCH__USER_PROFILE_SETTINGS = 'FETCH__USER_PROFILE_SETTINGS';\nexport const FETCH__USER_PROFILE_SETTINGS__FAIL = 'FETCH__USER_PROFILE_SETTINGS__FAIL';\nexport const FETCH__USER_PROFILE_SETTINGS__SUCCESS = 'FETCH__USER_PROFILE_SETTINGS__SUCCESS';\n\nexport const UPDATE__USER_PROFILE_SETTINGS = 'UPDATE__USER_PROFILE_SETTINGS';\nexport const UPDATE__USER_PROFILE_SETTINGS__SUCCESS = 'UPDATE__USER_PROFILE_SETTINGS__SUCCESS';\nexport const UPDATE__USER_PROFILE_SETTINGS__FAIL = 'UPDATE__USER_PROFILE_SETTINGS__FAIL';\n\nexport const RESET__USER_PROFILE_SETTINGS = 'RESET__USER_PROFILE_SETTINGS';\n","import axios from 'axios';\nimport { userProfileEndpoints } from '../../const/backend';\nimport { authHeaders, userAndAuthHeaders, actionTemplate } from '../shared';\nimport {\n FETCH__USER_PROFILE__FAIL,\n FETCH__USER_PROFILE__SUCCESS,\n FETCH__USER_PROFILE,\n FETCH__USER_PROFILE_SETTINGS,\n FETCH__USER_PROFILE_SETTINGS__FAIL,\n FETCH__USER_PROFILE_SETTINGS__SUCCESS,\n UPDATE__USER_PROFILE_SETTINGS,\n UPDATE__USER_PROFILE_SETTINGS__FAIL,\n UPDATE__USER_PROFILE_SETTINGS__SUCCESS,\n RESET__USER_PROFILE_SETTINGS,\n} from './actions';\nimport { LOG_OUT } from '../user/actions';\n\n\nexport const fetchUserProfile = (token, userId) => dispatch => {\n dispatch(actionTemplate(FETCH__USER_PROFILE));\n\n let headers = !!userId ?\n userAndAuthHeaders(token, userId) :\n authHeaders(token);\n\n return axios.get(\n userProfileEndpoints.get(),\n { headers }\n ).then(response => {\n\n if (response.status === 200) {\n dispatch({...actionTemplate(FETCH__USER_PROFILE__SUCCESS), data: response.data });\n }\n }).catch(({ response }) => {\n\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n return;\n }\n\n dispatch(actionTemplate(FETCH__USER_PROFILE__FAIL));\n });\n}\n\nexport const fetchUserProfileSettings = token => dispatch => {\n dispatch(actionTemplate(FETCH__USER_PROFILE_SETTINGS));\n\n return axios.get(\n userProfileEndpoints.settings(),\n { headers: { ...authHeaders(token) }}\n ).then(response => {\n if (response.status === 200) {\n dispatch({ ...actionTemplate(FETCH__USER_PROFILE_SETTINGS__SUCCESS), data: response.data });\n }\n }).catch(({ response }) => {\n dispatch(actionTemplate(FETCH__USER_PROFILE_SETTINGS__FAIL));\n\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n }\n });\n}\n\nexport const updateProfileSettings = (settings, token) => dispatch => {\n dispatch(actionTemplate(UPDATE__USER_PROFILE_SETTINGS));\n\n return axios.patch(\n userProfileEndpoints.settings(),\n settings,\n { headers: { ...authHeaders(token) }}\n ).then(response => {\n if (response.status === 200) {\n dispatch(actionTemplate(UPDATE__USER_PROFILE_SETTINGS__SUCCESS));\n }\n }).catch(({ response }) => {\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n return;\n }\n\n dispatch(actionTemplate(UPDATE__USER_PROFILE_SETTINGS__FAIL));\n });\n}\n\nexport const resetProfileSettings = () => dispatch => {\n dispatch(actionTemplate(RESET__USER_PROFILE_SETTINGS));\n}\n","export const FETCH__LOAN = 'FETCH__LOAN';\r\nexport const FETCH__LOAN__SUCCESS = 'FETCH__LOAN__SUCCESS';\r\nexport const FETCH__LOAN__FAIL = 'FETCH__LOAN__FAIL';","import React from 'react';\n\nimport './user-data.less';\n\nconst UserData = ({ name, email }) => {\n if (!name || !email) {\n return null;\n }\n\n return (\n
    \n

    {name}

    \n

    {email}

    \n
    \n );\n}\n\nexport default UserData;\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n\nimport { logout } from '../../../store/user/actionCreators';\nimport { fetchUserProfile } from '../../../store/userProfile/actionCreators';\nimport { routes, routeBuilder } from '../../../routing';\nimport userHeaderLabels from '../../../labels/user-header';\nimport PortalLayout from '../../layout/portal-layout/PortalLayout';\nimport UserData from '../../HeaderComponents/UserData/UserData';\nimport Navigation from '../../HeaderComponents/NavigationMenu/NavigationMenu';\nimport ProfileMenu from '../../HeaderComponents/ProfileMenu/ProfileMenu';\n\nimport { adminRole, userRole } from '../../../const/user';\n\nconst userAccountRoutes = (userId) => {\n return {\n [adminRole]: {\n loans: routeBuilder.userAccountLoans(userId),\n investments: routeBuilder.userAccountInvestments(userId),\n status: routeBuilder.userAccountStatus(userId),\n statements: routeBuilder.userAccountStatements(userId),\n },\n [userRole]: {\n loans: routes.userLoans,\n investments: routes.userInvestments,\n status: routes.userRequestStatus,\n statements: routes.userStatements,\n }\n }\n};\n\nconst UserAccountPage = ({\n user: {\n token,\n role,\n email: currentUserEmail\n },\n userProfile: {\n isUserProfileRequested,\n actualizationDate,\n fullName,\n emailAddress: profileEmailAddress\n },\n children,\n userId,\n loadProfile = false,\n isLoading,\n fetchUserProfile,\n logout\n}) => {\n const isAllLoading = isLoading || isUserProfileRequested;\n const currentRoutes = userAccountRoutes(userId);\n const navigationItems = Object.keys(userHeaderLabels.labelsLinks)\n .map((key) => [\n userHeaderLabels.labelsLinks[key],\n { to: currentRoutes[role][key] }\n ]);\n\n useEffect(() => {\n loadProfile && fetchUserProfile(token, userId);\n }, [token, userId, loadProfile]);\n\n return (\n }\n logoAside={\n !isAllLoading && role === adminRole && currentUserEmail !== profileEmailAddress\n ? \n : null\n }\n navigation={}\n userProfileAside={\n !isAllLoading && actualizationDate &&\n new Date(actualizationDate).getFullYear() > 1900 && (\n \n as of {moment(actualizationDate).format('MM/DD/YYYY')}\n \n )\n }\n >\n {children}\n \n );\n}\n\nexport default connect(\n ({ user, userProfile }) => ({ user, userProfile }),\n { logout, fetchUserProfile }\n)(UserAccountPage);\n","import React from 'react';\nimport moment from 'moment';\nimport { Table } from 'antd';\n\nimport { wrapNegativeAndAlign } from '../../utility';\n\nimport './loan-lines-table.less';\n\nconst { Column } = Table;\n\nconst LoanLinesTable = ({ lines }) => {\n const indexedLines = lines.map((x, index) => ({\n ...x,\n key: index,\n amount: x.transactionInterest + x.transactionPrincipal\n }));\n\n return (\n \n moment(val).format('MM/DD/YYYY')} />\n {\n indexedLines && indexedLines.length > 0 && indexedLines.some(line => !!line.reference)\n ? \n : null\n }\n (wrapNegativeAndAlign(num))}\n />\n (wrapNegativeAndAlign(num))}\n />\n (wrapNegativeAndAlign(num))}\n />\n (wrapNegativeAndAlign(num))}\n />\n wrapNegativeAndAlign(num)}\n />\n \n );\n}\n\nexport default LoanLinesTable;\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { Spin, Statistic, Result, Button } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport { fetchUserProfile } from '../../store/userProfile/actionCreators'\nimport { fetchLoan } from '../../store/loanDetails/actionCreators';\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport { routes, routeBuilder } from '../../routing';\nimport LoanLinesTable from '../../components/LoanLinesTable/LoanLinesTable';\nimport './loan-details-page.less'\n\nconst LoanDetailsPage = ({\n match: {\n params: {\n userId,\n loanId\n },\n },\n user: {\n token\n },\n loanDetails: {\n isLoanDetailsFetched,\n isLoanDetailsFetchFailed,\n details,\n },\n fetchLoan\n}) => {\n const homeLink = !userId\n ? routes.userLoans\n : routeBuilder.userAccountLoans(userId);\n\n useEffect(() => {\n fetchLoan(loanId, token);\n }, [loanId, token]);\n\n const handleRefresh = () => {\n fetchLoan(loanId, token);\n }\n\n if (isLoanDetailsFetched) {\n\n return (\n \n }\n />\n );\n }\n\n if (isLoanDetailsFetchFailed || !details) {\n\n return (\n Refresh Page\n )}\n />\n )\n }\n\n return (\n \n
    \n {\n !!details && (\n <>\n
    \n

    \n Loans\n /\n {details.number}\n {details.description}\n

    \n
    \n
    \n \n \n \n \n \n
    \n
    \n

    Details

    \n \n
    \n \n )\n }\n
    \n \n );\n}\n\nexport default connect(\n ({ user, loanDetails }) => ({ user, loanDetails }),\n { fetchUserProfile, fetchLoan }\n)(LoanDetailsPage);\n","import axios from 'axios';\r\nimport { loanDetailsEndpoints } from '../../const/backend';\r\nimport { actionTemplate, authHeaders } from '../shared';\r\nimport { LOG_OUT } from '../user/actions';\r\nimport {\r\n FETCH__LOAN,\r\n FETCH__LOAN__FAIL,\r\n FETCH__LOAN__SUCCESS,\r\n} from './actions';\r\n\r\nexport const fetchLoan = (loanId, token) => dispatch => {\r\n dispatch(actionTemplate(FETCH__LOAN));\r\n\r\n axios.get(\r\n loanDetailsEndpoints.get(loanId), {\r\n headers: authHeaders(token)\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__LOAN__SUCCESS), details: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__LOAN__FAIL))\r\n });\r\n}","export const FETCH__USER_LIST = 'FETCH__USER_LIST';\r\nexport const FETCH__USER_LIST__SUCCESS = 'FETCH__USER_LIST__SUCCESS';\r\nexport const FETCH__USER_LIST__FAIL = 'FETCH__USER_LIST__FAIL';\r\n\r\nexport const PROMOTE__USER = 'PROMOTE__USER';\r\nexport const PROMOTE__USER__SUCCESS = 'PROMOTE__USER__SUCCESS';\r\nexport const PROMOTE__USER__FAIL = 'PROMOTE__USER__FAIL';\r\n\r\nexport const REVOKE__ADMIN_RIGHTS = 'REVOKE__ADMIN_RIGHTS';\r\nexport const REVOKE__ADMIN_RIGHTS__SUCCESS = 'REVOKE__ADMIN_RIGHTS__SUCCESS';\r\nexport const REVOKE__ADMIN_RIGHTS__FAIL = 'REVOKE__ADMIN_RIGHTS__FAIL';","import axios from 'axios';\r\nimport { authorizedRequestHeaders, usersEndpoints } from '../../const/backend';\r\nimport { LOG_OUT } from '../user/actions';\r\nimport {\r\n FETCH__USER_LIST__FAIL,\r\n FETCH__USER_LIST__SUCCESS,\r\n FETCH__USER_LIST,\r\n PROMOTE__USER__FAIL,\r\n PROMOTE__USER__SUCCESS,\r\n PROMOTE__USER,\r\n REVOKE__ADMIN_RIGHTS__FAIL,\r\n REVOKE__ADMIN_RIGHTS__SUCCESS,\r\n REVOKE__ADMIN_RIGHTS,\r\n} from './actions';\r\n\r\nconst actionTemplate = (type) => ({ type });\r\n\r\nexport const fetchUsers = (skip, limit, search, cityId, view, token) => dispatch => {\r\n dispatch(actionTemplate(FETCH__USER_LIST));\r\n\r\n axios.get(\r\n usersEndpoints.list(skip, limit, search, cityId, view), {\r\n headers: { ...authorizedRequestHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({\r\n ...actionTemplate(FETCH__USER_LIST__SUCCESS),\r\n data: response.data\r\n });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__USER_LIST__FAIL));\r\n });\r\n}\r\n\r\nexport const promoteUser = (userId, token) => dispatch => {\r\n return new Promise((resolve, reject) => {\r\n dispatch(actionTemplate(PROMOTE__USER));\r\n \r\n axios.post(\r\n usersEndpoints.promote(), {\r\n userId\r\n }, {\r\n headers: { ...authorizedRequestHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(PROMOTE__USER__SUCCESS));\r\n resolve(true);\r\n\r\n return;\r\n }\r\n reject(false);\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n reject(false);\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(PROMOTE__USER__FAIL));\r\n reject(false);\r\n });\r\n });\r\n}\r\n\r\nexport const promoteToAdminAsync = (userId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n dispatch(actionTemplate(PROMOTE__USER));\r\n\r\n return axios.post(\r\n usersEndpoints.promote(), {\r\n userId\r\n }, {\r\n headers: { ...authorizedRequestHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(PROMOTE__USER__SUCCESS));\r\n\r\n return;\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(PROMOTE__USER__FAIL));\r\n });\r\n};\r\n\r\nexport const demoteToRegularAsync = (userId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(REVOKE__ADMIN_RIGHTS));\r\n\r\n return axios.post(\r\n usersEndpoints.revoke(), {\r\n userId\r\n }, {\r\n headers: { ...authorizedRequestHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(REVOKE__ADMIN_RIGHTS__SUCCESS));\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(REVOKE__ADMIN_RIGHTS__FAIL));\r\n });\r\n};\r\n\r\nexport const revokeAccess = (userId, token) => dispatch => {\r\n return new Promise((resolve, reject) => {\r\n dispatch(actionTemplate(REVOKE__ADMIN_RIGHTS));\r\n\r\n axios.post(\r\n usersEndpoints.revoke(), {\r\n userId\r\n }, {\r\n headers: { ...authorizedRequestHeaders(token) }\r\n }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(REVOKE__ADMIN_RIGHTS__SUCCESS));\r\n resolve(true);\r\n }\r\n }).catch(({ response }) => {\r\n dispatch(actionTemplate(REVOKE__ADMIN_RIGHTS__FAIL));\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n reject(false);\r\n\r\n return;\r\n }\r\n\r\n reject(false);\r\n });\r\n });\r\n}","export const FETCH__ADMIN_USER_PROFILE = 'FETCH__ADMIN_USER_PROFILE';\r\nexport const FETCH__ADMIN_USER_PROFILE__SUCCESS = 'FETCH__ADMIN_USER_PROFILE__SUCCESS';\r\nexport const FETCH__ADMIN_USER_PROFILE__FAIL = 'FETCH__ADMIN_USER_PROFILE__FAIL';\r\n\r\nexport const CLEAR__ADMIN_USER_PROFILE = 'CLEAR__ADMIN_USER_PROFILE';\r\n\r\nexport const FETCH__USER_LOANS = 'FETCH__USER_LOANS';\r\nexport const FETCH__USER_LOANS__SUCCESS = 'FETCH__USER_LOANS__SUCCESS';\r\nexport const FETCH__USER_LOANS__FAIL = 'FETCH__USER_LOANS__FAIL';\r\n\r\nexport const FETCH__USER_ACCOUNTS = 'FETCH__USER_ACCOUNTS';\r\nexport const FETCH__USER_ACCOUNTS__SUCCESS = 'FETCH__USER_ACCOUNTS__SUCCESS';\r\nexport const FETCH__USER_ACCOUNTS__FAIL = 'FETCH__USER_ACCOUNTS__FAIL';\r\n\r\nexport const FETCH__USER_REQUESTS = 'FETCH__USER_REQUESTS';\r\nexport const FETCH__USER_REQUESTS__SUCCESS = 'FETCH__USER_REQUESTS__SUCCESS';\r\nexport const FETCH__USER_REQUESTS__FAIL = 'FETCH__USER_REQUESTS__FAIL';\r\n\r\nexport const CONFIRM__PROFILE__USER_EMAIL = 'CONFIRM__PROFILE__USER_EMAIL';\r\nexport const CONFIRM__PROFILE__USER_EMAIL__SUCCESS = 'CONFIRM__PROFILE__USER_EMAIL__SUCCESS';\r\nexport const CONFIRM__PROFILE__USER_EMAIL__FAIL = 'CONFIRM__PROFILE__USER_EMAIL__FAIL';\r\n\r\nexport const UNLINK__LOAN = 'UNLINK__LOAN';\r\nexport const UNLINK__LOAN__SUCCESS = 'UNLINK__LOAN__SUCCESS';\r\nexport const UNLINK__LOAN__FAIL = 'UNLINK__LOAN__FAIL';\r\n\r\nexport const UNLINK__INVESTMENT = 'UNLINK__INVESTMENT';\r\nexport const UNLINK__INVESTMENT__SUCCESS = 'UNLINK__INVESTMENT__SUCCESS';\r\nexport const UNLINK__INVESTMENT__FAIL = 'UNLINK__INVESTMENT__FAIL';\r\n\r\nexport const DELETE__PROFILE__RESOURCE_REQUEST = 'DELETE__PROFILE__RESOURCE_REQUEST';\r\nexport const DELETE__PROFILE__RESOURCE_REQUEST__SUCCESS = 'DELETE__PROFILE__RESOURCE_REQUEST__SUCCESS';\r\nexport const DELETE__PROFILE__RESOURCE_REQUEST__FAIL = 'DELETE__PROFILE__RESOURCE_REQUEST__FAIL';","import React from 'react';\nimport { Button } from 'antd';\n\nimport './highlight.less';\n\nconst Highlight = ({\n headerText,\n contentText,\n className,\n actions\n}) => (\n
    \n
    \n
    {headerText}
    \n {\n actions && (\n
    \n {\n actions.map(action => (\n \n {action.label}\n \n ))\n }\n
    \n )\n }\n
    \n

    {contentText}

    \n
    \n);\n\nexport default Highlight;\n","import React, { useEffect } from 'react';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { routes, routeBuilder } from '../routing';\nimport { Link } from 'react-router-dom';\nimport { resourceRequestNumberTemplate } from '../utility';\nimport { promoteToAdminAsync, demoteToRegularAsync } from '../store/userManagement/actionCreators';\nimport { Spin, Empty, Timeline, Button, Tag } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport {\n fetchAdminUserProfile, clearAdminUserProfile,\n fetchUserInvestments, fetchUserLoans, fetchUserRequests,\n confirmEmail, unlinkLoan, unlinkInvestment, deleteResourceRequest\n} from '../store/adminUserProfile/actionCreators';\nimport { deleteUser } from '../store/user/actionCreators';\n\nimport Highlight from '../components/Highlight/Highlight';\n\nimport './styles/_adminUserProfile.less';\n\nconst LoanListBasic = ({\n loans,\n loading,\n userId,\n onUnlink\n}) => (\n
    \n

    Loans

    \n
    \n {\n loading &&\n \n } />\n }\n {\n !loading && loans && loans.map(loan => (\n
    \n

    {loan.number} {loan.name}

    \n
    \n \n
    \n
    \n ))\n }\n {\n !loading && (loans === null || loans.length === 0) &&\n \n }\n
    \n
    \n);\n\nconst InvestmentListBasic = ({\n loading,\n investments,\n userId,\n onUnlink\n}) => (\n
    \n

    Investments

    \n
    \n {\n loading &&\n \n }\n />\n }\n {\n !loading && investments && investments.length > 0 && investments.map(investment => (\n
    \n

    {investment.number} {investment.name}

    \n
    \n \n
    \n
    \n ))\n }\n {\n !loading && (investments === null || investments.length === 0) &&\n \n }\n
    \n
    \n);\n\nconst statusMap = {\n '0': 'open',\n '1': 'accepted',\n '2': 'declined',\n '3': 'approved'\n}\n\nconst statusColorMap = {\n '0': 'blue',\n '1': 'cyan',\n '2': 'red',\n '3': 'green'\n}\n\nconst requestTypeMap = {\n '0': 'Loan',\n '1': 'Investment'\n}\n\nconst ResourceRequestListBasic = ({\n requests,\n loading,\n onDelete\n}) => (\n
    \n

    Resource Requests

    \n
    \n {\n loading &&\n \n }\n />\n }\n {\n !loading && requests && requests.length > 0 &&\n
    \n Request Number\n Requested resource number\n Status\n Actions\n
    \n }\n {\n !loading && requests && requests.length > 0 && requests.map(request => (\n
    \n

    \n \n {`${resourceRequestNumberTemplate(request.id)}:${requestTypeMap[request.resourceType]}`}\n \n

    \n {request.resourceNumber}\n {statusMap[request.status]}\n
    \n { onDelete(request.id); }}\n disabled={request.status === 3 || request.status === 2}\n >\n Delete\n \n
    \n
    \n ))\n }\n {\n !loading && requests && requests.length === 0 &&\n \n }\n
    \n
    \n);\n\nconst LoginHistoryBasic = ({ logins }) => (\n
    \n

    Login History

    \n {\n logins && logins.length === 0 && (\n \n )\n }\n {\n logins && (\n \n {\n logins.map(({ loginDate }) => (\n \n {moment(loginDate).format('MM/DD/YYYY HH:mm A')}\n \n ))\n }\n \n )\n }\n
    \n);\n\nconst AdminUserProfilePage = ({\n history,\n match: {\n params: {\n userId\n }\n },\n adminUserProfile: {\n profile,\n isProfileFetched,\n loans,\n isLoansFetched,\n investments,\n isInvestmentsFetched,\n requests,\n isRequestsFetched\n },\n user: {\n id: currentUserId,\n token,\n isUserDeletionInProgress\n },\n fetchAdminUserProfile,\n fetchUserInvestments,\n fetchUserLoans,\n fetchUserRequests,\n clearAdminUserProfile,\n promoteToAdminAsync,\n demoteToRegularAsync,\n confirmEmail,\n unlinkLoan,\n unlinkInvestment,\n deleteResourceRequest,\n deleteUser\n}) => {\n useEffect(() => {\n fetchAdminUserProfile(userId)\n .then(() => {\n fetchUserInvestments(userId);\n fetchUserLoans(userId);\n fetchUserRequests(userId);\n });\n return clearAdminUserProfile();\n }, [])\n\n const promoteToAdmin = () => {\n promoteToAdminAsync &&\n promoteToAdminAsync(profile.id).then(() => {\n fetchAdminUserProfile(profile.id);\n });\n };\n\n const demoteToRegular = () => {\n demoteToRegularAsync &&\n demoteToRegularAsync(profile.id).then(() => {\n fetchAdminUserProfile(profile.id);\n });\n };\n\n const handleConfirmEmail = () => {\n confirmEmail &&\n confirmEmail(profile.id).then(() => {\n fetchAdminUserProfile(profile.id);\n });\n };\n\n const handleLoanUnlink = (loanId) => {\n unlinkLoan &&\n unlinkLoan(profile.id, loanId).then(() => {\n fetchUserLoans(profile.id);\n fetchUserRequests(profile.id);\n });\n };\n\n const handleInvestmentUnlink = (investmentId) => {\n unlinkInvestment\n && unlinkInvestment(profile.id, investmentId).then(() => {\n fetchUserInvestments(profile.id);\n fetchUserRequests(profile.id);\n });\n };\n\n const handleResourceRequestDelete = (requestId) => {\n deleteResourceRequest\n && deleteResourceRequest(profile.id, requestId).then(() => {\n fetchUserRequests(profile.id);\n });\n };\n\n const handleUserDelete = () => {\n deleteUser(token, userId).then(() => {\n history.push(routes.users);\n });\n };\n\n if (isProfileFetched || !profile) {\n return (\n \n }\n />\n );\n }\n\n const accountTypeActions = profile.isAdmin\n ? [{ label: 'Downgrade to Regular', action: demoteToRegular }]\n : [{ label: 'Promote to Admin', action: promoteToAdmin }];\n\n const emailStatusActions = !profile.isEmailConfirmed\n ? [{ label: 'Confirm Email', action: handleConfirmEmail }]\n : null;\n\n return (\n
    \n
    \n

    \n Users / \n {!!profile && profile.fullName}\n

    \n
    \n {\n currentUserId !== profile.id && (\n \n Delete User\n \n )\n }\n
    \n
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n
    \n \n \n
    \n \n
    \n );\n};\n\nexport default connect(\n ({ adminUserProfile, user }) => ({ adminUserProfile, user }),\n {\n fetchAdminUserProfile,\n clearAdminUserProfile,\n fetchUserInvestments,\n fetchUserLoans,\n fetchUserRequests,\n promoteToAdminAsync,\n demoteToRegularAsync,\n confirmEmail,\n unlinkLoan,\n unlinkInvestment,\n deleteResourceRequest,\n deleteUser\n })(AdminUserProfilePage);\n","import axios from 'axios';\r\nimport { actionTemplate, authHeaders } from '../shared';\r\nimport { LOG_OUT } from '../user/actions';\r\nimport { adminUserProfileEndpoints } from '../../const/backend';\r\nimport {\r\n FETCH__ADMIN_USER_PROFILE,\r\n FETCH__ADMIN_USER_PROFILE__FAIL,\r\n FETCH__ADMIN_USER_PROFILE__SUCCESS,\r\n CLEAR__ADMIN_USER_PROFILE,\r\n FETCH__USER_LOANS,\r\n FETCH__USER_LOANS__SUCCESS,\r\n FETCH__USER_LOANS__FAIL,\r\n FETCH__USER_ACCOUNTS,\r\n FETCH__USER_ACCOUNTS__FAIL,\r\n FETCH__USER_ACCOUNTS__SUCCESS,\r\n FETCH__USER_REQUESTS,\r\n FETCH__USER_REQUESTS__SUCCESS,\r\n FETCH__USER_REQUESTS__FAIL,\r\n CONFIRM__PROFILE__USER_EMAIL,\r\n CONFIRM__PROFILE__USER_EMAIL__SUCCESS,\r\n CONFIRM__PROFILE__USER_EMAIL__FAIL,\r\n UNLINK__LOAN,\r\n UNLINK__LOAN__SUCCESS,\r\n UNLINK__LOAN__FAIL,\r\n UNLINK__INVESTMENT,\r\n UNLINK__INVESTMENT__FAIL,\r\n UNLINK__INVESTMENT__SUCCESS,\r\n DELETE__PROFILE__RESOURCE_REQUEST,\r\n DELETE__PROFILE__RESOURCE_REQUEST__FAIL,\r\n DELETE__PROFILE__RESOURCE_REQUEST__SUCCESS\r\n} from './actions';\r\n\r\nexport const confirmEmail = (userId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(CONFIRM__PROFILE__USER_EMAIL));\r\n\r\n return axios.patch(\r\n adminUserProfileEndpoints.confirmEmail(userId),\r\n null,\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(CONFIRM__PROFILE__USER_EMAIL__SUCCESS));\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(CONFIRM__PROFILE__USER_EMAIL__FAIL));\r\n });\r\n}\r\n\r\nexport const unlinkLoan = (userId, loanId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(UNLINK__LOAN));\r\n\r\n return axios.delete(\r\n adminUserProfileEndpoints.unlinkLoan(userId, loanId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(UNLINK__LOAN__SUCCESS));\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(UNLINK__LOAN__FAIL));\r\n });\r\n}\r\nexport const unlinkInvestment = (userId, investmentId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(UNLINK__INVESTMENT));\r\n\r\n return axios.delete(\r\n adminUserProfileEndpoints.unlinkInvestment(userId, investmentId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(UNLINK__INVESTMENT__SUCCESS));\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(UNLINK__INVESTMENT__FAIL));\r\n });\r\n}\r\n\r\nexport const deleteResourceRequest = (userId, requestId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(DELETE__PROFILE__RESOURCE_REQUEST));\r\n\r\n return axios.delete(\r\n adminUserProfileEndpoints.deleteResourceRequest(userId, requestId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(DELETE__PROFILE__RESOURCE_REQUEST__FAIL));\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(DELETE__PROFILE__RESOURCE_REQUEST__SUCCESS));\r\n });\r\n}\r\n\r\nexport const fetchAdminUserProfile = (userId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(FETCH__ADMIN_USER_PROFILE));\r\n\r\n return axios.get(\r\n adminUserProfileEndpoints.profile(userId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__ADMIN_USER_PROFILE__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__ADMIN_USER_PROFILE__FAIL));\r\n });\r\n}\r\n\r\nexport const clearAdminUserProfile = () => dispatch => {\r\n dispatch(actionTemplate(CLEAR__ADMIN_USER_PROFILE));\r\n}\r\n\r\nexport const fetchUserLoans = (userId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(FETCH__USER_LOANS));\r\n\r\n return axios.get(\r\n adminUserProfileEndpoints.loans(userId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__USER_LOANS__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__USER_LOANS__FAIL));\r\n });\r\n}\r\n\r\nexport const fetchUserInvestments = (userId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(FETCH__USER_ACCOUNTS));\r\n\r\n return axios.get(\r\n adminUserProfileEndpoints.investments(userId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__USER_ACCOUNTS__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__USER_ACCOUNTS__FAIL));\r\n });\r\n}\r\n\r\nexport const fetchUserRequests = (userId) => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(FETCH__USER_REQUESTS));\r\n\r\n return axios.get(\r\n adminUserProfileEndpoints.requests(userId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__USER_REQUESTS__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__USER_REQUESTS__FAIL));\r\n });\r\n}\r\n\r\n","export const FETCH__USERS_RRQ_LIST = 'FETCH__USERS_RRQ_LIST';\r\nexport const FETCH__USERS_RRQ_LIST__SUCCESS = 'FETCH__USERS_RRQ_LIST__SUCCESS';\r\nexport const FETCH__USERS_RRQ_LIST__FAIL = 'FETCH__USERS_RRQ_LIST__FAIL';\r\n\r\nexport const CREATE__RRQ = 'CREATE__RRQ';\r\nexport const CREATE__RRQ__SUCCESS = 'CREATE__RRQ__SUCCESS';\r\nexport const CREATE__RRQ__FAIL = 'CREATE__RRQ__FAIL';","import axios from 'axios';\nimport { actionTemplate, userAndAuthHeaders, authHeaders } from '../shared';\nimport { resourceRequestEndpoints } from '../../const/backend';\nimport { LOG_OUT } from '../user/actions';\nimport {\n FETCH__USERS_RRQ_LIST,\n FETCH__USERS_RRQ_LIST__SUCCESS,\n FETCH__USERS_RRQ_LIST__FAIL,\n CREATE__RRQ,\n CREATE__RRQ__FAIL,\n CREATE__RRQ__SUCCESS,\n} from './actions';\n\nexport const fetchUsersRequestsByUserId = (userId, token) => dispatch => {\n dispatch(actionTemplate(FETCH__USERS_RRQ_LIST));\n\n axios.get(\n resourceRequestEndpoints.root(), {\n headers: userAndAuthHeaders(token, userId)\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ ...actionTemplate(FETCH__USERS_RRQ_LIST__SUCCESS), data: response.data });\n }\n }).catch(({ response }) => {\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n\n return;\n }\n\n dispatch(actionTemplate(FETCH__USERS_RRQ_LIST__FAIL));\n });\n}\n\nexport const fetchUsersRequests = (token) => dispatch => {\n dispatch(actionTemplate(FETCH__USERS_RRQ_LIST));\n\n axios.get(\n resourceRequestEndpoints.root(), {\n headers: authHeaders(token)\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ ...actionTemplate(FETCH__USERS_RRQ_LIST__SUCCESS), data: response.data });\n }\n }).catch(({ response }) => {\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n\n return;\n }\n\n dispatch(actionTemplate(FETCH__USERS_RRQ_LIST__FAIL));\n });\n}\n\nexport const createResourceRequest = (number, requestType, userId, token) => dispatch => {\n dispatch(actionTemplate(CREATE__RRQ));\n\n axios.post(\n resourceRequestEndpoints.root(), {\n requestType,\n number\n }, {\n headers: !!userId ? userAndAuthHeaders(token, userId) : authHeaders(token)\n }\n ).then(response => {\n if (response.status === 200) {\n dispatch(actionTemplate(CREATE__RRQ__SUCCESS));\n }\n }).catch(({ response }) => {\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n\n return;\n }\n\n dispatch(actionTemplate(CREATE__RRQ__FAIL));\n });\n}\n\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, Button, Input } from 'antd';\nimport { DeleteOutlined } from '@ant-design/icons';\n\nimport './styles/add-resource.scss';\n\nexport default class AddResourceModal extends Component {\n state = {\n numbers: [''],\n };\n\n handleNumberChange = ({ target }) => {\n let { numbers } = this.state;\n let itemIndex = target.getAttribute('data-key');\n\n numbers[itemIndex] = target.value;\n\n this.setState({ numbers: numbers });\n };\n\n handleNumberDelete = ({ target }) => {\n let { numbers } = this.state;\n let itemIndex = +target.getAttribute('data-key');\n\n numbers = numbers.filter((item, index) => index !== itemIndex);\n\n this.setState({ numbers });\n };\n\n handleAddMore = () => {\n let { numbers } = this.state;\n numbers.push('');\n\n this.setState({ numbers });\n };\n\n handleOk = () => {\n let { numbers } = this.state;\n let { onSubmit } = this.props;\n\n numbers = numbers.filter((number) => number !== '');\n\n onSubmit(numbers);\n };\n\n handleAfterClose = () => {\n this.setState({ numbers: [''] });\n };\n\n render() {\n let { title, visible, description, onCancel, loading, numberPlaceholderText } = this.props;\n let { numbers } = this.state;\n\n return (\n \n

    {description}

    \n

    \n Your request is currently being reviewed. To check the status of your request, log into\n the portal and select the Status tab.\n

    \n {numbers.map((number, index) => {\n return (\n
    \n }\n data-key={index}\n onClick={this.handleNumberDelete}\n />\n }\n />\n
    \n );\n })}\n {numbers.length < 5 && (\n
    \n \n
    \n )}\n \n );\n }\n}\n\nAddResourceModal.propTypes = {\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n numberPlaceholderText: PropTypes.string.isRequired,\n visible: PropTypes.bool.isRequired,\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n loading: PropTypes.bool,\n};\n\nAddResourceModal.defaultProps = {\n title: 'Resource Request Modal',\n description: 'Description',\n numberPlaceholderText: 'Enter resource number',\n visible: false,\n loading: false,\n onCancel: () => {},\n onSubmit: () => {},\n};\n","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom'\nimport { Spin, Empty, Button, Statistic, Result } from 'antd';\nimport { LoadingOutlined, QuestionOutlined } from '@ant-design/icons';\n\nimport { routeBuilder } from '../../routing';\nimport { createResourceRequest } from '../../store/resourceRequests/actionCreators';\nimport { fetchUsersRequests, fetchUsersRequestsByUserId } from '../../store/resourceRequests/actionCreators';\nimport AddResourceModal from '../Modals/AddResourceModal';\n\nimport './loan-list.less';\n\nconst loanListLabels = {\n modals: {\n addResource: {\n title: 'Request Loan Info',\n descripion: 'Please enter desired Loan Number to be added. You may enter multiple account numbers by selecting ‘Add more’.',\n numberPlaceholderText: 'Enter loan number'\n }\n }\n}\n\nconst statisticCommonProps = {\n precision: 2,\n prefix: '$'\n};\n\nconst LoanList = ({\n loading, items, userResourceRequests: { isCreateResourceRequestInProgress },\n user: {\n token\n },\n createResourceRequest,\n fetchUsersRequests,\n fetchUsersRequestsByUserId,\n userId\n}) => {\n const [isLoanRequestModalVisible, setLoanRequestModalVisible] = useState(false);\n\n const toggleModal = () => {\n setLoanRequestModalVisible(!isLoanRequestModalVisible);\n };\n\n const handleRequestsSubmit = (numbers) => {\n const uniqueNumbers = new Set(numbers);\n const promises = [];\n\n for (let loanNumber of uniqueNumbers) {\n promises.push(createResourceRequest(loanNumber, 0, userId, token));\n }\n\n Promise.all(promises).then(() => {\n setLoanRequestModalVisible(false);\n\n if (userId) {\n fetchUsersRequestsByUserId(userId, token);\n } else {\n fetchUsersRequests(token);\n }\n });\n };\n\n if (loading) {\n return (\n \n }\n />\n );\n }\n\n if (items && items.length === 0) {\n return (\n <>\n \n \n Request Loan Info\n \n \n \n \n );\n }\n\n return (\n
    \n {\n items && items.map((item) => (\n
    \n
    \n \n

    {item.number}{item.name}

    \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n ))\n }\n {\n items && items.length > 0 && (\n
    \n }\n extra={\n \n }\n />\n \n
    \n )\n }\n
    \n )\n}\n\nLoanList.defaultProps = {\n loading: false,\n items: []\n};\n\nexport default connect(\n ({ userResourceRequests, user }) => ({ userResourceRequests, user }),\n { createResourceRequest, fetchUsersRequests, fetchUsersRequestsByUserId }\n)(LoanList);\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\n\nimport { fetchUserProfile } from '../../store/userProfile/actionCreators'\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport LoanList from '../../components/LoanList/LoanList';\n\nconst LoansPage = ({\n match: {\n params: {\n userId\n }\n },\n user: {\n token,\n },\n userProfile: {\n isUserProfileRequested,\n loans\n },\n fetchUserProfile\n}) => {\n useEffect(() => {\n fetchUserProfile(token, userId ? userId : null);\n }, [token, userId]);\n\n return (\n \n \n \n );\n}\n\nexport default connect(\n ({ user, userProfile }) => ({ user, userProfile }),\n { fetchUserProfile }\n)(LoansPage);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { createResourceRequest } from '../../store/resourceRequests/actionCreators';\nimport { fetchUsersRequests, fetchUsersRequestsByUserId } from '../../store/resourceRequests/actionCreators';\nimport moment from 'moment';\nimport { Link } from 'react-router-dom'\nimport { Spin, Empty, Button, Table, Result } from 'antd';\nimport { LoadingOutlined, QuestionOutlined } from '@ant-design/icons';\nimport AddResourceModal from '../Modals/AddResourceModal';\nimport { routeBuilder } from '../../routing';\nimport { wrapNegativeAndAlign } from '../../utility';\n\nimport './_investmentList.scss';\n\nconst { Column } = Table;\n\nconst investmentListLabels = {\n modals: {\n addResource: {\n title: 'Request Investment Information',\n description: 'Please enter desired Account Number to be added. You may enter multiple account numbers by selecting ‘Add more’.',\n numberPlaceholderText: 'Enter account number'\n }\n }\n}\n\nclass InvestmentList extends Component {\n state = {\n isAddResourceModalVisible: false,\n }\n\n toggleModal = () => {\n let { isAddResourceModalVisible } = this.state;\n\n this.setState({ isAddResourceModalVisible: !isAddResourceModalVisible });\n }\n\n handleRequestsSubmit = numbers => {\n let { user: { token }, createResourceRequest, fetchUsersRequestsByUserId, fetchUsersRequests, userId } = this.props;\n let uniqueNumbers = new Set(numbers);\n let promises = [];\n\n for (let investmentNumber of uniqueNumbers) {\n promises.push(createResourceRequest(investmentNumber, 1, userId, token));\n }\n\n Promise.all(promises).then(() => {\n this.setState({ isAddResourceModalVisible: false }, () => {\n if (!!userId) {\n fetchUsersRequestsByUserId(userId, token);\n } else {\n fetchUsersRequests(token);\n }\n });\n });\n }\n\n render() {\n let { isAddResourceModalVisible } = this.state;\n let {\n loading,\n items,\n userId,\n userResourceRequests: {\n isCreateResourceRequestInProgress\n }\n } = this.props;\n\n if (loading) {\n return (\n \n }\n />\n );\n }\n\n if (!!items && items.length === 0) {\n return (\n <>\n \n \n Request Investment Info\n \n \n \n \n );\n }\n\n return (\n
    \n {\n !!items && items.map((item) => (\n
    \n \n

    \n {item.number}\n {item.name}\n

    \n \n \n {\n return (\n \n {number}\n );\n }}\n />\n \n wrapNegativeAndAlign(num)} />\n wrapNegativeAndAlign(num)} />\n wrapNegativeAndAlign(num)}/>\n `${num.toFixed(4)}%`}/>\n ({!!value ? moment(value).format('DD/MM/YYYY') : '--'})} />\n
    \n
    \n ))\n }\n {\n !!items && items.length > 0 && (\n
    \n }\n extra={\n \n }\n />\n \n
    \n )\n }\n
    \n );\n }\n}\n\nInvestmentList.defaultProps = {\n loading: false\n};\n\nexport default connect(\n ({ user, userResourceRequests }) => ({ user, userResourceRequests }),\n { createResourceRequest, fetchUsersRequestsByUserId, fetchUsersRequests }\n)(InvestmentList);\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\n\nimport { fetchUserProfile } from '../../store/userProfile/actionCreators'\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport InvestmentsList from '../../components/InvestmentList/InvestmentList';\n\nconst InvestmentsPage = ({\n match: {\n params: {\n userId\n }\n },\n user: {\n token,\n },\n userProfile: {\n isUserProfileRequested,\n investments\n },\n fetchUserProfile\n}) => {\n useEffect(() => {\n fetchUserProfile(token, userId ? userId : null);\n }, [token, userId]);\n\n return (\n \n \n \n );\n}\n\nexport default connect(\n ({ user, userProfile }) => ({ user, userProfile }),\n { fetchUserProfile }\n)(InvestmentsPage);\n","export const FETCH__INVESTMENT_DETAILS = 'FETCH__INVESTMENT_DETAILS';\r\nexport const FETCH__INVESTMENT_DETAILS__SUCCESS = 'FETCH__INVESTMENT_DETAILS__SUCCESS';\r\nexport const FETCH__INVESTMENT_DETAILS__FAIL = 'FETCH__INVESTMENT_DETAILS__FAIL';\r\n\r\nexport const FETCH__ACCOUNT_STATEMENTS = 'FETCH__ACCOUNT_STATEMENTS';\r\nexport const FETCH__ACCOUNT_STATEMENTS__SUCCESS = 'FETCH__ACCOUNT_STATEMENTS__SUCCESS';\r\nexport const FETCH__ACCOUNT_STATEMENTS__FAIL = 'FETCH__ACCOUNT_STATEMENTS__FAIL';","export const REQUEST__MOVE_TO_VAULT = 'REQUEST__MOVE_TO_VAULT';\r\nexport const REQUEST__MOVE_TO_VAULT_SUCCESS = 'REQUEST__MOVE_TO_VAULT_SUCCESS';\r\nexport const REQUEST__MOVE_TO_VAULT_FAIL = 'REQUEST__MOVE_TO_VAULT_FAIL';\r\n\r\nexport const DOWNLOAD__VAULT_FILE = 'DOWNLOAD__VAULT_FILE';\r\nexport const DOWNLOAD__VAULT_FILE__SUCCESS = 'DOWNLOAD__VAULT_FILE__SUCCESS';\r\nexport const DOWNLOAD__VAULT_FILE__FAIL = 'DOWNLOAD__VAULT_FILE__FAIL';\r\n\r\nexport const FETCH__USER_STATEMENTS = 'FETCH__USER_STATEMENTS';\r\nexport const FETCH__USER_STATEMENTS__SUCCESS = 'FETCH__USER_STATEMENTS__SUCCESS';\r\nexport const FETCH__USER_STATEMENTS__FAIL = 'FETCH__USER_STATEMENTS__FAIL';","import {\n REQUEST__MOVE_TO_VAULT,\n REQUEST__MOVE_TO_VAULT_FAIL,\n REQUEST__MOVE_TO_VAULT_SUCCESS,\n DOWNLOAD__VAULT_FILE,\n DOWNLOAD__VAULT_FILE__FAIL,\n DOWNLOAD__VAULT_FILE__SUCCESS,\n FETCH__USER_STATEMENTS,\n FETCH__USER_STATEMENTS__SUCCESS,\n FETCH__USER_STATEMENTS__FAIL,\n} from './actions';\nimport { LOG_OUT } from '../user/actions';\nimport { authHeaders, actionTemplate, userAndAuthHeaders } from '../shared';\nimport axios from 'axios';\nimport { statementEndpoints } from '../../const/backend';\nimport FileSaver from 'file-saver';\n\nconst filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n\nexport const moveToVault = (statementId, token) => dispatch => {\n dispatch({ ...actionTemplate(REQUEST__MOVE_TO_VAULT), fileId: statementId });\n\n return new Promise((resolve, reject) => {\n axios.post(\n statementEndpoints.moveToVault(statementId),\n { statementId: statementId },\n { headers: { ...authHeaders(token) }}\n ).then(response => {\n if (response.status === 200) {\n dispatch(actionTemplate(REQUEST__MOVE_TO_VAULT_SUCCESS));\n resolve();\n }\n }).catch(({ response }) => {\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n reject();\n\n return;\n }\n\n dispatch(actionTemplate(REQUEST__MOVE_TO_VAULT_FAIL))\n reject();\n });\n })\n}\n\nexport const downloadFile = (statementId, token) => dispatch => {\n dispatch({ ...actionTemplate(DOWNLOAD__VAULT_FILE), fileId: statementId });\n\n return new Promise((resolve, reject) => {\n axios.get(\n statementEndpoints.downloadStatement(statementId), {\n responseType: 'blob',\n timeout: 30000,\n headers: { ...authHeaders(token) }\n }\n ).then(response => {\n if (response.status === 200) {\n let matches = filenameRegex.exec(response.headers['content-disposition']);\n let filename = matches[1].replace(/['\"]/g, '');\n\n dispatch(actionTemplate(DOWNLOAD__VAULT_FILE__SUCCESS));\n FileSaver.saveAs(response.data, filename);\n resolve();\n }\n }).catch(({ response }) => {\n dispatch(actionTemplate(DOWNLOAD__VAULT_FILE__FAIL));\n reject();\n });\n });\n}\n\nexport const fetchUsersStatements = (userId, token) => dispatch => {\n dispatch(actionTemplate(FETCH__USER_STATEMENTS));\n\n const headers = !userId\n ? authHeaders(token)\n : userAndAuthHeaders(token, userId);\n\n axios.get(\n statementEndpoints.userStatements(),\n { headers }\n ).then(response => {\n if (response.status === 200) {\n dispatch({ ...actionTemplate(FETCH__USER_STATEMENTS__SUCCESS), statements: response.data })\n }\n }).catch(({ response }) => {\n if (response.status === 401) {\n dispatch(actionTemplate(LOG_OUT));\n\n return;\n }\n\n dispatch(actionTemplate(FETCH__USER_STATEMENTS__FAIL));\n });\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { Table, Tooltip, Empty } from 'antd';\nimport { InfoCircleOutlined } from '@ant-design/icons';\nimport { wrapNegativeAndAlign } from '../../utility';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\nimport { routeBuilder } from '../../routing';\n\nimport './_assetTable.scss';\n\nconst { Column } = Table;\n\nconst AssetTable = ({ assets, urlContext: { userId, investmentId } }) => {\n if (!assets || assets.length === 0) {\n return (\n \n );\n }\n\n return (\n \n {\n return (\n \n {number}\n \n );\n }}\n />\n \n wrapNegativeAndAlign(num)}\n />\n {\n return !record.isSymbolExists ? (\n wrapNegativeAndAlign(num)\n ) : (\n <>\n \n \n \n {wrapNegativeAndAlign(num)}\n \n );\n }}\n />\n wrapNegativeAndAlign(num)}\n />\n `${num.toFixed(4)}%`}\n />\n (!!date ? moment(date).format('MM/DD/YYYY') : '')}\n />\n \n );\n};\n\nexport default AssetTable;\n\nAssetTable.propTypes = {\n assets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n cost: PropTypes.number,\n description: PropTypes.string,\n marketValue: PropTypes.number,\n maturity: PropTypes.date,\n number: PropTypes.string,\n rate: PropTypes.number,\n receivable: PropTypes.number,\n })\n ),\n urlContext: PropTypes.shape({\n userId: PropTypes.string,\n investmentId: PropTypes.string.isRequired,\n }).isRequired,\n};\n","import React from 'react';\nimport moment from 'moment';\nimport { Table } from 'antd';\nimport { wrapNegativeAndAlign } from '../../utility';\n\nimport './_accountActivityTable.scss';\n\nconst { Column } = Table;\n\nconst AccountActivityTable = ({ activities }) => {\n const keyedActivities = activities.map((item, index) => ({\n ...item,\n key: `acc-activity-${index}`\n }));\n\n return (\n
    \n \n \n moment(date).format('MM/DD/YYYY')} />\n \n \n \n wrapNegativeAndAlign(num)} className=\"acc-activity-table_number-cell\"/>\n \n
    \n );\n}\n\nexport default AccountActivityTable;\n","import React, { Component } from 'react';\nimport { Table, Button, Tag, Popover, Alert } from 'antd';\nimport { ReloadOutlined, InfoCircleOutlined } from '@ant-design/icons';\nimport moment from 'moment';\n\nimport './StatementTable.styles.less';\n\nconst { Column } = Table;\n\nexport default class StatementTable extends Component {\n state = {\n isDownloadInfoVisible: false\n };\n\n handleVisibleChange = visible => {\n this.setState({ isDownloadInfoVisible: visible });\n }\n\n renderDownloadInstructions = () => {\n return (\n
    \n
      \n
    • Click Generate PDF
    • \n As a result, status changes from Available to Generating...\n
    • Click Refresh button on top of the statements table
    • \n
    • Wait until status changes to In Vault and click Download
    • \n
    \n \n
    \n )\n }\n\n render() {\n let { statements, onMoveToVault, onDownloadFile, onRefreshTable, fileIdMoving, downloadFileId, loading } = this.props;\n let statementsKeyed = statements.map((st, index) => ({ ...st, key:index }));\n\n return (\n (\n
    \n \n \n \n \n
    \n )}\n >\n moment(date).format('MM/DD/YYYY')}\n />\n {\n const handleMoveToVault = () => {\n let { id } = record;\n\n onMoveToVault(id);\n }\n\n const handleDownload = () => {\n let { id } = record;\n\n onDownloadFile(id);\n }\n\n if (isInVault) {\n let isDownloadPreparing = downloadFileId === record.id;\n let buttonText = isDownloadPreparing ?\n 'Preparing...' :\n 'Download';\n\n return (\n <>\n In Vault\n \n {buttonText}\n \n \n );\n }\n\n let { isRequested } = record;\n\n return isRequested ?\n (Generating...) : (\n <>\n Available\n \n Generate PDF\n \n );\n }}\n />\n \n );\n }\n}\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { Spin, Result, Button } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport { routes, routeBuilder } from '../../routing';\nimport { fetchInvestmentDetails, updateStatements } from '../../store/investmentDetails/actionCreators';\nimport { moveToVault, downloadFile } from '../../store/statements/actionCreators';\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport InvestmentYearSummary from '../../components/InvestmentYearSummary/InvestmentYearSummary';\nimport AssetTable from '../../components/AssetTable/AssetTable';\nimport AccountActivityTable from '../../components/AccountActivityTable/AccountActivityTable';\nimport StatementTable from '../../components/StatementTable/StatementTable';\n\nimport './investment-details.less';\n\nconst InvestmentDetailsPage = ({\n match: {\n params: {\n userId,\n investmentId,\n }\n },\n user: {\n token\n },\n investmentDetails: {\n isInvestmentDetailsFetched,\n isInvestmentDetailsFetchFailed,\n isStatementUpdateRequested,\n investmentDetails\n },\n statements: {\n fileIdRequesed,\n downloadFileId,\n },\n fetchInvestmentDetails,\n moveToVault,\n updateStatements,\n downloadFile\n}) => {\n const backLink = !userId\n ? `${routes.userInvestments}`\n : `${routeBuilder.userProfile(userId)}/investments`;\n\n useEffect(() => {\n loadInvestmentDetails(investmentId, token);\n }, [token, investmentId]);\n\n const loadInvestmentDetails = () => {\n fetchInvestmentDetails && fetchInvestmentDetails(investmentId, token);\n }\n\n const handleFileDownload = (statementId) => {\n downloadFile(statementId, token);\n }\n\n const handleMoveToVault = async (statementId) => {\n await moveToVault(statementId, token);\n await updateStatements(investmentId, token);\n }\n\n const handleStatementsTableRefresh = () => {\n updateStatements(investmentId, token);\n }\n\n if (isInvestmentDetailsFetched) {\n return (\n \n }\n />\n );\n }\n\n if (isInvestmentDetailsFetchFailed || !investmentDetails) {\n return (\n loadInvestmentDetails()}>Refresh Page\n )}\n />\n );\n }\n\n return (\n \n
    \n
    \n

    \n Investments\n /\n {investmentDetails.number}\n {investmentDetails.name}\n

    \n
    \n
    \n
    \n

    Statements

    \n \n
    \n
    \n
    \n

    Assets

    \n \n
    \n
    \n

    Account Activity

    \n \n
    \n
    \n
    \n
    \n \n );\n};\n\nexport default connect(\n ({ user, investmentDetails, statements }) => ({ user, investmentDetails, statements }),\n { fetchInvestmentDetails, moveToVault, downloadFile, updateStatements }\n)(InvestmentDetailsPage);\n","import axios from 'axios';\r\nimport { investmentDetailsEndpoint } from '../../const/backend';\r\nimport { actionTemplate, authHeaders } from '../shared';\r\nimport { LOG_OUT } from '../user/actions';\r\nimport {\r\n FETCH__INVESTMENT_DETAILS,\r\n FETCH__INVESTMENT_DETAILS__FAIL,\r\n FETCH__INVESTMENT_DETAILS__SUCCESS,\r\n FETCH__ACCOUNT_STATEMENTS,\r\n FETCH__ACCOUNT_STATEMENTS__SUCCESS,\r\n FETCH__ACCOUNT_STATEMENTS__FAIL\r\n} from './actions';\r\n\r\nexport const fetchInvestmentDetails = (investmentId, token) => dispatch => {\r\n dispatch(actionTemplate(FETCH__INVESTMENT_DETAILS));\r\n\r\n axios.get(\r\n investmentDetailsEndpoint.get(investmentId),\r\n { headers: authHeaders(token) }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ ...actionTemplate(FETCH__INVESTMENT_DETAILS__SUCCESS), details: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__INVESTMENT_DETAILS__FAIL));\r\n });\r\n}\r\n\r\nexport const updateStatements = (investmentId, token) => dispatch => {\r\n dispatch(actionTemplate(FETCH__ACCOUNT_STATEMENTS));\r\n\r\n axios.get(\r\n investmentDetailsEndpoint.accountStatements(investmentId),\r\n { headers: { ...authHeaders(token) } }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({\r\n ...actionTemplate(FETCH__ACCOUNT_STATEMENTS__SUCCESS),\r\n statements: response.data\r\n });\r\n }\r\n }).catch(({ response }) => {\r\n dispatch(actionTemplate(FETCH__ACCOUNT_STATEMENTS__FAIL));\r\n\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n }\r\n });\r\n};","export const FETCH__ASSET_DETAILS = 'FETCH__ASSET_DETAILS';\r\nexport const FETCH__ASSET_DETAILS__SUCCESS = 'FETCH__ASSET_DETAILS__SUCCESS';\r\nexport const FETCH__ASSET_DETAILS__FAIL = 'FETCH__ASSET_DETAILS__FAIL';","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Table } from 'antd';\nimport moment from 'moment';\nimport classNames from 'classnames';\nimport { wrapNegativeAndAlign } from '../../utility';\n\nimport './_assetStatementTable.scss';\n\nconst { Column } = Table;\n\nconst AssetStatementsTable = ({ statements }) => {\n const keyedStatements = statements.map((item, index) => ({ ...item, key: index }));\n const rootClasses = classNames('asset-statements-table_root', {\n 'asset-statements-table_root--no-one-page': !!statements && statements.length > 20,\n });\n\n return (\n \n moment(date).format('MM/DD/YYYY')}\n />\n wrapNegativeAndAlign(num)}\n className=\"asset-statements-table_number-cell\"\n />\n wrapNegativeAndAlign(num)}\n className=\"asset-statements-table_number-cell\"\n />\n \n );\n};\n\nexport default AssetStatementsTable;\n\nAssetStatementsTable.propTypes = {\n statements: PropTypes.arrayOf(\n PropTypes.shape({\n date: PropTypes.date,\n cost: PropTypes.number,\n marketValue: PropTypes.marketValue,\n })\n ),\n};\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { Result, Button, Spin } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport { routes, routeBuilder } from '../../routing';\nimport { fetchAssetDetails } from '../../store/assetDetails/actionCreators';\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport AssetStatementsTable from '../../components/AssetStatementsTable/AssetStatementsTable';\n\nimport './asset-details.less';\n\nconst AssetDetailsPage = ({\n match: {\n params: {\n userId,\n investmentId,\n assetId\n }\n },\n user: {\n token\n },\n assetDetails: {\n assetDetails,\n isAssetDetailsFetched,\n isAssetDetailsFetchFailed,\n },\n fetchAssetDetails\n}) => {\n const investmentLink = !userId\n ? routeBuilder.investmentDetails(investmentId)\n : routeBuilder.userAccountInvestmentDetails(userId, investmentId);\n const homeLink = !userId\n ? routes.userInvestments\n : routeBuilder.userAccountInvestments(userId);\n\n useEffect(() => {\n fetchAssetDetails(userId, investmentId, assetId, token);\n }, [userId, investmentId, assetId, token]);\n\n if (isAssetDetailsFetched) {\n return (\n \n }\n />\n );\n }\n\n if (isAssetDetailsFetchFailed || !assetDetails) {\n return (\n fetchAssetDetails(userId, investmentId, assetId, token)}>Refresh Page\n )}\n />\n );\n }\n\n return (\n \n
    \n
    \n

    \n Investments\n /\n {assetDetails.investmentNumber}: {assetDetails.investmentName}\n /\n {assetDetails.number} {assetDetails.name}\n

    \n
    \n
    \n

    History

    \n \n
    \n
    \n \n )\n}\n\nexport default connect(\n ({ user, assetDetails }) => ({ user, assetDetails }),\n { fetchAssetDetails }\n)(AssetDetailsPage);\n","import axios from 'axios';\r\nimport { investmentDetailsEndpoint } from '../../const/backend';\r\nimport { actionTemplate, authHeaders, userAndAuthHeaders } from '../shared';\r\nimport { LOG_OUT } from '../user/actions';\r\nimport {\r\n FETCH__ASSET_DETAILS,\r\n FETCH__ASSET_DETAILS__FAIL,\r\n FETCH__ASSET_DETAILS__SUCCESS\r\n} from './actions';\r\n\r\nexport const fetchAssetDetails = (userId, investmentId, assetId, token) => dispatch => {\r\n dispatch(actionTemplate(FETCH__ASSET_DETAILS));\r\n\r\n axios.get(\r\n investmentDetailsEndpoint.assetDetails(investmentId, assetId),\r\n { headers: !!userId ? userAndAuthHeaders(token, userId) : authHeaders(token) }\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({ ...actionTemplate(FETCH__ASSET_DETAILS__SUCCESS), details: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__ASSET_DETAILS__FAIL));\r\n });\r\n}\r\n","export const statuses = {\r\n open: 0,\r\n accepted: 1,\r\n declined: 2,\r\n approved: 3\r\n};\r\n\r\nexport const statusDescriptionMap = {\r\n 0: 'Open',\r\n 1: 'Accepted',\r\n 2: 'Declined',\r\n 3: 'Approved'\r\n};","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport moment from 'moment';\nimport { fetchUsersRequests, fetchUsersRequestsByUserId } from '../../store/resourceRequests/actionCreators';\nimport { statuses as resourceRequestStatuses } from '../../const/resource-request';\nimport { resourceRequestNumberTemplate } from '../../utility';\nimport { Spin, Result, Table, Modal, Comment, Avatar, Alert } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport { routes, routeBuilder } from '../../routing';\nimport { adminRole, userRole } from '../../const/user';\n\nimport './_userProfile.scss';\n\nconst { Column } = Table;\n\nconst statusMap = {\n '0': 'Open',\n '1': 'Accepted',\n '2': 'Declined',\n '3': 'Approved'\n}\n\nclass ResourceRequestList extends Component {\n componentDidMount() {\n let { user: { token }, fetchUsersRequests, fetchUsersRequestsByUserId, userId } = this.props;\n\n if (!!userId) {\n fetchUsersRequestsByUserId(userId, token);\n } else {\n fetchUsersRequests(token);\n }\n }\n\n render() {\n let {\n userResourceRequests: {\n isUsersRequestsFetched,\n isUsersRequestFetchFailed,\n items\n },\n user: {\n role\n }\n } = this.props;\n\n if (isUsersRequestsFetched) {\n return (\n \n }\n />\n );\n }\n\n if (isUsersRequestFetchFailed) {\n return (\n \n );\n }\n\n let itemsActive = !!items && items.filter((item) => item.status !== resourceRequestStatuses.approved);\n\n return (\n
    \n {\n role === adminRole &&\n \n }\n

    *double click on 'Declined' requests to see details

    \n {\n if (record.status !== 2) return;\n\n return {\n onDoubleClick: event => {\n Modal.info({\n title: 'Request was declined',\n className: 'rejected-rrq_modal',\n content: (\n <>\n

    Your request was declined. Please take a look at the details below:

    \n {record.remark}

    }\n avatar={TMF}\n datetime={{moment(record.lastModifiedOn).fromNow()}}\n />\n \n )\n })\n }\n }\n }}\n >\n {\n role === adminRole && (\n (\n {resourceRequestNumberTemplate(id)}\n )}\n />\n )\n }\n ({type === 0 ? 'Loan' : 'Investment' })}/>\n \n (role === userRole ?\n {status > 1 ? statusMap[status] : 'Pending Approval'} :\n {statusMap[status]}\n )}\n />\n (\n
    \n {moment(createdOn).format('MM/DD/YYYY')}\n {`(${moment(createdOn).fromNow()})`}\n
    \n )}\n />\n (\n
    \n {moment(lastModifiedOn).format('MM/DD/YYYY')}\n {`(${moment(lastModifiedOn).fromNow()})`}\n
    \n )}\n />\n \n
    \n );\n }\n}\n\nexport default connect(\n ({ user, userResourceRequests }) => ({ user, userResourceRequests }),\n { fetchUsersRequests, fetchUsersRequestsByUserId }\n)(ResourceRequestList);\n","import React from 'react';\n\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport ResourceRequestList from '../../components/UserProfile/ResourceRequestsList';\n\nconst ResourceRequestStatusPage = ({\n match: {\n params: {\n userId\n }\n }\n}) => {\n return (\n \n \n \n );\n};\n\nexport default ResourceRequestStatusPage;\n","import React from 'react';\nimport moment from 'moment';\nimport { Button } from 'antd';\nimport { DownloadOutlined } from '@ant-design/icons';\n\n\nconst VaultInvestmentView = ({ investmentView: { accountNumber, accountName, statements }, onDownloadClick }) => (\n
    \n

    {accountNumber} {accountName}

    \n {\n !!statements &&\n (\n
    \n {\n statements.map((statement, index) => {\n return statement.isDownloadAvailable ?\n () :\n (null);\n })\n }\n
    \n )\n }\n
    \n);\n\nexport default VaultInvestmentView;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { fetchUsersStatements, downloadFile } from '../../store/statements/actionCreators';\n\nimport { Spin, Result, Alert } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport VaultInvestmentView from './VaultInvestmentView';\n\nimport './_statementsVault.scss';\n\nclass StatementsVault extends Component {\n componentDidMount() {\n let {\n user: {\n token\n },\n userId,\n fetchUsersStatements\n } = this.props;\n\n fetchUsersStatements(userId, token);\n }\n\n handleFileDownload = statementId => {\n let {\n user: {\n token\n },\n downloadFile\n } = this.props;\n\n downloadFile(statementId, token);\n }\n\n render() {\n let {\n statements: {\n isUserStatementsRequested,\n userStatements\n }\n } = this.props;\n\n if (isUserStatementsRequested) {\n return (\n \n }\n />\n );\n }\n\n if (!!userStatements) {\n let hasItemsToDownload = userStatements.map(statement => {\n return statement.statements.some(x => x.isDownloadAvailable);\n });\n\n let isThereNothingToDownload = hasItemsToDownload.every(item => !item);\n\n if (isThereNothingToDownload) {\n return (\n \n
      \n
    • Go to 'Investments' tab of your account
    • \n
    • Choose an Investment and open its details
    • \n
    • Initiate PDF generation by clicking on 'Generate PDF' button near desired statement from 'Statemets' table
    • \n
    \n \n \n )\n }\n }\n\n return (\n
    \n {\n !!userStatements && userStatements.map((statement, index) => {\n let hasItemsToDownload = statement.statements.some(x => x.isDownloadAvailable);\n\n return hasItemsToDownload && ;\n })\n }\n
    \n );\n }\n}\n\nexport default connect(\n ({ user, statements }) => ({ user, statements }),\n { fetchUsersStatements, downloadFile }\n)(StatementsVault);","import React from 'react';\n\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport StatementsVault from '../../components/StatementsVault/StatementsVault';\n\nconst StatementsVaultPage = ({\n match: {\n params: {\n userId\n }\n }\n}) => (\n \n \n \n);\n\nexport default StatementsVaultPage;\n","export const FETCH_STATES = 'FETCH_STATES';\r\nexport const FETCH_STATES_SUCCESS = 'FETCH_STATES_SUCCESS';\r\nexport const FETCH_STATES_FAILED = 'FETCH_STATES_FAILED';\r\n\r\nexport const FETCH_CITIES = 'FETCH_CITIES';\r\nexport const FETCH_CITIES_SUCCESS = 'FETCH_CITIES_SUCCESS';\r\nexport const FETCH_CITIES_FAILED = 'FETCH_CITIES_FAILED';","import axios from 'axios';\nimport { geoEndpoints } from '../../const/backend';\nimport {\n FETCH_STATES,\n FETCH_STATES_SUCCESS,\n FETCH_STATES_FAILED,\n FETCH_CITIES,\n FETCH_CITIES_SUCCESS,\n FETCH_CITIES_FAILED,\n} from './actions';\n\nexport const fetchStates = () => dispatch => {\n dispatch({ type: FETCH_STATES });\n\n axios.get(\n geoEndpoints.states()\n ).then(response => {\n if (response.status === 200) {\n dispatch({\n type: FETCH_STATES_SUCCESS,\n states: response.data\n });\n }\n }).catch(() => {\n dispatch({ type: FETCH_STATES_FAILED });\n });\n}\n\nexport const fetchCities = (stateId) => dispatch => {\n dispatch({ type: FETCH_CITIES });\n\n axios.get(\n geoEndpoints.cities(stateId)\n ).then(response => {\n if (response.status === 200) {\n dispatch({\n type: FETCH_CITIES_SUCCESS,\n cities: response.data\n });\n }\n }).catch(() => {\n dispatch({ type: FETCH_CITIES_FAILED });\n });\n}\n\n","const registerFormLabels = {\n validation: {\n fullName: {\n tooShort: 'It\\'s too short',\n tooLong: '350 symbols max',\n required: 'It\\'s required'\n },\n organizationName: {\n tooLong: '300 symbols max',\n },\n city: {\n required: 'It\\'s required',\n tooLong: '50 characters max'\n },\n email: {\n wrongFormat: 'Wrong email format',\n required: 'Can\\'t be empty',\n tooLong: '300 symbols max'\n },\n password: {\n minLength: 'At least 8 characters long',\n maxLength: '32 symbols max',\n capitalLetterRequired: 'At least one capital letter',\n digitReuired: 'At least one digit',\n specialCharacterRequired: 'One or more special character',\n required: 'Can\\'t be empty'\n },\n confirmPassword: {\n required: 'Can\\'t be empty',\n sameAsPassword: 'Doesn\\'t match'\n }\n },\n controls: {\n fullName: {\n label: 'Full Name',\n placeholder: 'e.g. John Doe'\n },\n organization: {\n label: 'Organization',\n placeholder: 'Your organization name'\n },\n state: {\n label: 'State',\n placeholder: 'It\\'s needed to choose city'\n },\n city: {\n label: 'City',\n placeholder: 'Where are you from?'\n },\n email: {\n label: 'Email Address',\n placeholder: 'We\\'ll send you confirmation email'\n },\n password: {\n label: 'Password',\n placeholder: 'Put password here'\n },\n confirmPassword: {\n label: 'Confirm Password',\n placeholder: 'Have to match with password'\n }\n },\n buttons: {\n backToLogin: 'Back to Login',\n register: 'Register',\n goToLogin: 'Go to Login page'\n },\n header: 'Registration',\n description: 'Please, fill form below to complete registration process',\n result: {\n header: 'Thank you for your registration!',\n description: 'We\\'ve sent you an email with further instructions to complete your registration.'\n }\n};\n\nexport default registerFormLabels;\n","import * as Yup from 'yup';\nimport registerFormLabels from '../../labels/register-form';\n\nexport const initialFormValues = {\n fullName: '',\n organizationName: '',\n stateId: undefined,\n city: '',\n password: '',\n confirmPassword: undefined,\n email: '',\n};\n\nexport const profileSettingsSchema = Yup.object().shape({\n fullName: Yup.string()\n .min(3, registerFormLabels.validation.fullName.tooShort)\n .required(registerFormLabels.validation.fullName.required),\n organization: Yup.string()\n .notRequired(),\n stateId: Yup.number()\n .notRequired(),\n city: Yup.string()\n .required(registerFormLabels.validation.city.required)\n .max(50, registerFormLabels.validation.city.tooLong),\n password: Yup.string()\n .min(8, registerFormLabels.validation.password.minLength)\n .matches(/[A-Z]+/, registerFormLabels.validation.password.capitalLetterRequired)\n .matches(/[0-9]+/, registerFormLabels.validation.password.digitReuired)\n .matches(/\\W+/, registerFormLabels.validation.password.specialCharacterRequired),\n confirmPassword: Yup.string()\n .test('same-as-pass-if-not-empty', registerFormLabels.validation.confirmPassword.sameAsPassword, function(item) {\n if (!!this.parent.password) {\n return this.parent.password === this.parent.confirmPassword\n }\n\n return true;\n })\n .oneOf([Yup.ref('password'), null], registerFormLabels.validation.confirmPassword.sameAsPassword)\n});\n","import React from 'react';\nimport { Typography } from 'antd';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\n\nimport './form-control.less';\n\nconst { Text } = Typography;\n\nconst FormControl = ({\n id,\n caption,\n touched,\n error,\n children\n}) => {\n return (\n
    \n
    \n \n
    \n
    \n {\n touched && error && (\n <>\n \n {error}\n \n )\n }\n
    \n
    \n {children}\n
    \n
    \n );\n}\n\nexport default FormControl;\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useFormik } from 'formik';\nimport { Input, Button, Select, Spin, message } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\n\nimport { fetchStates } from '../../store/geo/actionCreators';\nimport { fetchUserProfileSettings, resetProfileSettings, updateProfileSettings } from '../../store/userProfile/actionCreators';\nimport { initialFormValues, profileSettingsSchema } from './formik.config';\nimport FormControl from '../../common/FormControl/FormControl';\nimport registerFormLabels from '../../labels/register-form';\n\nimport './profile-settings.less';\n\nconst { Password } = Input;\nconst { Option } = Select;\n\nconst ProfileSettingsForm = ({\n fetchStates,\n fetchUserProfileSettings,\n updateProfileSettings,\n resetProfileSettings,\n geo: {\n states,\n isStatesRequested,\n isStatesRequestFailed,\n },\n userProfile: {\n isSettingsRequested,\n isSettingsUpdateInProgress,\n settings,\n },\n user: {\n token,\n email\n },\n}) => {\n const [formValues, setFormValues] = useState(initialFormValues);\n\n useEffect(() => {\n if (!settings) {\n fetchStates();\n fetchUserProfileSettings(token);\n } else {\n setFormValues({\n ...initialFormValues,\n ...settings,\n email\n });\n }\n }, [settings]);\n\n useEffect(() => () => { resetProfileSettings(); }, [])\n\n const formik = useFormik({\n initialValues: formValues,\n enableReinitialize: true,\n validationSchema: profileSettingsSchema,\n onSubmit: (values) => {\n updateProfileSettings(values, token)\n .then(() => {\n fetchUserProfileSettings(token)\n .then(() => {\n message.success('The changes have been saved', 5);\n })\n })\n .catch( () => {\n message.error('The changes have not been saved', 5);\n });\n }\n });\n\n const handleFilterOption = (inputValue, option) => {\n let { label } = option;\n\n return label\n .toLowerCase()\n .includes(inputValue.toLowerCase());\n };\n\n const handleStateChange = (value) => {\n formik.setFieldValue('stateId', value);\n };\n\n if (isSettingsRequested || !settings) {\n return (\n \n }\n />\n );\n }\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n {\n states && states.map((state) => (\n \n {state.name}\n \n ))\n }\n \n \n \n \n \n \n \n \n \n \n \n
    \n \n Save changes\n \n
    \n \n );\n};\n\nexport default connect(\n ({ user, geo, userProfile }) => ({ user, geo, userProfile }),\n { fetchStates, fetchUserProfileSettings, updateProfileSettings, resetProfileSettings }\n)(ProfileSettingsForm);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { adminRole } from '../../const/user';\nimport UserAccountPage from '../../common/pages/user-account-page/UserAccountPage';\nimport AdminPage from '../../common/pages/admin-page/AdminPage';\nimport ProfileSettingsForm from '../../user/profile-settings/ProfileSettingsForm';\n\nimport './profile-settings.less';\n\nconst ProfileSettingsPage = ({\n user: {\n role\n }\n}) => {\n return role === adminRole\n ? (\n \n
    \n \n
    \n
    \n )\n : (\n \n
    \n \n
    \n
    \n );\n}\n\nexport default connect(\n ({ user }) => ({ user }),\n {}\n)(ProfileSettingsPage);\n","export const filterFlags = {\r\n email: 0b0001,\r\n fullName: 0b0010,\r\n account: 0b0100,\r\n loan: 0b1000\r\n};\r\n\r\nexport const filterLabelsMap = {\r\n email: 'Email',\r\n fullName: 'Full Name',\r\n account: 'Account Number',\r\n loan: 'Loan Number'\r\n}\r\n\r\nexport const allChecked = 0b1111;\r\nexport const allUnchecked = 0b0000;","import React, { PureComponent } from 'react';\r\nimport { Checkbox, Button, Input } from 'antd';\r\nimport PropTypes from 'prop-types';\r\nimport { allChecked, filterFlags, filterLabelsMap } from '../../const/user-search';\r\n\r\nimport './_usersSearchPanel.scss';\r\n\r\nconst { Search } = Input;\r\n\r\nexport default class UsersSearchPanel extends PureComponent {\r\n render() {\r\n let {\r\n onCheckAll,\r\n onQueryChanged,\r\n onScopeChanged,\r\n onSearch,\r\n onUncheckAll,\r\n searchQuery,\r\n searchScope,\r\n } = this.props;\r\n\r\n return (\r\n
    \r\n
    \r\n {Object.keys(filterFlags).map((filterValue, i) => (\r\n \r\n {filterLabelsMap[filterValue]}\r\n \r\n ))}\r\n {\r\n searchScope === allChecked ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nUsersSearchPanel.propTypes = {\r\n searchScope: PropTypes.number,\r\n searchQuery: PropTypes.string,\r\n onCheckAll: PropTypes.func,\r\n onQueryChanged: PropTypes.func,\r\n onScopeChanged: PropTypes.func,\r\n onSearch: PropTypes.func,\r\n onUncheckAll: PropTypes.func,\r\n};\r\n\r\nUsersSearchPanel.defaultProps = {\r\n searchScope: 0b1111,\r\n searchQuery: '',\r\n onCheckAll: () => {},\r\n onQueryChanged: () => {},\r\n onScopeChanged: () => {},\r\n onSearch: () => {},\r\n onUncheckAll: () => {},\r\n};","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { fetchStates, fetchCities } from '../../store/geo/actionCreators';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { Button, Select } from 'antd';\r\n\r\nclass CityFilterPanel extends Component {\r\n componentDidMount() {\r\n let { fetchStates } = this.props;\r\n\r\n fetchStates();\r\n }\r\n\r\n handleFilterOption = (inputValue, option) => {\r\n let { props: { label }} = option;\r\n\r\n return label\r\n .toLowerCase()\r\n .includes(inputValue.toLowerCase());\r\n }\r\n\r\n handleStateChange = (stateId) => {\r\n let { fetchCities } = this.props;\r\n fetchCities(stateId);\r\n }\r\n\r\n render() {\r\n let {\r\n geo: {\r\n isStatesRequested,\r\n isStatesRequestFailed,\r\n states,\r\n isCitiesRequested,\r\n isCitiesRequestFailed,\r\n cities\r\n },\r\n onApplyFilter,\r\n onCityChanged,\r\n cityId\r\n } = this.props;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n {\r\n !!states && states.map((state) => (\r\n {state.name}\r\n ))\r\n }\r\n \r\n
    \r\n
    \r\n \r\n \r\n {\r\n !!cities && cities.map((city) => (\r\n \r\n
    {city.name}
    \r\n
    {`${city.county} County`}
    \r\n
    ))\r\n }\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nCityFilterPanel.propTypes = {\r\n cityId: PropTypes.number,\r\n onCityChanged: PropTypes.func,\r\n onApplyFilter: PropTypes.func,\r\n};\r\n\r\nCityFilterPanel.defaultProps = {\r\n onCityChanged: () => {},\r\n onApplyFilter: () => {},\r\n};\r\n\r\n\r\nexport default connect(\r\n ({ geo }) => ({ geo }),\r\n { fetchStates, fetchCities }\r\n)(CityFilterPanel);","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { Table, Tag, Button, Popconfirm, Tooltip } from 'antd';\nimport { InfoCircleOutlined, CloseOutlined } from '@ant-design/icons';\nimport moment from 'moment';\nimport { routeBuilder } from '../../routing';\n\nconst { Column } = Table;\n\nexport class UsersListPageable extends Component {\n onRow = (record, rowIndex) => {\n let { onUserDoubleClick } = this.props;\n\n return {\n onDoubleClick: event => { onUserDoubleClick(record.id) }\n };\n }\n\n render() {\n let {\n users,\n loading,\n itemsPerPage,\n itemsTotal,\n onPageChanged,\n onPromoteUser,\n onRevokeAccess\n } = this.props;\n let pagingProps = {\n defaultPageSize: itemsPerPage,\n hideOnSinglePage: true,\n showSizeChanger: false,\n size: 'small',\n total: itemsTotal,\n onChange: onPageChanged\n };\n\n return (\n
    \n \n \n \n {\n return record.isEmailConfirmed ?\n {email} :\n <>\n {email}\n \n \n \n \n }}\n />\n \n (!!lastLoginDate ?\n moment(lastLoginDate).format(\"MM/DD/YYYY hh:mm A\") :\n 'Unknown')\n }\n />\n {\n return record.isAdmin\n ? onRevokeAccess(record.id)}\n >\n ADMIN\n \n : onPromoteUser(record.id)}\n >\n \n \n }}/>\n {\n return (\n View Profile\n );\n }}/>\n \n
    \n );\n }\n}\n\nUsersListPageable.propTypes = {\n users: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.number,\n fullName: PropTypes.string,\n organizationName: PropTypes.string,\n email: PropTypes.string,\n city: PropTypes.string,\n isAdmin: PropTypes.bool\n })),\n loading: PropTypes.bool,\n onUserDoubleClick: PropTypes.func,\n itemsPerPage: PropTypes.number,\n itemsTotal: PropTypes.number,\n onPageChanged: PropTypes.func,\n onPromoteUser: PropTypes.func,\n onRevokeAccess: PropTypes.func,\n}\n\nUsersListPageable.defaultProps = {\n users: [],\n onUserDoubleClick: () => {},\n loading: false,\n itemsPerPage: 20,\n itemsTotal: 0,\n onPageChanged: () => {},\n onPromoteUser: () => {},\n onRevokeAccess: () => {},\n}\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { fetchUsers, promoteUser, revokeAccess } from '../../store/userManagement/actionCreators';\nimport ViewSelector from '../ViewSelector/ViewSelector';\nimport UserSearchPanel from './UsersSearchPanel';\nimport CityFilterPanel from './CityFilterPanel';\nimport { UsersListPageable } from './UsersListPageable';\nimport { Tag, message } from 'antd';\n\nimport { allChecked, allUnchecked, filterFlags } from '../../const/user-search';\nimport { routeBuilder } from '../../routing';\n\nimport './_userView.scss';\n\nexport let usersGroup = [\n { id: 0, name: 'All Users' },\n { id: 1, name: 'Registered Today' },\n { id: 2, name: 'Registered This Week' },\n { id: 3, name: 'Requires Approval' },\n { id: 4, name: 'Administrators' }\n];\n\nconst userViews = [{\n key: 'all',\n title: 'All Users'\n}, {\n key: 'registered-today',\n title: 'Registered Today'\n}, {\n key: 'registered-this-week',\n title: 'Registered This Week'\n}, {\n key: 'administrators',\n title: 'Administrators'\n}];\n\nconst viewMap = {\n 'all': 0,\n 'registered-today': 1,\n 'registered-this-week': 2,\n 'administrators': 4\n};\n\nconst ITEMS_PER_PAGE = 20;\n\nclass UsersView extends Component {\n state = {\n cityId: undefined,\n view: 'all',\n searchScope: 0b1111,\n searchQuery: '',\n filterApplied: {\n cityName: '',\n searchQuery: ''\n }\n }\n\n userActions = {\n promoteUser: undefined,\n revokeAccess: undefined\n };\n\n componentDidMount() {\n let { fetchUsers, user: { token } } = this.props;\n let { cityId, view, searchScope, searchQuery } = this.state;\n fetchUsers(0,\n ITEMS_PER_PAGE,\n { scope: searchScope, query: searchQuery },\n cityId,\n viewMap[view],\n token);\n }\n\n handleViewChange = (viewKey) => {\n this.setState({ view: viewKey }, () => {\n this.handleQueryChange();\n });\n }\n\n handleCityChange = (cityId) => {\n this.setState({ cityId });\n }\n\n handleSearchParamsChanged = ({ searchOptions, searchQuery }) => {\n this.setState({\n searchScope: searchOptions,\n searchQuery\n });\n }\n\n handleQueryChange = () => {\n let { fetchUsers, user: { token }, geo: { cities } } = this.props;\n let { cityId, view, searchScope, searchQuery } = this.state;\n let city = cities.filter(city => city.id === cityId);\n let cityName = !!city && city.length > 0\n ? city[0].name\n : '';\n\n this.setState({ filterApplied: { searchQuery, cityName }});\n\n fetchUsers(0,\n ITEMS_PER_PAGE,\n { scope: searchScope, query: searchQuery },\n cityId,\n viewMap[view],\n token);\n }\n\n handlePageChange = (page, pageSize) => {\n let { fetchUsers, user: { token } } = this.props;\n let { cityId, view, searchScope, searchQuery } = this.state;\n\n fetchUsers(page - 1,\n pageSize,\n { scope: searchScope, query: searchQuery },\n cityId,\n viewMap[view],\n token);\n }\n\n handleSearchCheckAll = () => {\n let { searchScope } = this.state;\n\n this.setState({ searchScope: searchScope | allChecked})\n }\n\n handleSearchUncheckAll = () => {\n let { searchScope } = this.state;\n\n this.setState({ searchScope: searchScope & allUnchecked});\n }\n\n handleSearchScopeChanged = ({ target: { name }}) => {\n let { searchScope } = this.state;\n this.setState({\n searchScope: searchScope ^ filterFlags[name]\n });\n }\n\n handleSearchQueryChanged = ({ target: { value }}) => {\n this.setState({ searchQuery: value });\n }\n\n handleQueryClear = () => {\n this.setState({ searchQuery: '', filterApplied: { searchQuery: '' }},\n this.handleQueryChange);\n }\n\n handleCityClear = () => {\n this.setState( { cityId: undefined, filterApplied: { cityName: '' }},\n this.handleQueryChange);\n }\n\n handlePromote = (userId) => {\n let { user: { token } } = this.props;\n let { promoteUser } = this.props;\n let hideProgress = message.loading(\"Promoting user...\", 0);\n\n promoteUser(userId, token)\n .then((isSuccess) => {\n hideProgress();\n if (isSuccess) {\n message.success(\"User was promoted successfully\");\n this.handleQueryChange();\n\n return;\n }\n })\n .catch(isSuccess => {\n hideProgress();\n message.error('User promotion failed. Please try again later');\n });\n }\n\n handleRevoke = (userId) => {\n let { user: { token } } = this.props;\n let { revokeAccess } = this.props;\n let hideProgress = message.loading(\"Revoking access\", 0);\n\n revokeAccess(userId, token)\n .then((isSuccess) => {\n hideProgress();\n if (isSuccess) {\n message.success(\"Access was revoked sucessfully\");\n this.handleQueryChange();\n }\n })\n .catch((isSuccess) => {\n hideProgress();\n message.error(\"Revoke access failed! Try again later\");\n });\n }\n\n handleUserDoubleClick = (userId) => {\n let { history } = this.props;\n\n history.push(routeBuilder.userAccountLoans(userId));\n }\n\n render() {\n let {\n userManagement: {\n isUsersFetched,\n users,\n pageInfo\n }\n } = this.props;\n let { filterApplied, searchScope, searchQuery, cityId } = this.state;\n\n return (\n
    \n
    \n \n \n
    \n
    \n \n
    \n {\n !!filterApplied && !!filterApplied.searchQuery &&\n {filterApplied.searchQuery}\n }\n {\n !!filterApplied && !!filterApplied.cityName &&\n {filterApplied.cityName}\n }\n
    \n
    \n \n
    \n );\n }\n}\n\nexport default connect(\n ({ userManagement, user, geo }) => ({ userManagement, user, geo }),\n { fetchUsers, promoteUser, revokeAccess }\n)(UsersView);\n","import React from 'react';\nimport UsersView from '../../components/UsersView/UsersView';\nimport AdminPage from '../../common/pages/admin-page/AdminPage';\n\nconst UserManagementPage = ({ history }) => {\n return (\n \n )\n};\n\nexport default UserManagementPage;\n","export const FETCH__SESSIONS = 'FETCH__SESSIONS';\r\nexport const FETCH__SESSIONS__SUCCESS = 'FETCH__SESSIONS__SUCCESS';\r\nexport const FETCH__SESSIONS__FAILED = 'FETCH__SESSIONS__FAILED';\r\n\r\nexport const FETCH__SESSION_JOBS = 'FETCH__SESSION_JOBS';\r\nexport const FETCH__SESSION_JOBS__SUCCESS = 'FETCH__SESSION_JOBS__SUCCESS';\r\nexport const FETCH__SESSION_JOBS__FAIL = 'FETCH__SESSION_JOBS__FAIL';\r\n\r\nexport const START__SESSION = 'START__SESSION';\r\nexport const START__SESSION__SUCCESS = 'START__SESSION__SUCCESS';\r\nexport const START__SESSION__FAIL = 'START__SESSION__FAIL';\r\n\r\nexport const UPDATE__SELECTED_SESSION = 'UPDATE__SELECTED_SESSION';\r\nexport const CLEAR__SELECTED_SESSION = 'CLEAR__SELECTED_SESSION';\r\n\r\nexport const CREATE__SESSION = 'CREATE__SESSION';\r\nexport const CREATE__SESSION__SUCCESS = 'CREATE__SESSION__SUCCESS';\r\nexport const CREATE__SESSION__FAIL = 'CREATE__SESSION__FAIL';\r\n\r\nexport const CANCEL__SESSION = 'CANCEL__SESSION';\r\nexport const CANCEL__SESSION__SUCCESS = 'CANCEL__SESSION__SUCCESS';\r\nexport const CANCEL__SESSION__FAIL = 'CANCEL__SESSION__FAIL';","import axios from 'axios';\r\nimport { actionTemplate, authHeaders } from '../shared';\r\nimport { LOG_OUT } from '../user/actions';\r\nimport { dataImportSessionEndpoints } from '../../const/backend';\r\nimport {\r\n FETCH__SESSIONS,\r\n FETCH__SESSIONS__SUCCESS,\r\n FETCH__SESSIONS__FAILED,\r\n FETCH__SESSION_JOBS,\r\n FETCH__SESSION_JOBS__FAIL,\r\n FETCH__SESSION_JOBS__SUCCESS,\r\n START__SESSION,\r\n START__SESSION__FAIL,\r\n START__SESSION__SUCCESS,\r\n UPDATE__SELECTED_SESSION,\r\n CLEAR__SELECTED_SESSION,\r\n CREATE__SESSION,\r\n CREATE__SESSION__SUCCESS,\r\n CREATE__SESSION__FAIL,\r\n CANCEL__SESSION,\r\n CANCEL__SESSION__FAIL,\r\n CANCEL__SESSION__SUCCESS\r\n} from './actions';\r\n\r\nexport const cancelSession = sessionId => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(CANCEL__SESSION));\r\n\r\n return axios.delete(\r\n dataImportSessionEndpoints.cancelSession(sessionId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch(actionTemplate(CANCEL__SESSION__SUCCESS));\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(CANCEL__SESSION__FAIL));\r\n });\r\n}\r\n\r\nexport const fetchDataImportSessions = token => dispatch => {\r\n dispatch(actionTemplate(FETCH__SESSIONS));\r\n\r\n return axios.get(\r\n dataImportSessionEndpoints.list(),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__SESSIONS__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__SESSIONS__FAILED));\r\n });\r\n}\r\n\r\nexport const fetchDataImportJobsBySessionId = (token, sessionId) => dispatch => {\r\n dispatch(actionTemplate(FETCH__SESSION_JOBS));\r\n\r\n return axios.get(\r\n dataImportSessionEndpoints.sessionJobs(sessionId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__SESSION_JOBS__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__SESSION_JOBS__FAIL));\r\n });\r\n}\r\n\r\nexport const startSession = (token, sessionId) => dispatch => {\r\n if (!sessionId) return;\r\n\r\n dispatch(actionTemplate(START__SESSION));\r\n\r\n return axios.post(\r\n dataImportSessionEndpoints.startSession(sessionId),\r\n null,\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(START__SESSION__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(START__SESSION__FAIL));\r\n });\r\n}\r\n\r\nexport const updateSelectedSession = session => dispatch => {\r\n dispatch({...actionTemplate(UPDATE__SELECTED_SESSION), data: session });\r\n}\r\n\r\nexport const clearSelectedSession = () => dispatch => {\r\n dispatch(actionTemplate(CLEAR__SELECTED_SESSION));\r\n}\r\n\r\nexport const createDataImportSession = () => (dispatch, getState) => {\r\n let { user: { token }} = getState();\r\n\r\n dispatch(actionTemplate(CREATE__SESSION));\r\n\r\n return axios.post(\r\n dataImportSessionEndpoints.createSession(),\r\n null,\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 201) {\r\n dispatch({...actionTemplate(CREATE__SESSION__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(CREATE__SESSION__FAIL));\r\n });\r\n}","import React, { PureComponent } from 'react';\r\nimport classNames from 'classnames';\r\nimport moment from 'moment';\r\nimport { dataImportSessionNumberTemplate } from '../../utility';\r\n\r\nconst statusMap = {\r\n '1': 'created',\r\n '2': 'inprogress',\r\n '3': 'inprogress',\r\n '4': 'success'\r\n};\r\n\r\nconst statusLabelMap = {\r\n '1': 'Waiting for Files',\r\n '2': 'Ready to start',\r\n '3': 'In Progress',\r\n '4': 'Succeeded',\r\n '5': 'Failed'\r\n}\r\n\r\nexport default class DataImoprtSessionListItem extends PureComponent {\r\n handleClick = () => {\r\n let { session, onClick } = this.props;\r\n\r\n !!onClick && onClick(session);\r\n }\r\n\r\n render() {\r\n var { session, selected } = this.props;\r\n let rootClasses = classNames(\r\n 'data-import-sessions__list-item', {\r\n [`data-import-sessions__list-item--${statusMap[session.status]}`]: true,\r\n 'data-import-sessions__list-item--selected': selected\r\n }\r\n );\r\n let descriptionClasses = classNames(\r\n 'data-import-sessions__list-item-description', {\r\n [`data-import-sessions__list-item-description--${statusMap[session.status]}`]: true\r\n }\r\n )\r\n let descriptionContent;\r\n \r\n switch (session.status)\r\n {\r\n case 1:\r\n case 2:\r\n case 3:\r\n descriptionContent = (\r\n

    {statusLabelMap[session.status]}

    \r\n );\r\n\r\n break;\r\n case 4:\r\n case 5:\r\n descriptionContent = (\r\n

    {`${statusLabelMap[session.status]} on ${moment(session.completedOn).format('MMMM Do YYYY HH:mm:ss')}`}

    \r\n );\r\n\r\n break;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n

    {dataImportSessionNumberTemplate(session.id)}

    \r\n

    {`on ${moment(session.createdOn).format('MMMM Do YYYY')}`}

    \r\n
    \r\n
    {descriptionContent}
    \r\n
    \r\n );\r\n }\r\n};\r\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Spin, Empty, Button } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport DataImportSessionListItem from './DataImportSessionListItem';\n\nimport './_dataImportSessionList.scss';\n\nclass DataImportSessionsList extends Component {\n constructor(props) {\n super(props);\n\n this.state = { selectedSession: null }\n }\n\n handleItemClick = (session) => {\n let { onSessionSelectionChanged } = this.props;\n\n this.setState({ ...this.state, selectedSession: session });\n !!onSessionSelectionChanged && onSessionSelectionChanged(session);\n }\n\n render() {\n let that = this;\n let { loading, items, onStartSession, dataImportSessions: { selectedSession } } = this.props;\n // let { selectedSession } = this.state;\n\n return (\n
    \n

    Sessions

    \n
    \n {\n loading &&\n \n }\n />\n }\n {\n !loading && !!items && items.length === 0 && (\n \n \n Start New\n \n \n )\n }\n {\n !loading && !!items && items.length > 0 && items.map((item) =>\n ())\n }\n
    \n
    \n );\n }\n}\n\nDataImportSessionsList.defaultProps = {\n items: [],\n loading: false,\n onStartSession: () => {}\n}\n\nexport default connect(({dataImportSessions}) => ({dataImportSessions}))(DataImportSessionsList);\n","export const FETCH__DATAIMPORTFILES = 'FETCH__DATAIMPORTFILES';\r\nexport const FETCH__DATAIMPORTFILES__SUCCESS = 'FETCH__DATAIMPORTFILES__SUCCESS';\r\nexport const FETCH__DATAIMPORTFILES__FAIL = 'FETCH__DATAIMPORTFILES__FAIL';","import React, { Component } from 'react';\nimport { Avatar } from 'antd';\nimport { FileOutlined } from '@ant-design/icons';\n\nexport default class FileItem extends Component {\n render() {\n let { fileInfo, uploaded } = this.props;\n let avatarStyle = {\n backgroundColor: uploaded ? '#28a745' : '#6c757d'\n };\n\n return (\n
    \n
    } style={avatarStyle} />
    \n
    \n

    {fileInfo.caption}

    \n
    {fileInfo.fileName}
    \n

    {fileInfo.description}

    \n
    \n
    \n )\n }\n}\n","import React, { Component } from 'react';\nimport { Upload, message, Button, Avatar } from 'antd';\nimport { InboxOutlined } from '@ant-design/icons';\nimport { dataImportEndpoints } from '../../const/backend'\nimport { authHeaders } from '../../store/shared';\nimport FileItem from './FileItem';\nimport { FileOutlined } from '@ant-design/icons';\n\nconst { Dragger } = Upload;\n\nconst fileInfos = [{\n fileName: 'account.csv',\n caption: 'Accounts',\n description: 'CSV file should contain next headers: acct_no, acct_name, book_date',\n isUploaded: false\n}, {\n fileName: 'activity_summary.csv',\n caption: 'Activity Summaries',\n description: 'CSV file should contain next headers: acct_no, category, amount, order',\n isUploaded: false\n}, {\n fileName: 'asset.csv',\n caption: 'Assets',\n description: 'CSV file should contain next headers: acct_no, asset_type, asset_no, symbol, asset_name, rate, return, maturity, cost, receivable, units, unit_price, mkt_value',\n isUploaded: false\n}, {\n fileName: 'activity.csv',\n caption: 'Activities',\n description: 'CSV file should contain next headers: acct_no, asset_no, reference, category, trans_date, trans_desc, amount, units',\n isUploaded: false\n}, {\n fileName: 'asset_history.csv',\n caption: 'Asset Histories',\n description: 'CSV file should contain next headers: acct_no, asset_no, book_date, cost, market, asset_name, asset_type',\n isUploaded: false\n}, {\n fileName: 'loanhist_header.csv',\n caption: 'Loans',\n description: 'CSV file should contain next headers: loan_numbe, fund, ilotype, ilono, name, attn, address, city, st, zip, pmtamt, int_rate, int_rec, origamt, prinbal, loan_name, pmt_date, ins_desc, ins_exp, process_da',\n isUploaded: false\n}, {\n fileName: 'loanhist_lines.csv',\n caption: 'Loan Lines',\n description: 'CSV file should contain next headers: ilono, ilotype, fund, trandate, reference, begprin, begint, end_prin, end_int, tranint, tranprin',\n isUploaded: false\n}];\n\nexport default class UploadFilesStep extends Component {\n files = {\n 'account.csv': false,\n 'activity_summary.csv': false,\n 'asset.csv': false,\n 'activity.csv': false,\n 'asset_history.csv': false,\n 'loanhist_header.csv': false,\n 'loanhist_lines.csv': false\n };\n\n importJobTypeToFileIdMap = {\n '1': 'account.csv',\n '2': 'activity.csv',\n '3': 'activity_summary.csv',\n '4': 'asset.csv',\n '5': 'asset_history.csv',\n '6': 'loanhist_header.csv',\n '7': 'loanhist_history.csv',\n '8': 'loanhist_lines.csv'\n };\n\n constructor(props) {\n super(props);\n\n let { uploadedFiles } = props;\n let filesUploaded = uploadedFiles.map(item => this.importJobTypeToFileIdMap[item]);\n let isNextStepAvailable = this.processUploadedFilesList(filesUploaded);\n\n this.state = { filesUploaded, isNextStepAvailable };\n }\n\n processUploadedFilesList = (filesUploaded) => {\n filesUploaded.forEach(item => this.files[item] = true);\n\n return Object.getOwnPropertyNames(this.files).every(item => this.files[item]);\n }\n\n handleFileUploaded(filename) {\n let { onAllFilesUploaded } = this.props;\n let { filesUploaded } = this.state;\n let nameLowercased = filename.toLowerCase();\n\n this.files[nameLowercased] = true;\n filesUploaded.push(nameLowercased);\n\n if (!Object.getOwnPropertyNames(this.files).some(name => !this.files[name])) {\n onAllFilesUploaded();\n this.setState({ isNextStepAvailable: true, filesUploaded });\n } else {\n this.setState({ ...this.state, filesUploaded });\n }\n }\n\n render() {\n let that = this;\n let { token, onNextClick, onCancel } = this.props;\n let { filesUploaded, isNextStepAvailable } = this.state;\n let dragger1Props = {\n name: 'file',\n multiple: true,\n action: dataImportEndpoints.dataImport(),\n headers: { ...authHeaders(token)},\n onChange(info) {\n const { status, name } = info.file;\n\n if (status !== 'uploading') {\n console.log(info.file, info.fileList);\n }\n\n if (status === 'done') {\n message.success(`${name} file uploaded successfully.`);\n\n that.handleFileUploaded(name);\n } else if (status === 'error') {\n message.error(`${info.file.name} file upload failed.`);\n }\n },\n };\n\n return (\n
    \n
    \n
    \n \n

    \n \n

    \n

    Click or drag file to this area to upload

    \n

    \n Drop one or more files\n

    \n
    \n
    \n
    \n {\n fileInfos.map(item => (\n -1} />\n ))\n }\n
    \n
    \n
    \n
    \n } style={{ backgroundColor: '#28a745'}} />\n

    Uploaded

    \n } style={{ backgroundColor: '#6c757d'}} />\n

    Requires upload

    \n
    \n
    \n \n \n
    \n
    \n
    \n );\n }\n}\n","export const IMPORT_JOB_STATUS__PENDING = 0;\r\nexport const IMPORT_JOB_STATUS__IN_PROGRESS = 1;\r\nexport const IMPORT_JOB_STATUS__SUCCEDED = 2;\r\nexport const IMPORT_JOB_STATUS__FAILED = 3;\r\nexport const totalJobsNumber = 14;\r\n\r\nexport const importStageKeyProvider = (title) => title.toLowerCase().split(' ').join('-');\r\n\r\nexport const sessionStatuses = {\r\n created: 1,\r\n ready: 2,\r\n inProgress: 3,\r\n succeeded: 4,\r\n failed: 5\r\n};\r\n\r\nexport const importStages = [{\r\n title: 'User data flow',\r\n description: 'description',\r\n steps: [{\r\n title: 'Accounts',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 9,\r\n steps: [{\r\n title: 'Account Assets',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 11,\r\n steps: [{\r\n title: 'Account Activities',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 12\r\n }, {\r\n title: 'Account Asset Histories',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 13\r\n }]\r\n }, {\r\n title: 'Account Activity Summaries',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 10\r\n }]\r\n }, {\r\n title: 'Loans',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 14,\r\n steps: [{\r\n title: 'Loan Lines',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 16\r\n }]\r\n }]\r\n}, {\r\n title: 'Unlinked data flow',\r\n description: 'description',\r\n steps: [{\r\n title: 'Accounts',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 1,\r\n steps: [{\r\n title: 'Account Assets',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 4,\r\n steps: [{\r\n title: 'Account Activities',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 2\r\n }, {\r\n title: 'Account Asset Histories',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 5\r\n }]\r\n }, {\r\n title: 'Account Activity Summaries',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 3\r\n }]\r\n }, {\r\n title: 'Loans',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 6,\r\n steps: [{\r\n title: 'Loan Lines',\r\n status: IMPORT_JOB_STATUS__PENDING,\r\n dataImportJobType: 8\r\n }]\r\n }]\r\n}]","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { fetchDataImportJobsBySessionId } from '../../store/dataImportSessions/actionCreators';\nimport { Button, Badge, Progress } from 'antd';\n\nimport './_dataImportProgress.scss';\n\nimport {\n IMPORT_JOB_STATUS__PENDING,\n IMPORT_JOB_STATUS__IN_PROGRESS,\n IMPORT_JOB_STATUS__SUCCEDED,\n IMPORT_JOB_STATUS__FAILED,\n importStageKeyProvider,\n importStages,\n sessionStatuses,\n totalJobsNumber\n} from '../../const/data-import';\n\nconst importJobToBadgeStatusMap = {\n [IMPORT_JOB_STATUS__PENDING]: 'default',\n [IMPORT_JOB_STATUS__IN_PROGRESS]: 'processing',\n [IMPORT_JOB_STATUS__SUCCEDED]: 'success',\n [IMPORT_JOB_STATUS__FAILED]: 'error',\n}\n\nconst importJobToBadgeCaptionMap = {\n [IMPORT_JOB_STATUS__PENDING]: 'Pending Start',\n [IMPORT_JOB_STATUS__IN_PROGRESS]: 'In Progress',\n [IMPORT_JOB_STATUS__SUCCEDED]: 'Completed',\n [IMPORT_JOB_STATUS__FAILED]: 'Failed',\n}\n\nclass DataImportStep extends Component {\n render() {\n let { step, currentJobMap } = this.props;\n let currentJobs = Object.keys(currentJobMap);\n let currentJobStatus = currentJobs.indexOf(`${step.dataImportJobType}`) > -1\n ? currentJobMap[step.dataImportJobType].status\n : IMPORT_JOB_STATUS__PENDING;\n\n return (\n
    \n
    \n

    {step.title}

    \n
    \n \n
    \n
    \n {\n !!step.steps && (\n
    \n {\n step.steps.map(\n item =>\n \n )\n }\n
    \n )\n }\n
    \n )\n }\n}\n\nclass DataImportStage extends Component {\n render() {\n let { stage, currentJobMap } = this.props;\n\n return (\n
    \n

    {stage.title}

    \n
    \n {\n stage.steps.map((step) =>\n )\n }\n
    \n
    );\n }\n}\n\nclass DataImportProgressStep extends Component {\n intervalId = null;\n percentage = 0;\n\n componentDidMount() {\n let { dataImportSessions: { selectedSession } } = this.props;\n\n if (selectedSession.status === sessionStatuses.inProgress) {\n this.intervalId = setInterval(this.refreshJobs, 5000);\n }\n\n this.refreshJobs();\n }\n\n componentWillUnmount() {\n if (this.intervalId !== null) {\n window.clearInterval(this.intervalId);\n }\n }\n\n refreshJobs = () => {\n let {\n user: { token },\n dataImportSessions: {\n selectedSession\n },\n fetchDataImportJobsBySessionId\n } = this.props;\n\n if (selectedSession.status === sessionStatuses.succeeded\n || selectedSession.status === sessionStatuses.failed) {\n window.clearInterval(this.intervalId);\n\n return;\n }\n\n fetchDataImportJobsBySessionId(token, selectedSession.id);\n }\n\n handleStartSessionClick = () => {\n let { onNextClick } = this.props;\n\n this.intervalId = setInterval(this.refreshJobs, 5000);\n\n onNextClick();\n }\n\n render() {\n let {\n onBackClick,\n onAllJobsCompleted,\n dataImportSessions: {\n sessionJobs,\n selectedSession,\n isStartSessionRequested\n }\n } = this.props;\n let canStartSession = selectedSession.status === sessionStatuses.ready,\n isSessionInProgress = isStartSessionRequested || selectedSession.status === sessionStatuses.inProgress;\n let sessionJobMap = Object.fromEntries(sessionJobs.map(item => [item.jobType, item]));\n let completedItemsCount = sessionJobs.filter(item => item.status === IMPORT_JOB_STATUS__SUCCEDED || item.status === IMPORT_JOB_STATUS__FAILED).length;\n let newPercentage = Math.round(completedItemsCount / (totalJobsNumber / 100));\n\n if (newPercentage !== this.percentage) {\n this.percentage = newPercentage;\n\n if (this.percentage === 100) {\n onAllJobsCompleted();\n }\n }\n\n return (\n
    \n {\n importStages.map(\n stage =>\n )\n }\n
    \n {\n selectedSession.status === sessionStatuses.inProgress &&\n \n }\n
    \n
    \n \n \n Start Session\n \n
    \n
    \n );\n }\n}\n\nexport default connect(\n ({ user, dataImportSessions }) => ({ user, dataImportSessions }),\n { fetchDataImportJobsBySessionId }\n)(DataImportProgressStep);\n","import React, { Component } from 'react';\r\nimport { Result } from 'antd';\r\n\r\nexport default class DataImportResultStep extends Component {\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { fetchDataImportFiles } from '../../store/dataImportFiles/actionCreators';\nimport { startSession, fetchDataImportJobsBySessionId, clearSelectedSession, fetchDataImportSessions, cancelSession } from '../../store/dataImportSessions/actionCreators';\nimport { Steps, Spin, Button } from 'antd';\nimport { LoadingOutlined, CloseOutlined } from '@ant-design/icons';\nimport UploadFilesStep from './UploadFilesStep';\nimport DataImportProgressStep from './DataImportProgressStep';\nimport DataImportResultStep from './DataImportResultStep';\nimport { dataImportSessionNumberTemplate } from '../../utility';\nimport { sessionStatuses } from '../../const/data-import';\n\nimport './_dataImportWizard.scss';\n\n\nconst { Step } = Steps;\n\nclass DataImportWizard extends Component {\n constructor(props) {\n super(props);\n\n let {\n dataImportSessions: {\n selectedSession: { status }\n }\n } = this.props;\n\n this.state = {\n currentStep: status === sessionStatuses.created ?\n 0 :\n status === sessionStatuses.succeeded ? 2 : 1\n };\n }\n\n componentDidMount() {\n let {\n user: { token },\n dataImportSessions: {\n selectedSession: { id }\n },\n fetchDataImportFiles } = this.props;\n\n fetchDataImportFiles(token, id);\n }\n\n handleAllFilesUploaded = () => {\n let {\n user: { token },\n dataImportSessions: {\n selectedSession\n },\n fetchDataImportSessions,\n fetchDataImportFiles\n } = this.props;\n\n fetchDataImportSessions(token).then(() => fetchDataImportFiles(token, selectedSession.id));\n }\n\n handleNextStepClick = () => {\n let { currentStep } = this.state;\n\n currentStep++;\n this.setState({ ...this.state, currentStep });\n }\n\n handlePreviousStepClick = () => {\n let { currentStep } = this.state;\n\n currentStep--;\n this.setState({ ...this.state, currentStep });\n }\n\n handleSessionStart = () => {\n let {\n user: {\n token\n },\n dataImportSessions: {\n selectedSession\n },\n startSession,\n fetchDataImportSessions,\n fetchDataImportJobsBySessionId\n } = this.props;\n\n startSession(token, selectedSession.id).then(() => {\n fetchDataImportSessions(token).then(() => fetchDataImportJobsBySessionId(token, selectedSession.id));\n });\n }\n\n handleAllJobsCompleted = () => {\n let { user: { token }, fetchDataImportSessions } = this.props;\n\n fetchDataImportSessions(token).then(() => {\n let { dataImportSessions: { selectedSession } } = this.props;\n\n if (selectedSession.status === sessionStatuses.succeeded) {\n this.setState({ ...this.state, currentStep: 2 });\n }\n })\n }\n\n handleCloseClick = () => {\n let { clearSelectedSession } = this.props;\n\n clearSelectedSession();\n }\n\n handleCancelSession = () => {\n let {\n user: {\n token\n },\n dataImportSessions: {\n selectedSession\n },\n cancelSession,\n clearSelectedSession,\n fetchDataImportSessions\n } = this.props;\n\n !!cancelSession\n && cancelSession(selectedSession.id).then(() => {\n debugger;\n clearSelectedSession();\n fetchDataImportSessions(token);\n })\n }\n\n render() {\n let {\n user: {\n token\n },\n dataImportFiles: {\n isItemsFetched,\n items\n },\n dataImportSessions: {\n selectedSession\n }\n } = this.props;\n let { currentStep } = this.state;\n\n currentStep = selectedSession.status === 1 ? 0 : selectedSession.status === 4 ? 2 : currentStep;\n\n let stepContent = (\n \n }\n />\n );\n\n if (!isItemsFetched) {\n switch (currentStep) {\n case 0:\n stepContent = (\n item.dataImportJobType)}\n token={token}\n onCancel={this.handleCancelSession}\n onNextClick={this.handleNextStepClick}\n onAllFilesUploaded={this.handleAllFilesUploaded} />);\n break;\n case 1:\n stepContent = (\n \n );\n\n break;\n case 2:\n stepContent = (\n \n );\n\n break;\n default:\n break;\n }\n }\n\n return (\n
    \n
    \n

    Data Import Session: {dataImportSessionNumberTemplate(selectedSession.id)}

    \n {\n !!selectedSession && selectedSession.status === 4 &&\n
    \n \n \n \n \n \n {stepContent}\n
    \n );\n }\n}\n\nexport default connect(\n ({ user, dataImportFiles, dataImportSessions }) => ({ user, dataImportFiles, dataImportSessions }),\n { fetchDataImportFiles, startSession, fetchDataImportJobsBySessionId, fetchDataImportSessions, clearSelectedSession, cancelSession }\n)(DataImportWizard);\n","import axios from 'axios';\r\nimport { actionTemplate, authHeaders } from '../shared';\r\nimport { LOG_OUT } from '../user/actions';\r\nimport { dataImportFilesEndpoints } from '../../const/backend';\r\nimport {\r\n FETCH__DATAIMPORTFILES,\r\n FETCH__DATAIMPORTFILES__SUCCESS,\r\n FETCH__DATAIMPORTFILES__FAIL\r\n} from './actions';\r\n\r\nexport const fetchDataImportFiles = (token, sessionId) => dispatch => {\r\n dispatch(actionTemplate(FETCH__DATAIMPORTFILES));\r\n\r\n axios.get(\r\n dataImportFilesEndpoints.listBySessionId(sessionId),\r\n { headers: { ...authHeaders(token) }}\r\n ).then(response => {\r\n if (response.status === 200) {\r\n dispatch({...actionTemplate(FETCH__DATAIMPORTFILES__SUCCESS), data: response.data });\r\n }\r\n }).catch(({ response }) => {\r\n if (response.status === 401) {\r\n dispatch(actionTemplate(LOG_OUT));\r\n\r\n return;\r\n }\r\n\r\n dispatch(actionTemplate(FETCH__DATAIMPORTFILES__FAIL));\r\n });\r\n}","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport AdminPage from '../../common/pages/admin-page/AdminPage';\nimport {\n fetchDataImportSessions,\n updateSelectedSession,\n createDataImportSession,\n clearSelectedSession\n} from '../../store/dataImportSessions/actionCreators';\nimport DataImportSessionsList from '../../components/DataImportSessionsList/DataImportSessionsList';\nimport DataImportWizard from '../../components/DataImportWizard/DataImportWizard';\n\nimport { Empty, Button } from 'antd';\n\nimport './data-import-page.less';\n\nconst DataImportPage = ({\n updateSelectedSession,\n user: {\n token\n },\n createDataImportSession,\n fetchDataImportSessions,\n clearSelectedSession,\n dataImportSessions: {\n selectedSession,\n items,\n isSessionsFetched\n },\n}) => {\n\n useEffect(() => {\n fetchDataImportSessions(token);\n\n return () => clearSelectedSession();\n }, [])\n\n const handleSessionSelected = (session) => {\n updateSelectedSession(session);\n }\n\n const handleStartNewSession = () => {\n createDataImportSession().then(() => fetchDataImportSessions(token))\n }\n\n return (\n \n
    \n \n {\n !!selectedSession && \n }\n {\n !selectedSession && !isSessionsFetched &&\n \n \n Start New\n \n \n }\n
    \n
    \n )\n};\n\nexport default connect(\n ({ user, dataImportSessions }) => ({ user, dataImportSessions }),\n { fetchDataImportSessions, updateSelectedSession, clearSelectedSession, createDataImportSession }\n)(DataImportPage);\n","import React from 'react';\n\nimport SiteLogo from '../../SiteLogo/SiteLogo';\n\nimport './auth-layout.less';\n\nconst AuthLayout = ({\n children,\n path,\n}) => (\n
    \n
    \n \"image\"\n
    \n\n
    \n \n {children}\n
    \n
    \n);\n\nexport default AuthLayout;\n","const loginFormLabels = {\n validation: {\n email: {\n wrongFormat: 'It doesn\\'t look like email',\n empty: 'It\\'s required',\n },\n password: {\n tooShort: 'It\\'s too short',\n empty: 'It\\'s required',\n },\n loginFailed: 'Wrong combination of login & password',\n },\n header: 'financial portal',\n subHeader: 'Welcome to online account access for investors and borrowers',\n message: 'This service enables you to view your account information online, updated daily.',\n controls: {\n email: {\n label: 'Email Address',\n placeholder: 'Example: mail@mail.com',\n },\n password: {\n label: 'Password',\n placeholder: 'Enter password here',\n }\n },\n buttons: {\n forgotPassword: 'Forgot Password?',\n logIn: 'Log In',\n register: 'Register now!',\n },\n registerMessage: 'Don\\'t have an account?',\n}\n\nexport default loginFormLabels;","import * as Yup from 'yup';\nimport loginFormLabels from '../../labels/login-form';\n\nexport const initialFormValues = {\n email: '',\n password: ''\n};\n\nexport const LoginSchema = Yup.object().shape({\n email: Yup.string()\n .email(loginFormLabels.validation.email.wrongFormat)\n .required(loginFormLabels.validation.email.empty),\n password: Yup.string()\n .min(6, loginFormLabels.validation.password.tooShort)\n .required(loginFormLabels.validation.password.empty)\n});\n\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport { Alert, Input, Button } from 'antd';\nimport { useFormik } from 'formik';\n\nimport FormControl from '../../common/FormControl/FormControl';\nimport { routes } from '../../routing';\nimport { login } from '../../store/user/actionCreators'\nimport loginFormLabels from '../../labels/login-form';\nimport { initialFormValues, LoginSchema } from './const';\n\nimport './login-form.less';\n\nconst { Password } = Input;\n\nconst LoginForm = ({\n login,\n user: {\n token,\n isTokenRequested,\n isTokenRequestFailed\n }\n}) => {\n const formik = useFormik({\n initialValues: initialFormValues,\n validationSchema: LoginSchema,\n onSubmit: ({ email, password }) => {\n login && login(email, password);\n }\n });\n\n if (token) {\n return \n }\n\n return (\n
    \n

    {loginFormLabels.header}

    \n
    \n \n
    \n \n \n \n \n \n \n
    \n Forgot Password?\n Not a user? Sign-Up\n
    \n
    \n \n Log In\n \n
    \n \n
    \n
    \n );\n};\n\nexport default connect(\n ({ user }) => ({ user }),\n { login }\n)(LoginForm);\n","export default __webpack_public_path__ + \"static/media/login.7688cc78.jpg\";","import React from 'react';\n\nimport AuthLayout from '../../common/layout/auth/AuthLayout';\nimport LoginForm from '../../auth/login/LoginForm';\nimport loginImg from '../../assets/images/login.jpg';\n\nconst LoginPage = () => (\n \n \n \n);\n\nexport default LoginPage;\n","import * as Yup from 'yup';\nimport registerFormLabels from '../../labels/register-form';\n\nexport const formInitialValues = {\n fullName: '',\n organization: '',\n stateId: 45,\n city: '',\n email: '',\n password: '',\n confirmPassword: ''\n};\n\nexport const registerSchema = Yup.object().shape({\n fullName: Yup.string()\n .min(3, registerFormLabels.validation.fullName.tooShort)\n .max(350, registerFormLabels.validation.fullName.tooLong)\n .required(registerFormLabels.validation.fullName.required),\n organization: Yup.string()\n .max(300, registerFormLabels.validation.organizationName.tooLong)\n .notRequired(),\n stateId: Yup.number()\n .notRequired(),\n city: Yup.string()\n .required(registerFormLabels.validation.city.required)\n .max(50, registerFormLabels.validation.city.tooLong),\n email: Yup.string()\n .email(registerFormLabels.validation.email.wrongFormat)\n .max(300, registerFormLabels.validation.email.tooLong)\n .required(registerFormLabels.validation.email.required),\n password: Yup.string()\n .required(registerFormLabels.validation.password.required)\n .min(8, registerFormLabels.validation.password.minLength)\n .max(32, registerFormLabels.validation.password.maxLength)\n .matches(/[A-Z]+/, registerFormLabels.validation.password.capitalLetterRequired)\n .matches(/[0-9]+/, registerFormLabels.validation.password.digitReuired)\n .matches(/\\W+/, registerFormLabels.validation.password.specialCharacterRequired),\n confirmPassword: Yup.string()\n .required(registerFormLabels.validation.confirmPassword.required)\n .oneOf([Yup.ref('password'), null], registerFormLabels.validation.confirmPassword.sameAsPassword)\n});\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useFormik } from 'formik';\nimport { Link, Redirect } from 'react-router-dom';\nimport { Input, Select, Button } from 'antd';\nimport { fetchStates } from '../../store/geo/actionCreators';\nimport { register, resetRegisterState } from '../../store/user/actionCreators';\nimport { routes } from '../../routing';\nimport registerFormLabels from '../../labels/register-form';\nimport { formInitialValues, registerSchema } from './formik.config';\nimport FormControl from '../../common/FormControl/FormControl';\n\nimport './register-form.less';\n\nconst { Option } = Select;\nconst { Password } = Input;\n\nconst RegisterForm = ({\n register,\n fetchStates,\n resetRegisterState,\n geo: {\n states,\n isStatesRequested\n },\n user: {\n isRegisterRequested,\n isRegisterFailed,\n registerAttempts,\n token\n }\n}) => {\n const formik = useFormik({\n initialValues: formInitialValues,\n validationSchema: registerSchema,\n onSubmit: ({\n fullName,\n email,\n stateId,\n city,\n organization: organizationName,\n password\n }) => {\n register({\n fullName,\n email,\n city,\n stateId,\n organizationName,\n password\n });\n }\n });\n\n useEffect(() => {\n fetchStates();\n\n return () => {\n resetRegisterState();\n };\n }, []);\n\n const handleStateChange = (value) => {\n formik.setFieldValue('stateId', value);\n }\n\n const handleFilterOption = (\n inputValue, {\n props: {\n label\n }\n }\n ) => (label.toLowerCase().includes(inputValue.toLowerCase()));\n\n if (token) {\n return ();\n }\n\n if (registerAttempts > 0 && !isRegisterFailed && !isRegisterRequested) {\n return (\n
    \n

    {registerFormLabels.result.header}

    \n

    {registerFormLabels.result.description}

    \n \n
    \n );\n }\n\n return (\n
    \n

    {registerFormLabels.header}

    \n
    \n \n \n \n \n \n \n \n \n {\n states && states.map((state) => (\n \n {state.name}\n \n ))\n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n {registerFormLabels.buttons.register}\n \n
    \n \n
    \n );\n};\n\nexport default connect(\n ({ geo, user }) => ({ geo, user }),\n { fetchStates, register, resetRegisterState }\n)(RegisterForm);\n","export default __webpack_public_path__ + \"static/media/registration_page_cp.16c6f7cb.jpg\";","import React from 'react';\n\nimport AuthLayout from '../../common/layout/auth/AuthLayout';\nimport RegisterForm from '../../auth/register/RegisterForm';\nimport registrationImg from '../../assets/images/registration_page_cp.jpg';\n\nconst RegisterPage = () => (\n \n \n \n);\n\nexport default RegisterPage;\n","const restorePasswordLabels = {\n header: 'Restore Access',\n description: 'Please, provide an email which you used while register. We\\'ll send you an email with instructions how to restore an access to your account.',\n validation: {\n email: {\n required: 'It\\'s required',\n wrongFormat: 'Wrong format'\n }\n },\n controls: {\n email: {\n label: 'Email Address',\n placeholder: 'example: mail@mail.com'\n }\n },\n buttons: {\n backToLogin: 'Back to Login',\n resetPassword: 'Reset Password',\n goToLogin: 'Go to Login page'\n },\n result: {\n header: 'Password was reset!',\n description: 'We\\'ve sent you an email with further instructions how to reset your password'\n }\n};\n\nexport default restorePasswordLabels;\n","import * as Yup from 'yup';\nimport restorePasswordLabels from '../../labels/reset-password';\n\nexport const restorePasswordSchema = Yup.object().shape({\n email: Yup.string()\n .email(restorePasswordLabels.validation.email.wrongFormat)\n .required(restorePasswordLabels.validation.email.required)\n});\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\nimport { Input, Button } from 'antd';\nimport { useFormik } from 'formik';\n\nimport FormControl from '../../common/FormControl/FormControl';\nimport { resetPassword, resetResetPasswordState } from '../../store/user/actionCreators';\nimport restorePasswordLabels from '../../labels/reset-password';\nimport { restorePasswordSchema } from './formik.config';\nimport { routes } from '../../routing';\n\nimport './forgot-password.less';\n\nconst ForgotPasswordForm = ({\n user: {\n isResetPasswordRequested,\n isResetPasswordFailed,\n resetPasswordAttempts,\n token\n },\n resetPassword,\n resetResetPasswordState\n}) => {\n const formik = useFormik({\n initialValues: { email: '' },\n validationSchema: restorePasswordSchema,\n onSubmit: ({ email }) => {\n resetPassword(email);\n }\n });\n\n useEffect(() => {\n return () => { resetResetPasswordState() }\n }, [])\n\n if (token) {\n return ();\n }\n\n if (!isResetPasswordRequested\n && !isResetPasswordFailed\n && resetPasswordAttempts > 0) {\n return (\n
    \n

    {restorePasswordLabels.result.header}

    \n

    {restorePasswordLabels.result.description}

    \n
    \n \n
    \n
    \n );\n }\n\n return (\n
    \n

    {restorePasswordLabels.header}

    \n

    {restorePasswordLabels.description}

    \n
    \n \n \n \n
    \n \n {restorePasswordLabels.buttons.resetPassword}\n \n \n
    \n \n
    \n );\n}\n\nexport default connect(\n ({ user }) => ({ user }),\n { resetPassword, resetResetPasswordState }\n)(ForgotPasswordForm);\n","export default __webpack_public_path__ + \"static/media/island.902bbb92.jpg\";","import React from 'react';\n\nimport AuthLayout from '../../common/layout/auth/AuthLayout';\nimport ForgotPasswordForm from '../../auth/forgot-password/ForgotPassword';\nimport forgotPasswordImg from '../../assets/images/island.jpg';\n\nconst ForgotPasswordPage = () => (\n \n \n \n);\n\nexport default ForgotPasswordPage;\n","const confirmEmailLabels = {\r\n header: 'Email confirmation',\r\n result: {\r\n success: {\r\n subHeader: 'Congratulations! Your email was sucessfully verified.'\r\n },\r\n fail: {\r\n subHeader: 'Sorry! We can\\'t verify your email. Please, contact support.'\r\n }\r\n },\r\n buttons: {\r\n goToLogin: 'Go to Login Page'\r\n }\r\n}\r\n\r\nexport default confirmEmailLabels;","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Spin, Button } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport { Link, Redirect } from 'react-router-dom';\n\nimport { routes } from '../../routing';\nimport { confirmEmail, resetConfirmEmailState } from '../../store/user/actionCreators';\nimport confirmEmailLabels from '../../labels/confirm-email';\n\nimport './confirm-email.less';\n\nconst ConfirmEmailForm = ({\n user: {\n isConfirmEmailRequested,\n isConfirmEmailRequestFailed,\n confirmEmailAttemptsCount,\n token\n },\n location: {\n search\n },\n confirmEmail,\n resetConfirmEmailState\n}) => {\n useEffect(() => {\n const urlParams = new URLSearchParams(search);\n const id = urlParams.get('id'),\n token = urlParams.get('token');\n\n confirmEmail(id, token);\n\n return () => { resetConfirmEmailState(); };\n }, []);\n\n\n if (!!token) {\n return ();\n }\n\n return (\n
    \n

    {confirmEmailLabels.header}

    \n {\n isConfirmEmailRequested && (\n }\n />\n )\n }\n {\n isConfirmEmailRequestFailed && (\n <>\n

    {confirmEmailLabels.result.fail.subHeader}

    \n
    \n \n
    \n \n )\n }\n {\n !isConfirmEmailRequested\n && confirmEmailAttemptsCount > 0\n && !isConfirmEmailRequestFailed && (\n <>\n

    {confirmEmailLabels.result.success.subHeader}

    \n
    \n \n
    \n \n )\n }\n
    \n );\n};\n\nexport default connect(\n ({ user }) => ({ user }),\n { confirmEmail, resetConfirmEmailState }\n)(ConfirmEmailForm);\n","export default __webpack_public_path__ + \"static/media/sunset.7bd84ecb.jpg\";","import React from 'react';\n\nimport AuthLayout from '../../common/layout/auth/AuthLayout';\nimport ConfirmEmailForm from '../../auth/confirm-email/ConfirmEmail';\nimport ConfirmEmailImg from '../../assets/images/sunset.jpg';\n\nconst ConfirmEmailPage = ({ location }) => (\n \n \n \n);\n\nexport default ConfirmEmailPage;\n","const setNewPasswordLabels = {\n header: 'Reset password',\n validation: {\n password: {\n minLength: 'At least 8 characters long',\n capitalLetterRequired: 'At least one capital letter',\n digitReuired: 'At least one digit',\n specialCharacterRequired: 'At least one special character',\n required: 'Can\\'t be empty',\n },\n confirmPassword: {\n required: 'Can\\'t be empty',\n sameAsPassword: 'Doesn\\'t match',\n }\n },\n result: {\n fail: {\n subHeader: 'Something went wrong',\n invalidTokenDescription: 'It seems like your link is expired. Please retry attempt or contact support.'\n },\n success: {\n subHeader: 'New password was set'\n }\n },\n buttons: {\n goToLogin: 'Go to Login page',\n changePassword: 'Change password'\n },\n controls: {\n password: {\n label: 'New Password',\n placeholder: 'Enter new password'\n },\n confirmPassword: {\n label: 'Confirm Password',\n placeholder: 'Repeat entered password'\n }\n }\n}\n\nexport default setNewPasswordLabels;\n","import * as Yup from 'yup';\nimport setNewPasswordLabels from '../../labels/set-new-password';\n\nexport const resetPasswordSchema = Yup.object().shape({\n password: Yup.string()\n .required(setNewPasswordLabels.validation.password.required)\n .min(8, setNewPasswordLabels.validation.password.minLength)\n .matches(/[A-Z]+/, setNewPasswordLabels.validation.password.capitalLetterRequired)\n .matches(/[0-9]+/, setNewPasswordLabels.validation.password.digitReuired)\n .matches(/\\W+/, setNewPasswordLabels.validation.password.specialCharacterRequired),\n confirmPassword: Yup.string()\n .required(setNewPasswordLabels.validation.confirmPassword.required)\n .oneOf([Yup.ref('password'), null], setNewPasswordLabels.validation.confirmPassword.sameAsPassword)\n});\n","import React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useFormik } from 'formik';\nimport { Link } from 'react-router-dom';\nimport { verifyChangePasswordToken, changePassword, resetChangePasswordState } from '../../store/user/actionCreators';\nimport { Spin, Button, Input } from 'antd';\nimport { LoadingOutlined } from '@ant-design/icons';\nimport classNames from 'classnames';\n\nimport FormControl from '../../common/FormControl/FormControl';\nimport setNewPasswordLabels from '../../labels/set-new-password';\nimport { resetPasswordSchema } from './formik.config';\nimport { routes } from '../../routing';\nimport './reset-password.less';\n\nconst { Password } = Input;\n\nconst MODE_LOADER = 'MODE_LOADER';\nconst MODE_VERIFICATION_FAILED = 'MODE_VERIFICATION_FAILED';\nconst MODE_PASSWORD_CHANGE_FORM = 'MODE_PASSWORD_CHANGE_FORM';\nconst MODE_PASSWORD_CHANGE__SUCCESS = 'MODE_PASSWORD_CHANGE__SUCCESS';\nconst MODE_PASSWORD_CHANGE__FAIL = 'MODE_PASSWORD_CHANGE__FAIL';\n\nconst ResetPasswordForm = ({\n user: {\n isVerifyChangePasswordTokenRequested,\n isVerifyChangePasswordTokenRequestFailed,\n isChangePasswordRequested,\n isChangePasswordRequestFailed,\n changePasswordAttempts\n },\n location: {\n search\n },\n verifyChangePasswordToken,\n resetChangePasswordState,\n changePassword,\n}) => {\n const formik = useFormik({\n initialValues: { password: '', confirmPassword: '' },\n validationSchema: resetPasswordSchema,\n onSubmit: ({ password }) => {\n let urlParams = new URLSearchParams(search);\n\n changePassword(\n urlParams.get('id'),\n urlParams.get('token'),\n password\n );\n }\n });\n const mode = classNames({\n [MODE_LOADER]: isVerifyChangePasswordTokenRequested,\n [MODE_VERIFICATION_FAILED]:\n !isVerifyChangePasswordTokenRequested\n && isVerifyChangePasswordTokenRequestFailed,\n [MODE_PASSWORD_CHANGE_FORM]:\n !isVerifyChangePasswordTokenRequestFailed\n && !isVerifyChangePasswordTokenRequested\n && !isChangePasswordRequestFailed\n && (isChangePasswordRequested || changePasswordAttempts === 0),\n [MODE_PASSWORD_CHANGE__SUCCESS]:\n !isChangePasswordRequested\n && !isChangePasswordRequestFailed\n && changePasswordAttempts > 0,\n [MODE_PASSWORD_CHANGE__FAIL]:\n !isChangePasswordRequested\n && isChangePasswordRequestFailed\n && changePasswordAttempts > 0\n });\n\n useEffect(() => {\n const urlParams = new URLSearchParams(search);\n\n verifyChangePasswordToken(urlParams.get('id'), urlParams.get('token'));\n\n return () => { resetChangePasswordState(); }\n }, []);\n\n return (\n
    \n

    {setNewPasswordLabels.header}

    \n {\n mode === MODE_LOADER &&\n }\n />\n }\n {\n (mode === MODE_VERIFICATION_FAILED || mode === MODE_PASSWORD_CHANGE__FAIL) &&\n <>\n

    {setNewPasswordLabels.result.fail.subHeader}

    \n

    {setNewPasswordLabels.result.fail.invalidTokenDescription}

    \n
    \n \n
    \n \n }\n {\n mode === MODE_PASSWORD_CHANGE__SUCCESS &&\n <>\n

    {setNewPasswordLabels.result.success.subHeader}

    \n
    \n \n
    \n \n }\n {\n mode === MODE_PASSWORD_CHANGE_FORM &&\n
    \n \n \n \n \n \n \n
    \n \n {setNewPasswordLabels.buttons.changePassword}\n \n \n
    \n \n }\n
    \n );\n};\n\nexport default connect(\n ({ user }) => ({ user }),\n { verifyChangePasswordToken, changePassword, resetChangePasswordState }\n)(ResetPasswordForm);\n","export default __webpack_public_path__ + \"static/media/mountein.f005553c.jpg\";","import React from 'react';\n\nimport AuthLayout from '../../common/layout/auth/AuthLayout';\nimport ResetPasswordForm from '../../auth/reset-password/ResetPassword';\nimport resetPasswordImg from '../../assets/images/mountein.jpg';\n\nconst ResetPasswordPage = ({ location }) => (\n \n \n \n)\n\nexport default ResetPasswordPage;\n","import React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\nimport AuthenticatedRoute from './AuthenticatedRoute';\nimport AuthorizedRoute from './AuthorizedRoute';\nimport { ConnectedHomePage } from '../pages/HomePage';\nimport NotFound from '../pages/NotFound';\nimport AdminLayout from '../pages/layouts/AdminLayout';\nimport ResourceRequestsPage from '../pages/resource-requests/ResourceRequestsPage';\nimport ResourceRequestDetailsPage from '../components/ResourceRequestDetailsPage/ResourceRequestDetailsPage';\nimport LoanDetailsPage from '../pages/loans/LoanDetailsPage';\nimport AdminUserProfilePage from '../pages/AdminUserProfilePage';\nimport LoansPage from '../pages/loans/LoansPage';\nimport InvestmentsPage from '../pages/investments/InvestmentsPage';\nimport InvestmentDetailsPage from '../pages/investments/InvestmentDetailsPage';\nimport AssetDetailsPage from '../pages/investments/AssetDetailsPage';\nimport ResourceRequestStatusPage from '../pages/resource-requests/ResourceRequestStatusPage';\nimport StatementsVaultPage from '../pages/statements/StatementsVaultPage';\nimport ProfileSettingsPage from '../pages/user/ProfileSettingsPage';\nimport UserManagementPage from '../pages/user/UserManagementPage';\nimport DataImportPage from '../pages/data-import/DataImportPage';\nimport LoginPage from '../pages/authentication/LoginPage';\nimport RegisterPage from '../pages/authentication/RegisterPage';\nimport ForgotPasswordPage from '../pages/authentication/ForgotPasswordPage';\nimport ConfirmEmailPage from '../pages/authentication/ConfirmEmailPage';\nimport ResetPasswordPage from '../pages/authentication/ResetPasswordPage';\n\nimport { adminRole } from '../const/user';\n\nexport const defaultRoutes = {\n root: '/',\n login: '/login',\n};\n\nexport const routes = {\n root: '/',\n dataImport: '/data-import',\n resourceRequests: '/resource-requests',\n users: '/users',\n // Loans\n userLoans: '/loans',\n userAccountLoans: '/users/:userId/loans',\n loanDetails: '/loans/:loanId',\n userAccountLoanDetails: '/users/:userId/loans/:loanId',\n // Investments\n userInvestments: '/investments',\n investmentDetails: '/investments/:investmentId',\n assetDetails: '/investments/:investmentId/assets/:assetId',\n userAccountInvestments: '/users/:userId/investments',\n userAccountInvestmentDetails: '/users/:userId/investments/:investmentId',\n userAccountAssetDetails: '/users/:userId/investments/:investmentId/assets/:assetId',\n // Status\n userRequestStatus: '/status',\n userAccountStatus: '/users/:userId/status',\n // Statements\n userStatements: '/statements',\n userAccountStatements: '/users/:userId/statements',\n // Auth\n login: '/login',\n forgotPassword: '/forgot-password',\n register: '/register',\n confirmEmail: '/confirm-email',\n resetPassword: '/password-reset',\n profileSettings: '/profile'\n};\n\nexport const routeBuilder = {\n resourceRequestDetails: (resourceRequestId) => `/resource-requests/${resourceRequestId}`,\n userProfile: (userId) => `/users/${userId}`,\n userProfileAdmin: (userId) => `/users/${userId}/profile`,\n userAccountLoans: (userId) => `/users/${userId}/loans`,\n loanDetails: (loanId) => `/loans/${loanId}`,\n userAccountLoanDetails: (userId, loanId) => `/users/${userId}/loans/${loanId}`,\n investmentDetails: (investmentId) => `/investments/${investmentId}`,\n assetDetails: (investmentId, assetId) => `/investments/${investmentId}/assets/${assetId}`,\n userAccountInvestments: (id) => `/users/${id}/investments`,\n userAccountInvestmentDetails: (userId, investmentId) => `/users/${userId}/investments/${investmentId}`,\n userAccountAssetDetails: (userId, investmentId, assetId) =>\n `/users/${userId}/investments/${investmentId}/assets/${assetId}`,\n userAccountStatus: (id) => `/users/${id}/status`,\n userAccountStatements: (id) => `/users/${id}/statements`,\n};\n\nexport const AppRouting = () => (\n \n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n \n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n }\n />\n \n \n);\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import {\n FETCH_USER_TOKEN,\n FETCH_USER_TOKEN__SUCCESS,\n FETCH_USER_TOKEN__FAILED,\n REGISTER_USER,\n REGISTER_USER__SUCCESS,\n REGISTER_USER__FAILED,\n RESTORE_PASSWORD,\n RESTORE_PASSWORD__SUCCESS,\n RESTORE_PASSWORD__FAILED,\n RESET_RESETPASSWORDSTATE,\n RESET_REGISTERSTATE,\n CONFIRM_EMAIL,\n CONFIRM_EMAIL__SUCCESS,\n CONFIRM_EMAIL__FAILED,\n RESET_CONFIRMEMAILSTATE,\n VERIFY_RESET_PASSWORD_TOKEN,\n VERIFY_RESET_PASSWORD_TOKEN__SUCCESS,\n VERIFY_RESET_PASSWORD_TOKEN__FAILED,\n CHANGE_PASSWORD,\n CHANGE_PASSWORD__SUCCESS,\n CHANGE_PASSWORD__FAILED,\n RESET_CHANGEPASSWORDSTATE,\n LOG_OUT,\n DELETE_USER,\n DELETE_USER__SUCCESS,\n DELETE_USER__FAIL\n} from './actions';\n\nconst localStorageTokenKey = 'userToken'\nconst defaultState = {\n token: undefined,\n role: undefined,\n email: undefined,\n isTokenRequested: false,\n isTokenRequestFailed: false,\n isRegisterRequested: false,\n isRegisterFailed: false,\n registerAttempts: 0,\n isResetPasswordRequested: false,\n isResetPasswordFailed: false,\n resetPasswordAttempts: 0,\n isConfirmEmailRequested: false,\n isConfirmEmailRequestFailed: false,\n confirmEmailAttemptsCount: 0,\n isVerifyChangePasswordTokenRequested: false,\n isVerifyChangePasswordTokenRequestFailed: false,\n isChangePasswordRequested: false,\n isChangePasswordRequestFailed: false,\n changePasswordAttempts: 0,\n isUserDeletionInProgress: false,\n isUserDeletionFailed: false\n};\n\nconst initDefaultState = () => {\n try {\n const token = localStorage.getItem(localStorageTokenKey);\n\n if (token === null) {\n return defaultState;\n }\n\n const {\n exp,\n role,\n email,\n uniqueIdentifier\n } = JSON.parse(atob(token.split('.')[1]));\n const date = new Date(0);\n date.setUTCSeconds(exp);\n\n if ((new Date()).getTime() > date.getTime()) {\n localStorage.removeItem(localStorageTokenKey);\n\n return defaultState;\n }\n\n return {\n ...defaultState,\n token,\n role,\n email,\n id: +uniqueIdentifier\n };\n } catch (err) {\n return defaultState;\n }\n}\n\nconst processToken = (token) => {\n const { role, email, uniqueIdentifier } = JSON.parse(atob(token.split('.')[1]));\n localStorage.setItem(localStorageTokenKey, token);\n\n return {\n id: +uniqueIdentifier,\n token,\n role,\n email,\n };\n}\n\nconst clearAuthData = () => {\n localStorage.removeItem(localStorageTokenKey);\n\n return {\n token: undefined,\n role: undefined,\n email: undefined,\n id: undefined\n };\n}\n\nconst user = (state = initDefaultState(), action) => {\n switch (action.type) {\n case LOG_OUT:\n return {\n ...state,\n ...clearAuthData()\n };\n case FETCH_USER_TOKEN:\n return {\n ...state,\n isTokenRequested: true,\n isTokenRequestFailed: false,\n };\n case FETCH_USER_TOKEN__SUCCESS:\n let userTokenPart = processToken(action.token);\n\n return {\n ...state,\n ...userTokenPart,\n isTokenRequested: false\n };\n case FETCH_USER_TOKEN__FAILED:\n return {\n ...state,\n isTokenRequested: false,\n isTokenRequestFailed: true\n };\n case REGISTER_USER:\n return {\n ...state,\n isRegisterRequested: true,\n registerAttempts: ++state.registerAttempts,\n isRegisterFailed: false\n };\n case REGISTER_USER__SUCCESS:\n return {\n ...state,\n isRegisterRequested: false,\n };\n case REGISTER_USER__FAILED:\n return {\n ...state,\n isRegisterRequested: false,\n isRegisterFailed: true\n };\n case RESTORE_PASSWORD:\n return {\n ...state,\n isResetPasswordRequested: true,\n isResetPasswordFailed: false,\n resetPasswordAttempts: ++state.resetPasswordAttempts,\n };\n case RESTORE_PASSWORD__SUCCESS:\n return {\n ...state,\n isResetPasswordRequested: false,\n };\n case RESTORE_PASSWORD__FAILED:\n return {\n ...state,\n isResetPasswordRequested: false,\n isResetPasswordFailed: true\n };\n case RESET_RESETPASSWORDSTATE:\n return {\n ...state,\n isResetPasswordRequested: false,\n isResetPasswordFailed: false,\n resetPasswordAttempts: 0\n };\n case RESET_REGISTERSTATE:\n return {\n ...state,\n isRegisterRequested: false,\n isRegisterFailed: false,\n registerAttempts: 0,\n };\n case CONFIRM_EMAIL:\n return {\n ...state,\n isConfirmEmailRequested: true,\n isConfirmEmailRequestFailed: false,\n confirmEmailAttemptsCount: ++state.confirmEmailAttemptsCount\n };\n case CONFIRM_EMAIL__SUCCESS:\n return {\n ...state,\n isConfirmEmailRequested: false\n };\n case CONFIRM_EMAIL__FAILED:\n return {\n ...state,\n isConfirmEmailRequested: false,\n isConfirmEmailRequestFailed: true\n };\n case RESET_CONFIRMEMAILSTATE:\n return {\n ...state,\n isConfirmEmailRequested: false,\n isConfirmEmailRequestFailed: false,\n confirmEmailAttemptsCount: 0\n };\n case VERIFY_RESET_PASSWORD_TOKEN:\n return {\n ...state,\n isVerifyChangePasswordTokenRequested: true,\n isVerifyChangePasswordTokenRequestFailed: false,\n };\n case VERIFY_RESET_PASSWORD_TOKEN__FAILED:\n return {\n ...state,\n isVerifyChangePasswordTokenRequested: false,\n isVerifyChangePasswordTokenRequestFailed: true,\n };\n case VERIFY_RESET_PASSWORD_TOKEN__SUCCESS:\n return {\n ...state,\n isVerifyChangePasswordTokenRequested: false,\n };\n case CHANGE_PASSWORD:\n return {\n ...state,\n isChangePasswordRequested: true,\n isChangePasswordRequestFailed: false,\n changePasswordAttempts: ++state.changePasswordAttempts,\n };\n case CHANGE_PASSWORD__FAILED:\n return {\n ...state,\n isChangePasswordRequested: false,\n isChangePasswordRequestFailed: true,\n };\n case CHANGE_PASSWORD__SUCCESS:\n return {\n ...state,\n isChangePasswordRequested: false,\n };\n case RESET_CHANGEPASSWORDSTATE:\n return {\n ...state,\n isChangePasswordRequested: false,\n isChangePasswordRequestFailed: false,\n isVerifyChangePasswordTokenRequested: false,\n isVerifyChangePasswordTokenRequestFailed: false,\n changePasswordAttempts: 0,\n };\n case DELETE_USER:\n return {\n ...state,\n isUserDeletionInProgress: true,\n isUserDeletionFailed: false\n };\n case DELETE_USER__SUCCESS:\n return {\n ...state,\n isUserDeletionInProgress: false\n };\n case DELETE_USER__FAIL:\n return {\n ...state,\n isUserDeletionInProgress: false,\n isUserDeletionFailed: true\n };\n default:\n return state;\n }\n}\n\nexport default user;\n","import {\r\n FETCH_STATES,\r\n FETCH_STATES_SUCCESS,\r\n FETCH_STATES_FAILED,\r\n FETCH_CITIES,\r\n FETCH_CITIES_SUCCESS,\r\n FETCH_CITIES_FAILED,\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n states: [],\r\n cities: [],\r\n isStatesRequested: false,\r\n isStatesRequestFailed: false,\r\n isCitiesRequested: false,\r\n isCitiesRequestFailed: false\r\n};\r\n\r\nconst geo = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH_STATES:\r\n return {\r\n ...state,\r\n isStatesRequestFailed: false,\r\n isStatesRequested: true\r\n };\r\n case FETCH_STATES_SUCCESS:\r\n return {\r\n ...state,\r\n isStatesRequested: false,\r\n states: action.states\r\n };\r\n case FETCH_STATES_FAILED:\r\n return {\r\n ...state,\r\n isStatesRequestFailed: true\r\n };\r\n case FETCH_CITIES:\r\n return {\r\n ...state,\r\n isCitiesRequested: true,\r\n isCitiesRequestFailed: false\r\n };\r\n case FETCH_CITIES_SUCCESS:\r\n return {\r\n ...state,\r\n isCitiesRequested: false,\r\n cities: action.cities\r\n };\r\n case FETCH_CITIES_FAILED:\r\n return {\r\n ...state,\r\n isCitiesRequested: false,\r\n isCitiesRequestFailed: true\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default geo;","import {\n FETCH__USER_PROFILE__FAIL,\n FETCH__USER_PROFILE__SUCCESS,\n FETCH__USER_PROFILE,\n FETCH__USER_PROFILE_SETTINGS,\n FETCH__USER_PROFILE_SETTINGS__FAIL,\n FETCH__USER_PROFILE_SETTINGS__SUCCESS,\n UPDATE__USER_PROFILE_SETTINGS,\n UPDATE__USER_PROFILE_SETTINGS__FAIL,\n UPDATE__USER_PROFILE_SETTINGS__SUCCESS,\n RESET__USER_PROFILE_SETTINGS,\n} from './actions';\n\nconst defaultState = {\n isUserProfileRequested: false,\n isUserProfileRequestFailed: false,\n actualizationDate: undefined,\n fullName: undefined,\n emailAddress: undefined,\n loans: [],\n investments: [],\n requests: [],\n settings: undefined,\n isSettingsRequested: false,\n isSettingsRequestFailed: false,\n isSettingsUpdateInProgress: false,\n isSettingsUpdateFailed: false\n};\n\nconst userProfile = (state = defaultState, action) => {\n switch (action.type) {\n case FETCH__USER_PROFILE:\n return {\n ...state,\n isUserProfileRequested: true,\n isUserProfileRequestFailed: false\n };\n case FETCH__USER_PROFILE__SUCCESS:\n return {\n ...state,\n fullName: action.data.fullName,\n emailAddress: action.data.emailAddress,\n isUserProfileRequested: false,\n actualizationDate: action.data.actualizationDate,\n loans: action.data.loans,\n investments: action.data.investments,\n isAnyWiAssets: action.data.isAnyWiAssets,\n };\n case FETCH__USER_PROFILE__FAIL:\n return {\n ...state,\n isUserProfileRequested: false,\n isUserProfileRequestFailed: true\n };\n case FETCH__USER_PROFILE_SETTINGS:\n return {\n ...state,\n isSettingsRequested: true,\n isSettingsRequestFailed: false,\n };\n case FETCH__USER_PROFILE_SETTINGS__SUCCESS:\n return {\n ...state,\n isSettingsRequested: false,\n settings: action.data,\n };\n case FETCH__USER_PROFILE_SETTINGS__FAIL:\n return {\n ...state,\n isSettingsRequested: false,\n isSettingsRequestFailed: true\n };\n case UPDATE__USER_PROFILE_SETTINGS:\n return {\n ...state,\n isSettingsUpdateInProgress: true,\n isSettingsUpdateFailed: false,\n };\n case UPDATE__USER_PROFILE_SETTINGS__SUCCESS:\n return {\n ...state,\n isSettingsUpdateInProgress: false\n };\n case UPDATE__USER_PROFILE_SETTINGS__FAIL:\n return {\n ...state,\n isSettingsUpdateInProgress: false,\n isSettingsUpdateFailed: true,\n };\n case RESET__USER_PROFILE_SETTINGS:\n return {\n state,\n ...defaultState,\n };\n default:\n return state;\n }\n}\n\nexport default userProfile;\n","import {\r\n FETCH__USER_LIST__FAIL,\r\n FETCH__USER_LIST__SUCCESS,\r\n FETCH__USER_LIST,\r\n PROMOTE__USER__FAIL,\r\n PROMOTE__USER__SUCCESS,\r\n PROMOTE__USER,\r\n REVOKE__ADMIN_RIGHTS__FAIL,\r\n REVOKE__ADMIN_RIGHTS__SUCCESS,\r\n REVOKE__ADMIN_RIGHTS,\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n isUsersFetched: false,\r\n isUsersFetchFailed: false,\r\n users: undefined,\r\n pageInfo: undefined,\r\n isPromoteUserRequested: false,\r\n isPromoteUserFailed: false,\r\n isRevokeAccessRequested: false,\r\n isRevokeAccessFailed: false\r\n}\r\n\r\nconst userManagement = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH__USER_LIST:\r\n return {\r\n ...state,\r\n isUsersFetched: true,\r\n isUsersFetchFailed: false,\r\n };\r\n case FETCH__USER_LIST__SUCCESS:\r\n return {\r\n ...state,\r\n isUsersFetched: false,\r\n users: action.data.users,\r\n pageInfo: action.data.pageInfo,\r\n };\r\n case FETCH__USER_LIST__FAIL:\r\n return {\r\n ...state,\r\n isUsersFetched: false,\r\n isUsersFetchFailed: true,\r\n };\r\n case PROMOTE__USER:\r\n return {\r\n ...state,\r\n isPromoteUserRequested: true,\r\n isPromoteUserFailed: false,\r\n };\r\n case PROMOTE__USER__FAIL:\r\n return {\r\n ...state,\r\n isPromoteUserRequested: false,\r\n isPromoteUserFailed: true,\r\n };\r\n case PROMOTE__USER__SUCCESS:\r\n return {\r\n ...state,\r\n isPromoteUserRequested: false,\r\n };\r\n case REVOKE__ADMIN_RIGHTS:\r\n return {\r\n ...state,\r\n isRevokeAccessRequested: true,\r\n isRevokeAccessFailed: false,\r\n };\r\n case REVOKE__ADMIN_RIGHTS__FAIL:\r\n return {\r\n ...state,\r\n isRevokeAccessRequested: false,\r\n isRevokeAccessFailed: true,\r\n };\r\n case REVOKE__ADMIN_RIGHTS__SUCCESS:\r\n return {\r\n ...state,\r\n isRevokeAccessRequested: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default userManagement;","import {\r\n FETCH__USERS_RRQ_LIST,\r\n FETCH__USERS_RRQ_LIST__SUCCESS,\r\n FETCH__USERS_RRQ_LIST__FAIL,\r\n CREATE__RRQ,\r\n CREATE__RRQ__FAIL,\r\n CREATE__RRQ__SUCCESS,\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n items: [],\r\n isUsersRequestsFetched: false,\r\n isUsersRequestFetchFailed: false,\r\n isCreateResourceRequestInProgress: false,\r\n isCreateResourceRequestFailed: false\r\n};\r\n\r\nconst userResourceRequests = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH__USERS_RRQ_LIST:\r\n return {\r\n ...state,\r\n isUsersRequestsFetched: true,\r\n isUsersRequestFetchFailed: false\r\n };\r\n case FETCH__USERS_RRQ_LIST__FAIL:\r\n return {\r\n ...state,\r\n isUsersRequestsFetched: false,\r\n isUsersRequestFetchFailed: true\r\n };\r\n case FETCH__USERS_RRQ_LIST__SUCCESS:\r\n return {\r\n ...state,\r\n isUsersRequestsFetched: false,\r\n items: action.data\r\n };\r\n case CREATE__RRQ:\r\n return {\r\n ...state,\r\n isCreateResourceRequestInProgress: true,\r\n isCreateResourceRequestFailed: false,\r\n };\r\n case CREATE__RRQ__SUCCESS:\r\n return {\r\n ...state,\r\n isCreateResourceRequestInProgress: false,\r\n };\r\n case CREATE__RRQ__FAIL:\r\n return {\r\n ...state,\r\n isCreateResourceRequestInProgress: false,\r\n isCreateResourceRequestFailed: true,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default userResourceRequests;","import {\r\n REQUEST_RESOURCE_REQUESTS,\r\n RECEIVE_RESOURCE_REQUESTS,\r\n REQUEST_RSRQ_DETAILS,\r\n RECEIVE_RSRQ_DETAILS,\r\n RSRQ_APPROVE,\r\n HANDLE_RSRQ_APPROVE,\r\n RSRQ_ACCEPT,\r\n HANDLE_RSRQ_ACCEPT,\r\n RSRQ_DECLINE,\r\n HANDLE_RSRQ_DECLINE,\r\n FETCH_RSRQ_RESOLUTION,\r\n HANDLE_RSRQ_RESOLUTION,\r\n RRQ_DELETE,\r\n RRQ_DELETE_SUCCESS\r\n} from '../actions';\r\n\r\nconst defaultState = {\r\n items: [],\r\n itemDetails: null,\r\n lastUpdated: null,\r\n isRequested: false,\r\n isOperationInProgress: false,\r\n resolution: null\r\n};\r\n\r\nconst resourceRequests = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case REQUEST_RESOURCE_REQUESTS:\r\n case REQUEST_RSRQ_DETAILS:\r\n return { ...state, isRequested: true, };\r\n case RECEIVE_RESOURCE_REQUESTS:\r\n return {\r\n ...state,\r\n items: action.items,\r\n isRequested: false,\r\n };\r\n case RECEIVE_RSRQ_DETAILS:\r\n return {\r\n ...state,\r\n itemDetails: action.item,\r\n isRequested: false,\r\n };\r\n case RSRQ_APPROVE:\r\n case RSRQ_ACCEPT:\r\n case RSRQ_DECLINE:\r\n case RRQ_DELETE:\r\n return {\r\n ...state,\r\n isOperationInProgress: true\r\n };\r\n case HANDLE_RSRQ_APPROVE:\r\n case HANDLE_RSRQ_ACCEPT:\r\n case HANDLE_RSRQ_DECLINE:\r\n case RRQ_DELETE_SUCCESS:\r\n return {\r\n ...state,\r\n isOperationInProgress: false\r\n };\r\n case FETCH_RSRQ_RESOLUTION:\r\n return {\r\n ...state,\r\n resolution: {\r\n isRequested: true,\r\n item: null\r\n }\r\n };\r\n case HANDLE_RSRQ_RESOLUTION:\r\n return {\r\n ...state,\r\n resolution: {\r\n isRequested: false,\r\n item: action.item\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default resourceRequests;","import { RECIEVE_RES, FETCH_RES, CLEAR_RES_SEARCH } from '../actions';\r\n\r\nconst defaultState = {\r\n items: [],\r\n isLoading: false,\r\n};\r\n\r\nconst resources = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH_RES:\r\n return { ...state, isLoading: true, };\r\n case RECIEVE_RES:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n items: action.items,\r\n };\r\n case CLEAR_RES_SEARCH:\r\n return {\r\n ...state,\r\n items: []\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default resources;\r\n\r\n","import {\r\n FETCH__LOAN,\r\n FETCH__LOAN__FAIL,\r\n FETCH__LOAN__SUCCESS,\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n details: null,\r\n isLoanDetailsFetched: false,\r\n isLoanDetailsFetchFailed: false,\r\n};\r\n\r\nconst loanDetails = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH__LOAN:\r\n return {\r\n ...state,\r\n isLoanDetailsFetched: true,\r\n isLoanDetailsFetchFailed: false,\r\n };\r\n case FETCH__LOAN__FAIL:\r\n return {\r\n ...state,\r\n isLoanDetailsFetched: false,\r\n isLoanDetailsFetchFailed: true,\r\n };\r\n case FETCH__LOAN__SUCCESS:\r\n return {\r\n ...state,\r\n isLoanDetailsFetched: false,\r\n details: action.details,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default loanDetails;","import {\r\n FETCH__INVESTMENT_DETAILS,\r\n FETCH__INVESTMENT_DETAILS__FAIL,\r\n FETCH__INVESTMENT_DETAILS__SUCCESS,\r\n FETCH__ACCOUNT_STATEMENTS,\r\n FETCH__ACCOUNT_STATEMENTS__SUCCESS,\r\n FETCH__ACCOUNT_STATEMENTS__FAIL,\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n investmentDetails: undefined,\r\n isInvestmentDetailsFetched: false,\r\n isInvestmentDetailsFetchFailed: false,\r\n isStatementUpdateRequested: false,\r\n isStatementUpdateFailed: false\r\n};\r\n\r\nconst investmentDetails = (state = defaultState, action) => {\r\n switch(action.type) {\r\n case FETCH__INVESTMENT_DETAILS:\r\n return {\r\n ...state,\r\n isInvestmentDetailsFetched: true,\r\n isInvestmentDetailsFetchFailed: false,\r\n };\r\n case FETCH__INVESTMENT_DETAILS__FAIL:\r\n return {\r\n ...state,\r\n isInvestmentDetailsFetched: false,\r\n isInvestmentDetailsFetchFailed: true,\r\n };\r\n case FETCH__INVESTMENT_DETAILS__SUCCESS:\r\n return {\r\n ...state,\r\n isInvestmentDetailsFetched: false,\r\n investmentDetails: action.details,\r\n };\r\n case FETCH__ACCOUNT_STATEMENTS:\r\n return {\r\n ...state,\r\n isStatementUpdateRequested: true,\r\n isStatementUpdateFailed: false\r\n };\r\n case FETCH__ACCOUNT_STATEMENTS__FAIL:\r\n return {\r\n ...state,\r\n isStatementUpdateRequested: false,\r\n isStatementUpdateFailed: true\r\n };\r\n case FETCH__ACCOUNT_STATEMENTS__SUCCESS:\r\n let { investmentDetails } = state;\r\n\r\n if (!investmentDetails) return state;\r\n\r\n return {\r\n ...state,\r\n isStatementUpdateRequested: false,\r\n investmentDetails: {\r\n ...investmentDetails,\r\n statements: action.statements\r\n }\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default investmentDetails;","import {\r\n FETCH__ASSET_DETAILS,\r\n FETCH__ASSET_DETAILS__FAIL,\r\n FETCH__ASSET_DETAILS__SUCCESS\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n assetDetails: undefined,\r\n isAssetDetailsFetched: false,\r\n isAssetDetailsFetchFailed: false\r\n};\r\n\r\nconst assetDetails = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH__ASSET_DETAILS:\r\n return {\r\n ...state,\r\n isAssetDetailsFetched: true,\r\n isAssetDetailsFetchFailed: false,\r\n };\r\n case FETCH__ASSET_DETAILS__FAIL:\r\n return {\r\n ...state,\r\n isAssetDetailsFetched: false,\r\n isAssetDetailsFetchFailed: true,\r\n };\r\n case FETCH__ASSET_DETAILS__SUCCESS:\r\n return {\r\n ...state,\r\n isAssetDetailsFetched: false,\r\n assetDetails: action.details,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default assetDetails;","import {\r\n REQUEST__MOVE_TO_VAULT,\r\n REQUEST__MOVE_TO_VAULT_FAIL,\r\n REQUEST__MOVE_TO_VAULT_SUCCESS,\r\n DOWNLOAD__VAULT_FILE,\r\n DOWNLOAD__VAULT_FILE__FAIL,\r\n DOWNLOAD__VAULT_FILE__SUCCESS,\r\n FETCH__USER_STATEMENTS,\r\n FETCH__USER_STATEMENTS__SUCCESS,\r\n FETCH__USER_STATEMENTS__FAIL,\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n isMoveToVaultRequested: false,\r\n isMoveToVaultFailed: false,\r\n fileIdRequesed: undefined,\r\n isDownloadRequested: false,\r\n isDownloadFailed: false,\r\n downloadFileId: undefined,\r\n userStatements: [],\r\n isUserStatementsRequested: false,\r\n isUserStatementsRequestFailed: false,\r\n};\r\n\r\nconst statements = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case REQUEST__MOVE_TO_VAULT:\r\n return {\r\n ...state,\r\n isMoveToVaultRequested: true,\r\n isMoveToVaultFailed: false,\r\n fileIdRequesed: action.fileId\r\n };\r\n case REQUEST__MOVE_TO_VAULT_FAIL:\r\n return {\r\n ...state,\r\n isMoveToVaultRequested: false,\r\n isMoveToVaultFailed: true\r\n };\r\n case REQUEST__MOVE_TO_VAULT_SUCCESS:\r\n return {\r\n ...state,\r\n isMoveToVaultRequested: false,\r\n fileIdRequesed: undefined\r\n };\r\n case DOWNLOAD__VAULT_FILE:\r\n return {\r\n ...state,\r\n isDownloadRequested: true,\r\n isDownloadFailed: false,\r\n downloadFileId: action.fileId\r\n };\r\n case DOWNLOAD__VAULT_FILE__FAIL:\r\n return {\r\n ...state,\r\n isDownloadRequested: false,\r\n isDownloadFailed: true,\r\n downloadFileId: undefined\r\n };\r\n case DOWNLOAD__VAULT_FILE__SUCCESS:\r\n return {\r\n ...state,\r\n isDownloadRequested: false,\r\n downloadFileId: undefined\r\n };\r\n case FETCH__USER_STATEMENTS:\r\n return {\r\n ...state,\r\n isUserStatementsRequested: true,\r\n isUserStatementsRequestFailed: false,\r\n };\r\n case FETCH__USER_STATEMENTS__SUCCESS:\r\n return {\r\n ...state,\r\n isUserStatementsRequested: false,\r\n userStatements: action.statements,\r\n };\r\n case FETCH__USER_STATEMENTS__FAIL:\r\n return {\r\n ...state,\r\n isUserStatementsRequested: false,\r\n isUserStatementsRequestFailed: true,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default statements;","import {\r\n FETCH__SESSIONS,\r\n FETCH__SESSIONS__SUCCESS,\r\n FETCH__SESSIONS__FAILED,\r\n FETCH__SESSION_JOBS,\r\n FETCH__SESSION_JOBS__FAIL,\r\n FETCH__SESSION_JOBS__SUCCESS,\r\n START__SESSION,\r\n START__SESSION__FAIL,\r\n START__SESSION__SUCCESS,\r\n UPDATE__SELECTED_SESSION,\r\n CLEAR__SELECTED_SESSION,\r\n CREATE__SESSION,\r\n CREATE__SESSION__SUCCESS,\r\n CREATE__SESSION__FAIL,\r\n CANCEL__SESSION,\r\n CANCEL__SESSION__FAIL,\r\n CANCEL__SESSION__SUCCESS\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n items: [],\r\n isSessionsFetched: false,\r\n isItemsFetchFailed: false,\r\n sessionJobs: [],\r\n isJobsFetched: false,\r\n isJobsFetchFailed: false,\r\n isStartSessionRequested: false,\r\n isStartSessionRequestFailed: false,\r\n isCreateNewRequested: false,\r\n isCreateNewRequestFailed: false,\r\n selectedSession: null,\r\n isCancelSessionRequested: false,\r\n isCancelSessionFailed: false\r\n};\r\n\r\nconst dataImportSessions = (state = defaultState, action) => {\r\n let activeSession;\r\n\r\n switch (action.type) {\r\n case CANCEL__SESSION:\r\n return {\r\n ...state,\r\n isCancelSessionFailed: false,\r\n isCancelSessionRequested: true\r\n };\r\n case CANCEL__SESSION__SUCCESS:\r\n return {\r\n ...state,\r\n isCancelSessionRequested: false\r\n };\r\n case CANCEL__SESSION__FAIL:\r\n return {\r\n ...state,\r\n isCancelSessionFailed: true,\r\n isCancelSessionRequested: false\r\n };\r\n case CREATE__SESSION:\r\n return {\r\n ...state,\r\n isCreateNewRequested: true,\r\n isCreateNewRequestFailed: false\r\n };\r\n case CREATE__SESSION__SUCCESS:\r\n return {\r\n ...state,\r\n isCreateNewRequested: false\r\n };\r\n case CREATE__SESSION__FAIL:\r\n return {\r\n ...state,\r\n isCreateNewRequested: false,\r\n isCreateNewRequestFailed: true\r\n };\r\n case START__SESSION:\r\n return {\r\n ...state,\r\n isStartSessionRequested: true,\r\n isStartSessionRequestFailed: false\r\n };\r\n case START__SESSION__FAIL:\r\n return {\r\n ...state,\r\n isStartSessionRequested: false,\r\n isStartSessionRequestFailed: true\r\n };\r\n case UPDATE__SELECTED_SESSION:\r\n return {\r\n ...state,\r\n selectedSession: action.data\r\n };\r\n case START__SESSION__SUCCESS:\r\n return {\r\n ...state,\r\n isStartSessionRequested: false,\r\n }\r\n case FETCH__SESSIONS:\r\n return {\r\n ...state,\r\n isSessionsFetched: true,\r\n isItemsFetchFailed: false\r\n };\r\n case FETCH__SESSIONS__FAILED:\r\n return {\r\n ...state,\r\n isSessionsFetched: false,\r\n isItemsFetchFailed: true\r\n };\r\n case FETCH__SESSIONS__SUCCESS:\r\n let { selectedSession } = state;\r\n\r\n activeSession = action.data.find(session => session.status < 4);\r\n\r\n return !!selectedSession || !!activeSession ? {\r\n ...state,\r\n isSessionsFetched: false,\r\n items: action.data,\r\n selectedSession: !!selectedSession ?\r\n action.data.find(session => selectedSession.id === session.id)\r\n : activeSession\r\n } : {\r\n ...state,\r\n isSessionsFetched: false,\r\n items: action.data\r\n };\r\n case FETCH__SESSION_JOBS:\r\n return {\r\n ...state,\r\n isJobsFetched: true,\r\n isItemsFetchFailed: false\r\n };\r\n case FETCH__SESSION_JOBS__FAIL:\r\n return {\r\n ...state,\r\n isJobsFetched: false,\r\n isItemsFetchFailed: true\r\n };\r\n case FETCH__SESSION_JOBS__SUCCESS:\r\n return {\r\n ...state,\r\n isJobsFetched: false,\r\n sessionJobs: action.data\r\n }\r\n case CLEAR__SELECTED_SESSION:\r\n let { items } = state;\r\n activeSession = items.find(session => !!session && session.status < 4); \r\n\r\n return {\r\n ...state,\r\n selectedSession: activeSession \r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default dataImportSessions;","import {\r\n FETCH__DATAIMPORTFILES,\r\n FETCH__DATAIMPORTFILES__SUCCESS,\r\n FETCH__DATAIMPORTFILES__FAIL\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n items: [],\r\n isItemsFetched: false,\r\n isItemsFetchFailed: false\r\n};\r\n\r\nconst dataImportFiles = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH__DATAIMPORTFILES:\r\n return {\r\n ...state,\r\n isItemsFetched: true,\r\n isItemsFetchFailed: false\r\n };\r\n case FETCH__DATAIMPORTFILES__FAIL:\r\n return {\r\n ...state,\r\n isItemsFetched: false,\r\n isItemsFetchFailed: true\r\n };\r\n case FETCH__DATAIMPORTFILES__SUCCESS:\r\n return {\r\n ...state,\r\n isItemsFetched: false,\r\n items: action.data\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default dataImportFiles;","import {\r\n FETCH__ADMIN_USER_PROFILE,\r\n FETCH__ADMIN_USER_PROFILE__FAIL,\r\n FETCH__ADMIN_USER_PROFILE__SUCCESS,\r\n CLEAR__ADMIN_USER_PROFILE,\r\n FETCH__USER_LOANS,\r\n FETCH__USER_LOANS__SUCCESS,\r\n FETCH__USER_LOANS__FAIL,\r\n FETCH__USER_ACCOUNTS,\r\n FETCH__USER_ACCOUNTS__FAIL,\r\n FETCH__USER_ACCOUNTS__SUCCESS,\r\n FETCH__USER_REQUESTS,\r\n FETCH__USER_REQUESTS__SUCCESS,\r\n FETCH__USER_REQUESTS__FAIL,\r\n CONFIRM__PROFILE__USER_EMAIL,\r\n CONFIRM__PROFILE__USER_EMAIL__SUCCESS,\r\n CONFIRM__PROFILE__USER_EMAIL__FAIL,\r\n UNLINK__LOAN,\r\n UNLINK__LOAN__SUCCESS,\r\n UNLINK__LOAN__FAIL,\r\n UNLINK__INVESTMENT,\r\n UNLINK__INVESTMENT__FAIL,\r\n UNLINK__INVESTMENT__SUCCESS,\r\n DELETE__PROFILE__RESOURCE_REQUEST,\r\n DELETE__PROFILE__RESOURCE_REQUEST__FAIL,\r\n DELETE__PROFILE__RESOURCE_REQUEST__SUCCESS\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n profile: null,\r\n isProfileFetched: false,\r\n isProfileFetchFailed: false,\r\n loans: null,\r\n isLoansFetched: false,\r\n isLoansFetchFailed: false,\r\n investments: null,\r\n isInvestmentsFetched: false,\r\n isInvestmentsFetchFailed: false,\r\n requests: null,\r\n isRequestsFetched: false,\r\n isRequestsFetchFailed: false,\r\n isConfirmEmailRequested: false,\r\n isConfirmEmailFailed: false,\r\n isUnlinkLoanFetched: false,\r\n isUnlinkLoanFailed: false,\r\n isUnlinkInvestmentFetched: false,\r\n isUnlinkInvestmentFailed: false,\r\n isDeleteResourceRequestFetched: false,\r\n isDeleteResourceRequestFailed: false\r\n};\r\n\r\nconst adminUserProfile = (state = defaultState, action) => {\r\n switch (action.type)\r\n {\r\n case DELETE__PROFILE__RESOURCE_REQUEST:\r\n return {\r\n ...state,\r\n isDeleteResourceRequestFetched: true,\r\n isDeleteResourceRequestFailed: false\r\n };\r\n case DELETE__PROFILE__RESOURCE_REQUEST__FAIL:\r\n return {\r\n ...state,\r\n isDeleteResourceRequestFetched: false,\r\n isDeleteResourceRequestFailed: true\r\n };\r\n case DELETE__PROFILE__RESOURCE_REQUEST__SUCCESS:\r\n return {\r\n ...state,\r\n isDeleteResourceRequestFetched: false\r\n };\r\n case UNLINK__INVESTMENT:\r\n return {\r\n ...state,\r\n isUnlinkInvestmentFailed: false,\r\n isUnlinkInvestmentFetched: true\r\n };\r\n case UNLINK__INVESTMENT__FAIL:\r\n return {\r\n ...state,\r\n isUnlinkInvestmentFailed: true,\r\n isUnlinkInvestmentFetched: false\r\n };\r\n case UNLINK__INVESTMENT__SUCCESS:\r\n return {\r\n ...state,\r\n isUnlinkInvestmentFetched: false\r\n };\r\n case UNLINK__LOAN:\r\n return {\r\n ...state,\r\n isUnlinkLoanFailed: false,\r\n isUnlinkLoanFetched: true\r\n };\r\n case UNLINK__LOAN__FAIL:\r\n return {\r\n ...state,\r\n isUnlinkLoanFailed: true,\r\n isUnlinkLoanFetched: false\r\n };\r\n case UNLINK__LOAN__SUCCESS:\r\n return {\r\n ...state,\r\n isUnlinkLoanFetched: false\r\n };\r\n case CONFIRM__PROFILE__USER_EMAIL:\r\n return {\r\n ...state,\r\n isConfirmEmailFailed: false,\r\n isConfirmEmailRequested: true\r\n };\r\n case CONFIRM__PROFILE__USER_EMAIL__SUCCESS:\r\n return {\r\n ...state,\r\n isConfirmEmailRequested: false\r\n };\r\n case CONFIRM__PROFILE__USER_EMAIL__FAIL:\r\n return {\r\n ...state,\r\n isConfirmEmailFailed: true,\r\n isConfirmEmailRequested: false\r\n };\r\n case FETCH__USER_REQUESTS:\r\n return {\r\n ...state,\r\n isRequestsFetched: true,\r\n isRequestsFetchFailed: false\r\n };\r\n case FETCH__USER_REQUESTS__FAIL:\r\n return {\r\n ...state,\r\n isRequestsFetched: false,\r\n isRequestsFetchFailed: true\r\n };\r\n case FETCH__USER_REQUESTS__SUCCESS:\r\n return {\r\n ...state,\r\n isRequestsFetched: false,\r\n requests: action.data\r\n };\r\n case FETCH__USER_ACCOUNTS:\r\n return {\r\n ...state,\r\n isInvestmentsFetched: true,\r\n isInvestmentsFetchFailed: false\r\n };\r\n case FETCH__USER_ACCOUNTS__FAIL:\r\n return {\r\n ...state,\r\n isInvestmentsFetched: false,\r\n isInvestmentsFetchFailed: true\r\n };\r\n case FETCH__USER_ACCOUNTS__SUCCESS:\r\n return {\r\n ...state,\r\n isInvestmentsFetched: false,\r\n investments: action.data\r\n };\r\n case FETCH__ADMIN_USER_PROFILE:\r\n return {\r\n ...state,\r\n isProfileFetched: true,\r\n isProfileFetchFailed: false\r\n };\r\n case FETCH__ADMIN_USER_PROFILE__FAIL:\r\n return {\r\n ...state,\r\n isProfileFetched: false,\r\n isProfileFetchFailed: true\r\n };\r\n case FETCH__ADMIN_USER_PROFILE__SUCCESS:\r\n return {\r\n ...state,\r\n isProfileFetched: false,\r\n profile: action.data\r\n };\r\n case CLEAR__ADMIN_USER_PROFILE:\r\n return {\r\n ...state,\r\n ...defaultState\r\n };\r\n case FETCH__USER_LOANS:\r\n return {\r\n ...state,\r\n isLoansFetched: true,\r\n isLoansFetchFailed: false\r\n };\r\n case FETCH__USER_LOANS__FAIL:\r\n return {\r\n ...state,\r\n isLoansFetched: false,\r\n isLoansFetchFailed: true\r\n };\r\n case FETCH__USER_LOANS__SUCCESS:\r\n return {\r\n ...state,\r\n isLoansFetched: false,\r\n loans: action.data\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default adminUserProfile;","import { FETCH__SESSIONS__SUCCESS } from '../dataImportSessions/actions';\r\nimport {\r\n FETCH__STATEMENT_SCAN_STATUS,\r\n FETCH__STATEMENT_SCAN_STATUS__FAIL,\r\n FETCH__STATEMENT_SCAN_STATUS__SUCCESS,\r\n START__STATEMENTS_SCAN,\r\n START__STATEMENTS_SCAN__FAIL,\r\n START__STATEMENTS_SCAN__SUCCESS\r\n} from './actions';\r\n\r\nconst defaultState = {\r\n fetchStatementScanStatus: false,\r\n fetchStatementScanFailed: false,\r\n isScanInProgress: false,\r\n isStartingStatementsScan: false,\r\n startingStatementScanFailed: false,\r\n};\r\n\r\nconst dashboard = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case FETCH__STATEMENT_SCAN_STATUS:\r\n return {\r\n ...state,\r\n fetchStatementScanStatus: true,\r\n fetchStatementScanFailed: false,\r\n };\r\n case FETCH__STATEMENT_SCAN_STATUS__SUCCESS:\r\n return {\r\n ...state,\r\n fetchStatementScanStatus: false,\r\n isScanInProgress: action.isScanInProgress,\r\n };\r\n case FETCH__STATEMENT_SCAN_STATUS__FAIL:\r\n return {\r\n ...state,\r\n fetchStatementScanStatus: false,\r\n fetchStatementScanFailed: true,\r\n isScanInProgress: false,\r\n };\r\n case START__STATEMENTS_SCAN:\r\n return {\r\n ...state,\r\n isStartingStatementsScan: true,\r\n startingStatementScanFailed: false,\r\n };\r\n case START__STATEMENTS_SCAN__SUCCESS:\r\n return {\r\n ...state,\r\n isStartingStatementsScan: false,\r\n };\r\n case START__STATEMENTS_SCAN__FAIL:\r\n return {\r\n ...state,\r\n isStartingStatementsScan: false,\r\n startingStatementScanFailed: true\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default dashboard;","import { createBrowserHistory } from 'history';\r\nimport configureStore from './configureStore';\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst initialState = window.initialReduxState;\r\n\r\nexport default configureStore(history, initialState);","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\n\nimport user from './user';\nimport geo from './geo';\nimport userProfile from './userProfile';\nimport userManagement from './userManagement';\nimport userResourceRequests from './resourceRequests';\nimport resourceRequests from '../reducers/resourceRequests';\nimport resources from '../reducers/resources';\nimport loanDetails from './loanDetails';\nimport investmentDetails from './investmentDetails';\nimport assetDetails from './assetDetails';\nimport statements from './statements';\nimport dataImportSessions from './dataImportSessions';\nimport dataImportFiles from './dataImportFiles';\nimport adminUserProfile from './adminUserProfile';\nimport dashboard from './dashboard';\n\nexport default function configureStore(history, initialState) {\n const reducers = {\n resourceRequests,\n resources,\n user,\n geo,\n userManagement,\n userProfile,\n userResourceRequests,\n loanDetails,\n investmentDetails,\n assetDetails,\n statements,\n dataImportSessions,\n dataImportFiles,\n adminUserProfile,\n dashboard,\n };\n\n const middleware = [\n thunk,\n routerMiddleware(history)\n ];\n\n // In development, use the browser's Redux dev tools extension if installed\n const enhancers = [];\n const isDevelopment = process.env.NODE_ENV === 'development';\n if (isDevelopment && typeof window !== 'undefined' && window.devToolsExtension) {\n enhancers.push(window.devToolsExtension());\n }\n\n const rootReducer = (history) => combineReducers({\n ...reducers,\n router: connectRouter(history)\n });\n\n return createStore(\n rootReducer(history),\n initialState,\n compose(applyMiddleware(...middleware), ...enhancers)\n );\n}\n","import './App.less';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { ConnectedRouter } from 'connected-react-router';\nimport history from './history';\nimport { AppRouting } from './routing';\nimport registerServiceWorker from './registerServiceWorker';\nimport store from './store/store';\nimport './styles/_stops.scss';\nimport './styles/_root.scss';\n\n\n// Get the application-wide store instance, prepopulating with state from the server where available.\n// const initialState = window.initialReduxState;\n// const store = configureStore(history, initialState);\n\nconst rootElement = document.getElementById('root');\n\nReactDOM.render(\n \n \n \n \n ,\n rootElement);\n\nif (navigator.serviceWorker) {\n navigator.serviceWorker.getRegistrations()\n .then(function(registrations) {\n for(let registration of registrations) {\n registration.unregister()\n }\n });\n}\n"],"sourceRoot":""}